qtcad.atoms.g_tensor module
- class Solver(atoms: Atoms, states: Tuple[Wavefunction, Wavefunction], solver_params: SolverParams = None)
Bases:
SolverCalculator of \(g\)-tensor associated with two atomistic tight-binding wavefunctions.
The calculation of \(g\)-tensors is only available in atomic structures without periodic boundary conditions.
- Attributes:
atoms (
Atoms) – Atomic structure.states (tuple of
Wavefunction) – Eigenstate wavefunctions.tb_orbs (str) – Atomic orbital basis set to be 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.
g (Numpy.ndarray) – \(g\)-tensor.
solver_params (
SolverParams) – Parameters of the \(g\)-tensor solver.
- __init__(atoms: Atoms, states: Tuple[Wavefunction, Wavefunction], solver_params: SolverParams = None) None
Initialize the Zeeman operator matrix.
- Parameters:
atoms (
Atoms) – Atomic structure over which the \(g\)-tensor is computed.states (tuple of
Wavefunction) – Eigenstate wavefunctions. The \(g\)-tensor is computed for a pair of states. Therefore the length of the tuple should be 2.solver_params (
SolverParams, optional) – Parameters of the \(g\)-tensor solver. If None, parameters are set to reasonable defaults. Default: None.
- diagonalize_effective_Zeeman(B: ndarray | Tuple[float, float, float]) Tuple[ndarray, ndarray]
Diagonalize the effective Zeeman Hamiltonian in the two-dimensional subspace spanned by the two states of interest.
The effective Zeeman Hamiltonian is given by \(H_Z = \mu_B \mathbf{B} \cdot \mathbf{g}\cdot\mathbf{S}\), where \(\mathbf{S}\) is the pseudospin operator (defined in the space spanned by
states), \(\mu_B\) is the Bohr magneton, \(\mathbf{g}\) is the effective \(g\)-tensor, and \(\mathbf{B}\) is the magnetic field.- Parameters:
B (tuple or Numpy.ndarray) – Vector of the Cartesian coordinates of an external, constant magnetic field.
- Returns:
Two-element tuple containing –
Numpy.ndarray- Vector containing the eigenenergies of the effective Zeeman Hamiltonian in the two-dimensional subspace spanned by the two states of interest.Numpy.ndarray: \(2\times 2\) matrix whose columns run over the corresponding eigenvectors and rows over the basis (defined bystates).
Note
If the solver does not have the
gattribute (i.e. if the \(g\)-tensor has not been stored), the \(g\)-tensor is computed using thesolvemethod.
- get_Zeeman_splitting(B: ndarray | Tuple[float, float, float]) float
Compute the Zeeman splitting for a given magnetic field using the effective Zeeman Hamiltonian with the computed effective \(g\)-tensor.
- Parameters:
B (tuple or Numpy.ndarray) – Vector of the Cartesian coordinates of an external, constant magnetic field.
- Returns:
float – Energy splitting between the two states of interest.
Note
If the solver does not have the
gattribute (i.e. if the \(g\)-tensor has not been stored), the \(g\)-tensor is computed using thesolvemethod.
- solve() ndarray
Compute the \(g\)-tensor for the given pair of states.
- Returns:
Numpy.ndarray – The \(g\)-tensor \(\mathbf{g}\) for the given pair of states. The effective Zeeman Hamiltonian in the two-dimensional subspace spanned by the two states of interest is given by \(\mu_B \mathbf{B} \cdot \mathbf{g}\cdot\mathbf{S}\), where \(\mathbf{S}\) is a pseudospin operator and \(\mu_B\) is the Bohr magneton. The pseudospin operator is given by \(\mathbf{S}=(\sigma_0, \sigma_1, \sigma_2, \sigma_3)/2\), where \(\sigma_0\) is the identity matrix and \(\sigma_i\), \(i \in \{1, 2, 3\}\), are the Pauli matrices.
- class SolverParams(inp_dict=None)
Bases:
SolverParamsParameters to pass to a \(g\)-tensor solver.
- Attributes:
zeeman (bool) – Whether the Zeeman effect is considered, which effectively amounts to considering the Zeeman Hamiltonian \(-\mathbf{\mu}\cdot\mathbf{B}\), where \(\mathbf{\mu}\) is the magnetic moment and \(\mathbf{B}\) is the magnetic field. Default: True.
peierls (bool) – Whether to include the Peierls substitution, which effectively amounts to replacing the standard momentum \(\mathbf{p}\) by the generalized momentum \(\mathbf{p}-e\mathbf{A}\), where \(e\) is the elementary charge and \(\mathbf{A}\) is the magnetic vector potential. Default: True.