PAOFLOW.projection.do_minimal#
Attributes#
Functions#
|
Remove low-energy bands from the Hamiltonian via block diagonalisation. |
Module Contents#
- PAOFLOW.projection.do_minimal.rank[source]#
L S Cederbaum, J Schirmer and H-D Meyer J. Phys. A: Mat. Gen. 22, 2427 (1989)
The formula for the block diagonal part of the S matrix is from: B.N. Parlett, The symmetric eigenvalue problem (SIAM’s Classics in Applied Mathematics, 1998) pag. 45, sec. 3.1.1 remark n. 5.
- PAOFLOW.projection.do_minimal.do_minimal(data_controller, first_band)[source]#
Remove low-energy bands from the Hamiltonian via block diagonalisation.
- Parameters:
data_controller (DataController) – Object providing
data_arraysanddata_attributes. Required array:Hksp(shape(nkpnts, nawf, nawf, nspin)). Required attributes:nawf,nspin,nkpnts. Also readsbasisfromdata_arrays.first_band (int) – Index of the first band to retain. Bands with indices
0, 1, ..., first_band-1are projected out.
- Returns:
Modifies
data_controller.data_arraysanddata_controller.data_attributesin place:Hksp: np.ndarray, shape(nkpnts, nawf-first_band, nawf-first_band, nspin)— the reduced Hamiltonian after projecting out the lowestfirst_bandbands.Dnm: np.ndarray, shape(nawf-first_band, nawf-first_band, 3)— position-difference matrix for the retained orbitals.
Updates attribute:
nawf = nawf - first_band.- Return type:
None
Notes
The block diagonalisation follows the algorithm of Cederbaum, Schirmer, and Meyer (J. Phys. A 22, 2427, 1989). At each k-point the full Hamiltonian is diagonalised, its eigenvector matrix is partitioned into a \((2 \times 2)\) block structure, and a similarity transformation \(T\) is constructed such that \(T^\dagger H T\) is block-diagonal. The lower-right
(nawf - first_band) x (nawf - first_band)block is retained as the reduced Hamiltonian.Small random perturbations (amplitude \(10^{-4}\)) are added to the block matrices to break accidental degeneracies before inversion.