Coverage for gpaw/test/lcao/test_lcao_elpa_kpts.py: 94%

18 statements  

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

1import pytest 

2from gpaw.utilities.elpa import LibElpa 

3from ase.build import bulk 

4from gpaw import GPAW 

5from gpaw.mpi import world 

6 

7# Run single SCF iteration and compare total energy with elpa vs. scalapack 

8 

9pytestmark = pytest.mark.skipif(not LibElpa.have_elpa(), 

10 reason='not LibElpa.have_elpa()') 

11 

12 

13def test_lcao_lcao_elpa_kpts(gpaw_new): 

14 if gpaw_new and world.size == 8: 

15 pytest.skip('Not implementted') 

16 

17 energies = [] 

18 

19 for elpasolver in [None, '1stage', '2stage']: 

20 atoms = bulk('Al') 

21 calc = GPAW(mode='lcao', basis='sz(dzp)', 

22 kpts=[2, 2, 2], 

23 parallel=dict(sl_auto=True, 

24 use_elpa=elpasolver is not None, 

25 band=2 if world.size > 4 else 1, 

26 kpt=2 if world.size > 2 else 1, 

27 elpasolver=elpasolver), 

28 convergence={'maximum iterations': 2}, 

29 txt='-') 

30 atoms.calc = calc 

31 E = atoms.get_potential_energy() 

32 energies.append(E) 

33 

34 err = abs(E - energies[0]) 

35 assert err < 1e-10, ' '.join(['err', 

36 str(err), 'energies:', str(energies)])