1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2019 CEA/DEN, EDF R&D
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (CEA/DEN)
22 from MEDLoader import *
24 from math import pi,e,sqrt
25 from MEDLoaderDataForTest import MEDLoaderDataForTest,WriteInTmpDir
26 from MEDLoaderDataForTest import TestWriteUMeshesRW1,TestMultiFieldShuffleRW1
28 class MEDLoaderTest2(unittest.TestCase):
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));
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));
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));
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));
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));
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));
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));
88 def testFieldRW2(self):
89 fileName="Pyfile8.med";
92 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
93 WriteFieldDep(fileName,f1,False);
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);
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));
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));
137 # Multi field in a same file, but this field has several
140 def testFieldRW3(self):
141 fileName="Pyfile11.med";
143 VAL2=-1111111111111.;
146 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
147 f1.getMesh().setName(name3);
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);
167 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
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);
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]);
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);
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);
214 def testMultiMeshRW1(self):
215 fileName="Pyfile10.med";
216 mesh1=MEDLoaderDataForTest.build3DMesh_1();
218 mesh2=mesh1.buildPartOfMySelf(part1,True);
219 mesh2.setName("mesh2");
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);
228 mesh4.insertNextCell(NORM_TETRA4,4,conn[0:4])
229 mesh4.finishInsertingCells();
230 mesh4.setCoords(mesh1.getCoords());
231 meshes=[mesh1,mesh2,mesh3,mesh4]
233 WriteUMeshesPartitionDep(fileName,mnane,meshes,False);
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));
246 grps.index("3DMesh_1");
249 mesh2_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
250 self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
252 mesh3_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
253 self.assertTrue(mesh3_2.isEqual(mesh3,1e-12));
255 mesh4_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
256 self.assertTrue(mesh4_2.isEqual(mesh4,1e-12));
258 mesh1_2=ReadUMeshFromGroups(fileName,mnane,0,vec);
259 mesh1.setName("3DMesh_1");
260 self.assertTrue(mesh1_2.isEqual(mesh1,1e-12));
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));
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));
281 def testMultiFieldShuffleRW1(self):
282 TestMultiFieldShuffleRW1(self)
286 def testWriteUMeshesRW1(self):
287 TestWriteUMeshesRW1(self)
291 if __name__ == "__main__":