LIBINT  2.1.0-stable
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
libint2::TwoBodyEngine< Kernel > Class Template Reference

TwoBodyEngine computes (ab|O|cd) (i.e. More...

#include <engine.h>

Collaboration diagram for libint2::TwoBodyEngine< Kernel >:
Collaboration graph
[legend]

Classes

struct  class_id
 
struct  class_profile
 

Public Types

typedef libint2::TwoBodyEngineTraits< Kernel >::oper_params_type oper_params_type
 

Public Member Functions

 TwoBodyEngine ()
 creates a default (unusable) TwoBodyEngine
 
 TwoBodyEngine (size_t max_nprim, int max_l, int deriv_order=0, real_t precision=std::numeric_limits< real_t >::epsilon(), const oper_params_type &oparams=oper_params_type())
 Constructs a (usable) TwoBodyEngine. More...
 
 TwoBodyEngine (TwoBodyEngine &&other)
 move constructor
 
 TwoBodyEngine (const TwoBodyEngine &other)
 (deep) copy constructor
 
TwoBodyEngineoperator= (TwoBodyEngine &&other)
 move assignment
 
TwoBodyEngineoperator= (const TwoBodyEngine &other)
 (deep) copy assignment
 
const real_t * compute (const libint2::Shell &tbra1, const libint2::Shell &tbra2, const libint2::Shell &tket1, const libint2::Shell &tket2)
 computes shell set of integrals More...
 
void set_precision (real_t prec)
 this specifies target precision for computing the integrals. More...
 
real_t precision () const
 
void print_timers ()
 

Public Attributes

Timers< 3 > timers
 
std::map< class_id, class_profileclass_profiles
 

Static Public Attributes

static bool skip_core_ints = false
 

Friends

struct detail::TwoBodyEngineDispatcher< Kernel >
 

Detailed Description

template<MultiplicativeSphericalTwoBodyKernel Kernel>
class libint2::TwoBodyEngine< Kernel >

TwoBodyEngine computes (ab|O|cd) (i.e.

four-center) integrals over a two-body kernel of type MultiplicativeSphericalTwoBodyKernel using Obara-Saika-Ahlrichs relations.

Template Parameters
Kernelkernel type, the supported values are enumerated by MultiplicativeSphericalTwoBodyKernel

Constructor & Destructor Documentation

template<MultiplicativeSphericalTwoBodyKernel Kernel>
libint2::TwoBodyEngine< Kernel >::TwoBodyEngine ( size_t  max_nprim,
int  max_l,
int  deriv_order = 0,
real_t  precision = std::numeric_limits<real_t>::epsilon(),
const oper_params_type &  oparams = oper_params_type() 
)
inline

Constructs a (usable) TwoBodyEngine.

Parameters
max_nprimthe maximum number of primitives per contracted Gaussian shell
max_lthe maximum angular momentum of Gaussian shell
deriv_orderif not 0, will compute geometric derivatives of Gaussian integrals of order deriv_order
precisionspecifies the target precision with which the integrals will be computed; the default is the "epsilon" of real_t type, given by std::numeric_limits<real_t>::epsilon(). The precision control is somewhat empirical, hence be conservative.
See also
set_precision()
Parameters
oper_paramsspecifies the operator parameters. The type of oper_params depends on Kernel as follows:
  1. Coulomb : empty type (does not need to be provided)
  2. cGTG : ContractedGaussianGeminal
  3. cGTG_times_Coulomb : ContractedGaussianGeminal
  4. DelcGTG_square : ContractedGaussianGeminal
Warning
currently derivative integrals are not supported
currently only one-contraction Shell objects are supported; i.e. generally-contracted Shells are not yet supported

Member Function Documentation

template<MultiplicativeSphericalTwoBodyKernel Kernel>
const real_t* libint2::TwoBodyEngine< Kernel >::compute ( const libint2::Shell tbra1,
const libint2::Shell tbra2,
const libint2::Shell tket1,
const libint2::Shell tket2 
)
inline

computes shell set of integrals

Note
result is stored in the "chemists" form, i.e. (tbra1 tbra2 |tket1 tket2), in row-major order

References libint2::Shell::contr, libint2::Timers< N >::start(), and libint2::Timers< N >::stop().

template<MultiplicativeSphericalTwoBodyKernel Kernel>
real_t libint2::TwoBodyEngine< Kernel >::precision ( ) const
inline
Returns
the target precision for computing the integrals
See also
set_precision(real_t)

References libint2::Timers< N >::read(), and libint2::Timers< N >::set_now_overhead().

template<MultiplicativeSphericalTwoBodyKernel Kernel>
void libint2::TwoBodyEngine< Kernel >::set_precision ( real_t  prec)
inline

this specifies target precision for computing the integrals.

target precision $ \epsilon $ is used in 3 ways: (1) to screen out primitive pairs in ShellPair object for which $ {\rm scr}_{12} = \max|c_1| \max|c_2| \exp(-\rho_{12} |AB|^2)/\gamma_{12} < \epsilon $ ; (2) to screen out primitive quartets outside compute_primdata() for which $ {\rm scr}_{12} {\rm scr}_{34} < \epsilon $; (3) to screen out primitive quartets inside compute_primdata() for which the prefactor of $ F_m(\rho, T) $ is smaller than $ \epsilon $ .


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