Coverage for gpaw/utilities/pw.py: 20%
15 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-08 00:17 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-08 00:17 +0000
1import numpy as np
2from gpaw.utilities import unpack_hermitian
5def kinetic_energies(psit, projections, setups):
6 """Calculate kinetic energies of states."""
7 T_G = 0.5 * psit.pd.G2_qG[psit.kpt]
8 ekin_n = []
9 for psit_G in psit.array:
10 ekin_n.append(psit.pd.integrate(psit_G, T_G * psit_G).real)
12 ekincore = 0.0
13 ekin_n = np.array(ekin_n)
14 for a, setup in enumerate(setups):
15 K_ii = unpack_hermitian(setup.K_p)
16 P_ni = projections[a]
17 ekin_n += np.einsum('ni, ij, nj -> n', P_ni.conj(), K_ii, P_ni).real
18 ekincore += setup.Kc
20 return ekincore, ekin_n