# sc_TwoBodyThreeCenterIntV3 - Man Page

This implements electron repulsion integrals involving three centers in the IntV3 library.

## Synopsis

`#include <tbintv3.h>`

Inherits **sc::TwoBodyThreeCenterInt**.

### Public Member Functions

**TwoBodyThreeCenterIntV3** (**Integral** ***integral**, const **Ref**< **GaussianBasisSet** > &b1, const **Ref**< **GaussianBasisSet** > &b2, const **Ref**< **GaussianBasisSet** > &b3, size_t storage)

int **log2_shell_bound** (int, int, int)

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

void **compute_shell** (int, int, int)

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

size_t **storage_used** ()

void **set_integral_storage** (size_t storage)

This storage is used to cache computed integrals.

Public Member Functions inherited from **sc::TwoBodyThreeCenterInt**

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 **nbasis3** () const

Return the number of basis functions on center three.

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.

int **nshell3** () const

Return the number of shells on center three. **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. **Ref**< **GaussianBasisSet** > **basis3** ()

Return the basis set on center three.

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, int)=0

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

virtual int **log2_shell_bound** (int=-1, 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.

Public Member Functions inherited from **sc::RefCount**

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.

int **managed** () const

Return 1 if the object is managed. Otherwise return 0.

Public Member Functions inherited from **sc::Identity****Identifier identifier** ()

Return the **Identifier** for this argument.

### Protected Attributes

**Ref**< **Int2eV3** > **int2ev3_**

Protected Attributes inherited from **sc::TwoBodyThreeCenterInt****Integral** * **integral_****Ref**< **GaussianBasisSet** > **bs1_****Ref**< **GaussianBasisSet** > **bs2_****Ref**< **GaussianBasisSet** > **bs3_**

double * **buffer_**

int **redundant_**

### Additional Inherited Members

Public Types inherited from **sc::TwoBodyThreeCenterInt**

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.

Static Public Attributes inherited from **sc::TwoBodyThreeCenterInt**

static const int **num_tbint_types** = 4

The total number of such types.

Protected Member Functions inherited from **sc::TwoBodyThreeCenterInt****TwoBodyThreeCenterInt** (**Integral** ***integral**, const **Ref**< **GaussianBasisSet** > &bs1, const **Ref**< **GaussianBasisSet** > &bs2, const **Ref**< **GaussianBasisSet** > &bs3)

Protected Member Functions inherited from **sc::RefCount****RefCount** (const **RefCount** &)**RefCount** & **operator=** (const **RefCount** &)

## Detailed Description

This implements electron repulsion integrals involving three centers in the IntV3 library.

## Member Function Documentation

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

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

Implements **sc::TwoBodyThreeCenterInt**.

### int sc::TwoBodyThreeCenterIntV3::log2_shell_bound (int, int, int) [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.

Implements **sc::TwoBodyThreeCenterInt**.

### void sc::TwoBodyThreeCenterIntV3::set_integral_storage (size_t storage) [virtual]

This storage is used to cache computed integrals.

Reimplemented from **sc::TwoBodyThreeCenterInt**.

## Author

Generated automatically by Doxygen for MPQC from the source code.