MPQC  3.0.0-alpha
sc::TwoBodyIntBatch< NumCenters > Class Template 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_batch.h>

Inheritance diagram for sc::TwoBodyIntBatch< NumCenters >:
sc::RefCount sc::TwoBodyIntBatchGeneric< NumCenters >

Public Types

typedef detail::tuple< NumCenters, unsigned int > IntTuple
 

Public Member Functions

 TwoBodyIntBatch (Ref< Integral > i)
 
template<typename Seed >
void init (const Ref< IndexRangeIterator< NumCenters > > &n, Seed s=Seed())
 prepare to iterate using seed s TODO JTF implement
 
virtual bool next ()=0
 compute next batch, return true if have another may need to be split into have_next and next TODO JTF implement
 
virtual const std::vector< IntTuple > & current_batch () const =0
 returns the shell indices of the current batch
 
virtual const double * buffer (TwoBodyOper::type type=TwoBodyOper::eri) const =0
 The computed shell integrals will be put in the buffer returned by this member. More...
 
const Ref< GaussianBasisSet > & basis (unsigned int c=0) const
 Return the basis set on center c TODO JTF implement.
 
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 void set_integral_storage (size_t storage)=0
 This storage is used to cache computed integrals. More...
 
virtual bool cloneable () const =0
 Return true if the clone member can be called. More...
 
virtual Ref< TwoBodyIntBatchclone ()=0
 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 Attributes

Ref< Integralintegral_
 
Ref< GaussianBasisSetbs_ [NumCenters]
 
std::vector< double > buffer_
 
std::vector< IntTupleshells_in_buffer_
 
std::vector< IntTuplestart_
 
std::vector< IntTuplefence_
 
size_t buf_cap_
 

Additional Inherited Members

- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Detailed Description

template<unsigned int NumCenters>
class sc::TwoBodyIntBatch< NumCenters >

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

Member Function Documentation

◆ buffer()

template<unsigned int NumCenters>
virtual const double* sc::TwoBodyIntBatch< NumCenters >::buffer ( TwoBodyOper::type  type = TwoBodyOper::eri) const
pure 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. TODO JTF implement

Implemented in sc::TwoBodyIntBatchGeneric< NumCenters >.

◆ clone()

template<unsigned int NumCenters>
virtual Ref<TwoBodyIntBatch> sc::TwoBodyIntBatch< NumCenters >::clone ( )
pure virtual

Returns a clone of this.

The default implementation throws an exception. TODO JTF implement

Implemented in sc::TwoBodyIntBatchGeneric< NumCenters >.

◆ cloneable()

template<unsigned int NumCenters>
virtual bool sc::TwoBodyIntBatch< NumCenters >::cloneable ( ) const
pure virtual

Return true if the clone member can be called.

The default implementation returns false. TODO JTF implement

Implemented in sc::TwoBodyIntBatchGeneric< NumCenters >.

◆ set_integral_storage()

template<unsigned int NumCenters>
virtual void sc::TwoBodyIntBatch< NumCenters >::set_integral_storage ( size_t  storage)
pure virtual

This storage is used to cache computed integrals.

TODO: do we really want to allocate by size_t, instead of number of elements?

Implemented in sc::TwoBodyIntBatchGeneric< NumCenters >.

◆ type()

template<unsigned int NumCenters>
virtual TwoBodyOperSet::type sc::TwoBodyIntBatch< NumCenters >::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::TwoBodyIntBatchGeneric< NumCenters >.


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.