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
« 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
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)
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)