VessalPotential

class VessalPotential(particleType1, particleType2, particleType3, k, theta0, rho1, rho2, rmax1, rmax2, r_cut=None)

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. This is the central particle (the vertex) when calculating the angle.
  • particleType3 (ParticleType or ParticleIdentifier) – Identifier of the third particle type.
  • k (PhysicalQuantity of type energy) – Potential parameter.
  • theta0 (PhysicalQuantity of type angle) – Potential parameter
  • rho1 (PhysicalQuantity of type length) – Potential parameter.
  • rho2 (PhysicalQuantity of type length) – Potential parameter.
  • rmax1 (PhysicalQuantity of type length) – Potential parameter.
  • rmax2 (PhysicalQuantity of type length) – Potential parameter.
  • r_cut – Deprecated. This parameter is not used anymore. Please use rmax1 and rmax2 to set the 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)

Set the parameter r_cut.

Parameters:r_cut – Deprecated. This parameter is not used anymore. Please use rmax1 and rmax2 to set the cutoff radius.
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.
setRho1(rho1)

Set the parameter rho1.

Parameters:rho1 (PhysicalQuantity of type length) – Potential parameter.
setRho2(rho2)

Set the parameter rho2.

Parameters:rho2 (PhysicalQuantity of type length) – Potential parameter.
setRmax1(rmax1)

Set the parameter rmax1.

Parameters:rmax1 (PhysicalQuantity of type length) – Potential parameter.
setRmax2(rmax2)

Set the parameter rmax2.

Parameters:rmax2 (PhysicalQuantity of type length) – Potential parameter.
setTheta0(theta0)

Set the parameter theta0.

Parameters:theta0 (PhysicalQuantity of type angle) – Potential parameter
setk(k)

Set the parameter k.

Parameters:k (PhysicalQuantity of type energy) – Potential parameter.

Notes

The VessalPotential [Ves94] defines a screened three-body potential of the form

\[V_{ijk}(r_{ij}, r_{ik}, \theta_{ijk}) = \frac{k}{8(\theta_{ijk} - \pi)^2} \left[(\theta_0 - \pi)^2 - (\theta_{ijk} - \pi)^2 \right ]^2 \exp \left[-(r_{ij}/\rho_1 + r_{ik}/\rho_2)\right] \, .\]

At long distances this potential is brought smoothly to zero between the inner cutoff r_i and the outer cutoff r_cut, using a 5th order spline function. This ensures that there are no discontinuites in the forces as atoms are brought closer together, and that the energy is properly conserved. The applied potential \(U(r)\) is given as:

\[U(r) = V_{ij}(r) \times S(r)\]

where \(V_{ij}(r)\) is the pair potential and \(S(r)\) is the spline function. The values of the spline function are:

  • 1 when \(r \le r_i\)
  • In the range \([0,1]\) when \(r_i < r < r_{cut}\)
  • 0 when \(r \ge r_{cut}\)

[Ves94]B. Vessal. Simulation studies of silicates and phosphates. J. Non-Crystal. Solids, 177:103–124, nov 1994. doi:10.1016/0022-3093(94)90520-7.