Coverage for gpaw/test/xc/test_revPBE_Li.py: 100%

21 statements  

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

1from ase import Atoms 

2from ase.units import Hartree 

3from gpaw import GPAW, PoissonSolver, FermiDirac, Davidson, MixerSum 

4import pytest 

5 

6 

7def test_xc_revPBE_Li(): 

8 a = 5.0 

9 n = 24 

10 li = Atoms('Li', magmoms=[1.0], cell=(a, a, a), pbc=True) 

11 

12 params = dict( 

13 mode='fd', 

14 gpts=(n, n, n), 

15 nbands=1, 

16 xc=dict(name='oldPBE', stencil=1), 

17 poissonsolver=PoissonSolver(), 

18 mixer=MixerSum(0.6, 5, 10.0), 

19 eigensolver=Davidson(4), 

20 convergence=dict(eigenstates=4.5e-8), 

21 occupations=FermiDirac(0.0)) 

22 

23 li.calc = GPAW(**params) 

24 e = li.get_potential_energy() + li.calc.get_reference_energy() 

25 assert e == pytest.approx(-7.462 * Hartree, abs=1.4) 

26 

27 params['xc'] = dict(name='revPBE', stencil=1) 

28 li.calc = GPAW(**params) 

29 erev = li.get_potential_energy() + li.calc.get_reference_energy() 

30 

31 assert erev == pytest.approx(-7.487 * Hartree, abs=1.3) 

32 assert e - erev == pytest.approx(0.025 * Hartree, abs=0.002 * Hartree) 

33 

34 print(e, erev) 

35 energy_tolerance = 0.002 

36 assert e == pytest.approx(-204.381098849, abs=energy_tolerance) 

37 assert erev == pytest.approx(-205.012303379, abs=energy_tolerance)