Coverage for gpaw/test/parallel/test_augment_grid.py: 100%
32 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-20 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-20 00:19 +0000
1import numpy as np
2from gpaw import GPAW
3from ase.build import molecule
4from gpaw.mpi import world
7def test_parallel_augment_grid(in_tmp_dir):
8 system = molecule('H2O')
9 system.cell = (4, 4, 4)
10 system.pbc = 1
12 for mode in ['fd',
13 'pw',
14 'lcao'
15 ]:
16 energy = []
17 force = []
18 stress = []
20 if mode != 'lcao':
21 eigensolver = 'rmm-diis'
22 else:
23 eigensolver = None
25 domain = 1 + (world.size >= 2)
26 band = 1 + (world.size >= 4)
28 for augment_grids in 0, 1:
29 if world.rank == 0:
30 print(mode, augment_grids)
31 calc = GPAW(mode=mode,
32 gpts=(20, 20, 20),
33 txt='gpaw.%s.%d.txt' % (mode, int(augment_grids)),
34 eigensolver=eigensolver,
35 parallel=dict(augment_grids=augment_grids,
36 band=band, domain=domain),
37 basis='szp(dzp)',
38 kpts=[1, 1, 4],
39 nbands=8,
40 # Iterate enough for density to update so it depends
41 # on potential
42 convergence={'maximum iterations':
43 3 if mode == 'lcao' else 5})
44 system.calc = calc
45 energy.append(system.get_potential_energy())
46 force.append(system.get_forces())
47 if mode == 'pw':
48 stress.append(system.get_stress())
49 ferr = np.abs(force[1] - force[0]).max()
50 eerr = abs(energy[1] - energy[0])
51 if mode == 'pw':
52 _ = np.abs(stress[1] - stress[0]).max()
54 assert eerr < 1e-10, eerr
55 assert ferr < 1e-10, ferr