# TersoffZBLPotential¶

class TersoffZBLPotential(particleType1, particleType2, type, Z1, Z2, a0, rf, bf)

Constructor of the potential.

Note: TersoffSingleTypePotentials must be added for BOTH particle types!

Parameters: particleType1 (ParticleType or ParticleIdentifier) – Identifier of the first particle type. particleType2 (ParticleType or ParticleIdentifier) – Identifier of the second particle type. type (int) – either 1 or 2, sets the type of the actual potential Z1 (float) – Potential parameter. Z2 (float) – Potential parameter. a0 (PhysicalQuantity of type length) – Potential parameter. rf (PhysicalQuantity of type length) – Potential parameter. bf (PhysicalQuantity of type length**-1) – 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.
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.
setType(type)
Parameters: type (int) – either 1 or 2, sets the type of the actual potential
setZ1(Z1)
Parameters: Z1 (float) – Potential parameter.
setZ2(Z2)
Parameters: Z2 (float) – Potential parameter.
seta0(a0)
Parameters: a0 (PhysicalQuantity of type length) – Potential parameter.
setbf(bf)
Parameters: bf (PhysicalQuantity of type length**-1) – Potential parameter.
setrf(rf)
Parameters: rf (PhysicalQuantity of type length) – Potential parameter.

## Usage Examples¶

Define a Tersoff potential for gold by adding particle types and interaction functions to the TremoloXPotentialSet.

# -------------------------------------------------------------
# Bulk configuration for FCC gold
# -------------------------------------------------------------

# Set up lattice
vector_a = [4.07825, 0.0, 0.0]*Angstrom
vector_b = [0.0, 4.07825, 0.0]*Angstrom
vector_c = [0.0, 0.0, 4.07825]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
elements = [Gold, Gold, Gold, Gold]

# Define coordinates
fractional_coordinates = [[ 0.0,  0.0,  0.0],
[ 0.5,  0.5,  0.0],
[ 0.5,  0.0,  0.5],
[ 0.0,  0.5,  0.5]]

# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------

# Create a new potential set
potentialSet = TremoloXPotentialSet(name='Tersoff_Au_2012')

# Add the particle type to the potential set
mass=196.967*atomic_mass_unit))

# Add the single type potential to the potential set
A=5445.22104118*eV,
B=247.287913089*eV,
R=3.0*Angstrom,
S=3.4*Angstrom,
l=3.13294032317/Angstrom,
mu=1.60663606317/Angstrom,
alpha=2.05/Angstrom,
beta=1.0,
omega=0.0006374494,
chi=1.0,
chiR=1.0,
m=1,
n=1.0,
c=3.351525,
d=0.1649262,
h=-0.9941884))

# Add the ZBL modification to the potential set
type=1,
Z1=79.0,
Z2=79.0,
a0=0.529*Angstrom,
rf=1.7*Angstrom,
bf=12.0/Angstrom))

# Create the TremoloX calculator from the potential set
calculator = TremoloXCalculator(parameters=potentialSet)

bulk_configuration.setCalculator(calculator)


### Notes¶

In general, Tersoff type potentials are bond-order potentials [Ter88]. They are typically used to describe covalent crystals, such as silicon, carbon, or germanium. The potential includes two-body and three-body terms. The TremoloX implementation of the Tersoff potential is

