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 the qtcad.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 the qtcad.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.