---
name: "sc_TwoBodyTwoCenterInt"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_TwoBodyTwoCenterInt"
---

# sc\_TwoBodyTwoCenterInt(3)

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

## 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.

### virtual void sc::TwoBodyTwoCenterInt::set\_integral\_storage (size\_t storage)` [virtual]`

This storage is used to cache computed integrals.

Reimplemented in **sc::TwoBodyTwoCenterIntV3**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
