Coverage for gpaw/test/test_fixdensity.py: 94%
35 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-08 00:17 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-08 00:17 +0000
1import pytest
2from ase import Atoms
4from gpaw import GPAW
5from gpaw.calculator import DeprecatedParameterWarning as OldDPW
6from gpaw.dft import DeprecatedParameterWarning as NewDPW
9@pytest.mark.ci
10def test_fixdensity(in_tmp_dir, gpaw_new):
11 a = 2.5
12 slab = Atoms('Li', cell=(a, a, 2 * a), pbc=1)
13 slab.calc = GPAW(mode='fd', kpts=(3, 3, 1), txt='li-1.txt',
14 parallel=dict(kpt=1))
15 slab.get_potential_energy()
16 slab.calc.write('li.gpw')
18 # Gamma point:
19 e1 = slab.calc.get_eigenvalues(kpt=0)[0]
20 f1 = slab.calc.get_fermi_level()
22 kpts = [(0, 0, 0)]
24 # Fix density and continue:
25 calc = slab.calc.fixed_density(
26 txt='li-2.txt',
27 nbands=5,
28 kpts=kpts)
29 e2 = calc.get_eigenvalues(kpt=0)[0]
30 f2 = calc.get_fermi_level()
32 # Start from gpw-file:
33 calc = GPAW('li.gpw')
34 calc = calc.fixed_density(
35 txt='li-3.txt',
36 nbands=5,
37 kpts=kpts)
38 e3 = calc.get_eigenvalues(kpt=0)[0]
39 f3 = calc.get_fermi_level()
40 assert f2 == pytest.approx(f1, abs=1e-10)
41 assert f3 == pytest.approx(f1, abs=1e-10)
42 assert e2 == pytest.approx(e1, abs=3e-5)
43 assert e3 == pytest.approx(e1, abs=3e-5)
44 o3 = calc.get_occupation_numbers(kpt=0, raw=True)[0]
46 if gpaw_new:
47 assert o3 == pytest.approx(1.0)
48 return
50 calc = GPAW('li.gpw',
51 txt='li-4.txt',
52 fixdensity=True,
53 nbands=5,
54 kpts=kpts,
55 symmetry='off')
57 with pytest.warns((OldDPW, NewDPW)):
58 calc.get_potential_energy()
59 e4 = calc.get_eigenvalues(kpt=0)[0]
61 assert e4 == pytest.approx(e1, abs=3e-5)