Psi4
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
psi::TwoElectronInt Class Reference

#include <eri.h>

Inheritance diagram for psi::TwoElectronInt:
psi::TwoBodyAOInt psi::ErfComplementERI psi::ErfERI psi::ERI psi::F12 psi::F12DoubleCommutator psi::F12G12 psi::F12Scaled psi::F12Squared

Public Member Functions

 TwoElectronInt (const IntegralFactory *integral, int deriv=0, bool use_shell_pairs=false)
 Constructor. Use an IntegralFactory to create this object. More...
 
virtual ~TwoElectronInt ()
 
size_t compute_shell (const AOShellCombinationsIterator &)
 Compute ERIs between 4 shells. Result is stored in buffer. More...
 
virtual size_t compute_shell (int, int, int, int)
 Compute ERIs between 4 shells. Result is stored in buffer. More...
 
virtual size_t compute_shell_deriv1 (int, int, int, int)
 Compute ERI derivatives between 4 shells. Result is stored in buffer. More...
 
virtual size_t compute_shell_deriv2 (int, int, int, int)
 Compute ERI second derivatives between 4 sheels. Result is stored in buffer. More...
 
- Public Member Functions inherited from psi::TwoBodyAOInt
virtual ~TwoBodyAOInt ()
 
std::shared_ptr< BasisSetbasis ()
 Basis set on center one. More...
 
std::shared_ptr< BasisSetbasis1 ()
 Basis set on center one. More...
 
std::shared_ptr< BasisSetbasis2 ()
 Basis set on center two. More...
 
std::shared_ptr< BasisSetbasis3 ()
 Basis set on center three. More...
 
std::shared_ptr< BasisSetbasis4 ()
 Basis set on center four. More...
 
void set_force_cartesian (bool t_f)
 Sets whether we're forcing this object to always generate Cartesian integrals. More...
 
int deriv () const
 Returns the derivative level this object is setup for. More...
 
const double * buffer () const
 Buffer where the integrals are placed. More...
 
const IntegralFactoryintegral () const
 Returns the integral factory used to create this object. More...
 
std::vector< ShellPairBlockget_blocks12 (void) const
 Get optimal blocks of shell pairs for centers 1 & 2. More...
 
std::vector< ShellPairBlockget_blocks34 (void) const
 Get optimal blocks of shell pairs for centers 3 & 4. More...
 
virtual void compute_shell_blocks (int shellpair12, int shellpair34, int npair12=-1, int npair34=-1)
 
virtual int shell_is_zero (int, int, int, int)
 Is the shell zero? More...
 
void normalize_am (std::shared_ptr< GaussianShell >, std::shared_ptr< GaussianShell >, std::shared_ptr< GaussianShell >, std::shared_ptr< GaussianShell >, int nchunk=1)
 Normalize Cartesian functions based on angular momentum. More...
 
virtual bool cloneable () const
 Return true if the clone member can be called. By default returns false. More...
 
virtual TwoBodyAOIntclone () const
 Returns a clone of this object. By default throws an exception. More...
 
void pure_transform (int, int, int, int, int nchunk, bool copy_to_source=true)
 Results go back to buffer_. More...
 

Protected Member Functions

size_t compute_quartet (int, int, int, int)
 Computes the ERIs between four shells. More...
 
size_t compute_quartet_deriv1 (int, int, int, int)
 Computes the ERI derivatives between four shells. More...
 
size_t compute_quartet_deriv2 (int, int, int, int)
 Computes the ERI second derivative between four shells. More...
 
void init_shell_pairs12 ()
 Form shell pair information. Must be smart enough to handle arbitrary basis sets. More...
 
void init_shell_pairs34 ()
 
void free_shell_pairs12 ()
 Free shell pair information. More...
 
void free_shell_pairs34 ()
 
size_t memory_to_store_shell_pairs (const std::shared_ptr< BasisSet > &, const std::shared_ptr< BasisSet > &)
 Evaluates how much memory (in doubles) is needed to store shell pair data. More...
 
- Protected Member Functions inherited from psi::TwoBodyAOInt
void create_blocks (void)
 
void permute_target (double *s, double *t, int sh1, int sh2, int sh3, int sh4, bool p12, bool p34, bool p13p24)
 
void permute_1234_to_1243 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
void permute_1234_to_2134 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
void permute_1234_to_2143 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
void permute_1234_to_3412 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
void permute_1234_to_4312 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
void permute_1234_to_3421 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
void permute_1234_to_4321 (double *s, double *t, int nbf1, int nbf2, int nbf3, int nbf4)
 
 TwoBodyAOInt (const IntegralFactory *intsfactory, int deriv=0)
 
 TwoBodyAOInt (const TwoBodyAOInt &rhs)
 

Protected Attributes

Libint_t libint_
 Libint object. More...
 
Libderiv_t libderiv_
 Libderiv object. More...
 
int max_cart_
 Maximum cartesian class size. More...
 
Fjtfjt_
 Computes the fundamental. More...
 
bool use_shell_pairs_
 Should we use shell pair information? More...
 
double * stack12_
 Stack memory pointer, used in init_shell_pairs, freed in destructor. More...
 
double * stack34_
 
ShellPair ** pairs12_
 Shell pair information. More...
 
ShellPair ** pairs34_
 
int osh1_
 Original shell index requested. More...
 
int osh2_
 
int osh3_
 
int osh4_
 
