1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 from tempfile import mktemp
25
26
27 from base_classes import SystemTestCase
28 from data import Relax_data_store; ds = Relax_data_store()
29
30
32 """Class for testing various aspects specific to the alignment tensors."""
33
35 """Function for initialising a few alignment tensors."""
36
37
38 self.interpreter.pipe.create('test', 'N-state')
39
40
41 ds.tmpfile = mktemp()
42
43
44 self.full_list = ['0 full', '1 full', '2 full', '3 full', '4 full']
45 self.red_list = ['0 red', '1 red', '2 red', '3 red', '4 red']
46
47
48 error = 1.47411211147e-05
49
50
51 self.tensors_full = [
52 (0.00014221982216882766, -0.00014454300156652134, -0.00070779621164871397, -0.00060161949408277324, 0.00020200800707295083),
53 (-0.00014307694949297205, -0.00039671919293883539, -0.00024724524395487659, 0.00031948292975139144, 0.00018868359624777637),
54 (-0.00022967898444150887, -0.00027171643813494106, -0.00021961563147411279, 0.00010337393266477703, 0.00029030226175831515),
55 (0.00043690692358615301, -0.00034379559287467062, -0.00019359695171683388, 0.00030194133983804048, -6.314162250164486e-05),
56 (-0.00026249527958822807, 0.00073561736796410628, 6.3975419225898133e-05, 6.2788017118057252e-05, 0.00020119758245770023)
57 ]
58 self.tensors_red = [
59 (-0.0004037026160192775, 0.00023172423501111316, -0.00020915186581478394, -0.00028817367472760139, -8.7172337025481604e-05),
60 (0.0003767999506688964, -0.00021492227011444111, 0.00019620694392616774, 0.00027163215478635274, 8.147201253457049e-05),
61 (0.00025970120925482461, -0.00014782823602910519, 0.00013565269563569894, 0.00018741173517420359, 5.6252903270026344e-05),
62 (0.00014574884684542708, -8.3162940224598374e-05, 7.4927100277784987e-05, 0.00010508245294401461, 3.1156238348722986e-05),
63 (-0.00011267453337899962, 6.412308037476237e-05, -5.7897942333203444e-05, -8.1865863377039068e-05, -2.5273427585025123e-05)
64 ]
65
66
67 for i in range(5):
68
69 self.interpreter.align_tensor.init(tensor=self.full_list[i], params=self.tensors_full[i], param_types=0)
70 self.interpreter.align_tensor.init(tensor=self.red_list[i], params=self.tensors_red[i], param_types=0)
71
72
73 self.interpreter.align_tensor.init(tensor=self.full_list[i], params=(error, error, error, error, error), param_types=0, errors=True)
74 self.interpreter.align_tensor.init(tensor=self.red_list[i], params=(error, error, error, error, error), param_types=0, errors=True)
75
76
77 self.interpreter.align_tensor.set_domain(tensor=self.full_list[i], domain='full')
78 self.interpreter.align_tensor.set_domain(tensor=self.red_list[i], domain='red')
79
80
81 self.interpreter.align_tensor.reduction(full_tensor=self.full_list[i], red_tensor=self.red_list[i])
82
83
84 cdp.align_tensors[2].Axx = 1
85
86
88 """Test the conversion to and from XML."""
89
90
91 self.interpreter.results.write(ds.tmpfile, dir=None, compress_type=0)
92
93
94 self.interpreter.pipe.create('new', 'N-state')
95
96
97 self.interpreter.results.read(ds.tmpfile, dir=None)
98
99
100 self.assertEqual(len(cdp.align_tensors), 10)
101 self.assert_(hasattr(cdp.align_tensors, 'reduction'))
102 for i in range(5):
103
104 if i == 1:
105 self.assertAlmostEqual(cdp.align_tensors[i*2].Axx, 1.0)
106 else:
107 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxx, self.tensors_full[i][0])
108 self.assertAlmostEqual(cdp.align_tensors[i*2].Syy, self.tensors_full[i][1])
109 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxy, self.tensors_full[i][2])
110 self.assertAlmostEqual(cdp.align_tensors[i*2].Sxz, self.tensors_full[i][3])
111 self.assertAlmostEqual(cdp.align_tensors[i*2].Syz, self.tensors_full[i][4])
112 self.assertEqual(cdp.align_tensors[i*2].name, self.full_list[i])
113
114
115 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxx, self.tensors_red[i][0])
116 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Syy, self.tensors_red[i][1])
117 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxy, self.tensors_red[i][2])
118 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Sxz, self.tensors_red[i][3])
119 self.assertAlmostEqual(cdp.align_tensors[i*2+1].Syz, self.tensors_red[i][4])
120 self.assertEqual(cdp.align_tensors[i*2+1].name, self.red_list[i])
121
122
123 self.assertEqual(cdp.align_tensors.reduction[i], [i*2, i*2+1])
124