LIBINT  2.1.0-stable
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
libint2::YukawaGmEval< Real > Struct Template Reference

core integral for Yukawa and exponential interactions More...

#include <boys.h>

Public Member Functions

 YukawaGmEval (unsigned int mmax, Real precision)
 
unsigned int max_m () const
 
Real precision () const
 
void eval_yukawa (Real *Gm, Real T, Real U, size_t mmax, Real absolute_precision)
 
void eval_slater (Real *Gm, Real T, Real U, size_t mmax, Real absolute_precision)
 
void eval_yukawa_s2 (Real *Gm, Real T, Real U, size_t mmax)
 Scheme 2 of Ten-no: More...
 
void eval_yukawa_s3 (Real *Gm, Real T, Real U, size_t mmax)
 Scheme 3 of Ten-no: More...
 
void eval_yukawa_Gm0U (Real *Gm0U, Real U, int mmax, int mmin=-1)
 computes prerequisites for MacLaurin expansion of Gm(T,U) for m in [-1,mmax); uses Ten-no's prescription, i.e. More...
 

Static Public Member Functions

static void eval_yukawa_s1 (Real *Gm, Real T, Real U, size_t mmax)
 Scheme 1 of Ten-no: upward recursion from $ G_{-1} (T,U) $ and $ G_0 (T,U) $ T must be non-zero! More...
 
static Real eval_Gm1 (Real T, Real U)
 computes a single value of G_{-1}(T,U)
 
static Real eval_G0 (Real T, Real U)
 computes a single value of G_0(T,U)
 
static void eval_G_m1_0 (Real *result, Real T, Real U)
 computes $ G_{-1}(T,U) $ and $ G_{0}(T,U) $ , both are needed for Yukawa and Slater integrals More...
 
static Real eval_MacLaurinT (Real T, Real U, size_t m, Real absolute_precision)
 computes a single value of G(T,U) using MacLaurin series.
 

Static Public Attributes

static const int mmin = -1
 

Detailed Description

template<typename Real>
struct libint2::YukawaGmEval< Real >

core integral for Yukawa and exponential interactions

Evaluates core integral for the Yukawa potential $ \exp(- \zeta r) / r $

Template Parameters
Realreal type

Member Function Documentation

template<typename Real>
static void libint2::YukawaGmEval< Real >::eval_G_m1_0 ( Real *  result,
Real  T,
Real  U 
)
inlinestatic

computes $ G_{-1}(T,U) $ and $ G_{0}(T,U) $ , both are needed for Yukawa and Slater integrals

Parameters
[out]resultresult[0] contains $ G_{-1}(T,U) $, result[1] contains $ G_{0}(T,U) $
template<typename Real>
void libint2::YukawaGmEval< Real >::eval_yukawa_Gm0U ( Real *  Gm0U,
Real  U,
int  mmax,
int  mmin = -1 
)
inline

computes prerequisites for MacLaurin expansion of Gm(T,U) for m in [-1,mmax); uses Ten-no's prescription, i.e.

Parameters
[out]Gm0U
[in]U
[in]mmax
template<typename Real>
static void libint2::YukawaGmEval< Real >::eval_yukawa_s1 ( Real *  Gm,
Real  T,
Real  U,
size_t  mmax 
)
inlinestatic

Scheme 1 of Ten-no: upward recursion from $ G_{-1} (T,U) $ and $ G_0 (T,U) $ T must be non-zero!

Parameters
[out]Gm$ G_m(T,U), m=-1..mmax $
template<typename Real>
void libint2::YukawaGmEval< Real >::eval_yukawa_s2 ( Real *  Gm,
Real  T,
Real  U,
size_t  mmax 
)
inline

Scheme 2 of Ten-no:

  • evaluate G_m(0,U) for m = mmax ... mmax+n, where n is the number of terms in Maclaurin expansion how? see eval_yukawa_Gm0U
  • then MacLaurin expansion for $ G_{m_{\rm max}}(T,U) $ and $ G_{m_{\rm max}-1}(T,U) $
  • then downward recursion
    Parameters
    [out]Gm$ G_m(T,U), m=-1..mmax $
template<typename Real>
void libint2::YukawaGmEval< Real >::eval_yukawa_s3 ( Real *  Gm,
Real  T,
Real  U,
size_t  mmax 
)
inline

Scheme 3 of Ten-no:

  • evaluate G_m(0,U) for m = 0 ... mmax+n, where n is the max order of terms in Maclaurin expansion how? see eval_yukawa_Gm0U
  • then MacLaurin expansion for $ G_{m}(T,U) $ for m = 0 ... mmax
    Parameters
    [out]Gm$ G_m(T,U), m=-1..mmax $
template<typename Real>
Real libint2::YukawaGmEval< 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: