MADNESS 0.10.1
|
Provides the common functionality/interface of all 1D convolutions. More...
#include <convolution1d.h>
Public Types | |
typedef Q | opT |
The apply function uses this to infer resultT=opT*inputT. | |
Public Member Functions | |
Convolution1D (int k, int npt, int maxR, double bloch_k=0.0, KernelRange rng={}) | |
virtual | ~Convolution1D () |
bool | get_issmall (Level n, Translation lx) const |
const Tensor< Q > & | get_rnlp (Level n, Translation lx) const |
virtual bool | issmall (Level n, Translation lx) const =0 |
bool | lattice_summed () const |
const ConvolutionData1D< Q > * | mod_nonstandard (const Key< 2 > &op_key) const |
Returns a pointer to the cached modified make_nonstandard form of the operator. | |
virtual Level | natural_level () const |
Returns the level for projection. | |
const ConvolutionData1D< Q > * | nonstandard (Level n, Translation lx) const |
Returns a pointer to the cached make_nonstandard form of the operator. | |
Q | phase (double R) const |
bool | range_restricted () const |
const Tensor< Q > & | rnlij (Level n, Translation lx, bool do_transpose=false) const |
Computes the transition matrix elements for the convolution for n,l. | |
virtual Tensor< Q > | rnlp (Level n, Translation lx) const =0 |
Compute the projection of the operator onto the double order polynomials. | |
bool | rnlp_is_zero (Level n, Translation l) const |
Public Attributes | |
double | bloch_k |
k in exp(i k R) Bloch phase factor folded into lattice sum | |
Tensor< double > | c |
Tensor< double > | hg |
Tensor< double > | hgT |
Tensor< double > | hgT2k |
int | k |
Wavelet order. | |
int | maxR |
Number of lattice translations for sum. | |
SimpleCache< ConvolutionData1D< Q >, 2 > | mod_ns_cache |
int | npt |
Number of quadrature points (is this used?) | |
SimpleCache< ConvolutionData1D< Q >, 1 > | ns_cache |
Tensor< double > | quad_w |
Tensor< double > | quad_x |
KernelRange | range |
if range is nonnull, kernel range limited to to range (in simulation cell units), useful for finite-range convolutions with periodic functions | |
SimpleCache< Tensor< Q >, 1 > | rnlij_cache |
SimpleCache< Tensor< Q >, 1 > | rnlp_cache |
Provides the common functionality/interface of all 1D convolutions.
interface for 1 term and for 1 dimension; the actual data are kept in ConvolutionData1D Derived classes must implement rnlp, issmall, natural_level
typedef Q madness::Convolution1D< Q >::opT |
The apply function uses this to infer resultT=opT*inputT.
|
inlinevirtual |
|
inline |
|
inline |
References is_small(), madness::Convolution1D< Q >::issmall(), madness::Convolution1D< Q >::lattice_summed(), madness::Convolution1D< Q >::maxR, R, madness::Convolution1D< Q >::range_restricted(), and madness::Convolution1D< Q >::rnlp_is_zero().
Referenced by madness::Convolution1D< Q >::get_rnlp(), and madness::Convolution1D< Q >::nonstandard().
|
inline |
References madness::copy(), madness::Tensor< T >::gaxpy(), madness::Convolution1D< Q >::get_issmall(), madness::Convolution1D< Q >::get_rnlp(), madness::Convolution1D< Q >::hgT2k, madness::Convolution1D< Q >::k, madness::Convolution1D< Q >::lattice_summed(), madness::Convolution1D< Q >::maxR, madness::Convolution1D< Q >::natural_level(), p(), madness::Convolution1D< Q >::phase(), R, madness::Convolution1D< Q >::rnlp(), madness::Convolution1D< Q >::rnlp_cache, and madness::transform().
Referenced by madness::GenericConvolution1D< Q, opT >::GenericConvolution1D(), madness::Convolution1D< Q >::get_rnlp(), and madness::Convolution1D< Q >::rnlij().
|
pure virtual |
Implemented in madness::GenericConvolution1D< Q, opT >, and madness::GaussianConvolution1D< Q >.
Referenced by madness::Convolution1D< Q >::get_issmall().
|
inline |
References madness::Convolution1D< Q >::maxR.
Referenced by madness::Convolution1D< Q >::get_issmall(), and madness::Convolution1D< Q >::get_rnlp().
|
inline |
Returns a pointer to the cached modified make_nonstandard form of the operator.
[in] | op_key | holds the scale and the source and target translations |
References madness::copy(), madness::fast_transpose(), madness::Convolution1D< Q >::hg, madness::Convolution1D< Q >::k, madness::Key< NDIM >::level(), MADNESS_ASSERT, madness::Convolution1D< Q >::mod_ns_cache, p(), madness::Tensor< T >::ptr(), R, madness::Convolution1D< Q >::rnlij(), s0, T(), madness::transform(), and madness::Key< NDIM >::translation().
|
inlinevirtual |
Returns the level for projection.
Reimplemented in madness::GenericConvolution1D< Q, opT >, and madness::GaussianConvolution1D< Q >.
Referenced by madness::Convolution1D< Q >::get_rnlp().
|
inline |
Returns a pointer to the cached make_nonstandard form of the operator.
References madness::copy_2d_patch(), madness::fast_transpose(), madness::Convolution1D< Q >::get_issmall(), madness::Convolution1D< Q >::hgT, madness::Convolution1D< Q >::k, madness::Convolution1D< Q >::ns_cache, p(), madness::Tensor< T >::ptr(), R, madness::Convolution1D< Q >::rnlij(), s0, T(), and madness::transform().
|
inline |
References madness::Convolution1D< Q >::bloch_k, Q(), and R.
Referenced by madness::Convolution1D< Q >::get_rnlp().
|
inline |
References madness::KernelRange::finite(), and madness::Convolution1D< Q >::range.
Referenced by madness::Convolution1D< Q >::get_issmall(), and madness::Convolution1D< Q >::rnlp_is_zero().
|
inline |
Computes the transition matrix elements for the convolution for n,l.
Returns the tensor
This is computed from the matrix elements over the correlation function which in turn are computed from the matrix elements over the double order legendre polynomials.
this->range_restricted()==true
, θ(D/2 - |x-y|) K(x-y)
is used as the kernel References madness::Convolution1D< Q >::c, madness::Convolution1D< Q >::get_rnlp(), madness::inner(), madness::Convolution1D< Q >::k, p(), pow(), R, madness::Convolution1D< Q >::rnlij_cache, and madness::transpose().
Referenced by madness::Convolution1D< Q >::mod_nonstandard(), madness::Convolution1D< Q >::nonstandard(), and madness::test_rnlij_rangelimited().
|
pure virtual |
Compute the projection of the operator onto the double order polynomials.
Implemented in madness::GaussianConvolution1D< Q >, and madness::GenericConvolution1D< Q, opT >.
Referenced by madness::Convolution1D< Q >::get_rnlp().
|
inline |
[r^n_l]
is zero due to range restriction References madness::KernelRange::iextent_x2(), madness::Convolution1D< Q >::range, and madness::Convolution1D< Q >::range_restricted().
Referenced by madness::Convolution1D< Q >::get_issmall(), and madness::GaussianConvolution1D< Q >::rnlp().
double madness::Convolution1D< Q >::bloch_k |
k in exp(i k R) Bloch phase factor folded into lattice sum
Referenced by madness::Convolution1D< Q >::phase().
Tensor<double> madness::Convolution1D< Q >::c |
Referenced by madness::Convolution1D< Q >::rnlij().
Tensor<double> madness::Convolution1D< Q >::hg |
Referenced by madness::Convolution1D< Q >::mod_nonstandard().
Tensor<double> madness::Convolution1D< Q >::hgT |
Referenced by madness::Convolution1D< Q >::nonstandard().
Tensor<double> madness::Convolution1D< Q >::hgT2k |
Referenced by madness::Convolution1D< Q >::get_rnlp().
int madness::Convolution1D< Q >::k |
int madness::Convolution1D< Q >::maxR |
Number of lattice translations for sum.
Referenced by madness::Convolution1D< Q >::get_issmall(), madness::Convolution1D< Q >::get_rnlp(), and madness::Convolution1D< Q >::lattice_summed().
|
mutable |
Referenced by madness::Convolution1D< Q >::mod_nonstandard().
int madness::Convolution1D< Q >::npt |
Number of quadrature points (is this used?)
Referenced by madness::GaussianConvolution1D< Q >::rnlp(), and madness::GenericConvolution1D< Q, opT >::rnlp().
|
mutable |
Referenced by madness::Convolution1D< Q >::nonstandard().
Tensor<double> madness::Convolution1D< Q >::quad_w |
Referenced by madness::GaussianConvolution1D< Q >::rnlp().
Tensor<double> madness::Convolution1D< Q >::quad_x |
KernelRange madness::Convolution1D< Q >::range |
if range is nonnull, kernel range limited to to range (in simulation cell units), useful for finite-range convolutions with periodic functions
Referenced by madness::Convolution1D< Q >::range_restricted(), madness::GaussianConvolution1D< Q >::rnlp(), and madness::Convolution1D< Q >::rnlp_is_zero().
|
mutable |
Referenced by madness::Convolution1D< Q >::rnlij().
|
mutable |
Referenced by madness::Convolution1D< Q >::get_rnlp().