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

# sc\_IntegralV3(3)

IntegralV3 computes integrals between Gaussian basis functions.

## NAME

sc::IntegralV3 - **IntegralV3** computes integrals between Gaussian basis functions.

## SYNOPSIS

`#include <intv3.h>`

Inherits **sc::Integral**.

### Public Member Functions

**IntegralV3** (const **Ref**\< **GaussianBasisSet** \> &b1=0, const **Ref**\< **GaussianBasisSet** \> &b2=0, const **Ref**\< **GaussianBasisSet** \> &b3=0, const **Ref**\< **GaussianBasisSet** \> &b4=0)\
 **IntegralV3** (**StateIn** &)\
 **IntegralV3** (const **Ref**\< **KeyVal** \> &)\
 void **save\_data\_state** (**StateOut** &)\
 Save the base classes (with save\_data\_state) and the members in the same order that the **StateIn** CTOR initializes them.  **Integral** \* **clone** ()\
 Clones the given **Integral** factory. The new factory may need to have set\_basis and set\_storage to be called on it.  **CartesianIter** \* **new\_cartesian\_iter** (int)\
 Return a **CartesianIter** object.  **RedundantCartesianIter** \* **new\_redundant\_cartesian\_iter** (int)\
 Return a **RedundantCartesianIter** object.  **RedundantCartesianSubIter** \* **new\_redundant\_cartesian\_sub\_iter** (int)\
 Return a **RedundantCartesianSubIter** object.  **SphericalTransformIter** \* **new\_spherical\_transform\_iter** (int l, int inv=0, int subl=-1)\
 Return a **SphericalTransformIter** object.  const **SphericalTransform** \* **spherical\_transform** (int l, int inv=0, int subl=-1)\
 Return a **SphericalTransform** object.  **Ref**\< **OneBodyInt** \> **overlap** ()\
 Return a **OneBodyInt** that computes the overlap.  **Ref**\< **OneBodyInt** \> **kinetic** ()\
 Return a **OneBodyInt** that computes the kinetic energy.  **Ref**\< **OneBodyInt** \> **point\_charge** (const **Ref**\< **PointChargeData** \> &=0)\
 Return a **OneBodyInt** that computes the integrals for interactions with point charges.  **Ref**\< **OneBodyOneCenterInt** \> **point\_charge1** (const **Ref**\< **PointChargeData** \> &)\
 Return a **OneBodyInt** that computes the integrals for interactions with point charges.  **Ref**\< **OneBodyInt** \> **nuclear** ()\
 Return a **OneBodyInt** that computes the nuclear repulsion integrals.  **Ref**\< **OneBodyInt** \> **hcore** ()\
 Return a **OneBodyInt** that computes the core Hamiltonian integrals.  **Ref**\< **OneBodyInt** \> **efield\_dot\_vector** (const **Ref**\< **EfieldDotVectorData** \> &=0)\
 Return a **OneBodyInt** that computes the electric field integrals dotted with a given vector.  **Ref**\< **OneBodyInt** \> **dipole** (const **Ref**\< **DipoleData** \> &=0)\
 Return a **OneBodyInt** that computes electric dipole moment integrals.  **Ref**\< **OneBodyInt** \> **quadrupole** (const **Ref**\< **DipoleData** \> &=0)\
 Return a **OneBodyInt** that computes electric quadrupole moment integrals.  **Ref**\< **OneBodyDerivInt** \> **overlap\_deriv** ()\
 Return a **OneBodyDerivInt** that computes overlap derivatives.  **Ref**\< **OneBodyDerivInt** \> **kinetic\_deriv** ()\
 Return a **OneBodyDerivInt** that computes kinetic energy derivatives.  **Ref**\< **OneBodyDerivInt** \> **nuclear\_deriv** ()\
 Return a **OneBodyDerivInt** that computes nuclear repulsion derivatives.  **Ref**\< **OneBodyDerivInt** \> **hcore\_deriv** ()\
 Return a **OneBodyDerivInt** that computes core Hamiltonian derivatives.  **Ref**\< **TwoBodyInt** \> **electron\_repulsion** ()\
 Return a **TwoBodyInt** that computes electron repulsion integrals.  **Ref**\< **TwoBodyTwoCenterInt** \> **electron\_repulsion2** ()\
 Return a **TwoBodyTwoCenterInt** that computes electron repulsion integrals.  **Ref**\< **TwoBodyThreeCenterInt** \> **electron\_repulsion3** ()\
 Return a **TwoBodyThreeCenterInt** that computes electron repulsion integrals.  **Ref**\< **TwoBodyDerivInt** \> **electron\_repulsion\_deriv** ()\
 Return a **TwoBodyDerivInt** that computes electron repulsion derivatives.  void **set\_basis** (const **Ref**\< **GaussianBasisSet** \> &b1, const **Ref**\< **GaussianBasisSet** \> &b2=0, const **Ref**\< **GaussianBasisSet** \> &b3=0, const **Ref**\< **GaussianBasisSet** \> &b4=0)\
 Set the basis set for each center.

### Additional Inherited Members

## Detailed Description

**IntegralV3** computes integrals between Gaussian basis functions.

## Member Function Documentation

### Integral \* sc::IntegralV3::clone ()` [virtual]`

Clones the given **Integral** factory. The new factory may need to have set\_basis and set\_storage to be called on it.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::dipole (const Ref\< DipoleData \> & = `0`)` [virtual]`

