1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2016 CEA/DEN, EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (EDF R&D)
22 from MEDLoader import *
25 from math import pi,e,sqrt
26 from MEDLoaderDataForTest import MEDLoaderDataForTest
27 from distutils.version import LooseVersion
29 class MEDLoaderTest3(unittest.TestCase):
30 def testMEDMesh1(self):
31 fileName="Pyfile18.med"
32 mname="ExampleOfMultiDimW"
33 medmesh=MEDFileMesh.New(fileName,mname)
34 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
35 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
36 m1_0=medmesh.getLevel0Mesh(True)
37 m1_1=ReadUMeshFromFile(fileName,mname,0)
38 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
39 m2_0=medmesh.getLevelM1Mesh(True)
40 m2_1=ReadUMeshFromFile(fileName,mname,-1)
41 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
44 def testMEDMesh2(self):
45 fileName="Pyfile10.med"
47 outFileName="MEDFileMesh1.med"
48 medmesh=MEDFileUMesh.New(fileName,mname)
49 self.assertEqual((0,),medmesh.getNonEmptyLevels())
50 m1_0=medmesh.getLevel0Mesh(True)
51 m1_1=ReadUMeshFromFile(fileName,mname,0)
52 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
53 g1_0=medmesh.getGroup(0,"mesh2",True)
54 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
55 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
56 g1_0=medmesh.getGroup(0,"mesh3",True)
57 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
58 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
59 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
60 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
61 g1_1.setName(g1_0.getName())
62 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
63 g1_0=medmesh.getFamily(0,"Family_-3",True)
64 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
65 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
66 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
67 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
68 g1_1.setName(g1_0.getName())
69 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
70 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
71 medmesh.write(outFileName,2);
72 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
73 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
74 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
75 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
76 famn=medmesh.getFamilyNameGivenId(0)
77 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
79 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
80 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
81 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
82 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
83 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
86 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
87 def testMEDMesh3(self):
88 outFileName="MEDFileMesh3.med"
89 c=DataArrayDouble.New()
90 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 ];
91 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
92 c.setValues(coords,9,2)
93 m=MEDCouplingUMesh.New();
94 m.setMeshDimension(2);
96 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
97 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
98 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
99 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
100 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
101 m.finishInsertingCells();
103 m.checkConsistencyLight()
104 m1=MEDCouplingUMesh.New();
105 m1.setMeshDimension(1);
107 m1.insertNextCell(NORM_SEG2,2,[1,4])
108 m1.insertNextCell(NORM_SEG2,2,[3,6])
109 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
110 m1.finishInsertingCells();
112 m1.checkConsistencyLight()
113 m2=MEDCouplingUMesh.New();
114 m2.setMeshDimension(0);
116 m2.insertNextCell(NORM_POINT1,1,[1])
117 m2.insertNextCell(NORM_POINT1,1,[3])
118 m2.insertNextCell(NORM_POINT1,1,[2])
119 m2.insertNextCell(NORM_POINT1,1,[6])
120 m2.finishInsertingCells();
122 m2.checkConsistencyLight()
124 mm=MEDFileUMesh.New()
125 self.assertTrue(mm.getUnivNameWrStatus())
126 mm.setName("MyFirstMEDCouplingMEDmesh")
127 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
129 mm.setMeshAtLevel(-1,m1);
130 mm.setMeshAtLevel(0,m);
131 mm.setMeshAtLevel(-2,m2);
132 # playing with groups
133 g1_2=DataArrayInt.New()
134 g1_2.setValues([1,3],2,1)
136 g2_2=DataArrayInt.New()
137 g2_2.setValues([1,2,3],3,1)
139 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
140 g1_1=DataArrayInt.New()
141 g1_1.setValues([0,1,2],3,1)
143 g2_1=DataArrayInt.New()
144 g2_1.setValues([0,2],2,1)
146 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
147 g1_N=DataArrayInt.New()
148 g1_N.setValues(range(8),8,1)
150 g2_N=DataArrayInt.New()
151 g2_N.setValues(range(9),9,1)
153 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
154 mm.createGroupOnAll(0,"GrpOnAllCell")
155 # check content of mm
156 t=mm.getGroupArr(0,"G1",False)
157 self.assertTrue(g1_2.isEqual(t));
158 t=mm.getGroupArr(0,"G2",False)
159 self.assertTrue(g2_2.isEqual(t));
160 t=mm.getGroupArr(-1,"G1",False)
161 self.assertTrue(g1_1.isEqual(t));
162 t=mm.getGroupArr(-1,"G2",False)
163 self.assertTrue(g2_1.isEqual(t));
164 t=mm.getGroupArr(1,"G1",False)
165 self.assertTrue(g1_N.isEqual(t));
166 t=mm.getGroupArr(1,"G2",False)
167 self.assertTrue(g2_N.isEqual(t));
168 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
169 t=mm.getGroupArr(0,"GrpOnAllCell")
170 self.assertTrue(t.getValues()==range(5))
173 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
174 mmCpy.write(outFileName,2);
176 mm=MEDFileMesh.New(outFileName)
178 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
179 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
180 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
181 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
182 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
183 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
184 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
185 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
186 self.assertEqual(3,len(lmm))
187 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
188 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
189 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
191 self.assertTrue(mm.getUnivNameWrStatus())
192 self.assertTrue(isinstance(mm.getUnivName(),str))
193 self.assertTrue(len(mm.getUnivName())!=0)
194 mbis=mm.getMeshAtLevel(0)
195 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
196 self.assertTrue(m.isEqual(mbis,1e-12));
198 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
201 # this test is the testMEDMesh3 except that permutation is dealed here
202 def testMEDMesh4(self):
203 outFileName="MEDFileMesh4.med"
204 c=DataArrayDouble.New()
205 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 ];
206 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
207 c.setValues(coords,9,2)
208 c.setInfoOnComponent(0,"abcdef [km]")
209 c.setInfoOnComponent(1,"ghij [MW]")
210 m=MEDCouplingUMesh.New();
211 m.setMeshDimension(2);
213 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
214 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
215 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
216 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
217 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
218 m.finishInsertingCells();
220 m.checkConsistencyLight()
221 m1=MEDCouplingUMesh.New();
222 m1.setMeshDimension(1);
224 m1.insertNextCell(NORM_SEG2,2,[1,4])
225 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
226 m1.insertNextCell(NORM_SEG2,2,[3,6])
227 m1.finishInsertingCells();
229 m1.checkConsistencyLight()
230 m2=MEDCouplingUMesh.New();
231 m2.setMeshDimension(0);
233 m2.insertNextCell(NORM_POINT1,1,[1])
234 m2.insertNextCell(NORM_POINT1,1,[3])
235 m2.insertNextCell(NORM_POINT1,1,[2])
236 m2.insertNextCell(NORM_POINT1,1,[6])
237 m2.finishInsertingCells();
239 m2.checkConsistencyLight()
241 mm=MEDFileUMesh.New()
242 mm.setName("My2ndMEDCouplingMEDmesh")
243 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
245 renumNode=DataArrayInt.New()
246 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
247 mm.setRenumFieldArr(1,renumNode)
248 mm.setMeshAtLevel(-1,m1,True);
249 mm.setMeshAtLevel(0,m,True);
250 mm.setMeshAtLevel(-2,m2,True);
251 mm.removeMeshAtLevel(-2)
252 mm.setMeshAtLevel(-2,m2,True);
253 # playing with groups
254 g1_2=DataArrayInt.New()
255 g1_2.setValues([2,3],2,1)
257 g2_2=DataArrayInt.New()
258 g2_2.setValues([2,0,3],3,1)
260 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
261 g1_1=DataArrayInt.New()
262 g1_1.setValues([0,2,1],3,1)
264 g2_1=DataArrayInt.New()
265 g2_1.setValues([0,2],2,1)
267 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
268 g1_N=DataArrayInt.New()
269 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
271 g2_N=DataArrayInt.New()
272 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
274 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
275 # check content of mm
276 t=mm.getGroupArr(0,"G1",True)
277 self.assertTrue(g1_2.isEqual(t));
278 t=mm.getGroupArr(0,"G2",True)
279 self.assertTrue(g2_2.isEqual(t));
280 t=mm.getGroupArr(-1,"G1",True)
281 self.assertTrue(g1_1.isEqual(t));
282 t=mm.getGroupArr(-1,"G2",True)
283 self.assertTrue(g2_1.isEqual(t));
284 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
286 mm.write(outFileName,2);
287 mm2=MEDFileMesh.New(outFileName)
288 res=mm.isEqual(mm2,1e-12)
289 self.assertTrue(res[0])
290 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
291 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
292 mm2.keepFamIdsOnlyOnLevs([3],[-1])
293 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
294 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
296 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
297 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
299 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
300 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
301 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
302 self.assertTrue(not mm2.existsFamily("Family_-8"))
303 mm2.createGroupOnAll(-1,"GrpOnAllFace")
304 self.assertTrue(mm2.existsFamily("Family_-8"))
305 self.assertEqual(range(3),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
308 #testing persistence of retrieved arrays
309 def testMEDMesh5(self):
310 fileName="Pyfile18.med"
311 mname="ExampleOfMultiDimW"
312 medmesh=MEDFileUMesh.New(fileName,mname)
313 m1_0=medmesh.getLevel0Mesh(True)
314 da1=medmesh.getFamilyFieldAtLevel(0)
316 self.assertEqual(20,m1_0.getNumberOfCells())
317 self.assertEqual(20,da1.getNumberOfTuples())
320 def testMEDMesh6(self):
321 outFileName="MEDFileMesh5.med"
324 m1=MEDCouplingCMesh.New();
325 da=DataArrayDouble.New()
326 da.setValues([0.,1.,2.],3,1)
327 da.setInfoOnComponent(0,"XX [mm]")
329 da=DataArrayDouble.New()
330 da.setValues([0.,1.2],2,1)
331 da.setInfoOnComponent(0,"YY [km]")
333 da=DataArrayDouble.New()
334 da.setValues([0.,1.3],2,1)
335 da.setInfoOnComponent(0,"ZZ [um]")
338 self.assertTrue(m[0].isEqual(m1,1e-12))
339 self.assertTrue(isinstance(m[0],MEDCouplingCMesh))
340 m.setName("myFirstCartMesh")
341 m.setDescription("mmmmpppppppp")
344 da=DataArrayInt.New()
345 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
346 m.setFamilyFieldArr(1,da)
347 m.setFamilyId("family1",1)
348 da=m.getFamilyArr(1,"family1")
350 self.assertEqual(expected1,da.getValues())
351 self.assertTrue(m.getUnivNameWrStatus())
352 m.write(outFileName,2);
353 mm=MEDFileMesh.New(outFileName)
354 self.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
355 self.assertTrue(isinstance(mm,MEDFileCMesh))
356 self.assertTrue(isinstance(mm.getUnivName(),str))
357 self.assertTrue(len(mm.getUnivName())!=0)
358 self.assertTrue(m.isEqual(mm,1e-12)[0])
359 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
362 m1.setTime(tt[2],tt[0],tt[1])
363 m1.setName(m.getName())
364 m1.setTimeUnit(m.getTimeUnit())
365 m1.setDescription(m.getDescription())
366 self.assertTrue(m2.isEqual(m1,1e-12));
369 def testMEDMesh7(self):
370 fileName="Pyfile24.med"
371 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
373 m.setCoords(m2.getCoords())
374 m.setMeshAtLevel(0,m2)
375 m.setMeshAtLevel(-1,m1)
376 m.setMeshAtLevel(-2,m0)
377 m.setFamilyFieldArr(0,f2)
378 m.setFamilyFieldArr(-1,f1)
379 m.setFamilyFieldArr(-2,f0)
380 m.setFamilyFieldArr(1,p)
381 m.setRenumFieldArr(0,n2)
382 m.setRenumFieldArr(-1,n1)
383 m.setRenumFieldArr(-2,n0)
385 for i in xrange(nbOfFams):
386 m.addFamily(fns[i],fids[i])
389 for i in xrange(nbOfGrps):
390 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
392 m.setName(m2.getName())
393 m.setDescription(m2.getDescription())
395 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
396 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
397 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
398 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
399 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
400 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
401 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
402 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
403 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
406 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
409 def funcToTestDelItem(self,ff):
413 #emulation of pointe.med file.
414 def testMEDField1(self):
415 mm=MEDFileMesh.New("Pyfile17.med")
416 mm.write("Pyfile17_bis.med",2)
417 ff=MEDFileFieldMultiTS("Pyfile17.med")
418 tsExpected=[[1,2],[3,4],[5,6]]
419 self.assertEqual(3,len(ff))
420 for pos,f1ts in enumerate(ff):
421 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
422 self.assertEqual(type(f1ts),MEDFileField1TS)
424 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
425 self.assertEqual([3,4],ff[1].getTime()[:-1])
426 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
427 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
428 ff.write("Pyfile17_bis.med",0)
430 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
431 self.assertEqual([(1,2),(3,4),(5,6)],ts)
432 self.funcToTestDelItem(ff)
433 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
434 self.assertEqual([(1,2)],ts)
438 def testMEDField2(self):
439 mm=MEDFileMesh.New("Pyfile19.med")
440 mm.write("Pyfile19_bis.med",2)
441 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
442 ff.write("Pyfile19_bis.med",0)
443 self.assertEqual([('tyty','mm'),('uiop','MW')],GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
447 def testMEDField3(self):
448 mm=MEDFileMesh.New("Pyfile13.med")
449 mm.write("Pyfile13_bis.med",2)
450 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
451 ff.write("Pyfile13_bis.med",0)
452 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
453 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
454 f2=ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
455 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
456 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
457 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
458 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
459 ff4=MEDFileField1TS.New("Pyfile13.med")
460 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
461 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
465 def testMEDField4(self):
466 mm=MEDFileMesh.New("Pyfile14.med")
467 mm.write("Pyfile14_bis.med",2)
468 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
469 ff.write("Pyfile14_bis.med",0)
470 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
471 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
472 f2=ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
473 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
476 # MEDField get/set on pointe.med
477 def testMEDField5(self):
478 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
479 f=ff.getFieldAtLevel(ON_CELLS,0)
480 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
481 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
482 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
483 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
484 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
485 # no with renumbering
486 f=ff.getFieldAtLevel(ON_CELLS,0,1)
487 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
488 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
489 f=ff.getFieldAtLevel(ON_CELLS,0,3)
490 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
491 f=ff.getFieldAtLevel(ON_CELLS,0,2)
492 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
493 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
494 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
497 # MEDField get/set on profiles nodes
498 def testMEDField6(self):
499 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
500 its=ff.getIterations()
501 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
502 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
503 f2=ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
504 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
505 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
506 its=ff.getIterations()
507 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
508 f2=ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
509 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
510 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
511 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
514 # MEDField get/set on profiles cells
515 def testMEDField7(self):
516 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
517 its=ff.getIterations()
518 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
519 f2=ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
520 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
523 #first test of assignation. No profile and types sorted by type.
524 def testMEDField8(self):
526 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
528 mm1=MEDFileUMesh.New()
529 mm1.setCoords(m1.getCoords())
530 mm1.setMeshAtLevel(0,m1)
531 mm1.setName(m1.getName())
533 ff1=MEDFileField1TS.New()
534 ff1.setFieldNoProfileSBT(f1)
536 f2=ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
537 itt,orr,ti=ff1.getTime()
538 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
539 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
541 itt,orr,ti=ff1.getTime()
542 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
543 da,infos=ff1.getUndergroundDataArrayExt()
544 f2.getArray().setName(da.getName())#da has the same name than f2
545 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
546 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
549 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
551 mm1=MEDFileUMesh.New()
552 mm1.setCoords(m1.getCoords())
553 mm1.setMeshAtLevel(0,m1)
554 mm1.setName(m1.getName())
556 ff1=MEDFileField1TS.New()
557 ff1.setFieldNoProfileSBT(f1)
559 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
561 f2=ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
562 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
563 f1.getArray().setIJ(0,0,nv)
564 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
567 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
569 mm1=MEDFileUMesh.New()
570 mm1.setCoords(m1.getCoords())
571 mm1.setMeshAtLevel(0,m1)
572 mm1.setName(m1.getName())
574 ff1=MEDFileField1TS.New()
575 ff1.setFieldNoProfileSBT(f1)
577 f2=ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
578 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
579 da,infos=ff1.getUndergroundDataArrayExt()
580 f2.getArray().setName(da.getName())#da has the same name than f2
581 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
582 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
585 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
586 f1InvalidCpy=f1.deepCopy()
587 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
588 f1InvalidCpy2=f1.deepCopy()
589 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
591 mm1=MEDFileUMesh.New()
592 mm1.setCoords(m1.getCoords())
593 mm1.setMeshAtLevel(0,m1)
594 mm1.setName(m1.getName())
596 ff1=MEDFileField1TS.New()
597 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
598 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
599 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
600 ff1.setFieldNoProfileSBT(f1)
602 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
603 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
604 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
605 sbt=ff2.getFieldSplitedByType2()
606 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
607 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
608 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
609 self.assertEqual(6,loc1.getNumberOfPointsInCells())
610 self.assertEqual(3,loc1.getNumberOfGaussPoints())
611 self.assertEqual(2,loc1.getDimension())
612 da,infos=ff2.getUndergroundDataArrayExt()
613 f2.getArray().setName(da.getName())#da has the same name than f2
614 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
615 self.assertEqual(53,da.getNumberOfTuples())
616 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)
620 def testMEDFileData1(self):
624 m1=MEDLoaderDataForTest.build1DMesh_1()
625 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
626 mmm1=MEDFileMeshMultiTS.New() ;
627 mmm1.setOneTimeStep(mm1)
628 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
629 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
630 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
631 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
633 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
634 self.assertEqual(name,mmm.getName())
635 self.assertEqual(type(mmm),MEDFileUMesh)
637 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
639 ff1=MEDFileFieldMultiTS.New()
640 ff21=MEDFileFieldMultiTS.New()
641 ff22=MEDFileFieldMultiTS.New()
642 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
643 f1.getArray().setInfoOnComponent(0,"power [kW]")
644 ff1.appendFieldNoProfileSBT(f1)
645 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
646 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
647 ff21.appendFieldNoProfileSBT(f21)
648 f22=f21.deepCopy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
649 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
650 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
651 ff22.appendFieldNoProfileSBT(f22)
652 fs=MEDFileFields.New()
653 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
654 for name,fmts in zip(["f1","f21","f22"],fs):
655 self.assertEqual(name,fmts.getName())
659 fname2="Pyfile29_2.med"
662 d2=MEDFileData.New(fname2)
663 self.assertEqual(2,d2.getNumberOfMeshes())
664 self.assertEqual(3,d2.getNumberOfFields())
665 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
666 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
667 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
668 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
669 self.assertTrue(m1.isEqual(m1bis,1e-12))
670 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
671 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
672 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
673 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
674 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
677 def testMEDField9(self):
678 # first test field profile WR. Full type but with some type missing
680 m1=MEDLoaderDataForTest.build2DMesh_3()
681 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
683 ff1=MEDFileField1TS.New()
684 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
685 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
686 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.
687 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
689 ff1.setFieldProfile(f1,mm1,0,da)
690 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
694 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
695 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
696 self.assertTrue(vals.isEqual(d,1e-14))
698 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
699 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
700 ff2.deepCpyGlobs(ff3)
701 sbt=ff2.getFieldSplitedByType2()
702 self.assertEqual(3,sbt[0][0])#TRI3
703 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
704 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
705 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
706 self.assertEqual(4,sbt[1][0])#QUAD4
707 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
708 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
709 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
710 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
711 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
712 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
713 self.assertTrue(vals.isEqual(d,1e-14))
716 def testMEDField10(self):
718 m1=MEDLoaderDataForTest.build2DMesh_1()
719 m1.renumberCells([0,1,4,2,3,5],False)
720 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
722 ff1=MEDFileFieldMultiTS.New()
723 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
724 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
725 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.
726 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
728 ff1.appendFieldProfile(f1,mm1,0,da)
729 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
730 ff1.appendFieldProfile(f1,mm1,0,da)
734 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
735 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
736 self.assertTrue(vals.isEqual(e,1e-14))
737 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
738 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
739 self.assertTrue(vals.isEqual(d,1e-14))
741 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
742 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
743 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
744 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
745 self.assertTrue(vals.isEqual(e,1e-14))
746 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
747 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
748 self.assertTrue(vals.isEqual(d,1e-14))
751 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
752 def testMEDField11(self):
754 m1=MEDLoaderDataForTest.build2DMesh_1()
755 m1.renumberCells([0,1,4,2,3,5],False)
756 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
758 ff1=MEDFileField1TS.New()
759 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
760 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
761 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.
762 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
764 ff1.setFieldProfile(f1,mm1,0,da)
765 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
768 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
769 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
770 self.assertTrue(vals.isEqual(d,1e-14))
772 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
773 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
774 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
775 self.assertTrue(vals.isEqual(d,1e-14))
778 def testMEDField12(self):
780 m1=MEDLoaderDataForTest.build2DMesh_1()
781 m1.renumberCells([0,1,4,2,3,5],False)
782 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
784 ff1=MEDFileFieldMultiTS.New()
785 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
786 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
787 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.
788 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
790 ff1.appendFieldProfile(f1,mm1,0,da)
791 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
792 ff1.appendFieldProfile(f1,mm1,0,da)
795 vals,pfl=ff1.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=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
799 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
800 self.assertTrue(vals.isEqual(d,1e-14))
802 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
803 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
804 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
805 self.assertTrue(vals.isEqual(e,1e-14))
806 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
807 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
808 self.assertTrue(vals.isEqual(d,1e-14))
811 def testMEDField13(self):
813 m1=MEDLoaderDataForTest.build2DMesh_1()
814 m1.renumberCells([0,1,4,2,3,5],False)
816 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
817 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
819 ff1=MEDFileField1TS.New()
820 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
821 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
822 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.
823 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
825 ff1.setFieldProfile(f1,mm1,0,da)
828 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
829 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
830 self.assertTrue(vals.isEqual(d,1e-14))
832 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
833 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
834 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
835 self.assertTrue(vals.isEqual(d,1e-14))
838 def testMEDField14(self):
840 m1=MEDLoaderDataForTest.build2DMesh_1()
841 m1.renumberCells([0,1,4,2,3,5],False)
843 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
844 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
846 ff1=MEDFileFieldMultiTS.New()
847 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
848 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
849 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.
850 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
852 ff1.appendFieldProfile(f1,mm1,0,da)
853 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
854 ff1.appendFieldProfile(f1,mm1,0,da)
857 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
858 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
859 self.assertTrue(vals.isEqual(d,1e-14))
860 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
861 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
862 self.assertTrue(vals.isEqual(e,1e-14))
863 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
865 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
866 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
867 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
868 self.assertTrue(vals.isEqual(d,1e-14))
869 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
870 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
871 self.assertTrue(vals.isEqual(e,1e-14))
873 # 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.
874 # 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
875 # 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 !
876 def testMEDField15(self):
878 m0=MEDLoaderDataForTest.build2DMesh_1()
879 m0.renumberCells([0,1,4,2,3,5],False)
881 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
882 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
883 ff1=MEDFileField1TS.New()
884 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
885 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
886 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.
887 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
889 ff1.setFieldProfile(f1,mm1,0,da)
890 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
893 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
894 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
895 self.assertTrue(p1.isIota(5))
896 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
898 # Test for getFieldAtTopLevel method
899 def testMEDField16(self):
901 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
903 mm1=MEDFileUMesh.New()
904 mm1.setCoords(m1.getCoords())
905 mm1.setMeshAtLevel(0,m1)
906 mm1.setName(m1.getName())
907 ff1=MEDFileField1TS.New()
908 ff1.setFieldNoProfileSBT(f1)
909 m2=m1.buildDescendingConnectivity()[0]
910 m2.sortCellsInMEDFileFrmt()
911 m2.setName(m1.getName())
912 mm1.setMeshAtLevel(-1,m2)
914 f2=m2.getMeasureField(True)
915 dd=DataArrayDouble.New()
916 dd.alloc(f2.getArray().getNumberOfTuples(),3)
917 dd[:,0]=f2.getArray()
918 dd[:,1]=2*f2.getArray()
919 dd[:,2]=3*f2.getArray()
920 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
922 f2.copyTinyStringsFrom(f1)
923 f2.copyTinyAttrFrom(f1)
924 ff1.setFieldNoProfileSBT(f2)
926 # Reading Pyfile37.med
927 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
928 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
929 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
930 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
931 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
932 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
933 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
937 ff1=MEDFileField1TS.New()
938 ff1.setFieldNoProfileSBT(f2)
940 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
941 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
942 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
945 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
946 def testMEDField17(self):
948 m1=MEDLoaderDataForTest.build2DMesh_1()
949 m1.renumberCells([0,1,4,2,3,5],False)
950 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
952 ffs=MEDFileFields.New()
953 ff1=MEDFileFieldMultiTS.New()
954 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
955 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
956 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.
957 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
959 ff1.appendFieldProfile(f1,mm1,0,da)
960 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
961 ff1.appendFieldProfile(f1,mm1,0,da)
963 ffs.setFieldAtPos(0,ff1)
967 ffsr=MEDFileFields.New(fname)
968 ff3=ffsr.getFieldAtPos(0)
969 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
970 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
973 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
974 def testMEDField18(self):
976 m1=MEDLoaderDataForTest.build2DMesh_1()
977 m1.renumberCells([0,1,4,2,3,5],False)
978 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
980 ffs=MEDFileFields.New()
981 ff1=MEDFileFieldMultiTS.New()
982 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
983 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
984 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.
985 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
987 ff1.appendFieldProfile(f1,mm1,0,da)
988 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
989 ff1.appendFieldProfile(f1,mm1,0,da)
993 ffsr=MEDFileFields.New(fname)
994 ff3=ffsr.getFieldAtPos(0)
995 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
996 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
999 def testMEDFieldBug1(self):
1000 fname="Pyfile13.med"
1001 d=MEDFileData.New(fname)
1002 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1005 def testMEDMesh8(self):
1006 m=MEDLoaderDataForTest.build1DMesh_1()
1007 m.convertQuadraticCellsToLinear()
1008 mm=MEDFileUMesh.New()
1009 mm.setMeshAtLevel(0,m)
1010 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1011 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1012 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1013 mm.setGroupsAtLevel(0,[g1,g2],False)
1014 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1015 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1016 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1017 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1018 mm.assignFamilyNameWithGroupName()
1019 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1020 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1021 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1022 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1024 mm=MEDFileUMesh.New()
1025 mm.setMeshAtLevel(0,m)
1026 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1027 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1028 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1029 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1030 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1031 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1032 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1033 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1034 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1035 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1036 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1037 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1038 mm.changeFamilyId(5,6)
1039 g=mm.getGroupArr(0,"g3")
1040 self.assertTrue(g.isEqual(g3));
1041 g=mm.getGroupArr(0,"g2")
1042 self.assertTrue(g.isEqual(g2));
1043 g=mm.getGroupArr(0,"g1")
1044 self.assertTrue(g.isEqual(g1));
1047 # bug detected by gauthier
1048 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1049 fname="Pyfile41.med"
1050 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1052 mm1=MEDFileUMesh.New()
1053 mm1.setCoords(m1.getCoords())
1054 mm1.setMeshAtLevel(0,m1)
1056 ff1=MEDFileField1TS.New()
1057 ff1.setFieldNoProfileSBT(f1)
1059 # writing mesh1 and field1, now creation of mesh2 and field2
1062 m2.translate([0.5,0.6,0.7])
1063 m2.setName("3DSurfMesh_2")
1064 f2.getArray()[:]*=2.
1065 f2.setName("VectorFieldOnCells2")
1066 mm2=MEDFileUMesh.New()
1067 mm2.setCoords(m2.getCoords())
1068 mm2.setMeshAtLevel(0,m2)
1070 ff2=MEDFileField1TS.New()
1071 ff2.setFieldNoProfileSBT(f2)
1074 f3=ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1075 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1076 f4=ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1077 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1080 def testMEDLoaderMultiLevelCellField1(self):
1081 fname="Pyfile42.med"
1082 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1083 m=MEDFileUMesh.New()
1084 m.setCoords(m2.getCoords())
1085 m.setMeshAtLevel(0,m2)
1086 m.setMeshAtLevel(-1,m1)
1087 m.setMeshAtLevel(-2,m0)
1091 compNames1=["comp1","comp2","comp3"]
1092 ff1=MEDFileField1TS.New()
1093 da2=DataArrayDouble.New()
1094 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1096 da2.rearrange(len(compNames1))
1097 da2.setInfoOnComponents(compNames1)
1098 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkConsistencyLight()
1099 ff1.setFieldNoProfileSBT(f2)
1100 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1101 da0=DataArrayDouble.New()
1102 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1104 da0.rearrange(len(compNames1))
1105 da0.setInfoOnComponents(compNames1)
1106 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1107 ff1.setFieldNoProfileSBT(f0)
1108 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1109 da1=DataArrayDouble.New()
1110 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1112 da1.rearrange(len(compNames1))
1113 da1.setInfoOnComponents(compNames1)
1114 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1115 ff1.setFieldNoProfileSBT(f1)
1116 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1121 compNames2=["comp11","comp22"]
1122 ff2=MEDFileField1TS.New()
1123 da0=DataArrayDouble.New()
1124 da0.alloc(m0.getNumberOfCells()*2,1)
1127 da0.setInfoOnComponents(compNames2)
1128 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1129 ff2.setFieldNoProfileSBT(f0)
1130 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1131 da1=DataArrayDouble.New()
1132 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1134 da1.rearrange(len(compNames2))
1135 da1.setInfoOnComponents(compNames2)
1136 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1137 ff2.setFieldNoProfileSBT(f1)
1138 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1142 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1143 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1144 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1145 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1146 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1147 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1150 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1151 fname="Pyfile43.med"
1152 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1153 m=MEDFileUMesh.New()
1154 m.setMeshAtLevel(0,m2)
1155 m.setMeshAtLevel(-1,m1)
1156 m.setMeshAtLevel(-2,m0)
1157 f=MEDFileField1TS.New()
1158 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1159 ff.setName("NodeFieldPfl")
1160 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1162 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1163 f.setFieldProfile(ff,m,-2,pfl)
1164 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1165 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1166 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1167 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1168 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1169 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1170 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1171 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1172 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1173 expected1=[1.,10.,100.,2.,20.,200.]
1174 nodeCoordsWithValue1=[10.,2.5,0.]
1175 nodeCoordsWithValue2=[10.,3.75,0.]
1177 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1178 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1181 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1185 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1186 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1187 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1188 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1189 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1190 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1191 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1192 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1193 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1195 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1200 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1201 f=MEDFileField1TS.New()
1202 f.setFieldProfile(ff,m,-2,pfl)
1203 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1204 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1205 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1206 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1207 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1208 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1209 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1210 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1211 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1212 expected2=[2.,20.,200.,1.,10.,100.]
1214 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1215 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1218 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1221 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1222 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1223 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1224 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1225 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1226 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1227 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1228 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1229 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1231 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1235 def testBuildInnerBoundaryAlongM1Group1(self):
1236 fname="Pyfile44.med"
1237 m=MEDCouplingCMesh.New()
1238 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1239 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1240 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1241 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1242 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1243 m2.setName(m.getName())
1244 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1245 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1246 mm=MEDFileUMesh.New()
1247 mm.setMeshAtLevel(0,m)
1248 mm.setMeshAtLevel(-1,m2)
1249 mm.setGroupsAtLevel(-1,[grp,grp2])
1250 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1251 mm.setGroupsAtLevel(1,[grpNode])
1252 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1253 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1254 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1256 self.assertEqual(30,mm.getNumberOfNodes())
1257 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1258 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1260 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1261 self.assertEqual([15,16,17],nodes.getValues());
1262 self.assertEqual([7,8,9],cells.getValues());
1263 self.assertEqual([12,13,14],cells2.getValues());
1264 self.assertEqual(33,mm.getNumberOfNodes())
1265 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1266 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1267 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1268 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1269 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
1270 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1271 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
1272 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1273 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])
1274 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1275 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1277 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1278 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1279 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1280 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1281 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1285 def testBuildInnerBoundaryAlongM1Group2(self):
1286 fname="Pyfile45.med"
1287 m=MEDCouplingCMesh.New()
1288 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1289 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1290 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1291 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1292 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1293 m2.setName(m.getName())
1294 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1295 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1296 mm=MEDFileUMesh.New()
1297 mm.setMeshAtLevel(0,m)
1298 mm.setMeshAtLevel(-1,m2)
1299 mm.setGroupsAtLevel(-1,[grp,grp2])
1300 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1301 mm.setGroupsAtLevel(1,[grpNode])
1302 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1303 ref1=[4,9,8,14,15,4,10,9,15,16]
1304 ref2=[4,9,8,14,30,4,10,9,30,16]
1306 self.assertEqual(30,mm.getNumberOfNodes())
1307 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1308 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1310 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1311 self.assertEqual([15],nodes.getValues());
1312 self.assertEqual([7,8],cells.getValues());
1313 self.assertEqual([12,13],cells2.getValues());
1314 self.assertEqual(31,mm.getNumberOfNodes())
1315 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1316 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1317 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1318 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1319 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
1320 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1321 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
1322 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1323 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])
1324 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1325 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1327 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1328 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1329 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1330 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1331 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1335 def testBuildInnerBoundaryAlongM1Group3(self):
1336 """ Test buildInnerBoundaryAlongM1Group() with *non-connex* cracks """
1337 fname = "Pyfile73.med"
1338 m = MEDCouplingCMesh.New()
1339 m.setCoordsAt(0, DataArrayDouble([0.0,1.1,2.3,3.6,5.0]))
1340 m.setCoordsAt(1, DataArrayDouble([0.,1.,2.]))
1341 m = m.buildUnstructured(); m.setName("simple")
1342 m2 = m.buildDescendingConnectivity()[0]
1343 m2.setName(m.getName())
1345 # A crack in two non connected parts of the mesh:
1346 grpSeg = DataArrayInt([3,19]) ; grpSeg.setName("Grp")
1348 mm = MEDFileUMesh.New()
1349 mm.setMeshAtLevel(0,m)
1350 mm.setMeshAtLevel(-1,m2)
1351 mm.setGroupsAtLevel(-1,[grpSeg])
1352 nodes, cellsMod, cellsNotMod = mm.buildInnerBoundaryAlongM1Group("Grp")
1353 self.assertEqual([1,13],nodes.getValues());
1354 self.assertEqual([0,6],cellsMod.getValues());
1355 self.assertEqual([1,7],cellsNotMod.getValues());
1356 self.assertEqual(17,mm.getNumberOfNodes())
1357 self.assertEqual([3,19],mm.getGroupArr(-1,"Grp").getValues())
1358 self.assertEqual([22,23],mm.getGroupArr(-1,"Grp_dup").getValues())
1359 ref0=[4, 15, 0, 5, 6, 4, 8, 7, 12, 16]
1360 ref1=[4, 2, 1, 6, 7, 4, 9, 8, 13, 14]
1361 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[0,6]].getNodalConnectivity().getValues())
1362 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[1,7]].getNodalConnectivity().getValues())
1363 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
1364 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1366 refValues=DataArrayDouble([1.1, 1.2, 1.3, 1.4, 1.1, 1.2, 1.3, 1.4])
1367 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1368 self.assertTrue(delta.getMaxValue()[0]<1e-10)
1370 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1371 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1372 refValues2=refValues[:] ; refValues2[0] = 1.265; refValues2[6] = 1.105
1373 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1374 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1377 def testBuildInnerBoundaryAlongM1Group4(self):
1378 """ Test case where cells touch the M1 group on some nodes only and not on full egdes (triangle mesh for ex)
1380 coo = DataArrayDouble([0.,0., 1.,0., 2.,0., 3.,0.,
1381 0.,1., 1.,1., 2.,1., 3.,1.,
1382 0.,2., 1.,2., 2.,2., 3.,2.], 12, 2)
1383 conn = [3,0,4,1, 3,1,4,5,
1390 connI = DataArrayInt()
1391 connI.alloc(13, 1); connI.iota(); connI *= 4
1392 m2 = MEDCouplingUMesh("2D", 2)
1394 m2.setConnectivity(DataArrayInt(conn), connI)
1395 m2.checkConsistency()
1396 m1, _, _, _, _ = m2.buildDescendingConnectivity()
1397 grpIds = DataArrayInt([9,11]); grpIds.setName("group")
1398 grpIds2 = DataArrayInt([0,1]); grpIds2.setName("group2")
1399 mfu = MEDFileUMesh()
1400 mfu.setMeshAtLevel(0, m2)
1401 mfu.setMeshAtLevel(-1, m1)
1402 mfu.setGroupsAtLevel(-1, [grpIds, grpIds2])
1403 nNod = m2.getNumberOfNodes()
1404 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1405 m2_bis = mfu.getMeshAtLevel(0)
1406 m2_bis.checkConsistency()
1407 m1_bis = mfu.getMeshAtLevel(-1)
1408 m1_bis.checkConsistency()
1409 self.assertEqual(nNod+2, mfu.getNumberOfNodes())
1410 self.assertEqual(nNod+2, m2_bis.getNumberOfNodes())
1411 self.assertEqual(nNod+2, m1_bis.getNumberOfNodes())
1412 self.assertEqual([6,7], nodesDup.getValues())
1413 self.assertEqual([2.,1., 3.,1.], m2_bis.getCoords()[nNod:].getValues())
1414 self.assertEqual(set([3,10,11]), set(cells1.getValues()))
1415 self.assertEqual(set([8,9,4,5]), set(cells2.getValues()))
1416 self.assertEqual([9,11],mfu.getGroupArr(-1,"group").getValues())
1417 self.assertEqual([23,24],mfu.getGroupArr(-1,"group_dup").getValues())
1418 self.assertEqual([0,1],mfu.getGroupArr(-1,"group2").getValues())
1419 # mfu.getMeshAtLevel(0).writeVTK("/tmp/mfu_M0.vtu")
1420 ref0 =[3, 5, 10, 12, 3, 12, 10, 11, 3, 12, 11, 13]
1421 ref1 =[3, 2, 6, 7, 3, 2, 7, 3, 3, 1, 5, 6, 3, 1, 6, 2]
1422 self.assertEqual(ref0,mfu.getMeshAtLevel(0)[[3,10,11]].getNodalConnectivity().getValues())
1423 self.assertEqual(ref1,mfu.getMeshAtLevel(0)[[4,5,8,9]].getNodalConnectivity().getValues())
1424 self.assertRaises(InterpKernelException,mfu.getGroup(-1,"group_dup").checkGeoEquivalWith,mfu.getGroup(-1,"group"),2,1e-12) # Grp_dup and Grp are not equal considering connectivity only
1425 mfu.getGroup(-1,"group_dup").checkGeoEquivalWith(mfu.getGroup(-1,"group"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1426 m_bis0 = mfu.getMeshAtLevel(-1)
1427 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1428 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1430 def testBuildInnerBoundary5(self):
1431 """ Full 3D test with tetras only. In this case a tri from the group is not duplicated because it is made only
1432 of non duplicated nodes. The tri in question is hence not part of the final new "dup" group. """
1433 coo = DataArrayDouble([200.0, 200.0, 0.0, 200.0, 200.0, 200.0, 200.0, 0.0, 200.0, 200.0, 0.0, 0.0, 0.0, 200.0, 0.0, 0.0, 200.0, 200.0, 0.0, 0.0, 0.0, 0.0, 0.0,
1434 200.0, 400.0, 200.0, 0.0, 400.0, 200.0, 200.0, 400.0, 0.0, 0.0, 400.0, 0.0, 200.0, 0.0, 100.00000000000016, 200.0, 63.15203310314546, 200.0, 200.0, 134.45205700643342,
1435 200.0, 200.0, 200.0, 100.00000000000016, 200.0, 63.15203310314546, 0.0, 200.0, 134.45205700643342, 0.0, 200.0, 0.0, 100.00000000000016, 0.0, 63.15203310314546,
1436 200.0, 0.0, 134.45205700643342, 200.0, 0.0, 200.0, 100.00000000000016, 0.0, 63.15203310314546, 0.0, 0.0, 134.45205700643342, 0.0, 0.0, 200.0, 200.0, 100.02130053568538,
1437 0.0, 200.0, 100.00938163175135, 200.0, 0.0, 100.02130053568538, 0.0, 0.0, 100.00938163175135, 299.3058739933347, 200.0, 200.0, 400.0, 98.68100542924483,
1438 200.0, 302.8923433403344, 0.0, 200.0, 302.8923433403344, 200.0, 0.0, 400.0, 100.00000000000016, 0.0, 302.8923433403344, 0.0, 0.0, 400.0, 200.0, 98.55126825835082,
1439 400.0, 0.0, 100.02162286181577, 99.31624553977466, 99.99999998882231, 200.0, 99.31624576683302, 100.00000010178034, 0.0, 99.31624560596512, 200.0, 100.0050761312483,
1440 99.31624560612883, 0.0, 100.00507613125338, 200.0, 99.99999995813045, 100.00950673487786, 0.0, 99.99999989928207, 100.0041870621175, 301.29063354383015,
1441 100.0000000093269, 0.0, 301.29063360689975, 0.0, 100.00957769061164, 140.52853868782435, 99.99999963972768, 100.00509135751312, 297.87779091770784,
1442 97.16750463405486, 97.18018457127863], 46, 3)
1443 c0 = [14, 45, 31, 21, 42, 14, 37, 38, 20, 44, 14, 39, 36, 41, 44, 14, 5, 25, 12, 13, 14, 38, 36, 44, 41, 14, 21, 20, 24, 44, 14, 38, 25, 41, 19, 14, 37, 38, 44, 41, 14, 16, 27,
1444 39, 41, 14, 21, 45, 26, 40, 14, 39, 37, 44, 41, 14, 14, 15, 24, 44, 14, 25, 38, 41, 13, 14, 27, 18, 6, 22, 14, 38, 36, 41, 13, 14, 44, 14, 15, 36, 14, 44, 23, 39, 26, 14,
1445 21,26, 23, 44, 14, 38, 44, 14, 24, 14, 39, 37, 41, 22, 14, 21, 33, 45, 42, 14, 27, 22, 39, 41, 14, 23, 26, 21, 3, 14, 27, 18, 22, 41, 14, 39, 36, 44, 17, 14, 21, 26, 44, 40,
1446 14, 39, 37, 22, 23, 14, 37, 38, 41, 19, 14, 25, 12, 13, 41, 14, 30, 26, 43, 45, 14, 38, 36, 13, 14, 14, 12, 36, 13, 41, 14, 20, 44, 21, 37, 14, 16, 36, 12, 41, 14, 39, 36,
1447 17, 16, 14, 44, 20, 24, 38, 14, 27, 16, 12, 41, 14, 26, 15, 17, 44, 14, 19, 18, 41, 37, 14, 40, 45, 26, 15, 14, 37, 38, 19, 20, 14, 17, 15, 26, 2, 14, 39, 36, 16, 41, 14,
1448 24, 21, 44, 40, 14, 16, 7, 27, 12, 14, 22, 18, 37, 41, 14, 21, 31, 45, 24, 14, 44, 40, 15, 24, 14, 24, 45, 15, 28, 14, 44, 40, 26, 15, 14, 24, 20, 21, 0, 14, 38, 36, 14,
1449 44, 14, 39, 37, 23, 44, 14, 45, 31, 42, 32, 14, 25, 18, 19, 4, 14, 36, 44, 17, 15, 14, 25, 19, 18, 41, 14, 24, 15, 14, 1, 14, 45, 24, 34, 28, 14, 35, 45, 30, 43, 14, 17,
1450 44, 39, 26, 14, 44, 23, 21, 37, 14, 30, 45, 29, 15, 14, 45, 35, 33, 43, 14, 30, 15, 26, 45, 14, 31, 21, 0, 24, 14, 33, 35, 32, 10, 14, 29, 45, 34, 28, 14, 32, 45, 34,
1451 29, 14, 45, 31, 32, 34, 14, 33, 26, 45, 43, 14, 45, 31, 34, 24, 14, 33, 26, 21, 45, 14, 11, 30, 35, 29, 14, 33, 35, 45, 32, 14, 33, 45, 42, 32, 14, 32, 8, 34, 31, 14,
1452 21, 26, 33, 3, 14, 35, 45, 32, 29, 14, 29, 34, 9, 28, 14, 15, 45, 24, 40, 14, 29, 45, 28, 15, 14, 21, 24, 45, 40, 14, 24, 15, 1, 28, 14, 35, 45, 29, 30, 14, 26, 15,
1454 cI0 = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185,
1455 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 355,
1456 360, 365, 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430]
1457 m3 = MEDCouplingUMesh("3D", 3)
1459 m3.setConnectivity(DataArrayInt(c0), DataArrayInt(cI0))
1460 m3.checkConsistency()
1461 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1462 grpIds = DataArrayInt([36,74]); grpIds.setName("group")
1463 mfu = MEDFileUMesh()
1464 mfu.setMeshAtLevel(0, m3)
1465 mfu.setMeshAtLevel(-1, m2)
1466 grpIds3D = DataArrayInt([0,1]); grpIds3D.setName("group_3d")
1467 mfu.setGroupsAtLevel(0, [grpIds3D]) # just to check preservation of 3D group
1468 mfu.setGroupsAtLevel(-1, [grpIds])
1469 nNod = m3.getNumberOfNodes()
1470 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1471 m3_bis = mfu.getMeshAtLevel(0)
1472 m3_bis.checkConsistency()
1473 m2_bis = mfu.getMeshAtLevel(-1)
1474 m2_bis.checkConsistency()
1475 self.assertEqual(nNod+1, mfu.getNumberOfNodes())
1476 self.assertEqual(nNod+1, m3_bis.getNumberOfNodes())
1477 self.assertEqual(nNod+1, m2_bis.getNumberOfNodes())
1478 self.assertEqual([3], nodesDup.getValues())
1479 self.assertEqual(m3_bis.getCoords()[3].getValues(), m3_bis.getCoords()[nNod:].getValues())
1480 self.assertEqual(set([22]), set(cells1.getValues()))
1481 self.assertEqual(set([77]), set(cells2.getValues()))
1482 self.assertEqual([36,74],mfu.getGroupArr(-1,"group").getValues())
1483 self.assertEqual([0,1],mfu.getGroupArr(0,"group_3d").getValues())
1484 self.assertEqual([213],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1485 m_bis0 = mfu.getMeshAtLevel(-1)
1486 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1487 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1490 def testBasicConstructors(self):
1491 fname="Pyfile18.med"
1492 m=MEDFileMesh.New(fname)
1493 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1494 m=MEDFileMesh.New(fname)
1495 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1496 m=MEDFileUMesh(fname)
1499 m=MEDFileCMesh("MEDFileMesh5.med")
1500 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1502 m=MEDFileMeshMultiTS()
1503 m=MEDFileMeshMultiTS(fname)
1504 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1506 m=MEDFileMeshes(fname)
1508 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1509 m=MEDFileFieldMultiTS()
1510 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1512 m=MEDFileFields(fname)
1514 m=MEDFileData(fname)
1516 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1517 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1518 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1519 m=MEDCouplingCMesh()
1520 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1521 m=MEDCouplingFieldTemplate(ON_NODES)
1522 m=MEDCouplingMultiFields([])
1523 m=MEDCouplingFieldOverTime([])
1526 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1527 def testBugSemiPartialField(self):
1528 fname="Pyfile46.med"
1529 m=MEDLoaderDataForTest.build2DMesh_3()
1530 m=m[:10] ; m.setName("mesh")
1531 f=m.getMeasureField(False)
1532 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1534 f.setName("SemiPartialField")
1536 f1=f[:6] ; f1.getMesh().setName(m.getName())
1537 f2=f[6:] ; f2.getMesh().setName(m.getName())
1539 mm=MEDFileUMesh.New()
1540 mm.setMeshAtLevel(0,m)
1541 ff=MEDFileField1TS.New()
1542 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1546 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1547 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1548 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1550 fread.checkConsistencyLight()
1551 fread2.checkConsistencyLight()
1552 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1553 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1556 def testUnPolyze1(self):
1557 fname="Pyfile47.med"
1558 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1559 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]
1560 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1561 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]]))
1563 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1564 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1565 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1566 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1567 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1568 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1569 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1570 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1572 mm.setRenumFieldArr(0,None)
1573 mm.setFamilyFieldArr(-1,None)
1576 def testUnPolyze2(self):
1577 fname="Pyfile48.med"
1578 mfd=MEDFileData.New()
1579 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1580 meshes=MEDFileMeshes.New()
1582 mfd.setMeshes(meshes)
1583 fields=MEDFileFields.New()
1584 mfd.setFields(fields)
1585 ff=MEDFileFieldMultiTS.New()
1586 fields.pushField(ff)
1588 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1589 f0_0.setTime(9.5,3,4)
1590 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1592 f0_0.setMesh(mm.getMeshAtLevel(0))
1593 ff.appendFieldNoProfileSBT(f0_0)
1594 ff0=ff.getTimeStepAtPos(0)
1595 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1596 f0_1.setTime(9.5,3,4)
1597 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1598 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1599 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1601 ff0.setFieldProfile(f0_1,mm,0,pfl)
1602 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1603 f0_2.setTime(9.5,3,4)
1604 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1605 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
1606 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1608 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1609 mfd.getFields().shallowCpyGlobs(ff0)
1611 mfd.unPolyzeMeshes()
1613 fmts=mfd.getFields()[0]
1614 self.assertEqual(fmts.getNumberOfTS(),1)
1615 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1616 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1617 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))])
1618 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1619 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1620 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1621 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1622 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1623 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1624 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1625 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))
1626 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1627 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1628 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1629 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1630 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1631 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])
1632 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1633 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1634 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1635 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])
1636 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1641 def testGaussWriteOnPfl1(self):
1642 fname="Pyfile49.med"
1643 fname2="Pyfile50.med"
1644 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1645 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1646 mQ8.allocateCells(1)
1647 mQ8.insertNextCell(NORM_QUAD8,range(8))
1648 mQ8.finishInsertingCells()
1649 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1650 mQ4.allocateCells(1)
1651 mQ4.insertNextCell(NORM_QUAD4,range(4))
1652 mQ4.finishInsertingCells()
1653 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1654 mT3.allocateCells(1)
1655 mT3.insertNextCell(NORM_TRI3,range(3))
1656 mT3.finishInsertingCells()
1658 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.]]
1659 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1660 ms[:]=(elt.deepCopy() for elt in ms)
1661 for m,t in zip(ms,tr):
1662 d=m.getCoords() ; d+= t
1664 m=MEDCouplingUMesh.MergeUMeshes(ms)
1666 m2=m[:13] ; m2.setName(m.getName())
1667 ### 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.
1668 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1669 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1672 da=DataArrayDouble(34) ; da.iota(3.)
1674 f.setName("fieldCellOnPflWithoutPfl")
1675 fInvalid=f.deepCopy()
1676 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])
1677 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])
1678 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])
1679 f.checkConsistencyLight()
1680 fInvalid2=fInvalid.deepCopy()
1681 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1684 mm.setMeshAtLevel(0,m)
1687 f1ts=MEDFileField1TS.New()
1688 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1689 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1690 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1691 f1ts.setFieldProfile(f,mm,0,pfl)
1694 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1695 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1696 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1697 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1698 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1699 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1700 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1701 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1703 dataRead=MEDFileData.New(fname)
1704 mRead=dataRead.getMeshes()[0]
1705 f1tsRead=dataRead.getFields()[0][0]
1706 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1707 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1708 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1709 f2_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1710 f2_bis.checkConsistencyLight()
1711 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1713 WriteField(fname2,f,True)
1714 f2_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1715 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1716 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1717 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1718 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1719 m2=m[pfl] ; m2.setName(m.getName())
1722 da=DataArrayDouble(35) ; da.iota(3.)
1724 f.setName("fieldCellOnPflWithoutPfl2")
1725 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1726 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])
1727 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])
1728 f.checkConsistencyLight()
1731 mm.setMeshAtLevel(0,m)
1733 f1ts=MEDFileField1TS.New()
1734 f1ts.setFieldProfile(f,mm,0,pfl)
1735 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1736 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1737 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1738 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1740 dataRead=MEDFileData.New(fname)
1741 mRead=dataRead.getMeshes()[0]
1742 f1tsRead=dataRead.getFields()[0][0]
1743 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1744 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1745 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1746 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1747 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1748 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1749 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1751 WriteField(fname2,f,True)
1752 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1753 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1754 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1755 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1756 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1759 da=DataArrayDouble(60) ; da.iota(3.)
1761 f.setName("fieldCellWithoutPfl")
1762 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])
1763 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])
1764 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])
1765 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])
1766 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])
1767 f.checkConsistencyLight()
1769 mm.setMeshAtLevel(0,m)
1770 f1ts=MEDFileField1TS.New()
1771 f1ts.setFieldNoProfileSBT(f)
1772 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1773 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1774 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1775 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1776 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1780 dataRead=MEDFileData.New(fname)
1781 mRead=dataRead.getMeshes()[0]
1782 f1tsRead=dataRead.getFields()[0][0]
1783 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1784 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1785 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1786 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1787 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1788 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1790 WriteField(fname2,f,True)
1791 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1792 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1793 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1796 # Testing profile on nodes when the profile is identity but not on all nodes.
1797 def testMEDFieldPflOnNode1(self):
1798 fname="Pyfile51.med"
1799 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)
1800 m0=MEDCouplingUMesh("Mesh",2)
1802 m0.insertNextCell(NORM_TRI3,[1,4,2])
1803 m0.insertNextCell(NORM_TRI3,[4,5,2])
1804 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1805 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1806 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1807 m0.finishInsertingCells()
1809 m1=MEDCouplingUMesh(m0.getName(),1)
1811 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1813 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1815 m1.finishInsertingCells()
1819 m.setMeshAtLevel(0,m0)
1820 m.setMeshAtLevel(-1,m1)
1822 dt=3 ; it=2 ; tim=4.5
1823 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1824 fieldNode0.setName("fieldNode0")
1825 fieldNode0.setTime(tim,dt,it)
1826 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1827 arr=DataArrayDouble([10,11,12,13,14])
1828 fieldNode0.setArray(arr)
1829 f0=MEDFileField1TS()
1830 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1831 m.write(fname,2) ; f0.write(fname,0)
1832 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1833 fieldNode1.setName("fieldNode1")
1834 fieldNode1.setTime(tim,dt,it)
1835 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1836 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1837 fieldNode1.setArray(arr1)
1838 f1=MEDFileField1TS()
1839 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1842 ## Reading from file
1843 m=MEDFileMesh.New(fname)
1844 m0=m.getMeshAtLevel(0)
1845 m00=m0.deepCopy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1846 fieldNode0.setMesh(m00)
1847 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1848 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1849 ff0_1.checkConsistencyLight()
1850 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1851 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1852 ff0_2.checkConsistencyLight()
1853 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1854 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1855 ff0_3.checkConsistencyLight()
1856 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1857 ff0_4=ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1858 ff0_4.checkConsistencyLight()
1859 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1860 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1861 m1=m.getMeshAtLevel(-1)
1862 m10=m1.deepCopy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1863 fieldNode1.setMesh(m10)
1864 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1865 ff1_1.checkConsistencyLight()
1866 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1867 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1868 ff1_2.checkConsistencyLight()
1869 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1870 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1871 ff1_3.checkConsistencyLight()
1872 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1873 ff1_4=ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1874 ff1_4.checkConsistencyLight()
1875 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1876 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]
1877 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]
1878 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]
1879 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1880 arr_r.setName(fieldNode1.getArray().getName())
1881 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1882 pfl1_r.setName(pfl1.getName())
1883 self.assertTrue(pfl1_r.isEqual(pfl1))
1886 # Testing profile on nodes when the profile is identity but not on all nodes.
1887 def testMEDFieldPflOnCell1(self):
1888 fname="Pyfile52.med"
1889 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)
1890 m0=MEDCouplingUMesh("Mesh",2)
1892 m0.insertNextCell(NORM_TRI3,[1,4,2])
1893 m0.insertNextCell(NORM_TRI3,[4,5,2])
1894 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1895 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1896 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1897 m0.finishInsertingCells()
1899 m1=MEDCouplingUMesh(m0.getName(),1)
1901 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1903 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1905 m1.finishInsertingCells()
1909 m.setMeshAtLevel(0,m0)
1910 m.setMeshAtLevel(-1,m1)
1912 dt=3 ; it=2 ; tim=4.5
1913 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1914 fieldCell0.setName("fieldCell0")
1915 fieldCell0.setTime(tim,dt,it)
1916 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1917 arr=DataArrayDouble([10,11,12])
1918 fieldCell0.setArray(arr)
1919 f0=MEDFileField1TS()
1920 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1921 m.write(fname,2) ; f0.write(fname,0)
1922 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1923 fieldCell1.setName("fieldCell1")
1924 fieldCell1.setTime(tim,dt,it)
1925 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1926 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1927 fieldCell1.setArray(arr1)
1928 f1=MEDFileField1TS()
1929 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1932 ## Reading from file
1933 m=MEDFileMesh.New(fname)
1934 m0=m.getMeshAtLevel(0)
1935 m00=m0.deepCopy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1936 fieldCell0.setMesh(m00)
1937 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1938 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1939 ff0_1.checkConsistencyLight()
1940 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1941 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1942 ff0_2.checkConsistencyLight()
1943 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1944 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1945 ff0_3.checkConsistencyLight()
1946 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1947 ff0_4=ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1948 ff0_4.checkConsistencyLight()
1949 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1950 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1951 m1=m.getMeshAtLevel(-1)
1952 m10=m1.deepCopy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1953 fieldCell1.setMesh(m10)
1954 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1955 ff1_1.checkConsistencyLight()
1956 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1957 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1958 ff1_2.checkConsistencyLight()
1959 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1960 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1961 ff1_3.checkConsistencyLight()
1962 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1963 ff1_4=ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1964 ff1_4.checkConsistencyLight()
1965 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1966 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]
1967 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]
1968 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]
1969 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1970 arr_r.setName(fieldCell1.getArray().getName())
1971 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1972 pfl1_r.setName(pfl1.getName())
1973 self.assertTrue(pfl1_r.isEqual(pfl1))
1976 def testMEDFileUMeshZipCoords1(self):
1978 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1979 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])
1980 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1981 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1982 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1983 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1984 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1985 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1986 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1987 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1988 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1989 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1991 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1992 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1993 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1994 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1995 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1996 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1997 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1998 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1999 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
2002 def testMEDUMeshAddNodeGroup1(self):
2003 fname="Pyfile53.med"
2005 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2006 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])
2007 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2008 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2009 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2010 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2011 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2014 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
2015 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
2016 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2017 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2018 mm.setFamilyId("MyFam",2)
2019 mm.setFamilyId("MyOtherFam",3)
2020 mm.setFamilyId("MyOther-1",-1)
2021 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2022 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2024 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2025 mm.addNodeGroup(daTest)
2026 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2027 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2028 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2029 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2031 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2032 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2033 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2034 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2035 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2036 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2038 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
2039 da=DataArrayInt([3,12]) ; da.setName("grp0")
2040 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2042 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2044 mm=MEDFileMesh.New(fname)
2045 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2046 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2047 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2048 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2050 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2051 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2052 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2053 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2054 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2055 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2057 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
2058 da=DataArrayInt([3,12]) ; da.setName("grp0")
2059 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2061 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2064 def testMEDUMeshAddGroup1(self):
2065 fname="Pyfile54.med"
2067 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2068 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
2070 m0.insertNextCell(NORM_TRI3,[1,2,1])
2073 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
2076 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
2078 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2079 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2080 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2081 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2082 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2085 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
2086 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
2087 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2088 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2089 mm.setFamilyId("MyFam",2)
2090 mm.setFamilyId("MyOtherFam",3)
2091 mm.setFamilyId("MyOther-1",-1)
2092 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2093 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2095 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2096 mm.addGroup(0,daTest)
2097 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2098 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2099 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2100 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2102 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2103 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2104 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2105 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2106 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2107 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2109 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
2110 da=DataArrayInt([3,12]) ; da.setName("grp0")
2111 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2113 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2115 mm=MEDFileMesh.New(fname)
2116 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2117 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2118 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2119 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2121 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2122 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2123 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2124 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2125 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2126 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2128 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
2129 da=DataArrayInt([3,12]) ; da.setName("grp0")
2130 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2132 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2135 def testHeapMem1(self):
2136 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2138 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2140 m=MEDCouplingCMesh()
2141 arr=DataArrayDouble(10,1) ; arr.iota(0)
2142 m.setCoords(arr,arr)
2143 m=m.buildUnstructured()
2145 f=m.getMeasureField(False)
2146 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
2147 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
2150 mm.setMeshAtLevel(0,m)
2151 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,4225+100+10*strMulFac))
2152 ff=MEDFileField1TS()
2153 ff.setFieldNoProfileSBT(f)
2154 self.assertIn(ff.getHeapMemorySize(),xrange(771-40,871+21+(4+1)*strMulFac))
2156 fff=MEDFileFieldMultiTS()
2157 fff.appendFieldNoProfileSBT(f)
2158 self.assertIn(fff.getHeapMemorySize(),xrange(815-50,915+30+(6+2)*strMulFac))
2160 fff.appendFieldNoProfileSBT(f)
2161 self.assertIn(fff.getHeapMemorySize(),xrange(1594-90,1794+50+(10+1)*strMulFac))
2162 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(771-40,871+20+(4+1)*strMulFac))
2165 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2166 fff.appendFieldProfile(f2,mm,0,pfl)
2167 self.assertIn(fff.getHeapMemorySize(),xrange(2348-130,2608+100+(10+2)*strMulFac))
2168 self.assertIn(fff.getProfile("pfl").getHeapMemorySize(),xrange(204-10,204+10+2*strMulFac))
2169 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(738-50,838+30+4*strMulFac))
2172 def testCurveLinearMesh1(self):
2173 fname="Pyfile55.med"
2174 mesh=MEDCouplingCurveLinearMesh();
2175 mesh.setTime(2.3,4,5);
2176 mesh.setTimeUnit("us");
2177 mesh.setName("Example of Cuve linear mesh");
2178 mesh.setDescription("buildCLMesh");
2179 a1=DataArrayDouble(3*20,1);
2180 a1.iota(7.) ; a1.rearrange(3);
2182 mesh.setNodeGridStructure([4,5]);
2183 mesh.checkConsistencyLight();
2185 m=MEDFileCurveLinearMesh()
2187 d=DataArrayInt(20) ; d.iota(4)
2188 m.setFamilyFieldArr(1,d)
2189 d3=DataArrayInt(20) ; d3.iota(400)
2190 m.setRenumFieldArr(1,d3)
2191 d2=DataArrayInt(12) ; d2.iota(40)
2192 m.setFamilyFieldArr(0,d2)
2193 d4=DataArrayInt(21) ; d4.iota(4000)
2194 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2196 m.setRenumFieldArr(1,d4)
2199 m1=MEDFileCurveLinearMesh(fname)
2201 self.assertTrue(mm.isEqual(mesh,1e-12))
2202 self.assertEqual(mm.getSpaceDimension(),3)
2203 self.assertEqual(mm.getSpaceDimensionOnNodeStruct(),2)
2205 m1=MEDFileMesh.New(fname)
2206 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2207 self.assertTrue(isinstance(m1.getUnivName(),str))
2208 self.assertTrue(len(m1.getUnivName())!=0)
2209 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2212 def testParameters1(self):
2213 fname="Pyfile56.med"
2214 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2215 mm=MEDFileCMesh() ; mm.setMesh(m)
2216 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2218 p=MEDFileParameters()
2219 data.setParams(p) ; data.setMeshes(ms)
2220 pts=MEDFileParameterMultiTS()
2221 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2222 pts.appendValue(1,2,3.4,567.89)
2223 pts.appendValue(2,3,5.6,999.123)
2224 pts2=pts.deepCopy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2225 p.pushParam(pts) ; p.pushParam(pts2)
2227 p2=MEDFileParameters(fname)
2228 self.assertTrue(p.isEqual(p2,1e-14)[0])
2229 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2231 pts4=pts2.deepCopy()
2232 pts3=pts2.deepCopy()
2233 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2234 pts2.eraseTimeStepIds([0])
2235 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2237 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2238 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2239 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2240 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2241 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2243 self.assertTrue(p.isEqual(p2,1e-14)[0])
2244 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2245 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2246 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2247 self.assertEqual(p.getParamsNames(),('A','B'))
2248 ptsr=MEDFileParameterMultiTS(fname,"B")
2249 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2250 ptsr=MEDFileParameterMultiTS(fname)
2251 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2252 p1tsr=MEDFileParameterDouble1TS(fname)
2253 self.assertEqual(p1tsr.getName(),"A")
2254 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2255 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2256 self.assertEqual(p1tsr.getName(),"B")
2257 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2258 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2259 self.assertEqual(p1tsr.getName(),"B")
2260 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2261 data2=MEDFileData(fname)
2262 self.assertEqual(2,data2.getNumberOfParams())
2263 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2266 def testNamesOnCellAndNodesInMeshes1(self):
2267 fname="Pyfile58.med"
2268 fname2="Pyfile59.med"
2269 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2270 m1=m.buildDescendingConnectivity()[0]
2271 m1.sortCellsInMEDFileFrmt()
2274 mm.setMeshAtLevel(0,m)
2275 mm.setMeshAtLevel(-1,m1)
2276 namesCellL0=DataArrayAsciiChar(6,16)
2277 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2278 mm.setNameFieldAtLevel(0,namesCellL0)
2279 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.subArray(2)])
2280 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2281 mm.setNameFieldAtLevel(-1,namesCellL1)
2282 namesNodes=namesCellL1.subArray(4,16)
2283 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2284 mm.setNameFieldAtLevel(1,namesNodes)
2287 mmr=MEDFileMesh.New(fname)
2288 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2289 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2290 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2291 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2292 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2293 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2294 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2295 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2297 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2298 # remove names on nodes
2299 mmCpy.setNameFieldAtLevel(1,None)
2300 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2301 mm.setNameFieldAtLevel(1,None)
2302 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2303 mm.setNameFieldAtLevel(-1,None)
2305 mmr=MEDFileMesh.New(fname)
2306 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2307 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2308 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2310 c=MEDCouplingCMesh()
2311 arr=DataArrayDouble([0.,1.1,2.3])
2312 c.setCoords(arr,arr)
2316 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2317 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2319 ccr=MEDFileMesh.New(fname2)
2320 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2321 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2322 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2323 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2324 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2325 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2326 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2328 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2331 def testToExportInExamples1(self):
2332 m=MEDCouplingCMesh()
2333 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2334 m.setCoords(arr,arr)
2335 m=m.buildUnstructured() ; m.setName("mesh")
2336 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2337 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2340 mm.setMeshAtLevel(0,m)
2341 mm.setMeshAtLevel(-1,m2)
2342 mm.setGroupsAtLevel(0,[grp1,grp2])
2343 mm.write("example.med",2)
2345 m0=mm.getMeshAtLevel(0)
2346 m1=mm.getMeshAtLevel(-1)
2347 grp1=mm.getGroupArr(0,"grp1")
2348 grp2=mm.getGroupArr(0,"grp2")
2350 whichGrp=DataArrayInt(m0.getNumberOfCells())
2351 whichGrp.fillWithValue(-1)
2352 for grpId,grp in enumerate(grps):
2355 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2356 e,f=a.areCellsIncludedIn(m1,2)
2358 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2359 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2360 c2.transformWithIndArr(whichGrp)
2361 splitOfM1=len(grps)*[None]
2362 for grpId,grp in enumerate(grps):
2363 tmp=c2.findIdsEqual(grpId)
2364 splitOfM1[grpId]=tmp
2366 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2367 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2370 def testBugCorrection1(self):
2373 self.assertEqual(fs[0],None)
2374 self.assertEqual(3,len(fs))
2377 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2378 f1Name="Pyfile60.med"
2379 f2Name="Pyfile61.med"
2380 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2382 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2384 # reading and compare
2385 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2386 for mn in d1.getMeshes().getMeshesNames():
2387 m1=d1.getMeshes()[mn]
2388 m2=d2.getMeshes()[mn]
2389 for lev in m1.getNonEmptyLevels():
2390 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2391 for grpName in grpsNames:
2392 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2396 for fieldn in d1.getFields().getFieldsNames():
2397 f1=d1.getFields()[fieldn]
2398 f2=d2.getFields()[fieldn]
2399 for it,order,tim in f1.getTimeSteps():
2402 if len(f1t.getPflsReallyUsed())!=0:
2404 for lev in f1t.getNonEmptyLevels()[1]:
2405 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2406 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2407 self.assertTrue(pfl1.isEqual(pfl2))
2408 self.assertTrue(arr1.isEqual(arr2,1e-10))
2413 for lev in f1t.getNonEmptyLevels()[1]:
2414 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2415 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2416 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2423 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2424 m=MEDCouplingCMesh()
2425 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2426 m.setCoords(arr,arr,arr)
2427 m=m.buildUnstructured()
2428 m2=m.buildDescendingConnectivity()[0]
2430 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2431 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2432 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2433 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2434 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2435 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2437 mm.setMeshAtLevel(0,m)
2438 mm.setGroupsAtLevel(0,[g1,g2])
2439 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2440 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2441 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2442 mm.normalizeFamIdsMEDFile()
2443 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2444 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2445 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2446 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2447 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2448 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2449 for g in mm.getGroupsOnSpecifiedLev(0):
2450 for f in mm.getFamiliesIdsOnGroup(g):
2451 self.assertTrue(f<0)
2456 mm.setMeshAtLevel(0,m)
2457 mm.setMeshAtLevel(-1,m2)
2458 mm.setGroupsAtLevel(0,[g1,g2])
2459 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2460 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2461 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2462 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2463 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2464 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2465 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2466 mm.normalizeFamIdsMEDFile()
2467 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2468 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2469 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2470 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2471 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2472 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2473 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2474 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2475 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2476 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2477 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2478 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2480 for g in mm.getGroupsOnSpecifiedLev(lev):
2481 for f in mm.getFamiliesIdsOnGroup(g):
2482 self.assertTrue(f<0)
2488 mm.setMeshAtLevel(0,m)
2489 mm.setMeshAtLevel(-1,m2)
2490 mm.setGroupsAtLevel(0,[g1,g2])
2491 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2492 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2493 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2494 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2495 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2496 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2497 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2498 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2499 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2500 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2501 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2502 mm.normalizeFamIdsMEDFile()
2503 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2504 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2505 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2506 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2507 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2508 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2509 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2510 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2511 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2512 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2513 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2514 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2515 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2516 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2517 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2518 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2519 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2520 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2522 for g in mm.getGroupsOnSpecifiedLev(lev):
2523 for f in mm.getFamiliesIdsOnGroup(g):
2524 self.assertTrue(f<0)
2528 for g in mm.getGroupsOnSpecifiedLev(1):
2529 for f in mm.getFamiliesIdsOnGroup(g):
2530 self.assertTrue(f>0)
2535 def testNonRegressionMantis22212ChangeGrpName(self):
2536 fileName="Pyfile62.med"
2537 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2538 m=MEDFileUMesh.New()
2539 m.setCoords(m2.getCoords())
2540 m.setMeshAtLevel(0,m2)
2541 m.setMeshAtLevel(-1,m1)
2542 m.setMeshAtLevel(-2,m0)
2543 m.setFamilyFieldArr(0,f2)
2544 m.setFamilyFieldArr(-1,f1)
2545 m.setFamilyFieldArr(-2,f0)
2546 m.setFamilyFieldArr(1,p)
2548 for i in xrange(nbOfFams):
2549 m.addFamily(fns[i],fids[i])
2552 for i in xrange(nbOfGrps):
2553 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2555 m.setName(m2.getName())
2556 m.setDescription(m2.getDescription())
2559 mm0=MEDFileMesh.New(fileName)
2560 mm1=MEDFileMesh.New(fileName)
2561 groupNamesIni=GetMeshGroupsNames(fileName,"ma")
2562 for name in groupNamesIni:
2563 mm1.changeGroupName(name,name+'N')
2565 mm1.write(fileName,2)
2568 mm2=MEDFileMesh.New(fileName)
2569 for name in groupNamesIni:
2570 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2571 arr0=mm0.getGroupArr(lev,name)
2572 arr2=mm2.getGroupArr(lev,name+'N')
2573 arr0.setName(name+'N')
2574 self.assertTrue(arr0.isEqual(arr2))
2579 def testInt32InMEDFileFieldStar1(self):
2580 fname="Pyfile63.med"
2581 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2582 f1=f1.convertToIntField()
2584 mm1=MEDFileUMesh.New()
2585 mm1.setCoords(m1.getCoords())
2586 mm1.setMeshAtLevel(0,m1)
2587 mm1.setName(m1.getName())
2589 ff1=MEDFileIntField1TS()
2590 ff1.setFieldNoProfileSBT(f1)
2591 a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2592 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2593 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2595 ff2=MEDFileAnyTypeField1TS.New(fname)
2596 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2597 self.assertEqual(ff2.getTime(),[0,1,2.0])
2598 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2599 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2600 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2601 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2603 c=ff2.getUndergroundDataArray() ; c*=2
2604 ff2.write(fname,0) # 2 time steps in
2605 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2606 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2607 self.assertEqual(len(ffs1),2)
2608 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2609 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2610 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2611 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
2612 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2613 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2614 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2615 self.assertTrue(a.getArray().isEqual(2*f1.getArray()))
2616 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
2617 self.assertTrue(a.isEqual(f1,1e-12,1e-12)) ; f1.getArray()[:]/=2
2618 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2620 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2623 self.assertTrue(bc.isEqual(3*f1.getArray()))
2624 nf1=MEDCouplingFieldInt(ON_NODES)
2625 nf1.setTime(9.,10,-1)
2626 nf1.setMesh(f1.getMesh())
2627 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2628 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
2629 nff1=MEDFileIntField1TS.New()
2630 nff1.setFieldNoProfileSBT(nf1)
2631 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2632 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2635 nf2=MEDCouplingFieldInt(ON_NODES)
2636 nf2.setTime(19.,20,-11)
2637 nf2.setMesh(f1.getMesh())
2638 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2639 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
2640 nff2=MEDFileIntField1TS.New()
2641 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2642 nff2.setFieldProfile(nf2,mm1,0,npfl)
2643 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2644 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2645 self.assertTrue(b.isEqual(npfl))
2646 self.assertTrue(a.isEqual(narr2))
2648 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2649 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2650 self.assertTrue(b.isEqual(npfl))
2651 self.assertTrue(a.isEqual(narr2))
2653 nf3=MEDCouplingFieldDouble(ON_NODES)
2654 nf3.setName("VectorFieldOnNodesDouble")
2655 nf3.setTime(29.,30,-21)
2656 nf3.setMesh(f1.getMesh())
2657 nf3.setArray(f1.getMesh().getCoords())
2658 nff3=MEDFileField1TS.New()
2659 nff3.setFieldNoProfileSBT(nf3)
2661 fs=MEDFileFields(fname)
2662 self.assertEqual(len(fs),4)
2663 ffs=[it for it in fs]
2664 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2665 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2666 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2667 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2669 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray()))
2670 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray()))
2671 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2672 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2673 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2675 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2676 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2677 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2678 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2679 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2680 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2681 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2682 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2684 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2685 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2686 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2687 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2690 def testMEDFileFields1(self):
2691 fname="Pyfile64.med"
2692 f1=MEDCouplingFieldDouble(ON_NODES)
2693 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2694 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2695 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2697 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2699 f1.setName("Field1")
2700 ff1=MEDFileField1TS.New()
2701 ff1.setFieldNoProfileSBT(f1)
2702 self.assertEqual(ff1.getDtUnit(),"us")
2704 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2705 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2707 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2708 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2709 ff1s.setName("Field2")
2711 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2712 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2713 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2714 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2715 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2716 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2717 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2718 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2721 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2722 def testMEDFileFields2(self):
2723 fname="Pyfile65.med"
2724 # to check that all is initialize
2725 MEDFileField1TS().__str__()
2726 MEDFileFieldMultiTS().__str__()
2727 # building a mesh containing 4 tri3 + 5 quad4
2728 tri=MEDCouplingUMesh("tri",2)
2729 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2730 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2731 tris=[tri.deepCopy() for i in xrange(4)]
2732 for i,elt in enumerate(tris): elt.translate([i,0])
2733 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2734 quad=MEDCouplingUMesh("quad",2)
2735 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2736 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2737 quads=[quad.deepCopy() for i in xrange(5)]
2738 for i,elt in enumerate(quads): elt.translate([5+i,0])
2739 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2740 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2741 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2743 fmts0_0=MEDFileFieldMultiTS()
2744 fmts0_1=MEDFileFieldMultiTS()
2746 for i in xrange(10):
2747 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2748 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2749 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2750 f.setTime(float(i+1)+0.1,i+1,-i-1)
2751 fmts0_0.appendFieldNoProfileSBT(f)
2752 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2753 self.assertEqual(fmts0_1.getName(),name1)
2754 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2755 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2757 # components names have been modified to generate errors
2758 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2759 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2760 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2761 f1ts.setInfo(['aa [bb]','eee [dd]'])
2762 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2764 # add a mismatch of nb of compos
2766 fmts0_2=fmts0_0.deepCopy()
2767 fmts0_3=fmts0_0.deepCopy()
2768 fmts0_4=fmts0_0.deepCopy()
2769 fmts0_5=fmts0_0.shallowCpy()
2770 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)
2772 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2773 del fmts0_3[[1.1,(6,-6),9]]
2774 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2775 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2776 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2777 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2778 fmts0_7=fmts0_4[::-3]
2779 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2780 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2783 fs0.pushField(fmts0_0)
2784 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2785 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2786 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2787 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2789 fs0=MEDFileFields(fname)
2790 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2791 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2792 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2793 del fs1[["2ndField",3]]
2794 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2795 fs2=fs0[[0,"4thField"]]
2796 self.assertTrue(isinstance(fs2,MEDFileFields))
2797 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2799 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2802 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2803 def testMEDFileFields3(self):
2804 fname="Pyfile66.med"
2805 # building a mesh containing 4 tri3 + 5 quad4
2806 tri=MEDCouplingUMesh("tri",2)
2807 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2808 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2809 tris=[tri.deepCopy() for i in xrange(4)]
2810 for i,elt in enumerate(tris): elt.translate([i,0])
2811 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2812 quad=MEDCouplingUMesh("quad",2)
2813 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2814 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2815 quads=[quad.deepCopy() for i in xrange(5)]
2816 for i,elt in enumerate(quads): elt.translate([5+i,0])
2817 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2818 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2819 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2821 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2823 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2824 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2825 fmts0_0=MEDFileFieldMultiTS()
2826 fmts0_1=MEDFileFieldMultiTS()
2828 for i in xrange(10):
2829 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2830 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2831 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2832 f.setTime(float(i+1)+0.1,i+1,-i-1)
2833 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2834 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2835 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2836 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2839 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2840 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2841 fmts0_0.zipPflsNames()
2842 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2843 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2844 fmts0_2=fmts0_0.deepCopy()
2845 fmts0_3=fmts0_0.deepCopy()
2846 fmts0_4=fmts0_0.deepCopy()
2848 fs0.pushField(fmts0_0)
2849 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2850 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2851 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2852 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2854 fmts0_5=MEDFileFieldMultiTS()
2856 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2857 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2858 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2859 f.setTime(float(i+1)+0.1,i+1,-i-1)
2860 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2862 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2863 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2864 fs0.checkGlobsCoherency()
2868 def testSplitComponents1(self):
2869 fname="Pyfile67.med"
2870 # building a mesh containing 4 tri3 + 5 quad4
2871 tri=MEDCouplingUMesh("tri",2)
2872 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2873 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2874 tris=[tri.deepCopy() for i in xrange(4)]
2875 for i,elt in enumerate(tris): elt.translate([i,0])
2876 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2877 quad=MEDCouplingUMesh("quad",2)
2878 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2879 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2880 quads=[quad.deepCopy() for i in xrange(5)]
2881 for i,elt in enumerate(quads): elt.translate([5+i,0])
2882 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2883 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2884 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2886 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2888 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2889 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2891 fmts0_1=MEDFileFieldMultiTS()
2893 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2894 for i in xrange(10):
2896 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2897 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2898 f.setTime(float(i+1)+0.1,i+1,-i-1)
2899 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2900 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2902 fs.pushField(fmts0_1)
2903 self.assertEqual(1,len(fs))
2904 l=fmts0_1.splitComponents()
2905 self.assertEqual(3,len(l))
2906 for elt in l: self.assertEqual(10,len(elt))
2907 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2909 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2912 self.assertEqual(4,len(fs))
2913 for elt in fs: self.assertEqual(10,len(elt))
2914 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2915 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2917 fs.write(fname,0) ; del fs
2919 fs1=MEDFileFields(fname)
2920 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2921 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2922 self.assertEqual(4,len(fs1))
2923 for i in xrange(10):
2924 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2925 f1ts=fs1[fieldName][i]
2926 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2927 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2928 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2930 f1ts=fs1["1stField"][i]
2931 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2932 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2933 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2937 def testMEDFileFieldConvertTo1(self):
2938 fname="Pyfile68.med"
2939 # building a mesh containing 4 tri3 + 5 quad4
2940 tri=MEDCouplingUMesh("tri",2)
2941 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2942 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2943 tris=[tri.deepCopy() for i in xrange(4)]
2944 for i,elt in enumerate(tris): elt.translate([i,0])
2945 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2946 quad=MEDCouplingUMesh("quad",2)
2947 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2948 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2949 quads=[quad.deepCopy() for i in xrange(5)]
2950 for i,elt in enumerate(quads): elt.translate([5+i,0])
2951 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2952 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2953 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2954 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2956 ff0=MEDFileField1TS()
2957 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")
2958 f0.checkConsistencyLight()
2959 ff0.setFieldNoProfileSBT(f0)
2961 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2962 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2964 ff0i=ff0.convertToInt()
2965 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2966 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2968 ff1=ff0i.convertToDouble()
2969 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2970 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2972 del arr,f0,ff0,ff1,ff0i,fspExp
2973 ff0=MEDFileField1TS()
2974 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")
2975 f0.checkConsistencyLight()
2976 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2977 ff0.setFieldProfile(f0,mm,0,pfl)
2978 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2979 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2981 ff0i=ff0.convertToInt()
2982 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2983 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2984 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2986 ff1=ff0i.convertToDouble()
2987 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2988 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2989 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2991 ff0=MEDFileFieldMultiTS()
2992 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)
2993 f0.checkConsistencyLight()
2994 ff0.appendFieldProfile(f0,mm,0,pfl)
2995 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)
2996 f0.checkConsistencyLight()
2997 ff0.appendFieldProfile(f0,mm,0,pfl)
2998 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)
2999 f0.checkConsistencyLight()
3000 ff0.appendFieldProfile(f0,mm,0,pfl)
3001 ff1=ff0.convertToInt()
3002 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3003 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3004 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3005 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3006 arr=ff1.getUndergroundDataArray(dt,it)
3007 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3009 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3014 ff1=ff1.convertToDouble()
3015 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
3016 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3017 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3018 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3019 arr=ff1.getUndergroundDataArray(dt,it)
3020 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
3022 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3024 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
3025 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3026 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3027 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3028 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
3029 arr=ff1.getUndergroundDataArray(dt,it)
3030 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3032 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
3035 def testMEDFileFieldPartialLoading(self):
3036 fname="Pyfile69.med"
3038 a=DataArrayInt() ; aa=a.getHeapMemorySize()
3040 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
3041 # building a mesh containing 30 tri3 + 40 quad4
3042 tri=MEDCouplingUMesh("tri",2)
3043 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3044 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3045 tris=[tri.deepCopy() for i in xrange(30)]
3046 for i,elt in enumerate(tris): elt.translate([i,0])
3047 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3048 quad=MEDCouplingUMesh("quad",2)
3049 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3050 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3051 quads=[quad.deepCopy() for i in xrange(40)]
3052 for i,elt in enumerate(quads): elt.translate([40+i,0])
3053 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3054 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3055 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3056 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3058 ff0=MEDFileField1TS()
3059 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")
3060 f0.checkConsistencyLight()
3061 ff0.setFieldNoProfileSBT(f0)
3064 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
3065 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3067 ff0=MEDFileField1TS()
3068 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")
3069 f0.checkConsistencyLight()
3070 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
3071 ff0.setFieldProfile(f0,mm,0,pfl)
3072 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
3073 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3076 ff0=MEDFileField1TS(fname,False)
3077 self.assertEqual(ff0.getName(),"FieldCell")
3078 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
3079 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
3080 heap_memory_ref=ff0.getHeapMemorySize()
3081 self.assertIn(heap_memory_ref,xrange(182,481+2*strMulFac))
3083 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
3084 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3085 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
3087 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
3088 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
3089 heap_memory_ref=ff0.getHeapMemorySize()
3090 self.assertIn(heap_memory_ref,xrange(350,536+6*strMulFac))
3092 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
3093 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3094 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3096 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3097 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3098 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3099 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3101 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3102 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3103 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3104 ff0.loadArraysIfNecessary() ##
3105 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
3106 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3107 heap_memory_ref=ff0.getHeapMemorySize()
3108 self.assertIn(heap_memory_ref,xrange(1100,1400+2*strMulFac))
3110 hmd=ff0.getHeapMemorySize()-heap_memory_ref
3111 self.assertEqual(hmd,-800) # -50*8*2
3113 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
3115 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
3116 heap_memory_ref=ff0.getHeapMemorySize()
3117 self.assertIn(heap_memory_ref,xrange(299,536+6*strMulFac))
3119 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3120 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3122 fieldName="FieldCellMultiTS"
3123 ff0=MEDFileFieldMultiTS()
3124 for t in xrange(20):
3125 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)
3126 f0.setTime(float(t)+0.1,t,100+t)
3127 f0.checkConsistencyLight()
3128 ff0.appendFieldNoProfileSBT(f0)
3132 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
3133 heap_memory_ref=ff0.getHeapMemorySize()
3134 self.assertIn(heap_memory_ref,xrange(5536,10242+(80+26+1)*strMulFac))
3136 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
3139 ffs=MEDFileFields(fname,False)
3140 heap_memory_ref=ffs.getHeapMemorySize()
3141 self.assertIn(heap_memory_ref,xrange(5335,11507+(80+50+len(ffs))*strMulFac))
3143 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
3146 def testMEDFileMeshReadSelector1(self):
3147 mrs=MEDFileMeshReadSelector()
3148 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3149 mrs.__str__() ; mrs.__repr__()
3151 mrs=MEDFileMeshReadSelector(0)
3152 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())
3153 mrs=MEDFileMeshReadSelector(1)
3154 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3155 mrs=MEDFileMeshReadSelector(2)
3156 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3157 mrs=MEDFileMeshReadSelector(3)
3158 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3159 mrs=MEDFileMeshReadSelector(4)
3160 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3161 mrs=MEDFileMeshReadSelector(5)
3162 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3163 mrs=MEDFileMeshReadSelector(6)
3164 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3165 mrs=MEDFileMeshReadSelector(7)
3166 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3167 mrs=MEDFileMeshReadSelector(8)
3168 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3169 mrs=MEDFileMeshReadSelector(9)
3170 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3171 mrs=MEDFileMeshReadSelector(10)
3172 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3173 mrs=MEDFileMeshReadSelector(11)
3174 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3175 mrs=MEDFileMeshReadSelector(12)
3176 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3177 mrs=MEDFileMeshReadSelector(13)
3178 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3179 mrs=MEDFileMeshReadSelector(14)
3180 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3181 mrs=MEDFileMeshReadSelector(15)
3182 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3183 mrs=MEDFileMeshReadSelector(16)
3184 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3185 mrs=MEDFileMeshReadSelector(17)
3186 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3187 mrs=MEDFileMeshReadSelector(18)
3188 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3189 mrs=MEDFileMeshReadSelector(19)
3190 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3191 mrs=MEDFileMeshReadSelector(20)
3192 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3193 mrs=MEDFileMeshReadSelector(21)
3194 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3195 mrs=MEDFileMeshReadSelector(22)
3196 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3197 mrs=MEDFileMeshReadSelector(23)
3198 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3199 mrs=MEDFileMeshReadSelector(24)
3200 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3201 mrs=MEDFileMeshReadSelector(25)
3202 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3203 mrs=MEDFileMeshReadSelector(26)
3204 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3205 mrs=MEDFileMeshReadSelector(27)
3206 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3207 mrs=MEDFileMeshReadSelector(28)
3208 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3209 mrs=MEDFileMeshReadSelector(29)
3210 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3211 mrs=MEDFileMeshReadSelector(30)
3212 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3213 mrs=MEDFileMeshReadSelector(31)
3214 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3215 mrs=MEDFileMeshReadSelector(32)
3216 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3217 mrs=MEDFileMeshReadSelector(33)
3218 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3219 mrs=MEDFileMeshReadSelector(34)
3220 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3221 mrs=MEDFileMeshReadSelector(35)
3222 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3223 mrs=MEDFileMeshReadSelector(36)
3224 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3225 mrs=MEDFileMeshReadSelector(37)
3226 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3227 mrs=MEDFileMeshReadSelector(38)
3228 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3229 mrs=MEDFileMeshReadSelector(39)
3230 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3231 mrs=MEDFileMeshReadSelector(40)
3232 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3233 mrs=MEDFileMeshReadSelector(41)
3234 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3235 mrs=MEDFileMeshReadSelector(42)
3236 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3237 mrs=MEDFileMeshReadSelector(43)
3238 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3239 mrs=MEDFileMeshReadSelector(44)
3240 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3241 mrs=MEDFileMeshReadSelector(45)
3242 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3243 mrs=MEDFileMeshReadSelector(46)
3244 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3245 mrs=MEDFileMeshReadSelector(47)
3246 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3247 mrs=MEDFileMeshReadSelector(48)
3248 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3249 mrs=MEDFileMeshReadSelector(49)
3250 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3251 mrs=MEDFileMeshReadSelector(50)
3252 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3253 mrs=MEDFileMeshReadSelector(51)
3254 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3255 mrs=MEDFileMeshReadSelector(52)
3256 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3257 mrs=MEDFileMeshReadSelector(53)
3258 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3259 mrs=MEDFileMeshReadSelector(54)
3260 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3261 mrs=MEDFileMeshReadSelector(55)
3262 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3263 mrs=MEDFileMeshReadSelector(56)
3264 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3265 mrs=MEDFileMeshReadSelector(57)
3266 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3267 mrs=MEDFileMeshReadSelector(58)
3268 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3269 mrs=MEDFileMeshReadSelector(59)
3270 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3271 mrs=MEDFileMeshReadSelector(60)
3272 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3273 mrs=MEDFileMeshReadSelector(61)
3274 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3275 mrs=MEDFileMeshReadSelector(62)
3276 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3277 mrs=MEDFileMeshReadSelector(63)
3278 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3280 mrs=MEDFileMeshReadSelector(63)
3281 mrs.setCellFamilyFieldReading(False)
3282 self.assertEqual(mrs.getCode(),62)
3283 mrs.setCellFamilyFieldReading(True)
3284 self.assertEqual(mrs.getCode(),63)
3285 mrs.setNodeFamilyFieldReading(False)
3286 self.assertEqual(mrs.getCode(),61)
3287 mrs.setNodeFamilyFieldReading(True)
3288 self.assertEqual(mrs.getCode(),63)
3289 mrs.setCellNameFieldReading(False)
3290 self.assertEqual(mrs.getCode(),59)
3291 mrs.setCellNameFieldReading(True)
3292 self.assertEqual(mrs.getCode(),63)
3293 mrs.setNodeNameFieldReading(False)
3294 self.assertEqual(mrs.getCode(),55)
3295 mrs.setNodeNameFieldReading(True)
3296 self.assertEqual(mrs.getCode(),63)
3297 mrs.setCellNumFieldReading(False)
3298 self.assertEqual(mrs.getCode(),47)
3299 mrs.setCellNumFieldReading(True)
3300 self.assertEqual(mrs.getCode(),63)
3301 mrs.setNodeNumFieldReading(False)
3302 self.assertEqual(mrs.getCode(),31)
3303 mrs.setNodeNumFieldReading(True)
3304 self.assertEqual(mrs.getCode(),63)
3307 def testPartialReadOfMeshes(self):
3308 fname="Pyfile70.med"
3309 # building a mesh containing 4 tri3 + 5 quad4
3310 tri=MEDCouplingUMesh("tri",2)
3311 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3312 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3313 tris=[tri.deepCopy() for i in xrange(4)]
3314 for i,elt in enumerate(tris): elt.translate([i,0])
3315 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3316 quad=MEDCouplingUMesh("quad",2)
3317 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3318 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3319 quads=[quad.deepCopy() for i in xrange(5)]
3320 for i,elt in enumerate(quads): elt.translate([5+i,0])
3321 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3322 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3323 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3324 m1=m.buildDescendingConnectivity()[0]
3325 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3327 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3328 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3329 mm.setGroupsAtLevel(0,[grp0,grp1])
3330 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3331 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3332 mm.setGroupsAtLevel(-1,[grp2,grp3])
3333 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3334 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3335 mm.setGroupsAtLevel(1,[grp4,grp5])
3336 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3337 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3338 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3342 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3343 b4_ref_heap_mem=mm.getHeapMemorySize()
3344 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3345 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3346 ref_heap_mem=mm.getHeapMemorySize()
3347 # check the gain of memory using 1GTUMesh instead of UMesh
3348 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
3350 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3351 self.assertEqual(len(mm.getGroupsNames()),0)
3352 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3353 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3354 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3355 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3356 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3357 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3358 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3359 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3360 delta1=ref_heap_mem-mm.getHeapMemorySize()
3361 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3363 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3364 self.assertEqual(len(mm.getGroupsNames()),6)
3365 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3366 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3367 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3368 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3369 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3370 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3371 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3372 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3373 delta2=ref_heap_mem-mm.getHeapMemorySize()
3374 self.assertTrue(delta2<delta1)
3375 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3377 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3378 self.assertEqual(len(mm.getGroupsNames()),6)
3379 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3380 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3381 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3382 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3383 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3384 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3385 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3386 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3387 delta3=ref_heap_mem-mm.getHeapMemorySize()
3388 self.assertTrue(delta3<delta2)
3389 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3391 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3392 self.assertEqual(len(mm.getGroupsNames()),6)
3393 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3394 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3395 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3396 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3397 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3398 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3399 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3400 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3401 delta4=ref_heap_mem-mm.getHeapMemorySize()
3402 self.assertTrue(delta4<delta3)
3403 self.assertTrue(delta4>=32*4*2)
3405 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3406 self.assertEqual(len(mm.getGroupsNames()),6)
3407 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3408 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3409 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3410 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3411 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3412 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3413 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3414 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3415 delta5=ref_heap_mem-mm.getHeapMemorySize()
3416 self.assertTrue(delta5<delta4)
3417 self.assertEqual(delta5,0)
3420 # this test checks that setFieldProfile perform a check of the array length
3421 # compared to the profile length. This test also checks that mesh attribute of field
3422 # is not used by setFieldProfile (because across this test mesh is equal to None)
3423 def testCheckCompatibilityPfl1(self):
3424 # building a mesh containing 4 tri3 + 5 quad4
3425 tri=MEDCouplingUMesh("tri",2)
3426 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3427 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3428 tris=[tri.deepCopy() for i in xrange(4)]
3429 for i,elt in enumerate(tris): elt.translate([i,0])
3430 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3431 quad=MEDCouplingUMesh("quad",2)
3432 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3433 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3434 quads=[quad.deepCopy() for i in xrange(5)]
3435 for i,elt in enumerate(quads): elt.translate([5+i,0])
3436 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3437 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3438 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3439 m1=m.buildDescendingConnectivity()[0]
3440 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3442 f1ts=MEDFileField1TS()
3443 f=MEDCouplingFieldDouble(ON_NODES)
3444 vals=DataArrayDouble(7) ; vals.iota(1000)
3446 f.setName("anonymous") # f has no mesh it is not a bug
3447 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3448 f1ts.setFieldProfile(f,mm,0,pfl)
3450 f1ts=MEDFileField1TS()
3451 f=MEDCouplingFieldDouble(ON_NODES)
3452 vals=DataArrayDouble(8) ; vals.iota(1000)
3454 f.setName("anonymous") # f has no mesh it is not a bug
3455 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3456 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3458 f1ts=MEDFileField1TS()
3459 f=MEDCouplingFieldDouble(ON_CELLS)
3460 vals=DataArrayDouble(7) ; vals.iota(1000)
3462 f.setName("anonymous") # f has no mesh it is not a bug
3463 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3464 f1ts.setFieldProfile(f,mm,0,pfl)
3465 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3467 f1ts=MEDFileField1TS()
3468 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3469 vals=DataArrayDouble(27) ; vals.iota(1000)
3471 f.setName("anonymous") # f has no mesh it is not a bug
3472 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3474 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])
3475 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3476 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])
3478 f1ts.setFieldProfile(f,mm,0,pfl)
3479 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3480 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3481 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3482 vals=DataArrayDouble(27) ; vals.iota(1000)
3483 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3485 f1ts=MEDFileField1TS()
3486 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3487 vals=DataArrayDouble(25) ; vals.iota(1000)
3489 f.setName("anonymous") # f has no mesh it is not a bug
3490 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3491 f1ts.setFieldProfile(f,mm,0,pfl)
3492 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3493 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3495 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3496 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3498 f1ts=MEDFileField1TS()
3499 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3500 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3502 f1ts.setFieldProfile(f,mm,0,pfl)
3505 def testWRMeshWithNoCells(self):
3506 fname="Pyfile71.med"
3507 a=DataArrayDouble(4) ; a.iota()
3508 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3509 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3511 m.setMeshAtLevel(0,m00)
3512 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3513 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3517 m=MEDFileMesh.New(fname)
3518 self.assertEqual((),m.getNonEmptyLevels())
3519 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))
3520 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3521 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3524 def testWRQPolyg1(self):
3525 fname="Pyfile72.med"
3526 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3527 m.insertNextCell([0,2,1,3])
3528 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3530 ms=[m.deepCopy() for i in xrange(4)]
3531 for i,elt in enumerate(ms):
3532 elt.translate([float(i)*1.5,0.])
3534 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3535 m0.convertAllToPoly()
3537 ms=[m.deepCopy() for i in xrange(5)]
3538 for i,elt in enumerate(ms):
3539 elt.translate([float(i)*1.5,1.5])
3541 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3542 m1.convertAllToPoly()
3543 m1.convertLinearCellsToQuadratic()
3545 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3548 mm.setMeshAtLevel(0,m)
3549 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3550 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3551 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3552 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3557 mm_read=MEDFileUMesh(fname)
3558 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3559 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3560 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3561 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3563 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3565 arr0=DataArrayDouble(9) ; arr0.iota()
3566 arr1=DataArrayDouble(9) ; arr1.iota(100)
3567 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3568 f.setArray(arr) ; f.checkConsistencyLight()
3570 ff=MEDFileField1TS()
3571 ff.setFieldNoProfileSBT(f)
3574 ff_read=MEDFileField1TS(fname)
3575 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3576 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3579 def testLoadIfNecessaryOnFromScratchFields0(self):
3581 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3583 fname="Pyfile77.med"
3584 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3585 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3587 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3588 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3589 m.finishInsertingCells()
3591 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3592 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3596 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3597 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3599 f0.setName("myELNOField")
3600 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3601 f0.setArray(arrs[0])
3602 ff0.appendFieldNoProfileSBT(f0)
3605 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3606 f0.setArray(arrs[1])
3607 ff0.appendFieldNoProfileSBT(f0)
3610 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3611 f0.setArray(arrs[2])
3612 ff0.appendFieldNoProfileSBT(f0)
3615 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3616 f0.setArray(arrs[3])
3617 ff0.appendFieldNoProfileSBT(f0)
3619 for i,arr in enumerate(arrs):
3620 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3621 fs[0][i].loadArraysIfNecessary()
3622 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3624 fs.loadArraysIfNecessary()
3625 for i,arr in enumerate(arrs):
3626 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3628 fs[0].loadArraysIfNecessary()
3629 for i,arr in enumerate(arrs):
3630 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3634 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3635 """ This test is very important, because the same mechanism is used by the MEDReader to generate a field on all the mesh without any processing and memory.
3637 fname="Pyfile78.med"
3638 coords=DataArrayDouble([-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0. ],9,3)
3639 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3640 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3642 for elt in [[0,1,2,3],[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7],[5,6,7,8]]:#6
3643 m0.insertNextCell(NORM_TETRA4,elt)
3645 for elt in [[0,1,2,3,4],[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8]]:#5
3646 m0.insertNextCell(NORM_PYRA5,elt)
3648 for elt in [[0,1,2,3,4,5],[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8]]:#4
3649 m0.insertNextCell(NORM_PENTA6,elt)
3651 m0.checkConsistency()
3652 m1=MEDCouplingUMesh(); m1.setName("mesh")
3653 m1.setMeshDimension(2);
3654 m1.allocateCells(5);
3655 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3656 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3657 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3658 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3659 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3660 m1.setCoords(coords);
3661 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3663 m3.insertNextCell(NORM_POINT1,[2])
3664 m3.insertNextCell(NORM_POINT1,[3])
3665 m3.insertNextCell(NORM_POINT1,[4])
3666 m3.insertNextCell(NORM_POINT1,[5])
3669 mm.setMeshAtLevel(0,m0)
3670 mm.setMeshAtLevel(-1,m1)
3671 mm.setMeshAtLevel(-3,m3)
3673 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3674 mm=MEDFileMesh.New(fname)
3676 fmts=MEDFileFieldMultiTS()
3677 f1ts=MEDFileField1TS()
3678 for lev in mm.getNonEmptyLevels():
3679 for gt in mm.getGeoTypesAtLevel(lev):
3680 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3681 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3682 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3683 f.setArray(arr) ; f.setName("f0")
3684 f1ts.setFieldNoProfileSBT(f)
3687 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3688 for lev in [0,-1,-3]:
3689 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3691 fmts.pushBackTimeStep(f1ts)
3695 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3696 fs=MEDFileFields(fname)
3697 self.assertEqual(len(fs),1)
3698 self.assertEqual(len(fs[0]),1)
3700 self.assertEqual(f1ts.getFieldSplitedByType(),[(0,[(0,(0,4),'','')]),(3,[(0,(4,6),'','')]),(4,[(0,(6,9),'','')]),(14,[(0,(9,15),'','')]),(15,[(0,(15,20),'','')]),(16,[(0,(20,24),'','')])])
3701 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(DataArrayDouble([0,1,2,3,0,1,0,1,2,0,1,2,3,4,5,0,1,2,3,4,0,1,2,3]),1e-12))
3704 def testMEDFileUMeshSetName(self):
3705 """ This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the convertion is performed in memory and a preparation is done then.
3706 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3708 fname="Pyfile79.med"
3709 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3711 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3712 coords=DataArrayDouble([-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0. ],9,3)
3713 m0.allocateCells(5);
3714 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3715 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3716 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3717 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3718 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3719 m0.setCoords(coords);
3720 mm.setMeshAtLevel(0,m0)
3721 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3723 m2.insertNextCell(NORM_POINT1,[2])
3724 m2.insertNextCell(NORM_POINT1,[3])
3725 m2.insertNextCell(NORM_POINT1,[4])
3726 m2.insertNextCell(NORM_POINT1,[5])
3727 mm.setMeshAtLevel(-2,m2)
3728 self.assertEqual(mm.getName(),"")
3729 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3730 mm.forceComputationOfParts()
3731 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3733 self.assertEqual(mm.getName(),"abc")
3734 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3735 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3736 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3737 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
3740 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
3741 fileName="Pyfile80.med"
3742 m=MEDCouplingCMesh() ; m.setName("cmesh")
3743 arr=DataArrayDouble(6) ; arr.iota()
3744 m.setCoords(arr,arr)
3745 nbCells=m.getNumberOfCells()
3746 self.assertEqual(25,nbCells)
3747 f=MEDCouplingFieldDouble(ON_CELLS)
3748 f.setName("FieldOnCell") ; f.setMesh(m)
3749 arr=DataArrayDouble(nbCells) ; arr.iota()
3753 fmts=MEDFileFieldMultiTS()
3755 for i in xrange(nbCells):
3756 t=(float(i)+0.1,i+1,-i-2)
3758 arr2=DataArrayDouble(nbCells)
3759 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
3762 f1ts=MEDFileField1TS()
3763 f1ts.setFieldNoProfileSBT(f)
3764 fmts.pushBackTimeStep(f1ts)
3766 fmts.unloadArraysWithoutDataLoss()
3767 self.assertTrue(fmts[0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3768 fs=MEDFileFields() ; fs.pushField(fmts)
3769 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3770 fs.unloadArraysWithoutDataLoss()
3771 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3773 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3774 f1ts.unloadArraysWithoutDataLoss()
3775 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3776 mm.write(fileName,2)
3777 fs.write(fileName,0)
3778 del m,fmts,mm,f,f1ts
3780 mm=MEDFileMesh.New(fileName)
3781 fmts=MEDFileFieldMultiTS(fileName)
3782 self.assertTrue(fmts[0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3783 fmts.unloadArraysWithoutDataLoss()
3784 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
3785 fmts.loadArraysIfNecessary()
3786 self.assertTrue(fmts[0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3788 fs=MEDFileFields(fileName)
3789 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3790 fs.unloadArraysWithoutDataLoss()
3791 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
3792 fs.loadArraysIfNecessary()
3793 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3795 f1ts=MEDFileField1TS(fileName)
3796 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3797 f1ts.unloadArraysWithoutDataLoss()
3798 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
3799 f1ts.loadArraysIfNecessary()
3800 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(DataArrayDouble([0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.]),1e-12))
3803 def testMEDFileUMeshLoadPart1(self):
3804 """ This method tests MEDFileUMesh.LoadPart that loads only a part of a specified mesh in a MED file. The part is specfied using a slice of cell ids. Only nodes on which cells lies are loaded to reduce at most the amount of
3805 memory of the returned instance.
3807 fileName="Pyfile81.med"
3808 arr=DataArrayDouble(6) ; arr.iota()
3809 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3810 m=m.buildUnstructured()
3812 m.changeSpaceDimension(3,0.)
3813 infos=["aa [b]","cc [de]","gg [klm]"]
3814 m.getCoords().setInfoOnComponents(infos)
3815 m.checkConsistency()
3817 mm.setMeshAtLevel(0,m)
3818 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
3819 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
3820 mm.setMeshAtLevel(-1,m1)
3821 renum0=DataArrayInt([3,6,7,10,11,0,2,1,9,8,5,4,12,13,14,24,23,22,21,20,19,18,17,16,15])
3822 famField0=DataArrayInt([-3,-6,-7,-10,-11,0,-2,-1,-9,-8,-5,-4,-12,-13,-14,-24,-23,-22,-21,-20,-19,-18,-17,-16,-15])
3823 namesCellL0=DataArrayAsciiChar(25,16)
3824 namesCellL0[:]=["Cell#%.3d "%(i) for i in xrange(25)]
3825 renumM1=DataArrayInt([3,4,0,2,1])
3826 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
3827 mm.setRenumFieldArr(0,renum0)
3828 mm.setFamilyFieldArr(0,famField0)
3829 mm.setNameFieldAtLevel(0,namesCellL0)
3830 mm.setRenumFieldArr(-1,renumM1)
3831 mm.setFamilyFieldArr(-1,famFieldM1)
3832 renum1=DataArrayInt([13,16,17,20,21,10,12,11,19,18,15,14,22,23,24,34,33,32,31,30,29,28,27,26,25,45,44,43,42,41,40,39,38,37,36,35])
3833 famField1=DataArrayInt([-13,-16,-17,-20,-21,-10,-12,-11,-19,-18,-15,-14,-22,-23,-24,-34,-33,-32,-31,-30,-29,-28,-27,-26,-25,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35])
3834 namesNodes=DataArrayAsciiChar(36,16)
3835 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(36)]
3836 mm.setRenumFieldArr(1,renum1)
3837 mm.setFamilyFieldArr(1,famField1)
3838 mm.setNameFieldAtLevel(1,namesNodes)
3839 mm.setFamilyId("Fam7",77)
3840 mm.setFamilyId("Fam8",88)
3841 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
3842 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
3843 mm.write(fileName,2)
3845 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
3846 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
3847 self.assertTrue(mm0.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11,7,6,12,13,8,7,13,14,9,8,14,15,10,9,15,16,11,10,16,17])))
3848 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(3,0,0),(4,0,0),(5,0,0),(0,1,0),(1,1,0),(2,1,0),(3,1,0),(4,1,0),(5,1,0),(0,2,0),(1,2,0),(2,2,0),(3,2,0),(4,2,0),(5,2,0)]) ; coo.setInfoOnComponents(infos)
3849 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
3850 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
3851 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
3852 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
3853 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3854 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3855 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3857 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
3858 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
3859 self.assertTrue(mm1.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().isEqual(DataArrayInt([1,0,6,7,2,1,7,8,3,2,8,9,4,3,9,10,6,5,11,12,7,6,12,13,8,7,13,14,9,8,14,15,10,9,15,16,12,11,17,18,13,12,18,19,14,13,19,20,15,14,20,21,16,15,21,22])))
3860 coo=DataArrayDouble([(1,2,0),(2,2,0),(3,2,0),(4,2,0),(5,2,0),(0,3,0),(1,3,0),(2,3,0),(3,3,0),(4,3,0),(5,3,0),(0,4,0),(1,4,0),(2,4,0),(3,4,0),(4,4,0),(5,4,0),(0,5,0),(1,5,0),(2,5,0),(3,5,0),(4,5,0),(5,5,0)]) ; coo.setInfoOnComponents(infos)
3861 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
3862 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
3863 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
3864 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
3865 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
3866 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
3867 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
3869 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
3870 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
3871 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
3872 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
3873 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
3874 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
3875 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
3876 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
3877 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().isEqual(DataArrayInt([2,1,7,8,3,2,8,9,4,3,9,10,5,4,10,11,7,6,12,13,8,7,13,14,9,8,14,15,10,9,15,16,11,10,16,17])))
3878 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
3879 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(3,0,0),(4,0,0),(5,0,0),(0,1,0),(1,1,0),(2,1,0),(3,1,0),(4,1,0),(5,1,0),(0,2,0),(1,2,0),(2,2,0),(3,2,0),(4,2,0),(5,2,0)]) ; coo.setInfoOnComponents(infos)
3880 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
3881 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3882 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3883 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3886 def testMEDFileFieldsLoadPart1(self):
3887 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
3889 fileName="Pyfile82.med"
3891 compos=["aa [kg]","bbb [m/s]"]
3892 arr=DataArrayDouble(6) ; arr.iota()
3893 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3894 m=m.buildUnstructured()
3896 m.changeSpaceDimension(3,0.)
3897 infos=["aa [b]","cc [de]","gg [klm]"]
3898 m.getCoords().setInfoOnComponents(infos)
3899 m.checkConsistency()
3900 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3902 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3904 arr[:,1]=range(100,125)
3906 WriteField(fileName,f,True)
3907 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3908 f.setName("FieldNode")
3909 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3910 arr[:,0]=range(200,236)
3911 arr[:,1]=range(300,336)
3913 f.checkConsistencyLight()
3914 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3917 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
3919 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3920 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
3923 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
3925 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3927 fs[0][0].loadArrays()
3928 arr=DataArrayDouble(12,2) ; arr[:,0]=range(3,15) ; arr[:,1]=range(103,115)
3929 arr.setInfoOnComponents(compos)
3930 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3931 fs[1][0].loadArrays()
3932 arr=DataArrayDouble(21,2) ; arr[:,0]=range(203,224) ; arr[:,1]=range(303,324)
3933 arr.setInfoOnComponents(compos)
3934 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3937 def testMEDFileWithoutCells1(self):
3938 fileName="Pyfile83.med"
3939 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
3940 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
3944 mm.write(fileName,2)
3946 mm=MEDFileMesh.New(fileName)
3947 self.assertEqual(mm.getName(),"mesh")
3948 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
3951 def testZipCoordsWithLoadPart1(self):
3952 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
3954 fileName="Pyfile84.med"
3956 compos=["aa [kg]","bbb [m/s]"]
3957 arr=DataArrayDouble(6) ; arr.iota()
3958 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3959 m=m.buildUnstructured()
3961 m.changeSpaceDimension(3,0.)
3962 infos=["aa [b]","cc [de]","gg [klm]"]
3963 m.getCoords().setInfoOnComponents(infos)
3964 m.checkConsistency()
3965 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3967 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3969 arr[:,1]=range(100,125)
3971 WriteField(fileName,f,True)
3972 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3973 f.setName("FieldNode")
3974 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3975 arr[:,0]=range(200,236)
3976 arr[:,1]=range(300,336)
3978 f.checkConsistencyLight()
3979 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3982 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
3984 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3985 self.assertEqual(spd.getSlice(),slice(4,6,1))
3986 spd=mm.getPartDefAtLevel(1)
3987 self.assertEqual(spd.getSlice(),slice(4,14,1))
3988 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3989 mm.zipCoords() # <- The important line is here !
3990 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3991 self.assertEqual(spd.getSlice(),slice(4,6,1))
3992 spd=mm.getPartDefAtLevel(1)
3993 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3994 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3995 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3996 fs[0][0].loadArrays()
3997 arr=DataArrayDouble([(4,104),(5,105)])
3998 arr.setInfoOnComponents(compos)
3999 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4000 fs[1][0].loadArrays()
4001 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
4002 arr.setInfoOnComponents(compos)
4003 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4006 def testMEDFileCMeshSetGroupsAtLevel(self):
4007 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
4009 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
4011 mm=MEDFileCMesh() ; mm.setMesh(m)
4012 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
4013 mm.setGroupsAtLevel(0,[grp])
4014 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
4017 def testMEDFileUMeshBuildExtrudedMesh1(self):
4018 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
4019 fileName="Pyfile85.med"
4022 meshName3DOut="Mesh3D"
4024 d1=DataArrayInt([0,4,20,24])
4025 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
4027 a=DataArrayDouble(6) ; a.iota()
4028 m=MEDCouplingCMesh() ; m.setCoords(a,a)
4029 m=m.buildUnstructured()
4030 d1c=d1.buildComplement(m.getNumberOfCells())
4031 m=m[d1c] ; m.zipCoords()
4032 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
4034 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
4035 m.setName(meshName2D)
4036 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
4037 e=d.deltaShiftIndex().findIdsEqual(1)
4040 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
4041 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
4042 mm.setGroupsAtLevel(0,[grp0])
4043 grp1=e ; grp1.setName("grp1")
4044 mm.setGroupsAtLevel(-1,[grp1])
4045 mm.write(fileName,2)
4047 a=DataArrayDouble(3) ; a.iota()
4048 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
4049 tmp.setName(meshName1D)
4050 tmp.changeSpaceDimension(3)
4051 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
4053 mm1D.setMeshAtLevel(0,tmp)
4054 mm1D.write(fileName,0)
4056 mm2D=MEDFileMesh.New(fileName,meshName2D)
4057 mm1D=MEDFileMesh.New(fileName,meshName1D)
4058 m1D=mm1D.getMeshAtLevel(0)
4059 mm3D=mm2D.buildExtrudedMesh(m1D,0)
4061 self.assertEqual(mm3D.getName(),mm2D.getName())
4062 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
4063 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
4064 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
4065 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
4066 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
4067 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
4068 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
4069 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
4070 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
4071 d=DataArrayDouble([(1.,0.,0.),(2.,0.,0.),(3.,0.,0.),(4.,0.,0.),(0.,1.,0.),(1.,1.,0.),(2.,1.,0.),(3.,1.,0.),(4.,1.,0.),(5.,1.,0.),(0.,2.,0.),(1.,2.,0.),(2.,2.,0.),(3.,2.,0.),(4.,2.,0.),(5.,2.,0.),(0.,3.,0.),(1.,3.,0.),(2.,3.,0.),(3.,3.,0.),(4.,3.,0.),(5.,3.,0.),(0.,4.,0.),(1.,4.,0.),(2.,4.,0.),(3.,4.,0.),(4.,4.,0.),(5.,4.,0.),(1.,5.,0.),(2.,5.,0.),(3.,5.,0.),(4.,5.,0.),(1.,0.,1.),(2.,0.,1.),(3.,0.,1.),(4.,0.,1.),(0.,1.,1.),(1.,1.,1.),(2.,1.,1.),(3.,1.,1.),(4.,1.,1.),(5.,1.,1.),(0.,2.,1.),(1.,2.,1.),(2.,2.,1.),(3.,2.,1.),(4.,2.,1.),(5.,2.,1.),(0.,3.,1.),(1.,3.,1.),(2.,3.,1.),(3.,3.,1.),(4.,3.,1.),(5.,3.,1.),(0.,4.,1.),(1.,4.,1.),(2.,4.,1.),(3.,4.,1.),(4.,4.,1.),(5.,4.,1.),(1.,5.,1.),(2.,5.,1.),(3.,5.,1.),(4.,5.,1.),(1.,0.,2.),(2.,0.,2.),(3.,0.,2.),(4.,0.,2.),(0.,1.,2.),(1.,1.,2.),(2.,1.,2.),(3.,1.,2.),(4.,1.,2.),(5.,1.,2.),(0.,2.,2.),(1.,2.,2.),(2.,2.,2.),(3.,2.,2.),(4.,2.,2.),(5.,2.,2.),(0.,3.,2.),(1.,3.,2.),(2.,3.,2.),(3.,3.,2.),(4.,3.,2.),(5.,3.,2.),(0.,4.,2.),(1.,4.,2.),(2.,4.,2.),(3.,4.,2.),(4.,4.,2.),(5.,4.,2.),(1.,5.,2.),(2.,5.,2.),(3.,5.,2.),(4.,5.,2.)])
4072 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
4073 d=DataArrayInt([16,1,0,5,33,32,37,16,1,5,6,33,37,38,16,2,1,6,34,33,38,16,2,6,7,34,38,39,16,3,2,7,35,34,39,16,3,7,8,35,39,40,16,5,4,10,37,36,42,16,5,10,11,37,42,43,16,9,8,14,41,40,46,16,9,14,15,41,46,47,16,11,10,16,43,42,48,16,11,16,17,43,48,49,16,15,14,20,47,46,52,16,15,20,21,47,52,53,16,17,16,22,49,48,54,16,17,22,23,49,54,55,16,21,20,26,53,52,58,16,21,26,27,53,58,59,16,24,23,28,56,55,60,16,24,28,29,56,60,61,16,25,24,29,57,56,61,16,25,29,30,57,61,62,16,26,25,30,58,57,62,16,26,30,31,58,62,63,16,33,32,37,65,64,69,16,33,37,38,65,69,70,16,34,33,38,66,65,70,16,34,38,39,66,70,71,16,35,34,39,67,66,71,16,35,39,40,67,71,72,16,37,36,42,69,68,74,16,37,42,43,69,74,75,16,41,40,46,73,72,78,16,41,46,47,73,78,79,16,43,42,48,75,74,80,16,43,48,49,75,80,81,16,47,46,52,79,78,84,16,47,52,53,79,84,85,16,49,48,54,81,80,86,16,49,54,55,81,86,87,16,53,52,58,85,84,90,16,53,58,59,85,90,91,16,56,55,60,88,87,92,16,56,60,61,88,92,93,16,57,56,61,89,88,93,16,57,61,62,89,93,94,16,58,57,62,90,89,94,16,58,62,63,90,94,95,18,6,5,11,12,38,37,43,44,18,7,6,12,13,39,38,44,45,18,8,7,13,14,40,39,45,46,18,12,11,17,18,44,43,49,50,18,13,12,18,19,45,44,50,51,18,14,13,19,20,46,45,51,52,18,18,17,23,24,50,49,55,56,18,19,18,24,25,51,50,56,57,18,20,19,25,26,52,51,57,58,18,38,37,43,44,70,69,75,76,18,39,38,44,45,71,70,76,77,18,40,39,45,46,72,71,77,78,18,44,43,49,50,76,75,81,82,18,45,44,50,51,77,76,82,83,18,46,45,51,52,78,77,83,84,18,50,49,55,56,82,81,87,88,18,51,50,56,57,83,82,88,89,18,52,51,57,58,84,83,89,90])
4074 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
4075 d=DataArrayInt([0,7,14,21,28,35,42,49,56,63,70,77,84,91,98,105,112,119,126,133,140,147,154,161,168,175,182,189,196,203,210,217,224,231,238,245,252,259,266,273,280,287,294,301,308,315,322,329,336,345,354,363,372,381,390,399,408,417,426,435,444,453,462,471,480,489,498])
4076 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
4077 d=DataArrayInt([3,1,0,5,3,1,5,6,3,2,1,6,3,2,6,7,3,3,2,7,3,3,7,8,3,5,4,10,3,5,10,11,3,9,8,14,3,9,14,15,3,11,10,16,3,11,16,17,3,15,14,20,3,15,20,21,3,17,16,22,3,17,22,23,3,21,20,26,3,21,26,27,3,24,23,28,3,24,28,29,3,25,24,29,3,25,29,30,3,26,25,30,3,26,30,31,3,65,64,69,3,65,69,70,3,66,65,70,3,66,70,71,3,67,66,71,3,67,71,72,3,69,68,74,3,69,74,75,3,73,72,78,3,73,78,79,3,75,74,80,3,75,80,81,3,79,78,84,3,79,84,85,3,81,80,86,3,81,86,87,3,85,84,90,3,85,90,91,3,88,87,92,3,88,92,93,3,89,88,93,3,89,93,94,3,90,89,94,3,90,94,95,4,1,0,32,33,4,0,5,37,32,4,5,1,33,37,4,5,6,38,37,4,6,1,33,38,4,2,1,33,34,4,6,2,34,38,4,6,7,39,38,4,7,2,34,39,4,3,2,34,35,4,7,3,35,39,4,7,8,40,39,4,8,3,35,40,4,5,4,36,37,4,4,10,42,36,4,10,5,37,42,4,10,11,43,42,4,11,5,37,43,4,9,8,40,41,4,8,14,46,40,4,14,9,41,46,4,14,15,47,46,4,15,9,41,47,4,10,16,48,42,4,16,11,43,48,4,16,17,49,48,4,17,11,43,49,4,14,20,52,46,4,20,15,47,52,4,20,21,53,52,4,21,15,47,53,4,16,22,54,48,4,22,17,49,54,4,22,23,55,54,4,23,17,49,55,4,20,26,58,52,4,26,21,53,58,4,26,27,59,58,4,27,21,53,59,4,24,23,55,56,4,23,28,60,55,4,28,24,56,60,4,28,29,61,60,4,29,24,56,61,4,25,24,56,57,4,29,25,57,61,4,29,30,62,61,4,30,25,57,62,4,26,25,57,58,4,30,26,58,62,4,30,31,63,62,4,31,26,58,63,4,11,12,44,43,4,12,6,38,44,4,12,13,45,44,4,13,7,39,45,4,13,14,46,45,4,17,18,50,49,4,18,12,44,50,4,18,19,51,50,4,19,13,45,51,4,19,20,52,51,4,24,18,50,56,4,25,19,51,57,4,33,32,64,65,4,32,37,69,64,4,37,33,65,69,4,37,38,70,69,4,38,33,65,70,4,34,33,65,66,4,38,34,66,70,4,38,39,71,70,4,39,34,66,71,4,35,34,66,67,4,39,35,67,71,4,39,40,72,71,4,40,35,67,72,4,37,36,68,69,4,36,42,74,68,4,42,37,69,74,4,42,43,75,74,4,43,37,69,75,4,41,40,72,73,4,40,46,78,72,4,46,41,73,78,4,46,47,79,78,4,47,41,73,79,4,42,48,80,74,4,48,43,75,80,4,48,49,81,80,4,49,43,75,81,4,46,52,84,78,4,52,47,79,84,4,52,53,85,84,4,53,47,79,85,4,48,54,86,80,4,54,49,81,86,4,54,55,87,86,4,55,49,81,87,4,52,58,90,84,4,58,53,85,90,4,58,59,91,90,4,59,53,85,91,4,56,55,87,88,4,55,60,92,87,4,60,56,88,92,4,60,61,93,92,4,61,56,88,93,4,57,56,88,89,4,61,57,89,93,4,61,62,94,93,4,62,57,89,94,4,58,57,89,90,4,62,58,90,94,4,62,63,95,94,4,63,58,90,95,4,43,44,76,75,4,44,38,70,76,4,44,45,77,76,4,45,39,71,77,4,45,46,78,77,4,49,50,82,81,4,50,44,76,82,4,50,51,83,82,4,51,45,77,83,4,51,52,84,83,4,56,50,82,88,4,57,51,83,89,4,6,5,11,12,4,7,6,12,13,4,8,7,13,14,4,12,11,17,18,4,13,12,18,19,4,14,13,19,20,4,18,17,23,24,4,19,18,24,25,4,20,19,25,26,4,70,69,75,76,4,71,70,76,77,4,72,71,77,78,4,76,75,81,82,4,77,76,82,83,4,78,77,83,84,4,82,81,87,88,4,83,82,88,89,4,84,83,89,90])
4078 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
4079 d=DataArrayInt([0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,197,202,207,212,217,222,227,232,237,242,247,252,257,262,267,272,277,282,287,292,297,302,307,312,317,322,327,332,337,342,347,352,357,362,367,372,377,382,387,392,397,402,407,412,417,422,427,432,437,442,447,452,457,462,467,472,477,482,487,492,497,502,507,512,517,522,527,532,537,542,547,552,557,562,567,572,577,582,587,592,597,602,607,612,617,622,627,632,637,642,647,652,657,662,667,672,677,682,687,692,697,702,707,712,717,722,727,732,737,742,747,752,757,762,767,772,777,782,787,792,797,802,807,812,817,822,827,832,837,842,847,852,857,862,867,872,877,882,887,892,897,902,907,912,917,922])
4080 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
4081 d=DataArrayInt([1,1,0,1,0,5,1,5,1,1,5,6,1,6,1,1,2,1,1,6,2,1,6,7,1,7,2,1,3,2,1,7,3,1,7,8,1,8,3,1,5,4,1,4,10,1,10,5,1,10,11,1,11,5,1,9,8,1,8,14,1,14,9,1,14,15,1,15,9,1,10,16,1,16,11,1,16,17,1,17,11,1,14,20,1,20,15,1,20,21,1,21,15,1,16,22,1,22,17,1,22,23,1,23,17,1,20,26,1,26,21,1,26,27,1,27,21,1,24,23,1,23,28,1,28,24,1,28,29,1,29,24,1,25,24,1,29,25,1,29,30,1,30,25,1,26,25,1,30,26,1,30,31,1,31,26,1,11,12,1,12,6,1,12,13,1,13,7,1,13,14,1,17,18,1,18,12,1,18,19,1,19,13,1,19,20,1,24,18,1,25,19,1,65,64,1,64,69,1,69,65,1,69,70,1,70,65,1,66,65,1,70,66,1,70,71,1,71,66,1,67,66,1,71,67,1,71,72,1,72,67,1,69,68,1,68,74,1,74,69,1,74,75,1,75,69,1,73,72,1,72,78,1,78,73,1,78,79,1,79,73,1,74,80,1,80,75,1,80,81,1,81,75,1,78,84,1,84,79,1,84,85,1,85,79,1,80,86,1,86,81,1,86,87,1,87,81,1,84,90,1,90,85,1,90,91,1,91,85,1,88,87,1,87,92,1,92,88,1,92,93,1,93,88,1,89,88,1,93,89,1,93,94,1,94,89,1,90,89,1,94,90,1,94,95,1,95,90,1,75,76,1,76,70,1,76,77,1,77,71,1,77,78,1,81,82,1,82,76,1,82,83,1,83,77,1,83,84,1,88,82,1,89,83])
4082 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
4083 d=DataArrayInt(129) ; d.iota() ; d*=3
4084 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
4086 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
4087 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
4088 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
4089 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
4090 self.assertTrue(mm3D.getGroupArr(-2,"grp1").isEqualWithoutConsideringStr(DataArrayInt([0,1,5,9,12,13,14,18,22,23,30,31,33,37,38,40,42,46,50,51])))
4091 self.assertTrue(mm3D.getGroupArr(-2,"grp1_top").isEqualWithoutConsideringStr(DataArrayInt([64,65,69,73,76,77,78,82,86,87,94,95,97,101,102,104,106,110,114,115])))
4092 self.assertTrue(mm3D.getGroupArr(0,"grp0_extruded").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,24,25,26,27,28,29,48,49,50,57,58,59])))
4093 self.assertTrue(mm3D.getGroupArr(-1,"grp1_extruded").isEqualWithoutConsideringStr(DataArrayInt([48,49,53,57,60,61,62,66,70,71,78,79,81,85,86,88,90,94,98,99,112,113,117,121,124,125,126,130,134,135,142,143,145,149,150,152,154,158,162,163])))
4094 mm3D.setName("MeshExtruded")
4095 mm3D.write(fileName,0)
4098 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4099 def testMEDFileUMeshPickeling1(self):
4101 outFileName="Pyfile86.med"
4102 c=DataArrayDouble([-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 ],9,2)
4103 c.setInfoOnComponents(["aa","bbb"])
4104 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
4105 m=MEDCouplingUMesh();
4106 m.setMeshDimension(2);
4108 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
4109 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
4110 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
4111 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
4112 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
4113 m.finishInsertingCells();
4115 m.checkConsistencyLight()
4116 m1=MEDCouplingUMesh.New();
4117 m1.setMeshDimension(1);
4118 m1.allocateCells(3);
4119 m1.insertNextCell(NORM_SEG2,2,[1,4])
4120 m1.insertNextCell(NORM_SEG2,2,[3,6])
4121 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
4122 m1.finishInsertingCells();
4124 m1.checkConsistencyLight()
4125 m2=MEDCouplingUMesh.New();
4126 m2.setMeshDimension(0);
4127 m2.allocateCells(4);
4128 m2.insertNextCell(NORM_POINT1,1,[1])
4129 m2.insertNextCell(NORM_POINT1,1,[3])
4130 m2.insertNextCell(NORM_POINT1,1,[2])
4131 m2.insertNextCell(NORM_POINT1,1,[6])
4132 m2.finishInsertingCells();
4134 m2.checkConsistencyLight()
4136 mm=MEDFileUMesh.New()
4137 self.assertTrue(mm.getUnivNameWrStatus())
4138 mm.setName("MyFirstMEDCouplingMEDmesh")
4139 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
4143 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
4145 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
4146 # playing with groups
4147 g1_2=DataArrayInt.New()
4148 g1_2.setValues([1,3],2,1)
4150 g2_2=DataArrayInt.New()
4151 g2_2.setValues([1,2,3],3,1)
4153 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4154 g1_1=DataArrayInt.New()
4155 g1_1.setValues([0,1,2],3,1)
4157 g2_1=DataArrayInt.New()
4158 g2_1.setValues([0,2],2,1)
4160 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4161 g1_N=DataArrayInt.New()
4162 g1_N.setValues(range(8),8,1)
4164 g2_N=DataArrayInt.New()
4165 g2_N.setValues(range(9),9,1)
4167 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4168 mm.createGroupOnAll(0,"GrpOnAllCell")
4169 # check content of mm
4170 t=mm.getGroupArr(0,"G1",False)
4171 self.assertTrue(g1_2.isEqual(t));
4172 t=mm.getGroupArr(0,"G2",False)
4173 self.assertTrue(g2_2.isEqual(t));
4174 t=mm.getGroupArr(-1,"G1",False)
4175 self.assertTrue(g1_1.isEqual(t));
4176 t=mm.getGroupArr(-1,"G2",False)
4177 self.assertTrue(g2_1.isEqual(t));
4178 t=mm.getGroupArr(1,"G1",False)
4179 self.assertTrue(g1_N.isEqual(t));
4180 t=mm.getGroupArr(1,"G2",False)
4181 self.assertTrue(g2_N.isEqual(t));
4182 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4183 t=mm.getGroupArr(0,"GrpOnAllCell")
4185 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
4186 mm2=cPickle.loads(st)
4187 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4188 self.assertEqual(mm.getAxisType(),AX_CART)
4190 mm.setAxisType(AX_CYL)
4191 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
4192 mm2=cPickle.loads(st)
4193 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4194 self.assertEqual(mm2.getAxisType(),AX_CYL)
4197 def testMEDFileFieldsLoadSpecificEntities1(self):
4200 fileName="Pyfile87.med"
4204 m=MEDCouplingCMesh()
4205 arr=DataArrayDouble(nbNodes) ; arr.iota()
4207 m=m.buildUnstructured()
4210 fmts=MEDFileFieldMultiTS()
4211 for i in xrange(nbPdt):
4212 f=MEDCouplingFieldDouble(ON_NODES)
4214 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4216 f.setName(fieldName)
4217 f.setTime(float(i),i,0)
4218 fmts.appendFieldNoProfileSBT(f)
4221 mm=MEDFileUMesh() ; mm[0]=m
4222 fmts.write(fileName,2)
4223 mm.write(fileName,0)
4225 fs=MEDFileFields(fileName,False)
4226 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_NODES,NORM_ERROR)],False)
4227 fs.loadArraysIfNecessary()
4228 fs2.loadArraysIfNecessary()
4229 for i in xrange(nbPdt):
4230 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4232 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1])) ; m1=m1.buildUnstructured() ; m1.simplexize(0)
4233 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([3,4,5]),DataArrayDouble([0,1])) ; m2=m2.buildUnstructured()
4234 m3=MEDCouplingUMesh.MergeUMeshes(m1,m2) ; m3.setName(meshName)
4235 fmts=MEDFileFieldMultiTS()
4236 for i in xrange(nbPdt):
4237 f=MEDCouplingFieldDouble(ON_CELLS)
4239 arr=DataArrayDouble(8) ; arr.iota() ; arr*=i
4241 f.setName(fieldName)
4242 f.setTime(float(i),i,0)
4243 fmts.appendFieldNoProfileSBT(f)
4245 mm=MEDFileUMesh() ; mm[0]=m3
4247 self.assertEqual(mm.getNonEmptyLevels(),())
4249 self.assertEqual(mm.getNonEmptyLevels(),(0,))
4250 fmts.write(fileName,2)
4251 fs=MEDFileFields(fileName,False)
4252 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3)],False)
4253 fs3=MEDFileFieldMultiTS.LoadSpecificEntities(fileName,fieldName,[(ON_CELLS,NORM_QUAD4)],False)
4254 fs4=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3),(ON_CELLS,NORM_QUAD4)],False)
4255 fs.loadArraysIfNecessary()
4256 fs2.loadArraysIfNecessary()
4257 fs3.loadArraysIfNecessary()
4258 fs4.loadArraysIfNecessary()
4259 for i in xrange(nbPdt):
4260 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[:6].isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4261 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[6:8].isEqual(fs3[i].getUndergroundDataArray(),1e-12))
4262 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs4[fieldName][i].getUndergroundDataArray(),1e-12))
4266 def testMEDFileLotsOfTSRW1(self):
4269 fileName="Pyfile88.med"
4270 nbPdt=300 # <- perftest = 30000
4273 maxPdt=100 # <- optimum = 500
4274 m=MEDCouplingCMesh()
4275 arr=DataArrayDouble(nbNodes) ; arr.iota()
4277 m=m.buildUnstructured()
4280 nbOfField=nbPdt/maxPdt
4282 for j in xrange(nbOfField):
4283 fmts=MEDFileFieldMultiTS()
4284 s=DataArray.GetSlice(slice(0,nbPdt,1),j,nbOfField)
4285 for i in xrange(s.start,s.stop,s.step):
4286 f=MEDCouplingFieldDouble(ON_NODES)
4288 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4290 f.setName("%s_%d"%(fieldName,j))
4291 f.setTime(float(i),i,0)
4292 fmts.appendFieldNoProfileSBT(f)
4297 mm=MEDFileUMesh() ; mm[0]=m
4298 fs.write(fileName,2)
4299 mm.write(fileName,0)
4301 def appendInDict(d,key,val):
4308 allFields=GetAllFieldNames(fileName)
4310 pat=re.compile("([\d]+)([\s\S]+)$")
4311 for st in allFields:
4315 appendInDict(allFieldsDict,m.group(2)[::-1],m.group(1)[::-1])
4318 appendInDict(allFieldsDict,st,'')
4322 for k in allFieldsDict:
4323 if allFieldsDict[k]!=['']:
4324 allFieldsDict[k]=sorted(allFieldsDict[k],key=lambda x: int(x))
4327 for it in allFieldsDict[k]:
4328 fmts2.append(MEDFileFieldMultiTS.LoadSpecificEntities(fileName,k+it,[(ON_NODES,NORM_ERROR)]))
4333 for ii in xrange(nbIter):
4334 zeResu.pushBackTimeSteps(fmts2.pop())
4337 fs2.pushField(zeResu)
4339 self.assertEqual(fs2[0].getTimeSteps(),[(i,0,float(i)) for i in xrange(nbPdt)])
4342 def testMEDFileMeshRearrangeFamIds1(self):
4343 """ Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies."""
4344 fileName="Pyfile89.med"
4345 meshName='Maillage_2'
4347 coords=DataArrayDouble([(0.,0.,0.),(0.,0.,200.),(0.,200.,200.),(0.,200.,0.),(200.,0.,0.),(200.,0.,200.),(200.,200.,200.),(200.,200.,0.),(0.,0.,100.),(0.,100.,200.),(0.,200.,100.),(0.,100.,0.),(200.,0.,100.),(200.,100.,200.),(200.,200.,100.),(200.,100.,0.),(100.,0.,0.),(100.,0.,200.),(100.,200.,0.),(100.,200.,200.),(0.,116.87743909766768,83.12256090233232),(200.,116.87743909766768,83.12256090233232),(116.87743909766769,0.,116.87743909766769),(116.87743909766769,200.,116.87743909766769),(116.87743909766769,116.87743909766769,0.),(116.87743909766769,116.87743909766769,200.),(63.3851584383713,56.1391811199829,119.728314479261),(138.008709441123,116.039297556044,119.903790959468)])
4349 c0=DataArrayInt([14,1,26,9,8,14,17,26,1,8,14,27,26,17,22,14,26,16,20,8,14,8,0,16,11,14,16,20,11,24,14,25,20,26,27,14,22,26,24,27,14,26,16,22,24,14,8,26,22,17,14,20,9,25,26,14,19,20,25,23,14,23,6,27,25,14,19,23,10,20,14,27,22,21,24,14,27,21,14,18,14,26,9,25,17,14,13,27,25,17,14,27,18,24,21,14,22,21,15,12,14,27,20,24,18,14,23,25,27,20,14,13,27,6,25,14,23,27,6,14,14,15,16,22,12,14,27,17,13,22,14,22,27,21,13,14,24,16,22,15,14,24,18,7,21,14,12,4,15,16,14,22,12,5,13,14,8,26,16,22,14,13,27,21,14,14,20,18,10,3,14,14,27,18,23,14,14,27,6,13,14,21,22,13,12,14,25,26,17,27,14,19,9,25,20,14,26,24,20,16,14,22,24,15,21,14,9,26,1,17,14,23,27,18,20,14,20,11,18,3,14,14,18,21,7,14,19,2,9,10,14,19,23,25,6,14,18,23,20,10,14,20,26,8,9,14,22,13,5,17,14,24,11,18,20,14,21,15,7,24,14,19,20,10,9,14,20,26,27,24,14,16,8,11,20])
4350 c0i=DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275])
4351 m0=MEDCouplingUMesh(meshName,3) ; m0.setCoords(coords)
4352 m0.setConnectivity(c0,c0i)
4355 c1=DataArrayInt([3,8,20,11,3,8,9,20,3,9,2,10,3,20,9,10,3,0,8,11,3,9,8,1,3,20,10,3,3,11,20,3,3,15,21,12,3,5,12,13,3,21,13,12,3,15,12,4,3,14,6,13,3,14,13,21,3,7,14,21,3,7,21,15,3,5,22,12,3,4,12,16,3,17,1,8,3,16,8,0,3,5,17,22,3,12,22,16,3,22,17,8,3,16,22,8,3,10,2,19,3,7,18,14,3,14,23,6,3,3,10,18,3,23,19,6,3,18,23,14,3,10,19,23,3,10,23,18,3,3,18,11,3,7,24,18,3,15,4,16,3,11,16,0,3,7,15,24,3,18,24,11,3,24,15,16,3,11,24,16,3,9,19,2,3,19,25,6,3,17,5,13,3,1,17,9,3,25,13,6,3,9,25,19,3,17,13,25,3,17,25,9])
4356 c1i=DataArrayInt([0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192])
4357 m1=MEDCouplingUMesh(meshName,2) ; m1.setCoords(coords)
4358 m1.setConnectivity(c1,c1i)
4361 c2=DataArrayInt([0,8,8,1,1,9,9,2,3,10,10,2,0,11,11,3,4,12,12,5,5,13,13,6,7,14,14,6,4,15,15,7,0,16,16,4,1,17,17,5,3,18,18,7,2,19,19,6])
4362 m2=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
4363 m2.setNodalConnectivity(c2) ; m2.setCoords(coords)
4364 mm[-2]=m2.buildUnstructured()
4366 ref0=DataArrayInt(55) ; ref0[:]=0
4367 mm.setFamilyFieldArr(0,ref0)
4368 mm.setFamilyFieldArr(1,DataArrayInt([0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]))
4369 ref1=DataArrayInt([0,0,0,0,0,0,0,0,-6,-6,-6,-6,-6,-6,-6,-6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
4370 mm.setFamilyFieldArr(-1,ref1)
4371 ref2=DataArrayInt([0,0,-7,-7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
4372 mm.setFamilyFieldArr(-2,ref2)
4374 for f,fid in (('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2)):
4375 mm.setFamilyId(f,fid)
4376 for grp,fams in [('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',))]:
4377 mm.setFamiliesOnGroup(grp,fams)
4378 mm.write(fileName,2)
4380 mm=MEDFileMesh.New(fileName)
4381 grp=mm.getGroup(-1,"Groupe_1")
4382 dai=grp.computeFetchedNodeIds()
4385 mm.rearrangeFamilies() # <- the aim of the test
4386 self.assertTrue(dai.isEqual(mm.getGroupArr(1,"TOTO")))
4387 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(ref0))
4388 self.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(ref1))
4389 self.assertTrue(mm.getFamilyFieldAtLevel(-2).isEqual(ref2))
4390 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([0,0,2,0,9,9,9,9,0,0,0,0,9,9,9,9,0,0,0,0,0,9,0,0,0,0,0,0])))
4391 allGrps=[('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',)),('TOTO',('Family_9',))]
4392 allFams=[('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2),('Family_9',9)]
4393 self.assertEqual(list(mm.getGroupsNames()),[elt[0] for elt in allGrps])
4394 for elt,fams in allGrps:
4395 self.assertEqual(mm.getFamiliesOnGroup(elt),fams)
4396 self.assertEqual(list(mm.getFamiliesNames()),[elt[0] for elt in allFams])
4397 for elt,eltId in allFams:
4398 self.assertEqual(mm.getFamilyId(elt),eltId)
4401 def testNonRegrCMeshSetFieldPfl1(self):
4402 """ Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile."""
4403 ff=MEDFileField1TS()
4406 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4410 field=MEDCouplingFieldDouble(ON_CELLS)
4412 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4413 field.setName("Field")
4414 field.checkConsistencyLight()
4415 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU") #<- false profile because defined on all cells !
4416 ff.setFieldProfile(field,mm,0,pfl) # <- bug was revealed here !
4417 self.assertEqual(ff.getPfls(),())
4418 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4419 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4420 del ff,mm,field,field2,pfl
4421 # same with unstructured mesh
4422 ff=MEDFileField1TS()
4425 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4428 m=m.buildUnstructured()
4430 field=MEDCouplingFieldDouble(ON_CELLS)
4432 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4433 field.setName("Field")
4434 field.checkConsistencyLight()
4435 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU")
4436 ff.setFieldProfile(field,mm,0,pfl)
4437 self.assertEqual(ff.getPfls(),())
4438 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4439 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4442 def testMEDFileUMeshLinearToQuadraticAndRev1(self):
4444 fileName="Pyfile90.med"
4445 fileName2="Pyfile91.med"
4446 arr=DataArrayDouble(5) ; arr.iota()
4447 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4448 m=m.buildUnstructured()
4449 d=DataArrayInt([3,7,11,15])
4452 m2=m[d.buildComplement(m.getNumberOfCells())]
4453 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
4454 m.changeSpaceDimension(3,0.)
4455 arr=DataArrayDouble(3) ; arr.iota()
4456 m1D=MEDCouplingCMesh() ; m1D.setCoords(arr) ; m1D=m1D.buildUnstructured() ; m1D.changeSpaceDimension(3,0.)
4457 m1D.setCoords(m1D.getCoords()[:,[1,2,0]])
4458 delta=m.getNumberOfNodes()*(m1D.getNumberOfNodes()-1)
4459 m3D=m.buildExtrudedMesh(m1D,0)
4460 m3D.sortCellsInMEDFileFrmt()
4461 m3D.setName(meshName)
4462 m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkConsistency()
4463 m1D=m2D.computeSkin() ; m1D.setName(meshName)
4464 m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
4467 mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D ; mm[-3]=m0D
4468 grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
4469 grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
4470 grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
4471 grpFaceNorth=DataArrayInt([6,7,17,18,19]) ; grpFaceNorth.setName("NorthFace")
4472 diagFace=DataArrayInt([0,1,13,15,17]) ; diagFace.setName("DiagFace")
4473 vol1=DataArrayInt([20,21,23,24]) ; vol1.setName("vol1")
4474 vol2=DataArrayInt([2,3,4,5,21,24]) ; vol2.setName("vol2")
4475 mm.setGroupsAtLevel(0,[vol1,vol2])
4476 mm.setGroupsAtLevel(-1,[grpFaceSouth,grpFaceNorth,diagFace])
4477 mm.setGroupsAtLevel(-2,[grpEdge0,grpEdge1])
4479 mmOut1=mm.linearToQuadratic(0,0.)
4480 mmOut1.write(fileName2,2)
4481 mmOut2=mmOut1.quadraticToLinear(0.)
4482 self.assertTrue(mm.isEqual(mmOut2,1e-12)[0])
4485 def testMEDFileMeshAddGroup1(self):
4486 m=MEDCouplingCMesh()
4487 arrX=DataArrayDouble(9) ; arrX.iota()
4488 arrY=DataArrayDouble(4) ; arrY.iota()
4489 m.setCoords(arrX,arrY)
4493 grp0=DataArrayInt([3,5,6,21,22]) ; grp0.setName("grp0")
4495 grp1=DataArrayInt([3,4,5,8,18,19,22]) ; grp1.setName("grp1")
4497 grp2=DataArrayInt([0,1,2,10,11]) ; grp2.setName("grp2")
4499 grp3=DataArrayInt([23]) ; grp3.setName("grp3")
4501 for grp in [grp0,grp1,grp2,grp3]:
4502 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4503 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2','grp3'))
4505 for grp in [grp0,grp1,grp2,grp3]:
4506 grpNode=grp.deepCopy() ; grpNode+=delta ; grpNode.setName("%s_node"%grp.getName())
4507 mm.addGroup(1,grpNode)
4508 self.assertEqual(mm.getGroupsNames(),('grp0','grp0_node','grp1','grp1_node','grp2','grp2_node','grp3','grp3_node'))
4509 for grp in [grp0,grp1,grp2,grp3]:
4510 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4511 for grp in [grp0,grp1,grp2,grp3]:
4512 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4513 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4514 mm.normalizeFamIdsMEDFile()
4515 for grp in [grp0,grp1,grp2,grp3]:
4516 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4517 for grp in [grp0,grp1,grp2,grp3]:
4518 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4519 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4523 def testMEDFileJoint1(self):
4524 fileName="Pyfile92.med"
4525 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4526 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4530 mm.setDescription("un maillage")
4531 mm.write(fileName,2)
4532 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4533 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4534 one_step_joint=MEDFileJointOneStep()
4535 one_step_joint.pushCorrespondence(cell_correspond)
4536 one_step_joint.pushCorrespondence(node_correspond)
4537 one_joint=MEDFileJoint()
4538 one_joint.pushStep(one_step_joint)
4539 one_joint.setLocalMeshName("maa1")
4540 one_joint.setRemoteMeshName("maa1")
4541 one_joint.setDescription("joint_description")
4542 one_joint.setJointName("joint_1")
4543 one_joint.setDomainNumber(1)
4544 self.assertEqual( one_joint.getLocalMeshName(), "maa1")
4545 self.assertEqual( one_joint.getRemoteMeshName(), "maa1")
4546 self.assertEqual( one_joint.getDescription(), "joint_description")
4547 self.assertEqual( one_joint.getJointName(), "joint_1")
4548 self.assertEqual( one_joint.getDomainNumber(), 1)
4549 joints=MEDFileJoints()
4550 joints.pushJoint(one_joint);
4551 joints.write(fileName,0)
4553 jointsR=MEDFileJoints(fileName,mm.getName())
4554 self.assertEqual( jointsR.getNumberOfJoints(), 1 )
4555 jR = jointsR.getJointAtPos(0)
4556 self.assertTrue( jR.isEqual( one_joint ))
4557 self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
4558 self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
4559 jointsR.destroyJointAtPos(0)
4562 def testMEDFileJoint2(self):
4563 fileNameWr="Pyfile93.med"
4564 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4565 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4569 mm.setDescription("un maillage")
4570 node_correspond=MEDFileJointCorrespondence(DataArrayInt([13,14,15,16]))
4571 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([17,18]),NORM_TETRA4,NORM_PENTA6)
4572 one_step_joint=MEDFileJointOneStep()
4573 two_step_joint=MEDFileJointOneStep()
4574 one_joint=MEDFileJoint()
4575 two_joint=MEDFileJoint()
4576 one_step_joint.pushCorrespondence(node_correspond)
4577 one_joint.pushStep(one_step_joint)
4578 two_step_joint.pushCorrespondence(cell_correspond)
4579 two_step_joint.pushCorrespondence(node_correspond)
4580 two_joint.pushStep(two_step_joint)
4581 one_joint.setLocalMeshName("maa1")
4582 one_joint.setRemoteMeshName("maa1")
4583 one_joint.setDescription("joint_description_1")
4584 one_joint.setJointName("joint_1")
4585 one_joint.setDomainNumber(1)
4586 two_joint.setLocalMeshName("maa1")
4587 two_joint.setRemoteMeshName("maa1")
4588 two_joint.setDescription("joint_description_2")
4589 two_joint.setJointName("joint_2")
4590 two_joint.setDomainNumber(2)
4591 joints=MEDFileJoints()
4592 joints.pushJoint(one_joint)
4593 joints.pushJoint(two_joint)
4594 mm.setJoints( joints )
4595 mm.write(fileNameWr,2)
4597 mm=MEDFileMesh.New(fileNameWr)
4598 self.assertEqual( mm.getNumberOfJoints(), 2)
4599 jointsR = mm.getJoints();
4600 self.assertEqual( jointsR.getMeshName(), mm.getName() )
4601 self.assertEqual( len( jointsR ), 2 )
4602 jointR1 = jointsR[0]
4603 jointR2 = jointsR[1]
4604 self.assertFalse( jointR1 is None )
4605 self.assertFalse( jointR2 is None )
4606 self.assertTrue( jointR1.isEqual( one_joint ))
4607 self.assertTrue( jointR2.isEqual( two_joint ))
4610 def testMEDFileJoint1(self):
4611 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4612 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4613 cell_correspon2=MEDFileJointCorrespondence(DataArrayInt([9,10,11]),NORM_TRI3,NORM_TRI3)
4614 cell_correspon3=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_QUAD4)
4615 joint1st_1=MEDFileJointOneStep()
4616 joint1st_1.pushCorrespondence(cell_correspond)
4617 joint1st_1.pushCorrespondence(node_correspond)
4618 joint1st_2=MEDFileJointOneStep()
4619 joint1st_2.pushCorrespondence(cell_correspond)
4620 joint1st_2.pushCorrespondence(node_correspond)
4621 joint1st_3=MEDFileJointOneStep()
4622 joint1st_3.pushCorrespondence(node_correspond)
4623 joint1st_3.pushCorrespondence(cell_correspond)
4624 joint1st_4=MEDFileJointOneStep()
4625 joint1st_4.pushCorrespondence(cell_correspond)
4626 joint1st_5=MEDFileJointOneStep()
4627 joint1st_5.pushCorrespondence(cell_correspon2)
4628 joint1st_6=MEDFileJointOneStep()
4629 joint1st_6.pushCorrespondence(cell_correspon3)
4630 self.assertTrue( joint1st_1.isEqual( joint1st_2 ))
4631 self.assertTrue( joint1st_1.isEqual( joint1st_3 ))
4632 self.assertFalse( joint1st_1.isEqual( joint1st_4 ))
4633 self.assertFalse( joint1st_4.isEqual( joint1st_5 ))
4634 self.assertFalse( joint1st_4.isEqual( joint1st_6 ))
4635 one_joint=MEDFileJoint()
4636 one_joint.pushStep(joint1st_1)
4637 one_joint.setLocalMeshName("maa1")
4638 one_joint.setRemoteMeshName("maa2")
4639 one_joint.setDescription("joint_description")
4640 one_joint.setJointName("joint_1")
4641 one_joint.setDomainNumber(1)
4642 self.assertEqual( "maa1", one_joint.getLocalMeshName())
4643 self.assertEqual( "maa2", one_joint.getRemoteMeshName())
4644 self.assertEqual( "joint_description", one_joint.getDescription())
4645 self.assertEqual( 1, one_joint.getDomainNumber())
4646 self.assertEqual( "joint_1", one_joint.getJointName())
4649 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
4650 def testMEDFileSafeCall0(self):
4651 """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
4652 fname="Pyfile94.med"
4653 errfname="Pyfile94.err"
4654 class StdOutRedirect(object):
4655 def __init__(self,fileName):
4658 self.stdoutOld=os.dup(2)
4659 self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
4660 fd2=os.dup2(self.fdOfSinkFile,2)
4661 self.origPyVal=sys.stderr
4662 class FlushFile(object):
4663 def __init__(self,f):
4669 return self.f.flush()
4671 return self.f.isatty()
4672 sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
4675 sys.stderr=self.origPyVal
4676 #os.fsync(self.fdOfSinkFile)
4678 os.dup2(self.stdoutOld,2)
4679 os.close(self.stdoutOld)
4681 # first clean file if needed
4682 if os.path.exists(fname):
4685 # second : build a file from scratch
4686 m=MEDCouplingCMesh()
4687 arr=DataArrayDouble(11) ; arr.iota()
4688 m.setCoords(arr,arr)
4693 # third : change permissions to remove write access on created file
4694 os.chmod(fname,0444)
4695 # four : try to append data on file -> check that it raises Exception
4696 f=MEDCouplingFieldDouble(ON_CELLS)
4699 f.setArray(DataArrayDouble(100))
4700 f.getArray()[:]=100.
4701 f.checkConsistencyLight()
4702 f1ts=MEDFileField1TS()
4703 f1ts.setFieldNoProfileSBT(f)
4705 tmp=StdOutRedirect(errfname)
4706 self.assertRaises(InterpKernelException,f1ts.write,fname,0) # it should raise !
4709 if os.path.exists(errfname):
4714 def testUnivStatus1(self):
4715 """ Non regression test to check the effectiveness of univ write status."""
4716 fname="Pyfile95.med"
4717 arr=DataArrayDouble(10) ; arr.iota()
4718 m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh")
4719 mm=MEDFileCMesh() ; mm.setMesh(m)
4720 mm.setUnivNameWrStatus(False) # test is here
4722 mm=MEDFileCMesh(fname)
4723 self.assertEqual(mm.getUnivName(),"")
4724 mm.setUnivNameWrStatus(True)
4726 mm=MEDFileCMesh(fname)
4727 self.assertTrue(mm.getUnivName()!="")
4730 def testEmptyMesh(self):
4731 """ MEDLoader should be able to consistently write and read an empty mesh (coords array
4733 fname = "Pyfile96.med"
4734 m = MEDCouplingUMesh('toto', 2)
4735 m.setCoords(DataArrayDouble([], 0, 2))
4736 m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
4737 mfu = MEDFileUMesh()
4738 mfu.setMeshAtLevel(0, m)
4740 mfu2 = MEDFileUMesh(fname)
4741 self.assertEqual('toto', mfu2.getName())
4742 lvl = mfu2.getNonEmptyLevels()
4743 self.assertEqual((), lvl)
4745 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4746 def testMEDFileUMeshPickeling2(self):
4747 """ Check that pickalization can be performed on a unpickalized instance. Non regression test."""
4753 arr=DataArrayDouble(nbOfNodesPerAxis) ; arr.iota() ; arr/=(nbOfNodesPerAxis-1) ; arr*=hauteur
4754 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured() ; m.setName(name)
4755 mesh=MEDFileUMesh() ; mesh[0]=m
4756 m1=m.computeSkin() ; mesh[-1]=m1
4758 bary1=m1.computeCellCenterOfMass()[:,2]
4759 grp1=bary1.findIdsInRange(hauteur-1e-12,hauteur+1e-12) ; grp1.setName(grpName1)
4760 grp2=bary1.findIdsInRange(0.-1e-12,0.+1e-12) ; grp2.setName(grpName2)
4761 mesh.setGroupsAtLevel(-1,[grp1,grp2])
4764 st=cPickle.dumps(mesh,2)
4765 mm=cPickle.loads(st)
4766 st2=cPickle.dumps(mm,2)
4767 mm2=cPickle.loads(st2)
4768 self.assertTrue(mesh.isEqual(mm2,1e-12)[0])
4771 def testMEDFileEquivalence1(self):
4772 """ First check of equivalence implementation in MEDFileMesh"""
4773 fileName="Pyfile97.med"
4776 coo=DataArrayDouble([(0,0,0),(6,0,0),(19,0,0),(36,0,0),(0,4,0),(6,4,0),(19,4,0),(36,4,0),(0,13,0),(6,13,0),(19,13,0),(36,13,0),(0,24,0),(6,24,0),(19,24,0),(36,24,0),(0,0,6),(6,0,6),(19,0,6),(36,0,6),(0,4,6),(6,4,6),(19,4,6),(36,4,6),(0,13,6),(6,13,6),(19,13,6),(36,13,6),(0,24,6),(6,24,6),(19,24,6),(36,24,6),(6,0,3),(6,2,0),(12.5,0,0),(19,0,3),(19,2,0),(6,4,3),(12.5,4,0),(19,4,3),(6,2,6),(12.5,0,6),(19,2,6),(12.5,4,6),(6,2,3),(12.5,0,3),(12.5,2,0),(19,2,3),(12.5,4,3),(12.5,2,6),(12.5,2,3)])
4777 coo.setInfoOnComponents(["X [Sans_unite]","Y [Sans_unite]","Z [Sans_unite]"])
4778 connQ4=DataArrayInt([1,17,21,5,2,18,22,6,21,5,6,22,1,32,44,33,17,40,44,32,21,37,44,40,5,33,44,37,2,35,47,36,18,42,47,35,22,39,47,42,6,36,47,39,21,37,48,43,5,38,48,37,6,39,48,38,22,43,48,39])
4779 m1=MEDCoupling1SGTUMesh(meshName,NORM_QUAD4) ; m1.setCoords(coo) ; m1.setNodalConnectivity(connQ4) ; mm[-1]=m1
4780 connH8=DataArrayInt([20,16,17,21,4,0,1,5,22,18,19,23,6,2,3,7,24,20,21,25,8,4,5,9,25,21,22,26,9,5,6,10,26,22,23,27,10,6,7,11,28,24,25,29,12,8,9,13,29,25,26,30,13,9,10,14,30,26,27,31,14,10,11,15,21,40,49,43,37,44,50,48,40,17,41,49,44,32,45,50,49,41,18,42,50,45,35,47,43,49,42,22,48,50,47,39,44,32,45,50,33,1,34,46,37,44,50,48,5,33,46,38,48,50,47,39,38,46,36,6,50,45,35,47,46,34,2,36])
4781 m0=MEDCoupling1SGTUMesh(meshName,NORM_HEXA8) ; m0.setCoords(coo) ; m0.setNodalConnectivity(connH8) ; mm[0]=m0
4782 mm.getFamilyFieldAtLevel(-1)[:]=-2
4783 mm.getFamilyFieldAtLevel(0)[:]=0
4784 mm.addFamily("HOMARD________-1",-1)
4785 mm.addFamily("HOMARD________-2",-2)
4786 mm.addFamily("HOMARD________-3",-3)
4787 mm.setFamiliesIdsOnGroup("HOMARD",[-1,-2,-3])
4789 eqName="MAILLES_A_RECOLLER_APRES_HOMARD"
4790 descEq="Cette equivalence decrit les mailles a recoller. Dans chaque correspondance, le premier numero est celui de la maille coupee ; le second numero est celui d'une des petites mailles en regard."
4791 mm.initializeEquivalences()
4792 eqs=mm.getEquivalences()
4793 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4794 eq0.setDescription(descEq)
4795 corr=DataArrayInt([(0,3),(0,4),(0,5),(0,6),(1,7),(1,8),(1,9),(1,10),(2,11),(2,12),(2,13),(2,14)])
4796 eq0.setArray(-1,corr)
4797 self.assertEqual(eq0.getCell().size(),1)
4798 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4799 eq0.getCell().clear()
4800 self.assertEqual(eq0.getCell().size(),0)
4801 eq0.getCell().setArrayForType(NORM_QUAD4,corr)
4802 self.assertEqual(eq0.getCell().size(),1)
4803 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4804 mm.killEquivalences()
4805 mm.initializeEquivalences()
4806 eqs=mm.getEquivalences()
4807 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4808 eq0.setDescription(descEq)
4810 c.setArrayForType(NORM_QUAD4,corr)
4811 self.assertEqual(eq0.getCell().size(),1)
4812 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4814 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4815 self.assertEqual(mm2.getEquivalences().size(),1)
4816 self.assertTrue(mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4).isEqual(corr))
4817 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=2
4818 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
4819 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=0
4820 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4821 mm.write(fileName,2)
4823 mm3=MEDFileMesh.New(fileName)
4824 self.assertTrue(mm.isEqual(mm3,1e-12)[0])
4827 def testMEDFileForFamiliesPlayer1(self):
4828 """Non regression bug EDF11911. For serial killers using same family name to store both cells and nodes ! Only sky is the limit."""
4829 fileName="Pyfile98.med"
4831 magicSt="%s%%04i"%(MEDFileMesh.GetMagicFamilyStr())
4832 arr=DataArrayDouble(4) ; arr.iota()
4833 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4834 m=m.buildUnstructured()
4837 mm.setName(meshName)
4838 mm.setFamilyId("FAMILLE_ZERO",0)
4839 mm.getFamilyFieldAtLevel(0)[-3:]=-4
4840 mm.setFamilyId("RIDF%s"%(magicSt%0),-4)
4841 mm.setGroupsOnFamily("RIDF%s"%(magicSt%0),["RID"])
4842 d=DataArrayInt(16) ; d[:]=0 ; d[[1,2,4,5]]=3
4843 mm.setFamilyFieldArr(1,d)
4844 mm.setFamilyId("RIDF%s"%(magicSt%1),3)
4845 mm.setGroupsOnFamily("RIDF%s"%(magicSt%1),["RID"])
4846 self.assertEqual(mm.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4847 self.assertEqual(mm.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF")) # <- the aim of test is here !
4848 self.assertEqual(mm.getFamiliesIdsOnGroup("RID"),(-4,3))
4849 mm.write(fileName,2)
4850 # now read such funny file !
4851 mm2=MEDFileMesh.New(fileName) # <- normaly mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
4852 self.assertTrue(mm.isEqual(mm2,1e-16))
4853 self.assertEqual(mm2.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4854 self.assertEqual(mm2.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF"))
4855 self.assertEqual(mm2.getFamiliesIdsOnGroup("RID"),(-4,3))# <- very important too !
4858 def testCartesianizer1(self):
4859 """ This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. """
4861 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4862 mm=MEDFileUMesh() ; mm[0]=m ; mm.forceComputationOfParts()
4863 d0=DataArrayInt(16) ; d0[:]=0
4864 d1=DataArrayInt(9) ; d1[:]=0
4865 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4866 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4867 ref0=mm.getCoords().getHiddenCppPointer()
4868 ref1=mm[0].getNodalConnectivity().getHiddenCppPointer()
4869 self.assertEqual(ref0,mm[0].getCoords().getHiddenCppPointer())
4870 ref2=mm[0].getNodalConnectivityIndex().getHiddenCppPointer()
4871 ref3=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer()
4872 self.assertEqual(ref0,mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4873 mm.setAxisType(AX_CYL) #<- important
4874 mm2=mm.cartesianize() # the trigger
4875 self.assertEqual(mm2.getAxisType(),AX_CART)
4876 mm.setAxisType(AX_CART) # this is here only to avoid complaints
4877 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4878 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4879 self.assertTrue(ref0==mm.getCoords().getHiddenCppPointer()) # <- here important
4880 self.assertTrue(ref0!=mm2.getCoords().getHiddenCppPointer()) # <- here important
4881 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2[0].getCoords().getHiddenCppPointer())
4882 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4883 self.assertEqual(mm2[0].getNodalConnectivity().getHiddenCppPointer(),ref1) # <- here very important
4884 self.assertEqual(mm2[0].getNodalConnectivityIndex().getHiddenCppPointer(),ref2) # <- here very important
4885 self.assertEqual(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer(),ref3) # <- here very important
4886 self.assertEqual(mm2.getName(),mm.getName())
4887 self.assertEqual(mm2.getDescription(),mm.getDescription())
4888 self.assertEqual(mm2.getTime(),mm.getTime())
4889 self.assertEqual(mm2.getTime(),mm.getTime())
4890 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4891 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4892 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4893 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4894 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4895 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4896 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4897 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4899 mm.setAxisType(AX_CART)
4900 mm2=mm.cartesianize() # the trigger
4901 self.assertEqual(mm2.getAxisType(),AX_CART)
4902 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4903 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4904 # CurveLinearMesh non cart
4905 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildCurveLinear()
4906 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4907 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4908 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4909 ref0=mm.getMesh().getCoords().getHiddenCppPointer()
4910 mm2=mm.cartesianize() # the trigger
4911 self.assertEqual(mm2.getAxisType(),AX_CART)
4912 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4913 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4914 self.assertTrue(ref0==mm.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4915 self.assertTrue(ref0!=mm2.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4916 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4917 self.assertEqual(mm2.getName(),mm.getName())
4918 self.assertEqual(mm2.getDescription(),mm.getDescription())
4919 self.assertEqual(mm2.getTime(),mm.getTime())
4920 self.assertEqual(mm2.getTime(),mm.getTime())
4921 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4922 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4923 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4924 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4925 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4926 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4927 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4928 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4929 # CurveLinearMesh cart
4930 mm.setAxisType(AX_CART)
4931 mm2=mm.cartesianize() # the trigger
4932 self.assertEqual(mm2.getAxisType(),AX_CART)
4933 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4934 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4936 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4937 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4938 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4939 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4940 mm2=mm.cartesianize() # the trigger
4941 self.assertEqual(mm2.getAxisType(),AX_CART)
4942 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4943 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4944 self.assertEqual(mm2.getName(),mm.getName())
4945 self.assertEqual(mm2.getDescription(),mm.getDescription())
4946 self.assertEqual(mm2.getTime(),mm.getTime())
4947 self.assertEqual(mm2.getTime(),mm.getTime())
4948 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4949 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4950 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4951 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4952 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4953 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4954 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4955 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4957 mm.setAxisType(AX_CART)
4958 mm2=mm.cartesianize() # the trigger
4959 self.assertEqual(mm2.getAxisType(),AX_CART)
4960 self.assertTrue(isinstance(mm2,MEDFileCMesh))
4961 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4964 def testCheckCoherency(self):
4965 m2 = MEDCouplingUMesh("2d", 2)
4966 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
4967 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
4968 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
4969 mum = MEDFileUMesh()
4970 mum.setMeshAtLevel(0, m2)
4971 mum.setMeshAtLevel(-1, m1)
4972 mum.checkConsistency()
4973 mum2 = mum.deepCopy()
4976 arr = DataArrayInt([2]*4)
4977 mum.setFamilyFieldArr(1, arr); arr.reAlloc(35);
4978 self.assertRaises(InterpKernelException, mum.checkConsistency)
4979 mum=mum2; mum2=mum.deepCopy();
4980 arr = DataArrayInt([2]*4)
4981 mum.setRenumFieldArr(1, arr); arr.reAlloc(35);
4982 self.assertRaises(InterpKernelException, mum.checkConsistency)
4983 mum=mum2; mum2=mum.deepCopy();
4984 mum.setRenumFieldArr(1, DataArrayInt([2]*4))
4985 self.assertRaises(InterpKernelException, mum.checkConsistency)
4986 mum=mum2; mum2=mum.deepCopy();
4987 arr = DataArrayAsciiChar(['tutu x']*4)
4988 mum.setNameFieldAtLevel(1, arr); arr.reAlloc(35);
4989 self.assertRaises(InterpKernelException, mum.checkConsistency)
4992 mum=mum2; mum2=mum.deepCopy();
4993 arr = DataArrayInt([2]*2)
4994 mum.setFamilyFieldArr(0, arr); arr.reAlloc(35);
4995 self.assertRaises(InterpKernelException, mum.checkConsistency)
4996 mum=mum2; mum2=mum.deepCopy();
4997 arr = DataArrayInt([2]*2)
4998 mum.setRenumFieldArr(0, arr); arr.reAlloc(35);
4999 self.assertRaises(InterpKernelException, mum.checkConsistency)
5000 mum=mum2; mum2=mum.deepCopy();
5001 mum.setRenumFieldArr(0, DataArrayInt([2]*2))
5002 self.assertRaises(InterpKernelException, mum.checkConsistency)
5003 mum=mum2; mum2=mum.deepCopy();
5004 arr = DataArrayAsciiChar(['tutu x']*2)
5005 mum.setNameFieldAtLevel(0, arr); arr.reAlloc(35);
5006 self.assertRaises(InterpKernelException, mum.checkConsistency)
5009 mum=mum2; mum2=mum.deepCopy();
5010 arr = DataArrayInt([2]*5)
5011 mum.setFamilyFieldArr(-1, arr); arr.reAlloc(35);
5012 self.assertRaises(InterpKernelException, mum.checkConsistency)
5013 mum=mum2; mum2=mum.deepCopy();
5014 arr = DataArrayInt([2]*5)
5015 mum.setRenumFieldArr(-1, arr); arr.reAlloc(35);
5016 self.assertRaises(InterpKernelException, mum.checkConsistency)
5017 mum=mum2; mum2=mum.deepCopy();
5018 mum.setRenumFieldArr(-1, DataArrayInt([2]*5))
5019 self.assertRaises(InterpKernelException, mum.checkConsistency)
5020 mum=mum2; mum2=mum.deepCopy();
5021 arr = DataArrayAsciiChar(['tutu x']*5)
5022 mum.setNameFieldAtLevel(-1, arr); arr.reAlloc(35);
5023 self.assertRaises(InterpKernelException, mum.checkConsistency)
5025 def testCheckSMESHConsistency(self):
5026 m2 = MEDCouplingUMesh("2d", 2)
5027 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5028 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5029 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5030 mum = MEDFileUMesh()
5031 mum.setMeshAtLevel(0, m2)
5032 mum.setMeshAtLevel(-1, m1)
5033 mum.checkConsistency()
5034 mum.checkSMESHConsistency()
5035 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5036 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5037 mum.setRenumFieldArr(0, n2)
5038 mum.setRenumFieldArr(-1, n1)
5039 self.assertRaises(InterpKernelException, mum.checkSMESHConsistency)
5040 mum.setRenumFieldArr(-1, n1+100)
5041 mum.checkSMESHConsistency()
5044 def testClearNodeAndCellNumbers(self):
5045 m2 = MEDCouplingUMesh("2d", 2)
5046 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5047 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5048 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5049 mum = MEDFileUMesh()
5050 mum.setMeshAtLevel(0, m2)
5051 mum.setMeshAtLevel(-1, m1)
5052 mum.checkConsistency()
5053 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5054 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5055 mum.setRenumFieldArr(0, n2)
5056 mum.setRenumFieldArr(-1, n1)
5057 mum.clearNodeAndCellNumbers()
5058 mum.checkSMESHConsistency()
5061 def testCMeshSetFamilyFieldArrNull(self):
5063 fname="Pyfile99.med"
5064 arrX=DataArrayDouble([0,1,2,3])
5065 arrY=DataArrayDouble([0,1,2])
5066 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m.setName(meshName)
5067 mm=MEDFileCMesh() ; mm.setMesh(m)
5068 famCellIds=DataArrayInt([0,-2,-2,-1,-2,0])
5069 famNodeIds=DataArrayInt([0,0,0,3,4,1,2,7,2,1,0,0])
5070 mm.setFamilyFieldArr(0,famCellIds)
5071 mm.setFamilyFieldArr(1,famNodeIds)
5073 mm=MEDFileMesh.New(fname)
5074 self.assertTrue(mm.getFamilyFieldAtLevel(0) is not None)
5075 self.assertTrue(mm.getFamilyFieldAtLevel(1) is not None)
5076 mm.setFamilyFieldArr(0,None)#<- bug was here
5077 mm.setFamilyFieldArr(1,None)#<- bug was here
5078 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
5079 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
5081 self.assertTrue(mm3.getFamilyFieldAtLevel(0) is None)
5082 self.assertTrue(mm3.getFamilyFieldAtLevel(1) is None)
5084 mm2=MEDFileMesh.New(fname)
5085 self.assertTrue(mm2.getFamilyFieldAtLevel(0) is None)
5086 self.assertTrue(mm2.getFamilyFieldAtLevel(1) is None)
5089 def testAppendFieldProfileOnIntField(self):
5090 fname="Pyfile100.med"
5091 arrX=DataArrayDouble([0,1,2,3])
5092 arrY=DataArrayDouble([0,1,2])
5093 mesh=MEDCouplingCMesh() ; mesh.setCoords(arrX,arrY) ; mesh.setName("Mesh")
5097 fmts=MEDFileIntFieldMultiTS()
5099 pfl=DataArrayInt([1,3,5]) ; pfl.setName(pflName)
5100 f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(mesh)
5101 fieldName="FieldOnCell"
5102 f.setTime(1.2,1,1) ; f.setName(fieldName)
5103 arr=DataArrayInt([101,102,103]) ; f.setArray(arr)
5104 fmts.appendFieldProfile(f,mm,0,pfl)
5109 mm=MEDFileMesh.New(fname)
5110 fmts=MEDFileAnyTypeFieldMultiTS.New(fname)
5111 self.assertTrue(isinstance(fmts,MEDFileIntFieldMultiTS))
5112 self.assertEqual(fmts.getName(),fieldName)
5113 self.assertEqual(len(fmts),1)
5115 ftest,pfltest=f1ts.getFieldWithProfile(ON_CELLS,0,mm)
5116 self.assertEqual(pfltest.getName(),pflName)
5117 self.assertEqual(ftest.getName(),fieldName)
5118 self.assertTrue(ftest.isEqualWithoutConsideringStr(arr))
5119 ftest2=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
5120 self.assertTrue(ftest2.getArray().isEqualWithoutConsideringStr(arr))
5121 self.assertEqual(ftest2.getTime(),f.getTime())
5122 self.assertEqual(ftest2.getMesh().getNumberOfCells(),len(arr))
5125 def testMEDFileFieldEasyField1(self):
5126 """Check for all spatial discretization of field (cells,nodes,elno,gauss) for double field that all is OK. Here no profile and only top level is considered."""
5127 ## Basic test on cells on top level
5128 fname="Pyfile101.med"
5131 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5132 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5134 m.insertNextCell(NORM_TRI3,[0,1,2])
5135 m.insertNextCell(NORM_TRI3,[3,4,5])
5136 m.insertNextCell(NORM_TRI3,[6,7,8])
5137 m.insertNextCell(NORM_TRI3,[9,10,11])
5138 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5139 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5142 arr0=DataArrayDouble([10,11,12,13,100,101])
5143 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5144 f.setName(fieldName) ; f.setTime(2.,6,7)
5146 ff=MEDFileFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5148 arr2=arr0+1000 ; f.setArray(arr2)
5149 f.setTime(3.,8,9) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5153 mm=MEDFileMesh.New(fname)
5154 f1ts=MEDFileField1TS(fname,fieldName,6,7)
5155 ftst0=f1ts.field(mm)
5156 self.assertTrue(f0.isEqual(ftst0,1e-12,1e-12))
5157 f1ts=MEDFileField1TS(fname,fieldName,8,9)
5158 ftst1=f1ts.field(mm)
5159 self.assertTrue(f1.isEqual(ftst1,1e-12,1e-12))
5160 fmts=MEDFileFieldMultiTS(fname,fieldName)
5161 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,1e-12))
5162 ## Basic test on nodes on top level
5163 f2=MEDCouplingFieldDouble(ON_NODES) ; arr2=DataArrayDouble([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5164 f2.setName(fieldName)
5166 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5168 mm=MEDFileMesh.New(fname)
5169 f1ts=MEDFileField1TS(fname,fieldName,23,24)
5170 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,1e-12))
5171 fmts=MEDFileFieldMultiTS(fname,fieldName)
5172 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,1e-12))
5174 f3=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f3.setMesh(m) ; arr3=DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5175 f3.setName(fieldName) ; f3.checkConsistencyLight()
5176 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5178 mm=MEDFileMesh.New(fname)
5179 f1ts=MEDFileField1TS(fname,fieldName,2,3)
5180 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5182 f4=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5183 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,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.1,0.05,0.35])
5184 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5185 arr4=DataArrayDouble([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5186 f4.checkConsistencyLight()
5187 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5189 mm=MEDFileMesh.New(fname)
5190 f1ts=MEDFileField1TS(fname,fieldName,4,5)
5191 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5194 def testMEDFileFieldEasyField2(self):
5195 """Same thantestMEDFileFieldEasyField1 except that here intfields are considered.
5196 Check for all spatial discretization of field (cells,nodes,elno,gauss) for int field that all is OK. Here no profile and only top level is considered."""
5197 ## Basic test on cells on top level
5198 fname="Pyfile102.med"
5201 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5202 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5204 m.insertNextCell(NORM_TRI3,[0,1,2])
5205 m.insertNextCell(NORM_TRI3,[3,4,5])
5206 m.insertNextCell(NORM_TRI3,[6,7,8])
5207 m.insertNextCell(NORM_TRI3,[9,10,11])
5208 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5209 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5212 arr0=DataArrayInt([10,11,12,13,100,101])
5213 f=MEDCouplingFieldInt(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5214 f.setName(fieldName) ; f.setTime(2.,6,7)
5216 ff=MEDFileIntFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5218 arr2=arr0+1000 ; f.setArray(arr2)
5219 f.setTime(3.,8,9) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f)
5223 mm=MEDFileMesh.New(fname)
5224 f1ts=MEDFileIntField1TS(fname,fieldName,6,7)
5225 ftst0=f1ts.field(mm)
5226 self.assertTrue(f0.isEqual(ftst0,1e-12,1e-12))
5227 f1ts=MEDFileIntField1TS(fname,fieldName,8,9)
5228 ftst1=f1ts.field(mm)
5229 self.assertTrue(f1.isEqual(ftst1,1e-12,1e-12))
5230 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5231 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,1e-12))
5232 ## Basic test on nodes on top level
5233 f2=MEDCouplingFieldInt(ON_NODES) ; arr2=DataArrayInt([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5234 f2.setName(fieldName)
5236 ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5238 mm=MEDFileMesh.New(fname)
5239 f1ts=MEDFileIntField1TS(fname,fieldName,23,24)
5240 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,1e-12))
5241 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5242 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,1e-12))
5244 f3=MEDCouplingFieldInt(ON_GAUSS_NE) ; f3.setMesh(m) ; arr3=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5245 f3.setName(fieldName) ; f3.checkConsistencyLight()
5246 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5248 mm=MEDFileMesh.New(fname)
5249 f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5250 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5252 f4=MEDCouplingFieldInt(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5253 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,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.1,0.05,0.35])
5254 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5255 arr4=DataArrayInt([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5256 f4.checkConsistencyLight()
5257 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5259 mm=MEDFileMesh.New(fname)
5260 f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5261 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5264 def testMEDFileFieldEasyField3(self):
5265 """Here a multi level mesh. And field on cells lying on different level of this mesh. Show how "field" method deal with that. Here on field double are considered."""
5266 fname="Pyfile103.med"
5269 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5270 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5272 m.insertNextCell(NORM_TRI3,[0,1,2])
5273 m.insertNextCell(NORM_TRI3,[3,4,5])
5274 m.insertNextCell(NORM_TRI3,[6,7,8])
5275 m.insertNextCell(NORM_TRI3,[9,10,11])
5276 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5277 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5279 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5281 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5282 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5286 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5287 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5289 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,1,2)
5290 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5291 # here f1 lying on level -1 not 0 check if "field" method detect it !
5292 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5293 f1.setMesh(mm[-1]) # -1 is very important
5295 f1.checkConsistencyLight()
5297 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5299 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,3,4)
5300 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5302 f3=MEDCouplingFieldDouble(ON_GAUSS_NE)
5303 f3.setMesh(mm[-1]) # this line is important
5304 arr3=DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5305 f3.setName(fieldName) ; f3.checkConsistencyLight()
5306 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5308 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,2,3)
5309 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5311 f4=MEDCouplingFieldDouble(ON_GAUSS_PT)
5312 f4.setMesh(mm[-1]) # this line is important
5313 f4.setName(fieldName)
5314 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,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.1,0.05,0.35])
5315 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5316 arr4=DataArrayDouble([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5317 f4.checkConsistencyLight()
5318 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5319 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,4,5)
5320 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5323 def testMEDFileFieldEasyField4(self):
5324 """ Same than testMEDFileFieldEasyField3 but with integers"""
5325 fname="Pyfile104.med"
5328 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5329 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5331 m.insertNextCell(NORM_TRI3,[0,1,2])
5332 m.insertNextCell(NORM_TRI3,[3,4,5])
5333 m.insertNextCell(NORM_TRI3,[6,7,8])
5334 m.insertNextCell(NORM_TRI3,[9,10,11])
5335 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5336 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5338 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5340 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5341 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5345 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5346 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5348 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,1,2)
5349 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5350 # here f1 lying on level -1 not 0 check if "field" method detect it !
5351 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5352 f1.setMesh(mm[-1]) # -1 is very important
5354 f1.checkConsistencyLight()
5356 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5358 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,3,4)
5359 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5361 f3=MEDCouplingFieldInt(ON_GAUSS_NE)
5362 f3.setMesh(mm[-1]) # this line is important
5363 arr3=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5364 f3.setName(fieldName) ; f3.checkConsistencyLight()
5365 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5367 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5368 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5370 f4=MEDCouplingFieldInt(ON_GAUSS_PT)
5371 f4.setMesh(mm[-1]) # this line is important
5372 f4.setName(fieldName)
5373 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,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.1,0.05,0.35])
5374 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5375 arr4=DataArrayInt([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5376 f4.checkConsistencyLight()
5377 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5378 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5379 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5382 def testMEDFileFieldEasyField5(self):
5383 """More and more difficult now look at how profiles are managed by "field" method."""
5384 fname="Pyfile105.med"
5387 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5388 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5390 m.insertNextCell(NORM_TRI3,[0,1,2])
5391 m.insertNextCell(NORM_TRI3,[3,4,5])
5392 m.insertNextCell(NORM_TRI3,[6,7,8])
5393 m.insertNextCell(NORM_TRI3,[9,10,11])
5394 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5395 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5398 pfl=DataArrayInt([0,2,3,5]) ; pfl.setName("pfl")
5399 m2=m.deepCopy()[pfl] ; m2.setName(m.getName())
5401 arr0=DataArrayDouble([10,11,12,13])
5402 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m2)
5403 f.setName(fieldName) ; f.setTime(2.,6,7) ; f.checkConsistencyLight()
5404 ff=MEDFileFieldMultiTS() ; ff.appendFieldProfile(f,mm,0,pfl) # ff is a field on profile
5407 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5408 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5409 # more complicated -> multi level
5410 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5412 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5413 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5415 mm2[0]=m0 ; mm2[-1]=m
5417 ff=MEDFileField1TS() ; ff.setFieldProfile(f,mm2,-1,pfl)
5419 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5420 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5423 def testExtractPart1(self):
5424 coo=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(3,1),(4,1),(0,2),(1,2),(2,2),(3,2),(4,2)])
5426 m0=MEDCouplingUMesh(meshName,2) ; m0.setCoords(coo) ; m0.allocateCells()
5427 m0.insertNextCell(NORM_TRI3,[8,4,3])
5428 m0.insertNextCell(NORM_TRI3,[8,9,4])
5429 m0.insertNextCell(NORM_TRI3,[7,13,8])
5430 m0.insertNextCell(NORM_TRI3,[7,12,13])
5431 m0.insertNextCell(NORM_TRI3,[0,6,1])
5432 m0.insertNextCell(NORM_TRI3,[0,5,6])
5433 m0.insertNextCell(NORM_QUAD4,[1,6,7,2])
5434 m0.insertNextCell(NORM_QUAD4,[2,7,8,3])
5435 m0.insertNextCell(NORM_QUAD4,[8,13,14,9])
5436 m0.insertNextCell(NORM_QUAD4,[6,11,12,7])
5437 m0.insertNextCell(NORM_QUAD4,[5,10,11,6])
5439 m1=MEDCouplingUMesh(meshName,1) ; m1.setCoords(coo) ; m1.allocateCells()
5440 m1.insertNextCell(NORM_SEG2,[10,5])
5441 m1.insertNextCell(NORM_SEG2,[5,0])
5442 m1.insertNextCell(NORM_SEG2,[0,1])
5443 m1.insertNextCell(NORM_SEG2,[1,2])
5444 m1.insertNextCell(NORM_SEG2,[2,3])
5445 m1.insertNextCell(NORM_SEG2,[3,4])
5446 m1.insertNextCell(NORM_SEG2,[4,9])
5447 m1.insertNextCell(NORM_SEG2,[9,14])
5448 m1.insertNextCell(NORM_SEG2,[14,13])
5449 m1.insertNextCell(NORM_SEG2,[13,12])
5450 m1.insertNextCell(NORM_SEG2,[12,11])
5451 m1.insertNextCell(NORM_SEG2,[11,10])
5453 mm[0]=m0 ; mm[-1]=m1
5454 arr0=DataArrayInt([0,1,2,3,4,6,7,8,12,13])
5456 tab[0]=DataArrayInt([0,2,3,4,6,7])
5457 tab[-1]=DataArrayInt([2,3,4,5,9])
5459 self.assertTrue(mm.deduceNodeSubPartFromCellSubPart(tab).isEqual(arr0))
5463 fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5466 arr0_0=DataArrayDouble([100,101,102,103,104,105,106,107,108,109,110]) ; arr0_0.setInfoOnComponents(ic)
5467 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*t0) ; f0.setArray(arr0_0)
5468 f0.setMesh(m0) ; f0.setName(fname0)
5469 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setTime(*t0) ; f1.setArray(DataArrayDouble([200,201,202,203,204,205,206,207,208,209,210,211]))
5470 f1.setMesh(m1) ; f1.setName(fname0) ; f1.getArray().setInfoOnComponents(ic)
5471 f2=MEDCouplingFieldDouble(ON_NODES) ; f2.setTime(*t0) ; f2.setArray(DataArrayDouble([300,301,302,303,304,305,306,307,308,309,310,311,312,313,314]))
5472 f2.setMesh(m0) ; f2.setName(fname0) ; f2.getArray().setInfoOnComponents(ic)
5473 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.setFieldNoProfileSBT(f2)
5474 fmts.pushBackTimeStep(f1ts)
5476 mmOut=mm.extractPart(tab)
5478 fsPart0=fs.extractPart(tab,mm)
5479 self.assertEqual(len(fsPart0),1)
5481 self.assertEqual(len(fmtsP),1)
5483 self.assertRaises(InterpKernelException,f1ts.field,mmOut)
5485 self.assertTrue(mmOut[0].computeCellCenterOfMass().isEqual(m0[tab[0]].computeCellCenterOfMass(),1e-12))
5486 self.assertTrue(mmOut[-1].computeCellCenterOfMass().isEqual(m1[tab[-1]].computeCellCenterOfMass(),1e-12))
5488 m0Part=m0.deepCopy()[tab[0]] ; m0Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m0Part.setName(m0.getName())
5489 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5490 m1Part=m1.deepCopy()[tab[-1]] ; m1Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m1Part.setName(m0.getName())
5491 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5492 self.assertTrue(mmOut[-1].isEqual(m1Part,1e-12))
5494 f0Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mmOut) ; f0Part.checkConsistencyLight()
5495 self.assertEqual(f0Part.getTypeOfField(),ON_CELLS)
5496 self.assertTrue(f0Part.getMesh().isEqual(m0Part,1e-12))
5497 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic)
5498 self.assertTrue(f0Part.getArray().isEqual(arr0Exp,1e-12)) ; self.assertEqual(f0Part.getTime(),list(t0))
5499 f1Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,-1,mmOut) ; f1Part.checkConsistencyLight()
5500 self.assertEqual(f1Part.getTypeOfField(),ON_CELLS)
5501 self.assertTrue(f1Part.getMesh().isEqual(m1Part,1e-12))
5502 arr1Exp=DataArrayDouble([202,203,204,205,209]) ; arr1Exp.setInfoOnComponents(ic)
5503 self.assertTrue(f1Part.getArray().isEqual(arr1Exp,1e-12)) ; self.assertEqual(f1Part.getTime(),list(t0))
5505 f2Part=f1ts.getFieldOnMeshAtLevel(ON_NODES,0,mmOut) ; f2Part.checkConsistencyLight()
5506 arr2Exp=DataArrayDouble([300,301,302,303,304,306,307,308,312,313]) ; arr2Exp.setInfoOnComponents(ic)
5507 self.assertTrue(f2Part.getArray().isEqual(arr2Exp,1e-12)) ; self.assertEqual(f2Part.getTime(),list(t0))
5509 fs=MEDFileFields() ; fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5510 tss=[(16.5,3,4),(17.5,4,5),(18.5,5,6)]
5511 for i,tt in enumerate(tss):
5512 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*tt)
5513 myarr=arr0_0+i*1000.
5515 f0.setMesh(m0) ; f0.setName(fname0) ; f0.getArray().setInfoOnComponents(ic)
5516 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; fmts.pushBackTimeStep(f1ts)
5518 fsPart1=fs.extractPart(tab,mm)
5519 self.assertEqual(len(fsPart1),1)
5521 self.assertEqual(len(fmtsP),len(tss))
5522 for i,(f1tsP,tt) in enumerate(zip(fmtsP,tss)):
5523 fPart=f1tsP.field(mmOut) ; fPart.checkConsistencyLight()
5524 self.assertEqual(fPart.getTypeOfField(),ON_CELLS)
5525 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic) ; arr0Exp+=i*1000.
5526 self.assertTrue(fPart.getMesh().isEqual(m0Part,1e-12))
5527 self.assertTrue(fPart.getArray().isEqual(arr0Exp,1e-12))
5528 self.assertEqual(fPart.getTime(),list(tt))
5532 def testSymmetryPlusAggregationMFD1(self):
5533 """ Testing of MEDFileData::Aggregate and MEDFileUMesh::Aggregate and MEDFileUMesh::getAllDistributionOfType """
5534 fname1="Pyfile106_1.med"
5535 fname2="Pyfile106_2.med"
5536 fname3="Pyfile106_3.med"
5539 da1=DataArrayDouble([1,2,10,3,4,11,5,6,12,7,8,13],4,3) ; da1.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5541 mm1_0=MEDCouplingUMesh(meshName,3) ; mm1_0.allocateCells()
5542 mm1_0.setCoords(da1)
5543 mm1_0.insertNextCell(NORM_TETRA4,[0,1,2,3])
5544 mm1_0.insertNextCell(NORM_TETRA4,[4,5,6,7])
5545 mm1_0.insertNextCell(NORM_PENTA6,[8,9,10,11,12,13])
5546 mm1_0.insertNextCell(NORM_PENTA6,[14,15,16,17,18,19])
5547 mm1_0.insertNextCell(NORM_PENTA6,[20,21,22,23,24,25])
5549 mm1.setFamilyFieldArr(0,DataArrayInt([1,2,3,4,5]))
5550 mm1.setRenumFieldArr(0,DataArrayInt([11,12,13,14,15]))
5552 mm1_1=MEDCouplingUMesh(meshName,2) ; mm1_1.allocateCells()
5553 mm1_1.setCoords(da1)
5554 mm1_1.insertNextCell(NORM_TRI3,[0,1,2])
5555 mm1_1.insertNextCell(NORM_TRI3,[3,4,5])
5556 mm1_1.insertNextCell(NORM_QUAD4,[6,7,8,9])
5557 mm1_1.insertNextCell(NORM_QUAD4,[10,11,12,13])
5558 mm1_1.insertNextCell(NORM_QUAD4,[14,15,16,17])
5559 mm1_1.insertNextCell(NORM_QUAD4,[18,19,20,21])
5561 mm1.setFamilyFieldArr(-1,DataArrayInt([6,7,8,9,10,11]))
5562 mm1.setRenumFieldArr(-1,DataArrayInt([16,17,18,19,20,21]))
5563 for i in range(1,10):
5564 mm1.setFamilyId("F%d"%i,i)
5565 mm1.setFamilyId("FAMILLE_ZERO",0)
5566 mm1.setFamilyId("H1",100)
5567 mm1.setFamiliesOnGroup("myGRP",["F2","F6"])
5568 mm1.setFamiliesOnGroup("myGRP1",["F2","F6"])
5569 mm1.setFamilyFieldArr(1,DataArrayInt([12,13,14,15]))
5570 mm1.setRenumFieldArr(1,DataArrayInt([22,23,24,25]))
5573 da1=DataArrayDouble([9,10,30,11,12,31,13,14,32,15,16,33,17,18,34],5,3) ; da1.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5575 mm2_0=MEDCouplingUMesh(meshName,3) ; mm2_0.allocateCells()
5576 mm2_0.setCoords(da1)
5577 mm2_0.insertNextCell(NORM_TETRA4,[100,101,102,103])
5578 mm2_0.insertNextCell(NORM_TETRA4,[104,105,106,107])
5579 mm2_0.insertNextCell(NORM_TETRA4,[108,109,110,111])
5580 mm2_0.insertNextCell(NORM_PENTA6,[112,113,114,115,116,117])
5582 mm2.setFamilyFieldArr(0,DataArrayInt([40,41,42,43]))
5583 mm2.setRenumFieldArr(0,DataArrayInt([50,51,52,53]))
5585 mm2_1=MEDCouplingUMesh(meshName,2) ; mm2_1.allocateCells()
5586 mm2_1.setCoords(da1)
5587 mm2_1.insertNextCell(NORM_TRI3,[100,101,102])
5588 mm2_1.insertNextCell(NORM_TRI3,[103,104,105])
5589 mm2_1.insertNextCell(NORM_TRI3,[106,107,108])
5590 mm2_1.insertNextCell(NORM_QUAD4,[109,110,111,112])
5591 mm2_1.insertNextCell(NORM_QUAD4,[113,114,115,116])
5592 mm2_1.insertNextCell(NORM_QUAD4,[117,118,119,120])
5593 mm2_1.insertNextCell(NORM_QUAD4,[121,122,123,124])
5594 mm2_1.insertNextCell(NORM_QUAD4,[125,126,127,128])
5596 mm2.setFamilyFieldArr(-1,DataArrayInt([200,201,202,203,204,205,206,207]))
5597 mm2.setRenumFieldArr(-1,DataArrayInt([300,301,302,303,304,305,306,307]))
5598 for i in range(1,12):
5599 mm2.setFamilyId("G%d"%i,i+30)
5600 mm2.setFamilyId("H1",100)
5601 mm2.setFamilyId("FAMILLE_ZERO",0)
5602 mm2.setFamiliesOnGroup("myGRP",["G2","G6"])
5603 mm2.setFamiliesOnGroup("myGRP2",["G4","G7"])
5604 mm2.setFamilyFieldArr(1,DataArrayInt([112,113,114,115,116]))
5605 mm2.setRenumFieldArr(1,DataArrayInt([122,123,124,125,126]))
5607 mm=MEDFileUMesh.Aggregate([mm1,mm2])
5609 def CheckMesh(tester,mm):
5610 cooExp=DataArrayDouble([(1,2,10),(3,4,11),(5,6,12),(7,8,13),(9,10,30),(11,12,31),(13,14,32),(15,16,33),(17,18,34)]) ; cooExp.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5611 tester.assertTrue(mm.getCoords().isEqual(cooExp,1e-12))
5612 tester.assertTrue(mm[0].getNodalConnectivity().isEqual(DataArrayInt([14,0,1,2,3,14,4,5,6,7,14,104,105,106,107,14,108,109,110,111,14,112,113,114,115,16,8,9,10,11,12,13,16,14,15,16,17,18,19,16,20,21,22,23,24,25,16,116,117,118,119,120,121])))
5613 tester.assertTrue(mm[0].getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,32,39,46,53])))
5614 tester.assertTrue(mm[-1].getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,104,105,106,3,107,108,109,3,110,111,112,4,6,7,8,9,4,10,11,12,13,4,14,15,16,17,4,18,19,20,21,4,113,114,115,116,4,117,118,119,120,4,121,122,123,124,4,125,126,127,128,4,129,130,131,132])))
5615 tester.assertTrue(mm[-1].getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20,25,30,35,40,45,50,55,60,65])))
5616 tester.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([1,2,40,41,42,3,4,5,43])))
5617 tester.assertTrue(mm.getNumberFieldAtLevel(0).isEqual(DataArrayInt([11,12,50,51,52,13,14,15,53])))
5618 tester.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(DataArrayInt([6,7,200,201,202,8,9,10,11,203,204,205,206,207])))
5619 tester.assertTrue(mm.getNumberFieldAtLevel(-1).isEqual(DataArrayInt([16,17,300,301,302,18,19,20,21,303,304,305,306,307])))
5620 refFamIds=[("FAMILLE_ZERO",0),('F1',1),('F2',2),('F3',3),('F4',4),('F5',5),('F6',6),('F7',7),('F8',8),('F9',9),('G1',31),('G10',40),('G11',41),('G2',32),('G3',33),('G4',34),('G5',35),('G6',36),('G7',37),('G8',38),('G9',39),("H1",100)]
5621 tester.assertEqual(set(mm.getFamiliesNames()),set([elt[0] for elt in refFamIds]))
5622 tester.assertEqual(set([mm.getFamilyId(elt) for elt in mm.getFamiliesNames()]),set([elt[1] for elt in refFamIds]))
5623 tester.assertEqual(mm.getGroupsNames(),('myGRP','myGRP1','myGRP2'))
5624 tester.assertEqual(mm.getAllDistributionOfTypes(),[(NORM_TRI3,5),(NORM_QUAD4,9),(NORM_TETRA4,5),(NORM_PENTA6,4),(NORM_ERROR,9)])
5631 infoc=["dd [W]","eee [kA]"]
5633 fmts1=MEDFileFieldMultiTS()
5634 f1ts1=MEDFileField1TS()
5635 f1_1=MEDCouplingFieldDouble(ON_CELLS) ; f1_1.setMesh(mm1[0]) ; f1_1.setName(fieldName)
5636 arr1=DataArrayDouble([(10,110),(11,111),(12,112),(13,113),(14,114)])
5637 arr1.setInfoOnComponents(infoc)
5638 f1_1.setArray(arr1) ; f1_1.setTime(*t1) ; f1_1.setTimeUnit("ms")
5639 f1_1.checkConsistencyLight()
5640 f1ts1.setFieldNoProfileSBT(f1_1)
5642 f1_2=MEDCouplingFieldDouble(ON_CELLS) ; f1_2.setMesh(mm1[-1]) ; f1_2.setName(fieldName)
5643 arr2=DataArrayDouble([(15,115),(16,116),(17,117),(18,118),(19,119),(20,120)])
5644 arr2.setInfoOnComponents(infoc)
5645 f1_2.setArray(arr2) ; f1_2.setTime(*t1) ; f1_2.setTimeUnit("ms")
5646 f1_2.checkConsistencyLight()
5647 f1ts1.setFieldNoProfileSBT(f1_2)
5648 f1_3=MEDCouplingFieldDouble(ON_NODES) ; f1_3.setMesh(mm1[0]) ; f1_3.setName(fieldName)
5649 arr3=DataArrayDouble([(21,121),(22,122),(23,123),(24,124)])
5650 arr3.setInfoOnComponents(infoc)
5651 f1_3.setArray(arr3) ; f1_3.setTime(*t1) ; f1_3.setTimeUnit("ms")
5652 f1_3.checkConsistencyLight()
5653 f1ts1.setFieldNoProfileSBT(f1_3)
5654 fmts1.pushBackTimeStep(f1ts1)
5656 f1ts2=f1ts1.deepCopy()
5657 f1ts2.setTime(t2[1],t2[2],t2[0])
5658 f1ts2.getUndergroundDataArray()[:]+=2000
5659 fmts1.pushBackTimeStep(f1ts2)
5661 fmts2=MEDFileFieldMultiTS()
5662 f1ts3=MEDFileField1TS()
5663 f2_1=MEDCouplingFieldDouble(ON_CELLS) ; f2_1.setMesh(mm2[0]) ; f2_1.setName(fieldName)
5664 arr4=DataArrayDouble([(50,150),(51,151),(52,152),(53,153)])
5665 arr4.setInfoOnComponents(infoc)
5666 f2_1.setArray(arr4) ; f2_1.setTime(*t1) ; f2_1.setTimeUnit("ms")
5667 f2_1.checkConsistencyLight()
5668 f1ts3.setFieldNoProfileSBT(f2_1)
5669 f2_2=MEDCouplingFieldDouble(ON_CELLS) ; f2_2.setMesh(mm2[-1]) ; f2_2.setName(fieldName)
5670 arr5=DataArrayDouble([(54,154),(55,155),(56,156),(57,157),(158,158),(59,159),(60,160),(61,161)])
5671 arr5.setInfoOnComponents(infoc)
5672 f2_2.setArray(arr5) ; f2_2.setTime(*t1) ; f2_2.setTimeUnit("ms")
5673 f2_2.checkConsistencyLight()
5674 f1ts3.setFieldNoProfileSBT(f2_2)
5675 f2_3=MEDCouplingFieldDouble(ON_NODES) ; f2_3.setMesh(mm2[0]) ; f2_3.setName(fieldName)
5676 arr6=DataArrayDouble([(62,162),(63,163),(64,164),(65,165),(66,166)])
5677 arr6.setInfoOnComponents(infoc)
5678 f2_3.setArray(arr6) ; f2_3.setTime(*t1) ; f2_3.setTimeUnit("ms")
5679 f2_3.checkConsistencyLight()
5680 f1ts3.setFieldNoProfileSBT(f2_3)
5681 fmts2.pushBackTimeStep(f1ts3)
5683 f1ts4=f1ts3.deepCopy()
5684 f1ts4.setTime(t2[1],t2[2],t2[0])
5685 f1ts4.getUndergroundDataArray()[:]+=2000
5686 fmts2.pushBackTimeStep(f1ts4)
5689 mfd1.setMeshes(MEDFileMeshes())
5690 mfd1.getMeshes().pushMesh(mm1)
5691 mfd1.setFields(MEDFileFields())
5692 mfd1.getFields().pushField(fmts1)
5695 mfd2.setMeshes(MEDFileMeshes())
5696 mfd2.getMeshes().pushMesh(mm2)
5697 mfd2.setFields(MEDFileFields())
5698 mfd2.getFields().pushField(fmts2)
5700 mfd=MEDFileData.Aggregate([mfd1,mfd2])
5701 def CheckMFD(tester,mfd):
5702 tester.assertEqual(len(mfd.getMeshes()),1)
5703 tester.assertEqual(len(mfd.getFields()),1)
5704 CheckMesh(self,mfd.getMeshes()[0])
5705 tester.assertEqual(len(mfd.getFields()[0]),2)
5706 zeF1=mfd.getFields()[0][0]
5707 zeF1_1=zeF1.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
5708 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
5709 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5710 ref.renumberCells(o2n)
5711 tester.assertTrue(ref.isEqual(zeF1_1,1e-12,1e-12))
5712 zeF1_2=zeF1.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
5713 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
5714 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5715 ref.renumberCells(o2n)
5716 tester.assertTrue(ref.isEqual(zeF1_2,1e-12,1e-12))
5717 zeF1_3=zeF1.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
5718 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
5719 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5720 ref.renumberCells(o2n)
5721 tester.assertTrue(ref.isEqual(zeF1_3,1e-12,1e-12))
5723 zeF2=mfd.getFields()[0][1]
5724 zeF2_1=zeF2.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
5725 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
5726 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5727 ref.renumberCells(o2n)
5728 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5729 tester.assertTrue(ref.isEqual(zeF2_1,1e-12,1e-12))
5730 zeF2_2=zeF2.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
5731 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
5732 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5733 ref.renumberCells(o2n)
5734 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5735 tester.assertTrue(ref.isEqual(zeF2_2,1e-12,1e-12))
5736 zeF2_3=zeF2.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
5737 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
5738 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5739 ref.renumberCells(o2n)
5740 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5741 tester.assertTrue(ref.isEqual(zeF2_3,1e-12,1e-12))
5743 mfd1.write(fname1,2) ; mfd2.write(fname2,2)
5744 mfd=MEDFileData.Aggregate([MEDFileData(fname1),MEDFileData(fname2)])
5748 def testExtrudedMesh1(self):
5749 fname="Pyfile107.med"
5750 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
5751 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ) ; mesh3D.setName("mesh")
5752 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
5755 ex2=mm.convertToExtrudedMesh()
5756 mm2=MEDFileMesh.New(fname)
5757 ex3=mm2.convertToExtrudedMesh()
5758 self.assertTrue(ex.isEqual(ex2,1e-12))
5759 self.assertTrue(ex.isEqual(ex3,1e-12))
5762 @unittest.skipUnless(LooseVersion(MEDFileVersionStr())>=LooseVersion('3.2.1'),"This test requires at least MEDFile version 3.2.1")
5763 def testWriteInto30(self):
5764 fname="Pyfile108.med"
5765 fname2="Pyfile109.med"
5766 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(DataArrayDouble([0,0,1,1],2,2)) ; m.allocateCells() ; m.insertNextCell(NORM_SEG2,[1,0])
5767 mm=MEDFileUMesh() ; mm[0]=m
5768 mm.setFamilyId("FAMILLE_ZERO",0)
5771 assert(LooseVersion(MEDFileVersionOfFileStr(fname)).version[:2]==[3,0]) # checks that just written MED file has a version == 3.0.x
5772 mm2=MEDFileUMesh(fname)
5773 self.assertTrue(mm.isEqual(mm2,1e-12))
5776 assert(LooseVersion(MEDFileVersionOfFileStr(fname2)).version[:2]==list(MEDFileVersion()[:2])) # checks that MED file version of written mesh is thoose of the current MED file lib
5779 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5780 def testPickelizationOfMEDFileObjects1(self):
5781 fname="Pyfile110.med"
5782 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)
5783 m0=MEDCouplingUMesh("Mesh",2)
5785 m0.insertNextCell(NORM_TRI3,[1,4,2])
5786 m0.insertNextCell(NORM_TRI3,[4,5,2])
5787 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
5788 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
5789 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
5790 m0.finishInsertingCells()
5792 m1=MEDCouplingUMesh(m0.getName(),1)
5794 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
5796 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
5798 m1.finishInsertingCells()
5802 m.setMeshAtLevel(0,m0)
5803 m.setMeshAtLevel(-1,m1)
5805 dt=3 ; it=2 ; tim=4.5
5806 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
5807 fieldNode0.setName("fieldNode0")
5808 fieldNode0.setTime(tim,dt,it)
5809 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
5810 arr=DataArrayDouble([10,11,12,13,14])
5811 fieldNode0.setArray(arr)
5812 f0=MEDFileField1TS()
5813 f0.setFieldProfile(fieldNode0,m,0,pfl0)
5814 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
5815 fieldNode1.setName("fieldNode1")
5816 fieldNode1.setTime(tim,dt,it)
5817 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
5818 arr1=DataArrayDouble([20,21,22,23,24,25,26])
5819 fieldNode1.setArray(arr1)
5820 f1=MEDFileField1TS()
5821 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
5823 mfd.setMeshes(MEDFileMeshes()) ; mfd.setFields(MEDFileFields())
5824 mfd.getMeshes().pushMesh(m)
5825 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(f0)
5826 mfd.getFields().pushField(fmts)
5827 # first start gently
5830 self.assertEqual(len(mfd2.getMeshes()),1)
5831 self.assertEqual(len(mfd2.getFields()),1)
5832 self.assertEqual(len(mfd2.getFields()[0]),1)
5833 self.assertTrue(mfd2.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
5834 ff2=mfd2.getFields()[0][0].field(mfd2.getMeshes()[0])
5835 ff =mfd.getFields()[0][0].field(mfd.getMeshes()[0])
5836 self.assertTrue(ff2.isEqual(ff,1e-12,1e-12))
5837 # OK now end of joke -> serialization of MEDFileData
5839 st=cPickle.dumps(mfd,cPickle.HIGHEST_PROTOCOL)
5840 mfd3=cPickle.loads(st)
5842 self.assertEqual(len(mfd3.getMeshes()),1)
5843 self.assertEqual(len(mfd3.getFields()),1)
5844 self.assertEqual(len(mfd3.getFields()[0]),1)
5845 self.assertTrue(mfd3.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
5846 ff3=mfd3.getFields()[0][0].field(mfd3.getMeshes()[0])
5847 self.assertTrue(ff3.isEqual(ff,1e-12,1e-12))
5848 # serialization of MEDFileFields
5849 st=cPickle.dumps(mfd.getFields(),cPickle.HIGHEST_PROTOCOL)
5850 fs4=cPickle.loads(st)
5851 ff4=fs4[0][0].field(mfd3.getMeshes()[0])
5852 self.assertTrue(ff4.isEqual(ff,1e-12,1e-12))
5853 # serialization of MEDFileFieldMulitTS
5854 st=cPickle.dumps(mfd.getFields()[0],cPickle.HIGHEST_PROTOCOL)
5855 fmts5=cPickle.loads(st)
5856 ff5=fmts5[0].field(mfd3.getMeshes()[0])
5857 self.assertTrue(ff5.isEqual(ff,1e-12,1e-12))
5858 # serialization of MEDFileField1TS
5859 st=cPickle.dumps(mfd.getFields()[0][0],cPickle.HIGHEST_PROTOCOL)
5860 f1ts6=cPickle.loads(st)
5861 ff6=f1ts6.field(mfd3.getMeshes()[0])
5862 self.assertTrue(ff6.isEqual(ff,1e-12,1e-12))
5863 # serialization of MEDFileMeshes
5864 st=cPickle.dumps(mfd.getMeshes(),cPickle.HIGHEST_PROTOCOL)
5865 ms7=cPickle.loads(st)
5866 self.assertEqual(len(ms7),1)
5867 self.assertTrue(ms7[0].isEqual(mfd.getMeshes()[0],1e-12))
5870 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5871 def testPickelizationOfMEDFileObjects2(self):
5873 self.testMEDMesh6() # generates MEDFileMesh5.med file
5874 mm=MEDFileMesh.New("MEDFileMesh5.med")
5875 self.assertTrue(isinstance(mm,MEDFileCMesh))
5877 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
5878 mm2=cPickle.loads(st)
5879 self.assertTrue(isinstance(mm2,MEDFileCMesh))
5880 self.assertTrue(mm.getMesh().isEqual(mm2.getMesh(),1e-12))
5882 self.testCurveLinearMesh1() # generates Pyfile55.med
5883 mm=MEDFileMesh.New("Pyfile55.med")
5884 self.assertTrue(isinstance(mm,MEDFileCurveLinearMesh))
5885 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
5886 mm3=cPickle.loads(st)
5887 self.assertTrue(isinstance(mm3,MEDFileCurveLinearMesh))
5888 self.assertTrue(mm.getMesh().isEqual(mm3.getMesh(),1e-12))
5889 self.testInt32InMEDFileFieldStar1()# generates Pyfile63.med
5890 # MEDFileIntFieldMultiTS
5891 fs4=MEDFileFields("Pyfile63.med")
5892 ms4=MEDFileMeshes("Pyfile63.med")
5893 self.assertTrue(isinstance(fs4[0],MEDFileIntFieldMultiTS))
5894 st=cPickle.dumps(fs4[0],cPickle.HIGHEST_PROTOCOL)
5895 fmts5=cPickle.loads(st)
5896 self.assertEqual(len(fs4[0]),len(fmts5))
5897 self.assertTrue(isinstance(fmts5,MEDFileIntFieldMultiTS))
5898 self.assertTrue(fmts5[0].field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,1e-12))
5899 # MEDFileIntField1TS
5900 st=cPickle.dumps(fs4[0][0],cPickle.HIGHEST_PROTOCOL)
5901 f1ts6=cPickle.loads(st)
5902 self.assertTrue(isinstance(f1ts6,MEDFileIntField1TS))
5903 self.assertTrue(f1ts6.field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,1e-12))
5905 self.testParameters1()# generates Pyfile56.med
5906 params=MEDFileParameters("Pyfile56.med")
5907 st=cPickle.dumps(params,cPickle.HIGHEST_PROTOCOL)
5908 params7=cPickle.loads(st)
5909 self.assertEqual(len(params),len(params7))
5910 for i in xrange(len(params)):
5911 self.assertTrue(params[i].isEqual(params7[i],1e-12)[0])
5915 def testGlobalNumOnNodes1(self):
5916 """Test global number on nodes here. Used by partitionners."""
5917 fname="Pyfile112.med"
5918 arr=DataArrayDouble(5) ; arr.iota()
5919 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
5923 self.assertTrue(not mm.getGlobalNumFieldAtLevel(1))
5924 d=DataArrayInt([7,8,9,2,0])
5926 mm.setGlobalNumFieldAtLevel(1,d)
5927 mm.checkConsistency()
5928 self.assertRaises(InterpKernelException,mm.setGlobalNumFieldAtLevel,1,d[::2])
5929 mm.checkConsistency()
5930 self.assertEqual(d.getHiddenCppPointer(),mm.getGlobalNumFieldAtLevel(1).getHiddenCppPointer())
5931 self.assertTrue(mm.getGlobalNumFieldAtLevel(1).isEqual(dRef))
5933 mm2=MEDFileMesh.New(fname)
5934 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5935 self.assertTrue(mm2.getGlobalNumFieldAtLevel(1).isEqual(dRef))
5936 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,10)
5937 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
5938 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,7)
5939 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5942 def testPartialReadOfEntities1(self):
5943 """Test for advanced API on read to speed up read phase for users with "huge" number of time steps (more than 10 000)."""
5944 fname="Pyfile113.med"
5945 arr=DataArrayDouble(5) ; arr.iota()
5946 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
5953 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName(fieldName)
5954 f1.setArray(DataArrayDouble([0.,0.1,0.2,0.3,0.4]))
5956 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(m) ; f2.setName(fieldName)
5957 f2.setArray(DataArrayDouble([1.,1.1,1.2,1.3]))
5959 f1ts=MEDFileField1TS()
5960 f1ts.setFieldNoProfileSBT(f1)
5961 f1ts.setFieldNoProfileSBT(f2)
5962 self.assertEqual(set(f1ts.getTypesOfFieldAvailable()),set([ON_NODES,ON_CELLS]))
5963 f1ts_2=f1ts.deepCopy()
5964 f1ts_2.getUndergroundDataArray()[:]+=2
5965 f1ts_2.setTime(3,4,6.)
5966 fmts=MEDFileFieldMultiTS()
5967 fmts.pushBackTimeStep(f1ts)
5968 fmts.pushBackTimeStep(f1ts_2)
5973 ent=MEDFileEntities.BuildFrom([(ON_NODES,NORM_ERROR)])
5974 mm=MEDFileMesh.New(fname)
5975 fs=MEDFileFields(fname,False,ent) # the important line is here - We specify to MEDFileFields to read only nodes part to speed up read phase (by avoiding to scan all entities time geo types)
5977 self.assertEqual(len(fs),1)
5979 self.assertEqual(len(fmts),2)
5980 ff0=fmts[0] ; ff1=fmts[1]
5981 self.assertEqual(ff0.getTypesOfFieldAvailable(),[ON_NODES]) # only NODES have been loaded
5982 self.assertTrue(ff0.field(mm).isEqual(f1,1e-12,1e-12))
5983 f3=f1.deepCopy() ; f3+=2. ; f3.setTime(6.,3,4)
5984 self.assertTrue(ff1.field(mm).isEqual(f3,1e-12,1e-12))
5989 if __name__ == "__main__":