4. Keating valence force-field model solver
The atomic structures produced by the unit cell tiling (see Unit cell tiling) have:
the same interatomic bond lengths for all pairs of neighboring atoms in the atomic structure, regarless of their chemical species;
the same angles between adjacent interatomic bonds, regardless of the chemical species of the atoms involved.
This is unrealistic for heterostructures of materials with distinct lattice constants. Indeed, taking the example of a silicon–germanium heterostructure with no external strain, the arrangement of silicon atoms located sufficiently far from the heterointerface should be uninfluenced by the germanium layer and thus should match that of bulk silicon. Similarly, the arrangement of germanium atoms located sufficiently far from the heterointerface should match that of bulk germanium. Since the interatomic distance in bulk silicon differs from that in bulk germanium, the unit cell tiling method cannot accurately construct the atomic structure of a silicon–germanium heterostructure with no external strain.
There exist various atomistic formalisms to “relax” an atomic structure, namely to obtain the “equilibrium” positions of the atoms that minimize a relevant energy functional. First-principles formalisms, such as those based on density functional theory, are applicable to a wide variety of materials and structures, but can typically only scale up to a few thousands of atoms at most. In QTCAD, we instead relax atomic structures within the Keating valence force-field (VFF) model [Kea66], a semi-classical model that scales up to tens of millions of atoms.
In the Keating VFF model, the elastic energy of an atomic structure is expressed as:
In this formula, \(\mathbf{r}_i\) is the position of the \(i^{\mathrm{th}}\) atom in the atomic structure, where \(i=1,\ldots,N\).
The first term in the right-hand side of the equation is the so-called
bond-stretching term, which penalizes deviations of the interatomic bond
lengths from their equilibrium values \(d^{0}_{ij}\). As such, the sum
\(\sum_{ij}\) runs over all interatomic bonds in the atomic structure. The
magnitude of the penalty is controlled by the Keating parameters
\(\alpha_{ij}\), which only depend of the chemical species of the atoms
labeled by \(i\) and \(j\). The bond-bending parameters are available
in the qtcad.atoms.materials
module, specifically in
TwoAtoms
objects.
The second term in the right-hand side of the equation is the so-called
bond-bending term, which penalizes deviations of the angles between adjacent
interatomic bonds from their equilibrium values \(\theta_{ijk}\). As such,
the sum \(\sum_{ijk}\) runs over all adjacent interatomic bonds in the
atomic structure. The magnitude of the penalty is controlled by the Keating
parameters \(\beta_{ijk}\), which only depend of the chemical species of
the atoms labeled by \(i\), \(j\), and \(k\). The bond-stretching
parameters are available in the qtcad.atoms.materials
module,
specifically in ThreeAtoms
objects.
To relax an atomic structure, the elastic energy \(U\) is simply minimized with respect to the position of each atom in the atomic structure \(\mathbf{r}_i\):
In QTCAD, no specific constraint is imposed on the atomic structure relaxation procedure; the atomic structure can thus be viewed as free-standing. However, the relaxed atomic structure is translated so that its center of mass matches that of the unrelaxed atomic structure. In addition, it is rotated so as to minimize its root-mean-square deviation from the unrelaxed atomic structure using the Kabsch algorithm [Kab76]. This is done to ensure that the relaxed atomic structure maintains the same position in space and crystal orientation as the unrelaxed atomic structure.
This relaxation procedure may be performed through the
Solver
class of the
qtcad.atoms.keating
module. The parameters of the Keating VFF
model may be found and/or defined in the qtcad.atoms.materials
module.