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 (0 or 1) are written right after b (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, where i and j are the orbitals of the two atoms, and X is 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, where i and j are the orbitals of the two atoms, and X is 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, and E_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, and b1_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, where i and j are the orbitals of the two atoms, and X is 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, and n_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 a in this file,

  • bond angles, which are denoted by t,

  • bond-bending parameters, which are often denoted by \(\beta\) in the literature and by b in this file.

class OneAtom(atom_species: str)

Bases: OneAtom

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

__init__(atom_species: str) None
Parameters:

atom_species (str) – Atomic species (e.g. “Si”).

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

  • dict - Onsite tight-binding model parameters.

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

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: ThreeAtoms

Keating 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: TwoAtoms

Offsite 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

  • dict - Offsite tight-binding model parameters.

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

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_i2j1X for any i, j = s, p, d, t and for any X = S, P, D. In this case, V_i1j2X = V_i2j1X may simply be denoted as V_ijX. If this simplified notation is used in the input dictionary, this method automatically converts it to the full notation V_i1j2X, V_i2j1X before 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

  • dict - Onsite (offsite) tight-binding model parameters if atom_species_2 is (is not) None.

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

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_3 is 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_3 is (is not) None.