DreidingAnglePotential

class DreidingAnglePotential(particleType1, particleType2, particleType3, A, B, r_cut)

Constructor of the potential.

Parameters:
  • particleType1 (ParticleType or ParticleIdentifier) – Identifier of the first particle type.
  • particleType2 (ParticleType or ParticleIdentifier) – Identifier of the second particle type (central particle when calculating angles)
  • particleType3 (ParticleType or ParticleIdentifier) – Identifier of the second particle type.
  • A (PhysicalQuantity of type energy) – Potential parameter.
  • B (PhysicalQuantity of type length) – Potential parameter.
  • r_cut (PhysicalQuantity of type length) – Cutoff radius
getAllParameterNames()

Return the names of all used parameters as a list.

getAllParameters()

Return all parameters of this potential and their current values as a <parameterName / parameterValue> dictionary.

static getDefaults()

Get the default parameters of this potential and return them in form of a dictionary of <parameter name, default value> key-value pairs.

getParameter(parameterName)

Get the current value of the parameter parameterName.

setCutoff(r_cut)

Sets the cutoff radius for the given potential

setParameter(parameterName, value)

Set the parameter parameterName to the given value.

Parameters:
  • parameterName (str) – The name of the parameter that will be modified.
  • value – The new value that will be assigned to the parameter parameterName.

Usage Examples

Define a hydrogen-bond potential for the O-H–O hydrogen bond in water.

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
potentialSet = TremoloXPotentialSet(name='Dreiding_hbond_angle')
potentialSet.addParticleType(ParticleType.fromElement(Oxygen))
potentialSet.addParticleType(ParticleType.fromElement(Hydrogen))

_potential = DreidingAnglePotential(
	particleType1=ParticleIdentifier('O', []),
	particleType2=ParticleIdentifier('H', []),
	particleType2=ParticleIdentifier('O', []),
	A=7.0*kiloCaloriePerMol,
	B=2.75*Angstrom,
	r_cut=7.5*Angstrom,
)
potentialSet.addPotential(_potential)
calculator = TremoloXCalculator(parameters=potentialSet)

dreiding_angle.py

Notes

The Dreiding angle potential was originally introduced in [MOG90] to model hydrogen bonding interactions between hydrogen bond donors and acceptors. It has the potential form

\[\begin{split}\begin{align*} U &= \sum_i \sum_{j\neq i}\sum_{k > i\atop k\neq j} U_{ijk} \\ U_{ijk} &= A_{ijk}\left[5\left(\frac{B_{ijk}}{r_{ik}}\right)^{12} - 6\left(\frac{B_{ijk}}{r_{ik}}\right)^{10}\right] \min(0, \cos(\theta_{ijk}))^4. \end{align*}\end{split}\]

The \(\min(0, \cos(\theta_{ijk}))\) part of this equation excludes all triple terms where the angle between the three particles is smaller than 90 degrees (and thus \(\cos(\theta_{ijk})>0\)). This was the expression used in the original paper ([MOG90]).

[MOG90](1, 2) Stephen L. Mayo, Barry D. Olafson, and William A. Goddard. Dreiding: a generic force field for molecular simulations. J. Phys. Chem., 94(26):8897–8909, 1990. doi:10.1021/j100389a010.