MolierePotential

class MolierePotential(particleType1, particleType2, c1, c2, c3, c4, d1, d2, d3, d4, f, Zi, Zj, s, r_i=None, 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.
  • c1 (float) – Potential parameter.
  • c2 (float) – Potential parameter.
  • c3 (float) – Potential parameter.
  • c4 (float) – Potential parameter.
  • d1 (float) – Potential parameter.
  • d2 (float) – Potential parameter.
  • d3 (float) – Potential parameter.
  • d4 (float) – Potential parameter.
  • f (PhysicalQuantity of type length) – Potential parameter.
  • Zi (PhysicalQuantity of type charge) – Potential parameter.
  • Zj (PhysicalQuantity of type charge) – Potential parameter.
  • s (PhysicalQuantity of type energy) – Potential parameter.
  • r_i (PhysicalQuantity of type length) – The inner cutoff radius where the smoothing of the potential starts. r_i must be smaller than r_cut.
  • r_cut (PhysicalQuantity of type length) – The cutoff radius of this potential.
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 cutoff radius for this potential.

Parameters:r_cut (PhysicalQuantity of type length) – The cutoff radius of this potential.
setInnerCutoff(r_i)

Set the inner cutoff radius for this potential.

Parameters:r_i (PhysicalQuantity of type length) – The inner cutoff radius (distance where the spline-smoothing starts).
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 Moliere-type potential between silicon and argon. TremoloXPotentialSet.

potentialSet = TremoloXPotentialSet(name = 'Moliere_ArSi')
potentialSet.addParticleType(ParticleType.fromElement(Silicon))
potentialSet.addParticleType(ParticleType.fromElement(Argon))

_potential = MolierePotential(
	particleType1=ParticleIdentifier('Si', []),
	particleType2=ParticleIdentifier('Ar', []),
	f=0.09734*Angstrom,
	c1=0.35,
	c2=0.55,
	c3=0.1,
	c4=0.0,
	d1=0.3,
	d2=1.2,
	d3=6.0,
	d4=0.0,
	Zi=14.0*elementary_charge,
	Zj=18.0*elementary_charge,
	s=0.0*eV,
	r_i=5.0*Angstrom,
	r_cut=7.5*Angstrom,
)
potentialSet.addPotential(_potential)
calculator = TremoloXCalculator(parameters=potentialSet)

moliere.py

Notes

This potential implements the Moliere potential [Mol47], which models the short-range screened Coulomb repulsion between two nuclei. It can be used in combination with a conventional potential, such as Tersoff, which is usually not hard enough at short distances during high energy impacts. It is also suitable for modeling a purely repulsive interaction, such as between nobel gas atoms or ions. The potential follows the form

\[V_{ij}^{Moliere} = s_{ij} + \frac{Z_i Z_j}{4\pi\epsilon_0 r_{ij}} \sum_{m=1}^4 c_{ij}^{(m)} \exp\left(-\frac{d_{ij}^{(m)} r_{ij}}{f_{ij}} \right).\]

where \(Z_{i}\) and \(Z_{j}\) are the nuclear charges of the elements involved.

Typically used values for \(c^{(m)}\) are (0.35, 0.55, 0.1, 0) and for \(d^{(m)}\) (0.3, 1.2, 6.0, 0). The parameter \(f_{ij}\) is often taken as \(0.83 (9 \pi^2 / 128)^{1/3} a_{Bohr} (Z_i^{0.5} + Z_j^{0.5})^{-2/3}\) (see e.g. [AG99]). In this case the nucleus charges \(Z_{i,j}\) should be taken as unitless.

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}\)

[AG99]Cameron F Abrams and David B Graves. Molecular dynamics simulations of si etching by energetic cf 3+. Journal of applied physics, 86(11):5938–5948, 1999. URL: https://doi.org/10.1063/1.371637, doi:10.1063/1.371637.
[Mol47]Gert Moliere. Theorie der streuung schneller geladener teilchen i. einzelstreuung am abgeschirmten coulomb-feld. Zeitschrift für Naturforschung A, 2(3):133–145, 1947.