MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
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.
 
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.
 
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.
 
virtual bool cloneable () const =0
 Return true if the clone member can be called.
 
virtual Ref< TwoBodyIntBatchclone ()=0
 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 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 >.

◆ current_batch()

template<unsigned int NumCenters>
virtual const std::vector< IntTuple > & sc::TwoBodyIntBatch< NumCenters >::current_batch ( ) const
pure virtual

returns the shell indices of the current batch

Implemented in sc::TwoBodyIntBatchGeneric< NumCenters >.

◆ descr()

template<unsigned int NumCenters>
virtual const Ref< TwoBodyOperSetDescr > & sc::TwoBodyIntBatch< NumCenters >::descr ( ) const
pure virtual

return the operator set descriptor

Implemented in sc::TwoBodyIntBatchGeneric< NumCenters >.

◆ next()

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

compute next batch, return true if have another may need to be split into have_next and next 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 Wed Sep 25 2024 02:45:36 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.