Coverage for gpaw/test/generic/test_asym_box.py: 100%
24 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
1"""Check for change in total energy and lowest eigenvalue regarding to box."""
2from ase import Atoms
3from ase.parallel import parprint
4from gpaw import GPAW, PoissonSolver
5from gpaw.utilities.adjust_cell import adjust_cell
6import pytest
9def test_generic_asym_box(in_tmp_dir):
10 h = 0.2
11 s = Atoms('He')
12 adjust_cell(s, 3, h=h)
14 c = GPAW(mode='fd', charge=1, txt='He_plus.txt',
15 poissonsolver=PoissonSolver(use_charge_center=True),
16 convergence={ # run fast
17 'energy': 0.001,
18 'eigenstates': 1e-4,
19 'density': 1e-3})
20 s.calc = c
21 e_small = s.get_potential_energy()
22 eps_small = c.get_eigenvalues()[0]
24 cell = s.get_cell()
25 cell[0] *= 2
26 s.set_cell(cell)
27 e_big = s.get_potential_energy()
28 eps_big = c.get_eigenvalues()[0]
30 parprint('Energies and Eigenvalues:')
31 parprint(' Small Box Wide Box')
32 parprint('E: {0:9.3f} {1:9.3f}'.format(e_small, e_big))
33 parprint('eps: {0:9.3f} {1:9.3f}'.format(eps_small, eps_big))
34 assert e_small == pytest.approx(e_big, abs=2.5e-4)
35 assert eps_small == pytest.approx(eps_big, abs=6e-4)