Coverage for gpaw/test/symmetry/test_symmetrize_wGG.py: 100%

23 statements  

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

1from gpaw.cgpaw import GG_shuffle 

2import numpy as np 

3import time 

4 

5 

6def test_GG_shuffle(rng): 

7 N = 1000 

8 G_G = np.arange(N, dtype=np.int32) 

9 rng.shuffle(G_G) 

10 A_GG = np.zeros((N, N), dtype=np.complex128) 

11 B_GG = np.zeros((N, N), dtype=np.complex128) 

12 A_GG[:] = rng.random((N, N)) 

13 A_GG[:] += 1j * rng.random((N, N)) 

14 

15 start = time.perf_counter() 

16 GG_shuffle(G_G, 1, A_GG, B_GG) 

17 Cversion = time.perf_counter() - start 

18 

19 start = time.perf_counter() 

20 B2_GG = A_GG.copy()[:, G_G][G_G] 

21 numpymagic = time.perf_counter() - start 

22 

23 print('Speedup ', numpymagic / Cversion) 

24 assert np.allclose(B_GG, B2_GG) 

25 B_GG[:] = 0.0 

26 GG_shuffle(G_G, -1, A_GG, B_GG) 

27 B2_GG = A_GG.copy()[:, G_G][G_G].T 

28 assert np.allclose(B_GG, B2_GG)