test_field.py 2.91 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Theo Steininger's avatar
Theo Steininger committed
13
14
15
16
17
#
# Copyright(C) 2013-2017 Max-Planck-Society
#
# NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik
# and financially supported by the Studienstiftung des deutschen Volkes.
18
19
20
21
22
23
24

import unittest

import numpy as np
from numpy.testing import assert_,\
                          assert_equal

25
from itertools import product
26
27
28
29
30
31
32
33

from nifty import Field,\
                  RGSpace,\
                  FieldArray

from d2o import distributed_data_object,\
                STRATEGIES

Jait Dixit's avatar
Jait Dixit committed
34
from test.common import expand
35
36
37

np.random.seed(123)

Martin Reinecke's avatar
Martin Reinecke committed
38
SPACES = [RGSpace((4,)), RGSpace((5))]
Theo Steininger's avatar
Theo Steininger committed
39
SPACE_COMBINATIONS = [(), SPACES[0], SPACES[1], SPACES]
40
41
42


class Test_Interface(unittest.TestCase):
43
    @expand(product(SPACE_COMBINATIONS,
Martin Reinecke's avatar
Martin Reinecke committed
44
                    [['distribution_strategy', str],
45
46
47
48
49
50
51
52
53
54
                     ['domain', tuple],
                     ['domain_axes', tuple],
                     ['val', distributed_data_object],
                     ['shape', tuple],
                     ['dim', np.int],
                     ['dof', np.int],
                     ['total_volume', np.float]]))
    def test_return_types(self, domain, attribute_desired_type):
        attribute = attribute_desired_type[0]
        desired_type = attribute_desired_type[1]
55
        f = Field(domain=domain)
56
57
        assert_(isinstance(getattr(f, attribute), desired_type))

Martin Reinecke's avatar
Martin Reinecke committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
    def test_hermitian_decomposition2(self):
        s1=(25,2)
        s2=(16,)
        ax1=((0,1,2),)
        ax2=((0,1),(2,))
        r2 = RGSpace(s1+s2, harmonic=True)
        ra = RGSpace(s1, harmonic=True)
        rb = RGSpace(s2, harmonic=True)
        v = np.empty(s1+s2,dtype=np.complex128)
        v.real = np.random.random(s1+s2)
        v.imag = np.random.random(s1+s2)
        f1=Field(r2,val=v,copy=True)
        f2=Field((ra,rb),val=v,copy=True)
        h2,a2 = Field._hermitian_decomposition((RGSpace(s1, harmonic=True),
                RGSpace(s2, harmonic=True)),f2.val,(0,1),ax2,False)
        h1,a1 = Field._hermitian_decomposition((RGSpace(s1+s2, harmonic=True),),
                f1.val,(0,),ax1,False)
        assert(np.max(np.abs(h1-h2))<1e-10)
        assert(np.max(np.abs(a1-a2))<1e-10)

78
79
80
81
82
83
#class Test_Initialization(unittest.TestCase):
#
#    @parameterized.expand(
#        itertools.product(SPACE_COMBINATIONS,
#                          []
#                          )
Jait Dixit's avatar
Jait Dixit committed
84
#    def test_