# OEMMFFInterCoulomb¶

Attention

This API is currently available in C++ and Python.

```
class OEMMFFInterCoulomb : public OEMolPotential::OEMolFunc1
```

The `OEMMFFInterCoulomb` class provides the ability to perform intermolecular
electrostatics calculations. The electrostatic field of a rigid molecule is represented by a
grid which allows rapid evaluation of energies and gradients.

- The following methods are publicly inherited from
`OEFunc0`: - The following methods are publicly inherited from
`OEFunc1`: - The following methods are publicly inherited from
`OEMolFunc`: - The
`OEMMFFInterCoulomb`class defines the following additional public methods:

## Constructors¶

```
OEMMFFInterCoulomb(const OEMMFFInterCoulomb &)
OEMMFFInterCoulomb(const OESystem::OEFixedMultiGrid<float> &grid)
OEMMFFInterCoulomb(const OEChem::OEMolBase &, double minmax[6],
double dielectric=1.0, double exponent=1.0,
double resolution=0.5)
```

Default and copy constructors.

The second constructor constructs an `OEMMFFInterCoulomb` instance from
the existing grid. Grids may be stored in OEBinary format. The dielectric constant,
exponent, and resolution values used to construct the grid initially, may not be altered
for an `OEMMFFInterCoulomb` object constructed that way.
Third constructor constructs an `OEMMFFInterCoulomb` instance based on the
molecule (first argument) from which the electrostatic field will be generated. Partial
charges and hydrogen positions should already be assigned for the molecule prior to
construction of an `OEMMFFInterCoulomb` instance. The second argument is
an array of double precision floating point values which describe the boundaries of the
electrostatic grid. The first three array values are the minimum x, y, and z Cartesian
coordinates, respectively. The final three array values are the maximum x, y and z Cartesian
coordinates. Subsequent calculations
will only include contributions from atoms with coordinates located inside the bounding box.
Atoms which fall outside the bounding box do not contribute to the electrostatic calculation.
The minimum and maximum grid values should therefore be chosen carefully to include
interactions from all reasonable atom coordinates. The third argument is used to set the
dielectric constant used for the electrostatics calculation. The default dielectric constant
is set to 1.0. The dielectric constant used for calculating intermolecular interactions is
independent of the dielectric constant used in intramolecular calculations with the
`OEMMFFCoulomb` object. The fourth argument is used to set the exponent used for
the electrostatics calculation. The default exponent is set to 1.0. The exponent used for
calculating the intermolecular interactions is independent of the exponent used in
the intramolecular performed with the use of the `OEMMFFCoulomb` class.
The final argument specifies the resolution to be used when constructing the electrostatics
grid. Resolution is equivalent to the length of one side of one grid unit (in Angstroms).

## GetGrid¶

```
const OESystem::OEFixedMultiGrid<float> &GetGrid() const
```

Returns a const reference to the grid that represents the Coulomb potential around an active
site of a protein. The returned grid may be written in OEBinary format, and used later to
construct `OEMMFFInterCoulomb` instances using the constructor
which takes a `OEFixedMultiGrid` as an argument.

## Set¶

```
bool Set(const OESystem::OEUnaryPredicate<OEChem::OEAtomBase>&)
```

This method can be used for interaction-level control of the intermolecular electrostatic term. Interactions between two atoms are only included if the test of the binary predicate with both atoms returns `true`. The `Set` method must be called before the `Setup` for it to be effective.