qtcad.atoms.g_tensor module
- class qtcad.atoms.g_tensor.Solver(atoms: Atoms, states: Tuple[Wavefunction, Wavefunction], solver_params: SolverParams = None)
Bases:
Solver
Calculator 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
g
attribute (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
g
attribute (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:
SolverParams
Parameters 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.