PAOFLOW.spectrum.do_eigh#

Functions#

get_degeneracies(E_k, bnd)

Detect degenerate eigenvalue groups for all k-points and spin channels.

do_pao_eigh(data_controller)

Diagonalise the PAO Hamiltonian on the local k-point subset.

do_eigh_calc(HRaux, SRaux, kq, R, read_S)

Diagonalise the Hamiltonian on an arbitrary k-mesh via Fourier interpolation.

band_loop_H(HRaux, kq, R)

Evaluate the Bloch Hamiltonian \(H(\mathbf{k})\) on a set of k-points.

band_loop_S(SRaux, kq, R)

Evaluate the overlap matrix \(S(\mathbf{k})\) on a set of k-points.

Module Contents#

PAOFLOW.spectrum.do_eigh.get_degeneracies(E_k, bnd)[source]#

Detect degenerate eigenvalue groups for all k-points and spin channels.

Parameters:
  • E_k (np.ndarray, shape (nkpnts, nawf, nspin)) – Eigenvalues in eV.

  • bnd (int) – Only bands with indices < bnd are considered.

Returns:

all_degen[ispin][ik] is a list of 1-D integer arrays, each containing the band indices that belong to a degenerate group at k-point ik and spin channel ispin. Groups involving at least two bands are reported; singletons are omitted.

Return type:

list of list of list of np.ndarray

Notes

Degeneracy is determined by rounding eigenvalues to 5 decimal places and comparing adjacent values with a relative tolerance of \(10^{-5}\) eV.

PAOFLOW.spectrum.do_eigh.do_pao_eigh(data_controller)[source]#

Diagonalise the PAO Hamiltonian on the local k-point subset.

Parameters:

data_controller (DataController) – Object providing data_arrays and data_attributes. Required array: Hksp (shape (snktot, nawf, nawf, nspin)) — the Hamiltonian on the local k-point slice. Required attribute: bnd.

Returns:

Adds the following entries to data_controller.data_arrays:

  • E_k : np.ndarray, shape (snktot, nawf, nspin) — eigenvalues in ascending order (eV).

  • v_k : np.ndarray, shape (snktot, nawf, nawf, nspin), complex — corresponding eigenvectors (columns).

  • degen : nested list — degenerate band groups, as returned by get_degeneracies() restricted to the first bnd bands.

Return type:

None

PAOFLOW.spectrum.do_eigh.do_eigh_calc(HRaux, SRaux, kq, R, read_S)[source]#

Diagonalise the Hamiltonian on an arbitrary k-mesh via Fourier interpolation.

Parameters:
  • HRaux (np.ndarray, shape (nawf, nawf, nk1, nk2, nk3, nspin), complex) – Real-space PAO Hamiltonian.

  • SRaux (np.ndarray or None) – Real-space overlap matrix (shape (nawf, nawf, nk1, nk2, nk3)), or None when read_S is False.

  • kq (np.ndarray, shape (nkpi, 3)) – k-points in Cartesian coordinates.

  • R (np.ndarray, shape (nrtot, 3)) – Real-space lattice vectors.

  • read_S (bool) – When True, the generalised eigenvalue problem \(H v = \varepsilon S v\) is solved.

Returns:

  • E_kp (np.ndarray, shape (nkpi, nawf, nspin)) – Band eigenvalues (eV).

  • v_kp (np.ndarray, shape (nkpi, nawf, nawf, nspin), complex) – Corresponding eigenvectors.

PAOFLOW.spectrum.do_eigh.band_loop_H(HRaux, kq, R)[source]#

Evaluate the Bloch Hamiltonian \(H(\mathbf{k})\) on a set of k-points.

Parameters:
  • HRaux (np.ndarray, shape (nawf, nawf, nk1, nk2, nk3, nspin), complex) – Real-space Hamiltonian.

  • kq (np.ndarray, shape (nkpi, 3)) – k-points in Cartesian coordinates.

  • R (np.ndarray, shape (nrtot, 3)) – Real-space lattice vectors in units of \(1/a_{\rm lat}\).

Returns:

\(H(\mathbf{k})\) evaluated at each requested k-point.

Return type:

np.ndarray, shape (nawf, nawf, nkpi, nspin), complex

PAOFLOW.spectrum.do_eigh.band_loop_S(SRaux, kq, R)[source]#

Evaluate the overlap matrix \(S(\mathbf{k})\) on a set of k-points.

Parameters:
  • SRaux (np.ndarray, shape (nawf, nawf, nk1, nk2, nk3), complex) – Real-space overlap matrix.

  • kq (np.ndarray, shape (nkpi, 3)) – k-points in Cartesian coordinates.

  • R (np.ndarray, shape (nrtot, 3)) – Real-space lattice vectors in units of \(1/a_{\rm lat}\).

Returns:

\(S(\mathbf{k})\) evaluated at each requested k-point.

Return type:

np.ndarray, shape (nawf, nawf, nkpi), complex