MADNESS 0.10.1
madness::Polynomial< N > Class Template Reference

A nuclear correlation factor class. More...

#include <correlationfactor.h>

Inheritance diagram for madness::Polynomial< N >:
Collaboration diagram for madness::Polynomial< N >:

Public Member Functions

 Polynomial (World &world, const Molecule &mol, const double a)
 ctor
corrfactype type () const
Public Member Functions inherited from madness::NuclearCorrelationFactor
 NuclearCorrelationFactor (World &world, const Molecule &mol)
 ctor
virtual ~NuclearCorrelationFactor ()
 virtual destructor
const std::vector< size_t > & all_atoms () const
 indices of all atoms
virtual real_function_3d apply_U (const real_function_3d &rhs) const
 apply the regularized potential U_nuc on a given function rhs
std::vector< size_t > atoms_near (const double *x, const double *y, const double *z, const int npts) const
 atoms whose screening sphere meets the bounding sphere of a set of points
coord_3d dsmoothed_unitvec (const coord_3d &xyz, const int axis, double smoothing=0.0) const
 derivative of smoothed unit vector wrt the electronic coordinate
virtual real_function_3d function () const
 return the nuclear correlation factor
void initialize (const double vtol1)
 initialize the regularized potentials U1 and U2
virtual real_function_3d inverse () const
 return the inverse nuclear correlation factor
virtual double screening_radius (const double) const
 distance from nucleus A beyond which its contributions to the functors are negligible
coord_3d smoothed_unitvec (const coord_3d &xyz, double smoothing=0.0) const
 smoothed unit vector for the computation of the U1 potential
virtual real_function_3d square () const
 return the square of the nuclear correlation factor
virtual real_function_3d square_times_V_derivative (const int iatom, const int axis) const
virtual const real_function_3d U1 (const int axis) const
 return the U1 term of the correlation function
std::vector< real_function_3d > U1vec () const
 return the U1 functions in a vector
virtual const real_function_3d U2 () const
 return the U2 term of the correlation function

Private Member Functions

double a_param () const
double S (const double &r, const double &Z) const
 the nuclear correlation factor
coord_3d Sp (const coord_3d &vr1A, const double &Z) const
 radial part first derivative of the nuclear correlation factor
double Spp_div_S (const double &r, const double &Z) const
 second derivative of the nuclear correlation factor
double Sr_div_S (const double &r, const double &Z) const
double Srr_div_S (const double &r, const double &Z) const
double Srrr_div_S (const double &r, const double &Z) const
double U2X_spherical (const double &r, const double &Z, const double &rcut) const
 derivative of the U2 potential wrt nuclear coordinate X (spherical part)

Static Private Member Functions

static double b_param (const double &a)
 the cutoff

Private Attributes

double a_
 length scale parameter a, default chosen that linear terms in U2 vanish

Additional Inherited Members

Public Types inherited from madness::NuclearCorrelationFactor
enum  corrfactype {
  None , GradientalGaussSlater , GaussSlater , LinearSlater ,
  Polynomial , Slater , poly4erfc , Two ,
  Adhoc
}
typedef std::shared_ptr< FunctionFunctorInterface< double, 3 > > functorT
Static Public Attributes inherited from madness::NuclearCorrelationFactor
static constexpr int ncf_special_level =15
 projection depth of the factor's functions at the nuclei
Protected Attributes inherited from madness::NuclearCorrelationFactor
std::vector< real_function_3d > U1_function
 the three components of the U1 potential
real_function_3d U2_function
 the purely local U2 potential, having absorbed the nuclear pot V_nuc

Detailed Description

template<std::size_t N>
class madness::Polynomial< N >

A nuclear correlation factor class.

should reduce to quartic for N=4

Template Parameters
Nthe exponent of the polynomial

Constructor & Destructor Documentation

◆ Polynomial()

template<std::size_t N>
madness::Polynomial< N >::Polynomial ( World & world,
const Molecule & mol,
const double a )
inline

ctor

Parameters
[in]worldthe world
[in]molmolecule with the sites of the nuclei

length scale parameter a, default chosen that linear terms in U2 vanish

References madness::NuclearCorrelationFactor::NuclearCorrelationFactor(), a, a_, N, and madness::NuclearCorrelationFactor::world.

Member Function Documentation

◆ a_param()

template<std::size_t N>
double madness::Polynomial< N >::a_param ( ) const
inlineprivate

References a_.

Referenced by S(), Sp(), Spp_div_S(), Sr_div_S(), Srr_div_S(), Srrr_div_S(), and U2X_spherical().

◆ b_param()

template<std::size_t N>
double madness::Polynomial< N >::b_param ( const double & a)
inlinestaticprivate

the cutoff

References a, and N.

