qtcad.atoms.materials module
Library of parameters for tight-binding model and Keating valence force-field model.
This file contains two types of parameters: (1) tight-binding model parameters, and (2) Keating valence force-field model parameters.
Units
All parameters may be expressed either in SI units (metres and joules) or in “A-eV” units (angstroms and electronvolts); angles are expressed in radians. For tight-binding model parameters, the zero of energy is the valence band maximum of bulk, unstrained Si in the presence of spin-orbit coupling.
Tight-binding model parameters
The tight-binding model parameters come in two categories: (1) onsite parameters and (2) offsite parameters.
In brief, the parameters follow the notation of Ref. [NRT+09] with the following exceptions:
\(s^{\star}\) is replaced by
t,\(\sigma\) is replaced by
S,\(\pi\) is replaced by
P,\(\delta\) is replaced by
D,\(\lambda\) is replaced by
L,\(\alpha\) is replaced by
a,\(\beta\) is replaced by
b,exponents (
0or1) are written right afterb(which stands for \(\beta\)).\(\eta\) is replaced by
n.
QTCAD supports three types of tight-binding model atomic orbital basis sets: (1) \(sp^3\), (2) \(sp^3s^{\star}\), and (3) \(sp^3d^5s^{\star}\). The nature and number of tight-binding model parameters depend on the atomic orbital basis set.
\(sp^3\) tight-binding model
In this model, the tight-binding Hamiltonian is expressed in a basis with four atomic orbitals per atom: an \(s\) orbital, a \(p_x\) orbital, a \(p_y\) orbital, and a \(p_z\) orbital.
Spin-orbit coupling and strain are ignored in this model.
In this model, the 2 onsite parameters, which describe the onsite energy of a single atom, are:
the \(s\) orbital onsite energy,
E_s,the \(p\) orbitals onsite energy,
E_p.
Furthermore, the offsite parameters, which describe the coupling between two neighboring atoms, are:
the equilibrium interatomic distance
d_0,the Slater-Koster parameters, which are denoted by
V_ijX, whereiandjare the orbitals of the two atoms, andXis the type of bond.
When the two neighboring atoms are of the same chemical species, the
Slater-Koster parameters are V_ssS, V_spS, V_ppS, V_ppP. This
results in a total of 5 offsite parameters.
When the two neighboring atoms are of different chemical species, the
Slater-Koster parameters are V_ssS, V_ppS, V_ppP, V_s1p2S,
V_s2p1S. This results in a total of 6 offsite parameters.
\(sp^3s^{\star}\) tight-binding model
In this model, the tight-binding Hamiltonian is expressed in a basis with five atomic orbitals per atom: an \(s\) orbital, a \(p_x\) orbital, a \(p_y\) orbital, a \(p_z\) orbital, and an \(s^{\star}\) orbital.
Strain is ignored in this model.
In this model, the 4 onsite parameters, which describe the onsite energy of a single atom, are:
the \(s\) orbital onsite energy,
E_s,the \(p\) orbitals onsite energy,
E_p,the \(s^{\star}\) orbital onsite energy,
E_t,the spin-orbit coupling parameter
L.
Furthermore, the offsite parameters, which describe the coupling between two neighboring atoms, are:
the equilibrium interatomic distance
d_0,the Slater-Koster parameters, which are denoted by
V_ijX, whereiandjare the orbitals of the two atoms, andXis the type of bond.
When the two neighboring atoms are of the same chemical species, the
Slater-Koster parameters are V_ssS, V_stS, V_spS, V_ttS,
V_tpS, V_ppS, and V_ppP. This results in a total of 8 offsite
parameters.
When the two neighboring atoms are of different chemical species, the
Slater-Koster parameters are V_ssS, V_ttS, V_ppS, V_ppP,
V_s1t2S, V_s1p2S, V_t1p2S, V_s2t1S, V_s2p1S, and
V_t2p1S. This results in a total of 11 offsite parameters.
\(sp^3d^5s^{\star}\) tight-binding model
In this model, the tight-binding Hamiltonian is expressed in a basis with ten atomic orbitals per atom: an \(s\) orbital, a \(p_x\) orbital, a :math:p_y` orbital, a \(p_z\) orbital, a \(d_{yz}\) orbital, a \(d_{xz}\) orbital, a \(d_{xy}\) orbital, a \(d_{x^2-y^2}\) orbital, a \(d_{3z^2-r^2}\) orbital, and an \(s^{\star}\) orbital.
Spin-orbit coupling and strain may be considered in this model. If spin-orbit coupling is considered, the Hamiltonian is instead expressed in a basis with twenty basis states per atom, specifically the tensor products of the ten atomic orbitals with the spin up and spin down states.
In this model, the 23 onsite parameters, which describe the onsite energy of a single atom, are:
the onsite orbital energies
E_s,E_p,E_d, andE_t,the spin-orbit coupling parameter
L,the onsite strain parameters
a_s,a_p,a_d,a_t,b0_p,b1_p,b0_pd,b1_pd,b0_d,b1_d,b0_sp,b1_sp,b0_tp,b1_tp,b0_sd,b1_sd,b0_td, andb1_td.
In cases where spin-orbit coupling is not considered, the spin-orbit coupling parameter may be set to zero. Likewise, in cases where strain is not considered, the onsite strain parameters may be set to zero.
Furthermore, the offsite parameters, which describe the coupling between two neighboring atoms, are:
the equilibrium interatomic distance
d_0,the Slater-Koster parameters, which are denoted by
V_ijX, whereiandjare the orbitals of the two atoms, andXis the type of bond,the Harrison exponents
n_ssS,n_stS,n_spS,n_sdS,n_ttS,n_tpS,n_tdS,n_ppS,n_ppP,n_pdS,n_pdP,n_ddS,n_ddP, andn_ddD.
In cases where strain is not considered, the Harrison exponents may be set to zero.
When the two neighboring atoms are of the same chemical species, the
Slater-Koster parameters are V_ssS, V_stS, V_spS, V_sdS,
V_ttS, V_tpS, V_tdS, V_ppS, V_ppP, V_pdS, V_pdP,
V_ddS, V_ddP, and V_ddD. This results in a total of 29 offsite
parameters.
When the two neighboring atoms are of different chemical species, the
Slater-Koster parameters are V_ssS, V_ttS, V_ppS, V_ppP,
V_ddS, V_ddP, V_ddD, V_s1t2S, V_s1p2S, V_s1d2S,
V_t1p2S, V_t1d2S, V_p1d2S, V_p1d2P, V_s2t1S, V_s2p1S,
V_s2d1S, V_t2p1S, V_t2d1S, V_p2d1S, and V_p2d1P. This
results in a total of 36 offsite parameters.
Keating valence force-field model parameters
There are only four types of parameters in the Keating valence force-field (VFF) model:
interatomic distances, which are denoted by
d_0,bond-stretching parameters, which are often denoted by \(\alpha\) in the literature and by
ain this file,bond angles, which are denoted by
t,bond-bending parameters, which are often denoted by \(\beta\) in the literature and by
bin this file.
- class OneAtom(atom_species: str)
Bases:
OneAtomOnsite tight-binding model parameters of a given atomic species.
- Attributes:
atom_species (str) – Atomic species (e.g. “Si”).
tb_params (dict) – Onsite tight-binding model parameters; keys refer to the name of the parameter set (which is typically the name of the first author of the paper from which the parameters were extracted) and values are dictionaries of the parameters, expressed in SI units.
tb_orbs (dict) – Atomic orbital basis set used in the tight-binding model; keys refer to the name of the parameter set (which is typically the name of the first author of the paper from which the parameters were extracted) and values are strings which may either be “sp3” for an \(sp^3\) basis, “sp3s*” for an \(sp^3s^{\star}\) basis, or “sp3d5s*” for an \(sp^3d^5s^{\star}\) basis.
- get_tb_params(tb_params_name: str, units: str) Tuple[dict, str]
Extract input onsite tight-binding model parameter set.
- Parameters:
tb_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- Returns:
Two-element tuple containing –
- set_tb_params(tb_params_name: str, params: dict, orbs: str, units: str) None
Set onsite tight-binding model parameters.
- Parameters:
tb_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
params (dict) – Dictionary of onsite tight-binding model parameters.
orbs (str) – Atomic orbital basis set used in the tight-binding model, which may either be “sp3” for an \(sp^3\) basis, “sp3s*” for an \(sp^3s^{\star}\) basis, or “sp3d5s*” for an \(sp^3d^5s^{\star}\) basis.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- class ThreeAtoms(atom_species_1: str, atom_species_2: str, atom_species_3: str)
Bases:
ThreeAtomsKeating valence force-field model bond-bending parameters of a given triplet of atomic species.
- Attributes:
atom_species_1 (str) – Atomic species (e.g. “Si”) of the first atom in the triplet.
atom_species_2 (str) – Atomic species (e.g. “Si”) of the second atom in the triplet; it is the central atom of the triplet.
atom_species_3 (str) – Atomic species (e.g. “Si”) of the third atom in the triplet.
vff_params (dict) – Keating valence force-field model bond-bending parameters; keys refer to the name of the parameter set (which is typically the name of the first author of the paper from which the parameters were extracted) and values are dictionaries of the parameters, , expressed in SI units.
- __init__(atom_species_1: str, atom_species_2: str, atom_species_3: str) None
- Parameters:
atom_species_1 (str) – Atomic species (e.g. “Si”) of the first atom in the triplet.
atom_species_2 (str) – Atomic species (e.g. “Si”) of the second atom in the triplet; it is the central atom of the triplet.
atom_species_3 (str) – Atomic species (e.g. “Si”) of the third atom in the triplet.
- get_mirrored_atom_triplet() ThreeAtoms
Create a new atom triplet with the chemical species of the peripheral (non-central) atoms swapped.
- Returns:
ThreeAtoms– Mirrored atom triplet
- get_vff_params(vff_params_name: str, units: str) dict
Extract input Keating valence force-field model bond-bending parameter set.
- Parameters:
vff_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- Returns:
dict – Keating valence force-field model bond-bending parameters.
- set_vff_params(vff_params_name: str, params: dict, units: str) None
Set Keating valence force-field model bond-bending parameters.
- Parameters:
vff_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
params (dict) – Dictionary of Keating valence force-field model bond-bending parameters.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- class TwoAtoms(atom_species_1: str, atom_species_2: str)
Bases:
TwoAtomsOffsite tight-binding model parameters and Keating valence force-field model bond-stretching parameters of a given pair of atomic species.
- Attributes:
atom_species_1 (str) – Atomic species (e.g. “Si”) of the first atom in the pair.
atom_species_2 (str) – Atomic species (e.g. “Si”) of the second atom in the pair.
tb_params (dict) – Offsite tight-binding model parameters; keys refer to the name of the parameter set (which is typically the name of the first author of the paper from which the parameters were extracted) and values are dictionaries of the parameters, expressed in SI units.
tb_orbs (dict) – Atomic orbital basis set used in the tight-binding model; keys refer to the name of the parameter set (which is typically the name of the first author of the paper from which the parameters were extracted) and values are strings which may either be “sp3” for an \(sp^3\) basis, “sp3s*” for an \(sp^3s^{\star}\) basis, or “sp3d5s*” for an \(sp^3d^5s^{\star}\) basis.
vff_params (dict) – Keating valence force-field model bond-stretching parameters; keys refer to the name of the parameter set (which is typically the name of the first author of the paper from which the parameters were extracted) and values are dictionaries of the parameters, expressed in SI units.
- __init__(atom_species_1: str, atom_species_2: str) None
- Parameters:
atom_species_1 (str) – Atomic species (e.g. “Si”) of the first atom in the pair.
atom_species_2 (str) – Atomic species (e.g. “Si”) of the second atom in the pair.
- get_mirrored_atom_pair() TwoAtoms
Create a new atom pair with the chemical species of the two atoms swapped.
- Returns:
TwoAtoms– Mirrored atom pair.
- get_tb_params(tb_params_name: str, units: str) Tuple[dict, str]
Extract input offsite tight-binding model parameter set.
- Parameters:
tb_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- Returns:
Two-element tuple containing –
- get_vff_params(vff_params_name: str, units: str) dict
Extract input Keating valence force-field model bond-stretching parameter set.
- Parameters:
vff_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- Returns:
dict – Keating valence force-field model bond-stretching parameters.
- set_tb_params(tb_params_name: str, params: dict, orbs: str, units: str) None
Set offsite tight-binding model parameters.
If the two atoms are of the same chemical species,
V_i1j2X = V_i2j1Xfor anyi, j = s, p, d, tand for anyX = S, P, D. In this case,V_i1j2X = V_i2j1Xmay simply be denoted asV_ijX. If this simplified notation is used in the input dictionary, this method automatically converts it to the full notationV_i1j2X, V_i2j1Xbefore storing the parameters.- Parameters:
tb_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
params (dict) – Dictionary of offsite tight-binding model parameters.
orbs (str) – Atomic orbital basis set used in the tight-binding model, which may either be “sp3” for an \(sp^3\) basis, “sp3s*” for an \(sp^3s^{\star}\) basis, or “sp3d5s*” for an \(sp^3d^5s^{\star}\) basis.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- set_vff_params(vff_params_name: str, params: dict, units: str) None
Set Keating valence force-field model bond-stretching parameters.
- Parameters:
vff_params_name (str) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted.
params (dict) – Dictionary of Keating valence force-field model bond-stretching parameters.
units (str) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts.
- get_tb_params(atom_species_1: str, atom_species_2: str = None, tb_params_name: str | Tuple[str, ...] = ('Niquet', 'Kim'), units: str = 'SI') Tuple[dict, str]
Retrieve dictionary of tight-binding model parameters corresponding to input atomic species.
If a single atomic species is given as input, a dictionary of onsite tight-binding paramters is output. If two atomic species are given as input, a dictionary of offsite tight-binding parameters is output.
- Parameters:
atom_species_1 (str) – Atomic species of first (or only) atom (e.g. “Si”).
atom_species_2 (str, optional) – Atomic species of second atom (e.g. “Si”)
tb_params_name (str or tuple of str, optional) – If a str, name of the tight-binding model parameter set, which is typically the name of the first author of the paper from which the parameters were extracted. If a tuple, names of the tight-binding model parameter sets ordered according to precedence; if multiple parameter sets are available for a given atom or pair of atoms, the parameter set is set to the available parameter set whose name first appears in the tuple. The parameter set names include “Niquet”, “Boykin”, “Vogl”, “Klimeck_cb”, “Klimeck_vb”, “Kim”, and “Gawarecki”. Default: (“Niquet”, “Kim”).
units (str, optional) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts. Default: “SI”.
- Returns:
Two-element tuple containing –
- get_vff_params(atom_species_1: str, atom_species_2: str, atom_species_3: str = None, vff_params_name: str = 'Niquet', units: str = 'SI') dict
Retrieve dictionary of Keating valence force-field model parameters corresponding to input atomic species.
If two atomic species are given as input, a dictionary of Keating valence force-field model bond-stretching parameters is output. If three atomic species are given as input, a dictionary of Keating valence force-field model bond-bending parameters is output.
- Parameters:
atom_species_1 (str) – Atomic species of first atom (e.g. “Si”).
atom_species_2 (str) – Atomic species of second atom (e.g. “Si”), which corresponds to the central atom of the triplet when
atom_species_3is not None.atom_species_3 (str, optional) – Atomic species of third atom (e.g. “Si”).
vff_params_name (str, optional) – Name of the parameter set, which is typically the name of the first author of the paper from which the parameters were extracted. The parameter set names include “Niquet” and “Gawarecki”. Default: “Niquet”.
units (str, optional) – Units of the parameters, which may either be “SI” for SI units (metres and joules) or “A-eV” for angstroms and electrovolts. Default: “SI”.
- Returns:
dict – Bond-stretching (bond-bending) Keating valence force-field model parameters if
atom_species_3is (is not) None.