MPQC  3.0.0-alpha
sc::TwoBodyInt Class Referenceabstract

This is an abstract base type for classes that compute integrals involving two electrons and 2 functions per electron. More...

#include <chemistry/qc/basis/tbint.h>

Inheritance diagram for sc::TwoBodyInt:
sc::RefCount sc::TwoBodyIntLibint2 sc::TwoBodyIntV3

Public Member Functions

int nbasis () const
 Return the number of basis functions on center one.
 
int nbasis1 () const
 Return the number of basis functions on center one.
 
int nbasis2 () const
 Return the number of basis functions on center two.
 
int nbasis3 () const
 Return the number of basis functions on center three.
 
int nbasis4 () const
 Return the number of basis functions on center four.
 
int nshell () const
 Return the number of shells on center one.
 
int nshell1 () const
 Return the number of shells on center one.
 
int nshell2 () const
 Return the number of shells on center two.
 
int nshell3 () const
 Return the number of shells on center three.
 
int nshell4 () const
 Return the number of shells on center four.
 
Ref< GaussianBasisSetbasis (size_t c=0) const
 Return the basis set on center c. More...
 
Ref< GaussianBasisSetbasis1 () const
 Return the basis set on center one.
 
Ref< GaussianBasisSetbasis2 () const
 Return the basis set on center two.
 
Ref< GaussianBasisSetbasis3 () const
 Return the basis set on center three.
 
Ref< GaussianBasisSetbasis4 () const
 Return the basis set on center four.
 
virtual TwoBodyOperSet::type type () const =0
 Returns the type of the operator set that this object computes. More...
 
virtual const Ref< TwoBodyOperSetDescr > & descr () const =0
 return the operator set descriptor
 
virtual const double * buffer (TwoBodyOper::type type=TwoBodyOper::eri) const
 The computed shell integrals will be put in the buffer returned by this member. More...
 
virtual void compute_shell (int, int, int, int)=0
 Given four shell indices, integrals will be computed and placed in the buffer. More...
 
std::pair< std::map< TwoBodyOper::type, const double * >, std::array< unsigned long, 4 > > compute_shell_arrays (int, int, int, int)
 Given four shell indices, supported two body integral types are computed and returned. More...
 
virtual int log2_shell_bound (int=-1, int=-1, int=-1, int=-1)=0
 Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_shell. More...
 
double shell_bound (int=-1, int=-1, int=-1, int=-1)
 Return the maximum magnitude of any integral in a shell block obtained from compute_shell. More...
 
virtual int redundant () const
 If redundant is true, then keep redundant integrals in the buffer. More...
 
virtual void set_redundant (int i)
 See redundant().
 
virtual void set_integral_storage (size_t storage)
 This storage is used to cache computed integrals.
 
virtual bool cloneable () const
 Return true if the clone member can be called. More...
 
virtual Ref< TwoBodyIntclone ()
 Returns a clone of this. More...
 
Integralintegral () const
 Return the integral factory that was used to create this object.
 
- 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...
 

Protected Member Functions

 TwoBodyInt (Integral *integral, const Ref< GaussianBasisSet > &bs1, const Ref< GaussianBasisSet > &bs2, const Ref< GaussianBasisSet > &bs3, const Ref< GaussianBasisSet > &bs4)
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Protected Attributes

Integralintegral_
 
Ref< GaussianBasisSetbs1_
 
Ref< GaussianBasisSetbs2_
 
Ref< GaussianBasisSetbs3_
 
Ref< GaussianBasisSetbs4_
 
double * buffer_
 
int redundant_
 

Detailed Description

This is an abstract base type for classes that compute integrals involving two electrons and 2 functions per electron.

Member Function Documentation

◆ basis()

Ref<GaussianBasisSet> sc::TwoBodyInt::basis ( size_t  c = 0) const

Return the basis set on center c.

Parameters
[in]ccenter index, in [0,3]; default = 0 (first center)
Returns
(pointer to) the basis set object on the center c

◆ buffer()

virtual const double* sc::TwoBodyInt::buffer ( TwoBodyOper::type  type = TwoBodyOper::eri) const
virtual

The computed shell integrals will be put in the buffer returned by this member.

Some TwoBodyInt specializations have more than one buffer: The type arguments selects which buffer is returned. If the requested type is not supported, then 0 is returned.

Reimplemented in sc::TwoBodyIntLibint2.

Referenced by sc::LocalGBuild< T >::run().

◆ clone()

virtual Ref<TwoBodyInt> sc::TwoBodyInt::clone ( )
virtual

Returns a clone of this.

The default implementation throws an exception.

Reimplemented in sc::TwoBodyIntLibint2, and sc::TwoBodyIntV3.

◆ cloneable()

virtual bool sc::TwoBodyInt::cloneable ( ) const
virtual

Return true if the clone member can be called.

The default implementation returns false.

Reimplemented in sc::TwoBodyIntLibint2, and sc::TwoBodyIntV3.

◆ compute_shell()

virtual void sc::TwoBodyInt::compute_shell ( int  ,
int  ,
int  ,
int   
)
pure virtual

Given four shell indices, integrals will be computed and placed in the buffer.

The first two indices correspond to electron 1 and the second two indices correspond to electron 2.

Implemented in sc::TwoBodyIntLibint2, and sc::TwoBodyIntV3.

Referenced by sc::LocalGBuild< T >::run().

◆ compute_shell_arrays()

std::pair<std::map<TwoBodyOper::type,const double*>,std::array<unsigned long,4> > sc::TwoBodyInt::compute_shell_arrays ( int  ,
int  ,
int  ,
int   
)

Given four shell indices, supported two body integral types are computed and returned.

The first two indices correspond to electron 1 and the second two indices correspond to electron 2. This is used in the python interface where the return type is automatically converted to a map of numpy arrays.

◆ log2_shell_bound()

virtual int sc::TwoBodyInt::log2_shell_bound ( int  = -1,
int  = -1,
int  = -1,
int  = -1 
)
pure virtual

Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_shell.

An index of -1 for any argument indicates any shell.

Implemented in sc::TwoBodyIntLibint2, and sc::TwoBodyIntV3.

Referenced by sc::LocalGBuild< T >::run().

◆ redundant()

virtual int sc::TwoBodyInt::redundant ( ) const
inlinevirtual

If redundant is true, then keep redundant integrals in the buffer.

The default is true.

◆ shell_bound()

double sc::TwoBodyInt::shell_bound ( int  = -1,
int  = -1,
int  = -1,
int  = -1 
)

Return the maximum magnitude of any integral in a shell block obtained from compute_shell.

An index of -1 for any argument indicates any shell.

◆ type()

virtual TwoBodyOperSet::type sc::TwoBodyInt::type ( ) const
pure virtual

Returns the type of the operator set that this object computes.

this function is necessary to describe the computed integrals (their number, symmetries, etc.) and/or to implement cloning.

Implemented in sc::TwoBodyIntLibint2, and sc::TwoBodyIntV3.


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

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