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 conversion to and from XML."""
88
89
90 self.interpreter.results.write(ds.tmpfile, dir=None, compress_type=0)
91
92
93 self.interpreter.pipe.create('new', 'N-state')
94
95
96 self.interpreter.results.read(ds.tmpfile, dir=None)
97
98
99 self.assertEqual(len(cdp.align_tensors), 10)
100 self.assert_(hasattr(cdp.align_tensors, 'reduction'))
101 for i in range(5):
102
103 if i == 1:
104 self.assertAlmostEqual(cdp.align_tensors[i*2].Axx, 1.0)
105 else:
106 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxx, self.tensors_full[i][0])
107 self.assertAlmostEqual(cdp.align_tensors[i*2].Syy, self.tensors_full[i][1])
108 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxy, self.tensors_full[i][2])
109 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxz, self.tensors_full[i][3])
110 self.assertAlmostEqual(cdp.align_tensors[i*2].Syz, self.tensors_full[i][4])
111 self.assertEqual(cdp.align_tensors[i*2].name, self.full_list[i])
112
113
114 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxx, self.tensors_red[i][0])
115 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Syy, self.tensors_red[i][1])
116 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxy, self.tensors_red[i][2])
117 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxz, self.tensors_red[i][3])
118 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Syz, self.tensors_red[i][4])
119 self.assertEqual(cdp.align_tensors[i*2+1].name, self.red_list[i])
120
121
122 self.assertEqual(cdp.align_tensors.reduction[i], [i*2, i*2+1])
123