TersoffBrennerBOPairPotential

class TersoffBrennerBOPairPotential(particleType1, particleType2, delta, eta)

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.
  • delta (float) – Potential parameter.
  • eta (float) – Potential parameter.
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.
setDelta(delta)

Set the parameter delta.

Parameters:delta (float) – Potential parameter.
setEta(eta)

Set the parameter eta.

Parameters:eta (float) – Potential parameter.
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 Tersoff-Brenner pair and bond-order potentials between silicon and fluorine.

potentialSet = TremoloXPotentialSet(name = 'TersoffBrenner_CSiF_1999')
_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 = TersoffBrennerPairPotential(
    particleType1 = ParticleIdentifier('F', []),
    particleType2 = ParticleIdentifier('F', []),
    A = 16451.97*eV,
    B = 146.8149*eV,
    l = 6.8149*1/Angstrom,
    mu = 2.8568*1/Angstrom,
    Re = 1.4119*Angstrom,
    R1 = 1.7*Angstrom,
    R2 = 2.0*Angstrom,
)
potentialSet.addPotential(_potential)
_potential = TersoffBrennerPairPotential(
    particleType1 = ParticleIdentifier('Si', []),
    particleType2 = ParticleIdentifier('F', []),
    A = 37412.28*eV,
    B = 925.846*eV,
    l = 5.4875*1/Angstrom,
    mu = 2.7437*1/Angstrom,
    Re = 1.6008*Angstrom,
    R1 = 1.83922*Angstrom,
    R2 = 2.13922*Angstrom,
)
potentialSet.addPotential(_potential)
_potential = TersoffBrennerBOPairPotential(
    particleType1 = ParticleIdentifier('Si', []),
    particleType2 = ParticleIdentifier('Si', []),
    delta = 0.63505,
    eta = 0.78734,
)
potentialSet.addPotential(_potential)
_potential = TersoffBrennerBOPairPotential(
    particleType1 = ParticleIdentifier('Si', []),
    particleType2 = ParticleIdentifier('F', []),
    delta = 0.80469,
    eta = 1.0,
)
potentialSet.addPotential(_potential)
_potential = TersoffBrennerBOPairPotential(
    particleType1 = ParticleIdentifier('F', []),
    particleType2 = ParticleIdentifier('Si', []),
    delta = 0.5,
    eta = 1.0,
)
potentialSet.addPotential(_potential)
_potential = TersoffBrennerBOPairPotential(
    particleType1 = ParticleIdentifier('F', []),
    particleType2 = ParticleIdentifier('F', []),
    delta = 0.5,
    eta = 1.0,
)
potentialSet.addPotential(_potential)

Notes

Several modifications of the original Tersoff potential have been proposed. One of them was introduced in [AG99] and is a combination of the Tersoff, Brenner and Tanaka potentials. For the sake of brevity we call it the Tersoff-Brenner potential.

The potential energy of the Tersoff-Brenner potential is given as the sum of attractive and repulsive potentials:

\[\begin{split}U^{TB} =\sum_i \sum_{i < j} U_{ij}^{rep} - U_{ij}^{att}.\end{split}\]

The repulsive interactions are the same as in the Tersoff potential

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

but a different tapering function \(f^{TB}_{ij}\) is used:

(1)\[\begin{split}f^{TB}_{ij} = \begin{cases} 1 & r_{ij}\leq R_{ij} \\ \frac{1}{2} - \frac{9}{16}\sin\left(\pi\frac{r_{ij} - 0.5(S_{ij} + R_{ij})}{S_{ij} - R_{ij}}\right) - \frac{1}{16}\sin\left(3\pi\frac{r_{ij} - 0.5(S_{ij} + R_{ij})}{S_{ij} - R_{ij}} \right) & R_{ij} < r_{ij} < S_{ij} \\ 0 & r_{ij}\geq S_{ij}. \end{cases}\end{split}\]

The attractive potential \(U^{att}_{ij}\) is given by the term

(2)\[\begin{split}\begin{align} U_{ij}^{att} &= \bar{b}_{ij} f^{TB}_{ij}(r_{ij}) B_{ij} \exp(-\mu_{ij} r_{ij}) \\ \bar{b}_{ij} &= \frac{1}{2} \left(b_{ij} + b_{ji} \right)\\ b_{ij} &= \left(1 + \left[\zeta_{ij}\right]^{\eta_{ij}} \right)^{-\delta_{ij}} \label{eq:TB:bij} \\ \zeta_{ij} &= \sum_{k\neq i,j} f_{ik}^{TB}(r_{ik}) g(\theta_{ijk}) \exp\left(\alpha_{ijk}\left[ (r_{ij} - R_{ij}^{(e)}) - (r_{ik} - R_{ik}^{(e)})\right]^{\beta_{ijk}} \right) \\ \end{align}\end{split}\]

The function \(g(\theta_{ijk})\), where \(\theta_{ijk}\) is the angle between the particles i-j and i-k, is either

(3)\[g(\theta_{ijk}) = c_{ijk} + d_{ijk}(h_{ijk} - \cos(\theta_{ijk}))^2\]

or

(4)\[g(\theta_{ijk}) = a_{ijk} \left(1 + \frac{c_{ijk}^2}{d_{ijk}^2} - \frac{c_{ijk}^2}{d_{ijk}^2 + (h_{ijk} - \cos(\theta_{ijk}))^2}\right).\]

The potential is activated in several steps.

To begin with, the pair-dependent parameters must be set by adding a TersoffBrennerPairPotential for each particle pair.

