MPQC  3.0.0-alpha
sc::G12NCLibint2 Class Reference

G12NCLibint2 is a specialization of Int2eLibint2 that computes two-electron integrals specific to explicitly correlated methods which use Gaussian geminals (formulation without commutators). More...

#include <chemistry/qc/libint2/g12nc.h>

Inheritance diagram for sc::G12NCLibint2:
sc::Int2eLibint2 sc::RefCount

Public Member Functions

 G12NCLibint2 (Integral *, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, size_t storage, const ContractedGeminal &gbra, const ContractedGeminal &gket)
 When integrals with 1 geminal are needed, gket should be IntParamsG12::null_geminal.
 
double * buffer (unsigned int t) const
 Returns the location of the buffer with target integrals.
 
void compute_quartet (int *, int *, int *, int *)
 Evaluate the target quartet of integrals.
 
- Public Member Functions inherited from sc::Int2eLibint2
 Int2eLibint2 (Integral *, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, size_t storage)
 
virtual Ref< Int2eLibint2clone ()
 "clones" this engine, all precomputed data is shallow-copied More...
 
void bounds (const Ref< Log2Bounds > &)
 provides the bounds evaluator for log2_bound
 
const Ref< Log2Bounds > & bounds () const
 returns the bounds evaluator for log2_bound
 
size_t storage_used () const
 Reports how much storage is actually used at a given time.
 
int redundant () const
 Whether redundant integrals are returned.
 
void set_redundant (int flag)
 Set redundant flag.
 
int permute () const
 Whether shells can be permuted.
 
void set_permute (int flag)
 Set shell permutation flag.
 
virtual int log2_bound (int s1, int s2, int s3, int s4)
 Computes log2 bound. More...
 
Ref< GaussianBasisSetbasis ()
 
Ref< GaussianBasisSetbasis1 ()
 
Ref< GaussianBasisSetbasis2 ()
 
Ref< GaussianBasisSetbasis3 ()
 
Ref< GaussianBasisSetbasis4 ()
 
- Public Member Functions inherited from sc::RefCount
size_t identifier () const
 Return the unique identifier for this object that can be compared for different objects of different types. More...
 
int lock_ptr () const
 Lock this object.
 
int unlock_ptr () const
 Unlock this object.
 
void use_locks (bool inVal)
 start and stop using locks on this object
 
refcount_t nreference () const
 Return the reference count.
 
refcount_t reference ()
 Increment the reference count and return the new count.
 
refcount_t dereference ()
 Decrement the reference count and return the new count.
 
int managed () const
 
void unmanage ()
 Turn off the reference counting mechanism for this object. More...
 

Static Public Member Functions

static size_t storage_required (const Ref< GaussianBasisSet > &b1, const Ref< GaussianBasisSet > &b2=0, const Ref< GaussianBasisSet > &b3=0, const Ref< GaussianBasisSet > &b4=0)
 

Additional Inherited Members

- Protected Member Functions inherited from sc::Int2eLibint2
void check_storage_ () const
 
void transform_contrquartets_ (double *, double *)
 
void norm_contrcart1_ (double *data)
 
template<unsigned int ntypes>
void norm_contrcart_ (double *data)
 
void sort_contrquartets_to_shellquartet_ (double *, double *)
 
void permute_target_ (double *, double *, int, int, int)
 
void permute_1234_to_1243_ (double *, double *)
 
void permute_1234_to_2134_ (double *, double *)
 
void permute_1234_to_2143_ (double *, double *)
 
void permute_1234_to_3412_ (double *, double *)
 
void permute_1234_to_3421_ (double *, double *)
 
void permute_1234_to_4312_ (double *, double *)
 
void permute_1234_to_4321_ (double *, double *)
 
void get_nonredundant_ints_ (double *, double *, int, int, int)
 
 Int2eLibint2 (const Int2eLibint2 &other)
 shallow-copies other
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 
- Static Protected Member Functions inherited from sc::Int2eLibint2
static size_t storage_required_ (const Ref< GaussianBasisSet > &b1, const Ref< GaussianBasisSet > &b2=0, const Ref< GaussianBasisSet > &b3=0, const Ref< GaussianBasisSet > &b4=0)
 
- Protected Attributes inherited from sc::Int2eLibint2
Integralintegral_
 
Ref< GaussianBasisSetbs1_
 
Ref< GaussianBasisSetbs2_
 
Ref< GaussianBasisSetbs3_
 
Ref< GaussianBasisSetbs4_
 
Ref< Log2Boundsbounds_
 
GaussianShellint_shell1_
 
GaussianShellint_shell2_
 
GaussianShellint_shell3_
 
GaussianShellint_shell4_
 
int permute_
 
int redundant_
 
size_t storage_
 
size_t storage_used_
 
std::vector< double > tformbuf_
 

Detailed Description

G12NCLibint2 is a specialization of Int2eLibint2 that computes two-electron integrals specific to explicitly correlated methods which use Gaussian geminals (formulation without commutators).

G12NCLibint2 can compute integrals with 1 or 2 geminals. All 2-geminal integrals can be represented as 1-geminals integrals of a product of the original 2 geminals. For example, overlap of 2 geminals (g12*g12') is directly reduced to an integral over 1 geminal (G12) whose exponent is a sum of exponents of g12 and g12'. The following integrals over 2 geminals are needed:

  • g12*g12' = G12. Returned as r12_0_g12.
  • [g12,[t1,g12']] = -2 exp(g12) * exp(g12') r12^2 G12. Returned as g12t1g12.
  • Since g12[ti,g12'] - g12'[ti,g12] = [ti,G12] * (exp(g12') - exp(g12))/(exp(g12')+exp(g12)), need to compute (exp(g12') - exp(g12))/(exp(g12')+exp(g12)) * G12. Returned as anti_g12g12.

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

Generated at Sun Jan 26 2020 23:24:05 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.