MADNESS 0.10.1
|
Default functor for evaluating nuclear density at a given point in space. 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) | |
Constructs a NuclearDensityFunctor for evaluating nuclear densities. | |
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 evaluating nuclear density at a given point in space.
This class implements a functor that computes the nuclear density for a given molecule, supporting both open and periodic boundary conditions. It can be used to evaluate the nuclear density at any point in 3D space, and provides special points and refinement level information for adaptive algorithms.
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 |
||
) |
Constructs a NuclearDensityFunctor for evaluating nuclear densities.
This constructor can handle both open and periodic boundary conditions.
atoms | Reference to the molecule containing the atoms. |
bc | Boundary conditions for the simulation (default: open boundaries). |
cell | Simulation cell tensor (unit cell, if periodic; default: identity). |
special_level | The initial refinement level for special points (default: 15). |
rscale | Scaling factor for the nuclear radius. Setting rscale > 1 increases the effective size of a nucleus by this factor (i.e., rcut is divided by rscale). |
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()().
|
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(), and madness::GaussianNuclearDensityFunctor::special_level().
|
private |
Referenced by special_points().