PAOFLOW.projection.do_non_ortho#
Functions#
|
Apply a non-orthogonality transformation to the PAO Hamiltonian. |
Module Contents#
- PAOFLOW.projection.do_non_ortho.do_non_ortho(Hks, Sks)[source]#
Apply a non-orthogonality transformation to the PAO Hamiltonian.
- Parameters:
Hks (np.ndarray, shape
(nawf, nawf, nkpnts, nspin)) – Orthogonal PAO Hamiltonian in k-space (as produced byprojwfcor the PAO builder).Sks (np.ndarray, shape
(nawf, nawf, nkpnts)or larger) – Overlap matrix in k-space. Only the firstnawf x nawfblock is used.
- Returns:
Symmetrically orthogonalised Hamiltonian \(S^{1/2} H S^{1/2}\) for each k-point and spin channel.
- Return type:
np.ndarray, shape
(nawf, nawf, nkpnts, nspin)
Notes
When the PAO basis is non-orthogonal, the PAO Hamiltonian obtained from
projwfcmust be transformed to an orthogonal representation before diagonalisation. The transformation is\[\tilde{H}(\mathbf{k}) = S^{1/2}(\mathbf{k})\, H(\mathbf{k})\, S^{1/2}(\mathbf{k})\]where \(S^{1/2}\) is the matrix square root of the overlap matrix, computed via
scipy.linalg.sqrtm()for each k-point independently. The eigenvalues of \(\tilde{H}\) are identical to those of the generalised eigenvalue problem \(H \mathbf{v} = E S \mathbf{v}\).