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
« 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
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)
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))
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)
27 params['xc'] = dict(name='revPBE', stencil=1)
28 li.calc = GPAW(**params)
29 erev = li.get_potential_energy() + li.calc.get_reference_energy()
31 assert erev == pytest.approx(-7.487 * Hartree, abs=1.3)
32 assert e - erev == pytest.approx(0.025 * Hartree, abs=0.002 * Hartree)
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)