Base class improper force.


Harmonic improper force.


Improper forces.

Improper force classes apply a force and virial on every particle in the simulation state commensurate with the potential energy:

\[U_\mathrm{improper} = \sum_{(i,j,k,l) \in \mathrm{impropers}} U_{ijkl}(\chi)\]

Each improper is defined by an ordered quadruplet of particle tags in the hoomd.State member improper_group. HOOMD-blue does not construct improper groups, users must explicitly define impropers in the initial condition.

Definition of the improper bond between particles i, j, k, and l.

In an improper group (i,j,k,l), \(\chi\) is the signed improper angle between the planes passing through (\(\vec{r}_i, \vec{r}_j, \vec{r}_k\)) and (\(\vec{r}_j, \vec{r}_k, \vec{r}_l\)). This is the same definition used in dihedrals. Typically, researchers use impropers to force molecules to be planar.

Improper force classes assign 1/4 of the potential energy to each of the particles in the improper group:

\[U_m = \frac{1}{4} \sum_{(i,j,k,l) \in \mathrm{impropers}} U_{ijkl}(\chi) [m=i \lor m=j \lor m=k \lor m=l]\]

and similarly for virials.


Bases: Improper

Harmonic improper force.

Harmonic computes forces, virials, and energies on all impropers in the simulation state with:

\[U(r) = \frac{1}{2}k \left( \chi - \chi_{0} \right )^2\]

The parameter of the harmonic impropers for each improper type. The dictionary has the following keys:

  • k (float, required), potential constant \(k\) \([\mathrm{energy}]\).

  • chi0 (float, required), equilibrium angle \(\chi_0\) \([\mathrm{radian}]\).


TypeParameter [improper type, dict]


harmonic =
harmonic.params['A-B-C-D'] = dict(k=1.0, chi0=0)

Bases: Force

Base class improper force.

Improper is the base class for all improper forces.


This class should not be instantiated by users. The class can be used for isinstance or issubclass checks.