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

1import pytest 

2from ase import Atoms 

3from ase.optimize import BFGS 

4 

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 

9 

10 

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