TersoffBrennerMolierePotential

class TersoffBrennerMolierePotential(particleType1, particleType2, a, b, c, d, c1, c2, c3, c4, d1, d2, d3, d4, f, Zi, Zj, s, ra, rb)

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.

  • a (PhysicalQuantity of type length**-1) – Potential parameter.

  • b (float) – Potential parameter.

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

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

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

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

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

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 Tersoff-Brenner pair potential with additional moliere-type repulsive term for silicon.

_potential = TersoffBrennerPairPotential(
    particleType1 = ParticleIdentifier('Si', []),
    particleType2 = ParticleIdentifier('Si', []),
    A = 1830.8*eV,
    B = 471.18*eV,
    l = 2.4799*1/Angstrom,
    mu = 1.7322*1/Angstrom,
    Re = 2.35*Angstrom,
    R1 = 2.7*Angstrom,
    R2 = 3.0*Angstrom,
)
potentialSet.addPotential(_potential)
_potential = TersoffBrennerMolierePotential(
    particleType1 = ParticleIdentifier('Si', []),
    particleType2 = ParticleIdentifier('Si', []),
    a = -7.155376*1/Angstrom,
    b = 9.502208,
    c = 237.361562*eV,
    d = 1.0*eV,
    f = 0.10164343824*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 = 14.0*elementary_charge,
    s = 296.792932*eV,
    ra = 0.286968*Angstrom,
    rb = 0.65522*Angstrom,
)
potentialSet.addPotential(_potential)

Notes

In some cases it is necessary to boost the repulsive term

\[U_{ij}^{rep} = f^{TB}_{ij}(r_{ij}) A_{ij} \exp(-\lambda_{ij} r_{ij})\]

of a TersoffBrennerPairPotential for particles that are close to each other. Therefore, a correction term was introduced in [1] that replaces the original repulsion term by a Coulomb-like term for close interactions. This behavior can be achieved by an additional correction term \(U_{ij}^{repCor}\) that is added to the \(U_{ij}^{rep}\) terms. It has the form

\[\begin{split}U_{ij}^{repCor} = \begin{cases} -U_{ij}^{rep} + U_{ij}^{Moliere} & r_{ij}\leq r_{ij}^{(a)} \\ -U_{ij}^{rep} + U_{ij}^{spline} & r_{ij}^{(a)} < r_{ij} < r_{ij}^{(b)} \\ 0 & r_{ij}^{(b)}\leq r_{ij} \end{cases}\end{split}\]

which basically means that the repulsive term \(U_{ij}^{rep}\) is replaced by

\[\begin{split}\begin{cases} U_{ij}^{Moliere} & r_{ij}\leq r_{ij}^{(a)} \\ U_{ij}^{spline} & r_{ij}^{(a)} < r_{ij} < r_{ij}^{(b)} \\ U_{ij}^{rep} & r_{ij}^{(b)}\leq r_{ij} \end{cases}\end{split}\]

The two new terms \(U_{ij}^{Moliere}\) and \(U_{ij}^{spline}\) are given by

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

and

\[U_{ij}^{spline} = c_{ij} + d_{ij}\exp(a_{ij} r_{ij} + b_{ij}).\]

This correction can be set up by adding a TersoffBrennerMolierePotential. The potential parameters are defined as follows:

a

The parameter \(a_{ij}\)

b

The parameter \(b_{ij}\)

c

The parameter \(c_{ij}\)

d

The parameter \(d_{ij}\)

f

The parameter \(f_{ij}\)

s

The parameter \(s_{ij}\)

c1,…,c4

The parameters \(c_{ij}^{(1)}, \dots, c_{ij}^{(4)}\)

d1,…,d4

The parameters \(d_{ij}^{(1)}, \dots, d_{ij}^{(4)}\)

zi

The parameter \(Z_1\)

zj

The parameter \(Z_2\)

r_a

The parameter \(r_{ij}^{(a)}\)

r_b

The parameter \(r_{ij}^{(b)}\)