Coverage for gpaw/test/test_ibzqpt.py: 100%

23 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-07-19 00:19 +0000

1import numpy as np 

2from ase.build import bulk 

3from gpaw import GPAW 

4from ase.dft.kpoints import monkhorst_pack 

5 

6 

7def test_ibzqpt(): 

8 for kpt in (3, 4): 

9 kpts = (kpt, kpt, kpt) 

10 bzk_kc = monkhorst_pack(kpts) 

11 shift_c = [] 

12 for Nk in kpts: 

13 if Nk % 2 == 0: 

14 shift_c.append(0.5 / Nk) 

15 else: 

16 shift_c.append(0.) 

17 bzk_kc += shift_c 

18 

19 atoms = bulk('Si', 'diamond', a=5.431) 

20 calc = GPAW(mode='fd', 

21 h=0.2, 

22 kpts=bzk_kc) 

23 

24 atoms.calc = calc 

25 atoms.get_potential_energy() 

26 

27 kd = calc.wfs.kd 

28 bzq_qc = kd.get_bz_q_points() 

29 ibzq_qc = kd.get_ibz_q_points(bzq_qc, calc.wfs.kd.symmetry.op_scc)[0] 

30 

31 assert np.abs(bzq_qc - kd.bzk_kc).sum() < 1e-8 

32 assert np.abs(ibzq_qc - kd.ibzk_kc).sum() < 1e-8