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

1import pytest 

2from contextlib import contextmanager 

3 

4from gpaw import GPAW 

5from gpaw.lrtddft2 import LrTDDFT2 

6 

7 

8@contextmanager 

9def no_error(): 

10 yield 

11 

12 

13pytestmark = pytest.mark.usefixtures('module_tmp_path') 

14 

15 

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) 

25 

26 

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']) 

35 

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

41 

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) 

46 

47 

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)