Coverage for gpaw/test/parallel/test_kptpar.py: 42%
26 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
1# see changeset 4891
2import pytest
3import numpy as np
4from ase import Atoms
5from gpaw import GPAW
6from gpaw.mpi import world
9def test_parallel_kptpar(in_tmp_dir):
10 a = 2.5
11 H = Atoms('H', cell=[a, a, a], pbc=True)
13 energy_tolerance = 0.0006
15 base_params = dict(mode='fd', kpts=[6, 6, 1], spinpol=True)
16 if world.size >= 3:
17 calc = GPAW(**base_params,
18 parallel={'domain': world.size},
19 txt='H-a.txt')
20 H.calc = calc
21 e1 = H.get_potential_energy()
22 assert H.calc.wfs.kd.comm.size == 1
24 assert e1 == pytest.approx(-2.23708481, abs=energy_tolerance)
26 if world.rank < 3:
27 comm = world.new_communicator(np.array([0, 1, 2]))
28 H.calc = GPAW(**base_params,
29 communicator=comm,
30 txt='H-b.txt')
31 e2 = H.get_potential_energy()
32 assert H.calc.wfs.kd.comm.size == 3
33 assert e2 == pytest.approx(e1, abs=5e-9)
34 else:
35 comm = world.new_communicator(np.array(range(3, world.size)))
36 H.calc = GPAW(**base_params,
37 communicator=comm,
38 parallel={'kpt': comm.size},
39 txt='H-b2.txt')
40 e2 = H.get_potential_energy()
41 assert e2 == pytest.approx(e1, abs=5e-9)