Coverage for gpaw/test/pw/test_slab.py: 100%
19 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-20 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-20 00:19 +0000
1import pytest
2from ase import Atoms
3from ase.optimize import BFGS
5from gpaw import PW
6from gpaw.new.ase_interface import GPAW as NewGPAW
7from gpaw.calculator import GPAW as OldGPAW
8from gpaw.mpi import world
11@pytest.mark.parametrize(
12 'gpu, GPAW',
13 [(False, OldGPAW),
14 (False, NewGPAW),
15 pytest.param(True, NewGPAW, marks=pytest.mark.gpu)])
16def test_pw_slab(gpu, GPAW):
17 a = 2.65
18 slab = Atoms('Li2',
19 [(0, 0, 0), (0, 0, a)],
20 cell=(a, a, 3 * a),
21 pbc=True)
22 k = 4
23 parallel = {'band': min(world.size, 4)}
24 if gpu:
25 parallel['gpu'] = True
26 calc = GPAW(mode=PW(200),
27 eigensolver='rmm-diis',
28 parallel=parallel,
29 kpts=(k, k, 1))
30 slab.calc = calc
31 BFGS(slab).run(fmax=0.01)
32 assert abs(slab.get_distance(0, 1) - 2.46) < 0.01