Coverage for gpaw/test/response/test_bse_parse_bands.py: 100%
19 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
1import pytest
2import numpy as np
3from gpaw.response.bse import BSE
6@pytest.mark.response
7def test_response_bse_parse_bands(in_tmp_dir, gpw_files):
9 bse = BSE(gpw_files['mos2_pw'],
10 ecut=10,
11 valence_bands=4,
12 conduction_bands=3,
13 eshift=0.8,
14 nbands=15)
16 # Check consistency with written results
17 n_valence_bands = int(bse.gs.nvalence / 2)
18 correct_valence_n = range(n_valence_bands - 4, n_valence_bands)
19 correct_conduction_n = range(n_valence_bands, n_valence_bands + 3)
21 assert np.array_equal(correct_valence_n, bse.val_m)
22 assert np.array_equal(correct_conduction_n, bse.con_m)
24 bse = BSE(gpw_files['mos2_pw'],
25 ecut=10,
26 add_soc=True,
27 valence_bands=8,
28 conduction_bands=6,
29 eshift=0.8,
30 nbands=15)
32 # Check consistency with written results
33 n_valence_bands = bse.gs.nvalence
34 correct_valence_n = range(n_valence_bands - 8, n_valence_bands)
35 correct_conduction_n = range(n_valence_bands, n_valence_bands + 6)
37 assert np.array_equal(correct_valence_n, bse.val_m)
38 assert np.array_equal(correct_conduction_n, bse.con_m)
40 with pytest.raises(ValueError,
41 match='The bands must be specified as a single *'):
42 BSE(gpw_files['bse_al'],
43 valence_bands=[range(4), range(4)],
44 conduction_bands=5,
45 nbands=4,
46 ecut=10)