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

Functor for evaluating a smoothed atomic potential, supporting open and periodic boundary conditions. More...

#include <potentialmanager.h>

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

Public Member Functions

 SAPFunctor (const Atom &atom, double smoothing_param, const BoundaryConditions< 3 > &bc=FunctionDefaults< 3 >::get_bc(), const Tensor< double > &cell=FunctionDefaults< 3 >::get_cell(), int special_level=15)
 Constructs a SAPFunctor for evaluating a smoothed 1/r potential.
 
double operator() (const coord_3d &x) const final
 
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 Atomatom
 
BoundaryConditions< 3 > bc_
 
Tensor< double > cell
 
double smoothing_param
 
Level special_level_
 

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

Functor for evaluating a smoothed atomic potential, supporting open and periodic boundary conditions.

This class implements the FunctionFunctorInterface for a 3D double-valued function, representing a smoothed interpolated atomic potential centered on a given atom. It supports both open and periodic boundary conditions, and allows customization of the smoothing parameter, simulation cell, and initial refinement level.

Constructor & Destructor Documentation

◆ SAPFunctor()

madness::SAPFunctor::SAPFunctor ( const Atom atom,
double  smoothing_param,
const BoundaryConditions< 3 > &  bc = FunctionDefaults<3>::get_bc(),
const Tensor< double > &  cell = FunctionDefaults<3>::get_cell(),
int  special_level = 15 
)

Constructs a SAPFunctor for evaluating a smoothed 1/r potential.

This constructor initializes the SAPFunctor with a given atom, smoothing parameter, boundary conditions, simulation cell, and an initial refinement level. It supports both open and periodic boundary conditions.

Parameters
atomThe atom for which the potential is evaluated.
smoothing_paramControls the smoothness of the 1/r potential.
bcBoundary conditions for the simulation (default: open or as specified by FunctionDefaults).
cellThe simulation cell tensor (default: as specified by FunctionDefaults).
special_levelThe initial refinement level (default: 15).

Member Function Documentation

◆ operator()()

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

◆ special_level()

Level madness::SAPFunctor::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::SAPFunctor::special_points ( ) const
finalvirtual

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

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

References atom, and madness::Atom::get_coords().

Member Data Documentation

◆ atom

const Atom& madness::SAPFunctor::atom
private

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

◆ bc_

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

Referenced by operator()().

◆ cell

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

Referenced by operator()().

◆ smoothing_param

double madness::SAPFunctor::smoothing_param
private

Referenced by operator()().

◆ special_level_

Level madness::SAPFunctor::special_level_
private

Referenced by special_level().


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