DreidingAnglePotential

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

Constructor of the potential.

This potential is not symmetric, i.e. activating particleType1-particleType2-particleType3 interactions will not also activate particleType3-particleType2-particleType1 interactions.

Parameters:
  • particleType1 (ParticleType or ParticleIdentifier) – Identifier of the donator particle type.

  • particleType2 (ParticleType or ParticleIdentifier) – Identifier of the hydrogen like particle type (central particle when calculating angles)

  • particleType3 (ParticleType or ParticleIdentifier) – Identifier of tehe acceptor particle type.

  • A (PhysicalQuantity of type energy) – Potential parameter.

  • B (PhysicalQuantity of type length) – Potential parameter.

  • r_cut (PhysicalQuantity of type length) – Cutoff radius

classmethod 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.

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 [1] 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 ([1]).