Coverage for gpaw/test/lrtddft2/test_parameters.py: 100%
34 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-09 00:21 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-09 00:21 +0000
1import pytest
2from contextlib import contextmanager
4from gpaw import GPAW
5from gpaw.lrtddft2 import LrTDDFT2
8@contextmanager
9def no_error():
10 yield
13pytestmark = pytest.mark.usefixtures('module_tmp_path')
16@pytest.mark.lrtddft
17@pytest.mark.parametrize('max_energy_diff, expectation', [
18 (15, pytest.raises(RuntimeError, match=r'.* HOMO \(n=3\) .*')),
19 (10, no_error())])
20def test_max_energy_diff(gpw_files, max_energy_diff, expectation,
21 in_tmp_dir):
22 calc = GPAW(gpw_files['h20_lr2_nbands6'])
23 with expectation:
24 LrTDDFT2('lr2', calc, fxc='LDA', max_energy_diff=max_energy_diff)
27@pytest.mark.lrtddft
28@pytest.mark.parametrize('min_occ', [None, 0])
29@pytest.mark.parametrize('min_unocc', [None, 0])
30@pytest.mark.parametrize('max_occ', [None, 5])
31@pytest.mark.parametrize('max_unocc', [None, 5])
32def test_indices_with_max_energy_diff(gpw_files, min_occ, min_unocc,
33 max_occ, max_unocc, in_tmp_dir):
34 calc = GPAW(gpw_files['h20_lr2_nbands6'])
36 if (min_occ is None or min_unocc is None
37 or max_occ is None or max_unocc is None):
38 expectation = pytest.raises(RuntimeError)
39 else:
40 expectation = no_error()
42 with expectation:
43 LrTDDFT2('lr2', calc, fxc='LDA', max_energy_diff=15,
44 min_occ=min_occ, min_unocc=min_unocc,
45 max_occ=max_occ, max_unocc=max_unocc)
48@pytest.mark.lrtddft
49@pytest.mark.parametrize('min_occ', [None, 0])
50@pytest.mark.parametrize('min_unocc', [None, 0])
51@pytest.mark.parametrize('max_occ', [None, 5])
52@pytest.mark.parametrize('max_unocc', [None, 5])
53def test_indices(gpw_files, min_occ, min_unocc,
54 max_occ, max_unocc, in_tmp_dir):
55 calc = GPAW(gpw_files['h20_lr2_nbands6'])
56 LrTDDFT2('lr2', calc, fxc='LDA',
57 min_occ=min_occ, min_unocc=min_unocc,
58 max_occ=max_occ, max_unocc=max_unocc)