Salome HOME
Copyright update 2020
[tools/medcoupling.git] / src / MEDLoader / Swig / MEDLoaderTest2.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2020  CEA/DEN, EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 # Author : Anthony Geay (CEA/DEN)
21
22 from MEDLoader import *
23 import unittest
24 from math import pi,e,sqrt
25 from MEDLoaderDataForTest import MEDLoaderDataForTest,WriteInTmpDir
26 from MEDLoaderDataForTest import TestWriteUMeshesRW1,TestMultiFieldShuffleRW1
27
28 class MEDLoaderTest2(unittest.TestCase):
29     @WriteInTmpDir
30     def testMesh1DRW(self):
31         mesh=MEDLoaderDataForTest.build1DMesh_1();
32         mesh.checkConsistencyLight();
33         WriteUMeshDep("Pyfile1.med",mesh,False);
34         mesh_rw=ReadUMeshFromFile("Pyfile1.med",mesh.getName(),0);
35         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
36         pass
37
38     @WriteInTmpDir
39     def testMesh2DCurveRW(self):
40         mesh=MEDLoaderDataForTest.build2DCurveMesh_1();
41         mesh.checkConsistencyLight();
42         WriteUMeshDep("Pyfile2.med",mesh,False);
43         mesh_rw=ReadUMeshFromFile("Pyfile2.med",mesh.getName(),0);
44         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
45         pass
46
47     @WriteInTmpDir
48     def testMesh2DRW(self):
49         mesh=MEDLoaderDataForTest.build2DMesh_1();
50         mesh.checkConsistencyLight();
51         WriteUMeshDep("Pyfile3.med",mesh,False);
52         mesh_rw=ReadUMeshFromFile("Pyfile3.med",mesh.getName(),0);
53         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
54         pass
55
56     @WriteInTmpDir
57     def testMesh3DSurfRW(self):
58         mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
59         mesh.checkConsistencyLight();
60         WriteUMeshDep("Pyfile4.med",mesh,False);
61         mesh_rw=ReadUMeshFromFile("Pyfile4.med",mesh.getName(),0);
62         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
63         pass
64
65     @WriteInTmpDir
66     def testMesh3DRW(self):
67         mesh=MEDLoaderDataForTest.build3DMesh_1();
68         mesh.checkConsistencyLight();
69         WriteUMeshDep("Pyfile5.med",mesh,False);
70         mesh_rw=ReadUMeshFromFile("Pyfile5.med",mesh.getName(),0);
71         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
72         pass
73
74     @WriteInTmpDir
75     def testFieldRW1(self):
76         f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
77         WriteFieldDep("Pyfile6.med",f1,False);
78         f2=ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1);
79         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
80         #
81         f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
82         WriteFieldDep("Pyfile7.med",f1,False);
83         f2=ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
84         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
85         pass
86
87     @WriteInTmpDir
88     def testFieldRW2(self):
89         fileName="Pyfile8.med";
90         VAL1=12345.67890314;
91         VAL2=-1111111111111.;
92         f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
93         WriteFieldDep(fileName,f1,False);
94         f1.setTime(10.,8,9);
95         f1.getArray().setIJ(0,0,VAL1);
96         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
97         f1.setTime(10.14,18,19);
98         f1.getArray().setIJ(0,0,VAL2);
99         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
100         #retrieving time steps...
101         f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),8,9);
102         f1.setTime(10.,8,9);
103         f1.getArray().setIJ(0,0,VAL1);
104         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
105         f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),0,1);
106         f3=MEDLoaderDataForTest.buildVecFieldOnCells_1();
107         self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
108         f2=ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),18,19);
109         f1.setTime(10.14,18,19);
110         f1.getArray().setIJ(0,0,VAL2);
111         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
112         #ON NODES
113         f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
114         fileName2="Pyfile9.med";
115         WriteFieldDep(fileName2,f1,False);
116         f1.setTime(110.,108,109);
117         tmp=f1.getArray().getPointer();
118         f1.getArray().setIJ(0,3,VAL1);
119         WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
120         f1.setTime(210.,208,209);
121         f1.getArray().setIJ(0,3,VAL2);
122         WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
123         f2=ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),108,109);
124         f1.setTime(110.,108,109);
125         f1.getArray().setIJ(0,3,VAL1);
126         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
127         f2=ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),2,3);
128         f3=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
129         self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
130         f2=ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),208,209);
131         f1.setTime(210.,208,209);
132         f1.getArray().setIJ(0,3,VAL2);
133         self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
134         pass
135
136     #
137     # Multi field in a same file, but this field has several
138     #
139     @WriteInTmpDir
140     def testFieldRW3(self):
141         fileName="Pyfile11.med";
142         VAL1=12345.67890314;
143         VAL2=-1111111111111.;
144         name1="AField";
145         name3="AMesh1";
146         f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
147         f1.getMesh().setName(name3);
148         f1.setName(name1);
149         f1.setTime(10.,8,9);
150         tmp=f1.getArray().getPointer();
151         f1.getArray().setIJ(0,0,VAL1);
152         WriteFieldDep(fileName,f1,False);
153         f1.setTime(10.14,18,19);
154         f1.getArray().setIJ(0,0,VAL2);
155         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
156         f1.getMesh().setName(name3);
157         f1.setTime(10.55,28,29);
158         f1.getArray().setIJ(0,0,3*VAL1);
159         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
160         f1.setTime(10.66,38,39);
161         f1.getArray().setIJ(0,0,3*VAL2);
162         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
163         f1.setTime(10.77,48,49);
164         f1.getArray().setIJ(0,0,4*VAL2);
165         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
166         #ON NODES
167         f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
168         f1.setName(name1);
169         f1.getMesh().setName(name3);
170         f1.setTime(110.,8,9);
171         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
172         f1.setTime(110.,108,109);
173         tmp=f1.getArray().getPointer();
174         f1.getArray().setIJ(0,3,VAL1);
175         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
176         f1.setTime(210.,208,209);
177         f1.getArray().setIJ(0,3,VAL2);
178         WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
179         #
180         it1=GetCellFieldIterations(fileName,name3,name1);
181         self.assertEqual(5,len(it1));
182         self.assertEqual(8,it1[0][0]); self.assertEqual(9,it1[0][1]);
183         self.assertEqual(18,it1[1][0]); self.assertEqual(19,it1[1][1]);
184         self.assertEqual(28,it1[2][0]); self.assertEqual(29,it1[2][1]);
185         self.assertEqual(38,it1[3][0]); self.assertEqual(39,it1[3][1]);
186         self.assertEqual(48,it1[4][0]); self.assertEqual(49,it1[4][1]);
187         it3=GetNodeFieldIterations(fileName,name3,name1);
188         self.assertEqual(3,len(it3));
189         self.assertEqual(8,it3[0][0]); self.assertEqual(9,it3[0][1]);
190         self.assertEqual(108,it3[1][0]); self.assertEqual(109,it3[1][1]);
191         self.assertEqual(208,it3[2][0]); self.assertEqual(209,it3[2][1]);
192         #
193         #
194         f1=ReadFieldCell(fileName,name3,0,name1,8,9);
195         self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,0),13);
196         f1=ReadFieldCell(fileName,name3,0,name1,18,19);
197         self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,0),13);
198         f1=ReadFieldCell(fileName,name3,0,name1,28,29);
199         self.assertAlmostEqual(3*VAL1,f1.getArray().getIJ(0,0),13);
200         f1=ReadFieldCell(fileName,name3,0,name1,38,39);
201         self.assertAlmostEqual(3*VAL2,f1.getArray().getIJ(0,0),13);
202         f1=ReadFieldCell(fileName,name3,0,name1,48,49);
203         self.assertAlmostEqual(4*VAL2,f1.getArray().getIJ(0,0),13);
204         #
205         f1=ReadFieldNode(fileName,name3,0,name1,8,9);
206         self.assertAlmostEqual(71.,f1.getArray().getIJ(0,3),13);
207         f1=ReadFieldNode(fileName,name3,0,name1,108,109);
208         self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,3),13);
209         f1=ReadFieldNode(fileName,name3,0,name1,208,209);
210         self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,3),13);
211         pass
212
213     @WriteInTmpDir
214     def testMultiMeshRW1(self):
215         fileName="Pyfile10.med";
216         mesh1=MEDLoaderDataForTest.build3DMesh_1();
217         part1=[1,2,4,13,15]
218         mesh2=mesh1.buildPartOfMySelf(part1,True);
219         mesh2.setName("mesh2");
220         part2=[3,4,13,14]
221         mesh3=mesh1.buildPartOfMySelf(part2,True);
222         mesh3.setName("mesh3");
223         mesh4=MEDCouplingUMesh.New();
224         mesh4.setName("mesh4");
225         mesh4.setMeshDimension(3);
226         mesh4.allocateCells(1);
227         conn=[0,11,1,3]
228         mesh4.insertNextCell(NORM_TETRA4,4,conn[0:4])
229         mesh4.finishInsertingCells();
230         mesh4.setCoords(mesh1.getCoords());
231         meshes=[mesh1,mesh2,mesh3,mesh4]
232         mnane="3DToto";
233         WriteUMeshesPartitionDep(fileName,mnane,meshes,False);
234         #
235         mesh5=ReadUMeshFromFile(fileName,mnane);
236         mesh1.setName(mnane);
237         part3=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
238         mesh6=mesh5.buildPartOfMySelf(part3,True);
239         mesh6.setName(mnane);
240         self.assertTrue(mesh6.isEqual(mesh1,1e-12));
241         grps=GetMeshGroupsNames(fileName,mnane);
242         self.assertEqual(4,len(grps));
243         grps.index("mesh2");
244         grps.index("mesh3");
245         grps.index("mesh4");
246         grps.index("3DMesh_1");
247         #
248         vec=["mesh2"];
249         mesh2_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
250         self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
251         vec=["mesh3"];
252         mesh3_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
253         self.assertTrue(mesh3_2.isEqual(mesh3,1e-12));
254         vec=["mesh4"];
255         mesh4_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
256         self.assertTrue(mesh4_2.isEqual(mesh4,1e-12));
257         vec=["3DMesh_1"];
258         mesh1_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
259         mesh1.setName("3DMesh_1");
260         self.assertTrue(mesh1_2.isEqual(mesh1,1e-12));
261         #
262         vec=["Family_-5","Family_-3"];
263         mesh2_2=ReadUMeshFromFamilies(fileName,mnane,0,vec);
264         mesh2_2.setName("mesh2");
265         self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
266         pass
267
268     @WriteInTmpDir
269     def testMesh3DSurfShuffleRW(self):
270         fileName="Pyfile15.med";
271         mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
272         renumber1=[2,5,1,0,3,4]
273         mesh.renumberCells(renumber1,False);
274         mesh.checkConsistencyLight();
275         WriteUMeshDep(fileName,mesh,False);
276         mesh_rw=ReadUMeshFromFile(fileName,mesh.getName(),0);
277         self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
278         pass
279
280     @WriteInTmpDir
281     def testMultiFieldShuffleRW1(self):
282         TestMultiFieldShuffleRW1(self)
283         pass
284
285     @WriteInTmpDir
286     def testWriteUMeshesRW1(self):
287         TestWriteUMeshesRW1(self)
288         pass
289     pass
290
291 if __name__ == "__main__":
292   unittest.main()