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

evaluates Wigner-Seitz-truncated potential in the simulation cell, due to periodic or nonperiodic source functions More...

#include <potentialmanager.h>

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

Public Member Functions

 WignerSeitzPotentialFunctor (const Molecule &atoms, Tensor< double > c, BoundaryConditions< 3 > b, std::array< KernelRange, 3 > r)
 same as the standard ctor, but lacks the ability to override the lattice sum range
 
template<typename Int >
 WignerSeitzPotentialFunctor (const Molecule &atoms, Tensor< double > c, BoundaryConditions< 3 > b, std::array< KernelRange, 3 > r, std::array< Int, 3 > lattice_sum_range)
 
double operator() (const coord_3d &x) const
 
std::vector< coord_3dspecial_points () const
 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 Level special_level () const
 Override this to change the minimum level of refinement at special points (default is 6)
 
virtual bool supports_vectorized () const
 Does the interface support a vectorized operator()?
 
virtual coeffT values (const keyT &key, const Tensor< double > &tensor) const
 

Static Public Member Functions

static std::array< std::int64_t, 3 > make_default_lattice_sum_range (const BoundaryConditions< 3 > &bc, const std::array< KernelRange, 3 > &range)
 

Private Attributes

const Moleculeatoms
 
const BoundaryConditions< 3 > bc
 
const Tensor< double > cell
 
const std::array< double, 3 > cell_width
 
const std::array< std::int64_t, 3 > lattice_sum_range
 
const std::array< KernelRange, 3 > range
 
const std::array< double, 3 > rcell_width
 

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

evaluates Wigner-Seitz-truncated potential in the simulation cell, due to periodic or nonperiodic source functions

Constructor & Destructor Documentation

◆ WignerSeitzPotentialFunctor() [1/2]

template<typename Int >
madness::WignerSeitzPotentialFunctor::WignerSeitzPotentialFunctor ( const Molecule atoms,
Tensor< double >  c,
BoundaryConditions< 3 >  b,
std::array< KernelRange, 3 >  r,
std::array< Int, 3 >  lattice_sum_range 
)
inline

Constructs a WignerSeitzPotentialFunctor evaluating potential in simulation cell c due to point charges atoms optionally periodically repeated according to boundary conditions b and interaction range along each Cartesian direction limited by r . Lattice summation range along each axis can be overridden by specifying lattice_sum_range .

Template Parameters
Int
Parameters
atomslist of point charges in the simulation cell
cthe simulation cell dimensions
bthe boundary conditions
rthe kernel range
lattice_sum_rangeoverrides the lattice summation range that by default

References d, and MADNESS_ASSERT.

◆ WignerSeitzPotentialFunctor() [2/2]

madness::WignerSeitzPotentialFunctor::WignerSeitzPotentialFunctor ( const Molecule atoms,
Tensor< double >  c,
BoundaryConditions< 3 >  b,
std::array< KernelRange, 3 >  r 
)
inline

same as the standard ctor, but lacks the ability to override the lattice sum range

Member Function Documentation

◆ make_default_lattice_sum_range()

static std::array< std::int64_t, 3 > madness::WignerSeitzPotentialFunctor::make_default_lattice_sum_range ( const BoundaryConditions< 3 > &  bc,
const std::array< KernelRange, 3 > &  range 
)
inlinestatic

References d.

◆ operator()()

double madness::WignerSeitzPotentialFunctor::operator() ( const coord_3d x) const

◆ special_points()

std::vector< coord_3d > madness::WignerSeitzPotentialFunctor::special_points ( ) const
inlinevirtual

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

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

References madness::NuclearDensityFunctor::atoms, and madness::Molecule::get_all_coords_vec().

Member Data Documentation

◆ atoms

const Molecule& madness::WignerSeitzPotentialFunctor::atoms
private

Referenced by operator()().

◆ bc

const BoundaryConditions<3> madness::WignerSeitzPotentialFunctor::bc
private

◆ cell

const Tensor<double> madness::WignerSeitzPotentialFunctor::cell
private

◆ cell_width

const std::array<double, 3> madness::WignerSeitzPotentialFunctor::cell_width
private

Referenced by operator()().

◆ lattice_sum_range

const std::array<std::int64_t, 3> madness::WignerSeitzPotentialFunctor::lattice_sum_range
private

Referenced by operator()().

◆ range

const std::array<KernelRange, 3> madness::WignerSeitzPotentialFunctor::range
private

Referenced by operator()().

◆ rcell_width

const std::array<double, 3> madness::WignerSeitzPotentialFunctor::rcell_width
private

Referenced by operator()().


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