28 #ifndef _chemistry_qc_basis_obint_h
29 #define _chemistry_qc_basis_obint_h
31 #include <util/ref/ref.h>
32 #include <util/state/state.h>
33 #include <util/container/stdarray.h>
34 #include <math/scmat/matrix.h>
35 #include <math/scmat/elemop.h>
37 #include <chemistry/qc/basis/gaussbas.h>
38 #include <chemistry/qc/basis/dercent.h>
39 #include <chemistry/qc/basis/intparams.h>
94 const double *
buffer()
const;
117 Integral *integral()
const {
return integral_; }
161 const double *
buffer()
const;
179 Integral *integral()
const {
return integral_; }
217 void init(
const double * buffer,
int ishell,
int jshell,
218 int ioff,
int joff,
int nfunci,
int nfuncj,
int redund=0,
221 void start() { icur=jcur=index=0; }
222 int ready()
const {
return (icur < iend); }
225 if (jcur < ((e12)?(icur):((jend)-1))) {
237 int current_i()
const {
return icur; }
238 int current_j()
const {
return jcur; }
240 int i()
const {
return icur+ioffset; }
241 int j()
const {
return jcur+joffset; }
243 int nint()
const {
return iend*jend; }
245 double val()
const {
return buf[index]*scale_; }
273 virtual void start(
int ist=0,
int jst=0,
int ien=0,
int jen=0);
276 int ready()
const {
return (icur < iend); }
278 int ishell()
const {
return icur; }
279 int jshell()
const {
return jcur; }
281 int ijshell()
const {
return ij; }
283 int redundant()
const {
return redund; }
284 void set_redundant(
int i) { redund=i; }
286 virtual double scale()
const;
292 virtual bool cloneable()
const;
340 int has_side_effects();
341 int has_side_effects_in_arg1();
342 int has_side_effects_in_arg2();
403 const double *
buffer()
const;
407 virtual void compute_shell(
int ish,
int jsh,
int center) = 0;
451 const double *
buffer()
const;
virtual bool cloneable() const
Return true if the clone member can be called.
virtual void reinitialize()
This is called for one body integrals that take data to let them know that the data they reference ha...
int nshell() const
Return the number of shells on center one.
int nbasis() const
Return the number of basis functions on center one.
int nbasis() const
Returns the number of basis functions on center one.
OneBodyOneCenterInt is an abstract base class for objects that compute integrals between two basis fu...
Definition: obint.h:124
int has_side_effects()
By default this returns nonzero.
const double * buffer() const
The computed shell integrals will be put in the buffer returned by this member.
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
virtual void reinitialize()
This is called for one body integrals that take data to let them know that the data they reference ha...
The SCMatrixLTriBlock describes a triangular piece of a matrix.
Definition: block.h:253
A template class that maintains references counts.
Definition: ref.h:361
int nbasis2() const
Return the number of basis functions on the center two.
The SCMatrixRectBlock describes a rectangular piece of a matrix.
Definition: block.h:183
int nbasis1() const
Return the number of basis functions on center one.
int nshell() const
Return the number of shells on center one.
Integral * integral() const
Return the integral factory that was used to create this object.
Definition: obint.h:414
const double * buffer() const
Returns the buffer where the integrals are placed.
virtual bool cloneable() const
Return true if the clone member can be called.
The SCMatrixLTriSubBlock describes a triangular subblock of a matrix.
Definition: block.h:288
int nbasis() const
Return the number of basis functions on center one.
int nbasis1() const
Return the number of basis functions on the center one.
int nbasis() const
Returns the number of basis functions on center one.
Ref< GaussianBasisSet > basis2() const
Return the basis set on the center two.
virtual void reinitialize()
This is called for one body integrals that take data to let them know that the data they reference ha...
const double * buffer() const
Returns the buffer where the integrals are placed.
Objects of class SCElementOp are used to perform operations on the elements of matrices.
Definition: elemop.h:94
int nshell2() const
Return the number of shells on center two.
virtual void compute_shell(int)=0
Computes the integrals for basis functions on the given shell.
virtual void compute_shell(int ish, int jsh, int center)=0
Compute the derivative integrals with respect to the given center and place the result in the buffer ...
Integral * integral() const
Return the integral factory that was used to create this object.
Definition: obint.h:462
virtual Ref< OneBodyOneCenterInt > clone()
Returns a clone of this.
virtual void compute_shell(int, int)=0
Computes the integrals between basis functions in the given shell pair.
int nbasis1() const
Returns the number of basis functions on the center one.
virtual void reinitialize()
This is called for one body integrals that take data to let them know that the data they reference ha...
int nbasis1() const
Returns the number of basis functions on the center one.
Ref< GaussianBasisSet > basis1() const
Return the basis set on the center one.
OneBodyInt is an abstract base class for objects that compute integrals between two basis functions.
Definition: obint.h:49
int nshell1() const
Return the number of shells on center one.
Ref< GaussianBasisSet > basis1() const
Return the basis set on center one.
Ref< GaussianBasisSet > basis() const
Return the basis set on center one.
Ref< SCElementOp > clone()
Returns a clone of this object.
The Integral abstract class acts as a factory to provide objects that compute one and two electron in...
Definition: integral.h:111
virtual void compute_shell(int ish, int center)=0
Compute the derivative integrals with respect to the given center and place the result in the buffer ...
bool cloneable() const
Returns true if this SCElementOp supports the clone() member.
const double * buffer() const
The computed shell integrals will be put in the buffer returned by this member.
OneBodyDerivInt is an abstract base class for objects that compute one body derivative integrals.
Definition: obint.h:350
The SCMatrixBlockIter class is used to described iterates that loop through the elements in a block.
Definition: blkiter.h:46
std::pair< const double *, std::array< unsigned long, 2 > > compute_shell_array(int, int)
Computes the integrals between basis functions in the given shell pair.
int nshell1() const
Return the number of shells on the center one.
int nshell2() const
Return the number of shells on the center two.
Ref< GaussianBasisSet > basis() const
Return the basis set on center one.
void process_spec_rect(SCMatrixRectBlock *)
Matrices should call these members when the type of block is known.
Ref< GaussianBasisSet > basis1() const
Return the basis set on the center one.
int nshell() const
Return the number of shells on center one.
int nshell1() const
Return the number of shells on center one.
int nshell() const
Return the number of shells on center one.
The SCMatrixRectSubBlock describes a rectangular piece of a matrix.
Definition: block.h:219
int nshell1() const
Return the number of shells on the center one.
The SCElementOp3 class is very similar to the SCElementOp class except that a triplet of blocks is tr...
Definition: elemop.h:181
The base class for all reference counted objects.
Definition: ref.h:192
Ref< GaussianBasisSet > basis(size_t c) const
Return the basis set on center one.
OneBodyOneCenterDerivInt is an abstract base class for objects that compute one body derivative integ...
Definition: obint.h:421
Ref< GaussianBasisSet > basis2() const
Return the basis set on center two.
Ref< GaussianBasisSet > basis(size_t c) const
Return the basis set on center one.
virtual Ref< OneBodyInt > clone()
Returns a clone of this.
void process(SCMatrixBlockIter &)
This is the fallback routine to process blocks and is called by process_spec members that are not ove...
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
void compute_shell(int)
Computes the integrals for basis functions on the given shell.
int nbasis2() const
Returns the number of basis functions on the center two.
Generated at Sun Jan 26 2020 23:23:57 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.