Coverage for gpaw/test/eigen/test_blocked_rmm_diis.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 Atom, Atoms
3from gpaw import GPAW, Mixer, RMMDIIS
4import pytest
7def test_eigen_blocked_rmm_diis(in_tmp_dir):
8 a = 4.0
9 n = 20
10 d = 1.0
11 x = d / 3**0.5
12 atoms = Atoms([Atom('C', (0.0, 0.0, 0.0)),
13 Atom('H', (x, x, x)),
14 Atom('H', (-x, -x, x)),
15 Atom('H', (x, -x, -x)),
16 Atom('H', (-x, x, -x))],
17 cell=(a, a, a), pbc=True)
18 base_params = dict(
19 mode='fd',
20 gpts=(n, n, n),
21 nbands=4,
22 mixer=Mixer(0.25, 3, 1))
23 calc = GPAW(**base_params, txt='a.txt', eigensolver='rmm-diis')
24 atoms.calc = calc
25 e0 = atoms.get_potential_energy()
26 niter0 = calc.get_number_of_iterations()
28 es = RMMDIIS(blocksize=3)
29 calc = GPAW(**base_params, txt='b.txt', eigensolver=es)
30 atoms.calc = calc
31 e1 = atoms.get_potential_energy()
32 niter1 = calc.get_number_of_iterations()
33 assert e0 == pytest.approx(e1, abs=0.000001)
34 assert niter0 == pytest.approx(niter1, abs=0)