MPQC
3.0.0-alpha
|
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>
Public Member Functions | |
Ref< GaussianBasisSet > | basis (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. 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< TwoBodyIntEval > | clone () |
Returns a clone of this. More... | |
Integral * | integral () 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 | |
TwoBodyIntEval (Integral *integral, const std::vector< Ref< GaussianBasisSet > > &bs) | |
Protected Member Functions inherited from sc::RefCount | |
RefCount (const RefCount &) | |
RefCount & | operator= (const RefCount &) |
Protected Attributes | |
Integral * | integral_ |
std::vector< Ref< GaussianBasisSet > > | bs_ |
double * | buffer_ |
int | redundant_ |
This is an abstract base type for classes that compute integrals involving two electrons and 2 functions per electron.
|
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.
|
virtual |
Returns a clone of this.
The default implementation throws an exception.
Referenced by sc::TwoBodyIntBatchGeneric< NumCenters >::clone().
|
virtual |
Return true if the clone member can be called.
The default implementation returns false.
|
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.
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.
|
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.
|
inlinevirtual |
If redundant is true, then keep redundant integrals in the buffer.
The default is true.
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.
|
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().