Salome HOME
updated copyright message
[modules/med.git] / src / MEDCalculator / Swig / MEDCalculatorBasicsTest.py
1 # Copyright (C) 2007-2023  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, or (at your option) any later version.
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 # Author : Anthony Geay (CEA/DEN)
20
21 from MEDCalculator import *
22 import unittest
23
24 #self.assertEqual(int(expected2[i]),a4.getIJ(0,i));
25 #self.assertTrue(a2.getInfoOnComponent(2)=="ffff");
26 #self.assertRaises(Exception,a2.keepSelectedComponents,arr5V);
27 #self.assertAlmostEqual(2.3,t,13);
28
29 class MEDCalculatorBasicsTest(unittest.TestCase):
30     def test1(self):
31         e=MEDCalculatorBrowserLiteStruct("hfile1.med")
32         f=e.getField(0)
33         Power=MEDCalculatorDBFieldReal(f)
34         Power2=Power[:,:,2:4]+Power[:,:,3:5]
35         Power3=Power[:,:,2:4]+Power(":",":","3:5")
36         self.assertTrue(Power2.isEqual(Power3,1e-12,1e-12))
37         Power2=2+Power2
38         self.assertTrue(not Power2.isEqual(Power3,1e-12,1e-12))
39         Power2=Power2-2
40         self.assertTrue(Power2.isEqual(Power3,1e-10,1e-10))
41         Power2=2*Power2
42         self.assertTrue(not Power2.isEqual(Power3,1e-12,1e-12))
43         Power2=Power2/2
44         self.assertTrue(Power2.isEqual(Power3,1e-12,1e-12))
45         Power2=Power2*2
46         Power2.setName('Power2')
47         Power2.write("hfile2.med",True)
48         e=MEDCalculatorBrowserLiteStruct("hfile2.med")
49         f=e.getField(0)
50         Power4=MEDCalculatorDBFieldReal(f)
51         self.assertTrue(Power2.isEqual(Power4,1e-12,1e-12))
52         pass
53     
54     def test2(self):
55         e=MEDCalculatorBrowserLiteStruct("hfile1.med")
56         f=e.getField(0)
57         Power=MEDCalculatorDBFieldReal(f)
58         v=Power.getValues()
59         self.assertEqual(10,len(v));
60         for i in range(10):
61             v1=v[i]
62             self.assertEqual(35,len(v1))
63             l=0
64             for j in range(5):
65                 for k in range(7):
66                     self.assertAlmostEqual((i+1)*100.+(j+1)*10.+k+1,v1[l],12);
67                     l+=1
68                     pass
69                 pass
70             pass
71         p1=Power[2:4,:,:]
72         v=p1.getValues()
73         self.assertEqual(2,len(v));
74         for i in range(2):
75             v1=v[i]
76             self.assertEqual(35,len(v1))
77             l=0
78             for j in range(5):
79                 for k in range(7):
80                     self.assertAlmostEqual((i+3)*100.+(j+1)*10.+k+1,v1[l],12);
81                     l+=1
82                     pass
83                 pass
84             pass
85         p2=Power[3:7,:,2:5]
86         v=p2.getValues()
87         self.assertEqual(4,len(v));
88         for i in range(4):
89             v1=v[i]
90             self.assertEqual(15,len(v1))
91             l=0
92             for j in range(5):
93                 for k in range(3):
94                     self.assertAlmostEqual((i+4)*100.+(j+1)*10.+k+3,v1[l],12);
95                     l+=1
96                     pass
97                 pass
98             pass
99         #
100         p3=Power[0:4,:,2:4].dot(Power[6:,:,3:5])
101         v=p3.getValues()
102         self.assertEqual(4,len(v));
103         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]]
104         for i in range(4):
105             v1=v[i]
106             self.assertEqual(5,len(v1))
107             l=0
108             for j in range(5):
109                 self.assertAlmostEqual(expected[i][j],v1[l],8);
110                 l+=1
111                 pass
112             pass
113         #
114         Power[:,:,2:4]=7.
115         v=Power.getValues()
116         self.assertEqual(10,len(v));
117         for i in range(10):
118             v1=v[i]
119             self.assertEqual(35,len(v1))
120             l=0
121             for j in range(5):
122                 for k in range(2):
123                     self.assertAlmostEqual((i+1)*100.+(j+1)*10.+k+1,v1[l],12);
124                     l+=1
125                     pass
126                 self.assertAlmostEqual(7.,v1[l],12);
127                 l+=1
128                 self.assertAlmostEqual(7.,v1[l],12);
129                 l+=1
130                 for k in range(3):
131                     self.assertAlmostEqual((i+1)*100.+(j+1)*10.+k+5,v1[l],12);
132                     l+=1
133                     pass
134                 pass
135             pass
136         Power[1:5,:,3]=p3
137         v=Power[1:5,:,:].getValues()
138         self.assertEqual(4,len(v));
139         for i in range(4):
140             v1=v[i]
141             self.assertEqual(35,len(v1))
142             l=0
143             for j in range(5):
144                 for k in range(2):
145                     self.assertAlmostEqual((i+2)*100.+(j+1)*10.+k+1,v1[l],12);
146                     l+=1
147                     pass
148                 self.assertAlmostEqual(7.,v1[l],12);
149                 l+=1
150                 self.assertAlmostEqual(expected[i][j],v1[l],8);
151                 l+=1
152                 for k in range(3):
153                     self.assertAlmostEqual((i+2)*100.+(j+1)*10.+k+5,v1[l],12);
154                     l+=1
155                     pass
156                 pass
157             pass
158         Power[:,:,1:].eigenValues()
159         Power[:]=0.07
160         pass
161     def setUp(self):
162         pass
163     pass
164
165 unittest.main()