qtcad.atoms.g_tensor module
- class qtcad.atoms.g_tensor.Solver(atoms: Atoms, states: Tuple[Wavefunction, Wavefunction], solver_params: SolverParams = None)
Bases:
SolverCalculator of \(g\)-tensor associated with two atomistic tight-binding wavefunctions.
- Attributes:
atoms (qtcad.atoms.atoms.Atoms) – Atomic structure.
states (tuple of qtcad.atoms.wavefunction.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 (qtcad.atoms.g_tensor.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 (qtcad.atoms.atoms.Atoms) – Atomic structure over which the \(g\)-tensor is computed.
states (tuple of qtcad.atoms.wavefunction.Wavefunction) – Eigenstate wavefunctions. The \(g\)-tensor is computed for a pair of states. Therefore the length of the tuple should be 2.
solver_params (qtcad.atoms.g_tensor.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
self.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 by
self.states).
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 theqtcad.atoms.g_tensor.Solver.solve()method.
- 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 theqtcad.atoms.g_tensor.Solver.solve()method.
- 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 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 qtcad.atoms.g_tensor.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.
- __init__(inp_dict=None) None
- Parameters:
inp_dict (dict, optional) – Dictionary specifying certain solver parameters to be used instead of their default values.