MADNESS 0.10.1
|
Default functor for the nuclear charge density. More...
#include <potentialmanager.h>
Public Member Functions | |
NuclearDensityFunctor (const Molecule &atoms, const BoundaryConditions< 3 > &bc=FunctionDefaults< 3 >::get_bc(), const Tensor< double > &cell=FunctionDefaults< 3 >::get_cell(), int special_level=15, double rscale=1.0) | |
double | operator() (const coord_3d &x) const final |
NuclearDensityFunctor & | set_rscale (double rscale) |
Level | special_level () const final |
Override this to change the minimum level of refinement at special points (default is 6) | |
std::vector< coord_3d > | special_points () const final |
Override this to return list of special points to be refined more deeply. | |
![]() | |
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 double | operator() (const Vector< double, NDIM > &x) const=0 |
You should implement this to return f(x) | |
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 bool | supports_vectorized () const |
Does the interface support a vectorized operator()? | |
virtual coeffT | values (const keyT &key, const Tensor< double > &tensor) const |
Private Attributes | |
const Molecule & | atoms |
BoundaryConditions< 3 > | bc_ |
Tensor< double > | cell |
int | maxR |
double | rscale = 1.0 |
int | special_level_ = 15 |
std::vector< coord_3d > | special_points_ |
Additional Inherited Members | |
![]() | |
typedef GenTensor< double > | coeffT |
typedef Key< NDIM > | keyT |
typedef double | value_type |
![]() | |
Level | special_level_ |
Default functor for the nuclear charge density.
This assumes the default nuclear model optimized to produce potential close that of a point nucleus (smoothed Coulomb potential). The model is
madness::NuclearDensityFunctor::NuclearDensityFunctor | ( | const Molecule & | atoms, |
const BoundaryConditions< 3 > & | bc = FunctionDefaults<3>::get_bc() , |
||
const Tensor< double > & | cell = FunctionDefaults<3>::get_cell() , |
||
int | special_level = 15 , |
||
double | rscale = 1.0 |
||
) |
Generic constructor, can handle open and periodic boundaries
molecule | atoms |
bc | boundary conditions |
cell | simulation cell (unit cell, if periodic) |
special_level | the initial refinement level |
rscale | setting rscale>1 will make a nucleus larger by a factor of rscale (in other words, rcut is multiplied by the inverse of by this) |
References bc_, cell, madness::BaseTensor::dim(), MADNESS_ASSERT, maxR, and madness::BaseTensor::ndim().
|
final |
References atoms, cell, k, maxR, madness::Molecule::nuclear_charge_density(), rscale, madness::Molecule::smallest_length_scale(), and sum.
NuclearDensityFunctor & madness::NuclearDensityFunctor::set_rscale | ( | double | rscale | ) |
References rscale.
|
finalvirtual |
Override this to change the minimum level of refinement at special points (default is 6)
Reimplemented from madness::FunctionFunctorInterface< double, 3 >.
References special_level_.
|
finalvirtual |
Override this to return list of special points to be refined more deeply.
Reimplemented from madness::FunctionFunctorInterface< double, 3 >.
References special_points_.
|
private |
Referenced by operator()(), and madness::WignerSeitzPotentialFunctor::special_points().
|
private |
Referenced by NuclearDensityFunctor().
|
private |
Referenced by NuclearDensityFunctor(), and operator()().
|
private |
Referenced by NuclearDensityFunctor(), and operator()().
|
private |
Referenced by operator()(), and set_rscale().
|
private |
Referenced by special_level().
|
private |
Referenced by special_points().