1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013 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
20 # Author : Anthony Geay (CEA/DEN)
22 from MEDLoader import *
24 from math import pi,e,sqrt
25 from MEDLoaderDataForTest import MEDLoaderDataForTest
27 class MEDLoaderTest(unittest.TestCase):
28 def testMEDMesh1(self):
29 fileName="Pyfile18.med"
30 mname="ExampleOfMultiDimW"
31 medmesh=MEDFileMesh.New(fileName,mname)
32 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
33 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
34 m1_0=medmesh.getLevel0Mesh(True)
35 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
36 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
37 m2_0=medmesh.getLevelM1Mesh(True)
38 m2_1=MEDLoader.ReadUMeshFromFile(fileName,mname,-1)
39 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
42 def testMEDMesh2(self):
43 fileName="Pyfile10.med"
45 outFileName="MEDFileMesh1.med"
46 medmesh=MEDFileUMesh.New(fileName,mname)
47 self.assertEqual((0,),medmesh.getNonEmptyLevels())
48 m1_0=medmesh.getLevel0Mesh(True)
49 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
50 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
51 g1_0=medmesh.getGroup(0,"mesh2",True)
52 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
53 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
54 g1_0=medmesh.getGroup(0,"mesh3",True)
55 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
56 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
57 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
58 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
59 g1_1.setName(g1_0.getName())
60 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
61 g1_0=medmesh.getFamily(0,"Family_-3",True)
62 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
63 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
64 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
65 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
66 g1_1.setName(g1_0.getName())
67 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
68 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
69 medmesh.write(outFileName,2);
70 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
71 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
72 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
73 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
74 famn=medmesh.getFamilyNameGivenId(0)
75 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
77 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
78 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
79 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
80 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
81 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
84 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
85 def testMEDMesh3(self):
86 outFileName="MEDFileMesh3.med"
87 c=DataArrayDouble.New()
88 coords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ];
89 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
90 c.setValues(coords,9,2)
91 m=MEDCouplingUMesh.New();
92 m.setMeshDimension(2);
94 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
95 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
96 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
97 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
98 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
99 m.finishInsertingCells();
102 m1=MEDCouplingUMesh.New();
103 m1.setMeshDimension(1);
105 m1.insertNextCell(NORM_SEG2,2,[1,4])
106 m1.insertNextCell(NORM_SEG2,2,[3,6])
107 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
108 m1.finishInsertingCells();
111 m2=MEDCouplingUMesh.New();
112 m2.setMeshDimension(0);
114 m2.insertNextCell(NORM_POINT1,1,[1])
115 m2.insertNextCell(NORM_POINT1,1,[3])
116 m2.insertNextCell(NORM_POINT1,1,[2])
117 m2.insertNextCell(NORM_POINT1,1,[6])
118 m2.finishInsertingCells();
122 mm=MEDFileUMesh.New()
123 self.assertTrue(mm.getUnivNameWrStatus())
124 mm.setName("MyFirstMEDCouplingMEDmesh")
125 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
127 mm.setMeshAtLevel(-1,m1);
128 mm.setMeshAtLevel(0,m);
129 mm.setMeshAtLevel(-2,m2);
130 # playing with groups
131 g1_2=DataArrayInt.New()
132 g1_2.setValues([1,3],2,1)
134 g2_2=DataArrayInt.New()
135 g2_2.setValues([1,2,3],3,1)
137 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
138 g1_1=DataArrayInt.New()
139 g1_1.setValues([0,1,2],3,1)
141 g2_1=DataArrayInt.New()
142 g2_1.setValues([0,2],2,1)
144 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
145 g1_N=DataArrayInt.New()
146 g1_N.setValues(range(8),8,1)
148 g2_N=DataArrayInt.New()
149 g2_N.setValues(range(9),9,1)
151 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
152 mm.createGroupOnAll(0,"GrpOnAllCell")
153 # check content of mm
154 t=mm.getGroupArr(0,"G1",False)
155 self.assertTrue(g1_2.isEqual(t));
156 t=mm.getGroupArr(0,"G2",False)
157 self.assertTrue(g2_2.isEqual(t));
158 t=mm.getGroupArr(-1,"G1",False)
159 self.assertTrue(g1_1.isEqual(t));
160 t=mm.getGroupArr(-1,"G2",False)
161 self.assertTrue(g2_1.isEqual(t));
162 t=mm.getGroupArr(1,"G1",False)
163 self.assertTrue(g1_N.isEqual(t));
164 t=mm.getGroupArr(1,"G2",False)
165 self.assertTrue(g2_N.isEqual(t));
166 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
167 t=mm.getGroupArr(0,"GrpOnAllCell")
168 self.assertTrue(t.getValues()==range(5))
171 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
172 mmCpy.write(outFileName,2);
174 mm=MEDFileMesh.New(outFileName)
176 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
177 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
178 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
179 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
180 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
181 self.assertEqual(3,len(lmm))
182 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
183 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
184 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
186 self.assertTrue(mm.getUnivNameWrStatus())
187 self.assertTrue(isinstance(mm.getUnivName(),str))
188 self.assertTrue(len(mm.getUnivName())!=0)
189 mbis=mm.getMeshAtLevel(0)
190 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
191 self.assertTrue(m.isEqual(mbis,1e-12));
193 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),MEDLoader.GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
196 # this test is the testMEDMesh3 except that permutation is dealed here
197 def testMEDMesh4(self):
198 outFileName="MEDFileMesh4.med"
199 c=DataArrayDouble.New()
200 coords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ];
201 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
202 c.setValues(coords,9,2)
203 c.setInfoOnComponent(0,"abcdef [km]")
204 c.setInfoOnComponent(1,"ghij [MW]")
205 m=MEDCouplingUMesh.New();
206 m.setMeshDimension(2);
208 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
209 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
210 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
211 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
212 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
213 m.finishInsertingCells();
216 m1=MEDCouplingUMesh.New();
217 m1.setMeshDimension(1);
219 m1.insertNextCell(NORM_SEG2,2,[1,4])
220 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
221 m1.insertNextCell(NORM_SEG2,2,[3,6])
222 m1.finishInsertingCells();
225 m2=MEDCouplingUMesh.New();
226 m2.setMeshDimension(0);
228 m2.insertNextCell(NORM_POINT1,1,[1])
229 m2.insertNextCell(NORM_POINT1,1,[3])
230 m2.insertNextCell(NORM_POINT1,1,[2])
231 m2.insertNextCell(NORM_POINT1,1,[6])
232 m2.finishInsertingCells();
236 mm=MEDFileUMesh.New()
237 mm.setName("My2ndMEDCouplingMEDmesh")
238 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
240 renumNode=DataArrayInt.New()
241 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
242 mm.setRenumFieldArr(1,renumNode)
243 mm.setMeshAtLevel(-1,m1,True);
244 mm.setMeshAtLevel(0,m,True);
245 mm.setMeshAtLevel(-2,m2,True);
246 mm.removeMeshAtLevel(-2)
247 mm.setMeshAtLevel(-2,m2,True);
248 # playing with groups
249 g1_2=DataArrayInt.New()
250 g1_2.setValues([2,3],2,1)
252 g2_2=DataArrayInt.New()
253 g2_2.setValues([2,0,3],3,1)
255 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
256 g1_1=DataArrayInt.New()
257 g1_1.setValues([0,2,1],3,1)
259 g2_1=DataArrayInt.New()
260 g2_1.setValues([0,2],2,1)
262 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
263 g1_N=DataArrayInt.New()
264 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
266 g2_N=DataArrayInt.New()
267 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
269 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
270 # check content of mm
271 t=mm.getGroupArr(0,"G1",True)
272 self.assertTrue(g1_2.isEqual(t));
273 t=mm.getGroupArr(0,"G2",True)
274 self.assertTrue(g2_2.isEqual(t));
275 t=mm.getGroupArr(-1,"G1",True)
276 self.assertTrue(g1_1.isEqual(t));
277 t=mm.getGroupArr(-1,"G2",True)
278 self.assertTrue(g2_1.isEqual(t));
279 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
281 mm.write(outFileName,2);
282 mm2=MEDFileMesh.New(outFileName)
283 res=mm.isEqual(mm2,1e-12)
284 self.assertTrue(res[0])
285 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
286 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
287 mm2.keepFamIdsOnlyOnLevs([3],[-1])
288 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
289 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
291 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
292 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
294 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
295 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
296 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
297 self.assertTrue(not mm2.existsFamily("Family_-8"))
298 mm2.createGroupOnAll(-1,"GrpOnAllFace")
299 self.assertTrue(mm2.existsFamily("Family_-8"))
300 self.assertEqual(range(3),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
303 #testing persistence of retrieved arrays
304 def testMEDMesh5(self):
305 fileName="Pyfile18.med"
306 mname="ExampleOfMultiDimW"
307 medmesh=MEDFileUMesh.New(fileName,mname)
308 m1_0=medmesh.getLevel0Mesh(True)
309 da1=medmesh.getFamilyFieldAtLevel(0)
311 self.assertEqual(20,m1_0.getNumberOfCells())
312 self.assertEqual(20,da1.getNumberOfTuples())
315 def testMEDMesh6(self):
316 outFileName="MEDFileMesh5.med"
319 m1=MEDCouplingCMesh.New();
320 da=DataArrayDouble.New()
321 da.setValues([0.,1.,2.],3,1)
322 da.setInfoOnComponent(0,"XX [mm]")
324 da=DataArrayDouble.New()
325 da.setValues([0.,1.2],2,1)
326 da.setInfoOnComponent(0,"YY [km]")
328 da=DataArrayDouble.New()
329 da.setValues([0.,1.3],2,1)
330 da.setInfoOnComponent(0,"ZZ [um]")
333 m.setName("myFirstCartMesh")
334 m.setDescription("mmmmpppppppp")
337 da=DataArrayInt.New()
338 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
339 m.setFamilyFieldArr(1,da)
340 m.setFamilyId("family1",1)
341 da=m.getFamilyArr(1,"family1")
343 self.assertEqual(expected1,da.getValues())
344 self.assertTrue(m.getUnivNameWrStatus())
345 m.write(outFileName,2);
346 mm=MEDFileMesh.New(outFileName)
347 self.assertTrue(isinstance(mm,MEDFileCMesh))
348 self.assertTrue(isinstance(mm.getUnivName(),str))
349 self.assertTrue(len(mm.getUnivName())!=0)
350 self.assertTrue(m.isEqual(mm,1e-12)[0])
351 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
354 m1.setTime(tt[2],tt[0],tt[1])
355 m1.setName(m.getName())
356 m1.setTimeUnit(m.getTimeUnit())
357 m1.setDescription(m.getDescription())
358 self.assertTrue(m2.isEqual(m1,1e-12));
361 def testMEDMesh7(self):
362 fileName="Pyfile24.med"
363 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
365 m.setCoords(m2.getCoords())
366 m.setMeshAtLevel(0,m2)
367 m.setMeshAtLevel(-1,m1)
368 m.setMeshAtLevel(-2,m0)
369 m.setFamilyFieldArr(0,f2)
370 m.setFamilyFieldArr(-1,f1)
371 m.setFamilyFieldArr(-2,f0)
372 m.setFamilyFieldArr(1,p)
373 m.setRenumFieldArr(0,n2)
374 m.setRenumFieldArr(-1,n1)
375 m.setRenumFieldArr(-2,n0)
377 for i in xrange(nbOfFams):
378 m.addFamily(fns[i],fids[i])
381 for i in xrange(nbOfGrps):
382 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
384 m.setName(m2.getName())
385 m.setDescription(m2.getDescription())
387 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
388 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
389 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
390 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
391 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
392 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
393 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
394 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
395 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
398 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
401 def funcToTestDelItem(self,ff):
405 #emulation of pointe.med file.
406 def testMEDField1(self):
407 mm=MEDFileMesh.New("Pyfile17.med")
408 mm.write("Pyfile17_bis.med",2)
409 ff=MEDFileFieldMultiTS("Pyfile17.med")
410 tsExpected=[[1,2],[3,4],[5,6]]
411 self.assertEqual(3,len(ff))
412 for pos,f1ts in enumerate(ff):
413 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
414 self.assertEqual(type(f1ts),MEDFileField1TS)
416 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
417 self.assertEqual([3,4],ff[1].getTime()[:-1])
418 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
419 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
420 ff.write("Pyfile17_bis.med",0)
422 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
423 self.assertEqual([(1,2),(3,4),(5,6)],ts)
424 self.funcToTestDelItem(ff)
425 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
426 self.assertEqual([(1,2)],ts)
430 def testMEDField2(self):
431 mm=MEDFileMesh.New("Pyfile19.med")
432 mm.write("Pyfile19_bis.med",2)
433 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
434 ff.write("Pyfile19_bis.med",0)
435 self.assertEqual([('tyty','mm'),('uiop','MW')],MEDLoader.GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
439 def testMEDField3(self):
440 mm=MEDFileMesh.New("Pyfile13.med")
441 mm.write("Pyfile13_bis.med",2)
442 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
443 ff.write("Pyfile13_bis.med",0)
444 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
445 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
446 f2=MEDLoader.ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
447 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
448 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
449 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
450 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
451 ff4=MEDFileField1TS.New("Pyfile13.med")
452 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
453 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
457 def testMEDField4(self):
458 mm=MEDFileMesh.New("Pyfile14.med")
459 mm.write("Pyfile14_bis.med",2)
460 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
461 ff.write("Pyfile14_bis.med",0)
462 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
463 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
464 f2=MEDLoader.ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
465 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
468 # MEDField get/set on pointe.med
469 def testMEDField5(self):
470 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
471 f=ff.getFieldAtLevel(ON_CELLS,0)
472 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
473 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
474 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
475 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
476 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
477 # no with renumbering
478 f=ff.getFieldAtLevel(ON_CELLS,0,1)
479 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
480 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
481 f=ff.getFieldAtLevel(ON_CELLS,0,3)
482 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
483 f=ff.getFieldAtLevel(ON_CELLS,0,2)
484 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
485 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
486 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
489 # MEDField get/set on profiles nodes
490 def testMEDField6(self):
491 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
492 its=ff.getIterations()
493 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
494 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
495 f2=MEDLoader.ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
496 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
497 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
498 its=ff.getIterations()
499 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
500 f2=MEDLoader.ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
501 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
502 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
503 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
506 # MEDField get/set on profiles cells
507 def testMEDField7(self):
508 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
509 its=ff.getIterations()
510 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
511 f2=MEDLoader.ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
512 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
515 #first test of assignation. No profile and types sorted by type.
516 def testMEDField8(self):
518 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
520 mm1=MEDFileUMesh.New()
521 mm1.setCoords(m1.getCoords())
522 mm1.setMeshAtLevel(0,m1)
523 mm1.setName(m1.getName())
525 ff1=MEDFileField1TS.New()
526 ff1.setFieldNoProfileSBT(f1)
528 f2=MEDLoader.ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
529 itt,orr,ti=ff1.getTime()
530 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
531 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
533 itt,orr,ti=ff1.getTime()
534 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
535 da,infos=ff1.getUndergroundDataArrayExt()
536 f2.getArray().setName(da.getName())#da has the same name than f2
537 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
538 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
541 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
543 mm1=MEDFileUMesh.New()
544 mm1.setCoords(m1.getCoords())
545 mm1.setMeshAtLevel(0,m1)
546 mm1.setName(m1.getName())
548 ff1=MEDFileField1TS.New()
549 ff1.setFieldNoProfileSBT(f1)
551 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
553 f2=MEDLoader.ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
554 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
555 f1.getArray().setIJ(0,0,nv)
556 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
559 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
561 mm1=MEDFileUMesh.New()
562 mm1.setCoords(m1.getCoords())
563 mm1.setMeshAtLevel(0,m1)
564 mm1.setName(m1.getName())
566 ff1=MEDFileField1TS.New()
567 ff1.setFieldNoProfileSBT(f1)
569 f2=MEDLoader.ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
570 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
571 da,infos=ff1.getUndergroundDataArrayExt()
572 f2.getArray().setName(da.getName())#da has the same name than f2
573 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
574 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
577 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
578 f1InvalidCpy=f1.deepCpy()
579 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
580 f1InvalidCpy2=f1.deepCpy()
581 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
583 mm1=MEDFileUMesh.New()
584 mm1.setCoords(m1.getCoords())
585 mm1.setMeshAtLevel(0,m1)
586 mm1.setName(m1.getName())
588 ff1=MEDFileField1TS.New()
589 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
590 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
591 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
592 ff1.setFieldNoProfileSBT(f1)
594 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
595 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
596 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
597 sbt=ff2.getFieldSplitedByType2()
598 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
599 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
600 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
601 self.assertEqual(6,loc1.getNumberOfPointsInCells())
602 self.assertEqual(3,loc1.getNumberOfGaussPoints())
603 self.assertEqual(2,loc1.getDimension())
604 da,infos=ff2.getUndergroundDataArrayExt()
605 f2.getArray().setName(da.getName())#da has the same name than f2
606 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
607 self.assertEqual(53,da.getNumberOfTuples())
608 self.assertEqual([((3, 0), (0, 18)), ((3, 1), (18, 30)), ((3, 2), (30, 36)), ((4, 0), (36, 42)), ((4, 1), (42, 44)), ((6, 0), (44, 53))],infos)
612 def testMEDFileData1(self):
616 m1=MEDLoaderDataForTest.build1DMesh_1()
617 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
618 mmm1=MEDFileMeshMultiTS.New() ;
619 mmm1.setOneTimeStep(mm1)
620 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
621 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
622 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
623 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
625 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
626 self.assertEqual(name,mmm.getName())
627 self.assertEqual(type(mmm),MEDFileUMesh)
629 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
631 ff1=MEDFileFieldMultiTS.New()
632 ff21=MEDFileFieldMultiTS.New()
633 ff22=MEDFileFieldMultiTS.New()
634 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
635 f1.getArray().setInfoOnComponent(0,"power [kW]")
636 ff1.appendFieldNoProfileSBT(f1)
637 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
638 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
639 ff21.appendFieldNoProfileSBT(f21)
640 f22=f21.deepCpy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
641 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
642 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
643 ff22.appendFieldNoProfileSBT(f22)
644 fs=MEDFileFields.New()
645 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
646 for name,fmts in zip(["f1","f21","f22"],fs):
647 self.assertEqual(name,fmts.getName())
651 fname2="Pyfile29_2.med"
654 d2=MEDFileData.New(fname2)
655 self.assertEqual(2,d2.getNumberOfMeshes())
656 self.assertEqual(3,d2.getNumberOfFields())
657 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
658 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
659 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
660 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
661 self.assertTrue(m1.isEqual(m1bis,1e-12))
662 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
663 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
664 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
665 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
666 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
669 def testMEDField9(self):
670 # first test field profile WR. Full type but with some type missing
672 m1=MEDLoaderDataForTest.build2DMesh_3()
673 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
675 ff1=MEDFileField1TS.New()
676 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
677 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
678 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
679 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
681 ff1.setFieldProfile(f1,mm1,0,da)
682 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
686 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
687 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
688 self.assertTrue(vals.isEqual(d,1e-14))
690 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
691 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
692 ff2.deepCpyGlobs(ff3)
693 sbt=ff2.getFieldSplitedByType2()
694 self.assertEqual(3,sbt[0][0])#TRI3
695 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
696 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
697 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
698 self.assertEqual(4,sbt[1][0])#QUAD4
699 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
700 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
701 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
702 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
703 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
704 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
705 self.assertTrue(vals.isEqual(d,1e-14))
708 def testMEDField10(self):
710 m1=MEDLoaderDataForTest.build2DMesh_1()
711 m1.renumberCells([0,1,4,2,3,5],False)
712 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
714 ff1=MEDFileFieldMultiTS.New()
715 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
716 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
717 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
718 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
720 ff1.appendFieldProfile(f1,mm1,0,da)
721 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
722 ff1.appendFieldProfile(f1,mm1,0,da)
726 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
727 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
728 self.assertTrue(vals.isEqual(e,1e-14))
729 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
730 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
731 self.assertTrue(vals.isEqual(d,1e-14))
733 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
734 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
735 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
736 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
737 self.assertTrue(vals.isEqual(e,1e-14))
738 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
739 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
740 self.assertTrue(vals.isEqual(d,1e-14))
743 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
744 def testMEDField11(self):
746 m1=MEDLoaderDataForTest.build2DMesh_1()
747 m1.renumberCells([0,1,4,2,3,5],False)
748 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
750 ff1=MEDFileField1TS.New()
751 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
752 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
753 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
754 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
756 ff1.setFieldProfile(f1,mm1,0,da)
757 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
760 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
761 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
762 self.assertTrue(vals.isEqual(d,1e-14))
764 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
765 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
766 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
767 self.assertTrue(vals.isEqual(d,1e-14))
770 def testMEDField12(self):
772 m1=MEDLoaderDataForTest.build2DMesh_1()
773 m1.renumberCells([0,1,4,2,3,5],False)
774 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
776 ff1=MEDFileFieldMultiTS.New()
777 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
778 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
779 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
780 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
782 ff1.appendFieldProfile(f1,mm1,0,da)
783 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
784 ff1.appendFieldProfile(f1,mm1,0,da)
787 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
788 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
789 self.assertTrue(vals.isEqual(e,1e-14))
790 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
791 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
792 self.assertTrue(vals.isEqual(d,1e-14))
794 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
795 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
796 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
797 self.assertTrue(vals.isEqual(e,1e-14))
798 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
799 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
800 self.assertTrue(vals.isEqual(d,1e-14))
803 def testMEDField13(self):
805 m1=MEDLoaderDataForTest.build2DMesh_1()
806 m1.renumberCells([0,1,4,2,3,5],False)
808 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
809 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
811 ff1=MEDFileField1TS.New()
812 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
813 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
814 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
815 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
817 ff1.setFieldProfile(f1,mm1,0,da)
820 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
821 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
822 self.assertTrue(vals.isEqual(d,1e-14))
824 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
825 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
826 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
827 self.assertTrue(vals.isEqual(d,1e-14))
830 def testMEDField14(self):
832 m1=MEDLoaderDataForTest.build2DMesh_1()
833 m1.renumberCells([0,1,4,2,3,5],False)
835 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
836 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
838 ff1=MEDFileFieldMultiTS.New()
839 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
840 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
841 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
842 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
844 ff1.appendFieldProfile(f1,mm1,0,da)
845 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
846 ff1.appendFieldProfile(f1,mm1,0,da)
849 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
850 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
851 self.assertTrue(vals.isEqual(d,1e-14))
852 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
853 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
854 self.assertTrue(vals.isEqual(e,1e-14))
855 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
857 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
858 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
859 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
860 self.assertTrue(vals.isEqual(d,1e-14))
861 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
862 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
863 self.assertTrue(vals.isEqual(e,1e-14))
865 # Tricky test of the case of in a MED file containing a Field on GAUSS_NE is lying on a profile that is reality represents all the geom entities of a level.
866 # By default when using setFieldProfile method such profile is not created because it is not useful ! So here a trick is used to force MEDLoader to do that
867 # for the necessity of the test ! The idea is too create artificially a mesh having one more fictious cell per type and to roll back right after !
868 def testMEDField15(self):
870 m0=MEDLoaderDataForTest.build2DMesh_1()
871 m0.renumberCells([0,1,4,2,3,5],False)
873 m1=m0.buildPartOfMySelf([0,1,1,2,3,3,4,4],True) ; m1.setName(tmp) # suppression of last cell that is a polygon and creation of one more cell per type
874 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
875 ff1=MEDFileField1TS.New()
876 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
877 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
878 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
879 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
881 ff1.setFieldProfile(f1,mm1,0,da)
882 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
885 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
886 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
887 self.assertTrue(p1.isIdentity())
888 self.assertEqual(5,p1.getNumberOfTuples())
889 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
891 # Test for getFieldAtTopLevel method
892 def testMEDField16(self):
894 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
896 mm1=MEDFileUMesh.New()
897 mm1.setCoords(m1.getCoords())
898 mm1.setMeshAtLevel(0,m1)
899 mm1.setName(m1.getName())
900 ff1=MEDFileField1TS.New()
901 ff1.setFieldNoProfileSBT(f1)
902 m2=m1.buildDescendingConnectivity()[0]
903 m2.sortCellsInMEDFileFrmt()
904 m2.setName(m1.getName())
905 mm1.setMeshAtLevel(-1,m2)
907 f2=m2.getMeasureField(True)
908 dd=DataArrayDouble.New()
909 dd.alloc(f2.getArray().getNumberOfTuples(),3)
910 dd[:,0]=f2.getArray()
911 dd[:,1]=2*f2.getArray()
912 dd[:,2]=3*f2.getArray()
913 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
915 f2.copyTinyStringsFrom(f1)
916 f2.copyTinyAttrFrom(f1)
917 ff1.setFieldNoProfileSBT(f2)
919 # Reading Pyfile37.med
920 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
921 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
922 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
923 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
924 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
925 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
926 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
930 ff1=MEDFileField1TS.New()
931 ff1.setFieldNoProfileSBT(f2)
933 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
934 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
935 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
938 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
939 def testMEDField17(self):
941 m1=MEDLoaderDataForTest.build2DMesh_1()
942 m1.renumberCells([0,1,4,2,3,5],False)
943 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
945 ffs=MEDFileFields.New()
946 ff1=MEDFileFieldMultiTS.New()
947 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
948 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
949 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
950 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
952 ff1.appendFieldProfile(f1,mm1,0,da)
953 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
954 ff1.appendFieldProfile(f1,mm1,0,da)
956 ffs.setFieldAtPos(0,ff1)
960 ffsr=MEDFileFields.New(fname)
961 ff3=ffsr.getFieldAtPos(0)
962 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
963 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
966 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
967 def testMEDField18(self):
969 m1=MEDLoaderDataForTest.build2DMesh_1()
970 m1.renumberCells([0,1,4,2,3,5],False)
971 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
973 ffs=MEDFileFields.New()
974 ff1=MEDFileFieldMultiTS.New()
975 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
976 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
977 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
978 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
980 ff1.appendFieldProfile(f1,mm1,0,da)
981 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
982 ff1.appendFieldProfile(f1,mm1,0,da)
986 ffsr=MEDFileFields.New(fname)
987 ff3=ffsr.getFieldAtPos(0)
988 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
989 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
992 def testMEDFieldBug1(self):
994 d=MEDFileData.New(fname)
995 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
998 def testMEDMesh8(self):
999 m=MEDLoaderDataForTest.build1DMesh_1()
1000 m.convertQuadraticCellsToLinear()
1001 mm=MEDFileUMesh.New()
1002 mm.setMeshAtLevel(0,m)
1003 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1004 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1005 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1006 mm.setGroupsAtLevel(0,[g1,g2],False)
1007 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1008 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1009 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1010 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1011 mm.assignFamilyNameWithGroupName()
1012 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1013 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1014 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1015 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1017 mm=MEDFileUMesh.New()
1018 mm.setMeshAtLevel(0,m)
1019 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1020 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1021 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1022 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1023 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1024 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1025 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1026 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1027 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1028 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1029 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1030 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1031 mm.changeFamilyId(5,6)
1032 g=mm.getGroupArr(0,"g3")
1033 self.assertTrue(g.isEqual(g3));
1034 g=mm.getGroupArr(0,"g2")
1035 self.assertTrue(g.isEqual(g2));
1036 g=mm.getGroupArr(0,"g1")
1037 self.assertTrue(g.isEqual(g1));
1040 # bug detected by gauthier
1041 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1042 fname="Pyfile41.med"
1043 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1045 mm1=MEDFileUMesh.New()
1046 mm1.setCoords(m1.getCoords())
1047 mm1.setMeshAtLevel(0,m1)
1049 ff1=MEDFileField1TS.New()
1050 ff1.setFieldNoProfileSBT(f1)
1052 # writing mesh1 and field1, now creation of mesh2 and field2
1055 m2.translate([0.5,0.6,0.7])
1056 m2.setName("3DSurfMesh_2")
1057 f2.getArray()[:]*=2.
1058 f2.setName("VectorFieldOnCells2")
1059 mm2=MEDFileUMesh.New()
1060 mm2.setCoords(m2.getCoords())
1061 mm2.setMeshAtLevel(0,m2)
1063 ff2=MEDFileField1TS.New()
1064 ff2.setFieldNoProfileSBT(f2)
1067 f3=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1068 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1069 f4=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1070 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1073 def testMEDLoaderMultiLevelCellField1(self):
1074 fname="Pyfile42.med"
1075 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1076 m=MEDFileUMesh.New()
1077 m.setCoords(m2.getCoords())
1078 m.setMeshAtLevel(0,m2)
1079 m.setMeshAtLevel(-1,m1)
1080 m.setMeshAtLevel(-2,m0)
1084 compNames1=["comp1","comp2","comp3"]
1085 ff1=MEDFileField1TS.New()
1086 da2=DataArrayDouble.New()
1087 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1089 da2.rearrange(len(compNames1))
1090 da2.setInfoOnComponents(compNames1)
1091 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkCoherency()
1092 ff1.setFieldNoProfileSBT(f2)
1093 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1094 da0=DataArrayDouble.New()
1095 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1097 da0.rearrange(len(compNames1))
1098 da0.setInfoOnComponents(compNames1)
1099 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1100 ff1.setFieldNoProfileSBT(f0)
1101 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1102 da1=DataArrayDouble.New()
1103 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1105 da1.rearrange(len(compNames1))
1106 da1.setInfoOnComponents(compNames1)
1107 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1108 ff1.setFieldNoProfileSBT(f1)
1109 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1114 compNames2=["comp11","comp22"]
1115 ff2=MEDFileField1TS.New()
1116 da0=DataArrayDouble.New()
1117 da0.alloc(m0.getNumberOfCells()*2,1)
1120 da0.setInfoOnComponents(compNames2)
1121 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1122 ff2.setFieldNoProfileSBT(f0)
1123 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1124 da1=DataArrayDouble.New()
1125 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1127 da1.rearrange(len(compNames2))
1128 da1.setInfoOnComponents(compNames2)
1129 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1130 ff2.setFieldNoProfileSBT(f1)
1131 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1135 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1136 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1137 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1138 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1139 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1140 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1143 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1144 fname="Pyfile43.med"
1145 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1146 m=MEDFileUMesh.New()
1147 m.setMeshAtLevel(0,m2)
1148 m.setMeshAtLevel(-1,m1)
1149 m.setMeshAtLevel(-2,m0)
1150 f=MEDFileField1TS.New()
1151 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1152 ff.setName("NodeFieldPfl")
1153 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1155 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1156 f.setFieldProfile(ff,m,-2,pfl)
1157 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1158 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1159 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1160 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1161 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1162 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1163 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1164 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1165 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1166 expected1=[1.,10.,100.,2.,20.,200.]
1167 nodeCoordsWithValue1=[10.,2.5,0.]
1168 nodeCoordsWithValue2=[10.,3.75,0.]
1170 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1171 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1174 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1178 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1179 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1180 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1181 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1182 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1183 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1184 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1185 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1186 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1188 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1193 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1194 f=MEDFileField1TS.New()
1195 f.setFieldProfile(ff,m,-2,pfl)
1196 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1197 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1198 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1199 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1200 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1201 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1202 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1203 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1204 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1205 expected2=[2.,20.,200.,1.,10.,100.]
1207 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1208 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1211 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1214 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1215 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1216 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1217 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1218 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1219 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1220 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1221 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1222 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1224 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1228 def testDuplicateNodesOnM1Group1(self):
1229 fname="Pyfile44.med"
1230 m=MEDCouplingCMesh.New()
1231 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1232 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1233 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1234 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1235 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1236 m2.setName(m.getName())
1237 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1238 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1239 mm=MEDFileUMesh.New()
1240 mm.setMeshAtLevel(0,m)
1241 mm.setMeshAtLevel(-1,m2)
1242 mm.setGroupsAtLevel(-1,[grp,grp2])
1243 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1244 mm.setGroupsAtLevel(1,[grpNode])
1245 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1246 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1247 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1249 self.assertEqual(30,mm.getNumberOfNodes())
1250 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1251 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1253 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1254 self.assertEqual([15,16,17],nodes.getValues());
1255 self.assertEqual([7,8,9],cells.getValues());
1256 self.assertEqual([12,13,14],cells2.getValues());
1257 self.assertEqual(33,mm.getNumberOfNodes())
1258 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1259 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1260 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1261 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1262 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())#cells 7,8,9 and 12,13,14 are lying on "Grp" but only 7,8 and 9 are renumbered
1263 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1264 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),2,1e-12);# Grp_dup and Grp are not equal considering connectivity only
1265 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1266 refValues=DataArrayDouble.New([1.21,1.32,1.43,1.54,1.65,1.32,1.44,1.56,1.68,1.8,1.43,1.56,1.69,1.82,1.95,1.54,1.68,1.82,1.96,2.1])
1267 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1268 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1270 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1271 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1272 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1273 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1274 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1278 def testDuplicateNodesOnM1Group2(self):
1279 fname="Pyfile45.med"
1280 m=MEDCouplingCMesh.New()
1281 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1282 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1283 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1284 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1285 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1286 m2.setName(m.getName())
1287 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1288 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1289 mm=MEDFileUMesh.New()
1290 mm.setMeshAtLevel(0,m)
1291 mm.setMeshAtLevel(-1,m2)
1292 mm.setGroupsAtLevel(-1,[grp,grp2])
1293 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1294 mm.setGroupsAtLevel(1,[grpNode])
1295 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1296 ref1=[4,9,8,14,15,4,10,9,15,16]
1297 ref2=[4,9,8,14,30,4,10,9,30,16]
1299 self.assertEqual(30,mm.getNumberOfNodes())
1300 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1301 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1303 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1304 self.assertEqual([15],nodes.getValues());
1305 self.assertEqual([7,8],cells.getValues());
1306 self.assertEqual([12,13],cells2.getValues());
1307 self.assertEqual(31,mm.getNumberOfNodes())
1308 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1309 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1310 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1311 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1312 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())#cells 7,8,9 and 12,13,14 are lying on "Grp" but only 7,8 and 9 are renumbered
1313 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1314 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),2,1e-12);# Grp_dup and Grp are not equal considering connectivity only
1315 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1316 refValues=DataArrayDouble.New([1.21,1.32,1.43,1.54,1.65,1.32,1.44,1.56,1.68,1.8,1.43,1.56,1.69,1.82,1.95,1.54,1.68,1.82,1.96,2.1])
1317 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1318 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1320 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1321 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1322 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1323 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1324 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1328 def testBasicConstructors(self):
1329 fname="Pyfile18.med"
1330 m=MEDFileMesh.New(fname)
1331 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1332 m=MEDFileMesh.New(fname)
1333 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1334 m=MEDFileUMesh(fname)
1337 m=MEDFileCMesh("MEDFileMesh5.med")
1338 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1340 m=MEDFileMeshMultiTS()
1341 m=MEDFileMeshMultiTS(fname)
1342 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1344 m=MEDFileMeshes(fname)
1346 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1347 m=MEDFileFieldMultiTS()
1348 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1350 m=MEDFileFields(fname)
1352 m=MEDFileData(fname)
1354 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1355 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1356 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1357 m=MEDCouplingCMesh()
1358 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1359 m=MEDCouplingFieldTemplate(ON_NODES)
1360 m=MEDCouplingMultiFields([])
1361 m=MEDCouplingFieldOverTime([])
1364 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1365 def testBugSemiPartialField(self):
1366 fname="Pyfile46.med"
1367 m=MEDLoaderDataForTest.build2DMesh_3()
1368 m=m[:10] ; m.setName("mesh")
1369 f=m.getMeasureField(ON_CELLS)
1370 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1372 f.setName("SemiPartialField")
1374 f1=f[:6] ; f1.getMesh().setName(m.getName())
1375 f2=f[6:] ; f2.getMesh().setName(m.getName())
1377 mm=MEDFileUMesh.New()
1378 mm.setMeshAtLevel(0,m)
1379 ff=MEDFileField1TS.New()
1380 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1384 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1385 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1386 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1388 fread.checkCoherency()
1389 fread2.checkCoherency()
1390 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1391 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1394 def testUnPolyze1(self):
1395 fname="Pyfile47.med"
1396 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1397 ref=[13,14,14,12,12,12,12,12,12,12,12,13,12,14,14,13,15,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12]
1398 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1399 self.assertEqual(mm.unPolyze()[:3],(True,[[3,2,0],[4,3,2],[5,4,5],[14,2,9],[16,3,11],[31,2,14]],[[3,3,0],[4,3,3],[5,3,6],[14,3,9],[16,3,12],[18,1,15]]))
1401 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1402 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1403 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1404 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1405 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1406 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1407 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1408 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1410 mm.setRenumFieldArr(0,None)
1411 mm.setFamilyFieldArr(-1,None)
1414 def testUnPolyze2(self):
1415 fname="Pyfile48.med"
1416 mfd=MEDFileData.New()
1417 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1418 meshes=MEDFileMeshes.New()
1420 mfd.setMeshes(meshes)
1421 fields=MEDFileFields.New()
1422 mfd.setFields(fields)
1423 ff=MEDFileFieldMultiTS.New()
1424 fields.pushField(ff)
1426 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1427 f0_0.setTime(9.5,3,4)
1428 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1430 f0_0.setMesh(mm.getMeshAtLevel(0))
1431 ff.appendFieldNoProfileSBT(f0_0)
1432 ff0=ff.getTimeStepAtPos(0)
1433 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1434 f0_1.setTime(9.5,3,4)
1435 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1436 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1437 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1439 ff0.setFieldProfile(f0_1,mm,0,pfl)
1440 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1441 f0_2.setTime(9.5,3,4)
1442 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1443 da=DataArrayDouble.New([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.],8,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])#provoquer error
1444 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1446 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1447 mfd.getFields().shallowCpyGlobs(ff0)
1449 mfd.unPolyzeMeshes()
1451 fmts=mfd.getFields()[0]
1452 self.assertEqual(fmts.getNumberOfTS(),1)
1453 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1454 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1455 self.assertEqual(entry,[((3,0),(38,40)),((4,0),(40,43)),((5,0),(43,46)),((14,0),(46,48)),((16,0),(48,49)),((18,0),(49,50)),((40,0),(0,38))])
1456 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1457 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1458 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1459 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1460 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1461 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1462 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1463 self.assertEqual([(3,[(0,(38,40),'NewPfl_0','')]),(4,[(0,(40,43),'','')]),(5,[(0,(43,46),'','')]),(14,[(0,(46,48),'NewPfl_1','')]),(16,[(0,(48,49),'NewPfl_2','')]),(18,[(0,(49,50),'','')]),(40,[(1,(0,38),'','')])],fmts.getFieldSplitedByType(3,4))
1464 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1465 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1466 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1467 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1468 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1469 self.assertEqual(ftest0.getMesh().getNodalConnectivity().getValues(),[14,4,5,6,7,14,26,27,28,29,16,20,21,22,23,24,25,18,30,31,32,33,34,35,36,37])
1470 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1471 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1472 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1473 self.assertEqual(ftest1.getMesh().getNodalConnectivity().getValues(),[3,0,1,2,3,3,4,5,4,6,7,8,9,4,10,11,12,13,4,14,15,16,17,5,18,19,20,21,22,5,23,24,25,26,27,5,31,32,33,34,35,36,37])
1474 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1479 def testGaussWriteOnPfl1(self):
1480 fname="Pyfile49.med"
1481 fname2="Pyfile50.med"
1482 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1483 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1484 mQ8.allocateCells(1)
1485 mQ8.insertNextCell(NORM_QUAD8,range(8))
1486 mQ8.finishInsertingCells()
1487 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1488 mQ4.allocateCells(1)
1489 mQ4.insertNextCell(NORM_QUAD4,range(4))
1490 mQ4.finishInsertingCells()
1491 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1492 mT3.allocateCells(1)
1493 mT3.insertNextCell(NORM_TRI3,range(3))
1494 mT3.finishInsertingCells()
1496 tr=[[0.,4.],[2.,4.],[4.,4.],[6.,4.],[8.,4.],[10.,4.],[12.,4.],[14.,4.],[16.,4.],[18.,4.],[20.,4.],[0.,0.],[2.,0.], [0.,2.],[2.,2.],[4.,2.],[6.,2.],[8.,2.],[10.,2.],[12.,2.]]
1497 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1498 ms[:]=(elt.deepCpy() for elt in ms)
1499 for m,t in zip(ms,tr):
1500 d=m.getCoords() ; d+= t
1502 m=MEDCouplingUMesh.MergeUMeshes(ms)
1504 m2=m[:13] ; m2.setName(m.getName())
1505 ### Use case 1 : Pfl on all tri3 and on all quad4. If we were on CELLS or GAUSS_NE no pfl were needed. But here 2 discs in tri3.
1506 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1507 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1510 da=DataArrayDouble(34) ; da.iota(3.)
1512 f.setName("fieldCellOnPflWithoutPfl")
1513 fInvalid=f.deepCpy()
1514 f.setGaussLocalizationOnCells([0,1,2,3,4,5,6,7,8],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1515 f.setGaussLocalizationOnCells([9,10],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.07,0.13])
1516 f.setGaussLocalizationOnCells([11,12],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8],[0.8,0.07,0.1,0.01,0.02])
1518 fInvalid2=fInvalid.deepCpy()
1519 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1522 mm.setMeshAtLevel(0,m)
1525 f1ts=MEDFileField1TS.New()
1526 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1527 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1528 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1529 f1ts.setFieldProfile(f,mm,0,pfl)
1532 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1533 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1534 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1535 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1536 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1537 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1538 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1539 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1541 dataRead=MEDFileData.New(fname)
1542 mRead=dataRead.getMeshes()[0]
1543 f1tsRead=dataRead.getFields()[0][0]
1544 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1545 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1546 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1547 f2_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1548 f2_bis.checkCoherency()
1549 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1551 MEDLoader.WriteField(fname2,f,True)
1552 f2_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1553 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1554 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1555 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1556 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1557 m2=m[pfl] ; m2.setName(m.getName())
1560 da=DataArrayDouble(35) ; da.iota(3.)
1562 f.setName("fieldCellOnPflWithoutPfl2")
1563 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1564 f.setGaussLocalizationOnCells([2,4,5],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.07,0.13])
1565 f.setGaussLocalizationOnCells([6,7,8,9],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8],[0.8,0.07,0.1,0.01,0.02])
1569 mm.setMeshAtLevel(0,m)
1571 f1ts=MEDFileField1TS.New()
1572 f1ts.setFieldProfile(f,mm,0,pfl)
1573 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1574 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1575 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1576 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1578 dataRead=MEDFileData.New(fname)
1579 mRead=dataRead.getMeshes()[0]
1580 f1tsRead=dataRead.getFields()[0][0]
1581 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1582 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1583 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1584 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1585 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1586 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1587 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1589 MEDLoader.WriteField(fname2,f,True)
1590 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1591 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1592 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1593 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1594 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1597 da=DataArrayDouble(60) ; da.iota(3.)
1599 f.setName("fieldCellWithoutPfl")
1600 f.setGaussLocalizationOnCells([0,1,2,3,4,5,6,7,8],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1601 f.setGaussLocalizationOnCells([9,10],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.07,0.13])
1602 f.setGaussLocalizationOnCells([11,12],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8],[0.8,0.07,0.1,0.01,0.02])
1603 f.setGaussLocalizationOnCells([13,14,15,17,18],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8],[0.8,0.1,0.03,0.07])
1604 f.setGaussLocalizationOnCells([16,19],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.1,0.1])
1607 mm.setMeshAtLevel(0,m)
1608 f1ts=MEDFileField1TS.New()
1609 f1ts.setFieldNoProfileSBT(f)
1610 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1611 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1612 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1613 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1614 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1618 dataRead=MEDFileData.New(fname)
1619 mRead=dataRead.getMeshes()[0]
1620 f1tsRead=dataRead.getFields()[0][0]
1621 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1622 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1623 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1624 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1625 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1626 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1628 MEDLoader.WriteField(fname2,f,True)
1629 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1630 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1631 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1634 # Testing profile on nodes when the profile is identity but not on all nodes.
1635 def testMEDFieldPflOnNode1(self):
1636 fname="Pyfile51.med"
1637 coo=DataArrayDouble([0.,0.,0.5,0.,1.,0.,0.,0.5,0.5,0.5,1.,0.5,0.,1.,0.5,1.,1.,1.],9,2)
1638 m0=MEDCouplingUMesh("Mesh",2)
1640 m0.insertNextCell(NORM_TRI3,[1,4,2])
1641 m0.insertNextCell(NORM_TRI3,[4,5,2])
1642 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1643 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1644 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1645 m0.finishInsertingCells()
1647 m1=MEDCouplingUMesh(m0.getName(),1)
1649 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1651 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1653 m1.finishInsertingCells()
1657 m.setMeshAtLevel(0,m0)
1658 m.setMeshAtLevel(-1,m1)
1660 dt=3 ; it=2 ; tim=4.5
1661 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1662 fieldNode0.setName("fieldNode0")
1663 fieldNode0.setTime(tim,dt,it)
1664 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1665 arr=DataArrayDouble([10,11,12,13,14])
1666 fieldNode0.setArray(arr)
1667 f0=MEDFileField1TS()
1668 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1669 m.write(fname,2) ; f0.write(fname,0)
1670 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1671 fieldNode1.setName("fieldNode1")
1672 fieldNode1.setTime(tim,dt,it)
1673 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1674 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1675 fieldNode1.setArray(arr1)
1676 f1=MEDFileField1TS()
1677 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1680 ## Reading from file
1681 m=MEDFileMesh.New(fname)
1682 m0=m.getMeshAtLevel(0)
1683 m00=m0.deepCpy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1684 fieldNode0.setMesh(m00)
1685 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1686 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1687 ff0_1.checkCoherency()
1688 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1689 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1690 ff0_2.checkCoherency()
1691 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1692 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1693 ff0_3.checkCoherency()
1694 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1695 ff0_4=MEDLoader.ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1696 ff0_4.checkCoherency()
1697 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1698 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1699 m1=m.getMeshAtLevel(-1)
1700 m10=m1.deepCpy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1701 fieldNode1.setMesh(m10)
1702 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1703 ff1_1.checkCoherency()
1704 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1705 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1706 ff1_2.checkCoherency()
1707 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1708 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1709 ff1_3.checkCoherency()
1710 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1711 ff1_4=MEDLoader.ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1712 ff1_4.checkCoherency()
1713 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1714 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_NODES,m0) # error because impossible to build a sub mesh at level 0 lying on nodes [0,1,2,3,4,5,6]
1715 self.assertRaises(InterpKernelException,f1.getFieldAtLevel,ON_NODES,0) # error because impossible to build a sub mesh at level 0 lying on nodes [0,1,2,3,4,5,6]
1716 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_NODES,0,m) # error because impossible to build a sub mesh at level 0 lying on nodes [0,1,2,3,4,5,6]
1717 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1718 arr_r.setName(fieldNode1.getArray().getName())
1719 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1720 pfl1_r.setName(pfl1.getName())
1721 self.assertTrue(pfl1_r.isEqual(pfl1))
1724 # Testing profile on nodes when the profile is identity but not on all nodes.
1725 def testMEDFieldPflOnCell1(self):
1726 fname="Pyfile52.med"
1727 coo=DataArrayDouble([0.,0.,0.5,0.,1.,0.,0.,0.5,0.5,0.5,1.,0.5,0.,1.,0.5,1.,1.,1.],9,2)
1728 m0=MEDCouplingUMesh("Mesh",2)
1730 m0.insertNextCell(NORM_TRI3,[1,4,2])
1731 m0.insertNextCell(NORM_TRI3,[4,5,2])
1732 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1733 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1734 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1735 m0.finishInsertingCells()
1737 m1=MEDCouplingUMesh(m0.getName(),1)
1739 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1741 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1743 m1.finishInsertingCells()
1747 m.setMeshAtLevel(0,m0)
1748 m.setMeshAtLevel(-1,m1)
1750 dt=3 ; it=2 ; tim=4.5
1751 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1752 fieldCell0.setName("fieldCell0")
1753 fieldCell0.setTime(tim,dt,it)
1754 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1755 arr=DataArrayDouble([10,11,12])
1756 fieldCell0.setArray(arr)
1757 f0=MEDFileField1TS()
1758 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1759 m.write(fname,2) ; f0.write(fname,0)
1760 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1761 fieldCell1.setName("fieldCell1")
1762 fieldCell1.setTime(tim,dt,it)
1763 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1764 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1765 fieldCell1.setArray(arr1)
1766 f1=MEDFileField1TS()
1767 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1770 ## Reading from file
1771 m=MEDFileMesh.New(fname)
1772 m0=m.getMeshAtLevel(0)
1773 m00=m0.deepCpy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1774 fieldCell0.setMesh(m00)
1775 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1776 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1777 ff0_1.checkCoherency()
1778 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1779 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1780 ff0_2.checkCoherency()
1781 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1782 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1783 ff0_3.checkCoherency()
1784 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1785 ff0_4=MEDLoader.ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1786 ff0_4.checkCoherency()
1787 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1788 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1789 m1=m.getMeshAtLevel(-1)
1790 m10=m1.deepCpy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1791 fieldCell1.setMesh(m10)
1792 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1793 ff1_1.checkCoherency()
1794 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1795 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1796 ff1_2.checkCoherency()
1797 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1798 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1799 ff1_3.checkCoherency()
1800 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1801 ff1_4=MEDLoader.ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1802 ff1_4.checkCoherency()
1803 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1804 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_CELLS,m0) # error because impossible to build a sub mesh at level 0 lying on cells [0,1,2,3,4,5,6]
1805 self.assertRaises(InterpKernelException,f1.getFieldAtLevel,ON_CELLS,0) # error because impossible to build a sub mesh at level 0 lying on cells [0,1,2,3,4,5,6]
1806 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_CELLS,0,m) # error because impossible to build a sub mesh at level 0 lying on cells [0,1,2,3,4,5,6]
1807 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1808 arr_r.setName(fieldCell1.getArray().getName())
1809 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1810 pfl1_r.setName(pfl1.getName())
1811 self.assertTrue(pfl1_r.isEqual(pfl1))
1814 def testMEDFileUMeshZipCoords1(self):
1816 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1817 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0) ; m0.insertNextCell(NORM_TRI3,[1,2,3]) ; m0.insertNextCell(NORM_QUAD4,[2,4,3,4]) ; m0.insertNextCell(NORM_POLYGON,[1,6,6,6,2])
1818 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1819 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1820 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1821 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1822 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1823 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1824 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1825 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1826 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1827 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1829 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1830 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1831 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1832 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1833 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1834 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1835 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1836 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1837 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
1840 def testMEDUMeshAddNodeGroup1(self):
1841 fname="Pyfile53.med"
1843 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1844 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0) ; m0.insertNextCell(NORM_TRI3,[1,2,3]) ; m0.insertNextCell(NORM_QUAD4,[2,4,3,4]) ; m0.insertNextCell(NORM_POLYGON,[1,6,6,6,2])
1845 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1846 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1847 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1848 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1849 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1852 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
1853 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
1854 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1855 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1856 mm.setFamilyId("MyFam",2)
1857 mm.setFamilyId("MyOtherFam",3)
1858 mm.setFamilyId("MyOther-1",-1)
1859 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1860 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1862 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1863 mm.addNodeGroup(daTest)
1864 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1865 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1866 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1867 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1869 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1870 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1871 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1872 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1873 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1874 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1876 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
1877 da=DataArrayInt([3,12]) ; da.setName("grp0")
1878 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1880 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1882 mm=MEDFileMesh.New(fname)
1883 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1884 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1885 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1886 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1888 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1889 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1890 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1891 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1892 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1893 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1895 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
1896 da=DataArrayInt([3,12]) ; da.setName("grp0")
1897 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1899 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1902 def testMEDUMeshAddGroup1(self):
1903 fname="Pyfile54.med"
1905 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1906 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
1908 m0.insertNextCell(NORM_TRI3,[1,2,1])
1911 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
1914 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
1916 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1917 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1918 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1919 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1920 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1923 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
1924 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
1925 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1926 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1927 mm.setFamilyId("MyFam",2)
1928 mm.setFamilyId("MyOtherFam",3)
1929 mm.setFamilyId("MyOther-1",-1)
1930 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1931 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1933 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1934 mm.addGroup(0,daTest)
1935 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1936 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1937 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1938 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1940 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1941 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1942 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1943 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1944 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1945 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1947 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
1948 da=DataArrayInt([3,12]) ; da.setName("grp0")
1949 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1951 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1953 mm=MEDFileMesh.New(fname)
1954 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1955 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1956 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1957 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1959 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1960 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1961 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1962 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1963 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1964 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1966 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
1967 da=DataArrayInt([3,12]) ; da.setName("grp0")
1968 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1970 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1973 def testHeapMem1(self):
1974 m=MEDCouplingCMesh()
1975 arr=DataArrayDouble(10,1) ; arr.iota(0)
1976 m.setCoords(arr,arr)
1977 m=m.buildUnstructured()
1979 f=m.getMeasureField(ON_CELLS)
1980 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100))
1981 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100))
1984 mm.setMeshAtLevel(0,m)
1985 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100))
1986 ff=MEDFileField1TS()
1987 ff.setFieldNoProfileSBT(f)
1988 self.assertIn(ff.getHeapMemorySize(),xrange(711-40,711+20))
1990 fff=MEDFileFieldMultiTS()
1991 fff.appendFieldNoProfileSBT(f)
1992 self.assertIn(fff.getHeapMemorySize(),xrange(743-50,743+30))
1994 fff.appendFieldNoProfileSBT(f)
1995 self.assertIn(fff.getHeapMemorySize(),xrange(1462-90,1462+50))
1996 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(711-40,711+20))
1999 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2000 fff.appendFieldProfile(f2,mm,0,pfl)
2001 self.assertIn(fff.getHeapMemorySize(),xrange(2178-130,2178+100))
2002 self.assertIn(fff.getProfile("pfl_NORM_QUAD4").getHeapMemorySize(),xrange(215-10,215+10))
2003 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(700-50,700+30))
2006 def testCurveLinearMesh1(self):
2007 fname="Pyfile55.med"
2008 mesh=MEDCouplingCurveLinearMesh();
2009 mesh.setTime(2.3,4,5);
2010 mesh.setTimeUnit("us");
2011 mesh.setName("Example of Cuve linear mesh");
2012 mesh.setDescription("buildCLMesh");
2013 a1=DataArrayDouble(3*20,1);
2014 a1.iota(7.) ; a1.rearrange(3);
2016 mesh.setNodeGridStructure([4,5]);
2017 mesh.checkCoherency();
2019 m=MEDFileCurveLinearMesh()
2021 d=DataArrayInt(20) ; d.iota(4)
2022 m.setFamilyFieldArr(1,d)
2023 d3=DataArrayInt(20) ; d3.iota(400)
2024 m.setRenumFieldArr(1,d3)
2025 d2=DataArrayInt(12) ; d2.iota(40)
2026 m.setFamilyFieldArr(0,d2)
2027 d4=DataArrayInt(21) ; d4.iota(4000)
2028 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2030 m.setRenumFieldArr(1,d4)
2033 m1=MEDFileCurveLinearMesh(fname)
2035 self.assertTrue(mm.isEqual(mesh,1e-12))
2037 m1=MEDFileMesh.New(fname)
2038 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2039 self.assertTrue(isinstance(m1.getUnivName(),str))
2040 self.assertTrue(len(m1.getUnivName())!=0)
2041 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2044 def testParameters1(self):
2045 fname="Pyfile56.med"
2046 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2047 mm=MEDFileCMesh() ; mm.setMesh(m)
2048 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2050 p=MEDFileParameters()
2051 data.setParams(p) ; data.setMeshes(ms)
2052 pts=MEDFileParameterMultiTS()
2053 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2054 pts.appendValue(1,2,3.4,567.89)
2055 pts.appendValue(2,3,5.6,999.123)
2056 pts2=pts.deepCpy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2057 p.pushParam(pts) ; p.pushParam(pts2)
2059 p2=MEDFileParameters(fname)
2060 self.assertTrue(p.isEqual(p2,1e-14)[0])
2061 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2065 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2066 pts2.eraseTimeStepIds([0])
2067 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2069 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2070 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2071 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2072 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2073 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2075 self.assertTrue(p.isEqual(p2,1e-14)[0])
2076 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2077 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2078 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2079 self.assertEqual(p.getParamsNames(),('A','B'))
2080 ptsr=MEDFileParameterMultiTS(fname,"B")
2081 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2082 ptsr=MEDFileParameterMultiTS(fname)
2083 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2084 p1tsr=MEDFileParameterDouble1TS(fname)
2085 self.assertEqual(p1tsr.getName(),"A")
2086 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2087 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2088 self.assertEqual(p1tsr.getName(),"B")
2089 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2090 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2091 self.assertEqual(p1tsr.getName(),"B")
2092 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2093 data2=MEDFileData(fname)
2094 self.assertEqual(2,data2.getNumberOfParams())
2095 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2098 def testNamesOnCellAndNodesInMeshes1(self):
2099 fname="Pyfile58.med"
2100 fname2="Pyfile59.med"
2101 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2102 m1=m.buildDescendingConnectivity()[0]
2103 m1.sortCellsInMEDFileFrmt()
2106 mm.setMeshAtLevel(0,m)
2107 mm.setMeshAtLevel(-1,m1)
2108 namesCellL0=DataArrayAsciiChar(6,16)
2109 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2110 mm.setNameFieldAtLevel(0,namesCellL0)
2111 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.substr(2)])
2112 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2113 mm.setNameFieldAtLevel(-1,namesCellL1)
2114 namesNodes=namesCellL1.substr(4,16)
2115 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2116 mm.setNameFieldAtLevel(1,namesNodes)
2119 mmr=MEDFileMesh.New(fname)
2120 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2121 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2122 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2123 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2124 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2125 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2126 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2127 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2129 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2130 # remove names on nodes
2131 mmCpy.setNameFieldAtLevel(1,None)
2132 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2133 mm.setNameFieldAtLevel(1,None)
2134 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2135 mm.setNameFieldAtLevel(-1,None)
2137 mmr=MEDFileMesh.New(fname)
2138 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2139 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2140 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2142 c=MEDCouplingCMesh()
2143 arr=DataArrayDouble([0.,1.1,2.3])
2144 c.setCoords(arr,arr)
2148 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2149 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2151 ccr=MEDFileMesh.New(fname2)
2152 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2153 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2154 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2155 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2156 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2157 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2158 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2160 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2163 def testToExportInExamples1(self):
2164 m=MEDCouplingCMesh()
2165 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2166 m.setCoords(arr,arr)
2167 m=m.buildUnstructured() ; m.setName("mesh")
2168 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2169 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2172 mm.setMeshAtLevel(0,m)
2173 mm.setMeshAtLevel(-1,m2)
2174 mm.setGroupsAtLevel(0,[grp1,grp2])
2175 mm.write("example.med",2)
2177 m0=mm.getMeshAtLevel(0)
2178 m1=mm.getMeshAtLevel(-1)
2179 grp1=mm.getGroupArr(0,"grp1")
2180 grp2=mm.getGroupArr(0,"grp2")
2182 whichGrp=DataArrayInt(m0.getNumberOfCells())
2183 whichGrp.fillWithValue(-1)
2184 for grpId,grp in enumerate(grps):
2187 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2188 e,f=a.areCellsIncludedIn(m1,2)
2190 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2191 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2192 c2.transformWithIndArr(whichGrp)
2193 splitOfM1=len(grps)*[None]
2194 for grpId,grp in enumerate(grps):
2195 tmp=c2.getIdsEqual(grpId)
2196 splitOfM1[grpId]=tmp
2198 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2199 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2202 def testBugCorrection1(self):
2205 self.assertEqual(fs[0],None)
2206 self.assertEqual(3,len(fs))
2209 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2210 f1Name="Pyfile60.med"
2211 f2Name="Pyfile61.med"
2212 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2214 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2216 # reading and compare
2217 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2218 for mn in d1.getMeshes().getMeshesNames():
2219 m1=d1.getMeshes()[mn]
2220 m2=d2.getMeshes()[mn]
2221 for lev in m1.getNonEmptyLevels():
2222 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2223 for grpName in grpsNames:
2224 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2228 for fieldn in d1.getFields().getFieldsNames():
2229 f1=d1.getFields()[fieldn]
2230 f2=d2.getFields()[fieldn]
2231 for it,order,tim in f1.getTimeSteps():
2234 if len(f1t.getPflsReallyUsed())!=0:
2236 for lev in f1t.getNonEmptyLevels()[1]:
2237 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2238 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2239 self.assertTrue(pfl1.isEqual(pfl2))
2240 self.assertTrue(arr1.isEqual(arr2,1e-10))
2245 for lev in f1t.getNonEmptyLevels()[1]:
2246 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2247 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2248 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2255 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2256 m=MEDCouplingCMesh()
2257 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2258 m.setCoords(arr,arr,arr)
2259 m=m.buildUnstructured()
2260 m2=m.buildDescendingConnectivity()[0]
2262 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2263 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2264 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2265 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2266 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2267 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2269 mm.setMeshAtLevel(0,m)
2270 mm.setGroupsAtLevel(0,[g1,g2])
2271 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2272 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2273 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2274 mm.normalizeFamIdsMEDFile()
2275 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2276 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2277 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2278 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2279 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2280 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2281 for g in mm.getGroupsOnSpecifiedLev(0):
2282 for f in mm.getFamiliesIdsOnGroup(g):
2283 self.assertTrue(f<0)
2288 mm.setMeshAtLevel(0,m)
2289 mm.setMeshAtLevel(-1,m2)
2290 mm.setGroupsAtLevel(0,[g1,g2])
2291 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2292 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2293 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2294 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2295 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2296 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2297 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2298 mm.normalizeFamIdsMEDFile()
2299 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2300 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2301 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2302 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2303 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2304 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2305 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2306 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2307 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2308 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2309 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2310 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2312 for g in mm.getGroupsOnSpecifiedLev(lev):
2313 for f in mm.getFamiliesIdsOnGroup(g):
2314 self.assertTrue(f<0)
2320 mm.setMeshAtLevel(0,m)
2321 mm.setMeshAtLevel(-1,m2)
2322 mm.setGroupsAtLevel(0,[g1,g2])
2323 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2324 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2325 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2326 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2327 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2328 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2329 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2330 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2331 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2332 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2333 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2334 mm.normalizeFamIdsMEDFile()
2335 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2336 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2337 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2338 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2339 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2340 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2341 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2342 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2343 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2344 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2345 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2346 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2347 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2348 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2349 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2350 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2351 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2352 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2354 for g in mm.getGroupsOnSpecifiedLev(lev):
2355 for f in mm.getFamiliesIdsOnGroup(g):
2356 self.assertTrue(f<0)
2360 for g in mm.getGroupsOnSpecifiedLev(1):
2361 for f in mm.getFamiliesIdsOnGroup(g):
2362 self.assertTrue(f>0)
2367 def testNonRegressionMantis22212ChangeGrpName(self):
2368 fileName="Pyfile62.med"
2369 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2370 m=MEDFileUMesh.New()
2371 m.setCoords(m2.getCoords())
2372 m.setMeshAtLevel(0,m2)
2373 m.setMeshAtLevel(-1,m1)
2374 m.setMeshAtLevel(-2,m0)
2375 m.setFamilyFieldArr(0,f2)
2376 m.setFamilyFieldArr(-1,f1)
2377 m.setFamilyFieldArr(-2,f0)
2378 m.setFamilyFieldArr(1,p)
2380 for i in xrange(nbOfFams):
2381 m.addFamily(fns[i],fids[i])
2384 for i in xrange(nbOfGrps):
2385 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2387 m.setName(m2.getName())
2388 m.setDescription(m2.getDescription())
2391 mm0=MEDFileMesh.New(fileName)
2392 mm1=MEDFileMesh.New(fileName)
2393 groupNamesIni=MEDLoader.GetMeshGroupsNames(fileName,"ma")
2394 for name in groupNamesIni:
2395 mm1.changeGroupName(name,name+'N')
2397 mm1.write(fileName,2)
2400 mm2=MEDFileMesh.New(fileName)
2401 for name in groupNamesIni:
2402 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2403 arr0=mm0.getGroupArr(lev,name)
2404 arr2=mm2.getGroupArr(lev,name+'N')
2405 arr0.setName(name+'N')
2406 self.assertTrue(arr0.isEqual(arr2))
2411 def testInt32InMEDFileFieldStar1(self):
2412 fname="Pyfile63.med"
2413 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2414 arr=f1.getArray().convertToIntArr()
2417 mm1=MEDFileUMesh.New()
2418 mm1.setCoords(m1.getCoords())
2419 mm1.setMeshAtLevel(0,m1)
2420 mm1.setName(m1.getName())
2422 ff1=MEDFileIntField1TS()
2423 ff1.setFieldNoProfileSBT(f1,arr)
2424 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2425 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2426 self.assertTrue(b.isEqual(arr))
2427 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2429 ff2=MEDFileAnyTypeField1TS.New(fname)
2430 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2431 self.assertEqual(ff2.getTime(),[0,1,2.0])
2432 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2433 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2434 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2435 self.assertTrue(b.isEqual(arr))
2436 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2438 c=ff2.getUndergroundDataArray() ; c*=2
2439 ff2.write(fname,0) # 2 time steps in
2440 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2441 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2442 self.assertEqual(len(ffs1),2)
2443 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2444 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2445 self.assertTrue(b.isEqual(arr))
2446 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2447 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2448 self.assertTrue(b.isEqual(arr))
2449 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2450 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2451 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2452 self.assertTrue(b.isEqual(2*arr))
2454 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2455 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2457 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2460 self.assertTrue(bc.isEqual(3*arr))
2461 nf1=MEDCouplingFieldDouble(ON_NODES)
2462 nf1.setTime(9.,10,-1)
2463 nf1.setMesh(f1.getMesh())
2464 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2465 nf1.setName("VectorFieldOnNodes")
2466 nff1=MEDFileIntField1TS.New()
2467 nff1.setFieldNoProfileSBT(nf1,narr)
2468 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2469 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2472 nf2=MEDCouplingFieldDouble(ON_NODES)
2473 nf2.setTime(19.,20,-11)
2474 nf2.setMesh(f1.getMesh())
2475 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2476 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2477 nff2=MEDFileIntField1TS.New()
2478 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2479 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2480 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2481 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2482 self.assertTrue(b.isEqual(npfl))
2483 self.assertTrue(a.isEqual(narr2))
2485 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2486 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2487 self.assertTrue(b.isEqual(npfl))
2488 self.assertTrue(a.isEqual(narr2))
2490 nf3=MEDCouplingFieldDouble(ON_NODES)
2491 nf3.setName("VectorFieldOnNodesDouble")
2492 nf3.setTime(29.,30,-21)
2493 nf3.setMesh(f1.getMesh())
2494 nf3.setArray(f1.getMesh().getCoords())
2495 nff3=MEDFileField1TS.New()
2496 nff3.setFieldNoProfileSBT(nf3)
2498 fs=MEDFileFields(fname)
2499 self.assertEqual(len(fs),4)
2500 ffs=[it for it in fs]
2501 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2502 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2503 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2504 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2506 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2507 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2508 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2509 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2510 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2512 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2513 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2514 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2515 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2516 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2517 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2518 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2519 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2521 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2522 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2523 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2524 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2527 def testMEDFileFields1(self):
2528 fname="Pyfile64.med"
2529 f1=MEDCouplingFieldDouble(ON_NODES)
2530 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2531 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2532 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2534 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2536 f1.setName("Field1")
2537 ff1=MEDFileField1TS.New()
2538 ff1.setFieldNoProfileSBT(f1)
2539 self.assertEqual(ff1.getDtUnit(),"us")
2541 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2542 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2544 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2545 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2546 ff1s.setName("Field2")
2548 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2549 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2550 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2551 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2552 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2553 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2554 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2555 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2558 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2559 def testMEDFileFields2(self):
2560 fname="Pyfile65.med"
2561 # to check that all is initialize
2562 MEDFileField1TS().__str__()
2563 MEDFileFieldMultiTS().__str__()
2564 # building a mesh containing 4 tri3 + 5 quad4
2565 tri=MEDCouplingUMesh("tri",2)
2566 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2567 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2568 tris=[tri.deepCpy() for i in xrange(4)]
2569 for i,elt in enumerate(tris): elt.translate([i,0])
2570 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2571 quad=MEDCouplingUMesh("quad",2)
2572 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2573 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2574 quads=[quad.deepCpy() for i in xrange(5)]
2575 for i,elt in enumerate(quads): elt.translate([5+i,0])
2576 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2577 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2578 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2580 fmts0_0=MEDFileFieldMultiTS()
2581 fmts0_1=MEDFileFieldMultiTS()
2583 for i in xrange(10):
2584 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2585 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2586 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2587 f.setTime(float(i+1)+0.1,i+1,-i-1)
2588 fmts0_0.appendFieldNoProfileSBT(f)
2589 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2590 self.assertEqual(fmts0_1.getName(),name1)
2591 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2592 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2594 # components names have been modified to generate errors
2595 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2596 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2597 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2598 f1ts.setInfo(['aa [bb]','eee [dd]'])
2599 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2601 # add a mismatch of nb of compos
2603 fmts0_2=fmts0_0.deepCpy()
2604 fmts0_3=fmts0_0.deepCpy()
2605 fmts0_4=fmts0_0.deepCpy()
2606 fmts0_5=fmts0_0.shallowCpy()
2607 self.assertTrue(len(fmts0_0)==10 and len(fmts0_1)==10 and len(fmts0_2)==10 and len(fmts0_3)==10 and len(fmts0_4)==10 and len(fmts0_5)==10)
2609 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2610 del fmts0_3[[1.1,(6,-6),9]]
2611 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2612 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2613 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2614 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2615 fmts0_7=fmts0_4[::-3]
2616 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2617 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2620 fs0.pushField(fmts0_0)
2621 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2622 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2623 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2624 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2626 fs0=MEDFileFields(fname)
2627 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2628 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2629 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2630 del fs1[["2ndField",3]]
2631 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2632 fs2=fs0[[0,"4thField"]]
2633 self.assertTrue(isinstance(fs2,MEDFileFields))
2634 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2636 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2639 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2640 def testMEDFileFields3(self):
2641 fname="Pyfile66.med"
2642 # building a mesh containing 4 tri3 + 5 quad4
2643 tri=MEDCouplingUMesh("tri",2)
2644 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2645 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2646 tris=[tri.deepCpy() for i in xrange(4)]
2647 for i,elt in enumerate(tris): elt.translate([i,0])
2648 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2649 quad=MEDCouplingUMesh("quad",2)
2650 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2651 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2652 quads=[quad.deepCpy() for i in xrange(5)]
2653 for i,elt in enumerate(quads): elt.translate([5+i,0])
2654 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2655 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2656 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2658 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2660 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2661 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2662 fmts0_0=MEDFileFieldMultiTS()
2663 fmts0_1=MEDFileFieldMultiTS()
2665 for i in xrange(10):
2666 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2667 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2668 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2669 f.setTime(float(i+1)+0.1,i+1,-i-1)
2670 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2671 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2672 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2673 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2676 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2677 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2678 fmts0_0.zipPflsNames()
2679 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2680 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2681 fmts0_2=fmts0_0.deepCpy()
2682 fmts0_3=fmts0_0.deepCpy()
2683 fmts0_4=fmts0_0.deepCpy()
2685 fs0.pushField(fmts0_0)
2686 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2687 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2688 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2689 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2691 fmts0_5=MEDFileFieldMultiTS()
2693 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2694 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2695 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2696 f.setTime(float(i+1)+0.1,i+1,-i-1)
2697 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2699 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2700 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2701 fs0.checkGlobsCoherency()
2705 def testSplitComponents1(self):
2706 fname="Pyfile67.med"
2707 # building a mesh containing 4 tri3 + 5 quad4
2708 tri=MEDCouplingUMesh("tri",2)
2709 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2710 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2711 tris=[tri.deepCpy() for i in xrange(4)]
2712 for i,elt in enumerate(tris): elt.translate([i,0])
2713 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2714 quad=MEDCouplingUMesh("quad",2)
2715 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2716 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2717 quads=[quad.deepCpy() for i in xrange(5)]
2718 for i,elt in enumerate(quads): elt.translate([5+i,0])
2719 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2720 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2721 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2723 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2725 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2726 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2728 fmts0_1=MEDFileFieldMultiTS()
2730 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2731 for i in xrange(10):
2733 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2734 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2735 f.setTime(float(i+1)+0.1,i+1,-i-1)
2736 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2737 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2739 fs.pushField(fmts0_1)
2740 self.assertEqual(1,len(fs))
2741 l=fmts0_1.splitComponents()
2742 self.assertEqual(3,len(l))
2743 for elt in l: self.assertEqual(10,len(elt))
2744 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2746 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2749 self.assertEqual(4,len(fs))
2750 for elt in fs: self.assertEqual(10,len(elt))
2751 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2752 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2754 fs.write(fname,0) ; del fs
2756 fs1=MEDFileFields(fname)
2757 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2758 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2759 self.assertEqual(4,len(fs1))
2760 for i in xrange(10):
2761 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2762 f1ts=fs1[fieldName][i]
2763 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2764 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2765 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2767 f1ts=fs1["1stField"][i]
2768 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2769 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2770 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2774 def testMEDFileFieldConvertTo1(self):
2775 fname="Pyfile68.med"
2776 # building a mesh containing 4 tri3 + 5 quad4
2777 tri=MEDCouplingUMesh("tri",2)
2778 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2779 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2780 tris=[tri.deepCpy() for i in xrange(4)]
2781 for i,elt in enumerate(tris): elt.translate([i,0])
2782 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2783 quad=MEDCouplingUMesh("quad",2)
2784 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2785 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2786 quads=[quad.deepCpy() for i in xrange(5)]
2787 for i,elt in enumerate(quads): elt.translate([5+i,0])
2788 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2789 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2790 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2791 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2793 ff0=MEDFileField1TS()
2794 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m) ; arr=DataArrayDouble(m.getNumberOfCells()*2) ; arr.iota() ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName("FieldCell")
2796 ff0.setFieldNoProfileSBT(f0)
2798 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2799 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2801 ff0i=ff0.convertToInt()
2802 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2803 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2805 ff1=ff0i.convertToDouble()
2806 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2807 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2809 del arr,f0,ff0,ff1,ff0i,fspExp
2810 ff0=MEDFileField1TS()
2811 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m[:7]) ; arr=DataArrayDouble(7*2) ; arr.iota() ; arr.rearrange(2) ; arr.setInfoOnComponents(["XX [pm]","YYY [hm]"]) ; f0.setArray(arr) ; f0.setName("FieldCellPfl")
2813 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2814 ff0.setFieldProfile(f0,mm,0,pfl)
2815 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2816 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2818 ff0i=ff0.convertToInt()
2819 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2820 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2821 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2823 ff1=ff0i.convertToDouble()
2824 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2825 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2826 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2828 ff0=MEDFileFieldMultiTS()
2829 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m[:7]) ; arr=DataArrayDouble(7*2) ; arr.iota() ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName("FieldCellMTime") ; f0.setTime(0.1,0,10)
2831 ff0.appendFieldProfile(f0,mm,0,pfl)
2832 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m[:7]) ; arr=DataArrayDouble(7*2) ; arr.iota(100) ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName("FieldCellMTime") ; f0.setTime(1.1,1,11)
2834 ff0.appendFieldProfile(f0,mm,0,pfl)
2835 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m[:7]) ; arr=DataArrayDouble(7*2) ; arr.iota(200) ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName("FieldCellMTime") ; f0.setTime(2.1,2,12)
2837 ff0.appendFieldProfile(f0,mm,0,pfl)
2838 ff1=ff0.convertToInt()
2839 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2840 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2841 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2842 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2843 arr=ff1.getUndergroundDataArray(dt,it)
2844 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2846 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2851 ff1=ff1.convertToDouble()
2852 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
2853 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2854 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2855 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2856 arr=ff1.getUndergroundDataArray(dt,it)
2857 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
2859 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2861 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
2862 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2863 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2864 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2865 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
2866 arr=ff1.getUndergroundDataArray(dt,it)
2867 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2869 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
2872 def testMEDFileFieldPartialLoading(self):
2873 fname="Pyfile69.med"
2874 # building a mesh containing 30 tri3 + 40 quad4
2875 tri=MEDCouplingUMesh("tri",2)
2876 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2877 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2878 tris=[tri.deepCpy() for i in xrange(30)]
2879 for i,elt in enumerate(tris): elt.translate([i,0])
2880 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2881 quad=MEDCouplingUMesh("quad",2)
2882 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2883 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2884 quads=[quad.deepCpy() for i in xrange(40)]
2885 for i,elt in enumerate(quads): elt.translate([40+i,0])
2886 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2887 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2888 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2889 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2891 ff0=MEDFileField1TS()
2892 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m) ; arr=DataArrayDouble(m.getNumberOfCells()*2) ; arr.iota() ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName("FieldCell")
2894 ff0.setFieldNoProfileSBT(f0)
2897 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
2898 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2900 ff0=MEDFileField1TS()
2901 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m[:50]) ; arr=DataArrayDouble(50*2) ; arr.iota() ; arr.rearrange(2) ; arr.setInfoOnComponents(["XX [pm]","YYY [hm]"]) ; f0.setArray(arr) ; f0.setName("FieldCellPfl")
2903 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2904 ff0.setFieldProfile(f0,mm,0,pfl)
2905 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
2906 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2909 ff0=MEDFileField1TS(fname,False)
2910 self.assertEqual(ff0.getName(),"FieldCell")
2911 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
2912 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
2913 heap_memory_ref=ff0.getHeapMemorySize()
2914 self.assertTrue(heap_memory_ref>=100 and heap_memory_ref<=200)
2916 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
2917 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2918 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
2920 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
2921 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
2922 heap_memory_ref=ff0.getHeapMemorySize()
2923 self.assertTrue(heap_memory_ref>=150 and heap_memory_ref<=250)
2925 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
2926 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2927 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2929 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2930 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2931 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2932 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2934 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2935 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2936 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2937 ff0.loadArraysIfNecessary() ##
2938 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
2939 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2940 heap_memory_ref=ff0.getHeapMemorySize()
2941 self.assertTrue(heap_memory_ref>=1000 and heap_memory_ref<=1100)
2943 hmd=ff0.getHeapMemorySize()-heap_memory_ref
2944 self.assertEqual(hmd,-800) # -50*8*2
2946 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
2948 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
2949 heap_memory_ref=ff0.getHeapMemorySize()
2950 self.assertTrue(heap_memory_ref>=150 and heap_memory_ref<=250)
2952 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2953 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2955 fieldName="FieldCellMultiTS"
2956 ff0=MEDFileFieldMultiTS()
2957 for t in xrange(20):
2958 f0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f0.setMesh(m) ; arr=DataArrayDouble(m.getNumberOfCells()*2) ; arr.iota(float(t+1000)) ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName(fieldName)
2959 f0.setTime(float(t)+0.1,t,100+t)
2961 ff0.appendFieldNoProfileSBT(f0)
2965 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
2966 heap_memory_ref=ff0.getHeapMemorySize()
2967 self.assertTrue(heap_memory_ref>=2000 and heap_memory_ref<=3000)
2969 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
2972 ffs=MEDFileFields(fname,False)
2973 heap_memory_ref=ffs.getHeapMemorySize()
2974 self.assertTrue(heap_memory_ref>=2400 and heap_memory_ref<=3500)
2976 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
2979 def testMEDFileMeshReadSelector1(self):
2980 mrs=MEDFileMeshReadSelector()
2981 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
2982 mrs.__str__() ; mrs.__repr__()
2984 mrs=MEDFileMeshReadSelector(0)
2985 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2986 mrs=MEDFileMeshReadSelector(1)
2987 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2988 mrs=MEDFileMeshReadSelector(2)
2989 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2990 mrs=MEDFileMeshReadSelector(3)
2991 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2992 mrs=MEDFileMeshReadSelector(4)
2993 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2994 mrs=MEDFileMeshReadSelector(5)
2995 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2996 mrs=MEDFileMeshReadSelector(6)
2997 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2998 mrs=MEDFileMeshReadSelector(7)
2999 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3000 mrs=MEDFileMeshReadSelector(8)
3001 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3002 mrs=MEDFileMeshReadSelector(9)
3003 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3004 mrs=MEDFileMeshReadSelector(10)
3005 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3006 mrs=MEDFileMeshReadSelector(11)
3007 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3008 mrs=MEDFileMeshReadSelector(12)
3009 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3010 mrs=MEDFileMeshReadSelector(13)
3011 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3012 mrs=MEDFileMeshReadSelector(14)
3013 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3014 mrs=MEDFileMeshReadSelector(15)
3015 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3016 mrs=MEDFileMeshReadSelector(16)
3017 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3018 mrs=MEDFileMeshReadSelector(17)
3019 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3020 mrs=MEDFileMeshReadSelector(18)
3021 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3022 mrs=MEDFileMeshReadSelector(19)
3023 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3024 mrs=MEDFileMeshReadSelector(20)
3025 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3026 mrs=MEDFileMeshReadSelector(21)
3027 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3028 mrs=MEDFileMeshReadSelector(22)
3029 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3030 mrs=MEDFileMeshReadSelector(23)
3031 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3032 mrs=MEDFileMeshReadSelector(24)
3033 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3034 mrs=MEDFileMeshReadSelector(25)
3035 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3036 mrs=MEDFileMeshReadSelector(26)
3037 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3038 mrs=MEDFileMeshReadSelector(27)
3039 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3040 mrs=MEDFileMeshReadSelector(28)
3041 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3042 mrs=MEDFileMeshReadSelector(29)
3043 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3044 mrs=MEDFileMeshReadSelector(30)
3045 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3046 mrs=MEDFileMeshReadSelector(31)
3047 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3048 mrs=MEDFileMeshReadSelector(32)
3049 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3050 mrs=MEDFileMeshReadSelector(33)
3051 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3052 mrs=MEDFileMeshReadSelector(34)
3053 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3054 mrs=MEDFileMeshReadSelector(35)
3055 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3056 mrs=MEDFileMeshReadSelector(36)
3057 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3058 mrs=MEDFileMeshReadSelector(37)
3059 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3060 mrs=MEDFileMeshReadSelector(38)
3061 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3062 mrs=MEDFileMeshReadSelector(39)
3063 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3064 mrs=MEDFileMeshReadSelector(40)
3065 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3066 mrs=MEDFileMeshReadSelector(41)
3067 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3068 mrs=MEDFileMeshReadSelector(42)
3069 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3070 mrs=MEDFileMeshReadSelector(43)
3071 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3072 mrs=MEDFileMeshReadSelector(44)
3073 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3074 mrs=MEDFileMeshReadSelector(45)
3075 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3076 mrs=MEDFileMeshReadSelector(46)
3077 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3078 mrs=MEDFileMeshReadSelector(47)
3079 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3080 mrs=MEDFileMeshReadSelector(48)
3081 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3082 mrs=MEDFileMeshReadSelector(49)
3083 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3084 mrs=MEDFileMeshReadSelector(50)
3085 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3086 mrs=MEDFileMeshReadSelector(51)
3087 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3088 mrs=MEDFileMeshReadSelector(52)
3089 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3090 mrs=MEDFileMeshReadSelector(53)
3091 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3092 mrs=MEDFileMeshReadSelector(54)
3093 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3094 mrs=MEDFileMeshReadSelector(55)
3095 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3096 mrs=MEDFileMeshReadSelector(56)
3097 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3098 mrs=MEDFileMeshReadSelector(57)
3099 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3100 mrs=MEDFileMeshReadSelector(58)
3101 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3102 mrs=MEDFileMeshReadSelector(59)
3103 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3104 mrs=MEDFileMeshReadSelector(60)
3105 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3106 mrs=MEDFileMeshReadSelector(61)
3107 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3108 mrs=MEDFileMeshReadSelector(62)
3109 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3110 mrs=MEDFileMeshReadSelector(63)
3111 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3113 mrs=MEDFileMeshReadSelector(63)
3114 mrs.setCellFamilyFieldReading(False)
3115 self.assertEqual(mrs.getCode(),62)
3116 mrs.setCellFamilyFieldReading(True)
3117 self.assertEqual(mrs.getCode(),63)
3118 mrs.setNodeFamilyFieldReading(False)
3119 self.assertEqual(mrs.getCode(),61)
3120 mrs.setNodeFamilyFieldReading(True)
3121 self.assertEqual(mrs.getCode(),63)
3122 mrs.setCellNameFieldReading(False)
3123 self.assertEqual(mrs.getCode(),59)
3124 mrs.setCellNameFieldReading(True)
3125 self.assertEqual(mrs.getCode(),63)
3126 mrs.setNodeNameFieldReading(False)
3127 self.assertEqual(mrs.getCode(),55)
3128 mrs.setNodeNameFieldReading(True)
3129 self.assertEqual(mrs.getCode(),63)
3130 mrs.setCellNumFieldReading(False)
3131 self.assertEqual(mrs.getCode(),47)
3132 mrs.setCellNumFieldReading(True)
3133 self.assertEqual(mrs.getCode(),63)
3134 mrs.setNodeNumFieldReading(False)
3135 self.assertEqual(mrs.getCode(),31)
3136 mrs.setNodeNumFieldReading(True)
3137 self.assertEqual(mrs.getCode(),63)
3140 def testPartialReadOfMeshes(self):
3141 fname="Pyfile70.med"
3142 # building a mesh containing 4 tri3 + 5 quad4
3143 tri=MEDCouplingUMesh("tri",2)
3144 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3145 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3146 tris=[tri.deepCpy() for i in xrange(4)]
3147 for i,elt in enumerate(tris): elt.translate([i,0])
3148 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3149 quad=MEDCouplingUMesh("quad",2)
3150 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3151 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3152 quads=[quad.deepCpy() for i in xrange(5)]
3153 for i,elt in enumerate(quads): elt.translate([5+i,0])
3154 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3155 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3156 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3157 m1=m.buildDescendingConnectivity()[0]
3158 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3160 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3161 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3162 mm.setGroupsAtLevel(0,[grp0,grp1])
3163 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3164 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3165 mm.setGroupsAtLevel(-1,[grp2,grp3])
3166 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3167 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3168 mm.setGroupsAtLevel(1,[grp4,grp5])
3169 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3170 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3171 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3175 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3176 b4_ref_heap_mem=mm.getHeapMemorySize()
3177 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3178 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3179 ref_heap_mem=mm.getHeapMemorySize()
3180 # check the gain of memory using 1GTUMesh instead of UMesh
3181 self.assertTrue(ref_heap_mem-b4_ref_heap_mem>=(32+9)*4*2-32)# 32+9=nbCells 4=sizeof(int) 2=the types+index -32=loss linked to vector
3183 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3184 self.assertEqual(len(mm.getGroupsNames()),0)
3185 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3186 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3187 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3188 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3189 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3190 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3191 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3192 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3193 delta1=ref_heap_mem-mm.getHeapMemorySize()
3194 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3196 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3197 self.assertEqual(len(mm.getGroupsNames()),6)
3198 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3199 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3200 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3201 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3202 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3203 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3204 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3205 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3206 delta2=ref_heap_mem-mm.getHeapMemorySize()
3207 self.assertTrue(delta2<delta1)
3208 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3210 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3211 self.assertEqual(len(mm.getGroupsNames()),6)
3212 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3213 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3214 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3215 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3216 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3217 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3218 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3219 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3220 delta3=ref_heap_mem-mm.getHeapMemorySize()
3221 self.assertTrue(delta3<delta2)
3222 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3224 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3225 self.assertEqual(len(mm.getGroupsNames()),6)
3226 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3227 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3228 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3229 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3230 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3231 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3232 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3233 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3234 delta4=ref_heap_mem-mm.getHeapMemorySize()
3235 self.assertTrue(delta4<delta3)
3236 self.assertTrue(delta4>=32*4*2)
3238 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3239 self.assertEqual(len(mm.getGroupsNames()),6)
3240 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3241 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3242 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3243 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3244 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3245 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3246 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3247 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3248 delta5=ref_heap_mem-mm.getHeapMemorySize()
3249 self.assertTrue(delta5<delta4)
3250 self.assertEqual(delta5,0)
3253 # this test checks that setFieldProfile perform a check of the array length
3254 # compared to the profile length. This test also checks that mesh attribute of field
3255 # is not used by setFieldProfile (because across this test mesh is equal to None)
3256 def testCheckCompatibilityPfl1(self):
3257 # building a mesh containing 4 tri3 + 5 quad4
3258 tri=MEDCouplingUMesh("tri",2)
3259 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3260 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3261 tris=[tri.deepCpy() for i in xrange(4)]
3262 for i,elt in enumerate(tris): elt.translate([i,0])
3263 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3264 quad=MEDCouplingUMesh("quad",2)
3265 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3266 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3267 quads=[quad.deepCpy() for i in xrange(5)]
3268 for i,elt in enumerate(quads): elt.translate([5+i,0])
3269 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3270 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3271 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3272 m1=m.buildDescendingConnectivity()[0]
3273 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3275 f1ts=MEDFileField1TS()
3276 f=MEDCouplingFieldDouble(ON_NODES)
3277 vals=DataArrayDouble(7) ; vals.iota(1000)
3279 f.setName("anonymous") # f has no mesh it is not a bug
3280 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3281 f1ts.setFieldProfile(f,mm,0,pfl)
3283 f1ts=MEDFileField1TS()
3284 f=MEDCouplingFieldDouble(ON_NODES)
3285 vals=DataArrayDouble(8) ; vals.iota(1000)
3287 f.setName("anonymous") # f has no mesh it is not a bug
3288 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3289 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3291 f1ts=MEDFileField1TS()
3292 f=MEDCouplingFieldDouble(ON_CELLS)
3293 vals=DataArrayDouble(7) ; vals.iota(1000)
3295 f.setName("anonymous") # f has no mesh it is not a bug
3296 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3297 f1ts.setFieldProfile(f,mm,0,pfl)
3298 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3300 f1ts=MEDFileField1TS()
3301 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3302 vals=DataArrayDouble(27) ; vals.iota(1000)
3304 f.setName("anonymous") # f has no mesh it is not a bug
3305 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3307 f.setGaussLocalizationOnCells([0,1],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.1,0.1],[0.3,0.6,0.1])
3308 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3309 f.setGaussLocalizationOnCells([3,4,5,6],[0.,0.,1.,0.,1.,1.,0.,1.],[0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.5,0.5],[0.2,0.3,0.4,0.07,0.03])
3311 f1ts.setFieldProfile(f,mm,0,pfl)
3312 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3313 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3314 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3315 vals=DataArrayDouble(27) ; vals.iota(1000)
3316 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3318 f1ts=MEDFileField1TS()
3319 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3320 vals=DataArrayDouble(25) ; vals.iota(1000)
3322 f.setName("anonymous") # f has no mesh it is not a bug
3323 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3324 f1ts.setFieldProfile(f,mm,0,pfl)
3325 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3326 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3328 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3329 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3331 f1ts=MEDFileField1TS()
3332 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3333 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3335 f1ts.setFieldProfile(f,mm,0,pfl)
3338 def testWRMeshWithNoCells(self):
3339 fname="Pyfile71.med"
3340 a=DataArrayDouble(4) ; a.iota()
3341 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3342 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3344 m.setMeshAtLevel(0,m00)
3345 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3346 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3350 m=MEDFileMesh.New(fname)
3351 self.assertEqual((),m.getNonEmptyLevels())
3352 self.assertTrue(m.getCoords().isEqual(DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(0,1),(1,1),(2,1),(3,1),(0,2),(1,2),(2,2),(3,2),(0,3),(1,3),(2,3),(3,3)]),1e-12))
3353 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3354 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))