bool p13p24_
 Were the indices permuted? More...
 
bool p12_
 
bool p34_
 
- Protected Attributes inherited from psi::TwoBodyAOInt
const IntegralFactoryintegral_
 
const std::shared_ptr< BasisSetoriginal_bs1_
 
const std::shared_ptr< BasisSetoriginal_bs2_
 
const std::shared_ptr< BasisSetoriginal_bs3_
 
const std::shared_ptr< BasisSetoriginal_bs4_
 
std::shared_ptr< BasisSetbs1_
 
std::shared_ptr< BasisSetbs2_
 
std::shared_ptr< BasisSetbs3_
 
std::shared_ptr< BasisSetbs4_
 
double * target_full_
 Buffer to hold the final integrals. More...
 
double * target_
 Where to put the next integrals (should be part of target_full_) More...
 
int curr_buff_size_
 Number of integrals in the current buffer. More...
 
double * tformbuf_
 Buffer to hold the transformation intermediates. More...
 
double * source_full_
 Buffer to hold the initially computed integrals. More...
 
double * source_
 Where to put the next temporary integrals (should be part of source_full_) More...
 
int max_unique_quartets_
 Maximum number of unique quartets needed to compute a set of SO's. More...
 
int natom_
 Number of atoms. More...
 
int deriv_
 Derivative level. More...
 
bool force_cartesian_
 Whether to force integrals to be generated in the Cartesian (AO) basis;. More...
 
PermutedOrder permuted_order_
 How the shells were reordered for libint. More...
 
std::vector< ShellPairBlockblocks12_
 The blocking scheme used for the integrals. More...
 
std::vector< ShellPairBlockblocks34_
 

Constructor & Destructor Documentation

TwoElectronInt::TwoElectronInt ( const IntegralFactory integral,
int  deriv = 0,
bool  use_shell_pairs = false 
)

Constructor. Use an IntegralFactory to create this object.

TwoElectronInt::~TwoElectronInt ( )
virtual

Member Function Documentation

size_t TwoElectronInt::compute_quartet ( int  sh1,
int  sh2,
int  sh3,
int  sh4 
)
protected

Computes the ERIs between four shells.

size_t TwoElectronInt::compute_quartet_deriv1 ( int  sh1,
int  sh2,
int  sh3,
int  sh4 
)
protected

Computes the ERI derivatives between four shells.

size_t TwoElectronInt::compute_quartet_deriv2 ( int  sh1,
int  sh2,
int  sh3,
int  sh4 
)
protected

Computes the ERI second derivative between four shells.

size_t TwoElectronInt::compute_shell ( const AOShellCombinationsIterator shellIter)
virtual

Compute ERIs between 4 shells. Result is stored in buffer.

Implements psi::TwoBodyAOInt.

size_t TwoElectronInt::compute_shell ( int  sh1,
int  sh2,
int  sh3,
int  sh4 
)
virtual

Compute ERIs between 4 shells. Result is stored in buffer.

Implements psi::TwoBodyAOInt.

size_t TwoElectronInt::compute_shell_deriv1 ( int  sh1,
int  sh2,
int  sh3,
int  sh4 
)
virtual

Compute ERI derivatives between 4 shells. Result is stored in buffer.

Implements psi::TwoBodyAOInt.

size_t TwoElectronInt::compute_shell_deriv2 ( int  sh1,
int  sh2,
int  sh3,
int  sh4 
)
virtual

Compute ERI second derivatives between 4 sheels. Result is stored in buffer.

Implements psi::TwoBodyAOInt.

void TwoElectronInt::free_shell_pairs12 ( )
protected

Free shell pair information.

void TwoElectronInt::free_shell_pairs34 ( )
protected
void TwoElectronInt::init_shell_pairs12 ( )
protected

Form shell pair information. Must be smart enough to handle arbitrary basis sets.

void TwoElectronInt::init_shell_pairs34 ( )
protected
size_t TwoElectronInt::memory_to_store_shell_pairs ( const std::shared_ptr< BasisSet > &  bs1,
const std::shared_ptr< BasisSet > &  bs2 
)
protected

Evaluates how much memory (in doubles) is needed to store shell pair data.

Member Data Documentation

Fjt* psi::TwoElectronInt::fjt_
protected

Computes the fundamental.

Libderiv_t psi::TwoElectronInt::libderiv_
protected

Libderiv object.

Libint_t psi::TwoElectronInt::libint_
protected

Libint object.

int psi::TwoElectronInt::max_cart_
protected

Maximum cartesian class size.

int psi::TwoElectronInt::osh1_
protected

Original shell index requested.

int psi::TwoElectronInt::osh2_
protected
int psi::TwoElectronInt::osh3_
protected
int psi::TwoElectronInt::osh4_
protected
bool psi::TwoElectronInt::p12_
protected
bool psi::TwoElectronInt::p13p24_
protected

Were the indices permuted?

bool psi::TwoElectronInt::p34_
protected
ShellPair** psi::TwoElectronInt::pairs12_
protected

Shell pair information.

ShellPair ** psi::TwoElectronInt::pairs34_
protected
double* psi::TwoElectronInt::stack12_
protected

Stack memory pointer, used in init_shell_pairs, freed in destructor.

double * psi::TwoElectronInt::stack34_
protected
bool psi::TwoElectronInt::use_shell_pairs_
protected

Should we use shell pair information?


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