1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2012 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.
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
23 from math import pi,e,sqrt
24 from MEDLoaderDataForTest import MEDLoaderDataForTest
26 class MEDLoaderTest(unittest.TestCase):
27 def testMesh1DRW(self):
28 mesh=MEDLoaderDataForTest.build1DMesh_1();
29 mesh.checkCoherency();
30 MEDLoader.MEDLoader.WriteUMesh("Pyfile1.med",mesh,True);
31 mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile("Pyfile1.med",mesh.getName(),0);
32 self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
35 def testMesh2DCurveRW(self):
36 mesh=MEDLoaderDataForTest.build2DCurveMesh_1();
37 mesh.checkCoherency();
38 MEDLoader.MEDLoader.WriteUMesh("Pyfile2.med",mesh,True);
39 mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile("Pyfile2.med",mesh.getName(),0);
40 self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
43 def testMesh2DRW(self):
44 mesh=MEDLoaderDataForTest.build2DMesh_1();
45 mesh.checkCoherency();
46 MEDLoader.MEDLoader.WriteUMesh("Pyfile3.med",mesh,True);
47 mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile("Pyfile3.med",mesh.getName(),0);
48 self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
51 def testMesh3DSurfRW(self):
52 mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
53 mesh.checkCoherency();
54 MEDLoader.MEDLoader.WriteUMesh("Pyfile4.med",mesh,True);
55 mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile("Pyfile4.med",mesh.getName(),0);
56 self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
59 def testMesh3DRW(self):
60 mesh=MEDLoaderDataForTest.build3DMesh_1();
61 mesh.checkCoherency();
62 MEDLoader.MEDLoader.WriteUMesh("Pyfile5.med",mesh,True);
63 mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile("Pyfile5.med",mesh.getName(),0);
64 self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
67 def testFieldRW1(self):
68 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
69 MEDLoader.MEDLoader.WriteField("Pyfile6.med",f1,True);
70 f2=MEDLoader.MEDLoader.ReadFieldCell("Pyfile6.med",f1.getMesh().getName(),0,f1.getName(),0,1);
71 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
73 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
74 MEDLoader.MEDLoader.WriteField("Pyfile7.med",f1,True);
75 f2=MEDLoader.MEDLoader.ReadFieldNode("Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
76 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
77 self.assertRaises(Exception,MEDLoader.MEDLoader.ReadFieldCell,"Pyfile7.med",f1.getMesh().getName(),0,f1.getName(),2,3);
80 def testFieldRW2(self):
81 fileName="Pyfile8.med";
84 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
85 MEDLoader.MEDLoader.WriteField(fileName,f1,True);
87 f1.getArray().setIJ(0,0,VAL1);
88 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
89 f1.setTime(10.14,18,19);
90 f1.getArray().setIJ(0,0,VAL2);
91 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
92 #retrieving time steps...
93 f2=MEDLoader.MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),8,9);
95 f1.getArray().setIJ(0,0,VAL1);
96 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
97 f2=MEDLoader.MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),0,1);
98 f3=MEDLoaderDataForTest.buildVecFieldOnCells_1();
99 self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
100 f2=MEDLoader.MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),18,19);
101 f1.setTime(10.14,18,19);
102 f1.getArray().setIJ(0,0,VAL2);
103 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
104 #test of throw on invalid (dt,it)
105 self.assertRaises(Exception,MEDLoader.MEDLoader.ReadFieldCell,fileName,f1.getMesh().getName(),0,f1.getName(),28,19);
107 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
108 fileName2="Pyfile9.med";
109 MEDLoader.MEDLoader.WriteField(fileName2,f1,True);
110 f1.setTime(110.,108,109);
111 tmp=f1.getArray().getPointer();
112 f1.getArray().setIJ(0,3,VAL1);
113 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
114 f1.setTime(210.,208,209);
115 f1.getArray().setIJ(0,3,VAL2);
116 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName2,f1);
117 f2=MEDLoader.MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),108,109);
118 f1.setTime(110.,108,109);
119 f1.getArray().setIJ(0,3,VAL1);
120 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
121 f2=MEDLoader.MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),2,3);
122 f3=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
123 self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
124 f2=MEDLoader.MEDLoader.ReadFieldNode(fileName2,f1.getMesh().getName(),0,f1.getName(),208,209);
125 f1.setTime(210.,208,209);
126 f1.getArray().setIJ(0,3,VAL2);
127 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
131 # Multi field in a same file, but this field has several
133 def testFieldRW3(self):
134 fileName="Pyfile11.med";
136 VAL2=-1111111111111.;
139 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
140 f1.getMesh().setName(name3);
143 tmp=f1.getArray().getPointer();
144 f1.getArray().setIJ(0,0,VAL1);
145 MEDLoader.MEDLoader.WriteField(fileName,f1,True);
146 f1.setTime(10.14,18,19);
147 f1.getArray().setIJ(0,0,VAL2);
148 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
149 f1.getMesh().setName(name3);
150 f1.setTime(10.55,28,29);
151 f1.getArray().setIJ(0,0,3*VAL1);
152 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
153 vec=MEDLoader.MEDLoader.GetMeshNamesOnField(fileName,name1);
154 f1.setTime(10.66,38,39);
155 f1.getArray().setIJ(0,0,3*VAL2);
156 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
157 f1.setTime(10.77,48,49);
158 f1.getArray().setIJ(0,0,4*VAL2);
159 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
161 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
163 f1.getMesh().setName(name3);
164 f1.setTime(110.,8,9);
165 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
166 f1.setTime(110.,108,109);
167 tmp=f1.getArray().getPointer();
168 f1.getArray().setIJ(0,3,VAL1);
169 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
170 f1.setTime(210.,208,209);
171 f1.getArray().setIJ(0,3,VAL2);
172 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
174 it1=MEDLoader.MEDLoader.GetCellFieldIterations(fileName,name3,name1);
175 self.assertEqual(5,len(it1));
176 self.assertEqual(8,it1[0][0]); self.assertEqual(9,it1[0][1]);
177 self.assertEqual(18,it1[1][0]); self.assertEqual(19,it1[1][1]);
178 self.assertEqual(28,it1[2][0]); self.assertEqual(29,it1[2][1]);
179 self.assertEqual(38,it1[3][0]); self.assertEqual(39,it1[3][1]);
180 self.assertEqual(48,it1[4][0]); self.assertEqual(49,it1[4][1]);
181 it3=MEDLoader.MEDLoader.GetNodeFieldIterations(fileName,name3,name1);
182 self.assertEqual(3,len(it3));
183 self.assertEqual(8,it3[0][0]); self.assertEqual(9,it3[0][1]);
184 self.assertEqual(108,it3[1][0]); self.assertEqual(109,it3[1][1]);
185 self.assertEqual(208,it3[2][0]); self.assertEqual(209,it3[2][1]);
188 f1=MEDLoader.MEDLoader.ReadFieldCell(fileName,name3,0,name1,8,9);
189 self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,0),13);
190 f1=MEDLoader.MEDLoader.ReadFieldCell(fileName,name3,0,name1,18,19);
191 self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,0),13);
192 f1=MEDLoader.MEDLoader.ReadFieldCell(fileName,name3,0,name1,28,29);
193 self.assertAlmostEqual(3*VAL1,f1.getArray().getIJ(0,0),13);
194 f1=MEDLoader.MEDLoader.ReadFieldCell(fileName,name3,0,name1,38,39);
195 self.assertAlmostEqual(3*VAL2,f1.getArray().getIJ(0,0),13);
196 f1=MEDLoader.MEDLoader.ReadFieldCell(fileName,name3,0,name1,48,49);
197 self.assertAlmostEqual(4*VAL2,f1.getArray().getIJ(0,0),13);
199 f1=MEDLoader.MEDLoader.ReadFieldNode(fileName,name3,0,name1,8,9);
200 self.assertAlmostEqual(71.,f1.getArray().getIJ(0,3),13);
201 f1=MEDLoader.MEDLoader.ReadFieldNode(fileName,name3,0,name1,108,109);
202 self.assertAlmostEqual(VAL1,f1.getArray().getIJ(0,3),13);
203 f1=MEDLoader.MEDLoader.ReadFieldNode(fileName,name3,0,name1,208,209);
204 self.assertAlmostEqual(VAL2,f1.getArray().getIJ(0,3),13);
207 def testMultiMeshRW1(self):
208 fileName="Pyfile10.med";
209 mesh1=MEDLoaderDataForTest.build3DMesh_1();
211 mesh2=mesh1.buildPartOfMySelf(part1,True);
212 mesh2.setName("mesh2");
214 mesh3=mesh1.buildPartOfMySelf(part2,True);
215 mesh3.setName("mesh3");
216 mesh4=MEDLoader.MEDCouplingUMesh.New();
217 mesh4.setName("mesh4");
218 mesh4.setMeshDimension(3);
219 mesh4.allocateCells(1);
221 mesh4.insertNextCell(MEDLoader.NORM_TETRA4,4,conn[0:4])
222 mesh4.finishInsertingCells();
223 mesh4.setCoords(mesh1.getCoords());
224 meshes=[mesh1,mesh2,mesh3,mesh4]
226 MEDLoader.MEDLoader.WriteUMeshesPartition(fileName,mnane,meshes,True);
228 mesh5=MEDLoader.MEDLoader.ReadUMeshFromFile(fileName,mnane);
229 mesh1.setName(mnane);
230 part3=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
231 mesh6=mesh5.buildPartOfMySelf(part3,True);
232 mesh6.setName(mnane);
233 self.assertTrue(mesh6.isEqual(mesh1,1e-12));
234 grps=MEDLoader.MEDLoader.GetMeshGroupsNames(fileName,mnane);
235 self.assertEqual(4,len(grps));
239 grps.index("3DMesh_1");
242 mesh2_2=MEDLoader.MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
243 self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
245 mesh3_2=MEDLoader.MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
246 self.assertTrue(mesh3_2.isEqual(mesh3,1e-12));
248 mesh4_2=MEDLoader.MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
249 self.assertTrue(mesh4_2.isEqual(mesh4,1e-12));
251 mesh1_2=MEDLoader.MEDLoader.ReadUMeshFromGroups(fileName,mnane,0,vec);
252 mesh1.setName("3DMesh_1");
253 self.assertTrue(mesh1_2.isEqual(mesh1,1e-12));
255 vec=["Family_4","Family_2"];
256 mesh2_2=MEDLoader.MEDLoader.ReadUMeshFromFamilies(fileName,mnane,0,vec);
257 mesh2_2.setName("mesh2");
258 self.assertTrue(mesh2_2.isEqual(mesh2,1e-12));
260 ret=MEDLoader.MEDLoader.GetMeshFamiliesNamesOnGroup(fileName,"3DToto","3DMesh_1");
261 self.assertEqual(4,len(ret));
262 self.assertEqual(ret[0],"Family_1");
263 self.assertEqual(ret[1],"Family_2");
264 self.assertEqual(ret[2],"Family_3");
265 self.assertEqual(ret[3],"Family_4");
267 ret1=MEDLoader.MEDLoader.GetMeshGroupsNamesOnFamily(fileName,"3DToto","Family_2");
268 self.assertEqual(2,len(ret1));
269 self.assertEqual(ret1[0],"3DMesh_1");
270 self.assertEqual(ret1[1],"mesh2");
273 def testFieldProfilRW1(self):
274 fileName="Pyfile12.med";
275 mesh1=MEDLoaderDataForTest.build3DMesh_1();
276 da,b,newNbOfNodes=mesh1.mergeNodes(1e-12);
277 MEDLoader.MEDLoader.WriteUMesh(fileName,mesh1,True);
279 mesh2=mesh1.buildPartOfMySelf(part1,True);
280 mesh2.setName(mesh1.getName());#<- important for the test
282 nbOfCells=mesh2.getNumberOfCells();
283 self.assertEqual(5,nbOfCells);
284 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME);
285 f1.setName("VectorFieldOnCells");
287 array=MEDLoader.DataArrayDouble.New();
288 array.alloc(nbOfCells,2);
290 arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.]
291 array.setValues(arr1,nbOfCells,2);
292 f1.setTime(3.14,2,7);
295 MEDLoader.MEDLoader.WriteField(fileName,f1,False);#<- False important for the test
297 f2=MEDLoader.MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),2,7);
298 tt=MEDLoader.MEDLoader.GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName());
299 self.assertEqual(tt,[MEDLoader.ON_CELLS]);
301 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
305 def testFieldGaussRW1(self):
306 fileName="Pyfile13.med";
307 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_1();
308 MEDLoader.MEDLoader.WriteField(fileName,f1,True);
309 f2=MEDLoader.MEDLoader.ReadField(MEDLoader.ON_GAUSS_PT,fileName,f1.getMesh().getName(),0,f1.getName(),1,5);
310 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
313 def testFieldGaussNERW1(self):
314 fileName="Pyfile14.med";
315 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
316 MEDLoader.MEDLoader.WriteField(fileName,f1,True);
317 f2=MEDLoader.MEDLoader.ReadField(MEDLoader.ON_GAUSS_NE,fileName,f1.getMesh().getName(),0,f1.getName(),1,5);
318 self.assertTrue(f1.isEqual(f2,1e-12,1e-12));
321 def testMesh3DSurfShuffleRW(self):
322 fileName="Pyfile15.med";
323 mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
324 renumber1=[2,5,1,0,3,4]
325 mesh.renumberCells(renumber1,False);
326 mesh.checkCoherency();
327 MEDLoader.MEDLoader.WriteUMesh(fileName,mesh,True);
328 mesh_rw=MEDLoader.MEDLoader.ReadUMeshFromFile(fileName,mesh.getName(),0);
329 self.assertTrue(mesh.isEqual(mesh_rw,1e-12));
332 def testMultiFieldShuffleRW1(self):
333 fileName="Pyfile17.med";
334 m=MEDLoaderDataForTest.build3DMesh_2();
335 self.assertEqual(20,m.getNumberOfCells());
336 self.assertEqual(45,m.getNumberOfNodes());
338 m.convertToPolyTypes(polys);
339 renum=[1,3,2,8,9,12,13,16,19,0,4,7,5,15,14,17,10,18,6,11]
340 m.renumberCells(renum,False);
341 m.orientCorrectlyPolyhedrons();
343 MEDLoader.MEDLoader.WriteUMesh(fileName,m,True);
344 f1Tmp=m.getMeasureField(False);
345 f1=f1Tmp.buildNewTimeReprFromThis(MEDLoader.ONE_TIME,False);
347 f_1=f1.cloneWithMesh(True);
348 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
350 f1.setTime(0.01,3,4);
351 f_2=f1.cloneWithMesh(True);
352 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
353 f1.applyFunc("2*x/3");
354 f1.setTime(0.02,5,6);
355 f_3=f1.cloneWithMesh(True);
356 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
358 its=[(1,2),(3,4),(5,6)];
359 fs=MEDLoader.MEDLoader.ReadFieldsOnSameMesh(MEDLoader.ON_CELLS,fileName,f_1.getMesh().getName(),0,f_1.getName(),its);
360 self.assertEqual(3,len(fs));
361 self.assertTrue(fs[0].isEqual(f_1,1e-12,1e-12));
362 self.assertTrue(fs[1].isEqual(f_2,1e-12,1e-12));
363 self.assertTrue(fs[2].isEqual(f_3,1e-12,1e-12));
366 def testWriteUMeshesRW1(self):
367 fileName="Pyfile18.med";
368 m3d=MEDLoaderDataForTest.build3DMesh_2();
371 nodes=m3d.findNodesOnPlane(pt,vec,1e-12);
372 m2d=m3d.buildFacePartOfMySelfNode(nodes,True);
374 m2d.renumberCells(renumber,False);
375 m2d.setName("ExampleOfMultiDimW");
377 MEDLoader.MEDLoader.WriteUMeshes(fileName,meshes,True);
378 m3d_bis=MEDLoader.MEDLoader.ReadUMeshFromFile(fileName,m2d.getName(),0);
379 self.assertTrue(not m3d_bis.isEqual(m3d,1e-12));
380 m3d_bis.setName(m3d.getName());
381 self.assertTrue(m3d_bis.isEqual(m3d,1e-12));
382 m2d_bis=MEDLoader.MEDLoader.ReadUMeshFromFile(fileName,m2d.getName(),-1);#-1 for faces
383 self.assertTrue(m2d_bis.isEqual(m2d,1e-12));
384 # Creation of a field on faces.
385 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME);
386 f1.setName("FieldOnFacesShuffle");
388 array=MEDLoader.DataArrayDouble.New();
389 arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.]
390 array.setValues(arr1,m2d.getNumberOfCells(),2);
391 array.setInfoOnComponent(0,"plkj [mm]");
392 array.setInfoOnComponent(1,"pqqqss [mm]");
394 tmp=array.setValues(arr1,m2d.getNumberOfCells(),2);
395 f1.setTime(3.14,2,7);
397 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
398 f2=MEDLoader.MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),-1,f1.getName(),2,7);
399 self.assertTrue(f2.isEqual(f1,1e-12,1e-12));
402 def testFieldNodeProfilRW1(self):
403 fileName="Pyfile19.med";
404 fileName2="Pyfile20.med";
405 m=MEDLoaderDataForTest.build2DMesh_1();
406 nbOfNodes=m.getNumberOfNodes();
407 MEDLoader.MEDLoader.WriteUMesh(fileName,m,True);
408 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME);
409 f1.setName("VFieldOnNodes");
411 array=MEDLoader.DataArrayDouble.New();
412 arr1=[1.,101.,2.,102.,3.,103.,4.,104.,5.,105.,6.,106.,7.,107.,8.,108.,9.,109.,10.,110.,11.,111.,12.,112.]
413 array.setValues(arr1,nbOfNodes,2);
415 array.setInfoOnComponent(0,"tyty [mm]");
416 array.setInfoOnComponent(1,"uiop [MW]");
417 f1.setTime(3.14,2,7);
420 f2=f1.buildSubPart(arr2);
421 f2.getMesh().setName(f1.getMesh().getName());
422 MEDLoader.MEDLoader.WriteField(fileName,f2,False);#<- False important for the test
424 f3=MEDLoader.MEDLoader.ReadFieldNode(fileName,f2.getMesh().getName(),0,f2.getName(),2,7);
426 self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
429 f2.renumberNodes(arr3);
430 MEDLoader.MEDLoader.WriteUMesh(fileName2,m,True);
431 MEDLoader.MEDLoader.WriteField(fileName2,f2,False);#<- False important for the test
432 f3=MEDLoader.MEDLoader.ReadFieldNode(fileName2,f2.getMesh().getName(),0,f2.getName(),2,7);
434 self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
438 def testFieldNodeProfilRW2(self):
439 fileName="Pyfile23.med";
440 mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
441 MEDLoader.MEDLoader.WriteUMesh(fileName,mesh,True);
443 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME);
444 f1.setName("FieldMix");
446 arr2=[1071.,1171.,1010.,1110.,1020.,1120.,1030.,1130.,1040.,1140.,1050.,1150.,
447 1060.,1160.,1070.,1170.,1080.,1180.,1090.,1190.,1091.,1191.,1092.,1192.];
448 array=MEDLoader.DataArrayDouble.New();
449 array.setValues(arr2,12,2);
451 array.setInfoOnComponent(0,"plkj [mm]");
452 array.setInfoOnComponent(1,"pqqqss [mm]");
453 tmp=array.getPointer();
454 f1.setTime(3.17,2,7);
456 renumArr=[3,7,2,1,5,11,10,0,9,6,8,4]
457 f1.renumberNodes(renumArr);
459 MEDLoader.MEDLoader.WriteField(fileName,f1,False);#<- False important for the test
460 f2=MEDLoader.MEDLoader.ReadFieldNode(fileName,f1.getMesh().getName(),0,f1.getName(),2,7);
461 self.assertTrue(f2.isEqual(f1,1e-12,1e-12));
465 def testMixCellAndNodesFieldRW1(self):
466 fileName="Pyfile21.med";
467 mesh=MEDLoaderDataForTest.build3DSurfMesh_1();
468 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME);
469 f1.setName("FieldMix");
471 array=MEDLoader.DataArrayDouble.New();
473 arr1=[71.,171.,10.,110.,20.,120.,30.,130.,40.,140.,50.,150.]
474 array.setValues(arr1,6,2);
475 array.setInfoOnComponent(0,"plkj [mm]");
476 array.setInfoOnComponent(1,"pqqqss [mm]");
477 f1.setTime(3.14,2,7);
480 f2=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME);
481 f2.setName("FieldMix");
483 array=MEDLoader.DataArrayDouble.New();
485 arr2=[1071.,1171.,1010.,1110.,1020.,1120.,1030.,1130.,1040.,1140.,1050.,1150.,
486 1060.,1160.,1070.,1170.,1080.,1180.,1090.,1190.,1091.,1191.,1092.,1192.]
487 array.setValues(arr2,12,2)
488 array.setInfoOnComponent(0,"plkj [mm]");
489 array.setInfoOnComponent(1,"pqqqss [mm]");
490 f2.setTime(3.14,2,7);
493 MEDLoader.MEDLoader.WriteField(fileName,f1,True);
494 ts=MEDLoader.MEDLoader.GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName());
495 self.assertEqual(1,len(ts));
496 self.assertEqual(MEDLoader.ON_CELLS,ts[0]);
497 fs=MEDLoader.MEDLoader.GetAllFieldNamesOnMesh(fileName,f1.getMesh().getName());
498 self.assertEqual(1,len(fs));
499 self.assertTrue(fs[0]=="FieldMix");
500 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f2);
501 fs=MEDLoader.MEDLoader.GetAllFieldNamesOnMesh(fileName,f1.getMesh().getName());
502 self.assertEqual(1,len(fs));
503 self.assertTrue(fs[0]=="FieldMix");
505 ts=MEDLoader.MEDLoader.GetTypesOfField(fileName,f1.getMesh().getName(),f1.getName());
506 self.assertEqual(2,len(ts));
507 self.assertEqual(MEDLoader.ON_NODES,ts[0]);
508 self.assertEqual(MEDLoader.ON_CELLS,ts[1]);
510 f3=MEDLoader.MEDLoader.ReadFieldNode(fileName,f1.getMesh().getName(),0,f1.getName(),2,7);
511 self.assertTrue(f3.isEqual(f2,1e-12,1e-12));
512 f3=MEDLoader.MEDLoader.ReadFieldCell(fileName,f1.getMesh().getName(),0,f1.getName(),2,7);
513 self.assertTrue(f3.isEqual(f1,1e-12,1e-12));
517 def testGetAllFieldNamesRW1(self):
518 fileName="Pyfile22.med";
519 mesh=MEDLoaderDataForTest.build2DMesh_2();
520 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_NODES,MEDLoader.ONE_TIME);
521 f1.setName("Field1");
522 f1.setTime(3.44,5,6);
524 f1.fillFromAnalytic(2,"x+y");
525 MEDLoader.MEDLoader.WriteField(fileName,f1,True);
526 f1.setTime(1002.3,7,8);
527 f1.fillFromAnalytic(2,"x+77.*y");
528 MEDLoader.MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f1);
529 f1.setName("Field2");
530 MEDLoader.MEDLoader.WriteField(fileName,f1,False);
531 f1.setName("Field3");
532 mesh.setName("2DMesh_2Bis");
533 MEDLoader.MEDLoader.WriteField(fileName,f1,False);
534 f1=MEDLoader.MEDCouplingFieldDouble.New(MEDLoader.ON_CELLS,MEDLoader.ONE_TIME);
535 f1.setName("Field8");
536 f1.setTime(8.99,7,9);
538 f1.fillFromAnalytic(3,"3*x+y");
539 MEDLoader.MEDLoader.WriteField(fileName,f1,False);
540 fs=MEDLoader.MEDLoader.GetAllFieldNames(fileName);
541 self.assertEqual(4,len(fs));
542 self.assertTrue(fs[0]=="Field1");
543 self.assertTrue(fs[1]=="Field2");
544 self.assertTrue(fs[2]=="Field3");
545 self.assertTrue(fs[3]=="Field8");