PAOFLOW.spectrum.do_eigh#
Functions#
|
Detect degenerate eigenvalue groups for all k-points and spin channels. |
|
Diagonalise the PAO Hamiltonian on the local k-point subset. |
|
Diagonalise the Hamiltonian on an arbitrary k-mesh via Fourier interpolation. |
|
Evaluate the Bloch Hamiltonian \(H(\mathbf{k})\) on a set of k-points. |
|
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
< bndare 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-pointikand spin channelispin. Groups involving at least two bands are reported; singletons are omitted.- Return type:
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_arraysanddata_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 byget_degeneracies()restricted to the firstbndbands.
- 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)), orNonewhenread_SisFalse.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