MADNESS  version 0.9
Public Member Functions | Public Attributes | Protected Attributes | List of all members
TipMolecule Class Reference

Setup the tip-molecule problem. More...

#include <density.h>

Inheritance diagram for TipMolecule:
Inheritance graph
[legend]
Collaboration diagram for TipMolecule:
Collaboration graph
[legend]

Public Member Functions

 TipMolecule (double eps, double penalty, const Tensor< double > &denscoeffs, const std::vector< Atom * > &atoms, const std::vector< BasisFunc > &basis, double phi, double d)
 Sets up the data for the problem-inspecific parts. More...
 
virtual ~TipMolecule ()
 
double operator() (const Vector< double, 3 > &x) const
 The operator for projecting a MADNESS function. More...
 
virtual double DirichletCond (const Vector< double, 3 > &x) const
 
virtual double Inhomogeneity (const Vector< double, 3 > &x) const
 The PDE's inhomogeneity. More...
 
virtual double ElectronDensity (const Vector< double, 3 > &x) const
 
std::vector< Vector< double, 3 > > special_points () const
 Override this to return list of special points to be refined more deeply. More...
 
Level special_level ()
 Override this change level refinement for special points (default is 6) More...
 
- Public Member Functions inherited from madness::FunctionFunctorInterface< double, 3 >
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? More...
 
virtual bool supports_vectorized () const
 Does the interface support a vectorized operator()? More...
 
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) More...
 
virtual ~FunctionFunctorInterface ()
 
virtual coeffT coeff (const keyT &) const
 
virtual coeffT values (const keyT &key, const Tensor< double > &tensor) const
 
virtual bool provides_coeff () const
 does this functor directly provide sum coefficients? or only function values? More...
 

Public Attributes

FunctorOutput fop
 

Protected Attributes

GaussianDomainMask dmi
 
SignedDFInterface< 3 > * tip
 
SignedDFInterface< 3 > * solid
 
double penalty_prefact
 
double eps
 
int dda_init_level
 
int pdens_init_level
 
int edens_init_level
 
const Tensor< double > & denscoeffs
 
const std::vector< BasisFunc > & basis
 
std::vector< Vector< double, 3 > > atom_centers
 
double phi
 
double d
 
double proton_stdev
 
double proton_inverse
 

Additional Inherited Members

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

Detailed Description

Setup the tip-molecule problem.

Constructor & Destructor Documentation

TipMolecule::TipMolecule ( double  eps,
double  penalty,
const Tensor< double > &  denscoeffs,
const std::vector< Atom * > &  atoms,
const std::vector< BasisFunc > &  basis,
double  phi,
double  d 
)
inline

Sets up the data for the problem-inspecific parts.

References mpfr::ceil(), mpfr::log(), and sqrt().

virtual TipMolecule::~TipMolecule ( )
inlinevirtual

Member Function Documentation

virtual double TipMolecule::DirichletCond ( const Vector< double, 3 > &  x) const
inlinevirtual
virtual double TipMolecule::ElectronDensity ( const Vector< double, 3 > &  x) const
inlinevirtual

References func().

virtual double TipMolecule::Inhomogeneity ( const Vector< double, 3 > &  x) const
inlinevirtual

The PDE's inhomogeneity.

The Inhomogeneity is -4Pi n(x).

References madness::Vector< T, N >::begin(), mpfr::exp(), madness::norm(), madness::constants::pi, and sqrt().

double TipMolecule::operator() ( const Vector< double, 3 > &  x) const
inline
Level TipMolecule::special_level ( )
inlinevirtual

Override this change level refinement for special points (default is 6)

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

References DENSITY, DOMAIN_MASK, ELECTRON_DENSITY, and SURFACE.

std::vector<Vector<double, 3> > TipMolecule::special_points ( ) const
inlinevirtual

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

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

References DOMAIN_MASK, and SURFACE.

Member Data Documentation

std::vector<Vector<double, 3> > TipMolecule::atom_centers
protected
const std::vector<BasisFunc>& TipMolecule::basis
protected
double TipMolecule::d
protected
int TipMolecule::dda_init_level
protected
const Tensor<double>& TipMolecule::denscoeffs
protected
GaussianDomainMask TipMolecule::dmi
protected
int TipMolecule::edens_init_level
protected
double TipMolecule::eps
protected
FunctorOutput TipMolecule::fop

which function to use when projecting:

  1. the weighted surface (SURFACE)
  2. the rhs of the auxiliary DE (DIRICHLET_RHS)
  3. the domain mask (DOMAIN_MASK)
  4. the total charge density (DENSITY)
  5. the electron charge density (ELECTRON_DENSITY)

Referenced by main().

int TipMolecule::pdens_init_level
protected
double TipMolecule::penalty_prefact
protected
double TipMolecule::phi
protected
double TipMolecule::proton_inverse
protected
double TipMolecule::proton_stdev
protected
SignedDFInterface<3> * TipMolecule::solid
protected
SignedDFInterface<3>* TipMolecule::tip
protected

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