Coverage for gpaw/test/fd_ops/test_transformations.py: 100%
39 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
1# Copyright (C) 2003 CAMP
2# Please see the accompanying LICENSE file for further information.
4import pytest
5import numpy as np
6from gpaw.grid_descriptor import GridDescriptor
7from gpaw.transformers import Transformer
10@pytest.mark.ci
11def test_fd_ops_transformations():
12 n = 20
13 gd = GridDescriptor((n, n, n))
14 rng = np.random.RandomState(8)
15 a = gd.empty()
16 a[:] = rng.random(a.shape)
18 gd2 = gd.refine()
19 b = gd2.zeros()
20 for k in [2, 4, 6, 8]:
21 inter = Transformer(gd, gd2, k // 2).apply
22 inter(a, b)
23 assert abs(gd.integrate(a) - gd2.integrate(b)) < 1e-14
25 gd2 = gd.coarsen()
26 b = gd2.zeros()
27 for k in [2, 4, 6, 8]:
28 restr = Transformer(gd, gd2, k // 2).apply
29 restr(a, b)
30 assert abs(gd.integrate(a) - gd2.integrate(b)) < 1e-14
32 # complex versions
33 a = gd.empty(dtype=complex)
34 a.real = rng.random(a.shape)
35 a.imag = rng.random(a.shape)
37 phase = np.ones((3, 2), complex)
39 gd2 = gd.refine()
40 b = gd2.zeros(dtype=complex)
41 for k in [2, 4, 6, 8]:
42 inter = Transformer(gd, gd2, k // 2, complex).apply
43 inter(a, b, phase)
44 assert abs(gd.integrate(a) - gd2.integrate(b)) < 1e-14
46 gd2 = gd.coarsen()
47 b = gd2.zeros(dtype=complex)
48 for k in [2, 4, 6, 8]:
49 restr = Transformer(gd, gd2, k // 2, complex).apply
50 restr(a, b, phase)
51 assert abs(gd.integrate(a) - gd2.integrate(b)) < 1e-14