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

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 

7 

8 

9def test_generic_asym_box(in_tmp_dir): 

10 h = 0.2 

11 s = Atoms('He') 

12 adjust_cell(s, 3, h=h) 

13 

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] 

23 

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] 

29 

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)