Coverage for gpaw/test/lrtddft/test_dielectric.py: 100%

31 statements  

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

1from pathlib import Path 

2import pytest 

3from ase import Atom, Atoms 

4from gpaw import GPAW 

5from gpaw.lrtddft import LrTDDFT 

6from gpaw.lrtddft.dielectric import get_dielectric, dielectric 

7 

8 

9@pytest.fixture 

10def H2(): 

11 R = 0.7 # approx. experimental bond length 

12 a = 3.0 

13 c = 4.0 

14 H2 = Atoms([Atom('H', (a / 2, a / 2, (c - R) / 2)), 

15 Atom('H', (a / 2, a / 2, (c + R) / 2))], 

16 cell=(a, a, c)) 

17 

18 H2.calc = GPAW(mode='fd', h=0.25, nbands=3, spinpol=False, txt=None) 

19 H2.get_potential_energy() 

20 return H2 

21 

22 

23@pytest.fixture 

24def lrtddft(H2): 

25 exlst = LrTDDFT(txt=None) 

26 exlst.calculate(H2) 

27 return exlst 

28 

29 

30@pytest.mark.lrtddft 

31def test_get(H2, lrtddft): 

32 energies, eps1, eps2, N, K, R = get_dielectric(lrtddft, H2.get_volume()) 

33 for res in [eps1, eps2, N, K, R]: 

34 assert energies.shape == res.shape 

35 assert (energies >= 0).all() 

36 

37 

38@pytest.mark.lrtddft 

39def test_write(H2, lrtddft, in_tmp_dir): 

40 fname = 'dielectric.dat' 

41 dielectric(lrtddft, H2.get_volume(), fname) 

42 assert Path(fname).is_file()