Salome HOME
74b5c6166e6e469ab88405a7bdd68261adf530e7
[modules/med.git] / src / MEDCalculator / Swig / MEDCalculatorBasicsTest.py
1 # Copyright (C) 2007-2012  CEA/DEN, EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 from MEDCalculator import *
21 import unittest
22
23 #self.assertEqual(int(expected2[i]),a4.getIJ(0,i));
24 #self.assertTrue(a2.getInfoOnComponent(2)=="ffff");
25 #self.assertRaises(Exception,a2.keepSelectedComponents,arr5V);
26 #self.assertAlmostEqual(2.3,t,13);
27
28 class MEDCalculatorBasicsTest(unittest.TestCase):
29     def test1(self):
30         e=MEDCalculatorBrowserLiteStruct("hfile1.med")
31         f=e.getField(0)
32         Power=MEDCalculatorDBFieldReal(f)
33         Power2=Power[:,:,2:4]+Power[:,:,3:5]
34         Power3=Power[:,:,2:4]+Power(":",":","3:5")
35         self.assertTrue(Power2.isEqual(Power3,1e-12,1e-12))
36         Power2=2+Power2
37         self.assertTrue(not Power2.isEqual(Power3,1e-12,1e-12))
38         Power2=Power2-2
39         self.assertTrue(Power2.isEqual(Power3,1e-10,1e-10))
40         Power2=2*Power2
41         self.assertTrue(not Power2.isEqual(Power3,1e-12,1e-12))
42         Power2=Power2/2
43         self.assertTrue(Power2.isEqual(Power3,1e-12,1e-12))
44         Power2=Power2*2
45         Power2.setName('Power2')
46         Power2.write("hfile2.med",True)
47         e=MEDCalculatorBrowserLiteStruct("hfile2.med")
48         f=e.getField(0)
49         Power4=MEDCalculatorDBFieldReal(f)
50         self.assertTrue(Power2.isEqual(Power4,1e-12,1e-12))
51         pass
52     
53     def test2(self):
54         e=MEDCalculatorBrowserLiteStruct("hfile1.med")
55         f=e.getField(0)
56         Power=MEDCalculatorDBFieldReal(f)
57         v=Power.getValues()
58         self.assertEqual(10,len(v));
59         for i in xrange(10):
60             v1=v[i]
61             self.assertEqual(35,len(v1))
62             l=0
63             for j in xrange(5):
64                 for k in xrange(7):
65                     self.assertAlmostEqual((i+1)*100.+(j+1)*10.+k+1,v1[l],12);
66                     l+=1
67                     pass
68                 pass
69             pass
70         p1=Power[2:4,:,:]
71         v=p1.getValues()
72         self.assertEqual(2,len(v));
73         for i in xrange(2):
74             v1=v[i]
75             self.assertEqual(35,len(v1))
76             l=0
77             for j in xrange(5):
78                 for k in xrange(7):
79                     self.assertAlmostEqual((i+3)*100.+(j+1)*10.+k+1,v1[l],12);
80                     l+=1
81                     pass
82                 pass
83             pass
84         p2=Power[3:7,:,2:5]
85         v=p2.getValues()
86         self.assertEqual(4,len(v));
87         for i in xrange(4):
88             v1=v[i]
89             self.assertEqual(15,len(v1))
90             l=0
91             for j in xrange(5):
92                 for k in xrange(3):
93                     self.assertAlmostEqual((i+4)*100.+(j+1)*10.+k+3,v1[l],12);
94                     l+=1
95                     pass
96                 pass
97             pass
98         #
99         p3=Power[0:4,:,2:4].dot(Power[6:,:,3:5])
100         v=p3.getValues()
101         self.assertEqual(4,len(v));
102         expected=[[162192.0, 178952.0, 196112.0, 213672.0, 231632.0], [347792.0, 368552.0, 389712.0, 411272.0, 433232.0], [573392.0, 598152.0, 623312.0, 648872.0, 674832.0], [838992.0, 867752.0, 896912.0, 926472.0, 956432.0]]
103         for i in xrange(4):
104             v1=v[i]
105             self.assertEqual(5,len(v1))
106             l=0
107             for j in xrange(5):
108                 self.assertAlmostEqual(expected[i][j],v1[l],8);
109                 l+=1
110                 pass
111             pass
112         #
113         Power[:,:,2:4]=7.
114         v=Power.getValues()
115         self.assertEqual(10,len(v));
116         for i in xrange(10):
117             v1=v[i]
118             self.assertEqual(35,len(v1))
119             l=0
120             for j in xrange(5):
121                 for k in xrange(2):
122                     self.assertAlmostEqual((i+1)*100.+(j+1)*10.+k+1,v1[l],12);
123                     l+=1
124                     pass
125                 self.assertAlmostEqual(7.,v1[l],12);
126                 l+=1
127                 self.assertAlmostEqual(7.,v1[l],12);
128                 l+=1
129                 for k in xrange(3):
130                     self.assertAlmostEqual((i+1)*100.+(j+1)*10.+k+5,v1[l],12);
131                     l+=1
132                     pass
133                 pass
134             pass
135         Power[1:5,:,3]=p3
136         v=Power[1:5,:,:].getValues()
137         self.assertEqual(4,len(v));
138         for i in xrange(4):
139             v1=v[i]
140             self.assertEqual(35,len(v1))
141             l=0
142             for j in xrange(5):
143                 for k in xrange(2):
144                     self.assertAlmostEqual((i+2)*100.+(j+1)*10.+k+1,v1[l],12);
145                     l+=1
146                     pass
147                 self.assertAlmostEqual(7.,v1[l],12);
148                 l+=1
149                 self.assertAlmostEqual(expected[i][j],v1[l],8);
150                 l+=1
151                 for k in xrange(3):
152                     self.assertAlmostEqual((i+2)*100.+(j+1)*10.+k+5,v1[l],12);
153                     l+=1
154                     pass
155                 pass
156             pass
157         Power[:,:,1:].eigenValues()
158         Power[:]=0.07
159         pass
160     def setUp(self):
161         pass
162     pass
163
164 unittest.main()