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

13 statements  

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

1import numpy as np 

2from ase.units import Hartree as Ha 

3 

4from gpaw.response.g0w0 import G0W0 

5 

6 

7def test_diamond_mpa(in_tmp_dir, gpw_files): 

8 ref_results_mp1 = np.array([[[11.48389, 18.685187]]]) 

9 ref_results_mp8 = np.array([[[11.239777, 18.591851]]]) 

10 ref_results = {1: ref_results_mp1, 8: ref_results_mp8} 

11 

12 for npols in [1, 8]: 

13 gw = G0W0(calc=gpw_files['c2_gw_more_bands'], 

14 kpts=[0], 

15 bands=(3, 5), 

16 ecut=200, 

17 ecut_extrapolation=True, 

18 integrate_gamma='WS', 

19 mpa={'npoles': npols, 'wrange': [0, 200 if npols > 1 else 0], 

20 'varpi': Ha, 'eta0': 1e-10, 'eta_rest': 0.1 * Ha, 

21 'alpha': 1}, 

22 filename=f'C-g0w0_mp{npols}') 

23 

24 results = gw.calculate() 

25 direct_gap = results['qp'][0, 0, 1] - results['qp'][0, 0, 0] 

26 print(f'Direct gap mp{npols}:', direct_gap) 

27 np.testing.assert_allclose(results['qp'], ref_results[npols], 

28 rtol=1e-02)