Coverage for gpaw/test/response/test_gw_mpa.py: 100%
13 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-14 00:18 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-14 00:18 +0000
1import pytest
2import numpy as np
3from gpaw.response.g0w0 import G0W0
4from ase.units import Hartree as Ha
5from gpaw.mpi import world
8@pytest.mark.response
9@pytest.mark.parametrize('wigner_seitz', [True, False])
10def test_mpa_WS(in_tmp_dir, gpw_files, scalapack, wigner_seitz):
12 ref_result = {True: np.array([[[11.37680608, 21.56391991],
13 [5.40811023, 16.11600678],
14 [8.83575046, 22.42880098]]]),
15 False: np.asarray([[[11.283458, 21.601906],
16 [5.326717, 16.066114],
17 [8.73869, 22.457025]]])}
19 mpa_dict = {'npoles': 4, 'wrange': [0 * Ha, 2 * Ha],
20 'varpi': Ha,
21 'eta0': 0.01 * Ha,
22 'eta_rest': 0.1 * Ha,
23 'alpha': 1}
25 gw = G0W0(gpw_files['bn_pw'],
26 bands=(3, 5),
27 nblocks=min(2, world.size),
28 ecut=40 + 20 * wigner_seitz,
29 nbands=9,
30 integrate_gamma='WS' if wigner_seitz else 'sphere',
31 mpa=mpa_dict)
33 results = gw.calculate()
34 np.testing.assert_allclose(results['qp'], ref_result[wigner_seitz],
35 rtol=1e-03)