Coverage for gpaw/test/response/test_bse_exclude_states.py: 100%

19 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-07-08 00:17 +0000

1import pytest 

2from gpaw import GPAW 

3from gpaw.response.bse import BSE 

4 

5 

6@pytest.mark.response 

7def test_bse_exclude_states(in_tmp_dir, gpw_files): 

8 eshift = 0.8 

9 bse = BSE(gpw_files['si_gw_a0_all'], 

10 ecut=50., 

11 valence_bands=range(1, 4), 

12 conduction_bands=range(4, 7), 

13 deps_max=6, 

14 eshift=eshift, 

15 nbands=8) 

16 bse_matrix = bse.get_bse_matrix() 

17 w_T, v_Rt, exclude_S = bse.diagonalize_bse_matrix(bse_matrix) 

18 

19 calc = GPAW(gpw_files['si_gw_a0_all']) 

20 nk = calc.wfs.kd.nbzkpts 

21 nval = 3 

22 ncond = 3 

23 n_pairs = nk * nval * ncond 

24 assert len(exclude_S) == 27 

25 assert len(w_T) == n_pairs - len(exclude_S) 

26 assert w_T[0] == pytest.approx(0.1008, abs=0.001) 

27 assert w_T[11] == pytest.approx(0.1262, abs=0.001) 

28 assert w_T[29] == pytest.approx(0.1888, abs=0.001)