MADNESS 0.10.1
Public Member Functions | Private Attributes | List of all members
madness::NuclearDensityFunctor Class Reference

Default functor for the nuclear charge density. More...

#include <potentialmanager.h>

Inheritance diagram for madness::NuclearDensityFunctor:
Inheritance graph
[legend]
Collaboration diagram for madness::NuclearDensityFunctor:
Collaboration graph
[legend]

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
 
NuclearDensityFunctorset_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_3dspecial_points () const final
 Override this to return list of special points to be refined more deeply.
 
- Public Member Functions inherited from madness::FunctionFunctorInterface< double, 3 >
 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 Moleculeatoms
 
BoundaryConditions< 3 > bc_
 
Tensor< double > cell
 
int maxR
 
double rscale = 1.0
 
int special_level_ = 15
 
std::vector< coord_3dspecial_points_
 

Additional Inherited Members

- Public Types inherited from madness::FunctionFunctorInterface< double, 3 >
typedef GenTensor< double > coeffT
 
typedef Key< NDIMkeyT
 
typedef double value_type
 
- Public Attributes inherited from madness::FunctionFunctorInterface< double, 3 >
Level special_level_
 

Detailed Description

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

Constructor & Destructor Documentation

◆ NuclearDensityFunctor()

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

Parameters
moleculeatoms
bcboundary conditions
cellsimulation cell (unit cell, if periodic)
special_levelthe initial refinement level
rscalesetting 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().

Member Function Documentation

◆ operator()()

double madness::NuclearDensityFunctor::operator() ( const coord_3d x) const
final

◆ set_rscale()

NuclearDensityFunctor & madness::NuclearDensityFunctor::set_rscale ( double  rscale)

References rscale.

◆ special_level()

Level madness::NuclearDensityFunctor::special_level ( ) const
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_.

◆ special_points()

std::vector< coord_3d > madness::NuclearDensityFunctor::special_points ( ) const
finalvirtual

Override this to return list of special points to be refined more deeply.

Reimplemented from madness::FunctionFunctorInterface< double, 3 >.

References special_points_.

Member Data Documentation

◆ atoms

const Molecule& madness::NuclearDensityFunctor::atoms
private

◆ bc_

BoundaryConditions<3> madness::NuclearDensityFunctor::bc_
private

Referenced by NuclearDensityFunctor().

◆ cell

Tensor<double> madness::NuclearDensityFunctor::cell
private

◆ maxR

int madness::NuclearDensityFunctor::maxR
private

◆ rscale

double madness::NuclearDensityFunctor::rscale = 1.0
private

Referenced by operator()(), and set_rscale().

◆ special_level_

int madness::NuclearDensityFunctor::special_level_ = 15
private

Referenced by special_level().

◆ special_points_

std::vector<coord_3d> madness::NuclearDensityFunctor::special_points_
private

Referenced by special_points().


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