MADNESS
version 0.9
|
Switches between positive values Vint
and Vext
with special log derivative.
More...
#include <molecularmask.h>
Public Member Functions | |
MolecularVolumeExponentialSwitch (double sigma, double Vint, double Vext, const std::vector< double > atomic_radii, const std::vector< madness::coord_3d > atomic_coords) | |
virtual double | operator() (const madness::coord_3d &r) const |
std::vector< madness::Vector < double, 3 > > | special_points () const |
Override this to return list of special points to be refined more deeply. 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 Level | special_level () |
Override this change level refinement for special points (default is 6) 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... | |
Additional Inherited Members | |
Public Types inherited from madness::FunctionFunctorInterface< double, 3 > | |
typedef GenTensor< double > | coeffT |
typedef Key< NDIM > | keyT |
Switches between positive values Vint
and Vext
with special log derivative.
Switches between positive values Vint
on the interior and Vext
on the interior. It has value
where is the regular volume mask provided by MolecularVolumeMask, and is its complement. Its log-derivative is precisely located in the surface with value
with already being computed by MolecularVolumeMaskGrad. The advantage of this is that if is big, the log derivative of the regular volume mask ( ) is displaced from the surface (perhaps by multiple values of ). This leads to slow convergence w.r.t and potential inaccuracies depending how the numerical representation is computed. The surface charge in dielectric problems is controlled by and hence the dielectric should employ this form of the switch.
|
inline |
|
inlinevirtual |
References c, and mpfr::exp().
|
inlinevirtual |
Override this to return list of special points to be refined more deeply.
Reimplemented from madness::FunctionFunctorInterface< double, 3 >.
References MolecularVolumeComplementMask::special_points().