MADNESS 0.10.1
|
Functor for the 1/r potential to induce the correct asymptotic behaviour of the exchange correlation potential. More...
#include <AC.h>
Public Member Functions | |
lr_pot_functor () | |
lr_pot_functor (const ACParameters< NDIM > &ac_param) | |
double | operator() (const Vector< double, NDIM > &r) const |
Public Member Functions inherited from madness::FunctionFunctorInterface< double, NDIM > | |
FunctionFunctorInterface () | |
virtual | ~FunctionFunctorInterface () |
virtual coeffT | coeff (const keyT &) const |
virtual void | operator() (const Vector< double *, 1 > &xvals, double *fvals, int npts) const |
virtual void | operator() (const Vector< double *, 2 > &xvals, double *fvals, int npts) const |
virtual void | operator() (const Vector< double *, 3 > &xvals, double *fvals, int npts) const |
virtual void | operator() (const Vector< double *, 4 > &xvals, double *fvals, int npts) const |
virtual void | operator() (const Vector< double *, 5 > &xvals, double *fvals, int npts) const |
virtual void | operator() (const Vector< double *, 6 > &xvals, double *fvals, int npts) const |
virtual bool | provides_coeff () const |
does this functor directly provide sum coefficients? or only function values? | |
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? | |
void | set_length_scale (double lo) |
adapt the special level to resolve the smallest length scale | |
virtual Level | special_level () |
Override this change level refinement for special points (default is 6) | |
virtual std::vector< Vector< double, NDIM > > | special_points () const |
Override this to return list of special points to be refined more deeply. | |
virtual bool | supports_vectorized () const |
Does the interface support a vectorized operator()? | |
virtual coeffT | values (const keyT &key, const Tensor< double > &tensor) const |
Private Member Functions | |
double | get_distance (Vector< double, NDIM > elec, Vector< double, NDIM > nuc) const |
double | int_factor (const Vector< double, NDIM > &r, std::vector< atom_information< NDIM > > between) const |
double | potential (const Vector< double, NDIM > &r) const |
Private Attributes | |
const ACParameters< NDIM > & | ac_param_ |
Parameter for the asymtotic correction. | |
Additional Inherited Members | |
Public Types inherited from madness::FunctionFunctorInterface< double, NDIM > | |
typedef GenTensor< double > | coeffT |
typedef Key< NDIM > | keyT |
typedef double | value_type |
Public Attributes inherited from madness::FunctionFunctorInterface< double, NDIM > | |
Level | special_level_ |
Functor for the 1/r potential to induce the correct asymptotic behaviour of the exchange correlation potential.
|
inline |
|
inline |
|
inlineprivate |
Computes the distance between electron and nucleus
[in] | elec | position of electron |
[in] | nuc | position of nucleus |
[out] | distance | distance between electron and nucleus |
References madness::distance(), and NDIM.
Referenced by madness::lr_pot_functor< NDIM >::operator()(), and madness::lr_pot_functor< NDIM >::potential().
|
inlineprivate |
Computes correction factor for the 1/r potential if electron position is between R1 and R2
[in] | r | position of electron |
[in] | between | vector of the atom_information of all atoms for that electron position is between R1 and R2 |
[out] | int_factor | correction factor |
References madness::lr_pot_functor< NDIM >::ac_param_, madness::int_factor_functor< NDIM >::int_factor(), and madness::lr_pot_functor< NDIM >::int_factor().
Referenced by madness::lr_pot_functor< NDIM >::int_factor(), and madness::lr_pot_functor< NDIM >::operator()().
|
inlinevirtual |
Computes 1/r potential weighted by a correction factor
[in] | r | position of the electron (density) |
[out] |
1/r potential weighted by a correction factor
Implements madness::FunctionFunctorInterface< double, NDIM >.
References madness::lr_pot_functor< NDIM >::ac_param_, d, madness::lr_pot_functor< NDIM >::get_distance(), madness::lr_pot_functor< NDIM >::int_factor(), and madness::lr_pot_functor< NDIM >::potential().
|
inlineprivate |
Multipole approximation of the 1/r potential for electron coordinate > R1 for all nuclei
[in] | r | coordinate of the electron |
[out] | potential at given coordinate r |
References madness::lr_pot_functor< NDIM >::ac_param_, and madness::lr_pot_functor< NDIM >::get_distance().
Referenced by madness::lr_pot_functor< NDIM >::operator()().
|
private |
Parameter for the asymtotic correction.
Referenced by madness::lr_pot_functor< NDIM >::int_factor(), madness::lr_pot_functor< NDIM >::operator()(), and madness::lr_pot_functor< NDIM >::potential().