Coverage for gpaw/test/test_fermilevel.py: 100%
23 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 numpy as np
2import pytest
3from ase import Atoms
5from gpaw import GPAW, Davidson, FermiDirac
8def test_fermilevel(in_tmp_dir):
9 atoms = Atoms('He', pbc=True)
10 atoms.center(vacuum=3)
11 params = dict(mode='fd',
12 nbands=1,
13 eigensolver=Davidson(6),
14 occupations=FermiDirac(0.0),
15 txt=None)
17 atoms.calc = GPAW(**params)
18 atoms.get_potential_energy()
19 assert np.isinf(atoms.calc.get_fermi_level())
21 params['nbands'] = 3
22 params['convergence'] = {'bands': 2}
23 atoms.calc = GPAW(**params)
24 atoms.get_potential_energy()
26 homo, lumo = atoms.calc.get_homo_lumo()
27 assert homo == pytest.approx(-15.4473, abs=0.01)
28 assert lumo == pytest.approx(-0.2566, abs=0.01)
30 atoms.calc.write('test.gpw')
31 print(GPAW('test.gpw').get_homo_lumo(), homo, lumo)
32 assert np.all(GPAW('test.gpw').get_homo_lumo() == (homo, lumo))
33 ef = atoms.calc.get_fermi_level()
34 assert ef == pytest.approx(-7.85196, abs=0.01)