MADNESS  version 0.9
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
madness::TwoElectronInterface< T, NDIM > Class Template Referenceabstract

base class to compute the wavelet coefficients for an isotropic 2e-operator More...

#include <function_interface.h>

Inheritance diagram for madness::TwoElectronInterface< T, NDIM >:
Inheritance graph
[legend]
Collaboration diagram for madness::TwoElectronInterface< T, NDIM >:
Collaboration graph
[legend]

Public Types

typedef GenTensor< T > coeffT
 
- Public Types inherited from madness::FunctionFunctorInterface< T, NDIM >
typedef GenTensor< T > coeffT
 
typedef Key< NDIMkeyT
 

Public Member Functions

 TwoElectronInterface (double lo, double eps, const BoundaryConditions< 6 > &bc=FunctionDefaults< 6 >::get_bc(), int kk=FunctionDefaults< 6 >::get_k())
 constructor: cf the Coulomb kernel More...
 
bool provides_coeff () const
 does this functor directly provide sum coefficients? or only function values? More...
 
coeffT coeff (const Key< NDIM > &key) const
 return the coefficients of the function in 6D (x1,y1,z1, x2,y2,z2) More...
 
operator() (const Vector< double, NDIM > &x) const
 You should implement this to return f(x) More...
 
- Public Member Functions inherited from madness::FunctionFunctorInterface< T, NDIM >
virtual bool screened (const Vector< double, NDIM > &c1, const Vector< double, NDIM > &c2) const
 Can we screen this function based on the bounding box information? More...
 
virtual bool supports_vectorized () const
 Does the interface support a vectorized operator()? More...
 
virtual void operator() (const Vector< double *, 1 > &xvals, T *fvals, int npts) const
 
virtual void operator() (const Vector< double *, 2 > &xvals, T *fvals, int npts) const
 
virtual void operator() (const Vector< double *, 3 > &xvals, T *fvals, int npts) const
 
virtual void operator() (const Vector< double *, 4 > &xvals, T *fvals, int npts) const
 
virtual void operator() (const Vector< double *, 5 > &xvals, T *fvals, int npts) const
 
virtual void operator() (const Vector< double *, 6 > &xvals, T *fvals, int npts) const
 
virtual std::vector< Vector
< double, NDIM > > 
special_points () const
 Override this to return list of special points to be refined more deeply. More...
 
virtual Level special_level ()
 Override this change level refinement for special points (default is 6) More...
 
virtual ~FunctionFunctorInterface ()
 
virtual coeffT values (const keyT &key, const Tensor< double > &tensor) const
 

Protected Member Functions

Tensor< double > make_coeff (const Key< 6 > &key) const
 make the coefficients from the 1d convolution More...
 
Tensor< double > map_coeff (const Tensor< double > &c) const
 the dimensions are a bit confused (x1,x2, y1,y2, z1,z2) -> (x1,y1,z1, x2,y2,z2) More...
 
void initialize (const double eps)
 initialize the Gaussian fit; uses the virtual function fit() to fit More...
 
virtual GFit< double, 3 > fit (const double eps) const =0
 derived classes must implement this – cf GFit.h More...
 

Protected Attributes

std::vector< ConvolutionND
< double, 6 > > 
ops
 storing the coefficients More...
 
int rank
 the number of terms in the Gaussian quadrature More...
 
int k
 the wavelet order More...
 
double lo
 the smallest length scale that needs to be represented More...
 
double hi
 the largest length scale that needs to be represented More...
 

Detailed Description

template<typename T, std::size_t NDIM>
class madness::TwoElectronInterface< T, NDIM >

base class to compute the wavelet coefficients for an isotropic 2e-operator

all classes that derive from this base class use the Gaussian fitting procedure that has been developed for the BSH operator. We simply reuse the wavelet coefficients that we get from there to avoid evaluating the functions themselves, since the quadrature of singular functions is imprecise and slow.

Member Typedef Documentation

template<typename T, std::size_t NDIM>
typedef GenTensor<T> madness::TwoElectronInterface< T, NDIM >::coeffT

Constructor & Destructor Documentation

template<typename T, std::size_t NDIM>
madness::TwoElectronInterface< T, NDIM >::TwoElectronInterface ( double  lo,
double  eps,
const BoundaryConditions< 6 > &  bc = FunctionDefaults<6>::get_bc(),
int  kk = FunctionDefaults<6>::get_k() 
)
inline

constructor: cf the Coulomb kernel

Parameters
[in]worldthe world
[in]lothe smallest length scale to be resolved
[in]epsthe accuracy threshold

Member Function Documentation

template<typename T, std::size_t NDIM>
coeffT madness::TwoElectronInterface< T, NDIM >::coeff ( const Key< NDIM > &  key) const
inlinevirtual

return the coefficients of the function in 6D (x1,y1,z1, x2,y2,z2)

Reimplemented from madness::FunctionFunctorInterface< T, NDIM >.

Referenced by madness::TwoElectronInterface< double, 6 >::initialize().

template<typename T, std::size_t NDIM>
virtual GFit<double,3> madness::TwoElectronInterface< T, NDIM >::fit ( const double  eps) const
protectedpure virtual

derived classes must implement this – cf GFit.h

Referenced by madness::TwoElectronInterface< double, 6 >::initialize().

template<typename T, std::size_t NDIM>
void madness::TwoElectronInterface< T, NDIM >::initialize ( const double  eps)
inlineprotected

initialize the Gaussian fit; uses the virtual function fit() to fit

template<typename T, std::size_t NDIM>
Tensor<double> madness::TwoElectronInterface< T, NDIM >::make_coeff ( const Key< 6 > &  key) const
inlineprotected

make the coefficients from the 1d convolution

Referenced by madness::TwoElectronInterface< double, 6 >::coeff().

template<typename T, std::size_t NDIM>
Tensor<double> madness::TwoElectronInterface< T, NDIM >::map_coeff ( const Tensor< double > &  c) const
inlineprotected

the dimensions are a bit confused (x1,x2, y1,y2, z1,z2) -> (x1,y1,z1, x2,y2,z2)

Referenced by madness::TwoElectronInterface< double, 6 >::coeff().

template<typename T, std::size_t NDIM>
T madness::TwoElectronInterface< T, NDIM >::operator() ( const Vector< double, NDIM > &  x) const
inlinevirtual

You should implement this to return f(x)

Implements madness::FunctionFunctorInterface< T, NDIM >.

template<typename T, std::size_t NDIM>
bool madness::TwoElectronInterface< T, NDIM >::provides_coeff ( ) const
inlinevirtual

does this functor directly provide sum coefficients? or only function values?

Reimplemented from madness::FunctionFunctorInterface< T, NDIM >.

Member Data Documentation

template<typename T, std::size_t NDIM>
double madness::TwoElectronInterface< T, NDIM >::hi
protected

the largest length scale that needs to be represented

Referenced by madness::TwoElectronInterface< double, 6 >::TwoElectronInterface().

template<typename T, std::size_t NDIM>
int madness::TwoElectronInterface< T, NDIM >::k
protected
template<typename T, std::size_t NDIM>
double madness::TwoElectronInterface< T, NDIM >::lo
protected

the smallest length scale that needs to be represented

template<typename T, std::size_t NDIM>
std::vector< ConvolutionND<double,6> > madness::TwoElectronInterface< T, NDIM >::ops
mutableprotected
template<typename T, std::size_t NDIM>
int madness::TwoElectronInterface< T, NDIM >::rank
protected

The documentation for this class was generated from the following file: