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

1import numpy as np 

2from gpaw.utilities import unpack_hermitian 

3 

4 

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) 

11 

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 

19 

20 return ekincore, ekin_n