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

1# Copyright (C) 2003 CAMP 

2# Please see the accompanying LICENSE file for further information. 

3 

4import pytest 

5import numpy as np 

6from gpaw.grid_descriptor import GridDescriptor 

7from gpaw.transformers import Transformer 

8 

9 

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) 

17 

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 

24 

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 

31 

32 # complex versions 

33 a = gd.empty(dtype=complex) 

34 a.real = rng.random(a.shape) 

35 a.imag = rng.random(a.shape) 

36 

37 phase = np.ones((3, 2), complex) 

38 

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 

45 

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