MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
sc::TwoBodyIntEval 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::TwoBodyIntEval:
sc::RefCount

Public Member Functions

Ref< GaussianBasisSetbasis (size_t C) const
 Return the basis set on center C.
 
virtual TwoBodyOperSet::type type () const =0
 Returns the type of the operator set that this object computes.
 
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.
 
virtual void compute_shell (int, int, int, int)=0
 Given four shell indices, integrals will be computed and placed in the buffer.
 
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.
 
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.
 
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.
 
virtual int redundant () const
 If redundant is true, then keep redundant integrals in the buffer.
 
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.
 
virtual Ref< TwoBodyIntEvalclone ()
 Returns a clone of this.
 
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.
 
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
 Return 1 if the object is managed. Otherwise return 0.
 

Protected Member Functions

 TwoBodyIntEval (Integral *integral, const std::vector< Ref< GaussianBasisSet > > &bs)
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Protected Attributes

Integralintegral_
 
std::vector< Ref< GaussianBasisSet > > bs_
 
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

◆ buffer()

virtual const double * sc::TwoBodyIntEval::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.

◆ clone()

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

Returns a clone of this.

The default implementation throws an exception.

Referenced by sc::TwoBodyIntBatchGeneric< NumCenters >::clone().

◆ cloneable()

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

Return true if the clone member can be called.

The default implementation returns false.

◆ compute_shell()

virtual void sc::TwoBodyIntEval::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.

◆ compute_shell_arrays()

std::pair< std::map< TwoBodyOper::type, const double * >, std::array< unsigned long, 4 > > sc::TwoBodyIntEval::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::TwoBodyIntEval::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.

◆ redundant()

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

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

The default is true.

◆ shell_bound()

double sc::TwoBodyIntEval::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::TwoBodyIntEval::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.

Referenced by sc::TwoBodyIntBatchGeneric< NumCenters >::type().


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

Generated at Wed Sep 25 2024 02:45:36 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.