The parameters in the constructor of TersoffBrennerPairPotential map the the potential parameters as follows:

a The parameter \(A_{ij}\)
b The parameter \(B_{ij}\)
lambda The parameter \(\lambda_{ij}\)
mu The parameter \(\mu_{ij}\)
re The parameter \(R^{(e)}_{ij}\) that is only used if additional bond-order terms are activated
r1 The parameter \(R_{ij}\) in the taper function
r2 The parameter \(S_{ij}\) in the taper function

This sets all pairwise parameters except \(\eta_{ij}\) and \(\delta_{ij}\) which are set to 0, thereby deactivating all three-body interactions.

These parameters can be set by the TersoffBrennerBOPairPotential. Not that these parameters are used in a non-symmetric way, which means a TersoffBrennerBOPairPotential should be specified for each ij and ji.

The three-body parameters are set in a similar way. To use \(g(\theta)\) from equation (3) you need to set up a TersoffBrennerTriplePotential. For the alternative form (4) the TersoffBrennerTriplePotential2 should be used. Note that particle_type1 denotes the type of the central particle during the angle calculation. The remaining parameters are the following:

alpha The parameter \(\alpha_{ijk}\)
beta The parameter \(\beta_{ijk}\)
g_a The parameter \(a_{ijk}\) (TersoffBrennerTriplePotential2 only)
g_c The parameter \(c_{ijk}\)
g_d The parameter \(d_{ijk}\)
g_h The parameter \(h_{ij}\)

Another correction modifies the term \(b_{ij}\) in equation (2) as follows:

\[b_{ij} = \left(1 + [\zeta_{ij}]^{\eta_{ij}} + H_{ij}(N^{(1)}_{ij}, N^{(2)}_{ij}) \right)^{-\delta_{ij}}.\]

\(H_{ij}\) is an arbitrary 2D-function that is given as a bicubic spline. \(N^{(1)}_{ij}\) and \(N^{(2)}_{ij}\) are given by

\[\begin{split}\begin{align} N^{(1)}_{ij} &= \sum_{k\neq i,j\atop\textrm{type of }k\in P^{(1)}_{ij} } f_{ik}^{TB} \\ N^{(2)}_{ij} &= \sum_{k\neq i,j\atop\textrm{type of }k\in P^{(2)}_{ij} } f_{ik}^{TB}. \end{align}\end{split}\]

\(P^{(1)}_{ij}\) and \(P^{(2)}_{ij}\) are two lists of particle types that specify which interactions are taken into account for the calculation of \(N^{(1)}_{ij}\) and \(N^{(2)}_{ij}\). To enable this correction, a TersoffBrennerSplinePotential can be used where the parameters are defined as follows.

particleType1 The particle type referred to as i
particleType2 The particle type referred to as j
activeTypes1 The type list \(P^{(1)}_{ij}\)
activeTypes2 The type list \(P^{(2)}_{ij}\)
x The x-coordinates of the grid of the spline function
y The y-coordinates of the grid of the spline function
f The spline values on the x-y-grid

Note that this potential acts in a non-symmetric way, meaning that it will only act on ij type pairs, but not on ji type pairs.

Finally, the term \(\bar{b }_{ij}\) in equation (2) can be modified in the following way:

\[\bar{b}_{ij} = \frac{1}{2} \left(b_{ij} + b_{ji}\right) + F_{corr}(N^{(t)}_{ij}, N^{(t)}_{ji}, N^{(conj)}_{ij}).\]

The function \(F_{corr}\) is an arbitrary 3D-function that is given as a tricubic spline. \(N^{(t)}_{ij}\) is the coordination number of particle \(i\), excluding \(j\), i.e.

\[\begin{split}N^{(t)}_{ij} = \sum_{k\neq i,j} f_{ik}^{TB}. \\\end{split}\]

\(N^{(conj)}_{ij}\) is defined as follows:

\[N^{(conj)}_{ij} = 1 + \sum_{k\neq i,j\atop\textrm{type of }k\in P^{(conj)}_{ij} } f_{ik}^{TB} T_{ij}(N_{ki}^{(t)}) + \sum_{l\neq i,j\atop\textrm{type of }k\in P^{(conj)}_{ij} } f_{jl}^{TB} T_{ij}(N_{lj}^{(t)}).\]

\(T_{ij}\) is a new type of tapering function given by

\[\begin{split}T_{ij}(x) = \begin{cases} 1, & x\leq L_{ij} \\ \frac{1}{2} + \frac{1}{2}\cos\left(\frac{\pi(x - L_{ij})}{U_{ij} - L_{ij}} \right), & L_{ij} < x < U_{ij} \\ 0, & x\geq U_{ij}. \end{cases}\end{split}\]

\(P^{(conj)}_{ij}\) is a list of particle types that specify which interactions are taken into account for the calculation of \(N^{(conj)}_{ij}\). For this correction the TersoffBrennerCorrectionPotential can be used.

particleType1 The particle type referred to as i
particleType2 The particle type referred to as j
activeTypes The type list among which neighbors of atoms i and j should be searched for.
L The lower cutoff in \(T_{ij}\)
U The upper cutoff in \(T_{ij}\)
x The x-coordinates of the grid of the spline function. The same values are used for the y-coordinates
z The z-coordinates of the grid of the spline function
f The spline values on the x-y-z-grid

In contrast to the TersoffBrennerSplinePotential, this correction acts in a symmetric way between the types ij.

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