Referenced by S(), Sp(), Spp_div_S(), Sr_div_S(), Srr_div_S(), and Srrr_div_S().

◆ S()

template<std::size_t N>
double madness::Polynomial< N >::S ( const double & r,
const double & Z ) const
inlineprivatevirtual

the nuclear correlation factor

Implements madness::NuclearCorrelationFactor.

References a, a_param(), madness::arg(), b, b_param(), madness::power(), and Z.

◆ Sp()

template<std::size_t N>
coord_3d madness::Polynomial< N >::Sp ( const coord_3d & vr1A,
const double & Z ) const
inlineprivatevirtual

radial part first derivative of the nuclear correlation factor

Implements madness::NuclearCorrelationFactor.

References a, a_param(), b, b_param(), madness::Vector< T, N >::normf(), madness::power(), madness::NuclearCorrelationFactor::smoothed_unitvec(), and Z.

◆ Spp_div_S()

template<std::size_t N>
double madness::Polynomial< N >::Spp_div_S ( const double & r,
const double & Z ) const
inlineprivatevirtual

second derivative of the nuclear correlation factor

-1/2 S"/S - Z/r

Implements madness::NuclearCorrelationFactor.

References a, a_param(), b, b_param(), N, madness::power(), and Z.

◆ Sr_div_S()

template<std::size_t N>
double madness::Polynomial< N >::Sr_div_S ( const double & r,
const double & Z ) const
inlineprivatevirtual

first derivative of the NCF with respect to the relative distance rho

\‍[    \frac{\partial S(\rho)}{\partial \rho} \frac{1}{S(\rho)}
\‍]

where the distance of the electron to the nucleus A is given by

\‍[   \rho = |\vec r - \vec R_A |
\‍]

Implements madness::NuclearCorrelationFactor.

References a, a_param(), b, b_param(), N, madness::power(), and Z.

◆ Srr_div_S()

template<std::size_t N>
double madness::Polynomial< N >::Srr_div_S ( const double & r,
const double & Z ) const
inlineprivatevirtual

second derivative of the NCF with respect to the relative distance rho

\‍[    \frac{\partial^2 S(\rho)}{\partial \rho^2} \frac{1}{S(\rho)}
\‍]

where the distance of the electron to the nucleus A is given by

\‍[   \rho = |\vec r - \vec R_A |
\‍]

Implements madness::NuclearCorrelationFactor.

References a, a_param(), b, b_param(), N, madness::power(), and Z.

◆ Srrr_div_S()

template<std::size_t N>
double madness::Polynomial< N >::Srrr_div_S ( const double & r,
const double & Z ) const
inlineprivatevirtual

third derivative of the NCF with respect to the relative distance rho

\‍[    \frac{\partial^3 S(\rho)}{\partial \rho^3} \frac{1}{S(\rho)}
\‍]

where the distance of the electron to the nucleus A is given by

\‍[   \rho = |\vec r - \vec R_A |
\‍]

Implements madness::NuclearCorrelationFactor.

References a, a_param(), b, b_param(), N, madness::power(), madness::power< 2 >(), and Z.

◆ type()

template<std::size_t N>
corrfactype madness::Polynomial< N >::type ( ) const
inlinevirtual

◆ U2X_spherical()

template<std::size_t N>
double madness::Polynomial< N >::U2X_spherical ( const double & r,
const double & Z,
const double & rcut ) const
inlineprivatevirtual

derivative of the U2 potential wrt nuclear coordinate X (spherical part)

need to reimplement this for all derived classes due to the range for r -> 0, where the singular terms cancel. With

\‍[  \rho = \left| \vec r- \vec R_A \right|
\‍]

returns the term in the parenthesis without the the derivative of rho

\‍[\frac{\partial U_2}{\partial X_A} = \frac{\partial \rho}{\partial X}
          \left(-\frac{1}{2}\frac{S''' S - S'' S'}{S^2} + \frac{1}{\rho^2}\frac{S'}{S}
          - \frac{1}{\rho} \frac{S''S - S'^2}{S^2} + \frac{Z_A}{\rho^2}\right)
\‍]

Reimplemented from madness::NuclearCorrelationFactor.

References a, a_param(), MADNESS_EXCEPTION, N, madness::power(), madness::power< 4 >(), madness::power< 5 >(), madness::r2(), rcut, madness::NuclearCorrelationFactor::Sr_div_S(), madness::NuclearCorrelationFactor::Srr_div_S(), madness::NuclearCorrelationFactor::Srrr_div_S(), and Z.

Member Data Documentation

◆ a_

template<std::size_t N>
double madness::Polynomial< N >::a_
private

length scale parameter a, default chosen that linear terms in U2 vanish

Referenced by Polynomial(), and a_param().


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