Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
psi::SimintTwoElectronInt Class Reference

#include <siminteri.h>

Inheritance diagram for psi::SimintTwoElectronInt:
psi::TwoBodyAOInt psi::SimintERI

Public Types

typedef std::vector
< simint_multi_shellpair > 
typedef std::vector< simint_shell > ShellVec

Public Member Functions

 SimintTwoElectronInt (const IntegralFactory *integral, int deriv=0, bool use_shell_pairs=false)
 ~SimintTwoElectronInt () override
size_t compute_shell (const AOShellCombinationsIterator &) override
 Compute ERIs between 4 shells. Result is stored in buffer. More...
size_t compute_shell (int, int, int, int) override
 Compute the integrals. More...
void compute_shell_blocks (int shellpair1, int shellpair2, int npair1=-1, int npair2=-1) override
size_t compute_shell_deriv1 (int, int, int, int) override
 Compute the first derivatives. More...
size_t compute_shell_deriv2 (int, int, int, int) override
 Compute the second derivatives. 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 () const
 Get optimal blocks of shell pairs for centers 1 & 2. More...
std::vector< ShellPairBlockget_blocks34 () const
 Get optimal blocks of shell pairs for centers 3 & 4. More...
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

 SimintTwoElectronInt (const SimintTwoElectronInt &rhs)
- Protected Member Functions inherited from psi::TwoBodyAOInt
void create_blocks ()
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)

Private Member Functions

void create_blocks (void)

Private Attributes

int maxam_
size_t batchsize_
size_t allwork_size_
bool bra_same_
bool ket_same_
bool braket_same_
double * allwork_
double * sharedwork_
std::shared_ptr< const ShellVecshells1_
std::shared_ptr< const ShellVecshells2_
std::shared_ptr< const ShellVecshells3_
std::shared_ptr< const ShellVecshells4_
std::shared_ptr< const
std::shared_ptr< const
std::shared_ptr< const
std::shared_ptr< const

Additional Inherited Members

- 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_

Member Typedef Documentation

typedef std::vector<simint_multi_shellpair> psi::SimintTwoElectronInt::ShellPairVec
typedef std::vector<simint_shell> psi::SimintTwoElectronInt::ShellVec

Constructor & Destructor Documentation

psi::SimintTwoElectronInt::SimintTwoElectronInt ( const IntegralFactory integral,
int  deriv = 0,
bool  use_shell_pairs = false 
psi::SimintTwoElectronInt::~SimintTwoElectronInt ( )
psi::SimintTwoElectronInt::SimintTwoElectronInt ( const SimintTwoElectronInt rhs)

Member Function Documentation

size_t psi::SimintTwoElectronInt::compute_shell ( const AOShellCombinationsIterator )

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

Implements psi::TwoBodyAOInt.

size_t psi::SimintTwoElectronInt::compute_shell ( int  ,
int  ,
int  ,

Compute the integrals.

Implements psi::TwoBodyAOInt.

void psi::SimintTwoElectronInt::compute_shell_blocks ( int  shellpair12,
int  shellpair34,
int  npair12 = -1,
int  npair34 = -1 

Compute integrals for two blocks

The indices shellpair12 and shellpair34 refer to the indices in the vectors returned by get_blocks12() and get_blocks34(), respectively.

The parameters npair12 and npair34 refer to how many of the shell pairs of centers 1 & 2 and 3 & 4, respectively, to actually calculate. This can be used to compute only triangular parts, for example. A value of -1 means to calculate all that are part of the shell pair batch.

Reimplemented from psi::TwoBodyAOInt.

size_t psi::SimintTwoElectronInt::compute_shell_deriv1 ( int  ,
int  ,
int  ,

Compute the first derivatives.

Implements psi::TwoBodyAOInt.

size_t psi::SimintTwoElectronInt::compute_shell_deriv2 ( int  ,
int  ,
int  ,

Compute the second derivatives.

Implements psi::TwoBodyAOInt.

void psi::SimintTwoElectronInt::create_blocks ( void  )

Member Data Documentation

double* psi::SimintTwoElectronInt::allwork_
size_t psi::SimintTwoElectronInt::allwork_size_
size_t psi::SimintTwoElectronInt::batchsize_
bool psi::SimintTwoElectronInt::bra_same_
bool psi::SimintTwoElectronInt::braket_same_
bool psi::SimintTwoElectronInt::ket_same_
int psi::SimintTwoElectronInt::maxam_
std::shared_ptr<const ShellPairVec> psi::SimintTwoElectronInt::multi_spairs_bra_
std::shared_ptr<const ShellPairVec> psi::SimintTwoElectronInt::multi_spairs_ket_
double* psi::SimintTwoElectronInt::sharedwork_
std::shared_ptr<const ShellVec> psi::SimintTwoElectronInt::shells1_
std::shared_ptr<const ShellVec> psi::SimintTwoElectronInt::shells2_
std::shared_ptr<const ShellVec> psi::SimintTwoElectronInt::shells3_
std::shared_ptr<const ShellVec> psi::SimintTwoElectronInt::shells4_
std::shared_ptr<const ShellPairVec> psi::SimintTwoElectronInt::single_spairs_bra_
std::shared_ptr<const ShellPairVec> psi::SimintTwoElectronInt::single_spairs_ket_

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