Return a **OneBodyInt** that computes electric dipole moment integrals. The canonical order of integrals in a set is x, y, z.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::efield\_dot\_vector (const Ref\< EfieldDotVectorData \> & = `0`)` [virtual]`

Return a **OneBodyInt** that computes the electric field integrals dotted with a given vector.

Implements **sc::Integral**.

### Ref\< TwoBodyInt \> sc::IntegralV3::electron\_repulsion ()` [virtual]`

Return a **TwoBodyInt** that computes electron repulsion integrals.

Implements **sc::Integral**.

### Ref\< TwoBodyTwoCenterInt \> sc::IntegralV3::electron\_repulsion2 ()` [virtual]`

Return a **TwoBodyTwoCenterInt** that computes electron repulsion integrals. If this is not re-implemented it will throw.

Reimplemented from **sc::Integral**.

### Ref\< TwoBodyThreeCenterInt \> sc::IntegralV3::electron\_repulsion3 ()` [virtual]`

Return a **TwoBodyThreeCenterInt** that computes electron repulsion integrals. If this is not re-implemented it will throw.

Reimplemented from **sc::Integral**.

### Ref\< TwoBodyDerivInt \> sc::IntegralV3::electron\_repulsion\_deriv ()` [virtual]`

Return a **TwoBodyDerivInt** that computes electron repulsion derivatives.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::hcore ()` [virtual]`

Return a **OneBodyInt** that computes the core Hamiltonian integrals.

Implements **sc::Integral**.

### Ref\< OneBodyDerivInt \> sc::IntegralV3::hcore\_deriv ()` [virtual]`

Return a **OneBodyDerivInt** that computes core Hamiltonian derivatives.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::kinetic ()` [virtual]`

Return a **OneBodyInt** that computes the kinetic energy.

Implements **sc::Integral**.

### Ref\< OneBodyDerivInt \> sc::IntegralV3::kinetic\_deriv ()` [virtual]`

Return a **OneBodyDerivInt** that computes kinetic energy derivatives.

Implements **sc::Integral**.

### CartesianIter \* sc::IntegralV3::new\_cartesian\_iter (int)` [virtual]`

Return a **CartesianIter** object. The caller is responsible for freeing the object.

Implements **sc::Integral**.

### RedundantCartesianIter \* sc::IntegralV3::new\_redundant\_cartesian\_iter (int)` [virtual]`

Return a **RedundantCartesianIter** object. The caller is responsible for freeing the object.

Implements **sc::Integral**.

### RedundantCartesianSubIter \* sc::IntegralV3::new\_redundant\_cartesian\_sub\_iter (int)` [virtual]`

Return a **RedundantCartesianSubIter** object. The caller is responsible for freeing the object.

Implements **sc::Integral**.

### SphericalTransformIter \* sc::IntegralV3::new\_spherical\_transform\_iter (int l, int inv = `0`, int subl = `-1`)` [virtual]`

Return a **SphericalTransformIter** object. The caller is responsible for freeing the object.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::nuclear ()` [virtual]`

Return a **OneBodyInt** that computes the nuclear repulsion integrals. Charges from the atoms on center one are used. If center two is not identical to center one, then the charges on center two are included as well. \

Implements **sc::Integral**.

### Ref\< OneBodyDerivInt \> sc::IntegralV3::nuclear\_deriv ()` [virtual]`

Return a **OneBodyDerivInt** that computes nuclear repulsion derivatives.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::overlap ()` [virtual]`

Return a **OneBodyInt** that computes the overlap.

Implements **sc::Integral**.

### Ref\< OneBodyDerivInt \> sc::IntegralV3::overlap\_deriv ()` [virtual]`

Return a **OneBodyDerivInt** that computes overlap derivatives.

Implements **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::point\_charge (const Ref\< PointChargeData \> & = `0`)` [virtual]`

Return a **OneBodyInt** that computes the integrals for interactions with point charges.

Implements **sc::Integral**.

### Ref\< OneBodyOneCenterInt \> sc::IntegralV3::point\_charge1 (const Ref\< PointChargeData \> &)` [virtual]`

Return a **OneBodyInt** that computes the integrals for interactions with point charges.

Reimplemented from **sc::Integral**.

### Ref\< OneBodyInt \> sc::IntegralV3::quadrupole (const Ref\< DipoleData \> & = `0`)` [virtual]`

Return a **OneBodyInt** that computes electric quadrupole moment integrals. The canonical order of integrals in a set is x^2, xy, xz, y^2, yz, z^2.

Implements **sc::Integral**.

### void sc::IntegralV3::save\_data\_state (StateOut &)` [virtual]`

Save the base classes (with save\_data\_state) and the members in the same order that the **StateIn** CTOR initializes them. This must be implemented by the derived class if the class has data.

Reimplemented from **sc::Integral**.

### void sc::IntegralV3::set\_basis (const Ref\< GaussianBasisSet \> & b1, const Ref\< GaussianBasisSet \> & b2 = `0`, const Ref\< GaussianBasisSet \> & b3 = `0`, const Ref\< GaussianBasisSet \> & b4 = `0`)` [virtual]`

Set the basis set for each center.

Reimplemented from **sc::Integral**.

### const SphericalTransform \* sc::IntegralV3::spherical\_transform (int l, int inv = `0`, int subl = `-1`)` [virtual]`

Return a **SphericalTransform** object. The pointer is only valid while this **Integral** object is valid.

Implements **sc::Integral**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
