Coverage for gpaw/test/response/test_gw_sg15.py: 100%

22 statements  

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

1from ase.build import molecule 

2from gpaw import GPAW, PW 

3from gpaw.response.g0w0 import G0W0 

4from gpaw.mpi import world 

5import pytest 

6 

7 

8@pytest.mark.response 

9def test_gw_sg15(in_tmp_dir, add_cwd_to_setup_paths): 

10 from gpaw.test.pseudopotential.H_sg15 import pp_text 

11 if world.rank == 0: 

12 with open('H_ONCV_PBE-1.0.upf', 'w') as pp_file: 

13 print(pp_text, file=pp_file) 

14 world.barrier() 

15 sys = molecule('H2', pbc=True) 

16 sys.center(vacuum=2.5) 

17 

18 calc = GPAW(setups='sg15', 

19 xc='PBE', mode=PW(ecut=300), 

20 convergence={'bands': 40, 

21 'density': 1e-6}, 

22 nbands=50, kpts=(2, 2, 2)) 

23 sys.calc = calc 

24 sys.get_potential_energy() 

25 calc.write('gs.gpw', mode='all') 

26 

27 gw = G0W0(calc='gs.gpw', 

28 bands=(1, 6), 

29 ecut=20, 

30 nblocksmax=True, 

31 filename='H2_g0w0_b11-15') 

32 results = gw.calculate() 

33 refs = pytest.approx([1.58177132, 3.33595453, 3.87312694, 4.95358262, 

34 6.09555254], abs=2e-5) 

35 assert results['qp'][0][0] == refs