LIBINT  2.6.0
Public Member Functions | Static Public Member Functions | List of all members
libint2::TennoGmEval< Real > Struct Template Reference

core integral for Yukawa and exponential interactions More...

#include <boys.h>

Public Member Functions

 TennoGmEval (unsigned int mmax, Real precision=-1)
 
unsigned int max_m () const
 
Real precision () const
 
void eval_yukawa (Real *Gm, Real one_over_rho, Real T, size_t mmax, Real zeta) const
 
void eval_slater (Real *Gm, Real one_over_rho, Real T, size_t mmax, Real zeta) const
 $ T = \rho |\vec{P} - \vec{Q}|^2 $ and $ U = \zeta^2 / (4 \rho) $ More...
 

Static Public Member Functions

static std::shared_ptr< const TennoGmEvalinstance (int m_max, double=0)
 Singleton interface allows to manage the lone instance; adjusts max m values as needed in thread-safe fashion.
 

Detailed Description

template<typename Real = double>
struct libint2::TennoGmEval< Real >

core integral for Yukawa and exponential interactions

Evaluates core integral for Gaussian integrals over the Yukawa potential $ \exp(- \zeta r) / r $ and the exponential interaction $ \exp(- \zeta r) $

Template Parameters
Realreal type
Warning
only Real = double is supported
guarantees absolute precision of only about 1e-14

Constructor & Destructor Documentation

◆ TennoGmEval()

template<typename Real = double>
libint2::TennoGmEval< Real >::TennoGmEval ( unsigned int  mmax,
Real  precision = -1 
)
inline
Parameters
m_maxmaximum value of the Gm function index
precisionthe desired absolute precision (relative precision for most intervals will be below epsilon, but for large T/U values and high m relative precision is low
Exceptions
std::invalid_argumentif m_max is greater than cheb_table_mmax (see tenno_cheb.h)
std::invalid_argumentif precision is smaller than maxabsprecision

References libint2::verbose(), and libint2::verbose_stream().

Member Function Documentation

◆ eval_slater()

template<typename Real = double>
void libint2::TennoGmEval< Real >::eval_slater ( Real *  Gm,
Real  one_over_rho,
Real  T,
size_t  mmax,
Real  zeta 
) const
inline

$ T = \rho |\vec{P} - \vec{Q}|^2 $ and $ U = \zeta^2 / (4 \rho) $

Parameters
[in]Gmpointer to array of mmax+1 Real elements, on return this contains the core integral for Slater-type geminal, $ \exp(-zeta r_{12}) $ , namely $ \sqrt{U} (G_{m-1}(T,U) - G_m(T,U)), m \in [0,m_\mathrm{max}] $ where@param [in] one_over_rho $ 1/\rho $
[in]T$ T $
[in]mmax$ m_\mathrm{max} $
[in]zeta$ \zeta $

◆ eval_yukawa()

template<typename Real = double>
void libint2::TennoGmEval< Real >::eval_yukawa ( Real *  Gm,
Real  one_over_rho,
Real  T,
size_t  mmax,
Real  zeta 
) const
inline
Parameters
[in]Gmpointer to array of mmax+1 Real elements, on return this contains the core integral for Yukawa interaction, $ \exp(-zeta r_{12})/r_{12} $ , namely $ G_{m}(T,U) = \int_0^1 t^{2m} \exp(U(1-t^{-2}) - Tt^2) dt, m \in [0,m_\mathrm{max}] $, where $ T = \rho |\vec{P} - \vec{Q}|^2 $ and $ U = \zeta^2 / (4 \rho) $
[in]one_over_rho$ 1/\rho $
[in]T$ T $
[in]mmax$ m_\mathrm{max} $
[in]zeta$ \zeta $

◆ precision()

template<typename Real = double>
Real libint2::TennoGmEval< Real >::precision ( ) const
inline
Returns
the precision with which this object can compute the result

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