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 (CEA/DEN)
22 from MEDLoader import *
25 from math import pi,e,sqrt
26 from MEDLoaderDataForTest import MEDLoaderDataForTest
28 class MEDLoaderTest3(unittest.TestCase):
29 def testMEDMesh1(self):
30 fileName="Pyfile18.med"
31 mname="ExampleOfMultiDimW"
32 medmesh=MEDFileMesh.New(fileName,mname)
33 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
34 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
35 m1_0=medmesh.getLevel0Mesh(True)
36 m1_1=ReadUMeshFromFile(fileName,mname,0)
37 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
38 m2_0=medmesh.getLevelM1Mesh(True)
39 m2_1=ReadUMeshFromFile(fileName,mname,-1)
40 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
43 def testMEDMesh2(self):
44 fileName="Pyfile10.med"
46 outFileName="MEDFileMesh1.med"
47 medmesh=MEDFileUMesh.New(fileName,mname)
48 self.assertEqual((0,),medmesh.getNonEmptyLevels())
49 m1_0=medmesh.getLevel0Mesh(True)
50 m1_1=ReadUMeshFromFile(fileName,mname,0)
51 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
52 g1_0=medmesh.getGroup(0,"mesh2",True)
53 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
54 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
55 g1_0=medmesh.getGroup(0,"mesh3",True)
56 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
57 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
58 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
59 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
60 g1_1.setName(g1_0.getName())
61 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
62 g1_0=medmesh.getFamily(0,"Family_-3",True)
63 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
64 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
65 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
66 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
67 g1_1.setName(g1_0.getName())
68 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
69 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
70 medmesh.write(outFileName,2);
71 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
72 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
73 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
74 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
75 famn=medmesh.getFamilyNameGivenId(0)
76 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
78 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
79 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
80 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
81 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
82 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
85 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
86 def testMEDMesh3(self):
87 outFileName="MEDFileMesh3.med"
88 c=DataArrayDouble.New()
89 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 ];
90 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
91 c.setValues(coords,9,2)
92 m=MEDCouplingUMesh.New();
93 m.setMeshDimension(2);
95 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
96 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
97 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
98 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
99 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
100 m.finishInsertingCells();
102 m.checkConsistencyLight()
103 m1=MEDCouplingUMesh.New();
104 m1.setMeshDimension(1);
106 m1.insertNextCell(NORM_SEG2,2,[1,4])
107 m1.insertNextCell(NORM_SEG2,2,[3,6])
108 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
109 m1.finishInsertingCells();
111 m1.checkConsistencyLight()
112 m2=MEDCouplingUMesh.New();
113 m2.setMeshDimension(0);
115 m2.insertNextCell(NORM_POINT1,1,[1])
116 m2.insertNextCell(NORM_POINT1,1,[3])
117 m2.insertNextCell(NORM_POINT1,1,[2])
118 m2.insertNextCell(NORM_POINT1,1,[6])
119 m2.finishInsertingCells();
121 m2.checkConsistencyLight()
123 mm=MEDFileUMesh.New()
124 self.assertTrue(mm.getUnivNameWrStatus())
125 mm.setName("MyFirstMEDCouplingMEDmesh")
126 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
128 mm.setMeshAtLevel(-1,m1);
129 mm.setMeshAtLevel(0,m);
130 mm.setMeshAtLevel(-2,m2);
131 # playing with groups
132 g1_2=DataArrayInt.New()
133 g1_2.setValues([1,3],2,1)
135 g2_2=DataArrayInt.New()
136 g2_2.setValues([1,2,3],3,1)
138 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
139 g1_1=DataArrayInt.New()
140 g1_1.setValues([0,1,2],3,1)
142 g2_1=DataArrayInt.New()
143 g2_1.setValues([0,2],2,1)
145 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
146 g1_N=DataArrayInt.New()
147 g1_N.setValues(range(8),8,1)
149 g2_N=DataArrayInt.New()
150 g2_N.setValues(range(9),9,1)
152 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
153 mm.createGroupOnAll(0,"GrpOnAllCell")
154 # check content of mm
155 t=mm.getGroupArr(0,"G1",False)
156 self.assertTrue(g1_2.isEqual(t));
157 t=mm.getGroupArr(0,"G2",False)
158 self.assertTrue(g2_2.isEqual(t));
159 t=mm.getGroupArr(-1,"G1",False)
160 self.assertTrue(g1_1.isEqual(t));
161 t=mm.getGroupArr(-1,"G2",False)
162 self.assertTrue(g2_1.isEqual(t));
163 t=mm.getGroupArr(1,"G1",False)
164 self.assertTrue(g1_N.isEqual(t));
165 t=mm.getGroupArr(1,"G2",False)
166 self.assertTrue(g2_N.isEqual(t));
167 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
168 t=mm.getGroupArr(0,"GrpOnAllCell")
169 self.assertTrue(t.getValues()==range(5))
172 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
173 mmCpy.write(outFileName,2);
175 mm=MEDFileMesh.New(outFileName)
177 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
178 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
179 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
180 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
181 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
182 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
183 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
184 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
185 self.assertEqual(3,len(lmm))
186 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
187 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
188 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
190 self.assertTrue(mm.getUnivNameWrStatus())
191 self.assertTrue(isinstance(mm.getUnivName(),str))
192 self.assertTrue(len(mm.getUnivName())!=0)
193 mbis=mm.getMeshAtLevel(0)
194 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
195 self.assertTrue(m.isEqual(mbis,1e-12));
197 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
200 # this test is the testMEDMesh3 except that permutation is dealed here
201 def testMEDMesh4(self):
202 outFileName="MEDFileMesh4.med"
203 c=DataArrayDouble.New()
204 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 ];
205 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
206 c.setValues(coords,9,2)
207 c.setInfoOnComponent(0,"abcdef [km]")
208 c.setInfoOnComponent(1,"ghij [MW]")
209 m=MEDCouplingUMesh.New();
210 m.setMeshDimension(2);
212 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
213 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
214 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
215 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
216 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
217 m.finishInsertingCells();
219 m.checkConsistencyLight()
220 m1=MEDCouplingUMesh.New();
221 m1.setMeshDimension(1);
223 m1.insertNextCell(NORM_SEG2,2,[1,4])
224 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
225 m1.insertNextCell(NORM_SEG2,2,[3,6])
226 m1.finishInsertingCells();
228 m1.checkConsistencyLight()
229 m2=MEDCouplingUMesh.New();
230 m2.setMeshDimension(0);
232 m2.insertNextCell(NORM_POINT1,1,[1])
233 m2.insertNextCell(NORM_POINT1,1,[3])
234 m2.insertNextCell(NORM_POINT1,1,[2])
235 m2.insertNextCell(NORM_POINT1,1,[6])
236 m2.finishInsertingCells();
238 m2.checkConsistencyLight()
240 mm=MEDFileUMesh.New()
241 mm.setName("My2ndMEDCouplingMEDmesh")
242 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
244 renumNode=DataArrayInt.New()
245 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
246 mm.setRenumFieldArr(1,renumNode)
247 mm.setMeshAtLevel(-1,m1,True);
248 mm.setMeshAtLevel(0,m,True);
249 mm.setMeshAtLevel(-2,m2,True);
250 mm.removeMeshAtLevel(-2)
251 mm.setMeshAtLevel(-2,m2,True);
252 # playing with groups
253 g1_2=DataArrayInt.New()
254 g1_2.setValues([2,3],2,1)
256 g2_2=DataArrayInt.New()
257 g2_2.setValues([2,0,3],3,1)
259 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
260 g1_1=DataArrayInt.New()
261 g1_1.setValues([0,2,1],3,1)
263 g2_1=DataArrayInt.New()
264 g2_1.setValues([0,2],2,1)
266 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
267 g1_N=DataArrayInt.New()
268 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
270 g2_N=DataArrayInt.New()
271 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
273 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
274 # check content of mm
275 t=mm.getGroupArr(0,"G1",True)
276 self.assertTrue(g1_2.isEqual(t));
277 t=mm.getGroupArr(0,"G2",True)
278 self.assertTrue(g2_2.isEqual(t));
279 t=mm.getGroupArr(-1,"G1",True)
280 self.assertTrue(g1_1.isEqual(t));
281 t=mm.getGroupArr(-1,"G2",True)
282 self.assertTrue(g2_1.isEqual(t));
283 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
285 mm.write(outFileName,2);
286 mm2=MEDFileMesh.New(outFileName)
287 res=mm.isEqual(mm2,1e-12)
288 self.assertTrue(res[0])
289 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
290 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
291 mm2.keepFamIdsOnlyOnLevs([3],[-1])
292 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
293 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
295 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
296 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
298 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
299 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
300 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
301 self.assertTrue(not mm2.existsFamily("Family_-8"))
302 mm2.createGroupOnAll(-1,"GrpOnAllFace")
303 self.assertTrue(mm2.existsFamily("Family_-8"))
304 self.assertEqual(range(3),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
307 #testing persistence of retrieved arrays
308 def testMEDMesh5(self):
309 fileName="Pyfile18.med"
310 mname="ExampleOfMultiDimW"
311 medmesh=MEDFileUMesh.New(fileName,mname)
312 m1_0=medmesh.getLevel0Mesh(True)
313 da1=medmesh.getFamilyFieldAtLevel(0)
315 self.assertEqual(20,m1_0.getNumberOfCells())
316 self.assertEqual(20,da1.getNumberOfTuples())
319 def testMEDMesh6(self):
320 outFileName="MEDFileMesh5.med"
323 m1=MEDCouplingCMesh.New();
324 da=DataArrayDouble.New()
325 da.setValues([0.,1.,2.],3,1)
326 da.setInfoOnComponent(0,"XX [mm]")
328 da=DataArrayDouble.New()
329 da.setValues([0.,1.2],2,1)
330 da.setInfoOnComponent(0,"YY [km]")
332 da=DataArrayDouble.New()
333 da.setValues([0.,1.3],2,1)
334 da.setInfoOnComponent(0,"ZZ [um]")
337 self.assertTrue(m[0].isEqual(m1,1e-12))
338 self.assertTrue(isinstance(m[0],MEDCouplingCMesh))
339 m.setName("myFirstCartMesh")
340 m.setDescription("mmmmpppppppp")
343 da=DataArrayInt.New()
344 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
345 m.setFamilyFieldArr(1,da)
346 m.setFamilyId("family1",1)
347 da=m.getFamilyArr(1,"family1")
349 self.assertEqual(expected1,da.getValues())
350 self.assertTrue(m.getUnivNameWrStatus())
351 m.write(outFileName,2);
352 mm=MEDFileMesh.New(outFileName)
353 self.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
354 self.assertTrue(isinstance(mm,MEDFileCMesh))
355 self.assertTrue(isinstance(mm.getUnivName(),str))
356 self.assertTrue(len(mm.getUnivName())!=0)
357 self.assertTrue(m.isEqual(mm,1e-12)[0])
358 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
361 m1.setTime(tt[2],tt[0],tt[1])
362 m1.setName(m.getName())
363 m1.setTimeUnit(m.getTimeUnit())
364 m1.setDescription(m.getDescription())
365 self.assertTrue(m2.isEqual(m1,1e-12));
368 def testMEDMesh7(self):
369 fileName="Pyfile24.med"
370 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
372 m.setCoords(m2.getCoords())
373 m.setMeshAtLevel(0,m2)
374 m.setMeshAtLevel(-1,m1)
375 m.setMeshAtLevel(-2,m0)
376 m.setFamilyFieldArr(0,f2)
377 m.setFamilyFieldArr(-1,f1)
378 m.setFamilyFieldArr(-2,f0)
379 m.setFamilyFieldArr(1,p)
380 m.setRenumFieldArr(0,n2)
381 m.setRenumFieldArr(-1,n1)
382 m.setRenumFieldArr(-2,n0)
384 for i in xrange(nbOfFams):
385 m.addFamily(fns[i],fids[i])
388 for i in xrange(nbOfGrps):
389 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
391 m.setName(m2.getName())
392 m.setDescription(m2.getDescription())
394 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
395 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
396 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
397 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
398 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
399 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
400 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
401 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
402 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
405 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
408 def funcToTestDelItem(self,ff):
412 #emulation of pointe.med file.
413 def testMEDField1(self):
414 mm=MEDFileMesh.New("Pyfile17.med")
415 mm.write("Pyfile17_bis.med",2)
416 ff=MEDFileFieldMultiTS("Pyfile17.med")
417 tsExpected=[[1,2],[3,4],[5,6]]
418 self.assertEqual(3,len(ff))
419 for pos,f1ts in enumerate(ff):
420 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
421 self.assertEqual(type(f1ts),MEDFileField1TS)
423 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
424 self.assertEqual([3,4],ff[1].getTime()[:-1])
425 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
426 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
427 ff.write("Pyfile17_bis.med",0)
429 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
430 self.assertEqual([(1,2),(3,4),(5,6)],ts)
431 self.funcToTestDelItem(ff)
432 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
433 self.assertEqual([(1,2)],ts)
437 def testMEDField2(self):
438 mm=MEDFileMesh.New("Pyfile19.med")
439 mm.write("Pyfile19_bis.med",2)
440 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
441 ff.write("Pyfile19_bis.med",0)
442 self.assertEqual([('tyty','mm'),('uiop','MW')],GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
446 def testMEDField3(self):
447 mm=MEDFileMesh.New("Pyfile13.med")
448 mm.write("Pyfile13_bis.med",2)
449 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
450 ff.write("Pyfile13_bis.med",0)
451 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
452 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
453 f2=ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
454 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
455 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
456 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
457 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
458 ff4=MEDFileField1TS.New("Pyfile13.med")
459 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
460 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
464 def testMEDField4(self):
465 mm=MEDFileMesh.New("Pyfile14.med")
466 mm.write("Pyfile14_bis.med",2)
467 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
468 ff.write("Pyfile14_bis.med",0)
469 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
470 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
471 f2=ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
472 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
475 # MEDField get/set on pointe.med
476 def testMEDField5(self):
477 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
478 f=ff.getFieldAtLevel(ON_CELLS,0)
479 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
480 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
481 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
482 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
483 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
484 # no with renumbering
485 f=ff.getFieldAtLevel(ON_CELLS,0,1)
486 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
487 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
488 f=ff.getFieldAtLevel(ON_CELLS,0,3)
489 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
490 f=ff.getFieldAtLevel(ON_CELLS,0,2)
491 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
492 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
493 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
496 # MEDField get/set on profiles nodes
497 def testMEDField6(self):
498 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
499 its=ff.getIterations()
500 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
501 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
502 f2=ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
503 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
504 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
505 its=ff.getIterations()
506 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
507 f2=ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
508 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
509 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
510 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
513 # MEDField get/set on profiles cells
514 def testMEDField7(self):
515 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
516 its=ff.getIterations()
517 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
518 f2=ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
519 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
522 #first test of assignation. No profile and types sorted by type.
523 def testMEDField8(self):
525 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
527 mm1=MEDFileUMesh.New()
528 mm1.setCoords(m1.getCoords())
529 mm1.setMeshAtLevel(0,m1)
530 mm1.setName(m1.getName())
532 ff1=MEDFileField1TS.New()
533 ff1.setFieldNoProfileSBT(f1)
535 f2=ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
536 itt,orr,ti=ff1.getTime()
537 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
538 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
540 itt,orr,ti=ff1.getTime()
541 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
542 da,infos=ff1.getUndergroundDataArrayExt()
543 f2.getArray().setName(da.getName())#da has the same name than f2
544 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
545 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
548 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
550 mm1=MEDFileUMesh.New()
551 mm1.setCoords(m1.getCoords())
552 mm1.setMeshAtLevel(0,m1)
553 mm1.setName(m1.getName())
555 ff1=MEDFileField1TS.New()
556 ff1.setFieldNoProfileSBT(f1)
558 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
560 f2=ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
561 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
562 f1.getArray().setIJ(0,0,nv)
563 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
566 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
568 mm1=MEDFileUMesh.New()
569 mm1.setCoords(m1.getCoords())
570 mm1.setMeshAtLevel(0,m1)
571 mm1.setName(m1.getName())
573 ff1=MEDFileField1TS.New()
574 ff1.setFieldNoProfileSBT(f1)
576 f2=ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
577 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
578 da,infos=ff1.getUndergroundDataArrayExt()
579 f2.getArray().setName(da.getName())#da has the same name than f2
580 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
581 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
584 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
585 f1InvalidCpy=f1.deepCopy()
586 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
587 f1InvalidCpy2=f1.deepCopy()
588 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
590 mm1=MEDFileUMesh.New()
591 mm1.setCoords(m1.getCoords())
592 mm1.setMeshAtLevel(0,m1)
593 mm1.setName(m1.getName())
595 ff1=MEDFileField1TS.New()
596 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
597 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
598 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
599 ff1.setFieldNoProfileSBT(f1)
601 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
602 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
603 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
604 sbt=ff2.getFieldSplitedByType2()
605 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
606 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
607 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
608 self.assertEqual(6,loc1.getNumberOfPointsInCells())
609 self.assertEqual(3,loc1.getNumberOfGaussPoints())
610 self.assertEqual(2,loc1.getDimension())
611 da,infos=ff2.getUndergroundDataArrayExt()
612 f2.getArray().setName(da.getName())#da has the same name than f2
613 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
614 self.assertEqual(53,da.getNumberOfTuples())
615 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)
619 def testMEDFileData1(self):
623 m1=MEDLoaderDataForTest.build1DMesh_1()
624 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
625 mmm1=MEDFileMeshMultiTS.New() ;
626 mmm1.setOneTimeStep(mm1)
627 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
628 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
629 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
630 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
632 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
633 self.assertEqual(name,mmm.getName())
634 self.assertEqual(type(mmm),MEDFileUMesh)
636 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
638 ff1=MEDFileFieldMultiTS.New()
639 ff21=MEDFileFieldMultiTS.New()
640 ff22=MEDFileFieldMultiTS.New()
641 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
642 f1.getArray().setInfoOnComponent(0,"power [kW]")
643 ff1.appendFieldNoProfileSBT(f1)
644 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
645 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
646 ff21.appendFieldNoProfileSBT(f21)
647 f22=f21.deepCopy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
648 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
649 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
650 ff22.appendFieldNoProfileSBT(f22)
651 fs=MEDFileFields.New()
652 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
653 for name,fmts in zip(["f1","f21","f22"],fs):
654 self.assertEqual(name,fmts.getName())
658 fname2="Pyfile29_2.med"
661 d2=MEDFileData.New(fname2)
662 self.assertEqual(2,d2.getNumberOfMeshes())
663 self.assertEqual(3,d2.getNumberOfFields())
664 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
665 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
666 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
667 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
668 self.assertTrue(m1.isEqual(m1bis,1e-12))
669 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
670 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
671 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
672 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
673 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
676 def testMEDField9(self):
677 # first test field profile WR. Full type but with some type missing
679 m1=MEDLoaderDataForTest.build2DMesh_3()
680 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
682 ff1=MEDFileField1TS.New()
683 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
684 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
685 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.
686 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
688 ff1.setFieldProfile(f1,mm1,0,da)
689 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
693 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
694 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
695 self.assertTrue(vals.isEqual(d,1e-14))
697 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
698 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
699 ff2.deepCpyGlobs(ff3)
700 sbt=ff2.getFieldSplitedByType2()
701 self.assertEqual(3,sbt[0][0])#TRI3
702 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
703 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
704 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
705 self.assertEqual(4,sbt[1][0])#QUAD4
706 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
707 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
708 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
709 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
710 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
711 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
712 self.assertTrue(vals.isEqual(d,1e-14))
715 def testMEDField10(self):
717 m1=MEDLoaderDataForTest.build2DMesh_1()
718 m1.renumberCells([0,1,4,2,3,5],False)
719 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
721 ff1=MEDFileFieldMultiTS.New()
722 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
723 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
724 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.
725 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
727 ff1.appendFieldProfile(f1,mm1,0,da)
728 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
729 ff1.appendFieldProfile(f1,mm1,0,da)
733 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
734 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
735 self.assertTrue(vals.isEqual(e,1e-14))
736 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
737 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
738 self.assertTrue(vals.isEqual(d,1e-14))
740 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
741 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
742 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
743 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
744 self.assertTrue(vals.isEqual(e,1e-14))
745 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
746 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
747 self.assertTrue(vals.isEqual(d,1e-14))
750 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
751 def testMEDField11(self):
753 m1=MEDLoaderDataForTest.build2DMesh_1()
754 m1.renumberCells([0,1,4,2,3,5],False)
755 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
757 ff1=MEDFileField1TS.New()
758 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
759 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
760 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.
761 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
763 ff1.setFieldProfile(f1,mm1,0,da)
764 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
767 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
768 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
769 self.assertTrue(vals.isEqual(d,1e-14))
771 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
772 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
773 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
774 self.assertTrue(vals.isEqual(d,1e-14))
777 def testMEDField12(self):
779 m1=MEDLoaderDataForTest.build2DMesh_1()
780 m1.renumberCells([0,1,4,2,3,5],False)
781 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
783 ff1=MEDFileFieldMultiTS.New()
784 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
785 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
786 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.
787 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
789 ff1.appendFieldProfile(f1,mm1,0,da)
790 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
791 ff1.appendFieldProfile(f1,mm1,0,da)
794 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
795 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
796 self.assertTrue(vals.isEqual(e,1e-14))
797 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
798 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
799 self.assertTrue(vals.isEqual(d,1e-14))
801 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
802 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
803 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
804 self.assertTrue(vals.isEqual(e,1e-14))
805 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
806 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
807 self.assertTrue(vals.isEqual(d,1e-14))
810 def testMEDField13(self):
812 m1=MEDLoaderDataForTest.build2DMesh_1()
813 m1.renumberCells([0,1,4,2,3,5],False)
815 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
816 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
818 ff1=MEDFileField1TS.New()
819 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
820 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
821 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.
822 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
824 ff1.setFieldProfile(f1,mm1,0,da)
827 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
828 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
829 self.assertTrue(vals.isEqual(d,1e-14))
831 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
832 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
833 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
834 self.assertTrue(vals.isEqual(d,1e-14))
837 def testMEDField14(self):
839 m1=MEDLoaderDataForTest.build2DMesh_1()
840 m1.renumberCells([0,1,4,2,3,5],False)
842 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
843 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
845 ff1=MEDFileFieldMultiTS.New()
846 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
847 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
848 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.
849 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
851 ff1.appendFieldProfile(f1,mm1,0,da)
852 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
853 ff1.appendFieldProfile(f1,mm1,0,da)
856 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
857 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
858 self.assertTrue(vals.isEqual(d,1e-14))
859 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
860 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
861 self.assertTrue(vals.isEqual(e,1e-14))
862 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
864 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
865 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
866 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
867 self.assertTrue(vals.isEqual(d,1e-14))
868 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
869 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
870 self.assertTrue(vals.isEqual(e,1e-14))
872 # 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.
873 # 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
874 # 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 !
875 def testMEDField15(self):
877 m0=MEDLoaderDataForTest.build2DMesh_1()
878 m0.renumberCells([0,1,4,2,3,5],False)
880 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
881 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
882 ff1=MEDFileField1TS.New()
883 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
884 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
885 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.
886 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
888 ff1.setFieldProfile(f1,mm1,0,da)
889 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
892 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
893 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
894 self.assertTrue(p1.isIota(5))
895 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
897 # Test for getFieldAtTopLevel method
898 def testMEDField16(self):
900 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
902 mm1=MEDFileUMesh.New()
903 mm1.setCoords(m1.getCoords())
904 mm1.setMeshAtLevel(0,m1)
905 mm1.setName(m1.getName())
906 ff1=MEDFileField1TS.New()
907 ff1.setFieldNoProfileSBT(f1)
908 m2=m1.buildDescendingConnectivity()[0]
909 m2.sortCellsInMEDFileFrmt()
910 m2.setName(m1.getName())
911 mm1.setMeshAtLevel(-1,m2)
913 f2=m2.getMeasureField(True)
914 dd=DataArrayDouble.New()
915 dd.alloc(f2.getArray().getNumberOfTuples(),3)
916 dd[:,0]=f2.getArray()
917 dd[:,1]=2*f2.getArray()
918 dd[:,2]=3*f2.getArray()
919 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
921 f2.copyTinyStringsFrom(f1)
922 f2.copyTinyAttrFrom(f1)
923 ff1.setFieldNoProfileSBT(f2)
925 # Reading Pyfile37.med
926 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
927 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
928 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
929 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
930 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
931 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
932 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
936 ff1=MEDFileField1TS.New()
937 ff1.setFieldNoProfileSBT(f2)
939 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
940 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
941 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
944 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
945 def testMEDField17(self):
947 m1=MEDLoaderDataForTest.build2DMesh_1()
948 m1.renumberCells([0,1,4,2,3,5],False)
949 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
951 ffs=MEDFileFields.New()
952 ff1=MEDFileFieldMultiTS.New()
953 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
954 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
955 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.
956 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
958 ff1.appendFieldProfile(f1,mm1,0,da)
959 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
960 ff1.appendFieldProfile(f1,mm1,0,da)
962 ffs.setFieldAtPos(0,ff1)
966 ffsr=MEDFileFields.New(fname)
967 ff3=ffsr.getFieldAtPos(0)
968 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
969 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
972 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
973 def testMEDField18(self):
975 m1=MEDLoaderDataForTest.build2DMesh_1()
976 m1.renumberCells([0,1,4,2,3,5],False)
977 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
979 ffs=MEDFileFields.New()
980 ff1=MEDFileFieldMultiTS.New()
981 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
982 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
983 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.
984 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
986 ff1.appendFieldProfile(f1,mm1,0,da)
987 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
988 ff1.appendFieldProfile(f1,mm1,0,da)
992 ffsr=MEDFileFields.New(fname)
993 ff3=ffsr.getFieldAtPos(0)
994 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
995 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
998 def testMEDFieldBug1(self):
1000 d=MEDFileData.New(fname)
1001 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1004 def testMEDMesh8(self):
1005 m=MEDLoaderDataForTest.build1DMesh_1()
1006 m.convertQuadraticCellsToLinear()
1007 mm=MEDFileUMesh.New()
1008 mm.setMeshAtLevel(0,m)
1009 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1010 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1011 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1012 mm.setGroupsAtLevel(0,[g1,g2],False)
1013 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1014 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1015 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1016 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1017 mm.assignFamilyNameWithGroupName()
1018 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1019 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1020 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1021 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1023 mm=MEDFileUMesh.New()
1024 mm.setMeshAtLevel(0,m)
1025 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1026 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1027 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1028 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1029 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1030 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1031 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1032 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1033 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1034 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1035 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1036 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1037 mm.changeFamilyId(5,6)
1038 g=mm.getGroupArr(0,"g3")
1039 self.assertTrue(g.isEqual(g3));
1040 g=mm.getGroupArr(0,"g2")
1041 self.assertTrue(g.isEqual(g2));
1042 g=mm.getGroupArr(0,"g1")
1043 self.assertTrue(g.isEqual(g1));
1046 # bug detected by gauthier
1047 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1048 fname="Pyfile41.med"
1049 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1051 mm1=MEDFileUMesh.New()
1052 mm1.setCoords(m1.getCoords())
1053 mm1.setMeshAtLevel(0,m1)
1055 ff1=MEDFileField1TS.New()
1056 ff1.setFieldNoProfileSBT(f1)
1058 # writing mesh1 and field1, now creation of mesh2 and field2
1061 m2.translate([0.5,0.6,0.7])
1062 m2.setName("3DSurfMesh_2")
1063 f2.getArray()[:]*=2.
1064 f2.setName("VectorFieldOnCells2")
1065 mm2=MEDFileUMesh.New()
1066 mm2.setCoords(m2.getCoords())
1067 mm2.setMeshAtLevel(0,m2)
1069 ff2=MEDFileField1TS.New()
1070 ff2.setFieldNoProfileSBT(f2)
1073 f3=ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1074 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1075 f4=ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1076 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1079 def testMEDLoaderMultiLevelCellField1(self):
1080 fname="Pyfile42.med"
1081 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1082 m=MEDFileUMesh.New()
1083 m.setCoords(m2.getCoords())
1084 m.setMeshAtLevel(0,m2)
1085 m.setMeshAtLevel(-1,m1)
1086 m.setMeshAtLevel(-2,m0)
1090 compNames1=["comp1","comp2","comp3"]
1091 ff1=MEDFileField1TS.New()
1092 da2=DataArrayDouble.New()
1093 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1095 da2.rearrange(len(compNames1))
1096 da2.setInfoOnComponents(compNames1)
1097 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkConsistencyLight()
1098 ff1.setFieldNoProfileSBT(f2)
1099 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1100 da0=DataArrayDouble.New()
1101 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1103 da0.rearrange(len(compNames1))
1104 da0.setInfoOnComponents(compNames1)
1105 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1106 ff1.setFieldNoProfileSBT(f0)
1107 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1108 da1=DataArrayDouble.New()
1109 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1111 da1.rearrange(len(compNames1))
1112 da1.setInfoOnComponents(compNames1)
1113 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1114 ff1.setFieldNoProfileSBT(f1)
1115 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1120 compNames2=["comp11","comp22"]
1121 ff2=MEDFileField1TS.New()
1122 da0=DataArrayDouble.New()
1123 da0.alloc(m0.getNumberOfCells()*2,1)
1126 da0.setInfoOnComponents(compNames2)
1127 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1128 ff2.setFieldNoProfileSBT(f0)
1129 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1130 da1=DataArrayDouble.New()
1131 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1133 da1.rearrange(len(compNames2))
1134 da1.setInfoOnComponents(compNames2)
1135 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1136 ff2.setFieldNoProfileSBT(f1)
1137 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1141 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1142 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1143 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1144 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1145 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1146 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1149 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1150 fname="Pyfile43.med"
1151 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1152 m=MEDFileUMesh.New()
1153 m.setMeshAtLevel(0,m2)
1154 m.setMeshAtLevel(-1,m1)
1155 m.setMeshAtLevel(-2,m0)
1156 f=MEDFileField1TS.New()
1157 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1158 ff.setName("NodeFieldPfl")
1159 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1161 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1162 f.setFieldProfile(ff,m,-2,pfl)
1163 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1164 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1165 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1166 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1167 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1168 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1169 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1170 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1171 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1172 expected1=[1.,10.,100.,2.,20.,200.]
1173 nodeCoordsWithValue1=[10.,2.5,0.]
1174 nodeCoordsWithValue2=[10.,3.75,0.]
1176 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1177 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1180 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1184 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1185 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1186 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1187 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1188 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1189 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1190 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1191 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1192 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1194 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1199 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1200 f=MEDFileField1TS.New()
1201 f.setFieldProfile(ff,m,-2,pfl)
1202 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1203 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1204 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1205 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1206 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1207 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1208 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1209 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1210 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1211 expected2=[2.,20.,200.,1.,10.,100.]
1213 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1214 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1217 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1220 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1221 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1222 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1223 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1224 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1225 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1226 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1227 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1228 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1230 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1234 def testBuildInnerBoundaryAlongM1Group1(self):
1235 fname="Pyfile44.med"
1236 m=MEDCouplingCMesh.New()
1237 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1238 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1239 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1240 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1241 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1242 m2.setName(m.getName())
1243 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1244 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1245 mm=MEDFileUMesh.New()
1246 mm.setMeshAtLevel(0,m)
1247 mm.setMeshAtLevel(-1,m2)
1248 mm.setGroupsAtLevel(-1,[grp,grp2])
1249 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1250 mm.setGroupsAtLevel(1,[grpNode])
1251 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1252 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1253 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1255 self.assertEqual(30,mm.getNumberOfNodes())
1256 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1257 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1259 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1260 self.assertEqual([15,16,17],nodes.getValues());
1261 self.assertEqual([7,8,9],cells.getValues());
1262 self.assertEqual([12,13,14],cells2.getValues());
1263 self.assertEqual(33,mm.getNumberOfNodes())
1264 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1265 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1266 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1267 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1268 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
1269 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1270 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
1271 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1272 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])
1273 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1274 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1276 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1277 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1278 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1279 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1280 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1284 def testBuildInnerBoundaryAlongM1Group2(self):
1285 fname="Pyfile45.med"
1286 m=MEDCouplingCMesh.New()
1287 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1288 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1289 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1290 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1291 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1292 m2.setName(m.getName())
1293 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1294 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1295 mm=MEDFileUMesh.New()
1296 mm.setMeshAtLevel(0,m)
1297 mm.setMeshAtLevel(-1,m2)
1298 mm.setGroupsAtLevel(-1,[grp,grp2])
1299 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1300 mm.setGroupsAtLevel(1,[grpNode])
1301 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1302 ref1=[4,9,8,14,15,4,10,9,15,16]
1303 ref2=[4,9,8,14,30,4,10,9,30,16]
1305 self.assertEqual(30,mm.getNumberOfNodes())
1306 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1307 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1309 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1310 self.assertEqual([15],nodes.getValues());
1311 self.assertEqual([7,8],cells.getValues());
1312 self.assertEqual([12,13],cells2.getValues());
1313 self.assertEqual(31,mm.getNumberOfNodes())
1314 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1315 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1316 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1317 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1318 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
1319 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1320 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
1321 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1322 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])
1323 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1324 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1326 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1327 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1328 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1329 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1330 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1334 def testBuildInnerBoundaryAlongM1Group3(self):
1335 """ Test buildInnerBoundaryAlongM1Group() with *non-connex* cracks """
1336 fname = "Pyfile73.med"
1337 m = MEDCouplingCMesh.New()
1338 m.setCoordsAt(0, DataArrayDouble([0.0,1.1,2.3,3.6,5.0]))
1339 m.setCoordsAt(1, DataArrayDouble([0.,1.,2.]))
1340 m = m.buildUnstructured(); m.setName("simple")
1341 m2 = m.buildDescendingConnectivity()[0]
1342 m2.setName(m.getName())
1344 # A crack in two non connected parts of the mesh:
1345 grpSeg = DataArrayInt([3,19]) ; grpSeg.setName("Grp")
1347 mm = MEDFileUMesh.New()
1348 mm.setMeshAtLevel(0,m)
1349 mm.setMeshAtLevel(-1,m2)
1350 mm.setGroupsAtLevel(-1,[grpSeg])
1351 nodes, cellsMod, cellsNotMod = mm.buildInnerBoundaryAlongM1Group("Grp")
1352 self.assertEqual([1,13],nodes.getValues());
1353 self.assertEqual([0,6],cellsMod.getValues());
1354 self.assertEqual([1,7],cellsNotMod.getValues());
1355 self.assertEqual(17,mm.getNumberOfNodes())
1356 self.assertEqual([3,19],mm.getGroupArr(-1,"Grp").getValues())
1357 self.assertEqual([22,23],mm.getGroupArr(-1,"Grp_dup").getValues())
1358 ref0=[4, 15, 0, 5, 6, 4, 8, 7, 12, 16]
1359 ref1=[4, 2, 1, 6, 7, 4, 9, 8, 13, 14]
1360 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[0,6]].getNodalConnectivity().getValues())
1361 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[1,7]].getNodalConnectivity().getValues())
1362 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
1363 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1365 refValues=DataArrayDouble([1.1, 1.2, 1.3, 1.4, 1.1, 1.2, 1.3, 1.4])
1366 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1367 self.assertTrue(delta.getMaxValue()[0]<1e-10)
1369 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1370 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1371 refValues2=refValues[:] ; refValues2[0] = 1.265; refValues2[6] = 1.105
1372 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1373 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1376 def testBuildInnerBoundaryAlongM1Group4(self):
1377 """ Test case where cells touch the M1 group on some nodes only and not on full egdes (triangle mesh for ex)
1379 coo = DataArrayDouble([0.,0., 1.,0., 2.,0., 3.,0.,
1380 0.,1., 1.,1., 2.,1., 3.,1.,
1381 0.,2., 1.,2., 2.,2., 3.,2.], 12, 2)
1382 conn = [3,0,4,1, 3,1,4,5,
1389 connI = DataArrayInt()
1390 connI.alloc(13, 1); connI.iota(); connI *= 4
1391 m2 = MEDCouplingUMesh("2D", 2)
1393 m2.setConnectivity(DataArrayInt(conn), connI)
1394 m2.checkConsistency()
1395 m1, _, _, _, _ = m2.buildDescendingConnectivity()
1396 grpIds = DataArrayInt([9,11]); grpIds.setName("group")
1397 grpIds2 = DataArrayInt([0,1]); grpIds2.setName("group2")
1398 mfu = MEDFileUMesh()
1399 mfu.setMeshAtLevel(0, m2)
1400 mfu.setMeshAtLevel(-1, m1)
1401 mfu.setGroupsAtLevel(-1, [grpIds, grpIds2])
1402 nNod = m2.getNumberOfNodes()
1403 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1404 m2_bis = mfu.getMeshAtLevel(0)
1405 m2_bis.checkConsistency()
1406 m1_bis = mfu.getMeshAtLevel(-1)
1407 m1_bis.checkConsistency()
1408 self.assertEqual(nNod+2, mfu.getNumberOfNodes())
1409 self.assertEqual(nNod+2, m2_bis.getNumberOfNodes())
1410 self.assertEqual(nNod+2, m1_bis.getNumberOfNodes())
1411 self.assertEqual([6,7], nodesDup.getValues())
1412 self.assertEqual([2.,1., 3.,1.], m2_bis.getCoords()[nNod:].getValues())
1413 self.assertEqual(set([3,10,11]), set(cells1.getValues()))
1414 self.assertEqual(set([8,9,4,5]), set(cells2.getValues()))
1415 self.assertEqual([9,11],mfu.getGroupArr(-1,"group").getValues())
1416 self.assertEqual([23,24],mfu.getGroupArr(-1,"group_dup").getValues())
1417 self.assertEqual([0,1],mfu.getGroupArr(-1,"group2").getValues())
1418 # mfu.getMeshAtLevel(0).writeVTK("/tmp/mfu_M0.vtu")
1419 ref0 =[3, 5, 10, 12, 3, 12, 10, 11, 3, 12, 11, 13]
1420 ref1 =[3, 2, 6, 7, 3, 2, 7, 3, 3, 1, 5, 6, 3, 1, 6, 2]
1421 self.assertEqual(ref0,mfu.getMeshAtLevel(0)[[3,10,11]].getNodalConnectivity().getValues())
1422 self.assertEqual(ref1,mfu.getMeshAtLevel(0)[[4,5,8,9]].getNodalConnectivity().getValues())
1423 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
1424 mfu.getGroup(-1,"group_dup").checkGeoEquivalWith(mfu.getGroup(-1,"group"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1425 m_bis0 = mfu.getMeshAtLevel(-1)
1426 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1427 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1429 def testBuildInnerBoundary5(self):
1430 """ Full 3D test with tetras only. In this case a tri from the group is not duplicated because it is made only
1431 of non duplicated nodes. The tri in question is hence not part of the final new "dup" group. """
1432 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,
1433 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,
1434 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,
1435 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,
1436 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,
1437 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,
1438 400.0, 0.0, 100.02162286181577, 99.31624553977466, 99.99999998882231, 200.0, 99.31624576683302, 100.00000010178034, 0.0, 99.31624560596512, 200.0, 100.0050761312483,
1439 99.31624560612883, 0.0, 100.00507613125338, 200.0, 99.99999995813045, 100.00950673487786, 0.0, 99.99999989928207, 100.0041870621175, 301.29063354383015,
1440 100.0000000093269, 0.0, 301.29063360689975, 0.0, 100.00957769061164, 140.52853868782435, 99.99999963972768, 100.00509135751312, 297.87779091770784,
1441 97.16750463405486, 97.18018457127863], 46, 3)
1442 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,
1443 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,
1444 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,
1445 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,
1446 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,
1447 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,
1448 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,
1449 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,
1450 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,
1451 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,
1453 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,
1454 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,
1455 360, 365, 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430]
1456 m3 = MEDCouplingUMesh("3D", 3)
1458 m3.setConnectivity(DataArrayInt(c0), DataArrayInt(cI0))
1459 m3.checkConsistency()
1460 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1461 grpIds = DataArrayInt([36,74]); grpIds.setName("group")
1462 mfu = MEDFileUMesh()
1463 mfu.setMeshAtLevel(0, m3)
1464 mfu.setMeshAtLevel(-1, m2)
1465 grpIds3D = DataArrayInt([0,1]); grpIds3D.setName("group_3d")
1466 mfu.setGroupsAtLevel(0, [grpIds3D]) # just to check preservation of 3D group
1467 mfu.setGroupsAtLevel(-1, [grpIds])
1468 nNod = m3.getNumberOfNodes()
1469 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1470 m3_bis = mfu.getMeshAtLevel(0)
1471 m3_bis.checkConsistency()
1472 m2_bis = mfu.getMeshAtLevel(-1)
1473 m2_bis.checkConsistency()
1474 self.assertEqual(nNod+1, mfu.getNumberOfNodes())
1475 self.assertEqual(nNod+1, m3_bis.getNumberOfNodes())
1476 self.assertEqual(nNod+1, m2_bis.getNumberOfNodes())
1477 self.assertEqual([3], nodesDup.getValues())
1478 self.assertEqual(m3_bis.getCoords()[3].getValues(), m3_bis.getCoords()[nNod:].getValues())
1479 self.assertEqual(set([22]), set(cells1.getValues()))
1480 self.assertEqual(set([77]), set(cells2.getValues()))
1481 self.assertEqual([36,74],mfu.getGroupArr(-1,"group").getValues())
1482 self.assertEqual([0,1],mfu.getGroupArr(0,"group_3d").getValues())
1483 self.assertEqual([213],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1484 m_bis0 = mfu.getMeshAtLevel(-1)
1485 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1486 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1489 def testBasicConstructors(self):
1490 fname="Pyfile18.med"
1491 m=MEDFileMesh.New(fname)
1492 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1493 m=MEDFileMesh.New(fname)
1494 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1495 m=MEDFileUMesh(fname)
1498 m=MEDFileCMesh("MEDFileMesh5.med")
1499 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1501 m=MEDFileMeshMultiTS()
1502 m=MEDFileMeshMultiTS(fname)
1503 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1505 m=MEDFileMeshes(fname)
1507 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1508 m=MEDFileFieldMultiTS()
1509 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1511 m=MEDFileFields(fname)
1513 m=MEDFileData(fname)
1515 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1516 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1517 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1518 m=MEDCouplingCMesh()
1519 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1520 m=MEDCouplingFieldTemplate(ON_NODES)
1521 m=MEDCouplingMultiFields([])
1522 m=MEDCouplingFieldOverTime([])
1525 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1526 def testBugSemiPartialField(self):
1527 fname="Pyfile46.med"
1528 m=MEDLoaderDataForTest.build2DMesh_3()
1529 m=m[:10] ; m.setName("mesh")
1530 f=m.getMeasureField(ON_CELLS)
1531 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1533 f.setName("SemiPartialField")
1535 f1=f[:6] ; f1.getMesh().setName(m.getName())
1536 f2=f[6:] ; f2.getMesh().setName(m.getName())
1538 mm=MEDFileUMesh.New()
1539 mm.setMeshAtLevel(0,m)
1540 ff=MEDFileField1TS.New()
1541 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1545 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1546 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1547 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1549 fread.checkConsistencyLight()
1550 fread2.checkConsistencyLight()
1551 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1552 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1555 def testUnPolyze1(self):
1556 fname="Pyfile47.med"
1557 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1558 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]
1559 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1560 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]]))
1562 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1563 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1564 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1565 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1566 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1567 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1568 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1569 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1571 mm.setRenumFieldArr(0,None)
1572 mm.setFamilyFieldArr(-1,None)
1575 def testUnPolyze2(self):
1576 fname="Pyfile48.med"
1577 mfd=MEDFileData.New()
1578 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1579 meshes=MEDFileMeshes.New()
1581 mfd.setMeshes(meshes)
1582 fields=MEDFileFields.New()
1583 mfd.setFields(fields)
1584 ff=MEDFileFieldMultiTS.New()
1585 fields.pushField(ff)
1587 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1588 f0_0.setTime(9.5,3,4)
1589 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1591 f0_0.setMesh(mm.getMeshAtLevel(0))
1592 ff.appendFieldNoProfileSBT(f0_0)
1593 ff0=ff.getTimeStepAtPos(0)
1594 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1595 f0_1.setTime(9.5,3,4)
1596 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1597 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1598 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1600 ff0.setFieldProfile(f0_1,mm,0,pfl)
1601 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1602 f0_2.setTime(9.5,3,4)
1603 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1604 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
1605 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1607 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1608 mfd.getFields().shallowCpyGlobs(ff0)
1610 mfd.unPolyzeMeshes()
1612 fmts=mfd.getFields()[0]
1613 self.assertEqual(fmts.getNumberOfTS(),1)
1614 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1615 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1616 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))])
1617 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1618 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1619 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1620 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1621 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1622 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1623 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1624 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))
1625 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1626 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1627 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1628 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1629 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1630 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])
1631 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1632 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1633 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1634 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])
1635 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1640 def testGaussWriteOnPfl1(self):
1641 fname="Pyfile49.med"
1642 fname2="Pyfile50.med"
1643 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1644 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1645 mQ8.allocateCells(1)
1646 mQ8.insertNextCell(NORM_QUAD8,range(8))
1647 mQ8.finishInsertingCells()
1648 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1649 mQ4.allocateCells(1)
1650 mQ4.insertNextCell(NORM_QUAD4,range(4))
1651 mQ4.finishInsertingCells()
1652 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1653 mT3.allocateCells(1)
1654 mT3.insertNextCell(NORM_TRI3,range(3))
1655 mT3.finishInsertingCells()
1657 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.]]
1658 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1659 ms[:]=(elt.deepCopy() for elt in ms)
1660 for m,t in zip(ms,tr):
1661 d=m.getCoords() ; d+= t
1663 m=MEDCouplingUMesh.MergeUMeshes(ms)
1665 m2=m[:13] ; m2.setName(m.getName())
1666 ### 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.
1667 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1668 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1671 da=DataArrayDouble(34) ; da.iota(3.)
1673 f.setName("fieldCellOnPflWithoutPfl")
1674 fInvalid=f.deepCopy()
1675 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])
1676 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])
1677 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])
1678 f.checkConsistencyLight()
1679 fInvalid2=fInvalid.deepCopy()
1680 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1683 mm.setMeshAtLevel(0,m)
1686 f1ts=MEDFileField1TS.New()
1687 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1688 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1689 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1690 f1ts.setFieldProfile(f,mm,0,pfl)
1693 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1694 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1695 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1696 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1697 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1698 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1699 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1700 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1702 dataRead=MEDFileData.New(fname)
1703 mRead=dataRead.getMeshes()[0]
1704 f1tsRead=dataRead.getFields()[0][0]
1705 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1706 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1707 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1708 f2_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1709 f2_bis.checkConsistencyLight()
1710 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1712 WriteField(fname2,f,True)
1713 f2_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1714 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1715 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1716 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1717 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1718 m2=m[pfl] ; m2.setName(m.getName())
1721 da=DataArrayDouble(35) ; da.iota(3.)
1723 f.setName("fieldCellOnPflWithoutPfl2")
1724 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1725 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])
1726 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])
1727 f.checkConsistencyLight()
1730 mm.setMeshAtLevel(0,m)
1732 f1ts=MEDFileField1TS.New()
1733 f1ts.setFieldProfile(f,mm,0,pfl)
1734 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1735 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1736 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1737 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1739 dataRead=MEDFileData.New(fname)
1740 mRead=dataRead.getMeshes()[0]
1741 f1tsRead=dataRead.getFields()[0][0]
1742 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1743 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1744 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1745 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1746 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1747 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1748 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1750 WriteField(fname2,f,True)
1751 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1752 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1753 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1754 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1755 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1758 da=DataArrayDouble(60) ; da.iota(3.)
1760 f.setName("fieldCellWithoutPfl")
1761 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])
1762 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])
1763 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])
1764 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])
1765 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])
1766 f.checkConsistencyLight()
1768 mm.setMeshAtLevel(0,m)
1769 f1ts=MEDFileField1TS.New()
1770 f1ts.setFieldNoProfileSBT(f)
1771 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1772 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1773 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1774 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1775 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1779 dataRead=MEDFileData.New(fname)
1780 mRead=dataRead.getMeshes()[0]
1781 f1tsRead=dataRead.getFields()[0][0]
1782 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1783 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1784 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1785 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1786 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1787 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1789 WriteField(fname2,f,True)
1790 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1791 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1792 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1795 # Testing profile on nodes when the profile is identity but not on all nodes.
1796 def testMEDFieldPflOnNode1(self):
1797 fname="Pyfile51.med"
1798 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)
1799 m0=MEDCouplingUMesh("Mesh",2)
1801 m0.insertNextCell(NORM_TRI3,[1,4,2])
1802 m0.insertNextCell(NORM_TRI3,[4,5,2])
1803 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1804 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1805 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1806 m0.finishInsertingCells()
1808 m1=MEDCouplingUMesh(m0.getName(),1)
1810 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1812 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1814 m1.finishInsertingCells()
1818 m.setMeshAtLevel(0,m0)
1819 m.setMeshAtLevel(-1,m1)
1821 dt=3 ; it=2 ; tim=4.5
1822 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1823 fieldNode0.setName("fieldNode0")
1824 fieldNode0.setTime(tim,dt,it)
1825 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1826 arr=DataArrayDouble([10,11,12,13,14])
1827 fieldNode0.setArray(arr)
1828 f0=MEDFileField1TS()
1829 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1830 m.write(fname,2) ; f0.write(fname,0)
1831 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1832 fieldNode1.setName("fieldNode1")
1833 fieldNode1.setTime(tim,dt,it)
1834 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1835 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1836 fieldNode1.setArray(arr1)
1837 f1=MEDFileField1TS()
1838 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1841 ## Reading from file
1842 m=MEDFileMesh.New(fname)
1843 m0=m.getMeshAtLevel(0)
1844 m00=m0.deepCopy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1845 fieldNode0.setMesh(m00)
1846 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1847 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1848 ff0_1.checkConsistencyLight()
1849 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1850 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1851 ff0_2.checkConsistencyLight()
1852 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1853 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1854 ff0_3.checkConsistencyLight()
1855 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1856 ff0_4=ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1857 ff0_4.checkConsistencyLight()
1858 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1859 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1860 m1=m.getMeshAtLevel(-1)
1861 m10=m1.deepCopy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1862 fieldNode1.setMesh(m10)
1863 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1864 ff1_1.checkConsistencyLight()
1865 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1866 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1867 ff1_2.checkConsistencyLight()
1868 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1869 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1870 ff1_3.checkConsistencyLight()
1871 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1872 ff1_4=ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1873 ff1_4.checkConsistencyLight()
1874 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1875 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]
1876 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]
1877 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]
1878 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1879 arr_r.setName(fieldNode1.getArray().getName())
1880 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1881 pfl1_r.setName(pfl1.getName())
1882 self.assertTrue(pfl1_r.isEqual(pfl1))
1885 # Testing profile on nodes when the profile is identity but not on all nodes.
1886 def testMEDFieldPflOnCell1(self):
1887 fname="Pyfile52.med"
1888 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)
1889 m0=MEDCouplingUMesh("Mesh",2)
1891 m0.insertNextCell(NORM_TRI3,[1,4,2])
1892 m0.insertNextCell(NORM_TRI3,[4,5,2])
1893 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1894 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1895 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1896 m0.finishInsertingCells()
1898 m1=MEDCouplingUMesh(m0.getName(),1)
1900 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1902 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1904 m1.finishInsertingCells()
1908 m.setMeshAtLevel(0,m0)
1909 m.setMeshAtLevel(-1,m1)
1911 dt=3 ; it=2 ; tim=4.5
1912 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1913 fieldCell0.setName("fieldCell0")
1914 fieldCell0.setTime(tim,dt,it)
1915 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1916 arr=DataArrayDouble([10,11,12])
1917 fieldCell0.setArray(arr)
1918 f0=MEDFileField1TS()
1919 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1920 m.write(fname,2) ; f0.write(fname,0)
1921 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1922 fieldCell1.setName("fieldCell1")
1923 fieldCell1.setTime(tim,dt,it)
1924 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1925 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1926 fieldCell1.setArray(arr1)
1927 f1=MEDFileField1TS()
1928 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1931 ## Reading from file
1932 m=MEDFileMesh.New(fname)
1933 m0=m.getMeshAtLevel(0)
1934 m00=m0.deepCopy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1935 fieldCell0.setMesh(m00)
1936 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1937 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1938 ff0_1.checkConsistencyLight()
1939 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1940 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1941 ff0_2.checkConsistencyLight()
1942 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1943 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1944 ff0_3.checkConsistencyLight()
1945 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1946 ff0_4=ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1947 ff0_4.checkConsistencyLight()
1948 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1949 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1950 m1=m.getMeshAtLevel(-1)
1951 m10=m1.deepCopy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1952 fieldCell1.setMesh(m10)
1953 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1954 ff1_1.checkConsistencyLight()
1955 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1956 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1957 ff1_2.checkConsistencyLight()
1958 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1959 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1960 ff1_3.checkConsistencyLight()
1961 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1962 ff1_4=ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1963 ff1_4.checkConsistencyLight()
1964 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1965 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]
1966 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]
1967 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]
1968 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1969 arr_r.setName(fieldCell1.getArray().getName())
1970 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1971 pfl1_r.setName(pfl1.getName())
1972 self.assertTrue(pfl1_r.isEqual(pfl1))
1975 def testMEDFileUMeshZipCoords1(self):
1977 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1978 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])
1979 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1980 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1981 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1982 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1983 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1984 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1985 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1986 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1987 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1988 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1990 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1991 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1992 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1993 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1994 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1995 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1996 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1997 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1998 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
2001 def testMEDUMeshAddNodeGroup1(self):
2002 fname="Pyfile53.med"
2004 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2005 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])
2006 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2007 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2008 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2009 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2010 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2013 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
2014 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
2015 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2016 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2017 mm.setFamilyId("MyFam",2)
2018 mm.setFamilyId("MyOtherFam",3)
2019 mm.setFamilyId("MyOther-1",-1)
2020 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2021 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2023 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2024 mm.addNodeGroup(daTest)
2025 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2026 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2027 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2028 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2030 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2031 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2032 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2033 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2034 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2035 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2037 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
2038 da=DataArrayInt([3,12]) ; da.setName("grp0")
2039 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2041 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2043 mm=MEDFileMesh.New(fname)
2044 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2045 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2046 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2047 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2049 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2050 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2051 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2052 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2053 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2054 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2056 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
2057 da=DataArrayInt([3,12]) ; da.setName("grp0")
2058 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2060 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2063 def testMEDUMeshAddGroup1(self):
2064 fname="Pyfile54.med"
2066 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2067 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
2069 m0.insertNextCell(NORM_TRI3,[1,2,1])
2072 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
2075 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
2077 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2078 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2079 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2080 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2081 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2084 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
2085 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
2086 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2087 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2088 mm.setFamilyId("MyFam",2)
2089 mm.setFamilyId("MyOtherFam",3)
2090 mm.setFamilyId("MyOther-1",-1)
2091 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2092 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2094 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2095 mm.addGroup(0,daTest)
2096 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2097 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2098 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2099 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2101 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2102 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2103 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2104 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2105 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2106 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2108 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
2109 da=DataArrayInt([3,12]) ; da.setName("grp0")
2110 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2112 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2114 mm=MEDFileMesh.New(fname)
2115 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2116 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2117 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2118 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2120 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2121 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2122 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2123 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2124 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2125 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2127 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
2128 da=DataArrayInt([3,12]) ; da.setName("grp0")
2129 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2131 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2134 def testHeapMem1(self):
2135 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2137 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2139 m=MEDCouplingCMesh()
2140 arr=DataArrayDouble(10,1) ; arr.iota(0)
2141 m.setCoords(arr,arr)
2142 m=m.buildUnstructured()
2144 f=m.getMeasureField(ON_CELLS)
2145 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
2146 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
2149 mm.setMeshAtLevel(0,m)
2150 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100+10*strMulFac))
2151 ff=MEDFileField1TS()
2152 ff.setFieldNoProfileSBT(f)
2153 self.assertIn(ff.getHeapMemorySize(),xrange(771-40,771+21+(4+1)*strMulFac))
2155 fff=MEDFileFieldMultiTS()
2156 fff.appendFieldNoProfileSBT(f)
2157 self.assertIn(fff.getHeapMemorySize(),xrange(815-50,815+30+(6+2)*strMulFac))
2159 fff.appendFieldNoProfileSBT(f)
2160 self.assertIn(fff.getHeapMemorySize(),xrange(1594-90,1594+50+(10+1)*strMulFac))
2161 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(771-40,771+20+(4+1)*strMulFac))
2164 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2165 fff.appendFieldProfile(f2,mm,0,pfl)
2166 self.assertIn(fff.getHeapMemorySize(),xrange(2348-130,2348+100+(10+2)*strMulFac))
2167 self.assertIn(fff.getProfile("pfl").getHeapMemorySize(),xrange(204-10,204+10+2*strMulFac))
2168 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(738-50,738+30+4*strMulFac))
2171 def testCurveLinearMesh1(self):
2172 fname="Pyfile55.med"
2173 mesh=MEDCouplingCurveLinearMesh();
2174 mesh.setTime(2.3,4,5);
2175 mesh.setTimeUnit("us");
2176 mesh.setName("Example of Cuve linear mesh");
2177 mesh.setDescription("buildCLMesh");
2178 a1=DataArrayDouble(3*20,1);
2179 a1.iota(7.) ; a1.rearrange(3);
2181 mesh.setNodeGridStructure([4,5]);
2182 mesh.checkConsistencyLight();
2184 m=MEDFileCurveLinearMesh()
2186 d=DataArrayInt(20) ; d.iota(4)
2187 m.setFamilyFieldArr(1,d)
2188 d3=DataArrayInt(20) ; d3.iota(400)
2189 m.setRenumFieldArr(1,d3)
2190 d2=DataArrayInt(12) ; d2.iota(40)
2191 m.setFamilyFieldArr(0,d2)
2192 d4=DataArrayInt(21) ; d4.iota(4000)
2193 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2195 m.setRenumFieldArr(1,d4)
2198 m1=MEDFileCurveLinearMesh(fname)
2200 self.assertTrue(mm.isEqual(mesh,1e-12))
2201 self.assertEqual(mm.getSpaceDimension(),3)
2202 self.assertEqual(mm.getSpaceDimensionOnNodeStruct(),2)
2204 m1=MEDFileMesh.New(fname)
2205 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2206 self.assertTrue(isinstance(m1.getUnivName(),str))
2207 self.assertTrue(len(m1.getUnivName())!=0)
2208 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2211 def testParameters1(self):
2212 fname="Pyfile56.med"
2213 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2214 mm=MEDFileCMesh() ; mm.setMesh(m)
2215 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2217 p=MEDFileParameters()
2218 data.setParams(p) ; data.setMeshes(ms)
2219 pts=MEDFileParameterMultiTS()
2220 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2221 pts.appendValue(1,2,3.4,567.89)
2222 pts.appendValue(2,3,5.6,999.123)
2223 pts2=pts.deepCopy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2224 p.pushParam(pts) ; p.pushParam(pts2)
2226 p2=MEDFileParameters(fname)
2227 self.assertTrue(p.isEqual(p2,1e-14)[0])
2228 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2230 pts4=pts2.deepCopy()
2231 pts3=pts2.deepCopy()
2232 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2233 pts2.eraseTimeStepIds([0])
2234 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2236 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2237 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2238 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2239 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2240 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2242 self.assertTrue(p.isEqual(p2,1e-14)[0])
2243 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2244 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2245 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2246 self.assertEqual(p.getParamsNames(),('A','B'))
2247 ptsr=MEDFileParameterMultiTS(fname,"B")
2248 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2249 ptsr=MEDFileParameterMultiTS(fname)
2250 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2251 p1tsr=MEDFileParameterDouble1TS(fname)
2252 self.assertEqual(p1tsr.getName(),"A")
2253 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2254 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2255 self.assertEqual(p1tsr.getName(),"B")
2256 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2257 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2258 self.assertEqual(p1tsr.getName(),"B")
2259 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2260 data2=MEDFileData(fname)
2261 self.assertEqual(2,data2.getNumberOfParams())
2262 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2265 def testNamesOnCellAndNodesInMeshes1(self):
2266 fname="Pyfile58.med"
2267 fname2="Pyfile59.med"
2268 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2269 m1=m.buildDescendingConnectivity()[0]
2270 m1.sortCellsInMEDFileFrmt()
2273 mm.setMeshAtLevel(0,m)
2274 mm.setMeshAtLevel(-1,m1)
2275 namesCellL0=DataArrayAsciiChar(6,16)
2276 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2277 mm.setNameFieldAtLevel(0,namesCellL0)
2278 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.subArray(2)])
2279 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2280 mm.setNameFieldAtLevel(-1,namesCellL1)
2281 namesNodes=namesCellL1.subArray(4,16)
2282 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2283 mm.setNameFieldAtLevel(1,namesNodes)
2286 mmr=MEDFileMesh.New(fname)
2287 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2288 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2289 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2290 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2291 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2292 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2293 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2294 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2296 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2297 # remove names on nodes
2298 mmCpy.setNameFieldAtLevel(1,None)
2299 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2300 mm.setNameFieldAtLevel(1,None)
2301 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2302 mm.setNameFieldAtLevel(-1,None)
2304 mmr=MEDFileMesh.New(fname)
2305 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2306 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2307 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2309 c=MEDCouplingCMesh()
2310 arr=DataArrayDouble([0.,1.1,2.3])
2311 c.setCoords(arr,arr)
2315 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2316 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2318 ccr=MEDFileMesh.New(fname2)
2319 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2320 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2321 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2322 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2323 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2324 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2325 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2327 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2330 def testToExportInExamples1(self):
2331 m=MEDCouplingCMesh()
2332 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2333 m.setCoords(arr,arr)
2334 m=m.buildUnstructured() ; m.setName("mesh")
2335 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2336 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2339 mm.setMeshAtLevel(0,m)
2340 mm.setMeshAtLevel(-1,m2)
2341 mm.setGroupsAtLevel(0,[grp1,grp2])
2342 mm.write("example.med",2)
2344 m0=mm.getMeshAtLevel(0)
2345 m1=mm.getMeshAtLevel(-1)
2346 grp1=mm.getGroupArr(0,"grp1")
2347 grp2=mm.getGroupArr(0,"grp2")
2349 whichGrp=DataArrayInt(m0.getNumberOfCells())
2350 whichGrp.fillWithValue(-1)
2351 for grpId,grp in enumerate(grps):
2354 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2355 e,f=a.areCellsIncludedIn(m1,2)
2357 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2358 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2359 c2.transformWithIndArr(whichGrp)
2360 splitOfM1=len(grps)*[None]
2361 for grpId,grp in enumerate(grps):
2362 tmp=c2.findIdsEqual(grpId)
2363 splitOfM1[grpId]=tmp
2365 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2366 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2369 def testBugCorrection1(self):
2372 self.assertEqual(fs[0],None)
2373 self.assertEqual(3,len(fs))
2376 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2377 f1Name="Pyfile60.med"
2378 f2Name="Pyfile61.med"
2379 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2381 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2383 # reading and compare
2384 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2385 for mn in d1.getMeshes().getMeshesNames():
2386 m1=d1.getMeshes()[mn]
2387 m2=d2.getMeshes()[mn]
2388 for lev in m1.getNonEmptyLevels():
2389 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2390 for grpName in grpsNames:
2391 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2395 for fieldn in d1.getFields().getFieldsNames():
2396 f1=d1.getFields()[fieldn]
2397 f2=d2.getFields()[fieldn]
2398 for it,order,tim in f1.getTimeSteps():
2401 if len(f1t.getPflsReallyUsed())!=0:
2403 for lev in f1t.getNonEmptyLevels()[1]:
2404 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2405 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2406 self.assertTrue(pfl1.isEqual(pfl2))
2407 self.assertTrue(arr1.isEqual(arr2,1e-10))
2412 for lev in f1t.getNonEmptyLevels()[1]:
2413 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2414 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2415 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2422 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2423 m=MEDCouplingCMesh()
2424 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2425 m.setCoords(arr,arr,arr)
2426 m=m.buildUnstructured()
2427 m2=m.buildDescendingConnectivity()[0]
2429 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2430 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2431 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2432 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2433 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2434 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2436 mm.setMeshAtLevel(0,m)
2437 mm.setGroupsAtLevel(0,[g1,g2])
2438 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2439 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2440 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2441 mm.normalizeFamIdsMEDFile()
2442 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2443 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2444 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2445 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2446 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2447 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2448 for g in mm.getGroupsOnSpecifiedLev(0):
2449 for f in mm.getFamiliesIdsOnGroup(g):
2450 self.assertTrue(f<0)
2455 mm.setMeshAtLevel(0,m)
2456 mm.setMeshAtLevel(-1,m2)
2457 mm.setGroupsAtLevel(0,[g1,g2])
2458 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2459 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2460 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2461 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2462 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2463 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2464 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2465 mm.normalizeFamIdsMEDFile()
2466 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2467 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2468 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2469 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2470 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2471 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2472 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2473 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2474 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2475 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2476 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2477 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2479 for g in mm.getGroupsOnSpecifiedLev(lev):
2480 for f in mm.getFamiliesIdsOnGroup(g):
2481 self.assertTrue(f<0)
2487 mm.setMeshAtLevel(0,m)
2488 mm.setMeshAtLevel(-1,m2)
2489 mm.setGroupsAtLevel(0,[g1,g2])
2490 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2491 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2492 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2493 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2494 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2495 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2496 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2497 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2498 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2499 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2500 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2501 mm.normalizeFamIdsMEDFile()
2502 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2503 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2504 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2505 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2506 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2507 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2508 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2509 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2510 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2511 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2512 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2513 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2514 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2515 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2516 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2517 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2518 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2519 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2521 for g in mm.getGroupsOnSpecifiedLev(lev):
2522 for f in mm.getFamiliesIdsOnGroup(g):
2523 self.assertTrue(f<0)
2527 for g in mm.getGroupsOnSpecifiedLev(1):
2528 for f in mm.getFamiliesIdsOnGroup(g):
2529 self.assertTrue(f>0)
2534 def testNonRegressionMantis22212ChangeGrpName(self):
2535 fileName="Pyfile62.med"
2536 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2537 m=MEDFileUMesh.New()
2538 m.setCoords(m2.getCoords())
2539 m.setMeshAtLevel(0,m2)
2540 m.setMeshAtLevel(-1,m1)
2541 m.setMeshAtLevel(-2,m0)
2542 m.setFamilyFieldArr(0,f2)
2543 m.setFamilyFieldArr(-1,f1)
2544 m.setFamilyFieldArr(-2,f0)
2545 m.setFamilyFieldArr(1,p)
2547 for i in xrange(nbOfFams):
2548 m.addFamily(fns[i],fids[i])
2551 for i in xrange(nbOfGrps):
2552 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2554 m.setName(m2.getName())
2555 m.setDescription(m2.getDescription())
2558 mm0=MEDFileMesh.New(fileName)
2559 mm1=MEDFileMesh.New(fileName)
2560 groupNamesIni=GetMeshGroupsNames(fileName,"ma")
2561 for name in groupNamesIni:
2562 mm1.changeGroupName(name,name+'N')
2564 mm1.write(fileName,2)
2567 mm2=MEDFileMesh.New(fileName)
2568 for name in groupNamesIni:
2569 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2570 arr0=mm0.getGroupArr(lev,name)
2571 arr2=mm2.getGroupArr(lev,name+'N')
2572 arr0.setName(name+'N')
2573 self.assertTrue(arr0.isEqual(arr2))
2578 def testInt32InMEDFileFieldStar1(self):
2579 fname="Pyfile63.med"
2580 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2581 arr=f1.getArray().convertToIntArr()
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,arr)
2591 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2592 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2593 self.assertTrue(b.isEqual(arr))
2594 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2596 ff2=MEDFileAnyTypeField1TS.New(fname)
2597 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2598 self.assertEqual(ff2.getTime(),[0,1,2.0])
2599 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2600 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2601 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2602 self.assertTrue(b.isEqual(arr))
2603 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2605 c=ff2.getUndergroundDataArray() ; c*=2
2606 ff2.write(fname,0) # 2 time steps in
2607 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2608 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2609 self.assertEqual(len(ffs1),2)
2610 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2611 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2612 self.assertTrue(b.isEqual(arr))
2613 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2614 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2615 self.assertTrue(b.isEqual(arr))
2616 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2617 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2618 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2619 self.assertTrue(b.isEqual(2*arr))
2621 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2622 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2624 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2627 self.assertTrue(bc.isEqual(3*arr))
2628 nf1=MEDCouplingFieldDouble(ON_NODES)
2629 nf1.setTime(9.,10,-1)
2630 nf1.setMesh(f1.getMesh())
2631 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2632 nf1.setName("VectorFieldOnNodes")
2633 nff1=MEDFileIntField1TS.New()
2634 nff1.setFieldNoProfileSBT(nf1,narr)
2635 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2636 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2639 nf2=MEDCouplingFieldDouble(ON_NODES)
2640 nf2.setTime(19.,20,-11)
2641 nf2.setMesh(f1.getMesh())
2642 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2643 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2644 nff2=MEDFileIntField1TS.New()
2645 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2646 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2647 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2648 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2649 self.assertTrue(b.isEqual(npfl))
2650 self.assertTrue(a.isEqual(narr2))
2652 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2653 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2654 self.assertTrue(b.isEqual(npfl))
2655 self.assertTrue(a.isEqual(narr2))
2657 nf3=MEDCouplingFieldDouble(ON_NODES)
2658 nf3.setName("VectorFieldOnNodesDouble")
2659 nf3.setTime(29.,30,-21)
2660 nf3.setMesh(f1.getMesh())
2661 nf3.setArray(f1.getMesh().getCoords())
2662 nff3=MEDFileField1TS.New()
2663 nff3.setFieldNoProfileSBT(nf3)
2665 fs=MEDFileFields(fname)
2666 self.assertEqual(len(fs),4)
2667 ffs=[it for it in fs]
2668 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2669 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2670 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2671 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2673 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2674 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2675 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2676 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2677 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2679 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2680 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2681 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2682 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2683 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2684 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2685 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2686 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2688 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2689 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2690 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2691 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2694 def testMEDFileFields1(self):
2695 fname="Pyfile64.med"
2696 f1=MEDCouplingFieldDouble(ON_NODES)
2697 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2698 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2699 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2701 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2703 f1.setName("Field1")
2704 ff1=MEDFileField1TS.New()
2705 ff1.setFieldNoProfileSBT(f1)
2706 self.assertEqual(ff1.getDtUnit(),"us")
2708 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2709 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2711 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2712 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2713 ff1s.setName("Field2")
2715 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2716 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)],True))
2718 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2719 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2720 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2721 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2722 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2725 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2726 def testMEDFileFields2(self):
2727 fname="Pyfile65.med"
2728 # to check that all is initialize
2729 MEDFileField1TS().__str__()
2730 MEDFileFieldMultiTS().__str__()
2731 # building a mesh containing 4 tri3 + 5 quad4
2732 tri=MEDCouplingUMesh("tri",2)
2733 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2734 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2735 tris=[tri.deepCopy() for i in xrange(4)]
2736 for i,elt in enumerate(tris): elt.translate([i,0])
2737 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2738 quad=MEDCouplingUMesh("quad",2)
2739 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2740 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2741 quads=[quad.deepCopy() for i in xrange(5)]
2742 for i,elt in enumerate(quads): elt.translate([5+i,0])
2743 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2744 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2745 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2747 fmts0_0=MEDFileFieldMultiTS()
2748 fmts0_1=MEDFileFieldMultiTS()
2750 for i in xrange(10):
2751 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2752 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2753 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2754 f.setTime(float(i+1)+0.1,i+1,-i-1)
2755 fmts0_0.appendFieldNoProfileSBT(f)
2756 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2757 self.assertEqual(fmts0_1.getName(),name1)
2758 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2759 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2761 # components names have been modified to generate errors
2762 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2763 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2764 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2765 f1ts.setInfo(['aa [bb]','eee [dd]'])
2766 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2768 # add a mismatch of nb of compos
2770 fmts0_2=fmts0_0.deepCopy()
2771 fmts0_3=fmts0_0.deepCopy()
2772 fmts0_4=fmts0_0.deepCopy()
2773 fmts0_5=fmts0_0.shallowCpy()
2774 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)
2776 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2777 del fmts0_3[[1.1,(6,-6),9]]
2778 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2779 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2780 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2781 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2782 fmts0_7=fmts0_4[::-3]
2783 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2784 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2787 fs0.pushField(fmts0_0)
2788 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2789 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2790 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2791 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2793 fs0=MEDFileFields(fname)
2794 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2795 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2796 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2797 del fs1[["2ndField",3]]
2798 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2799 fs2=fs0[[0,"4thField"]]
2800 self.assertTrue(isinstance(fs2,MEDFileFields))
2801 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2803 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2806 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2807 def testMEDFileFields3(self):
2808 fname="Pyfile66.med"
2809 # building a mesh containing 4 tri3 + 5 quad4
2810 tri=MEDCouplingUMesh("tri",2)
2811 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2812 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2813 tris=[tri.deepCopy() for i in xrange(4)]
2814 for i,elt in enumerate(tris): elt.translate([i,0])
2815 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2816 quad=MEDCouplingUMesh("quad",2)
2817 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2818 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2819 quads=[quad.deepCopy() for i in xrange(5)]
2820 for i,elt in enumerate(quads): elt.translate([5+i,0])
2821 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2822 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2823 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2825 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2827 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2828 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2829 fmts0_0=MEDFileFieldMultiTS()
2830 fmts0_1=MEDFileFieldMultiTS()
2832 for i in xrange(10):
2833 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2834 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2835 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2836 f.setTime(float(i+1)+0.1,i+1,-i-1)
2837 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2838 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2839 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2840 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2843 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2844 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2845 fmts0_0.zipPflsNames()
2846 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2847 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2848 fmts0_2=fmts0_0.deepCopy()
2849 fmts0_3=fmts0_0.deepCopy()
2850 fmts0_4=fmts0_0.deepCopy()
2852 fs0.pushField(fmts0_0)
2853 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2854 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2855 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2856 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2858 fmts0_5=MEDFileFieldMultiTS()
2860 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2861 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2862 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2863 f.setTime(float(i+1)+0.1,i+1,-i-1)
2864 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2866 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2867 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2868 fs0.checkGlobsCoherency()
2872 def testSplitComponents1(self):
2873 fname="Pyfile67.med"
2874 # building a mesh containing 4 tri3 + 5 quad4
2875 tri=MEDCouplingUMesh("tri",2)
2876 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2877 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2878 tris=[tri.deepCopy() for i in xrange(4)]
2879 for i,elt in enumerate(tris): elt.translate([i,0])
2880 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2881 quad=MEDCouplingUMesh("quad",2)
2882 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2883 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2884 quads=[quad.deepCopy() for i in xrange(5)]
2885 for i,elt in enumerate(quads): elt.translate([5+i,0])
2886 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2887 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2888 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2890 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2892 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2893 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2895 fmts0_1=MEDFileFieldMultiTS()
2897 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2898 for i in xrange(10):
2900 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2901 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2902 f.setTime(float(i+1)+0.1,i+1,-i-1)
2903 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2904 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2906 fs.pushField(fmts0_1)
2907 self.assertEqual(1,len(fs))
2908 l=fmts0_1.splitComponents()
2909 self.assertEqual(3,len(l))
2910 for elt in l: self.assertEqual(10,len(elt))
2911 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2913 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2916 self.assertEqual(4,len(fs))
2917 for elt in fs: self.assertEqual(10,len(elt))
2918 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2919 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2921 fs.write(fname,0) ; del fs
2923 fs1=MEDFileFields(fname)
2924 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2925 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2926 self.assertEqual(4,len(fs1))
2927 for i in xrange(10):
2928 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2929 f1ts=fs1[fieldName][i]
2930 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2931 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2932 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2934 f1ts=fs1["1stField"][i]
2935 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2936 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2937 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2941 def testMEDFileFieldConvertTo1(self):
2942 fname="Pyfile68.med"
2943 # building a mesh containing 4 tri3 + 5 quad4
2944 tri=MEDCouplingUMesh("tri",2)
2945 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2946 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2947 tris=[tri.deepCopy() for i in xrange(4)]
2948 for i,elt in enumerate(tris): elt.translate([i,0])
2949 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2950 quad=MEDCouplingUMesh("quad",2)
2951 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2952 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2953 quads=[quad.deepCopy() for i in xrange(5)]
2954 for i,elt in enumerate(quads): elt.translate([5+i,0])
2955 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2956 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2957 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2958 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2960 ff0=MEDFileField1TS()
2961 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")
2962 f0.checkConsistencyLight()
2963 ff0.setFieldNoProfileSBT(f0)
2965 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2966 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2968 ff0i=ff0.convertToInt()
2969 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2970 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2972 ff1=ff0i.convertToDouble()
2973 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2974 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2976 del arr,f0,ff0,ff1,ff0i,fspExp
2977 ff0=MEDFileField1TS()
2978 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")
2979 f0.checkConsistencyLight()
2980 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2981 ff0.setFieldProfile(f0,mm,0,pfl)
2982 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2983 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2985 ff0i=ff0.convertToInt()
2986 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2987 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2988 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2990 ff1=ff0i.convertToDouble()
2991 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2992 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2993 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2995 ff0=MEDFileFieldMultiTS()
2996 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)
2997 f0.checkConsistencyLight()
2998 ff0.appendFieldProfile(f0,mm,0,pfl)
2999 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)
3000 f0.checkConsistencyLight()
3001 ff0.appendFieldProfile(f0,mm,0,pfl)
3002 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)
3003 f0.checkConsistencyLight()
3004 ff0.appendFieldProfile(f0,mm,0,pfl)
3005 ff1=ff0.convertToInt()
3006 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3007 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3008 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3009 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3010 arr=ff1.getUndergroundDataArray(dt,it)
3011 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3013 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3018 ff1=ff1.convertToDouble()
3019 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
3020 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3021 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3022 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3023 arr=ff1.getUndergroundDataArray(dt,it)
3024 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
3026 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3028 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
3029 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3030 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3031 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3032 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
3033 arr=ff1.getUndergroundDataArray(dt,it)
3034 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3036 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
3039 def testMEDFileFieldPartialLoading(self):
3040 fname="Pyfile69.med"
3042 a=DataArrayInt() ; aa=a.getHeapMemorySize()
3044 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
3045 # building a mesh containing 30 tri3 + 40 quad4
3046 tri=MEDCouplingUMesh("tri",2)
3047 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3048 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3049 tris=[tri.deepCopy() for i in xrange(30)]
3050 for i,elt in enumerate(tris): elt.translate([i,0])
3051 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3052 quad=MEDCouplingUMesh("quad",2)
3053 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3054 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3055 quads=[quad.deepCopy() for i in xrange(40)]
3056 for i,elt in enumerate(quads): elt.translate([40+i,0])
3057 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3058 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3059 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3060 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3062 ff0=MEDFileField1TS()
3063 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")
3064 f0.checkConsistencyLight()
3065 ff0.setFieldNoProfileSBT(f0)
3068 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
3069 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3071 ff0=MEDFileField1TS()
3072 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")
3073 f0.checkConsistencyLight()
3074 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
3075 ff0.setFieldProfile(f0,mm,0,pfl)
3076 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
3077 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3080 ff0=MEDFileField1TS(fname,False)
3081 self.assertEqual(ff0.getName(),"FieldCell")
3082 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
3083 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
3084 heap_memory_ref=ff0.getHeapMemorySize()
3085 self.assertIn(heap_memory_ref,xrange(182,465+2*strMulFac))
3087 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
3088 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3089 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
3091 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
3092 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
3093 heap_memory_ref=ff0.getHeapMemorySize()
3094 self.assertIn(heap_memory_ref,xrange(350,520+6*strMulFac))
3096 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
3097 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3098 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3100 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3101 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3102 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3103 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3105 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3106 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3107 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3108 ff0.loadArraysIfNecessary() ##
3109 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
3110 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3111 heap_memory_ref=ff0.getHeapMemorySize()
3112 self.assertIn(heap_memory_ref,xrange(1100,1384+2*strMulFac))
3114 hmd=ff0.getHeapMemorySize()-heap_memory_ref
3115 self.assertEqual(hmd,-800) # -50*8*2
3117 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
3119 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
3120 heap_memory_ref=ff0.getHeapMemorySize()
3121 self.assertIn(heap_memory_ref,xrange(299,520+6*strMulFac))
3123 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3124 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3126 fieldName="FieldCellMultiTS"
3127 ff0=MEDFileFieldMultiTS()
3128 for t in xrange(20):
3129 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)
3130 f0.setTime(float(t)+0.1,t,100+t)
3131 f0.checkConsistencyLight()
3132 ff0.appendFieldNoProfileSBT(f0)
3136 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
3137 heap_memory_ref=ff0.getHeapMemorySize()
3138 self.assertIn(heap_memory_ref,xrange(5536,8212+(80+26)*strMulFac))
3140 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
3143 ffs=MEDFileFields(fname,False)
3144 heap_memory_ref=ffs.getHeapMemorySize()
3145 self.assertIn(heap_memory_ref,xrange(5335,9031+(80+50)*strMulFac))
3147 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
3150 def testMEDFileMeshReadSelector1(self):
3151 mrs=MEDFileMeshReadSelector()
3152 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3153 mrs.__str__() ; mrs.__repr__()
3155 mrs=MEDFileMeshReadSelector(0)
3156 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())
3157 mrs=MEDFileMeshReadSelector(1)
3158 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3159 mrs=MEDFileMeshReadSelector(2)
3160 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3161 mrs=MEDFileMeshReadSelector(3)
3162 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3163 mrs=MEDFileMeshReadSelector(4)
3164 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3165 mrs=MEDFileMeshReadSelector(5)
3166 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3167 mrs=MEDFileMeshReadSelector(6)
3168 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3169 mrs=MEDFileMeshReadSelector(7)
3170 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3171 mrs=MEDFileMeshReadSelector(8)
3172 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3173 mrs=MEDFileMeshReadSelector(9)
3174 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3175 mrs=MEDFileMeshReadSelector(10)
3176 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3177 mrs=MEDFileMeshReadSelector(11)
3178 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3179 mrs=MEDFileMeshReadSelector(12)
3180 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3181 mrs=MEDFileMeshReadSelector(13)
3182 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3183 mrs=MEDFileMeshReadSelector(14)
3184 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3185 mrs=MEDFileMeshReadSelector(15)
3186 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3187 mrs=MEDFileMeshReadSelector(16)
3188 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3189 mrs=MEDFileMeshReadSelector(17)
3190 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3191 mrs=MEDFileMeshReadSelector(18)
3192 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3193 mrs=MEDFileMeshReadSelector(19)
3194 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3195 mrs=MEDFileMeshReadSelector(20)
3196 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3197 mrs=MEDFileMeshReadSelector(21)
3198 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3199 mrs=MEDFileMeshReadSelector(22)
3200 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3201 mrs=MEDFileMeshReadSelector(23)
3202 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3203 mrs=MEDFileMeshReadSelector(24)
3204 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3205 mrs=MEDFileMeshReadSelector(25)
3206 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3207 mrs=MEDFileMeshReadSelector(26)
3208 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3209 mrs=MEDFileMeshReadSelector(27)
3210 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3211 mrs=MEDFileMeshReadSelector(28)
3212 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3213 mrs=MEDFileMeshReadSelector(29)
3214 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3215 mrs=MEDFileMeshReadSelector(30)
3216 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3217 mrs=MEDFileMeshReadSelector(31)
3218 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3219 mrs=MEDFileMeshReadSelector(32)
3220 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3221 mrs=MEDFileMeshReadSelector(33)
3222 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3223 mrs=MEDFileMeshReadSelector(34)
3224 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3225 mrs=MEDFileMeshReadSelector(35)
3226 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3227 mrs=MEDFileMeshReadSelector(36)
3228 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3229 mrs=MEDFileMeshReadSelector(37)
3230 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3231 mrs=MEDFileMeshReadSelector(38)
3232 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3233 mrs=MEDFileMeshReadSelector(39)
3234 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3235 mrs=MEDFileMeshReadSelector(40)
3236 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3237 mrs=MEDFileMeshReadSelector(41)
3238 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3239 mrs=MEDFileMeshReadSelector(42)
3240 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3241 mrs=MEDFileMeshReadSelector(43)
3242 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3243 mrs=MEDFileMeshReadSelector(44)
3244 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3245 mrs=MEDFileMeshReadSelector(45)
3246 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3247 mrs=MEDFileMeshReadSelector(46)
3248 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3249 mrs=MEDFileMeshReadSelector(47)
3250 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3251 mrs=MEDFileMeshReadSelector(48)
3252 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3253 mrs=MEDFileMeshReadSelector(49)
3254 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3255 mrs=MEDFileMeshReadSelector(50)
3256 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3257 mrs=MEDFileMeshReadSelector(51)
3258 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3259 mrs=MEDFileMeshReadSelector(52)
3260 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3261 mrs=MEDFileMeshReadSelector(53)
3262 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3263 mrs=MEDFileMeshReadSelector(54)
3264 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3265 mrs=MEDFileMeshReadSelector(55)
3266 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3267 mrs=MEDFileMeshReadSelector(56)
3268 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3269 mrs=MEDFileMeshReadSelector(57)
3270 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3271 mrs=MEDFileMeshReadSelector(58)
3272 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3273 mrs=MEDFileMeshReadSelector(59)
3274 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3275 mrs=MEDFileMeshReadSelector(60)
3276 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3277 mrs=MEDFileMeshReadSelector(61)
3278 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3279 mrs=MEDFileMeshReadSelector(62)
3280 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3281 mrs=MEDFileMeshReadSelector(63)
3282 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3284 mrs=MEDFileMeshReadSelector(63)
3285 mrs.setCellFamilyFieldReading(False)
3286 self.assertEqual(mrs.getCode(),62)
3287 mrs.setCellFamilyFieldReading(True)
3288 self.assertEqual(mrs.getCode(),63)
3289 mrs.setNodeFamilyFieldReading(False)
3290 self.assertEqual(mrs.getCode(),61)
3291 mrs.setNodeFamilyFieldReading(True)
3292 self.assertEqual(mrs.getCode(),63)
3293 mrs.setCellNameFieldReading(False)
3294 self.assertEqual(mrs.getCode(),59)
3295 mrs.setCellNameFieldReading(True)
3296 self.assertEqual(mrs.getCode(),63)
3297 mrs.setNodeNameFieldReading(False)
3298 self.assertEqual(mrs.getCode(),55)
3299 mrs.setNodeNameFieldReading(True)
3300 self.assertEqual(mrs.getCode(),63)
3301 mrs.setCellNumFieldReading(False)
3302 self.assertEqual(mrs.getCode(),47)
3303 mrs.setCellNumFieldReading(True)
3304 self.assertEqual(mrs.getCode(),63)
3305 mrs.setNodeNumFieldReading(False)
3306 self.assertEqual(mrs.getCode(),31)
3307 mrs.setNodeNumFieldReading(True)
3308 self.assertEqual(mrs.getCode(),63)
3311 def testPartialReadOfMeshes(self):
3312 fname="Pyfile70.med"
3313 # building a mesh containing 4 tri3 + 5 quad4
3314 tri=MEDCouplingUMesh("tri",2)
3315 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3316 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3317 tris=[tri.deepCopy() for i in xrange(4)]
3318 for i,elt in enumerate(tris): elt.translate([i,0])
3319 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3320 quad=MEDCouplingUMesh("quad",2)
3321 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3322 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3323 quads=[quad.deepCopy() for i in xrange(5)]
3324 for i,elt in enumerate(quads): elt.translate([5+i,0])
3325 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3326 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3327 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3328 m1=m.buildDescendingConnectivity()[0]
3329 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3331 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3332 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3333 mm.setGroupsAtLevel(0,[grp0,grp1])
3334 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3335 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3336 mm.setGroupsAtLevel(-1,[grp2,grp3])
3337 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3338 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3339 mm.setGroupsAtLevel(1,[grp4,grp5])
3340 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3341 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3342 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3346 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3347 b4_ref_heap_mem=mm.getHeapMemorySize()
3348 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3349 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3350 ref_heap_mem=mm.getHeapMemorySize()
3351 # check the gain of memory using 1GTUMesh instead of UMesh
3352 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
3354 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3355 self.assertEqual(len(mm.getGroupsNames()),0)
3356 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3357 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3358 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3359 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3360 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3361 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3362 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3363 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3364 delta1=ref_heap_mem-mm.getHeapMemorySize()
3365 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3367 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3368 self.assertEqual(len(mm.getGroupsNames()),6)
3369 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3370 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3371 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3372 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3373 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3374 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3375 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3376 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3377 delta2=ref_heap_mem-mm.getHeapMemorySize()
3378 self.assertTrue(delta2<delta1)
3379 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3381 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3382 self.assertEqual(len(mm.getGroupsNames()),6)
3383 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3384 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3385 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3386 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3387 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3388 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3389 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3390 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3391 delta3=ref_heap_mem-mm.getHeapMemorySize()
3392 self.assertTrue(delta3<delta2)
3393 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3395 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3396 self.assertEqual(len(mm.getGroupsNames()),6)
3397 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3398 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3399 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3400 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3401 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3402 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3403 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3404 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3405 delta4=ref_heap_mem-mm.getHeapMemorySize()
3406 self.assertTrue(delta4<delta3)
3407 self.assertTrue(delta4>=32*4*2)
3409 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3410 self.assertEqual(len(mm.getGroupsNames()),6)
3411 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3412 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3413 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3414 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3415 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3416 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3417 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3418 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3419 delta5=ref_heap_mem-mm.getHeapMemorySize()
3420 self.assertTrue(delta5<delta4)
3421 self.assertEqual(delta5,0)
3424 # this test checks that setFieldProfile perform a check of the array length
3425 # compared to the profile length. This test also checks that mesh attribute of field
3426 # is not used by setFieldProfile (because across this test mesh is equal to None)
3427 def testCheckCompatibilityPfl1(self):
3428 # building a mesh containing 4 tri3 + 5 quad4
3429 tri=MEDCouplingUMesh("tri",2)
3430 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3431 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3432 tris=[tri.deepCopy() for i in xrange(4)]
3433 for i,elt in enumerate(tris): elt.translate([i,0])
3434 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3435 quad=MEDCouplingUMesh("quad",2)
3436 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3437 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3438 quads=[quad.deepCopy() for i in xrange(5)]
3439 for i,elt in enumerate(quads): elt.translate([5+i,0])
3440 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3441 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3442 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3443 m1=m.buildDescendingConnectivity()[0]
3444 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3446 f1ts=MEDFileField1TS()
3447 f=MEDCouplingFieldDouble(ON_NODES)
3448 vals=DataArrayDouble(7) ; vals.iota(1000)
3450 f.setName("anonymous") # f has no mesh it is not a bug
3451 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3452 f1ts.setFieldProfile(f,mm,0,pfl)
3454 f1ts=MEDFileField1TS()
3455 f=MEDCouplingFieldDouble(ON_NODES)
3456 vals=DataArrayDouble(8) ; vals.iota(1000)
3458 f.setName("anonymous") # f has no mesh it is not a bug
3459 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3460 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3462 f1ts=MEDFileField1TS()
3463 f=MEDCouplingFieldDouble(ON_CELLS)
3464 vals=DataArrayDouble(7) ; vals.iota(1000)
3466 f.setName("anonymous") # f has no mesh it is not a bug
3467 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3468 f1ts.setFieldProfile(f,mm,0,pfl)
3469 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3471 f1ts=MEDFileField1TS()
3472 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3473 vals=DataArrayDouble(27) ; vals.iota(1000)
3475 f.setName("anonymous") # f has no mesh it is not a bug
3476 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3478 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])
3479 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3480 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])
3482 f1ts.setFieldProfile(f,mm,0,pfl)
3483 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3484 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3485 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3486 vals=DataArrayDouble(27) ; vals.iota(1000)
3487 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3489 f1ts=MEDFileField1TS()
3490 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3491 vals=DataArrayDouble(25) ; vals.iota(1000)
3493 f.setName("anonymous") # f has no mesh it is not a bug
3494 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3495 f1ts.setFieldProfile(f,mm,0,pfl)
3496 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3497 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3499 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3500 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3502 f1ts=MEDFileField1TS()
3503 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3504 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3506 f1ts.setFieldProfile(f,mm,0,pfl)
3509 def testWRMeshWithNoCells(self):
3510 fname="Pyfile71.med"
3511 a=DataArrayDouble(4) ; a.iota()
3512 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3513 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3515 m.setMeshAtLevel(0,m00)
3516 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3517 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3521 m=MEDFileMesh.New(fname)
3522 self.assertEqual((),m.getNonEmptyLevels())
3523 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))
3524 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3525 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3528 def testWRQPolyg1(self):
3529 fname="Pyfile72.med"
3530 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3531 m.insertNextCell([0,2,1,3])
3532 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3534 ms=[m.deepCopy() for i in xrange(4)]
3535 for i,elt in enumerate(ms):
3536 elt.translate([float(i)*1.5,0.])
3538 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3539 m0.convertAllToPoly()
3541 ms=[m.deepCopy() for i in xrange(5)]
3542 for i,elt in enumerate(ms):
3543 elt.translate([float(i)*1.5,1.5])
3545 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3546 m1.convertAllToPoly()
3547 m1.convertLinearCellsToQuadratic()
3549 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3552 mm.setMeshAtLevel(0,m)
3553 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3554 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3555 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3556 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3561 mm_read=MEDFileUMesh(fname)
3562 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3563 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3564 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3565 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3567 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3569 arr0=DataArrayDouble(9) ; arr0.iota()
3570 arr1=DataArrayDouble(9) ; arr1.iota(100)
3571 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3572 f.setArray(arr) ; f.checkConsistencyLight()
3574 ff=MEDFileField1TS()
3575 ff.setFieldNoProfileSBT(f)
3578 ff_read=MEDFileField1TS(fname)
3579 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3580 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3583 def testLoadIfNecessaryOnFromScratchFields0(self):
3585 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3587 fname="Pyfile77.med"
3588 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3589 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3591 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3592 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3593 m.finishInsertingCells()
3595 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3596 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3600 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3601 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3603 f0.setName("myELNOField")
3604 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3605 f0.setArray(arrs[0])
3606 ff0.appendFieldNoProfileSBT(f0)
3609 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3610 f0.setArray(arrs[1])
3611 ff0.appendFieldNoProfileSBT(f0)
3614 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3615 f0.setArray(arrs[2])
3616 ff0.appendFieldNoProfileSBT(f0)
3619 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3620 f0.setArray(arrs[3])
3621 ff0.appendFieldNoProfileSBT(f0)
3623 for i,arr in enumerate(arrs):
3624 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3625 fs[0][i].loadArraysIfNecessary()
3626 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3628 fs.loadArraysIfNecessary()
3629 for i,arr in enumerate(arrs):
3630 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3632 fs[0].loadArraysIfNecessary()
3633 for i,arr in enumerate(arrs):
3634 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3638 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3639 """ 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.
3641 fname="Pyfile78.med"
3642 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)
3643 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3644 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3646 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
3647 m0.insertNextCell(NORM_TETRA4,elt)
3649 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
3650 m0.insertNextCell(NORM_PYRA5,elt)
3652 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
3653 m0.insertNextCell(NORM_PENTA6,elt)
3655 m0.checkConsistency()
3656 m1=MEDCouplingUMesh(); m1.setName("mesh")
3657 m1.setMeshDimension(2);
3658 m1.allocateCells(5);
3659 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3660 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3661 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3662 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3663 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3664 m1.setCoords(coords);
3665 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3667 m3.insertNextCell(NORM_POINT1,[2])
3668 m3.insertNextCell(NORM_POINT1,[3])
3669 m3.insertNextCell(NORM_POINT1,[4])
3670 m3.insertNextCell(NORM_POINT1,[5])
3673 mm.setMeshAtLevel(0,m0)
3674 mm.setMeshAtLevel(-1,m1)
3675 mm.setMeshAtLevel(-3,m3)
3677 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3678 mm=MEDFileMesh.New(fname)
3680 fmts=MEDFileFieldMultiTS()
3681 f1ts=MEDFileField1TS()
3682 for lev in mm.getNonEmptyLevels():
3683 for gt in mm.getGeoTypesAtLevel(lev):
3684 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3685 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3686 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3687 f.setArray(arr) ; f.setName("f0")
3688 f1ts.setFieldNoProfileSBT(f)
3691 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3692 for lev in [0,-1,-3]:
3693 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3695 fmts.pushBackTimeStep(f1ts)
3699 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3700 fs=MEDFileFields(fname)
3701 self.assertEqual(len(fs),1)
3702 self.assertEqual(len(fs[0]),1)
3704 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),'','')])])
3705 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))
3708 def testMEDFileUMeshSetName(self):
3709 """ 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.
3710 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3712 fname="Pyfile79.med"
3713 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3715 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3716 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)
3717 m0.allocateCells(5);
3718 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3719 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3720 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3721 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3722 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3723 m0.setCoords(coords);
3724 mm.setMeshAtLevel(0,m0)
3725 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3727 m2.insertNextCell(NORM_POINT1,[2])
3728 m2.insertNextCell(NORM_POINT1,[3])
3729 m2.insertNextCell(NORM_POINT1,[4])
3730 m2.insertNextCell(NORM_POINT1,[5])
3731 mm.setMeshAtLevel(-2,m2)
3732 self.assertEqual(mm.getName(),"")
3733 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3734 mm.forceComputationOfParts()
3735 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3737 self.assertEqual(mm.getName(),"abc")
3738 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3739 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3740 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3741 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
3744 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
3745 fileName="Pyfile80.med"
3746 m=MEDCouplingCMesh() ; m.setName("cmesh")
3747 arr=DataArrayDouble(6) ; arr.iota()
3748 m.setCoords(arr,arr)
3749 nbCells=m.getNumberOfCells()
3750 self.assertEqual(25,nbCells)
3751 f=MEDCouplingFieldDouble(ON_CELLS)
3752 f.setName("FieldOnCell") ; f.setMesh(m)
3753 arr=DataArrayDouble(nbCells) ; arr.iota()
3757 fmts=MEDFileFieldMultiTS()
3759 for i in xrange(nbCells):
3760 t=(float(i)+0.1,i+1,-i-2)
3762 arr2=DataArrayDouble(nbCells)
3763 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
3766 f1ts=MEDFileField1TS()
3767 f1ts.setFieldNoProfileSBT(f)
3768 fmts.pushBackTimeStep(f1ts)
3770 fmts.unloadArraysWithoutDataLoss()
3771 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))
3772 fs=MEDFileFields() ; fs.pushField(fmts)
3773 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))
3774 fs.unloadArraysWithoutDataLoss()
3775 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))
3777 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))
3778 f1ts.unloadArraysWithoutDataLoss()
3779 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))
3780 mm.write(fileName,2)
3781 fs.write(fileName,0)
3782 del m,fmts,mm,f,f1ts
3784 mm=MEDFileMesh.New(fileName)
3785 fmts=MEDFileFieldMultiTS(fileName)
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))
3787 fmts.unloadArraysWithoutDataLoss()
3788 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
3789 fmts.loadArraysIfNecessary()
3790 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))
3792 fs=MEDFileFields(fileName)
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))
3794 fs.unloadArraysWithoutDataLoss()
3795 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
3796 fs.loadArraysIfNecessary()
3797 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))
3799 f1ts=MEDFileField1TS(fileName)
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))
3801 f1ts.unloadArraysWithoutDataLoss()
3802 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
3803 f1ts.loadArraysIfNecessary()
3804 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))
3807 def testMEDFileUMeshLoadPart1(self):
3808 """ 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
3809 memory of the returned instance.
3811 fileName="Pyfile81.med"
3812 arr=DataArrayDouble(6) ; arr.iota()
3813 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3814 m=m.buildUnstructured()
3816 m.changeSpaceDimension(3,0.)
3817 infos=["aa [b]","cc [de]","gg [klm]"]
3818 m.getCoords().setInfoOnComponents(infos)
3819 m.checkConsistency()
3821 mm.setMeshAtLevel(0,m)
3822 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
3823 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
3824 mm.setMeshAtLevel(-1,m1)
3825 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])
3826 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])
3827 namesCellL0=DataArrayAsciiChar(25,16)
3828 namesCellL0[:]=["Cell#%.3d "%(i) for i in xrange(25)]
3829 renumM1=DataArrayInt([3,4,0,2,1])
3830 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
3831 mm.setRenumFieldArr(0,renum0)
3832 mm.setFamilyFieldArr(0,famField0)
3833 mm.setNameFieldAtLevel(0,namesCellL0)
3834 mm.setRenumFieldArr(-1,renumM1)
3835 mm.setFamilyFieldArr(-1,famFieldM1)
3836 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])
3837 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])
3838 namesNodes=DataArrayAsciiChar(36,16)
3839 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(36)]
3840 mm.setRenumFieldArr(1,renum1)
3841 mm.setFamilyFieldArr(1,famField1)
3842 mm.setNameFieldAtLevel(1,namesNodes)
3843 mm.setFamilyId("Fam7",77)
3844 mm.setFamilyId("Fam8",88)
3845 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
3846 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
3847 mm.write(fileName,2)
3849 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
3850 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
3851 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])))
3852 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)
3853 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
3854 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
3855 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
3856 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
3857 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3858 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3859 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3861 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
3862 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
3863 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])))
3864 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)
3865 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
3866 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
3867 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
3868 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
3869 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
3870 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
3871 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
3873 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
3874 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
3875 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
3876 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
3877 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
3878 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
3879 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
3880 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
3881 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])))
3882 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
3883 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)
3884 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
3885 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3886 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3887 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3890 def testMEDFileFieldsLoadPart1(self):
3891 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
3893 fileName="Pyfile82.med"
3895 compos=["aa [kg]","bbb [m/s]"]
3896 arr=DataArrayDouble(6) ; arr.iota()
3897 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3898 m=m.buildUnstructured()
3900 m.changeSpaceDimension(3,0.)
3901 infos=["aa [b]","cc [de]","gg [klm]"]
3902 m.getCoords().setInfoOnComponents(infos)
3903 m.checkConsistency()
3904 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3906 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3908 arr[:,1]=range(100,125)
3910 WriteField(fileName,f,2)
3911 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3912 f.setName("FieldNode")
3913 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3914 arr[:,0]=range(200,236)
3915 arr[:,1]=range(300,336)
3917 f.checkConsistencyLight()
3918 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3921 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
3923 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3924 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
3927 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
3929 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3931 fs[0][0].loadArrays()
3932 arr=DataArrayDouble(12,2) ; arr[:,0]=range(3,15) ; arr[:,1]=range(103,115)
3933 arr.setInfoOnComponents(compos)
3934 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3935 fs[1][0].loadArrays()
3936 arr=DataArrayDouble(21,2) ; arr[:,0]=range(203,224) ; arr[:,1]=range(303,324)
3937 arr.setInfoOnComponents(compos)
3938 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3941 def testMEDFileWithoutCells1(self):
3942 fileName="Pyfile83.med"
3943 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
3944 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
3948 mm.write(fileName,2)
3950 mm=MEDFileMesh.New(fileName)
3951 self.assertEqual(mm.getName(),"mesh")
3952 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
3955 def testZipCoordsWithLoadPart1(self):
3956 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
3958 fileName="Pyfile84.med"
3960 compos=["aa [kg]","bbb [m/s]"]
3961 arr=DataArrayDouble(6) ; arr.iota()
3962 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3963 m=m.buildUnstructured()
3965 m.changeSpaceDimension(3,0.)
3966 infos=["aa [b]","cc [de]","gg [klm]"]
3967 m.getCoords().setInfoOnComponents(infos)
3968 m.checkConsistency()
3969 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3971 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3973 arr[:,1]=range(100,125)
3975 WriteField(fileName,f,2)
3976 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3977 f.setName("FieldNode")
3978 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3979 arr[:,0]=range(200,236)
3980 arr[:,1]=range(300,336)
3982 f.checkConsistencyLight()
3983 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3986 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
3988 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3989 self.assertEqual(spd.getSlice(),slice(4,6,1))
3990 spd=mm.getPartDefAtLevel(1)
3991 self.assertEqual(spd.getSlice(),slice(4,14,1))
3992 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3993 mm.zipCoords() # <- The important line is here !
3994 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3995 self.assertEqual(spd.getSlice(),slice(4,6,1))
3996 spd=mm.getPartDefAtLevel(1)
3997 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3998 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3999 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4000 fs[0][0].loadArrays()
4001 arr=DataArrayDouble([(4,104),(5,105)])
4002 arr.setInfoOnComponents(compos)
4003 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4004 fs[1][0].loadArrays()
4005 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
4006 arr.setInfoOnComponents(compos)
4007 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4010 def testMEDFileCMeshSetGroupsAtLevel(self):
4011 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
4013 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
4015 mm=MEDFileCMesh() ; mm.setMesh(m)
4016 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
4017 mm.setGroupsAtLevel(0,[grp])
4018 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
4021 def testMEDFileUMeshBuildExtrudedMesh1(self):
4022 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
4023 fileName="Pyfile85.med"
4026 meshName3DOut="Mesh3D"
4028 d1=DataArrayInt([0,4,20,24])
4029 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
4031 a=DataArrayDouble(6) ; a.iota()
4032 m=MEDCouplingCMesh() ; m.setCoords(a,a)
4033 m=m.buildUnstructured()
4034 d1c=d1.buildComplement(m.getNumberOfCells())
4035 m=m[d1c] ; m.zipCoords()
4036 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
4038 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
4039 m.setName(meshName2D)
4040 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
4041 e=d.deltaShiftIndex().findIdsEqual(1)
4044 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
4045 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
4046 mm.setGroupsAtLevel(0,[grp0])
4047 grp1=e ; grp1.setName("grp1")
4048 mm.setGroupsAtLevel(-1,[grp1])
4049 mm.write(fileName,2)
4051 a=DataArrayDouble(3) ; a.iota()
4052 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
4053 tmp.setName(meshName1D)
4054 tmp.changeSpaceDimension(3)
4055 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
4057 mm1D.setMeshAtLevel(0,tmp)
4058 mm1D.write(fileName,0)
4060 mm2D=MEDFileMesh.New(fileName,meshName2D)
4061 mm1D=MEDFileMesh.New(fileName,meshName1D)
4062 m1D=mm1D.getMeshAtLevel(0)
4063 mm3D=mm2D.buildExtrudedMesh(m1D,0)
4065 self.assertEqual(mm3D.getName(),mm2D.getName())
4066 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
4067 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
4068 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
4069 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
4070 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
4071 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
4072 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
4073 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
4074 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
4075 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.)])
4076 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
4077 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])
4078 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
4079 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])
4080 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
4081 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])
4082 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
4083 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])
4084 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
4085 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])
4086 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
4087 d=DataArrayInt(129) ; d.iota() ; d*=3
4088 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
4090 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
4091 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
4092 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
4093 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
4094 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])))
4095 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])))
4096 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])))
4097 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])))
4098 mm3D.setName("MeshExtruded")
4099 mm3D.write(fileName,0)
4102 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4103 def testMEDFileUMeshPickeling1(self):
4105 outFileName="Pyfile86.med"
4106 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)
4107 c.setInfoOnComponents(["aa","bbb"])
4108 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
4109 m=MEDCouplingUMesh();
4110 m.setMeshDimension(2);
4112 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
4113 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
4114 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
4115 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
4116 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
4117 m.finishInsertingCells();
4119 m.checkConsistencyLight()
4120 m1=MEDCouplingUMesh.New();
4121 m1.setMeshDimension(1);
4122 m1.allocateCells(3);
4123 m1.insertNextCell(NORM_SEG2,2,[1,4])
4124 m1.insertNextCell(NORM_SEG2,2,[3,6])
4125 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
4126 m1.finishInsertingCells();
4128 m1.checkConsistencyLight()
4129 m2=MEDCouplingUMesh.New();
4130 m2.setMeshDimension(0);
4131 m2.allocateCells(4);
4132 m2.insertNextCell(NORM_POINT1,1,[1])
4133 m2.insertNextCell(NORM_POINT1,1,[3])
4134 m2.insertNextCell(NORM_POINT1,1,[2])
4135 m2.insertNextCell(NORM_POINT1,1,[6])
4136 m2.finishInsertingCells();
4138 m2.checkConsistencyLight()
4140 mm=MEDFileUMesh.New()
4141 self.assertTrue(mm.getUnivNameWrStatus())
4142 mm.setName("MyFirstMEDCouplingMEDmesh")
4143 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
4147 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
4149 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
4150 # playing with groups
4151 g1_2=DataArrayInt.New()
4152 g1_2.setValues([1,3],2,1)
4154 g2_2=DataArrayInt.New()
4155 g2_2.setValues([1,2,3],3,1)
4157 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4158 g1_1=DataArrayInt.New()
4159 g1_1.setValues([0,1,2],3,1)
4161 g2_1=DataArrayInt.New()
4162 g2_1.setValues([0,2],2,1)
4164 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4165 g1_N=DataArrayInt.New()
4166 g1_N.setValues(range(8),8,1)
4168 g2_N=DataArrayInt.New()
4169 g2_N.setValues(range(9),9,1)
4171 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4172 mm.createGroupOnAll(0,"GrpOnAllCell")
4173 # check content of mm
4174 t=mm.getGroupArr(0,"G1",False)
4175 self.assertTrue(g1_2.isEqual(t));
4176 t=mm.getGroupArr(0,"G2",False)
4177 self.assertTrue(g2_2.isEqual(t));
4178 t=mm.getGroupArr(-1,"G1",False)
4179 self.assertTrue(g1_1.isEqual(t));
4180 t=mm.getGroupArr(-1,"G2",False)
4181 self.assertTrue(g2_1.isEqual(t));
4182 t=mm.getGroupArr(1,"G1",False)
4183 self.assertTrue(g1_N.isEqual(t));
4184 t=mm.getGroupArr(1,"G2",False)
4185 self.assertTrue(g2_N.isEqual(t));
4186 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4187 t=mm.getGroupArr(0,"GrpOnAllCell")
4189 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
4190 mm2=cPickle.loads(st)
4191 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4192 self.assertEqual(mm.getAxisType(),AX_CART)
4194 mm.setAxisType(AX_CYL)
4195 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
4196 mm2=cPickle.loads(st)
4197 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4198 self.assertEqual(mm2.getAxisType(),AX_CYL)
4201 def testMEDFileFieldsLoadSpecificEntities1(self):
4204 fileName="Pyfile87.med"
4208 m=MEDCouplingCMesh()
4209 arr=DataArrayDouble(nbNodes) ; arr.iota()
4211 m=m.buildUnstructured()
4214 fmts=MEDFileFieldMultiTS()
4215 for i in xrange(nbPdt):
4216 f=MEDCouplingFieldDouble(ON_NODES)
4218 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4220 f.setName(fieldName)
4221 f.setTime(float(i),i,0)
4222 fmts.appendFieldNoProfileSBT(f)
4225 mm=MEDFileUMesh() ; mm[0]=m
4226 fmts.write(fileName,2)
4227 mm.write(fileName,0)
4229 fs=MEDFileFields(fileName,False)
4230 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_NODES,NORM_ERROR)],False)
4231 fs.loadArraysIfNecessary()
4232 fs2.loadArraysIfNecessary()
4233 for i in xrange(nbPdt):
4234 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4236 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1])) ; m1=m1.buildUnstructured() ; m1.simplexize(0)
4237 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([3,4,5]),DataArrayDouble([0,1])) ; m2=m2.buildUnstructured()
4238 m3=MEDCouplingUMesh.MergeUMeshes(m1,m2) ; m3.setName(meshName)
4239 fmts=MEDFileFieldMultiTS()
4240 for i in xrange(nbPdt):
4241 f=MEDCouplingFieldDouble(ON_CELLS)
4243 arr=DataArrayDouble(8) ; arr.iota() ; arr*=i
4245 f.setName(fieldName)
4246 f.setTime(float(i),i,0)
4247 fmts.appendFieldNoProfileSBT(f)
4249 mm=MEDFileUMesh() ; mm[0]=m3
4251 self.assertEqual(mm.getNonEmptyLevels(),())
4253 self.assertEqual(mm.getNonEmptyLevels(),(0,))
4254 fmts.write(fileName,2)
4255 fs=MEDFileFields(fileName,False)
4256 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3)],False)
4257 fs3=MEDFileFieldMultiTS.LoadSpecificEntities(fileName,fieldName,[(ON_CELLS,NORM_QUAD4)],False)
4258 fs4=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3),(ON_CELLS,NORM_QUAD4)],False)
4259 fs.loadArraysIfNecessary()
4260 fs2.loadArraysIfNecessary()
4261 fs3.loadArraysIfNecessary()
4262 fs4.loadArraysIfNecessary()
4263 for i in xrange(nbPdt):
4264 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[:6].isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4265 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[6:8].isEqual(fs3[i].getUndergroundDataArray(),1e-12))
4266 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs4[fieldName][i].getUndergroundDataArray(),1e-12))
4270 def testMEDFileLotsOfTSRW1(self):
4273 fileName="Pyfile88.med"
4274 nbPdt=300 # <- perftest = 30000
4277 maxPdt=100 # <- optimum = 500
4278 m=MEDCouplingCMesh()
4279 arr=DataArrayDouble(nbNodes) ; arr.iota()
4281 m=m.buildUnstructured()
4284 nbOfField=nbPdt/maxPdt
4286 for j in xrange(nbOfField):
4287 fmts=MEDFileFieldMultiTS()
4288 s=DataArray.GetSlice(slice(0,nbPdt,1),j,nbOfField)
4289 for i in xrange(s.start,s.stop,s.step):
4290 f=MEDCouplingFieldDouble(ON_NODES)
4292 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4294 f.setName("%s_%d"%(fieldName,j))
4295 f.setTime(float(i),i,0)
4296 fmts.appendFieldNoProfileSBT(f)
4301 mm=MEDFileUMesh() ; mm[0]=m
4302 fs.write(fileName,2)
4303 mm.write(fileName,0)
4305 def appendInDict(d,key,val):
4312 allFields=GetAllFieldNames(fileName)
4314 pat=re.compile("([\d]+)([\s\S]+)$")
4315 for st in allFields:
4319 appendInDict(allFieldsDict,m.group(2)[::-1],m.group(1)[::-1])
4322 appendInDict(allFieldsDict,st,'')
4326 for k in allFieldsDict:
4327 if allFieldsDict[k]!=['']:
4328 allFieldsDict[k]=sorted(allFieldsDict[k],key=lambda x: int(x))
4331 for it in allFieldsDict[k]:
4332 fmts2.append(MEDFileFieldMultiTS.LoadSpecificEntities(fileName,k+it,[(ON_NODES,NORM_ERROR)]))
4337 for ii in xrange(nbIter):
4338 zeResu.pushBackTimeSteps(fmts2.pop())
4341 fs2.pushField(zeResu)
4343 self.assertEqual(fs2[0].getTimeSteps(),[(i,0,float(i)) for i in xrange(nbPdt)])
4346 def testMEDFileMeshRearrangeFamIds1(self):
4347 """ Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies."""
4348 fileName="Pyfile89.med"
4349 meshName='Maillage_2'
4351 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)])
4353 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])
4354 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])
4355 m0=MEDCouplingUMesh(meshName,3) ; m0.setCoords(coords)
4356 m0.setConnectivity(c0,c0i)
4359 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])
4360 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])
4361 m1=MEDCouplingUMesh(meshName,2) ; m1.setCoords(coords)
4362 m1.setConnectivity(c1,c1i)
4365 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])
4366 m2=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
4367 m2.setNodalConnectivity(c2) ; m2.setCoords(coords)
4368 mm[-2]=m2.buildUnstructured()
4370 ref0=DataArrayInt(55) ; ref0[:]=0
4371 mm.setFamilyFieldArr(0,ref0)
4372 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]))
4373 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])
4374 mm.setFamilyFieldArr(-1,ref1)
4375 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])
4376 mm.setFamilyFieldArr(-2,ref2)
4378 for f,fid in (('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2)):
4379 mm.setFamilyId(f,fid)
4380 for grp,fams in [('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',))]:
4381 mm.setFamiliesOnGroup(grp,fams)
4382 mm.write(fileName,2)
4384 mm=MEDFileMesh.New(fileName)
4385 grp=mm.getGroup(-1,"Groupe_1")
4386 dai=grp.computeFetchedNodeIds()
4389 mm.rearrangeFamilies() # <- the aim of the test
4390 self.assertTrue(dai.isEqual(mm.getGroupArr(1,"TOTO")))
4391 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(ref0))
4392 self.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(ref1))
4393 self.assertTrue(mm.getFamilyFieldAtLevel(-2).isEqual(ref2))
4394 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])))
4395 allGrps=[('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',)),('TOTO',('Family_9',))]
4396 allFams=[('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2),('Family_9',9)]
4397 self.assertEqual(list(mm.getGroupsNames()),[elt[0] for elt in allGrps])
4398 for elt,fams in allGrps:
4399 self.assertEqual(mm.getFamiliesOnGroup(elt),fams)
4400 self.assertEqual(list(mm.getFamiliesNames()),[elt[0] for elt in allFams])
4401 for elt,eltId in allFams:
4402 self.assertEqual(mm.getFamilyId(elt),eltId)
4405 def testNonRegrCMeshSetFieldPfl1(self):
4406 """ Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile."""
4407 ff=MEDFileField1TS()
4410 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4414 field=MEDCouplingFieldDouble(ON_CELLS)
4416 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4417 field.setName("Field")
4418 field.checkConsistencyLight()
4419 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU") #<- false profile because defined on all cells !
4420 ff.setFieldProfile(field,mm,0,pfl) # <- bug was revealed here !
4421 self.assertEqual(ff.getPfls(),())
4422 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4423 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4424 del ff,mm,field,field2,pfl
4425 # same with unstructured mesh
4426 ff=MEDFileField1TS()
4429 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4432 m=m.buildUnstructured()
4434 field=MEDCouplingFieldDouble(ON_CELLS)
4436 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4437 field.setName("Field")
4438 field.checkConsistencyLight()
4439 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU")
4440 ff.setFieldProfile(field,mm,0,pfl)
4441 self.assertEqual(ff.getPfls(),())
4442 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4443 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4446 def testMEDFileUMeshLinearToQuadraticAndRev1(self):
4448 fileName="Pyfile90.med"
4449 fileName2="Pyfile91.med"
4450 arr=DataArrayDouble(5) ; arr.iota()
4451 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4452 m=m.buildUnstructured()
4453 d=DataArrayInt([3,7,11,15])
4456 m2=m[d.buildComplement(m.getNumberOfCells())]
4457 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
4458 m.changeSpaceDimension(3,0.)
4459 arr=DataArrayDouble(3) ; arr.iota()
4460 m1D=MEDCouplingCMesh() ; m1D.setCoords(arr) ; m1D=m1D.buildUnstructured() ; m1D.changeSpaceDimension(3,0.)
4461 m1D.setCoords(m1D.getCoords()[:,[1,2,0]])
4462 delta=m.getNumberOfNodes()*(m1D.getNumberOfNodes()-1)
4463 m3D=m.buildExtrudedMesh(m1D,0)
4464 m3D.sortCellsInMEDFileFrmt()
4465 m3D.setName(meshName)
4466 m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkConsistency()
4467 m1D=m2D.computeSkin() ; m1D.setName(meshName)
4468 m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
4471 mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D ; mm[-3]=m0D
4472 grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
4473 grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
4474 grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
4475 grpFaceNorth=DataArrayInt([6,7,17,18,19]) ; grpFaceNorth.setName("NorthFace")
4476 diagFace=DataArrayInt([0,1,13,15,17]) ; diagFace.setName("DiagFace")
4477 vol1=DataArrayInt([20,21,23,24]) ; vol1.setName("vol1")
4478 vol2=DataArrayInt([2,3,4,5,21,24]) ; vol2.setName("vol2")
4479 mm.setGroupsAtLevel(0,[vol1,vol2])
4480 mm.setGroupsAtLevel(-1,[grpFaceSouth,grpFaceNorth,diagFace])
4481 mm.setGroupsAtLevel(-2,[grpEdge0,grpEdge1])
4483 mmOut1=mm.linearToQuadratic(0,0.)
4484 mmOut1.write(fileName2,2)
4485 mmOut2=mmOut1.quadraticToLinear(0.)
4486 self.assertTrue(mm.isEqual(mmOut2,1e-12)[0])
4489 def testMEDFileMeshAddGroup1(self):
4490 m=MEDCouplingCMesh()
4491 arrX=DataArrayDouble(9) ; arrX.iota()
4492 arrY=DataArrayDouble(4) ; arrY.iota()
4493 m.setCoords(arrX,arrY)
4497 grp0=DataArrayInt([3,5,6,21,22]) ; grp0.setName("grp0")
4499 grp1=DataArrayInt([3,4,5,8,18,19,22]) ; grp1.setName("grp1")
4501 grp2=DataArrayInt([0,1,2,10,11]) ; grp2.setName("grp2")
4503 grp3=DataArrayInt([23]) ; grp3.setName("grp3")
4505 for grp in [grp0,grp1,grp2,grp3]:
4506 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4507 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2','grp3'))
4509 for grp in [grp0,grp1,grp2,grp3]:
4510 grpNode=grp.deepCopy() ; grpNode+=delta ; grpNode.setName("%s_node"%grp.getName())
4511 mm.addGroup(1,grpNode)
4512 self.assertEqual(mm.getGroupsNames(),('grp0','grp0_node','grp1','grp1_node','grp2','grp2_node','grp3','grp3_node'))
4513 for grp in [grp0,grp1,grp2,grp3]:
4514 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4515 for grp in [grp0,grp1,grp2,grp3]:
4516 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4517 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4518 mm.normalizeFamIdsMEDFile()
4519 for grp in [grp0,grp1,grp2,grp3]:
4520 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4521 for grp in [grp0,grp1,grp2,grp3]:
4522 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4523 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4527 def testMEDFileJoint1(self):
4528 fileName="Pyfile92.med"
4529 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4530 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4534 mm.setDescription("un maillage")
4535 mm.write(fileName,2)
4536 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4537 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4538 one_step_joint=MEDFileJointOneStep()
4539 one_step_joint.pushCorrespondence(cell_correspond)
4540 one_step_joint.pushCorrespondence(node_correspond)
4541 one_joint=MEDFileJoint()
4542 one_joint.pushStep(one_step_joint)
4543 one_joint.setLocalMeshName("maa1")
4544 one_joint.setRemoteMeshName("maa1")
4545 one_joint.setDescription("joint_description")
4546 one_joint.setJointName("joint_1")
4547 one_joint.setDomainNumber(1)
4548 self.assertEqual( one_joint.getLocalMeshName(), "maa1")
4549 self.assertEqual( one_joint.getRemoteMeshName(), "maa1")
4550 self.assertEqual( one_joint.getDescription(), "joint_description")
4551 self.assertEqual( one_joint.getJointName(), "joint_1")
4552 self.assertEqual( one_joint.getDomainNumber(), 1)
4553 joints=MEDFileJoints()
4554 joints.pushJoint(one_joint);
4555 joints.write(fileName,0)
4557 jointsR=MEDFileJoints(fileName,mm.getName())
4558 self.assertEqual( jointsR.getNumberOfJoints(), 1 )
4559 jR = jointsR.getJointAtPos(0)
4560 self.assertTrue( jR.isEqual( one_joint ))
4561 self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
4562 self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
4563 jointsR.destroyJointAtPos(0)
4566 def testMEDFileJoint2(self):
4567 fileNameWr="Pyfile93.med"
4568 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4569 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4573 mm.setDescription("un maillage")
4574 node_correspond=MEDFileJointCorrespondence(DataArrayInt([13,14,15,16]))
4575 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([17,18]),NORM_TETRA4,NORM_PENTA6)
4576 one_step_joint=MEDFileJointOneStep()
4577 two_step_joint=MEDFileJointOneStep()
4578 one_joint=MEDFileJoint()
4579 two_joint=MEDFileJoint()
4580 one_step_joint.pushCorrespondence(node_correspond)
4581 one_joint.pushStep(one_step_joint)
4582 two_step_joint.pushCorrespondence(cell_correspond)
4583 two_step_joint.pushCorrespondence(node_correspond)
4584 two_joint.pushStep(two_step_joint)
4585 one_joint.setLocalMeshName("maa1")
4586 one_joint.setRemoteMeshName("maa1")
4587 one_joint.setDescription("joint_description_1")
4588 one_joint.setJointName("joint_1")
4589 one_joint.setDomainNumber(1)
4590 two_joint.setLocalMeshName("maa1")
4591 two_joint.setRemoteMeshName("maa1")
4592 two_joint.setDescription("joint_description_2")
4593 two_joint.setJointName("joint_2")
4594 two_joint.setDomainNumber(2)
4595 joints=MEDFileJoints()
4596 joints.pushJoint(one_joint)
4597 joints.pushJoint(two_joint)
4598 mm.setJoints( joints )
4599 mm.write(fileNameWr,2)
4601 mm=MEDFileMesh.New(fileNameWr)
4602 self.assertEqual( mm.getNumberOfJoints(), 2)
4603 jointsR = mm.getJoints();
4604 self.assertEqual( jointsR.getMeshName(), mm.getName() )
4605 self.assertEqual( len( jointsR ), 2 )
4606 jointR1 = jointsR[0]
4607 jointR2 = jointsR[1]
4608 self.assertFalse( jointR1 is None )
4609 self.assertFalse( jointR2 is None )
4610 self.assertTrue( jointR1.isEqual( one_joint ))
4611 self.assertTrue( jointR2.isEqual( two_joint ))
4614 def testMEDFileJoint1(self):
4615 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4616 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4617 cell_correspon2=MEDFileJointCorrespondence(DataArrayInt([9,10,11]),NORM_TRI3,NORM_TRI3)
4618 cell_correspon3=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_QUAD4)
4619 joint1st_1=MEDFileJointOneStep()
4620 joint1st_1.pushCorrespondence(cell_correspond)
4621 joint1st_1.pushCorrespondence(node_correspond)
4622 joint1st_2=MEDFileJointOneStep()
4623 joint1st_2.pushCorrespondence(cell_correspond)
4624 joint1st_2.pushCorrespondence(node_correspond)
4625 joint1st_3=MEDFileJointOneStep()
4626 joint1st_3.pushCorrespondence(node_correspond)
4627 joint1st_3.pushCorrespondence(cell_correspond)
4628 joint1st_4=MEDFileJointOneStep()
4629 joint1st_4.pushCorrespondence(cell_correspond)
4630 joint1st_5=MEDFileJointOneStep()
4631 joint1st_5.pushCorrespondence(cell_correspon2)
4632 joint1st_6=MEDFileJointOneStep()
4633 joint1st_6.pushCorrespondence(cell_correspon3)
4634 self.assertTrue( joint1st_1.isEqual( joint1st_2 ))
4635 self.assertTrue( joint1st_1.isEqual( joint1st_3 ))
4636 self.assertFalse( joint1st_1.isEqual( joint1st_4 ))
4637 self.assertFalse( joint1st_4.isEqual( joint1st_5 ))
4638 self.assertFalse( joint1st_4.isEqual( joint1st_6 ))
4639 one_joint=MEDFileJoint()
4640 one_joint.pushStep(joint1st_1)
4641 one_joint.setLocalMeshName("maa1")
4642 one_joint.setRemoteMeshName("maa2")
4643 one_joint.setDescription("joint_description")
4644 one_joint.setJointName("joint_1")
4645 one_joint.setDomainNumber(1)
4646 self.assertEqual( "maa1", one_joint.getLocalMeshName())
4647 self.assertEqual( "maa2", one_joint.getRemoteMeshName())
4648 self.assertEqual( "joint_description", one_joint.getDescription())
4649 self.assertEqual( 1, one_joint.getDomainNumber())
4650 self.assertEqual( "joint_1", one_joint.getJointName())
4653 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
4654 def testMEDFileSafeCall0(self):
4655 """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
4656 fname="Pyfile94.med"
4657 errfname="Pyfile94.err"
4658 class StdOutRedirect(object):
4659 def __init__(self,fileName):
4662 self.stdoutOld=os.dup(2)
4663 self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
4664 fd2=os.dup2(self.fdOfSinkFile,2)
4665 self.origPyVal=sys.stderr
4666 class FlushFile(object):
4667 def __init__(self,f):
4673 return self.f.flush()
4675 return self.f.isatty()
4676 sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
4679 sys.stderr=self.origPyVal
4680 #os.fsync(self.fdOfSinkFile)
4682 os.dup2(self.stdoutOld,2)
4683 os.close(self.stdoutOld)
4685 # first clean file if needed
4686 if os.path.exists(fname):
4689 # second : build a file from scratch
4690 m=MEDCouplingCMesh()
4691 arr=DataArrayDouble(11) ; arr.iota()
4692 m.setCoords(arr,arr)
4697 # third : change permissions to remove write access on created file
4698 os.chmod(fname,0444)
4699 # four : try to append data on file -> check that it raises Exception
4700 f=MEDCouplingFieldDouble(ON_CELLS)
4703 f.setArray(DataArrayDouble(100))
4704 f.getArray()[:]=100.
4705 f.checkConsistencyLight()
4706 f1ts=MEDFileField1TS()
4707 f1ts.setFieldNoProfileSBT(f)
4709 tmp=StdOutRedirect(errfname)
4710 self.assertRaises(InterpKernelException,f1ts.write,fname,0) # it should raise !
4713 if os.path.exists(errfname):
4718 def testUnivStatus1(self):
4719 """ Non regression test to check the effectiveness of univ write status."""
4720 fname="Pyfile95.med"
4721 arr=DataArrayDouble(10) ; arr.iota()
4722 m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh")
4723 mm=MEDFileCMesh() ; mm.setMesh(m)
4724 mm.setUnivNameWrStatus(False) # test is here
4726 mm=MEDFileCMesh(fname)
4727 self.assertEqual(mm.getUnivName(),"")
4728 mm.setUnivNameWrStatus(True)
4730 mm=MEDFileCMesh(fname)
4731 self.assertTrue(mm.getUnivName()!="")
4734 def testEmptyMesh(self):
4735 """ MEDLoader should be able to consistently write and read an empty mesh (coords array
4737 fname = "Pyfile96.med"
4738 m = MEDCouplingUMesh('toto', 2)
4739 m.setCoords(DataArrayDouble([], 0, 2))
4740 m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
4741 mfu = MEDFileUMesh()
4742 mfu.setMeshAtLevel(0, m)
4744 mfu2 = MEDFileUMesh(fname)
4745 self.assertEqual('toto', mfu2.getName())
4746 lvl = mfu2.getNonEmptyLevels()
4747 self.assertEqual((), lvl)
4749 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4750 def testMEDFileUMeshPickeling2(self):
4751 """ Check that pickalization can be performed on a unpickalized instance. Non regression test."""
4757 arr=DataArrayDouble(nbOfNodesPerAxis) ; arr.iota() ; arr/=(nbOfNodesPerAxis-1) ; arr*=hauteur
4758 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured() ; m.setName(name)
4759 mesh=MEDFileUMesh() ; mesh[0]=m
4760 m1=m.computeSkin() ; mesh[-1]=m1
4762 bary1=m1.computeCellCenterOfMass()[:,2]
4763 grp1=bary1.findIdsInRange(hauteur-1e-12,hauteur+1e-12) ; grp1.setName(grpName1)
4764 grp2=bary1.findIdsInRange(0.-1e-12,0.+1e-12) ; grp2.setName(grpName2)
4765 mesh.setGroupsAtLevel(-1,[grp1,grp2])
4768 st=cPickle.dumps(mesh,2)
4769 mm=cPickle.loads(st)
4770 st2=cPickle.dumps(mm,2)
4771 mm2=cPickle.loads(st2)
4772 self.assertTrue(mesh.isEqual(mm2,1e-12)[0])
4775 def testMEDFileEquivalence1(self):
4776 """ First check of equivalence implementation in MEDFileMesh"""
4777 fileName="Pyfile97.med"
4780 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)])
4781 coo.setInfoOnComponents(["X [Sans_unite]","Y [Sans_unite]","Z [Sans_unite]"])
4782 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])
4783 m1=MEDCoupling1SGTUMesh(meshName,NORM_QUAD4) ; m1.setCoords(coo) ; m1.setNodalConnectivity(connQ4) ; mm[-1]=m1
4784 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])
4785 m0=MEDCoupling1SGTUMesh(meshName,NORM_HEXA8) ; m0.setCoords(coo) ; m0.setNodalConnectivity(connH8) ; mm[0]=m0
4786 mm.getFamilyFieldAtLevel(-1)[:]=-2
4787 mm.getFamilyFieldAtLevel(0)[:]=0
4788 mm.addFamily("HOMARD________-1",-1)
4789 mm.addFamily("HOMARD________-2",-2)
4790 mm.addFamily("HOMARD________-3",-3)
4791 mm.setFamiliesIdsOnGroup("HOMARD",[-1,-2,-3])
4793 eqName="MAILLES_A_RECOLLER_APRES_HOMARD"
4794 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."
4795 mm.initializeEquivalences()
4796 eqs=mm.getEquivalences()
4797 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4798 eq0.setDescription(descEq)
4799 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)])
4800 eq0.setArray(-1,corr)
4801 self.assertEqual(eq0.getCell().size(),1)
4802 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4803 eq0.getCell().clear()
4804 self.assertEqual(eq0.getCell().size(),0)
4805 eq0.getCell().setArrayForType(NORM_QUAD4,corr)
4806 self.assertEqual(eq0.getCell().size(),1)
4807 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4808 mm.killEquivalences()
4809 mm.initializeEquivalences()
4810 eqs=mm.getEquivalences()
4811 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4812 eq0.setDescription(descEq)
4814 c.setArrayForType(NORM_QUAD4,corr)
4815 self.assertEqual(eq0.getCell().size(),1)
4816 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4818 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4819 self.assertEqual(mm2.getEquivalences().size(),1)
4820 self.assertTrue(mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4).isEqual(corr))
4821 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=2
4822 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
4823 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=0
4824 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4825 mm.write(fileName,2)
4827 mm3=MEDFileMesh.New(fileName)
4828 self.assertTrue(mm.isEqual(mm3,1e-12)[0])
4831 def testMEDFileForFamiliesPlayer1(self):
4832 """Non regression bug EDF11911. For serial killers using same family name to store both cells and nodes ! Only sky is the limit."""
4833 fileName="Pyfile98.med"
4835 magicSt="%s%%04i"%(MEDFileMesh.GetMagicFamilyStr())
4836 arr=DataArrayDouble(4) ; arr.iota()
4837 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4838 m=m.buildUnstructured()
4841 mm.setName(meshName)
4842 mm.setFamilyId("FAMILLE_ZERO",0)
4843 mm.getFamilyFieldAtLevel(0)[-3:]=-4
4844 mm.setFamilyId("RIDF%s"%(magicSt%0),-4)
4845 mm.setGroupsOnFamily("RIDF%s"%(magicSt%0),["RID"])
4846 d=DataArrayInt(16) ; d[:]=0 ; d[[1,2,4,5]]=3
4847 mm.setFamilyFieldArr(1,d)
4848 mm.setFamilyId("RIDF%s"%(magicSt%1),3)
4849 mm.setGroupsOnFamily("RIDF%s"%(magicSt%1),["RID"])
4850 self.assertEqual(mm.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4851 self.assertEqual(mm.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF")) # <- the aim of test is here !
4852 self.assertEqual(mm.getFamiliesIdsOnGroup("RID"),(-4,3))
4853 mm.write(fileName,2)
4854 # now read such funny file !
4855 mm2=MEDFileMesh.New(fileName) # <- normaly mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
4856 self.assertTrue(mm.isEqual(mm2,1e-16))
4857 self.assertEqual(mm2.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4858 self.assertEqual(mm2.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF"))
4859 self.assertEqual(mm2.getFamiliesIdsOnGroup("RID"),(-4,3))# <- very important too !
4862 def testCartesianizer1(self):
4863 """ This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. """
4865 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4866 mm=MEDFileUMesh() ; mm[0]=m ; mm.forceComputationOfParts()
4867 d0=DataArrayInt(16) ; d0[:]=0
4868 d1=DataArrayInt(9) ; d1[:]=0
4869 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4870 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4871 ref0=mm.getCoords().getHiddenCppPointer()
4872 ref1=mm[0].getNodalConnectivity().getHiddenCppPointer()
4873 self.assertEqual(ref0,mm[0].getCoords().getHiddenCppPointer())
4874 ref2=mm[0].getNodalConnectivityIndex().getHiddenCppPointer()
4875 ref3=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer()
4876 self.assertEqual(ref0,mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4877 mm.setAxisType(AX_CYL) #<- important
4878 mm2=mm.cartesianize() # the trigger
4879 self.assertEqual(mm2.getAxisType(),AX_CART)
4880 mm.setAxisType(AX_CART) # this is here only to avoid complaints
4881 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4882 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4883 self.assertTrue(ref0==mm.getCoords().getHiddenCppPointer()) # <- here important
4884 self.assertTrue(ref0!=mm2.getCoords().getHiddenCppPointer()) # <- here important
4885 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2[0].getCoords().getHiddenCppPointer())
4886 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4887 self.assertEqual(mm2[0].getNodalConnectivity().getHiddenCppPointer(),ref1) # <- here very important
4888 self.assertEqual(mm2[0].getNodalConnectivityIndex().getHiddenCppPointer(),ref2) # <- here very important
4889 self.assertEqual(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer(),ref3) # <- here very important
4890 self.assertEqual(mm2.getName(),mm.getName())
4891 self.assertEqual(mm2.getDescription(),mm.getDescription())
4892 self.assertEqual(mm2.getTime(),mm.getTime())
4893 self.assertEqual(mm2.getTime(),mm.getTime())
4894 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4895 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4896 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4897 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4898 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4899 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4900 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4901 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4903 mm.setAxisType(AX_CART)
4904 mm2=mm.cartesianize() # the trigger
4905 self.assertEqual(mm2.getAxisType(),AX_CART)
4906 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4907 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4908 # CurveLinearMesh non cart
4909 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildCurveLinear()
4910 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4911 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4912 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4913 ref0=mm.getMesh().getCoords().getHiddenCppPointer()
4914 mm2=mm.cartesianize() # the trigger
4915 self.assertEqual(mm2.getAxisType(),AX_CART)
4916 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4917 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4918 self.assertTrue(ref0==mm.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4919 self.assertTrue(ref0!=mm2.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4920 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4921 self.assertEqual(mm2.getName(),mm.getName())
4922 self.assertEqual(mm2.getDescription(),mm.getDescription())
4923 self.assertEqual(mm2.getTime(),mm.getTime())
4924 self.assertEqual(mm2.getTime(),mm.getTime())
4925 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4926 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4927 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4928 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4929 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4930 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4931 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4932 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4933 # CurveLinearMesh cart
4934 mm.setAxisType(AX_CART)
4935 mm2=mm.cartesianize() # the trigger
4936 self.assertEqual(mm2.getAxisType(),AX_CART)
4937 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4938 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4940 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4941 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4942 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4943 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4944 mm2=mm.cartesianize() # the trigger
4945 self.assertEqual(mm2.getAxisType(),AX_CART)
4946 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4947 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4948 self.assertEqual(mm2.getName(),mm.getName())
4949 self.assertEqual(mm2.getDescription(),mm.getDescription())
4950 self.assertEqual(mm2.getTime(),mm.getTime())
4951 self.assertEqual(mm2.getTime(),mm.getTime())
4952 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4953 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4954 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4955 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4956 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4957 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4958 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4959 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4961 mm.setAxisType(AX_CART)
4962 mm2=mm.cartesianize() # the trigger
4963 self.assertEqual(mm2.getAxisType(),AX_CART)
4964 self.assertTrue(isinstance(mm2,MEDFileCMesh))
4965 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4968 def testCheckCoherency(self):
4969 m2 = MEDCouplingUMesh("2d", 2)
4970 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
4971 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
4972 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
4973 mum = MEDFileUMesh()
4974 mum.setMeshAtLevel(0, m2)
4975 mum.setMeshAtLevel(-1, m1)
4976 mum.checkConsistency()
4977 mum2 = mum.deepCopy()
4980 arr = DataArrayInt([2]*4)
4981 mum.setFamilyFieldArr(1, arr); arr.reAlloc(35);
4982 self.assertRaises(InterpKernelException, mum.checkConsistency)
4983 mum=mum2; mum2=mum.deepCopy();
4984 arr = DataArrayInt([2]*4)
4985 mum.setRenumFieldArr(1, arr); arr.reAlloc(35);
4986 self.assertRaises(InterpKernelException, mum.checkConsistency)
4987 mum=mum2; mum2=mum.deepCopy();
4988 mum.setRenumFieldArr(1, DataArrayInt([2]*4))
4989 self.assertRaises(InterpKernelException, mum.checkConsistency)
4990 mum=mum2; mum2=mum.deepCopy();
4991 arr = DataArrayAsciiChar(['tutu x']*4)
4992 mum.setNameFieldAtLevel(1, arr); arr.reAlloc(35);
4993 self.assertRaises(InterpKernelException, mum.checkConsistency)
4996 mum=mum2; mum2=mum.deepCopy();
4997 arr = DataArrayInt([2]*2)
4998 mum.setFamilyFieldArr(0, arr); arr.reAlloc(35);
4999 self.assertRaises(InterpKernelException, mum.checkConsistency)
5000 mum=mum2; mum2=mum.deepCopy();
5001 arr = DataArrayInt([2]*2)
5002 mum.setRenumFieldArr(0, arr); arr.reAlloc(35);
5003 self.assertRaises(InterpKernelException, mum.checkConsistency)
5004 mum=mum2; mum2=mum.deepCopy();
5005 mum.setRenumFieldArr(0, DataArrayInt([2]*2))
5006 self.assertRaises(InterpKernelException, mum.checkConsistency)
5007 mum=mum2; mum2=mum.deepCopy();
5008 arr = DataArrayAsciiChar(['tutu x']*2)
5009 mum.setNameFieldAtLevel(0, arr); arr.reAlloc(35);
5010 self.assertRaises(InterpKernelException, mum.checkConsistency)
5013 mum=mum2; mum2=mum.deepCopy();
5014 arr = DataArrayInt([2]*5)
5015 mum.setFamilyFieldArr(-1, arr); arr.reAlloc(35);
5016 self.assertRaises(InterpKernelException, mum.checkConsistency)
5017 mum=mum2; mum2=mum.deepCopy();
5018 arr = DataArrayInt([2]*5)
5019 mum.setRenumFieldArr(-1, arr); arr.reAlloc(35);
5020 self.assertRaises(InterpKernelException, mum.checkConsistency)
5021 mum=mum2; mum2=mum.deepCopy();
5022 mum.setRenumFieldArr(-1, DataArrayInt([2]*5))
5023 self.assertRaises(InterpKernelException, mum.checkConsistency)
5024 mum=mum2; mum2=mum.deepCopy();
5025 arr = DataArrayAsciiChar(['tutu x']*5)
5026 mum.setNameFieldAtLevel(-1, arr); arr.reAlloc(35);
5027 self.assertRaises(InterpKernelException, mum.checkConsistency)
5029 def testCheckSMESHConsistency(self):
5030 m2 = MEDCouplingUMesh("2d", 2)
5031 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5032 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5033 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5034 mum = MEDFileUMesh()
5035 mum.setMeshAtLevel(0, m2)
5036 mum.setMeshAtLevel(-1, m1)
5037 mum.checkConsistency()
5038 mum.checkSMESHConsistency()
5039 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5040 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5041 mum.setRenumFieldArr(0, n2)
5042 mum.setRenumFieldArr(-1, n1)
5043 self.assertRaises(InterpKernelException, mum.checkSMESHConsistency)
5044 mum.setRenumFieldArr(-1, n1+100)
5045 mum.checkSMESHConsistency()
5048 def testClearNodeAndCellNumbers(self):
5049 m2 = MEDCouplingUMesh("2d", 2)
5050 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5051 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5052 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5053 mum = MEDFileUMesh()
5054 mum.setMeshAtLevel(0, m2)
5055 mum.setMeshAtLevel(-1, m1)
5056 mum.checkConsistency()
5057 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5058 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5059 mum.setRenumFieldArr(0, n2)
5060 mum.setRenumFieldArr(-1, n1)
5061 mum.clearNodeAndCellNumbers()
5062 mum.checkSMESHConsistency()
5065 def testCMeshSetFamilyFieldArrNull(self):
5067 fname="Pyfile99.med"
5068 arrX=DataArrayDouble([0,1,2,3])
5069 arrY=DataArrayDouble([0,1,2])
5070 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m.setName(meshName)
5071 mm=MEDFileCMesh() ; mm.setMesh(m)
5072 famCellIds=DataArrayInt([0,-2,-2,-1,-2,0])
5073 famNodeIds=DataArrayInt([0,0,0,3,4,1,2,7,2,1,0,0])
5074 mm.setFamilyFieldArr(0,famCellIds)
5075 mm.setFamilyFieldArr(1,famNodeIds)
5077 mm=MEDFileMesh.New(fname)
5078 self.assertTrue(mm.getFamilyFieldAtLevel(0) is not None)
5079 self.assertTrue(mm.getFamilyFieldAtLevel(1) is not None)
5080 mm.setFamilyFieldArr(0,None)#<- bug was here
5081 mm.setFamilyFieldArr(1,None)#<- bug was here
5082 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
5083 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
5085 self.assertTrue(mm3.getFamilyFieldAtLevel(0) is None)
5086 self.assertTrue(mm3.getFamilyFieldAtLevel(1) is None)
5088 mm2=MEDFileMesh.New(fname)
5089 self.assertTrue(mm2.getFamilyFieldAtLevel(0) is None)
5090 self.assertTrue(mm2.getFamilyFieldAtLevel(1) is None)
5093 def testAppendFieldProfileOnIntField(self):
5094 fname="Pyfile100.med"
5095 arrX=DataArrayDouble([0,1,2,3])
5096 arrY=DataArrayDouble([0,1,2])
5097 mesh=MEDCouplingCMesh() ; mesh.setCoords(arrX,arrY) ; mesh.setName("Mesh")
5101 fmts=MEDFileIntFieldMultiTS()
5103 pfl=DataArrayInt([1,3,5]) ; pfl.setName(pflName)
5104 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(mesh)
5105 fieldName="FieldOnCell"
5106 f.setTime(1.2,1,1) ; f.setName(fieldName)
5107 arr=DataArrayInt([101,102,103])
5108 fmts.appendFieldProfile(f,arr,mm,0,pfl)
5113 mm=MEDFileMesh.New(fname)
5114 fmts=MEDFileAnyTypeFieldMultiTS.New(fname)
5115 self.assertTrue(isinstance(fmts,MEDFileIntFieldMultiTS))
5116 self.assertEqual(fmts.getName(),fieldName)
5117 self.assertEqual(len(fmts),1)
5119 ftest,pfltest=f1ts.getFieldWithProfile(ON_CELLS,0,mm)
5120 self.assertEqual(pfltest.getName(),pflName)
5121 self.assertEqual(ftest.getName(),fieldName)
5122 self.assertTrue(ftest.isEqualWithoutConsideringStr(arr))
5123 ftest2,vals=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
5124 self.assertTrue(vals.isEqualWithoutConsideringStr(arr))
5125 self.assertEqual(ftest2.getTime(),f.getTime())
5126 self.assertEqual(ftest2.getMesh().getNumberOfCells(),len(arr))
5131 if __name__ == "__main__":