# sc_TwoBodyTwoCenterInt (3) - Linux Manuals

## NAME

sc::TwoBodyTwoCenterInt -

This is an abstract base type for classes that compute integrals involving two electrons in two Gaussian functions.

## SYNOPSIS

#include <tbint.h>

Inherits **sc::RefCount**.

Inherited by **sc::TwoBodyTwoCenterIntV3**.

### Public Types

enum **tbint_type** { **eri** = 0, **r12** = 1, **r12t1** = 2, **r12t2** = 3 }

*Types of two-body integrals that ***TwoBodyInt** understands: eri stands for electron repulsion integral, r12 stands for integrals of r12 operator, r12t1 and r12t2 are integrals of [r12,T1] and [r12,T2] operators.

### Public Member Functions

int **nbasis** () const

*Return the number of basis functions on center one. *

int **nbasis1** () const

*Return the number of basis functions on center one. *

int **nbasis2** () const

*Return the number of basis functions on center two. *

int **nshell** () const

*Return the number of shells on center one. *

int **nshell1** () const

*Return the number of shells on center one. *

int **nshell2** () const

*Return the number of shells on center two. *

**Ref**< **GaussianBasisSet** > **basis** ()

*Return the basis set on center one. *

**Ref**< **GaussianBasisSet** > **basis1** ()

*Return the basis set on center one. *

**Ref**< **GaussianBasisSet** > **basis2** ()

*Return the basis set on center two. *

virtual const double * **buffer** (**tbint_type** type=eri) const

*The computed shell integrals will be put in the buffer returned by this member. *

virtual void **compute_shell** (int, int)=0

*Given four shell indices, integrals will be computed and placed in the buffer. *

virtual int **log2_shell_bound** (int=-1, int=-1)=0

*Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_shell. *

int **redundant** () const

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

void **set_redundant** (int i)

*See ***redundant()**.

virtual void **set_integral_storage** (size_t storage)

*This storage is used to cache computed integrals. *

**Integral** * **integral** () const

*Return the integral factory that was used to create this object. *

### Static Public Attributes

static const int **num_tbint_types** = 4

*The total number of such types. *

### Protected Member Functions

**TwoBodyTwoCenterInt** (**Integral** *integral, const **Ref**< **GaussianBasisSet** > &bs1, const **Ref**< **GaussianBasisSet** > &bs2)

### Protected Attributes

**Integral** * **integral_**

**Ref**< **GaussianBasisSet** > **bs1_**

**Ref**< **GaussianBasisSet** > **bs2_**

double * **buffer_**

int **redundant_**

## Detailed Description

This is an abstract base type for classes that compute integrals involving two electrons in two Gaussian functions.

## Member Function Documentation

### virtual const double* sc::TwoBodyTwoCenterInt::buffer (**tbint_type** type = 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.

### virtual void sc::TwoBodyTwoCenterInt::compute_shell (int, int) [pure virtual]

Given four shell indices, integrals will be computed and placed in the buffer. The first index corresponds to electron 1 and the second index corresponds to electron 2.

Implemented in **sc::TwoBodyTwoCenterIntV3**.

### virtual int sc::TwoBodyTwoCenterInt::log2_shell_bound (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.

Implemented in **sc::TwoBodyTwoCenterIntV3**.

### int sc::TwoBodyTwoCenterInt::redundant () const [inline]

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

## Author

Generated automatically by Doxygen for MPQC from the source code.