1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from tempfile import mktemp
24
25
26 from data import Relax_data_store; ds = Relax_data_store()
27 from test_suite.system_tests.base_classes import SystemTestCase
28
29
31 """Class for testing various aspects specific to the alignment tensors."""
32
34 """Function for initialising a few alignment tensors."""
35
36
37 self.interpreter.pipe.create('test', 'N-state')
38
39
40 ds.tmpfile = mktemp()
41
42
43 self.full_list = ['0 full', '1 full', '2 full', '3 full', '4 full']
44 self.red_list = ['0 red', '1 red', '2 red', '3 red', '4 red']
45
46
47 error = 1.47411211147e-05
48
49
50 self.tensors_full = [
51 (0.00014221982216882766, -0.00014454300156652134, -0.00070779621164871397, -0.00060161949408277324, 0.00020200800707295083),
52 (-0.00014307694949297205, -0.00039671919293883539, -0.00024724524395487659, 0.00031948292975139144, 0.00018868359624777637),
53 (-0.00022967898444150887, -0.00027171643813494106, -0.00021961563147411279, 0.00010337393266477703, 0.00029030226175831515),
54 (0.00043690692358615301, -0.00034379559287467062, -0.00019359695171683388, 0.00030194133983804048, -6.314162250164486e-05),
55 (-0.00026249527958822807, 0.00073561736796410628, 6.3975419225898133e-05, 6.2788017118057252e-05, 0.00020119758245770023)
56 ]
57 self.tensors_red = [
58 (-0.0004037026160192775, 0.00023172423501111316, -0.00020915186581478394, -0.00028817367472760139, -8.7172337025481604e-05),
59 (0.0003767999506688964, -0.00021492227011444111, 0.00019620694392616774, 0.00027163215478635274, 8.147201253457049e-05),
60 (0.00025970120925482461, -0.00014782823602910519, 0.00013565269563569894, 0.00018741173517420359, 5.6252903270026344e-05),
61 (0.00014574884684542708, -8.3162940224598374e-05, 7.4927100277784987e-05, 0.00010508245294401461, 3.1156238348722986e-05),
62 (-0.00011267453337899962, 6.412308037476237e-05, -5.7897942333203444e-05, -8.1865863377039068e-05, -2.5273427585025123e-05)
63 ]
64
65
66 for i in range(5):
67
68 self.interpreter.align_tensor.init(tensor=self.full_list[i], params=self.tensors_full[i], param_types=0)
69 self.interpreter.align_tensor.init(tensor=self.red_list[i], params=self.tensors_red[i], param_types=0)
70
71
72 self.interpreter.align_tensor.init(tensor=self.full_list[i], params=(error, error, error, error, error), param_types=0, errors=True)
73 self.interpreter.align_tensor.init(tensor=self.red_list[i], params=(error, error, error, error, error), param_types=0, errors=True)
74
75
76 self.interpreter.align_tensor.set_domain(tensor=self.full_list[i], domain='full')
77 self.interpreter.align_tensor.set_domain(tensor=self.red_list[i], domain='red')
78
79
80 self.interpreter.align_tensor.reduction(full_tensor=self.full_list[i], red_tensor=self.red_list[i])
81
82
83 cdp.align_tensors[2].set(param='Axx', value=1)
84
85
87 """Test the copying of alignment tensors (to catch U{bug #20338<https://web.archive.org/web/https://gna.org/bugs/?20338>}."""
88
89
90 self.interpreter.reset()
91
92
93 self.interpreter.pipe.create('copy test', 'N-state')
94
95
96 self.interpreter.align_tensor.init(tensor='orig', params=self.tensors_full[0], param_types=0)
97
98
99 self.interpreter.align_tensor.copy(tensor_from='orig', tensor_to='new')
100
101
102 self.assertEqual(len(cdp.align_tensors), 2)
103 self.assertEqual(cdp.align_tensors[0].name, 'orig')
104 self.assertEqual(cdp.align_tensors[1].name, 'new')
105
106
108 """Test the align_tensor.fix user function."""
109
110
111 self.interpreter.align_tensor.fix()
112
113
114 self.interpreter.align_tensor.fix('2 full', fixed=False)
115
116
117 flags = [True]*10
118 flags[4] = False
119 for i in range(10):
120 print("Checking the tensor %s: '%s'." % (i, cdp.align_tensors[i].name))
121 self.assertEqual(cdp.align_tensors[i].fixed, flags[i])
122
123
125 """Test the conversion to and from XML."""
126
127
128 self.interpreter.results.write(ds.tmpfile, dir=None, compress_type=0)
129
130
131 self.interpreter.pipe.create('new', 'N-state')
132
133
134 self.interpreter.results.read(ds.tmpfile, dir=None)
135
136
137 self.assertEqual(len(cdp.align_tensors), 10)
138 self.assert_(hasattr(cdp.align_tensors, 'reduction'))
139 for i in range(5):
140
141 if i == 1:
142 self.assertAlmostEqual(cdp.align_tensors[i*2].Axx, 1.0)
143 else:
144 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxx, self.tensors_full[i][0])
145 self.assertAlmostEqual(cdp.align_tensors[i*2].Syy, self.tensors_full[i][1])
146 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxy, self.tensors_full[i][2])
147 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxz, self.tensors_full[i][3])
148 self.assertAlmostEqual(cdp.align_tensors[i*2].Syz, self.tensors_full[i][4])
149 self.assertEqual(cdp.align_tensors[i*2].name, self.full_list[i])
150
151
152 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxx, self.tensors_red[i][0])
153 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Syy, self.tensors_red[i][1])
154 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxy, self.tensors_red[i][2])
155 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxz, self.tensors_red[i][3])
156 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Syz, self.tensors_red[i][4])
157 self.assertEqual(cdp.align_tensors[i*2+1].name, self.red_list[i])
158
159
160 self.assertEqual(cdp.align_tensors.reduction[i], [i*2, i*2+1])
161