$\begin{split}V = \sum_{i < j} f_C(r_{ij})(\chi_{Rij}f_R(r_{ij}) + \frac{(b_{ij} + b_{ji}}{2} f_A(r_{ij})) \, ,\end{split}$

which is a sum of a repulsive and attractive terms

$f_R(r_{ij}) = A_{ij} \exp(-\lambda_{ij} r_{ij}) \, ,$

and

$f_A(r_{ij}) = -B_{ij} \exp(-\mu_{ij} r_{ij}) \, ,$

as well as a cutoff function

$\begin{split}f_C(r) = \begin{cases} 1 &r < R_{ij} \\ \frac{1}{2} + \frac{1}{2} \cos\left(\frac{\pi (r - R_{ij})}{S_{ij} - R_{ij}} \right ) &R_{ij} \leq r < S_{ij} \\ 0 &r \geq S_{ij} \end{cases}\end{split}$

The term

$b_{ij} = \chi_{ij} (1 + \beta_{ij}^{n_{ij}} \zeta_{ij}^{n_{ij}})^{-\frac{1}{2n_{ij}}} \, ,$

with

$\zeta_{ij} = \sum_{k \neq i,j} f_C(r_{ik}) \omega_{ijk} \exp \left (\alpha_{ijk}^{m_{ijk}} (r_{ij} - r_{ik})^{m_{ijk}} \right) g(\theta_{ijk})$

and

$g_{ijk}(\theta_{ijk}) = 1 + \frac{c_{ik}^2}{d_{ik}^2} - \frac{c_{ik}^2}{d_{ik}^2 + (h_{ik} - \cos(\theta_{ijk}))^2} \, ,$

represents the bond order of the bond between atoms $$i$$ and $$j$$.

Note

Some publications use the form $$g_{ijk}(\theta_{ijk}) = 1 + \frac{c_{ik}^2}{d_{ik}^2} - \frac{c_{ik}^2}{d_{ik}^2 + (h_{ik} + \cos(\theta_{ijk}))^2}$$, which differs in the sign in the cos term. If you want to use parameters given in this form in QuantumATK, you have to flip the sign of the h value, e.g. if the paper says h=1.0 the potential has to be constructed with h=-1.0.

The parameters for a single particle type can be specified in TersoffSingleTypePotential.

For more than one particle type, the following mixing rules are available:

1. $\lambda_{ij} = \frac{\lambda_i + \lambda_j}{2} \, , \, \mu_{ij} = \frac{\mu_i + \mu_j}{2} \, , \, A_{ij} = \sqrt{A_i A_j}$
$B_{ij} = \sqrt{B_i B_j} \, , \, R_{ij} = \sqrt{R_i R_j} \, , \mathrm{and} \, S_{ij} = \sqrt{S_i S_j}$
2. $\beta_{ij} = \beta_i \, , \, n_{ij} = n_i \, , \, c_{ij} = c_{i} \, , \, d_{ij} = d_i \, , \mathrm{and} \, h_{ij} = h_i$
3. $\omega_{ijk} = \omega_{ij} \, , \, \alpha_{ijk} = \alpha_{ij} \, , \mathrm{and} \, m_{ijk} = m_{ij}$

Using TersoffMixitPotential to specify the interaction between two particle types enables all three combination rules listed above.

TersoffDiagPotential employs only the latter two mixing rules, while the remaining parameters have to be specified separately.

TersoffDiag2Potential uses only the last of the above mixing rules, while the remaining parameters have to be specified separately.

In addition, TersoffTriplePotential permits the manual specification of the three body parameters $$\omega_{ijk}$$, $$\alpha_{ijk}$$, and $$m_{ijk}$$.

For high-energy simulations one can modify the repulsive behavior by mixing the Tersoff potential with the universal Ziegler-Biersack-Littmark repulsive potential $$V^{\rm ZBL}$$ [ZB85].

Two mixing types are available:

• Type 1:
$\overline{f}_{R}(r) = (1- F(r)) V^{\rm ZBL}(r) + F(r)f_R(r)$
• Type 2:
$\overline{V}_{ij}(r) = (1- F(r)) V^{\rm ZBL}(r) + F(r)V_{ij}(r)$

where $$F(r)$$ is the Fermi function:

$F(r)=\frac{1}{1+\exp(-b_f(r-r_f))} \, .$

This option can be enabled via TersoffZBLPotential. The mixing type (1 or 2) can be selected with the type argument.

 [Ter88] J. Tersoff. New empirical approach for the structure and energy of covalent systems. Phys. Rev. B, 37:6991–7000, Apr 1988. doi:10.1103/PhysRevB.37.6991.
 [ZB85] James F. Ziegler and Jochen P. Biersack. Treatise on Heavy-Ion Science: Volume 6: Astrophysics, Chemistry, and Condensed Matter., chapter The Stopping and Range of Ions in Matter, pages 93–129. Springer US, Boston, MA, 1985. doi:10.1007/978-1-4615-8103-1_3.