6. \(g\)-tensor solver
A quantity that may be of interest when considering magnetic effects for a (pseudo)spin confined to a semiconductor nanostructure is the \(g\)-tensor. This tensor describes how the two-level system making up the pseudospin of interest couples to a magnetic field. Concretely, the \(g\)-tensor is defined through the effective Zeeman Hamiltonian projected onto the subspace spanned by the two levels \(\left\{|0\rangle, |1\rangle\right\}\):
where \(\mathbf{g}\) is the subspace-dependent \(g\)-tensor and \(\mathbf s = \left(s_0, s_1, s_2, s_3\right)\) is the pseudospin vector in the \(\left\{|0\rangle, |1\rangle\right\}\) subspace:
We construct the effective Zeeman Hamiltonian using the following steps.
Choose a basis for the two-level system of interest. This step typically involves running a TB Schrödinger
Solver
and choosing two of the TB Hamiltonian eigenstates as a basis for a relevant pseudospin. In the case where the two states are degenerate, in principle, any orthonormal linear combination of them can be used as a basis. The specific choice depends on the details of the physical system/experiment being modeled.Evaluate the matrix elements of the magnetic-field-dependent terms of the tight-binding (TB) Hamiltonian.
Within the TB framework, the effective Zeeman Hamiltonian \(H_Z^{\mathrm{eff}}\) may be obtained by:
evaluating the \(\mathbf B\)-dependent terms of the TB Hamiltonian, as described in Magnetic effects;
projecting them onto the two-level subspace of interest \(\left\{|0\rangle, |1\rangle\right\}\).
Since \(H_Z^{\mathrm{eff}}\) is linear in \(\mathbf B\) [see Eq. (6.8)], we must expand the TB Hamiltonian to first order in \(\mathbf B\). The Zeeman term of Eq. (5.27) is already linear in \(\mathbf B\). The Peierls phase of Eq. (6.10) can be expanded to first order in \(\mathbf B\) to give:
where we have used the symmetric gauge for the vector potential:
We denote the resulting linearized magnetic Hamiltonian as \(H^{\mathrm{lin}}(\mathbf B)\). Performing the projection onto the two-level subspace:
where \(\sigma, \sigma^{\prime} \in \{0, 1\}\). Using properties of spin operators and Pauli matrices we have:
where \(G_i\) is the \(i^{\mathrm{th}}\) column of the \(\mathbf{g}\)-tensor. By performing this operation for all \(i\), we can extract all the components of \(\mathbf{g}\).
This procedure is implemented in the
Solver
class of the
qtcad.atoms.g_tensor
module.
Zeeman splitting
While the \(g\)-tensor parameterizes the effective Zeeman Hamiltonian in a given two-level subspace, it can also be used to compute quantities that are directly measurable in experiments. For example, the \(g\)-tensor can be used to compute the splitting \(\Delta\) between the two levels of the two-level system in a given magnetic field \(\mathbf B\). Concretely, this splitting is given by the difference in eigenenegies of the effective Zeeman Hamiltonian \(H_Z^{\mathrm{eff}}\) of Eq. (6.8). Often, this splitting is parametrized by an effective \(g\)-factor, \(g^{\star}\) which is defined via:
Here, the effective \(g\)-factor can depend on the direction of the magnetic field, \(\hat{\mathbf B}\). Because the effective Zeeman Hamiltonian is linear in \(\mathbf B\), the dependence on the magnitude of the magnetic field is given explicitly.
In principle, the energy splitting described above can be computed directly from a full TB calculation by looking at the eigenvalues of the full TB Hamiltonian. However, these calculations, performed over the entire atomic structure, are often computationally expensive since they require a full calculation for each considered magnetic field. In contrast, the \(g\)-tensor can be computed from a single TB calculation. Once the \(g\)-tensor is computed, the Zeeman splitting for any magnetic field can be computed by diagonalizing the associated \(2 \times 2\) effective Zeeman Hamiltonian of Eq. (6.8).
Zeeman splittings can be computed from the \(g\)-tensor using the
get_Zeeman_splitting
method of the
Solver
class.
Additionally, the eigenenergies and eigenstates of the effective Zeeman
Hamiltonian can be computed using the
diagonalize_effective_Zeeman
method of the Solver
class.