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 a=DataArrayInt() ; aa=a.getHeapMemorySize()
1976 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
1978 m=MEDCouplingCMesh()
1979 arr=DataArrayDouble(10,1) ; arr.iota(0)
1980 m.setCoords(arr,arr)
1981 m=m.buildUnstructured()
1983 f=m.getMeasureField(ON_CELLS)
1984 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
1985 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
1988 mm.setMeshAtLevel(0,m)
1989 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100+10*strMulFac))
1990 ff=MEDFileField1TS()
1991 ff.setFieldNoProfileSBT(f)
1992 self.assertIn(ff.getHeapMemorySize(),xrange(711-40,711+21+(4+1)*strMulFac))
1994 fff=MEDFileFieldMultiTS()
1995 fff.appendFieldNoProfileSBT(f)
1996 self.assertIn(fff.getHeapMemorySize(),xrange(743-50,743+30+(6+2)*strMulFac))
1998 fff.appendFieldNoProfileSBT(f)
1999 self.assertIn(fff.getHeapMemorySize(),xrange(1462-90,1462+50+(10+1)*strMulFac))
2000 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(711-40,711+20+(4+1)*strMulFac))
2003 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2004 fff.appendFieldProfile(f2,mm,0,pfl)
2005 self.assertIn(fff.getHeapMemorySize(),xrange(2178-130,2178+100+(10+2)*strMulFac))
2006 self.assertIn(fff.getProfile("pfl_NORM_QUAD4").getHeapMemorySize(),xrange(215-10,215+10+2*strMulFac))
2007 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(700-50,700+30+4*strMulFac))
2010 def testCurveLinearMesh1(self):
2011 fname="Pyfile55.med"
2012 mesh=MEDCouplingCurveLinearMesh();
2013 mesh.setTime(2.3,4,5);
2014 mesh.setTimeUnit("us");
2015 mesh.setName("Example of Cuve linear mesh");
2016 mesh.setDescription("buildCLMesh");
2017 a1=DataArrayDouble(3*20,1);
2018 a1.iota(7.) ; a1.rearrange(3);
2020 mesh.setNodeGridStructure([4,5]);
2021 mesh.checkCoherency();
2023 m=MEDFileCurveLinearMesh()
2025 d=DataArrayInt(20) ; d.iota(4)
2026 m.setFamilyFieldArr(1,d)
2027 d3=DataArrayInt(20) ; d3.iota(400)
2028 m.setRenumFieldArr(1,d3)
2029 d2=DataArrayInt(12) ; d2.iota(40)
2030 m.setFamilyFieldArr(0,d2)
2031 d4=DataArrayInt(21) ; d4.iota(4000)
2032 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2034 m.setRenumFieldArr(1,d4)
2037 m1=MEDFileCurveLinearMesh(fname)
2039 self.assertTrue(mm.isEqual(mesh,1e-12))
2041 m1=MEDFileMesh.New(fname)
2042 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2043 self.assertTrue(isinstance(m1.getUnivName(),str))
2044 self.assertTrue(len(m1.getUnivName())!=0)
2045 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2048 def testParameters1(self):
2049 fname="Pyfile56.med"
2050 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2051 mm=MEDFileCMesh() ; mm.setMesh(m)
2052 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2054 p=MEDFileParameters()
2055 data.setParams(p) ; data.setMeshes(ms)
2056 pts=MEDFileParameterMultiTS()
2057 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2058 pts.appendValue(1,2,3.4,567.89)
2059 pts.appendValue(2,3,5.6,999.123)
2060 pts2=pts.deepCpy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2061 p.pushParam(pts) ; p.pushParam(pts2)
2063 p2=MEDFileParameters(fname)
2064 self.assertTrue(p.isEqual(p2,1e-14)[0])
2065 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2069 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2070 pts2.eraseTimeStepIds([0])
2071 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2073 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2074 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2075 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2076 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2077 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2079 self.assertTrue(p.isEqual(p2,1e-14)[0])
2080 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2081 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2082 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2083 self.assertEqual(p.getParamsNames(),('A','B'))
2084 ptsr=MEDFileParameterMultiTS(fname,"B")
2085 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2086 ptsr=MEDFileParameterMultiTS(fname)
2087 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2088 p1tsr=MEDFileParameterDouble1TS(fname)
2089 self.assertEqual(p1tsr.getName(),"A")
2090 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2091 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2092 self.assertEqual(p1tsr.getName(),"B")
2093 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2094 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2095 self.assertEqual(p1tsr.getName(),"B")
2096 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2097 data2=MEDFileData(fname)
2098 self.assertEqual(2,data2.getNumberOfParams())
2099 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2102 def testNamesOnCellAndNodesInMeshes1(self):
2103 fname="Pyfile58.med"
2104 fname2="Pyfile59.med"
2105 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2106 m1=m.buildDescendingConnectivity()[0]
2107 m1.sortCellsInMEDFileFrmt()
2110 mm.setMeshAtLevel(0,m)
2111 mm.setMeshAtLevel(-1,m1)
2112 namesCellL0=DataArrayAsciiChar(6,16)
2113 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2114 mm.setNameFieldAtLevel(0,namesCellL0)
2115 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.substr(2)])
2116 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2117 mm.setNameFieldAtLevel(-1,namesCellL1)
2118 namesNodes=namesCellL1.substr(4,16)
2119 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2120 mm.setNameFieldAtLevel(1,namesNodes)
2123 mmr=MEDFileMesh.New(fname)
2124 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2125 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2126 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2127 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2128 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2129 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2130 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2131 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2133 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2134 # remove names on nodes
2135 mmCpy.setNameFieldAtLevel(1,None)
2136 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2137 mm.setNameFieldAtLevel(1,None)
2138 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2139 mm.setNameFieldAtLevel(-1,None)
2141 mmr=MEDFileMesh.New(fname)
2142 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2143 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2144 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2146 c=MEDCouplingCMesh()
2147 arr=DataArrayDouble([0.,1.1,2.3])
2148 c.setCoords(arr,arr)
2152 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2153 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2155 ccr=MEDFileMesh.New(fname2)
2156 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2157 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2158 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2159 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2160 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2161 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2162 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2164 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2167 def testToExportInExamples1(self):
2168 m=MEDCouplingCMesh()
2169 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2170 m.setCoords(arr,arr)
2171 m=m.buildUnstructured() ; m.setName("mesh")
2172 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2173 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2176 mm.setMeshAtLevel(0,m)
2177 mm.setMeshAtLevel(-1,m2)
2178 mm.setGroupsAtLevel(0,[grp1,grp2])
2179 mm.write("example.med",2)
2181 m0=mm.getMeshAtLevel(0)
2182 m1=mm.getMeshAtLevel(-1)
2183 grp1=mm.getGroupArr(0,"grp1")
2184 grp2=mm.getGroupArr(0,"grp2")
2186 whichGrp=DataArrayInt(m0.getNumberOfCells())
2187 whichGrp.fillWithValue(-1)
2188 for grpId,grp in enumerate(grps):
2191 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2192 e,f=a.areCellsIncludedIn(m1,2)
2194 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2195 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2196 c2.transformWithIndArr(whichGrp)
2197 splitOfM1=len(grps)*[None]
2198 for grpId,grp in enumerate(grps):
2199 tmp=c2.getIdsEqual(grpId)
2200 splitOfM1[grpId]=tmp
2202 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2203 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2206 def testBugCorrection1(self):
2209 self.assertEqual(fs[0],None)
2210 self.assertEqual(3,len(fs))
2213 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2214 f1Name="Pyfile60.med"
2215 f2Name="Pyfile61.med"
2216 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2218 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2220 # reading and compare
2221 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2222 for mn in d1.getMeshes().getMeshesNames():
2223 m1=d1.getMeshes()[mn]
2224 m2=d2.getMeshes()[mn]
2225 for lev in m1.getNonEmptyLevels():
2226 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2227 for grpName in grpsNames:
2228 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2232 for fieldn in d1.getFields().getFieldsNames():
2233 f1=d1.getFields()[fieldn]
2234 f2=d2.getFields()[fieldn]
2235 for it,order,tim in f1.getTimeSteps():
2238 if len(f1t.getPflsReallyUsed())!=0:
2240 for lev in f1t.getNonEmptyLevels()[1]:
2241 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2242 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2243 self.assertTrue(pfl1.isEqual(pfl2))
2244 self.assertTrue(arr1.isEqual(arr2,1e-10))
2249 for lev in f1t.getNonEmptyLevels()[1]:
2250 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2251 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2252 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2259 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2260 m=MEDCouplingCMesh()
2261 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2262 m.setCoords(arr,arr,arr)
2263 m=m.buildUnstructured()
2264 m2=m.buildDescendingConnectivity()[0]
2266 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2267 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2268 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2269 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2270 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2271 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2273 mm.setMeshAtLevel(0,m)
2274 mm.setGroupsAtLevel(0,[g1,g2])
2275 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2276 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2277 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2278 mm.normalizeFamIdsMEDFile()
2279 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2280 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2281 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2282 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2283 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2284 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2285 for g in mm.getGroupsOnSpecifiedLev(0):
2286 for f in mm.getFamiliesIdsOnGroup(g):
2287 self.assertTrue(f<0)
2292 mm.setMeshAtLevel(0,m)
2293 mm.setMeshAtLevel(-1,m2)
2294 mm.setGroupsAtLevel(0,[g1,g2])
2295 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2296 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2297 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2298 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2299 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2300 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2301 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2302 mm.normalizeFamIdsMEDFile()
2303 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2304 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2305 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2306 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2307 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2308 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2309 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2310 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2311 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2312 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2313 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2314 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2316 for g in mm.getGroupsOnSpecifiedLev(lev):
2317 for f in mm.getFamiliesIdsOnGroup(g):
2318 self.assertTrue(f<0)
2324 mm.setMeshAtLevel(0,m)
2325 mm.setMeshAtLevel(-1,m2)
2326 mm.setGroupsAtLevel(0,[g1,g2])
2327 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2328 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2329 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2330 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2331 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2332 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2333 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2334 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2335 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2336 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2337 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2338 mm.normalizeFamIdsMEDFile()
2339 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2340 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2341 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2342 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2343 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2344 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2345 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2346 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2347 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2348 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2349 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2350 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2351 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2352 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2353 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2354 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2355 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2356 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2358 for g in mm.getGroupsOnSpecifiedLev(lev):
2359 for f in mm.getFamiliesIdsOnGroup(g):
2360 self.assertTrue(f<0)
2364 for g in mm.getGroupsOnSpecifiedLev(1):
2365 for f in mm.getFamiliesIdsOnGroup(g):
2366 self.assertTrue(f>0)
2371 def testNonRegressionMantis22212ChangeGrpName(self):
2372 fileName="Pyfile62.med"
2373 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2374 m=MEDFileUMesh.New()
2375 m.setCoords(m2.getCoords())
2376 m.setMeshAtLevel(0,m2)
2377 m.setMeshAtLevel(-1,m1)
2378 m.setMeshAtLevel(-2,m0)
2379 m.setFamilyFieldArr(0,f2)
2380 m.setFamilyFieldArr(-1,f1)
2381 m.setFamilyFieldArr(-2,f0)
2382 m.setFamilyFieldArr(1,p)
2384 for i in xrange(nbOfFams):
2385 m.addFamily(fns[i],fids[i])
2388 for i in xrange(nbOfGrps):
2389 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2391 m.setName(m2.getName())
2392 m.setDescription(m2.getDescription())
2395 mm0=MEDFileMesh.New(fileName)
2396 mm1=MEDFileMesh.New(fileName)
2397 groupNamesIni=MEDLoader.GetMeshGroupsNames(fileName,"ma")
2398 for name in groupNamesIni:
2399 mm1.changeGroupName(name,name+'N')
2401 mm1.write(fileName,2)
2404 mm2=MEDFileMesh.New(fileName)
2405 for name in groupNamesIni:
2406 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2407 arr0=mm0.getGroupArr(lev,name)
2408 arr2=mm2.getGroupArr(lev,name+'N')
2409 arr0.setName(name+'N')
2410 self.assertTrue(arr0.isEqual(arr2))
2415 def testInt32InMEDFileFieldStar1(self):
2416 fname="Pyfile63.med"
2417 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2418 arr=f1.getArray().convertToIntArr()
2421 mm1=MEDFileUMesh.New()
2422 mm1.setCoords(m1.getCoords())
2423 mm1.setMeshAtLevel(0,m1)
2424 mm1.setName(m1.getName())
2426 ff1=MEDFileIntField1TS()
2427 ff1.setFieldNoProfileSBT(f1,arr)
2428 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2429 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2430 self.assertTrue(b.isEqual(arr))
2431 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2433 ff2=MEDFileAnyTypeField1TS.New(fname)
2434 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2435 self.assertEqual(ff2.getTime(),[0,1,2.0])
2436 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2437 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2438 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2439 self.assertTrue(b.isEqual(arr))
2440 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2442 c=ff2.getUndergroundDataArray() ; c*=2
2443 ff2.write(fname,0) # 2 time steps in
2444 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2445 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2446 self.assertEqual(len(ffs1),2)
2447 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2448 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2449 self.assertTrue(b.isEqual(arr))
2450 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2451 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2452 self.assertTrue(b.isEqual(arr))
2453 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2454 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2455 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2456 self.assertTrue(b.isEqual(2*arr))
2458 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2459 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2461 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2464 self.assertTrue(bc.isEqual(3*arr))
2465 nf1=MEDCouplingFieldDouble(ON_NODES)
2466 nf1.setTime(9.,10,-1)
2467 nf1.setMesh(f1.getMesh())
2468 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2469 nf1.setName("VectorFieldOnNodes")
2470 nff1=MEDFileIntField1TS.New()
2471 nff1.setFieldNoProfileSBT(nf1,narr)
2472 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2473 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2476 nf2=MEDCouplingFieldDouble(ON_NODES)
2477 nf2.setTime(19.,20,-11)
2478 nf2.setMesh(f1.getMesh())
2479 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2480 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2481 nff2=MEDFileIntField1TS.New()
2482 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2483 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2484 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2485 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2486 self.assertTrue(b.isEqual(npfl))
2487 self.assertTrue(a.isEqual(narr2))
2489 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2490 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2491 self.assertTrue(b.isEqual(npfl))
2492 self.assertTrue(a.isEqual(narr2))
2494 nf3=MEDCouplingFieldDouble(ON_NODES)
2495 nf3.setName("VectorFieldOnNodesDouble")
2496 nf3.setTime(29.,30,-21)
2497 nf3.setMesh(f1.getMesh())
2498 nf3.setArray(f1.getMesh().getCoords())
2499 nff3=MEDFileField1TS.New()
2500 nff3.setFieldNoProfileSBT(nf3)
2502 fs=MEDFileFields(fname)
2503 self.assertEqual(len(fs),4)
2504 ffs=[it for it in fs]
2505 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2506 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2507 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2508 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2510 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2511 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2512 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2513 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2514 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2516 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2517 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2518 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2519 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2520 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2521 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2522 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2523 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2525 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2526 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2527 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2528 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2531 def testMEDFileFields1(self):
2532 fname="Pyfile64.med"
2533 f1=MEDCouplingFieldDouble(ON_NODES)
2534 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2535 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2536 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2538 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2540 f1.setName("Field1")
2541 ff1=MEDFileField1TS.New()
2542 ff1.setFieldNoProfileSBT(f1)
2543 self.assertEqual(ff1.getDtUnit(),"us")
2545 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2546 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2548 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2549 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2550 ff1s.setName("Field2")
2552 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2553 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)],True))
2555 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2556 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2557 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2558 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2559 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2562 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2563 def testMEDFileFields2(self):
2564 fname="Pyfile65.med"
2565 # to check that all is initialize
2566 MEDFileField1TS().__str__()
2567 MEDFileFieldMultiTS().__str__()
2568 # building a mesh containing 4 tri3 + 5 quad4
2569 tri=MEDCouplingUMesh("tri",2)
2570 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2571 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2572 tris=[tri.deepCpy() for i in xrange(4)]
2573 for i,elt in enumerate(tris): elt.translate([i,0])
2574 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2575 quad=MEDCouplingUMesh("quad",2)
2576 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2577 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2578 quads=[quad.deepCpy() for i in xrange(5)]
2579 for i,elt in enumerate(quads): elt.translate([5+i,0])
2580 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2581 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2582 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2584 fmts0_0=MEDFileFieldMultiTS()
2585 fmts0_1=MEDFileFieldMultiTS()
2587 for i in xrange(10):
2588 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2589 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2590 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2591 f.setTime(float(i+1)+0.1,i+1,-i-1)
2592 fmts0_0.appendFieldNoProfileSBT(f)
2593 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2594 self.assertEqual(fmts0_1.getName(),name1)
2595 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2596 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2598 # components names have been modified to generate errors
2599 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2600 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2601 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2602 f1ts.setInfo(['aa [bb]','eee [dd]'])
2603 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2605 # add a mismatch of nb of compos
2607 fmts0_2=fmts0_0.deepCpy()
2608 fmts0_3=fmts0_0.deepCpy()
2609 fmts0_4=fmts0_0.deepCpy()
2610 fmts0_5=fmts0_0.shallowCpy()
2611 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)
2613 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2614 del fmts0_3[[1.1,(6,-6),9]]
2615 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2616 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2617 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2618 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2619 fmts0_7=fmts0_4[::-3]
2620 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2621 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2624 fs0.pushField(fmts0_0)
2625 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2626 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2627 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2628 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2630 fs0=MEDFileFields(fname)
2631 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2632 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2633 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2634 del fs1[["2ndField",3]]
2635 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2636 fs2=fs0[[0,"4thField"]]
2637 self.assertTrue(isinstance(fs2,MEDFileFields))
2638 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2640 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2643 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2644 def testMEDFileFields3(self):
2645 fname="Pyfile66.med"
2646 # building a mesh containing 4 tri3 + 5 quad4
2647 tri=MEDCouplingUMesh("tri",2)
2648 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2649 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2650 tris=[tri.deepCpy() for i in xrange(4)]
2651 for i,elt in enumerate(tris): elt.translate([i,0])
2652 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2653 quad=MEDCouplingUMesh("quad",2)
2654 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2655 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2656 quads=[quad.deepCpy() for i in xrange(5)]
2657 for i,elt in enumerate(quads): elt.translate([5+i,0])
2658 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2659 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2660 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2662 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2664 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2665 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2666 fmts0_0=MEDFileFieldMultiTS()
2667 fmts0_1=MEDFileFieldMultiTS()
2669 for i in xrange(10):
2670 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2671 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2672 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2673 f.setTime(float(i+1)+0.1,i+1,-i-1)
2674 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2675 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2676 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2677 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2680 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2681 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2682 fmts0_0.zipPflsNames()
2683 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2684 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2685 fmts0_2=fmts0_0.deepCpy()
2686 fmts0_3=fmts0_0.deepCpy()
2687 fmts0_4=fmts0_0.deepCpy()
2689 fs0.pushField(fmts0_0)
2690 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2691 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2692 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2693 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2695 fmts0_5=MEDFileFieldMultiTS()
2697 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2698 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2699 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2700 f.setTime(float(i+1)+0.1,i+1,-i-1)
2701 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2703 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2704 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2705 fs0.checkGlobsCoherency()
2709 def testSplitComponents1(self):
2710 fname="Pyfile67.med"
2711 # building a mesh containing 4 tri3 + 5 quad4
2712 tri=MEDCouplingUMesh("tri",2)
2713 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2714 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2715 tris=[tri.deepCpy() for i in xrange(4)]
2716 for i,elt in enumerate(tris): elt.translate([i,0])
2717 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2718 quad=MEDCouplingUMesh("quad",2)
2719 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2720 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2721 quads=[quad.deepCpy() for i in xrange(5)]
2722 for i,elt in enumerate(quads): elt.translate([5+i,0])
2723 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2724 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2725 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2727 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2729 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2730 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2732 fmts0_1=MEDFileFieldMultiTS()
2734 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2735 for i in xrange(10):
2737 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2738 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2739 f.setTime(float(i+1)+0.1,i+1,-i-1)
2740 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2741 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2743 fs.pushField(fmts0_1)
2744 self.assertEqual(1,len(fs))
2745 l=fmts0_1.splitComponents()
2746 self.assertEqual(3,len(l))
2747 for elt in l: self.assertEqual(10,len(elt))
2748 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2750 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2753 self.assertEqual(4,len(fs))
2754 for elt in fs: self.assertEqual(10,len(elt))
2755 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2756 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2758 fs.write(fname,0) ; del fs
2760 fs1=MEDFileFields(fname)
2761 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2762 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2763 self.assertEqual(4,len(fs1))
2764 for i in xrange(10):
2765 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2766 f1ts=fs1[fieldName][i]
2767 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2768 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2769 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2771 f1ts=fs1["1stField"][i]
2772 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2773 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2774 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2778 def testMEDFileFieldConvertTo1(self):
2779 fname="Pyfile68.med"
2780 # building a mesh containing 4 tri3 + 5 quad4
2781 tri=MEDCouplingUMesh("tri",2)
2782 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2783 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2784 tris=[tri.deepCpy() for i in xrange(4)]
2785 for i,elt in enumerate(tris): elt.translate([i,0])
2786 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2787 quad=MEDCouplingUMesh("quad",2)
2788 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2789 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2790 quads=[quad.deepCpy() for i in xrange(5)]
2791 for i,elt in enumerate(quads): elt.translate([5+i,0])
2792 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2793 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2794 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2795 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2797 ff0=MEDFileField1TS()
2798 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")
2800 ff0.setFieldNoProfileSBT(f0)
2802 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2803 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2805 ff0i=ff0.convertToInt()
2806 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2807 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2809 ff1=ff0i.convertToDouble()
2810 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2811 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2813 del arr,f0,ff0,ff1,ff0i,fspExp
2814 ff0=MEDFileField1TS()
2815 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")
2817 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2818 ff0.setFieldProfile(f0,mm,0,pfl)
2819 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2820 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2822 ff0i=ff0.convertToInt()
2823 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2824 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2825 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2827 ff1=ff0i.convertToDouble()
2828 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2829 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2830 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2832 ff0=MEDFileFieldMultiTS()
2833 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)
2835 ff0.appendFieldProfile(f0,mm,0,pfl)
2836 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)
2838 ff0.appendFieldProfile(f0,mm,0,pfl)
2839 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)
2841 ff0.appendFieldProfile(f0,mm,0,pfl)
2842 ff1=ff0.convertToInt()
2843 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2844 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2845 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2846 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2847 arr=ff1.getUndergroundDataArray(dt,it)
2848 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2850 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2855 ff1=ff1.convertToDouble()
2856 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
2857 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2858 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2859 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2860 arr=ff1.getUndergroundDataArray(dt,it)
2861 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
2863 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2865 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
2866 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2867 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2868 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2869 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
2870 arr=ff1.getUndergroundDataArray(dt,it)
2871 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2873 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
2876 def testMEDFileFieldPartialLoading(self):
2877 fname="Pyfile69.med"
2879 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2881 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2882 # building a mesh containing 30 tri3 + 40 quad4
2883 tri=MEDCouplingUMesh("tri",2)
2884 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2885 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2886 tris=[tri.deepCpy() for i in xrange(30)]
2887 for i,elt in enumerate(tris): elt.translate([i,0])
2888 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2889 quad=MEDCouplingUMesh("quad",2)
2890 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2891 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2892 quads=[quad.deepCpy() for i in xrange(40)]
2893 for i,elt in enumerate(quads): elt.translate([40+i,0])
2894 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2895 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2896 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2897 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2899 ff0=MEDFileField1TS()
2900 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")
2902 ff0.setFieldNoProfileSBT(f0)
2905 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
2906 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2908 ff0=MEDFileField1TS()
2909 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")
2911 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2912 ff0.setFieldProfile(f0,mm,0,pfl)
2913 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
2914 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2917 ff0=MEDFileField1TS(fname,False)
2918 self.assertEqual(ff0.getName(),"FieldCell")
2919 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
2920 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
2921 heap_memory_ref=ff0.getHeapMemorySize()
2922 self.assertIn(heap_memory_ref,xrange(100,210+2*strMulFac))
2924 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
2925 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2926 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
2928 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
2929 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
2930 heap_memory_ref=ff0.getHeapMemorySize()
2931 self.assertIn(heap_memory_ref,xrange(150,260+6*strMulFac))
2933 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
2934 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2935 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2937 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2938 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2939 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2940 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2942 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2943 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2944 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2945 ff0.loadArraysIfNecessary() ##
2946 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
2947 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2948 heap_memory_ref=ff0.getHeapMemorySize()
2949 self.assertIn(heap_memory_ref,xrange(1000,1120+2*strMulFac))
2951 hmd=ff0.getHeapMemorySize()-heap_memory_ref
2952 self.assertEqual(hmd,-800) # -50*8*2
2954 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
2956 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
2957 heap_memory_ref=ff0.getHeapMemorySize()
2958 self.assertIn(heap_memory_ref,xrange(150,260+6*strMulFac))
2960 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2961 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2963 fieldName="FieldCellMultiTS"
2964 ff0=MEDFileFieldMultiTS()
2965 for t in xrange(20):
2966 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)
2967 f0.setTime(float(t)+0.1,t,100+t)
2969 ff0.appendFieldNoProfileSBT(f0)
2973 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
2974 heap_memory_ref=ff0.getHeapMemorySize()
2975 self.assertIn(heap_memory_ref,xrange(2000,3000+(80+26)*strMulFac))
2977 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
2980 ffs=MEDFileFields(fname,False)
2981 heap_memory_ref=ffs.getHeapMemorySize()
2982 self.assertIn(heap_memory_ref,xrange(2400,3500+(80+50)*strMulFac))
2984 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
2987 def testMEDFileMeshReadSelector1(self):
2988 mrs=MEDFileMeshReadSelector()
2989 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
2990 mrs.__str__() ; mrs.__repr__()
2992 mrs=MEDFileMeshReadSelector(0)
2993 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())
2994 mrs=MEDFileMeshReadSelector(1)
2995 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2996 mrs=MEDFileMeshReadSelector(2)
2997 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2998 mrs=MEDFileMeshReadSelector(3)
2999 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3000 mrs=MEDFileMeshReadSelector(4)
3001 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3002 mrs=MEDFileMeshReadSelector(5)
3003 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3004 mrs=MEDFileMeshReadSelector(6)
3005 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3006 mrs=MEDFileMeshReadSelector(7)
3007 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3008 mrs=MEDFileMeshReadSelector(8)
3009 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3010 mrs=MEDFileMeshReadSelector(9)
3011 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3012 mrs=MEDFileMeshReadSelector(10)
3013 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3014 mrs=MEDFileMeshReadSelector(11)
3015 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3016 mrs=MEDFileMeshReadSelector(12)
3017 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3018 mrs=MEDFileMeshReadSelector(13)
3019 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3020 mrs=MEDFileMeshReadSelector(14)
3021 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3022 mrs=MEDFileMeshReadSelector(15)
3023 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3024 mrs=MEDFileMeshReadSelector(16)
3025 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3026 mrs=MEDFileMeshReadSelector(17)
3027 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3028 mrs=MEDFileMeshReadSelector(18)
3029 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3030 mrs=MEDFileMeshReadSelector(19)
3031 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3032 mrs=MEDFileMeshReadSelector(20)
3033 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3034 mrs=MEDFileMeshReadSelector(21)
3035 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3036 mrs=MEDFileMeshReadSelector(22)
3037 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3038 mrs=MEDFileMeshReadSelector(23)
3039 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3040 mrs=MEDFileMeshReadSelector(24)
3041 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3042 mrs=MEDFileMeshReadSelector(25)
3043 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3044 mrs=MEDFileMeshReadSelector(26)
3045 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3046 mrs=MEDFileMeshReadSelector(27)
3047 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3048 mrs=MEDFileMeshReadSelector(28)
3049 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3050 mrs=MEDFileMeshReadSelector(29)
3051 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3052 mrs=MEDFileMeshReadSelector(30)
3053 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3054 mrs=MEDFileMeshReadSelector(31)
3055 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3056 mrs=MEDFileMeshReadSelector(32)
3057 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3058 mrs=MEDFileMeshReadSelector(33)
3059 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3060 mrs=MEDFileMeshReadSelector(34)
3061 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3062 mrs=MEDFileMeshReadSelector(35)
3063 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3064 mrs=MEDFileMeshReadSelector(36)
3065 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3066 mrs=MEDFileMeshReadSelector(37)
3067 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3068 mrs=MEDFileMeshReadSelector(38)
3069 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3070 mrs=MEDFileMeshReadSelector(39)
3071 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3072 mrs=MEDFileMeshReadSelector(40)
3073 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3074 mrs=MEDFileMeshReadSelector(41)
3075 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3076 mrs=MEDFileMeshReadSelector(42)
3077 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3078 mrs=MEDFileMeshReadSelector(43)
3079 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3080 mrs=MEDFileMeshReadSelector(44)
3081 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3082 mrs=MEDFileMeshReadSelector(45)
3083 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3084 mrs=MEDFileMeshReadSelector(46)
3085 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3086 mrs=MEDFileMeshReadSelector(47)
3087 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3088 mrs=MEDFileMeshReadSelector(48)
3089 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3090 mrs=MEDFileMeshReadSelector(49)
3091 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3092 mrs=MEDFileMeshReadSelector(50)
3093 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3094 mrs=MEDFileMeshReadSelector(51)
3095 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3096 mrs=MEDFileMeshReadSelector(52)
3097 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3098 mrs=MEDFileMeshReadSelector(53)
3099 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3100 mrs=MEDFileMeshReadSelector(54)
3101 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3102 mrs=MEDFileMeshReadSelector(55)
3103 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3104 mrs=MEDFileMeshReadSelector(56)
3105 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3106 mrs=MEDFileMeshReadSelector(57)
3107 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3108 mrs=MEDFileMeshReadSelector(58)
3109 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3110 mrs=MEDFileMeshReadSelector(59)
3111 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3112 mrs=MEDFileMeshReadSelector(60)
3113 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3114 mrs=MEDFileMeshReadSelector(61)
3115 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3116 mrs=MEDFileMeshReadSelector(62)
3117 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3118 mrs=MEDFileMeshReadSelector(63)
3119 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3121 mrs=MEDFileMeshReadSelector(63)
3122 mrs.setCellFamilyFieldReading(False)
3123 self.assertEqual(mrs.getCode(),62)
3124 mrs.setCellFamilyFieldReading(True)
3125 self.assertEqual(mrs.getCode(),63)
3126 mrs.setNodeFamilyFieldReading(False)
3127 self.assertEqual(mrs.getCode(),61)
3128 mrs.setNodeFamilyFieldReading(True)
3129 self.assertEqual(mrs.getCode(),63)
3130 mrs.setCellNameFieldReading(False)
3131 self.assertEqual(mrs.getCode(),59)
3132 mrs.setCellNameFieldReading(True)
3133 self.assertEqual(mrs.getCode(),63)
3134 mrs.setNodeNameFieldReading(False)
3135 self.assertEqual(mrs.getCode(),55)
3136 mrs.setNodeNameFieldReading(True)
3137 self.assertEqual(mrs.getCode(),63)
3138 mrs.setCellNumFieldReading(False)
3139 self.assertEqual(mrs.getCode(),47)
3140 mrs.setCellNumFieldReading(True)
3141 self.assertEqual(mrs.getCode(),63)
3142 mrs.setNodeNumFieldReading(False)
3143 self.assertEqual(mrs.getCode(),31)
3144 mrs.setNodeNumFieldReading(True)
3145 self.assertEqual(mrs.getCode(),63)
3148 def testPartialReadOfMeshes(self):
3149 fname="Pyfile70.med"
3150 # building a mesh containing 4 tri3 + 5 quad4
3151 tri=MEDCouplingUMesh("tri",2)
3152 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3153 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3154 tris=[tri.deepCpy() for i in xrange(4)]
3155 for i,elt in enumerate(tris): elt.translate([i,0])
3156 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3157 quad=MEDCouplingUMesh("quad",2)
3158 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3159 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3160 quads=[quad.deepCpy() for i in xrange(5)]
3161 for i,elt in enumerate(quads): elt.translate([5+i,0])
3162 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3163 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3164 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3165 m1=m.buildDescendingConnectivity()[0]
3166 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3168 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3169 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3170 mm.setGroupsAtLevel(0,[grp0,grp1])
3171 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3172 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3173 mm.setGroupsAtLevel(-1,[grp2,grp3])
3174 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3175 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3176 mm.setGroupsAtLevel(1,[grp4,grp5])
3177 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3178 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3179 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3183 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3184 b4_ref_heap_mem=mm.getHeapMemorySize()
3185 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3186 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3187 ref_heap_mem=mm.getHeapMemorySize()
3188 # check the gain of memory using 1GTUMesh instead of UMesh
3189 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
3191 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3192 self.assertEqual(len(mm.getGroupsNames()),0)
3193 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3194 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3195 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3196 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3197 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3198 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3199 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3200 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3201 delta1=ref_heap_mem-mm.getHeapMemorySize()
3202 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3204 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3205 self.assertEqual(len(mm.getGroupsNames()),6)
3206 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3207 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3208 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3209 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3210 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3211 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3212 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3213 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3214 delta2=ref_heap_mem-mm.getHeapMemorySize()
3215 self.assertTrue(delta2<delta1)
3216 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3218 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3219 self.assertEqual(len(mm.getGroupsNames()),6)
3220 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3221 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3222 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3223 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3224 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3225 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3226 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3227 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3228 delta3=ref_heap_mem-mm.getHeapMemorySize()
3229 self.assertTrue(delta3<delta2)
3230 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3232 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3233 self.assertEqual(len(mm.getGroupsNames()),6)
3234 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3235 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3236 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3237 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3238 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3239 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3240 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3241 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3242 delta4=ref_heap_mem-mm.getHeapMemorySize()
3243 self.assertTrue(delta4<delta3)
3244 self.assertTrue(delta4>=32*4*2)
3246 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3247 self.assertEqual(len(mm.getGroupsNames()),6)
3248 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3249 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3250 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3251 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3252 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3253 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3254 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3255 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3256 delta5=ref_heap_mem-mm.getHeapMemorySize()
3257 self.assertTrue(delta5<delta4)
3258 self.assertEqual(delta5,0)
3261 # this test checks that setFieldProfile perform a check of the array length
3262 # compared to the profile length. This test also checks that mesh attribute of field
3263 # is not used by setFieldProfile (because across this test mesh is equal to None)
3264 def testCheckCompatibilityPfl1(self):
3265 # building a mesh containing 4 tri3 + 5 quad4
3266 tri=MEDCouplingUMesh("tri",2)
3267 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3268 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3269 tris=[tri.deepCpy() for i in xrange(4)]
3270 for i,elt in enumerate(tris): elt.translate([i,0])
3271 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3272 quad=MEDCouplingUMesh("quad",2)
3273 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3274 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3275 quads=[quad.deepCpy() for i in xrange(5)]
3276 for i,elt in enumerate(quads): elt.translate([5+i,0])
3277 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3278 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3279 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3280 m1=m.buildDescendingConnectivity()[0]
3281 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3283 f1ts=MEDFileField1TS()
3284 f=MEDCouplingFieldDouble(ON_NODES)
3285 vals=DataArrayDouble(7) ; 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 f1ts.setFieldProfile(f,mm,0,pfl)
3291 f1ts=MEDFileField1TS()
3292 f=MEDCouplingFieldDouble(ON_NODES)
3293 vals=DataArrayDouble(8) ; vals.iota(1000)
3295 f.setName("anonymous") # f has no mesh it is not a bug
3296 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3297 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3299 f1ts=MEDFileField1TS()
3300 f=MEDCouplingFieldDouble(ON_CELLS)
3301 vals=DataArrayDouble(7) ; vals.iota(1000)
3303 f.setName("anonymous") # f has no mesh it is not a bug
3304 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3305 f1ts.setFieldProfile(f,mm,0,pfl)
3306 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3308 f1ts=MEDFileField1TS()
3309 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3310 vals=DataArrayDouble(27) ; vals.iota(1000)
3312 f.setName("anonymous") # f has no mesh it is not a bug
3313 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3315 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])
3316 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3317 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])
3319 f1ts.setFieldProfile(f,mm,0,pfl)
3320 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3321 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3322 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3323 vals=DataArrayDouble(27) ; vals.iota(1000)
3324 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3326 f1ts=MEDFileField1TS()
3327 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3328 vals=DataArrayDouble(25) ; vals.iota(1000)
3330 f.setName("anonymous") # f has no mesh it is not a bug
3331 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3332 f1ts.setFieldProfile(f,mm,0,pfl)
3333 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3334 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3336 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3337 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3339 f1ts=MEDFileField1TS()
3340 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3341 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3343 f1ts.setFieldProfile(f,mm,0,pfl)
3346 def testWRMeshWithNoCells(self):
3347 fname="Pyfile71.med"
3348 a=DataArrayDouble(4) ; a.iota()
3349 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3350 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3352 m.setMeshAtLevel(0,m00)
3353 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3354 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3358 m=MEDFileMesh.New(fname)
3359 self.assertEqual((),m.getNonEmptyLevels())
3360 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))
3361 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3362 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3365 @unittest.skipUnless(False,"requires Vadim's green light")
3366 def testWRQPolyg1(self):
3367 fname="Pyfile72.med"
3368 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3369 m.insertNextCell([0,2,1,3])
3370 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3372 ms=[m.deepCpy() for i in xrange(4)]
3373 for i,elt in enumerate(ms):
3374 elt.translate([float(i)*1.5,0.])
3376 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3377 m0.convertAllToPoly()
3379 ms=[m.deepCpy() for i in xrange(5)]
3380 for i,elt in enumerate(ms):
3381 elt.translate([float(i)*1.5,1.5])
3383 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3384 m1.convertAllToPoly()
3385 m1.convertLinearCellsToQuadratic()
3387 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3390 mm.setMeshAtLevel(0,m)
3391 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3392 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3393 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3394 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3399 mm_read=MEDFileUMesh(fname)
3400 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3401 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3402 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3403 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3405 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3407 arr0=DataArrayDouble(9) ; arr0.iota()
3408 arr1=DataArrayDouble(9) ; arr1.iota(100)
3409 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3410 f.setArray(arr) ; f.checkCoherency()
3412 ff=MEDFileField1TS()
3413 ff.setFieldNoProfileSBT(f)
3416 ff_read=MEDFileField1TS(fname)
3417 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3418 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))