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
« 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
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))
15 start = time.perf_counter()
16 GG_shuffle(G_G, 1, A_GG, B_GG)
17 Cversion = time.perf_counter() - start
19 start = time.perf_counter()
20 B2_GG = A_GG.copy()[:, G_G][G_G]
21 numpymagic = time.perf_counter() - start
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)