1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2016 CEA/DEN, EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (EDF R&D)
22 from MEDLoader import *
25 from math import pi,e,sqrt
26 from MEDLoaderDataForTest import MEDLoaderDataForTest
27 from distutils.version import LooseVersion
30 if sys.version_info.major < 3:
31 import cPickle as pickle
35 class StdOutRedirect(object):
36 def __init__(self,fileName):
39 self.stdoutOld=os.dup(2)
40 self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
41 fd2=os.dup2(self.fdOfSinkFile,2)
42 self.origPyVal=sys.stderr
43 class FlushFile(object):
52 return self.f.isatty()
56 sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
60 sys.stderr=self.origPyVal
62 os.dup2(self.stdoutOld,2)
63 os.close(self.stdoutOld)
65 class MEDLoaderTest3(unittest.TestCase):
66 def testMEDMesh1(self):
67 fileName="Pyfile18.med"
68 mname="ExampleOfMultiDimW"
69 medmesh=MEDFileMesh.New(fileName,mname)
70 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
71 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
72 m1_0=medmesh.getLevel0Mesh(True)
73 m1_1=ReadUMeshFromFile(fileName,mname,0)
74 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
75 m2_0=medmesh.getLevelM1Mesh(True)
76 m2_1=ReadUMeshFromFile(fileName,mname,-1)
77 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
80 def testMEDMesh2(self):
81 fileName="Pyfile10.med"
83 outFileName="MEDFileMesh1.med"
84 medmesh=MEDFileUMesh.New(fileName,mname)
85 self.assertEqual((0,),medmesh.getNonEmptyLevels())
86 m1_0=medmesh.getLevel0Mesh(True)
87 m1_1=ReadUMeshFromFile(fileName,mname,0)
88 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
89 g1_0=medmesh.getGroup(0,"mesh2",True)
90 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
91 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
92 g1_0=medmesh.getGroup(0,"mesh3",True)
93 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
94 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
95 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
96 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
97 g1_1.setName(g1_0.getName())
98 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
99 g1_0=medmesh.getFamily(0,"Family_-3",True)
100 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
101 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
102 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
103 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
104 g1_1.setName(g1_0.getName())
105 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
106 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
107 medmesh.write(outFileName,2);
108 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
109 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
110 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
111 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
112 famn=medmesh.getFamilyNameGivenId(0)
113 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
115 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
116 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
117 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
118 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
119 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
122 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
123 def testMEDMesh3(self):
124 outFileName="MEDFileMesh3.med"
125 c=DataArrayDouble.New()
126 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 ];
127 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
128 c.setValues(coords,9,2)
129 m=MEDCouplingUMesh.New();
130 m.setMeshDimension(2);
132 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
133 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
134 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
135 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
136 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
137 m.finishInsertingCells();
139 m.checkConsistencyLight()
140 m1=MEDCouplingUMesh.New();
141 m1.setMeshDimension(1);
143 m1.insertNextCell(NORM_SEG2,2,[1,4])
144 m1.insertNextCell(NORM_SEG2,2,[3,6])
145 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
146 m1.finishInsertingCells();
148 m1.checkConsistencyLight()
149 m2=MEDCouplingUMesh.New();
150 m2.setMeshDimension(0);
152 m2.insertNextCell(NORM_POINT1,1,[1])
153 m2.insertNextCell(NORM_POINT1,1,[3])
154 m2.insertNextCell(NORM_POINT1,1,[2])
155 m2.insertNextCell(NORM_POINT1,1,[6])
156 m2.finishInsertingCells();
158 m2.checkConsistencyLight()
160 mm=MEDFileUMesh.New()
161 self.assertTrue(mm.getUnivNameWrStatus())
162 mm.setName("MyFirstMEDCouplingMEDmesh")
163 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
165 mm.setMeshAtLevel(-1,m1);
166 mm.setMeshAtLevel(0,m);
167 mm.setMeshAtLevel(-2,m2);
168 # playing with groups
169 g1_2=DataArrayInt.New()
170 g1_2.setValues([1,3],2,1)
172 g2_2=DataArrayInt.New()
173 g2_2.setValues([1,2,3],3,1)
175 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
176 g1_1=DataArrayInt.New()
177 g1_1.setValues([0,1,2],3,1)
179 g2_1=DataArrayInt.New()
180 g2_1.setValues([0,2],2,1)
182 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
183 g1_N=DataArrayInt.New()
184 g1_N.setValues(list(range(8)),8,1)
186 g2_N=DataArrayInt.New()
187 g2_N.setValues(list(range(9)),9,1)
189 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
190 mm.createGroupOnAll(0,"GrpOnAllCell")
191 # check content of mm
192 t=mm.getGroupArr(0,"G1",False)
193 self.assertTrue(g1_2.isEqual(t));
194 t=mm.getGroupArr(0,"G2",False)
195 self.assertTrue(g2_2.isEqual(t));
196 t=mm.getGroupArr(-1,"G1",False)
197 self.assertTrue(g1_1.isEqual(t));
198 t=mm.getGroupArr(-1,"G2",False)
199 self.assertTrue(g2_1.isEqual(t));
200 t=mm.getGroupArr(1,"G1",False)
201 self.assertTrue(g1_N.isEqual(t));
202 t=mm.getGroupArr(1,"G2",False)
203 self.assertTrue(g2_N.isEqual(t));
204 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
205 t=mm.getGroupArr(0,"GrpOnAllCell")
206 self.assertTrue(t.getValues()==list(range(5)))
209 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
210 mmCpy.write(outFileName,2);
212 mm=MEDFileMesh.New(outFileName)
214 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
215 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
216 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
217 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
218 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
219 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
220 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
221 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
222 self.assertEqual(3,len(lmm))
223 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
224 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
225 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
227 self.assertTrue(mm.getUnivNameWrStatus())
228 self.assertTrue(isinstance(mm.getUnivName(),str))
229 self.assertTrue(len(mm.getUnivName())!=0)
230 mbis=mm.getMeshAtLevel(0)
231 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
232 self.assertTrue(m.isEqual(mbis,1e-12));
234 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
237 # this test is the testMEDMesh3 except that permutation is dealed here
238 def testMEDMesh4(self):
239 outFileName="MEDFileMesh4.med"
240 c=DataArrayDouble.New()
241 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 ];
242 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
243 c.setValues(coords,9,2)
244 c.setInfoOnComponent(0,"abcdef [km]")
245 c.setInfoOnComponent(1,"ghij [MW]")
246 m=MEDCouplingUMesh.New();
247 m.setMeshDimension(2);
249 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
250 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
251 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
252 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
253 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
254 m.finishInsertingCells();
256 m.checkConsistencyLight()
257 m1=MEDCouplingUMesh.New();
258 m1.setMeshDimension(1);
260 m1.insertNextCell(NORM_SEG2,2,[1,4])
261 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
262 m1.insertNextCell(NORM_SEG2,2,[3,6])
263 m1.finishInsertingCells();
265 m1.checkConsistencyLight()
266 m2=MEDCouplingUMesh.New();
267 m2.setMeshDimension(0);
269 m2.insertNextCell(NORM_POINT1,1,[1])
270 m2.insertNextCell(NORM_POINT1,1,[3])
271 m2.insertNextCell(NORM_POINT1,1,[2])
272 m2.insertNextCell(NORM_POINT1,1,[6])
273 m2.finishInsertingCells();
275 m2.checkConsistencyLight()
277 mm=MEDFileUMesh.New()
278 mm.setName("My2ndMEDCouplingMEDmesh")
279 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
281 renumNode=DataArrayInt.New()
282 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
283 mm.setRenumFieldArr(1,renumNode)
284 mm.setMeshAtLevel(-1,m1,True);
285 mm.setMeshAtLevel(0,m,True);
286 mm.setMeshAtLevel(-2,m2,True);
287 mm.removeMeshAtLevel(-2)
288 mm.setMeshAtLevel(-2,m2,True);
289 # playing with groups
290 g1_2=DataArrayInt.New()
291 g1_2.setValues([2,3],2,1)
293 g2_2=DataArrayInt.New()
294 g2_2.setValues([2,0,3],3,1)
296 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
297 g1_1=DataArrayInt.New()
298 g1_1.setValues([0,2,1],3,1)
300 g2_1=DataArrayInt.New()
301 g2_1.setValues([0,2],2,1)
303 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
304 g1_N=DataArrayInt.New()
305 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
307 g2_N=DataArrayInt.New()
308 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
310 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
311 # check content of mm
312 t=mm.getGroupArr(0,"G1",True)
313 self.assertTrue(g1_2.isEqual(t));
314 t=mm.getGroupArr(0,"G2",True)
315 self.assertTrue(g2_2.isEqual(t));
316 t=mm.getGroupArr(-1,"G1",True)
317 self.assertTrue(g1_1.isEqual(t));
318 t=mm.getGroupArr(-1,"G2",True)
319 self.assertTrue(g2_1.isEqual(t));
320 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
322 mm.write(outFileName,2);
323 mm2=MEDFileMesh.New(outFileName)
324 res=mm.isEqual(mm2,1e-12)
325 self.assertTrue(res[0])
326 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
327 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
328 mm2.keepFamIdsOnlyOnLevs([3],[-1])
329 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
330 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
332 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
333 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
335 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
336 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
337 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
338 self.assertTrue(not mm2.existsFamily("Family_-8"))
339 mm2.createGroupOnAll(-1,"GrpOnAllFace")
340 self.assertTrue(mm2.existsFamily("Family_-8"))
341 self.assertEqual(list(range(3)),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
344 #testing persistence of retrieved arrays
345 def testMEDMesh5(self):
346 fileName="Pyfile18.med"
347 mname="ExampleOfMultiDimW"
348 medmesh=MEDFileUMesh.New(fileName,mname)
349 m1_0=medmesh.getLevel0Mesh(True)
350 da1=medmesh.getFamilyFieldAtLevel(0)
352 self.assertEqual(20,m1_0.getNumberOfCells())
353 self.assertEqual(20,da1.getNumberOfTuples())
356 def testMEDMesh6(self):
357 outFileName="MEDFileMesh5.med"
360 m1=MEDCouplingCMesh.New();
361 da=DataArrayDouble.New()
362 da.setValues([0.,1.,2.],3,1)
363 da.setInfoOnComponent(0,"XX [mm]")
365 da=DataArrayDouble.New()
366 da.setValues([0.,1.2],2,1)
367 da.setInfoOnComponent(0,"YY [km]")
369 da=DataArrayDouble.New()
370 da.setValues([0.,1.3],2,1)
371 da.setInfoOnComponent(0,"ZZ [um]")
374 self.assertTrue(m[0].isEqual(m1,1e-12))
375 self.assertTrue(isinstance(m[0],MEDCouplingCMesh))
376 m.setName("myFirstCartMesh")
377 m.setDescription("mmmmpppppppp")
380 da=DataArrayInt.New()
381 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
382 m.setFamilyFieldArr(1,da)
383 m.setFamilyId("family1",1)
384 da=m.getFamilyArr(1,"family1")
386 self.assertEqual(expected1,da.getValues())
387 self.assertTrue(m.getUnivNameWrStatus())
388 m.write(outFileName,2);
389 mm=MEDFileMesh.New(outFileName)
390 self.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
391 self.assertTrue(isinstance(mm,MEDFileCMesh))
392 self.assertTrue(isinstance(mm.getUnivName(),str))
393 self.assertTrue(len(mm.getUnivName())!=0)
394 self.assertTrue(m.isEqual(mm,1e-12)[0])
395 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
398 m1.setTime(tt[2],tt[0],tt[1])
399 m1.setName(m.getName())
400 m1.setTimeUnit(m.getTimeUnit())
401 m1.setDescription(m.getDescription())
402 self.assertTrue(m2.isEqual(m1,1e-12));
405 def testMEDMesh7(self):
406 fileName="Pyfile24.med"
407 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
409 m.setCoords(m2.getCoords())
410 m.setMeshAtLevel(0,m2)
411 m.setMeshAtLevel(-1,m1)
412 m.setMeshAtLevel(-2,m0)
413 m.setFamilyFieldArr(0,f2)
414 m.setFamilyFieldArr(-1,f1)
415 m.setFamilyFieldArr(-2,f0)
416 m.setFamilyFieldArr(1,p)
417 m.setRenumFieldArr(0,n2)
418 m.setRenumFieldArr(-1,n1)
419 m.setRenumFieldArr(-2,n0)
421 for i in range(nbOfFams):
422 m.addFamily(fns[i],fids[i])
425 for i in range(nbOfGrps):
426 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
428 m.setName(m2.getName())
429 m.setDescription(m2.getDescription())
431 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
432 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
433 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
434 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
435 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
436 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
437 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
438 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
439 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
442 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
445 def funcToTestDelItem(self,ff):
449 #emulation of pointe.med file.
450 def testMEDField1(self):
451 mm=MEDFileMesh.New("Pyfile17.med")
452 mm.write("Pyfile17_bis.med",2)
453 ff=MEDFileFieldMultiTS("Pyfile17.med")
454 tsExpected=[[1,2],[3,4],[5,6]]
455 self.assertEqual(3,len(ff))
456 for pos,f1ts in enumerate(ff):
457 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
458 self.assertEqual(type(f1ts),MEDFileField1TS)
460 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
461 self.assertEqual([3,4],ff[1].getTime()[:-1])
462 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
463 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
464 ff.write("Pyfile17_bis.med",0)
466 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
467 self.assertEqual([(1,2),(3,4),(5,6)],ts)
468 self.funcToTestDelItem(ff)
469 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
470 self.assertEqual([(1,2)],ts)
474 def testMEDField2(self):
475 mm=MEDFileMesh.New("Pyfile19.med")
476 mm.write("Pyfile19_bis.med",2)
477 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
478 ff.write("Pyfile19_bis.med",0)
479 self.assertEqual([('tyty','mm'),('uiop','MW')],GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
483 def testMEDField3(self):
484 mm=MEDFileMesh.New("Pyfile13.med")
485 mm.write("Pyfile13_bis.med",2)
486 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
487 ff.write("Pyfile13_bis.med",0)
488 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
489 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
490 f2=ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
491 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
492 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
493 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
494 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
495 ff4=MEDFileField1TS.New("Pyfile13.med")
496 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
497 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
501 def testMEDField4(self):
502 mm=MEDFileMesh.New("Pyfile14.med")
503 mm.write("Pyfile14_bis.med",2)
504 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
505 ff.write("Pyfile14_bis.med",0)
506 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
507 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
508 f2=ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
509 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
512 # MEDField get/set on pointe.med
513 def testMEDField5(self):
514 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
515 f=ff.getFieldAtLevel(ON_CELLS,0)
516 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
517 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
518 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
519 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
520 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
521 # no with renumbering
522 f=ff.getFieldAtLevel(ON_CELLS,0,1)
523 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
524 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
525 f=ff.getFieldAtLevel(ON_CELLS,0,3)
526 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
527 f=ff.getFieldAtLevel(ON_CELLS,0,2)
528 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
529 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
530 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
533 # MEDField get/set on profiles nodes
534 def testMEDField6(self):
535 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
536 its=ff.getIterations()
537 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
538 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
539 f2=ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
540 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
541 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
542 its=ff.getIterations()
543 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
544 f2=ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
545 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
546 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
547 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
550 # MEDField get/set on profiles cells
551 def testMEDField7(self):
552 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
553 its=ff.getIterations()
554 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
555 f2=ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
556 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
559 #first test of assignation. No profile and types sorted by type.
560 def testMEDField8(self):
562 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
564 mm1=MEDFileUMesh.New()
565 mm1.setCoords(m1.getCoords())
566 mm1.setMeshAtLevel(0,m1)
567 mm1.setName(m1.getName())
569 ff1=MEDFileField1TS.New()
570 ff1.setFieldNoProfileSBT(f1)
572 f2=ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
573 itt,orr,ti=ff1.getTime()
574 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
575 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
577 itt,orr,ti=ff1.getTime()
578 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
579 da,infos=ff1.getUndergroundDataArrayExt()
580 f2.getArray().setName(da.getName())#da has the same name than f2
581 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
582 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
585 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
587 mm1=MEDFileUMesh.New()
588 mm1.setCoords(m1.getCoords())
589 mm1.setMeshAtLevel(0,m1)
590 mm1.setName(m1.getName())
592 ff1=MEDFileField1TS.New()
593 ff1.setFieldNoProfileSBT(f1)
595 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
597 f2=ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
598 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
599 f1.getArray().setIJ(0,0,nv)
600 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
603 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
605 mm1=MEDFileUMesh.New()
606 mm1.setCoords(m1.getCoords())
607 mm1.setMeshAtLevel(0,m1)
608 mm1.setName(m1.getName())
610 ff1=MEDFileField1TS.New()
611 ff1.setFieldNoProfileSBT(f1)
613 f2=ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
614 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
615 da,infos=ff1.getUndergroundDataArrayExt()
616 f2.getArray().setName(da.getName())#da has the same name than f2
617 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
618 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
621 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
622 f1InvalidCpy=f1.deepCopy()
623 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
624 f1InvalidCpy2=f1.deepCopy()
625 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
627 mm1=MEDFileUMesh.New()
628 mm1.setCoords(m1.getCoords())
629 mm1.setMeshAtLevel(0,m1)
630 mm1.setName(m1.getName())
632 ff1=MEDFileField1TS.New()
633 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
634 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
635 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
636 ff1.setFieldNoProfileSBT(f1)
638 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
639 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
640 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
641 sbt=ff2.getFieldSplitedByType2()
642 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
643 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
644 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
645 self.assertEqual(6,loc1.getNumberOfPointsInCells())
646 self.assertEqual(3,loc1.getNumberOfGaussPoints())
647 self.assertEqual(2,loc1.getDimension())
648 da,infos=ff2.getUndergroundDataArrayExt()
649 f2.getArray().setName(da.getName())#da has the same name than f2
650 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
651 self.assertEqual(53,da.getNumberOfTuples())
652 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)
656 def testMEDFileData1(self):
660 m1=MEDLoaderDataForTest.build1DMesh_1()
661 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
662 mmm1=MEDFileMeshMultiTS.New() ;
663 mmm1.setOneTimeStep(mm1)
664 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
665 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
666 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
667 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
669 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
670 self.assertEqual(name,mmm.getName())
671 self.assertEqual(type(mmm),MEDFileUMesh)
673 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
675 ff1=MEDFileFieldMultiTS.New()
676 ff21=MEDFileFieldMultiTS.New()
677 ff22=MEDFileFieldMultiTS.New()
678 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
679 f1.getArray().setInfoOnComponent(0,"power [kW]")
680 ff1.appendFieldNoProfileSBT(f1)
681 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
682 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
683 ff21.appendFieldNoProfileSBT(f21)
684 f22=f21.deepCopy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
685 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
686 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
687 ff22.appendFieldNoProfileSBT(f22)
688 fs=MEDFileFields.New()
689 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
690 for name,fmts in zip(["f1","f21","f22"],fs):
691 self.assertEqual(name,fmts.getName())
695 fname2="Pyfile29_2.med"
698 d2=MEDFileData.New(fname2)
699 self.assertEqual(2,d2.getNumberOfMeshes())
700 self.assertEqual(3,d2.getNumberOfFields())
701 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
702 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
703 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
704 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
705 self.assertTrue(m1.isEqual(m1bis,1e-12))
706 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
707 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
708 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
709 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
710 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
713 def testMEDField9(self):
714 # first test field profile WR. Full type but with some type missing
716 m1=MEDLoaderDataForTest.build2DMesh_3()
717 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
719 ff1=MEDFileField1TS.New()
720 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
721 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
722 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.
723 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
725 ff1.setFieldProfile(f1,mm1,0,da)
726 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
730 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
731 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
732 self.assertTrue(vals.isEqual(d,1e-14))
734 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
735 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
736 ff2.deepCpyGlobs(ff3)
737 sbt=ff2.getFieldSplitedByType2()
738 self.assertEqual(3,sbt[0][0])#TRI3
739 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
740 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
741 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
742 self.assertEqual(4,sbt[1][0])#QUAD4
743 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
744 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
745 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
746 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
747 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
748 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
749 self.assertTrue(vals.isEqual(d,1e-14))
752 def testMEDField10(self):
754 m1=MEDLoaderDataForTest.build2DMesh_1()
755 m1.renumberCells([0,1,4,2,3,5],False)
756 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
758 ff1=MEDFileFieldMultiTS.New()
759 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
760 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
761 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
762 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
764 ff1.appendFieldProfile(f1,mm1,0,da)
765 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
766 ff1.appendFieldProfile(f1,mm1,0,da)
770 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
771 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
772 self.assertTrue(vals.isEqual(e,1e-14))
773 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
774 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
775 self.assertTrue(vals.isEqual(d,1e-14))
777 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
778 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
779 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
780 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
781 self.assertTrue(vals.isEqual(e,1e-14))
782 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
783 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
784 self.assertTrue(vals.isEqual(d,1e-14))
787 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
788 def testMEDField11(self):
790 m1=MEDLoaderDataForTest.build2DMesh_1()
791 m1.renumberCells([0,1,4,2,3,5],False)
792 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
794 ff1=MEDFileField1TS.New()
795 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
796 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
797 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.
798 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
800 ff1.setFieldProfile(f1,mm1,0,da)
801 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
804 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
805 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
806 self.assertTrue(vals.isEqual(d,1e-14))
808 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
809 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
810 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
811 self.assertTrue(vals.isEqual(d,1e-14))
814 def testMEDField12(self):
816 m1=MEDLoaderDataForTest.build2DMesh_1()
817 m1.renumberCells([0,1,4,2,3,5],False)
818 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
820 ff1=MEDFileFieldMultiTS.New()
821 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
822 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
823 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.
824 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
826 ff1.appendFieldProfile(f1,mm1,0,da)
827 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
828 ff1.appendFieldProfile(f1,mm1,0,da)
831 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
832 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
833 self.assertTrue(vals.isEqual(e,1e-14))
834 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
835 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
836 self.assertTrue(vals.isEqual(d,1e-14))
838 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
839 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
840 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
841 self.assertTrue(vals.isEqual(e,1e-14))
842 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
843 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
844 self.assertTrue(vals.isEqual(d,1e-14))
847 def testMEDField13(self):
849 m1=MEDLoaderDataForTest.build2DMesh_1()
850 m1.renumberCells([0,1,4,2,3,5],False)
852 m1=m1.buildPartOfMySelf(list(range(5)),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
853 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
855 ff1=MEDFileField1TS.New()
856 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
857 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
858 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.
859 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
861 ff1.setFieldProfile(f1,mm1,0,da)
864 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
865 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
866 self.assertTrue(vals.isEqual(d,1e-14))
868 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
869 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
870 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
871 self.assertTrue(vals.isEqual(d,1e-14))
874 def testMEDField14(self):
876 m1=MEDLoaderDataForTest.build2DMesh_1()
877 m1.renumberCells([0,1,4,2,3,5],False)
879 m1=m1.buildPartOfMySelf(list(range(5)),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
880 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
882 ff1=MEDFileFieldMultiTS.New()
883 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
884 d=DataArrayDouble.New() ; d.alloc(2*11,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,2,3],3,1) ; da.setName("sup1NodeElt")
888 ff1.appendFieldProfile(f1,mm1,0,da)
889 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
890 ff1.appendFieldProfile(f1,mm1,0,da)
893 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
894 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
895 self.assertTrue(vals.isEqual(d,1e-14))
896 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
897 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
898 self.assertTrue(vals.isEqual(e,1e-14))
899 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
901 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
902 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
903 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
904 self.assertTrue(vals.isEqual(d,1e-14))
905 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
906 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
907 self.assertTrue(vals.isEqual(e,1e-14))
909 # 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.
910 # 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
911 # 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 !
912 def testMEDField15(self):
914 m0=MEDLoaderDataForTest.build2DMesh_1()
915 m0.renumberCells([0,1,4,2,3,5],False)
917 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
918 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
919 ff1=MEDFileField1TS.New()
920 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
921 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
922 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.
923 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
925 ff1.setFieldProfile(f1,mm1,0,da)
926 m1=m0.buildPartOfMySelf(list(range(5)),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
929 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
930 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
931 self.assertTrue(p1.isIota(5))
932 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
934 # Test for getFieldAtTopLevel method
935 def testMEDField16(self):
937 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
939 mm1=MEDFileUMesh.New()
940 mm1.setCoords(m1.getCoords())
941 mm1.setMeshAtLevel(0,m1)
942 mm1.setName(m1.getName())
943 ff1=MEDFileField1TS.New()
944 ff1.setFieldNoProfileSBT(f1)
945 m2=m1.buildDescendingConnectivity()[0]
946 m2.sortCellsInMEDFileFrmt()
947 m2.setName(m1.getName())
948 mm1.setMeshAtLevel(-1,m2)
950 f2=m2.getMeasureField(True)
951 dd=DataArrayDouble.New()
952 dd.alloc(f2.getArray().getNumberOfTuples(),3)
953 dd[:,0]=f2.getArray()
954 dd[:,1]=2*f2.getArray()
955 dd[:,2]=3*f2.getArray()
956 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
958 f2.copyTinyStringsFrom(f1)
959 f2.copyTinyAttrFrom(f1)
960 ff1.setFieldNoProfileSBT(f2)
962 # Reading Pyfile37.med
963 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
964 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
965 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
966 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
967 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
968 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
969 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
973 ff1=MEDFileField1TS.New()
974 ff1.setFieldNoProfileSBT(f2)
976 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
977 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
978 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
981 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
982 def testMEDField17(self):
984 m1=MEDLoaderDataForTest.build2DMesh_1()
985 m1.renumberCells([0,1,4,2,3,5],False)
986 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
988 ffs=MEDFileFields.New()
989 ff1=MEDFileFieldMultiTS.New()
990 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
991 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
992 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.
993 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
995 ff1.appendFieldProfile(f1,mm1,0,da)
996 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
997 ff1.appendFieldProfile(f1,mm1,0,da)
999 ffs.setFieldAtPos(0,ff1)
1003 ffsr=MEDFileFields.New(fname)
1004 ff3=ffsr.getFieldAtPos(0)
1005 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
1006 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
1009 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
1010 def testMEDField18(self):
1011 fname="Pyfile40.med"
1012 m1=MEDLoaderDataForTest.build2DMesh_1()
1013 m1.renumberCells([0,1,4,2,3,5],False)
1014 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
1016 ffs=MEDFileFields.New()
1017 ff1=MEDFileFieldMultiTS.New()
1018 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
1019 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
1020 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.
1021 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
1023 ff1.appendFieldProfile(f1,mm1,0,da)
1024 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
1025 ff1.appendFieldProfile(f1,mm1,0,da)
1029 ffsr=MEDFileFields.New(fname)
1030 ff3=ffsr.getFieldAtPos(0)
1031 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
1032 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
1035 def testMEDFieldBug1(self):
1036 fname="Pyfile13.med"
1037 d=MEDFileData.New(fname)
1038 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1041 def testMEDMesh8(self):
1042 m=MEDLoaderDataForTest.build1DMesh_1()
1043 m.convertQuadraticCellsToLinear()
1044 mm=MEDFileUMesh.New()
1045 mm.setMeshAtLevel(0,m)
1046 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1047 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1048 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1049 mm.setGroupsAtLevel(0,[g1,g2],False)
1050 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1051 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1052 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1053 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1054 mm.assignFamilyNameWithGroupName()
1055 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1056 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1057 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1058 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1060 mm=MEDFileUMesh.New()
1061 mm.setMeshAtLevel(0,m)
1062 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1063 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1064 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1065 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1066 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1067 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1068 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1069 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1070 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1071 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1072 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1073 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1074 mm.changeFamilyId(5,6)
1075 g=mm.getGroupArr(0,"g3")
1076 self.assertTrue(g.isEqual(g3));
1077 g=mm.getGroupArr(0,"g2")
1078 self.assertTrue(g.isEqual(g2));
1079 g=mm.getGroupArr(0,"g1")
1080 self.assertTrue(g.isEqual(g1));
1083 # bug detected by gauthier
1084 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1085 fname="Pyfile41.med"
1086 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1088 mm1=MEDFileUMesh.New()
1089 mm1.setCoords(m1.getCoords())
1090 mm1.setMeshAtLevel(0,m1)
1092 ff1=MEDFileField1TS.New()
1093 ff1.setFieldNoProfileSBT(f1)
1095 # writing mesh1 and field1, now creation of mesh2 and field2
1098 m2.translate([0.5,0.6,0.7])
1099 m2.setName("3DSurfMesh_2")
1100 f2.getArray()[:]*=2.
1101 f2.setName("VectorFieldOnCells2")
1102 mm2=MEDFileUMesh.New()
1103 mm2.setCoords(m2.getCoords())
1104 mm2.setMeshAtLevel(0,m2)
1106 ff2=MEDFileField1TS.New()
1107 ff2.setFieldNoProfileSBT(f2)
1110 f3=ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1111 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1112 f4=ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1113 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1116 def testMEDLoaderMultiLevelCellField1(self):
1117 fname="Pyfile42.med"
1118 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1119 m=MEDFileUMesh.New()
1120 m.setCoords(m2.getCoords())
1121 m.setMeshAtLevel(0,m2)
1122 m.setMeshAtLevel(-1,m1)
1123 m.setMeshAtLevel(-2,m0)
1127 compNames1=["comp1","comp2","comp3"]
1128 ff1=MEDFileField1TS.New()
1129 da2=DataArrayDouble.New()
1130 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1132 da2.rearrange(len(compNames1))
1133 da2.setInfoOnComponents(compNames1)
1134 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkConsistencyLight()
1135 ff1.setFieldNoProfileSBT(f2)
1136 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1137 da0=DataArrayDouble.New()
1138 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1140 da0.rearrange(len(compNames1))
1141 da0.setInfoOnComponents(compNames1)
1142 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1143 ff1.setFieldNoProfileSBT(f0)
1144 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1145 da1=DataArrayDouble.New()
1146 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1148 da1.rearrange(len(compNames1))
1149 da1.setInfoOnComponents(compNames1)
1150 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1151 ff1.setFieldNoProfileSBT(f1)
1152 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1157 compNames2=["comp11","comp22"]
1158 ff2=MEDFileField1TS.New()
1159 da0=DataArrayDouble.New()
1160 da0.alloc(m0.getNumberOfCells()*2,1)
1163 da0.setInfoOnComponents(compNames2)
1164 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1165 ff2.setFieldNoProfileSBT(f0)
1166 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1167 da1=DataArrayDouble.New()
1168 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1170 da1.rearrange(len(compNames2))
1171 da1.setInfoOnComponents(compNames2)
1172 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1173 ff2.setFieldNoProfileSBT(f1)
1174 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1178 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1179 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1180 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1181 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1182 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1183 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1186 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1187 fname="Pyfile43.med"
1188 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1189 m=MEDFileUMesh.New()
1190 m.setMeshAtLevel(0,m2)
1191 m.setMeshAtLevel(-1,m1)
1192 m.setMeshAtLevel(-2,m0)
1193 f=MEDFileField1TS.New()
1194 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1195 ff.setName("NodeFieldPfl")
1196 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1198 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1199 f.setFieldProfile(ff,m,-2,pfl)
1200 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1201 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1202 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1203 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1204 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1205 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1206 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1207 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1208 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1209 expected1=[1.,10.,100.,2.,20.,200.]
1210 nodeCoordsWithValue1=[10.,2.5,0.]
1211 nodeCoordsWithValue2=[10.,3.75,0.]
1213 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1214 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1217 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1221 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1222 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1223 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1224 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1225 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1226 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1227 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1228 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1229 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1231 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1236 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1237 f=MEDFileField1TS.New()
1238 f.setFieldProfile(ff,m,-2,pfl)
1239 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1240 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1241 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1242 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1243 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1244 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1245 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1246 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1247 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1248 expected2=[2.,20.,200.,1.,10.,100.]
1250 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1251 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1254 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1257 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1258 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1259 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1260 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1261 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1262 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1263 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1264 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1265 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1267 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1271 def testBuildInnerBoundaryAlongM1Group1(self):
1272 fname="Pyfile44.med"
1273 m=MEDCouplingCMesh.New()
1274 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1275 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1276 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1277 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1278 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1279 m2.setName(m.getName())
1280 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1281 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1282 mm=MEDFileUMesh.New()
1283 mm.setMeshAtLevel(0,m)
1284 mm.setMeshAtLevel(-1,m2)
1285 mm.setGroupsAtLevel(-1,[grp,grp2])
1286 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1287 mm.setGroupsAtLevel(1,[grpNode])
1288 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1289 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1290 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1292 self.assertEqual(30,mm.getNumberOfNodes())
1293 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1294 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1296 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1297 self.assertEqual([15,16,17],nodes.getValues());
1298 self.assertEqual([7,8,9],cells.getValues());
1299 self.assertEqual([12,13,14],cells2.getValues());
1300 self.assertEqual(33,mm.getNumberOfNodes())
1301 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1302 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1303 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1304 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1305 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
1306 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1307 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
1308 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1309 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])
1310 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1311 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1313 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1314 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1315 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1316 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1317 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1321 def testBuildInnerBoundaryAlongM1Group2(self):
1322 fname="Pyfile45.med"
1323 m=MEDCouplingCMesh.New()
1324 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1325 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1326 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1327 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1328 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1329 m2.setName(m.getName())
1330 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1331 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1332 mm=MEDFileUMesh.New()
1333 mm.setMeshAtLevel(0,m)
1334 mm.setMeshAtLevel(-1,m2)
1335 mm.setGroupsAtLevel(-1,[grp,grp2])
1336 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1337 mm.setGroupsAtLevel(1,[grpNode])
1338 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1339 ref1=[4,9,8,14,15,4,10,9,15,16]
1340 ref2=[4,9,8,14,30,4,10,9,30,16]
1342 self.assertEqual(30,mm.getNumberOfNodes())
1343 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1344 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1346 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1347 self.assertEqual([15],nodes.getValues());
1348 self.assertEqual([7,8],cells.getValues());
1349 self.assertEqual([12,13],cells2.getValues());
1350 self.assertEqual(31,mm.getNumberOfNodes())
1351 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1352 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1353 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1354 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1355 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
1356 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1357 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
1358 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1359 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])
1360 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1361 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1363 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1364 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1365 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1366 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1367 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1371 def testBuildInnerBoundaryAlongM1Group3(self):
1372 """ Test buildInnerBoundaryAlongM1Group() with *non-connex* cracks """
1373 fname = "Pyfile73.med"
1374 m = MEDCouplingCMesh.New()
1375 m.setCoordsAt(0, DataArrayDouble([0.0,1.1,2.3,3.6,5.0]))
1376 m.setCoordsAt(1, DataArrayDouble([0.,1.,2.]))
1377 m = m.buildUnstructured(); m.setName("simple")
1378 m2 = m.buildDescendingConnectivity()[0]
1379 m2.setName(m.getName())
1381 # A crack in two non connected parts of the mesh:
1382 grpSeg = DataArrayInt([3,19]) ; grpSeg.setName("Grp")
1384 mm = MEDFileUMesh.New()
1385 mm.setMeshAtLevel(0,m)
1386 mm.setMeshAtLevel(-1,m2)
1387 mm.setGroupsAtLevel(-1,[grpSeg])
1388 nodes, cellsMod, cellsNotMod = mm.buildInnerBoundaryAlongM1Group("Grp")
1389 self.assertEqual([1,13],nodes.getValues());
1390 self.assertEqual([0,6],cellsMod.getValues());
1391 self.assertEqual([1,7],cellsNotMod.getValues());
1392 self.assertEqual(17,mm.getNumberOfNodes())
1393 self.assertEqual([3,19],mm.getGroupArr(-1,"Grp").getValues())
1394 self.assertEqual([22,23],mm.getGroupArr(-1,"Grp_dup").getValues())
1395 ref0=[4, 15, 0, 5, 6, 4, 8, 7, 12, 16]
1396 ref1=[4, 2, 1, 6, 7, 4, 9, 8, 13, 14]
1397 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[0,6]].getNodalConnectivity().getValues())
1398 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[1,7]].getNodalConnectivity().getValues())
1399 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
1400 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1402 refValues=DataArrayDouble([1.1, 1.2, 1.3, 1.4, 1.1, 1.2, 1.3, 1.4])
1403 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1404 self.assertTrue(delta.getMaxValue()[0]<1e-10)
1406 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1407 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1408 refValues2=refValues[:] ; refValues2[0] = 1.265; refValues2[6] = 1.105
1409 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1410 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1413 def testBuildInnerBoundaryAlongM1Group4(self):
1414 """ Test case where cells touch the M1 group on some nodes only and not on full egdes (triangle mesh for ex)
1416 coo = DataArrayDouble([0.,0., 1.,0., 2.,0., 3.,0.,
1417 0.,1., 1.,1., 2.,1., 3.,1.,
1418 0.,2., 1.,2., 2.,2., 3.,2.], 12, 2)
1419 conn = [3,0,4,1, 3,1,4,5,
1426 connI = DataArrayInt()
1427 connI.alloc(13, 1); connI.iota(); connI *= 4
1428 m2 = MEDCouplingUMesh("2D", 2)
1430 m2.setConnectivity(DataArrayInt(conn), connI)
1431 m2.checkConsistency()
1432 m1, _, _, _, _ = m2.buildDescendingConnectivity()
1433 grpIds = DataArrayInt([9,11]); grpIds.setName("group")
1434 grpIds2 = DataArrayInt([0,1]); grpIds2.setName("group2")
1435 mfu = MEDFileUMesh()
1436 mfu.setMeshAtLevel(0, m2)
1437 mfu.setMeshAtLevel(-1, m1)
1438 mfu.setGroupsAtLevel(-1, [grpIds, grpIds2])
1439 nNod = m2.getNumberOfNodes()
1440 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1441 m2_bis = mfu.getMeshAtLevel(0)
1442 m2_bis.checkConsistency()
1443 m1_bis = mfu.getMeshAtLevel(-1)
1444 m1_bis.checkConsistency()
1445 self.assertEqual(nNod+2, mfu.getNumberOfNodes())
1446 self.assertEqual(nNod+2, m2_bis.getNumberOfNodes())
1447 self.assertEqual(nNod+2, m1_bis.getNumberOfNodes())
1448 self.assertEqual([6,7], nodesDup.getValues())
1449 self.assertEqual([2.,1., 3.,1.], m2_bis.getCoords()[nNod:].getValues())
1450 self.assertEqual(set([3,10,11]), set(cells1.getValues()))
1451 self.assertEqual(set([8,9,4,5]), set(cells2.getValues()))
1452 self.assertEqual([9,11],mfu.getGroupArr(-1,"group").getValues())
1453 self.assertEqual([23,24],mfu.getGroupArr(-1,"group_dup").getValues())
1454 self.assertEqual([0,1],mfu.getGroupArr(-1,"group2").getValues())
1455 # mfu.getMeshAtLevel(0).writeVTK("/tmp/mfu_M0.vtu")
1456 ref0 =[3, 5, 10, 12, 3, 12, 10, 11, 3, 12, 11, 13]
1457 ref1 =[3, 2, 6, 7, 3, 2, 7, 3, 3, 1, 5, 6, 3, 1, 6, 2]
1458 self.assertEqual(ref0,mfu.getMeshAtLevel(0)[[3,10,11]].getNodalConnectivity().getValues())
1459 self.assertEqual(ref1,mfu.getMeshAtLevel(0)[[4,5,8,9]].getNodalConnectivity().getValues())
1460 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
1461 mfu.getGroup(-1,"group_dup").checkGeoEquivalWith(mfu.getGroup(-1,"group"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1462 m_bis0 = mfu.getMeshAtLevel(-1)
1463 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1464 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1466 def testBuildInnerBoundary5(self):
1467 """ Full 3D test with tetras only. In this case a tri from the group is not duplicated because it is made only
1468 of non duplicated nodes. The tri in question is hence not part of the final new "dup" group. """
1469 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,
1470 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,
1471 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,
1472 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,
1473 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,
1474 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,
1475 400.0, 0.0, 100.02162286181577, 99.31624553977466, 99.99999998882231, 200.0, 99.31624576683302, 100.00000010178034, 0.0, 99.31624560596512, 200.0, 100.0050761312483,
1476 99.31624560612883, 0.0, 100.00507613125338, 200.0, 99.99999995813045, 100.00950673487786, 0.0, 99.99999989928207, 100.0041870621175, 301.29063354383015,
1477 100.0000000093269, 0.0, 301.29063360689975, 0.0, 100.00957769061164, 140.52853868782435, 99.99999963972768, 100.00509135751312, 297.87779091770784,
1478 97.16750463405486, 97.18018457127863], 46, 3)
1479 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,
1480 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,
1481 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,
1482 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,
1483 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,
1484 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,
1485 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,
1486 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,
1487 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,
1488 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,
1490 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,
1491 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,
1492 360, 365, 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430]
1493 m3 = MEDCouplingUMesh("3D", 3)
1495 m3.setConnectivity(DataArrayInt(c0), DataArrayInt(cI0))
1496 m3.checkConsistency()
1497 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1498 grpIds = DataArrayInt([36,74]); grpIds.setName("group")
1499 mfu = MEDFileUMesh()
1500 mfu.setMeshAtLevel(0, m3)
1501 mfu.setMeshAtLevel(-1, m2)
1502 grpIds3D = DataArrayInt([0,1]); grpIds3D.setName("group_3d")
1503 mfu.setGroupsAtLevel(0, [grpIds3D]) # just to check preservation of 3D group
1504 mfu.setGroupsAtLevel(-1, [grpIds])
1505 nNod = m3.getNumberOfNodes()
1506 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1507 m3_bis = mfu.getMeshAtLevel(0)
1508 m3_bis.checkConsistency()
1509 m2_bis = mfu.getMeshAtLevel(-1)
1510 m2_bis.checkConsistency()
1511 self.assertEqual(nNod+1, mfu.getNumberOfNodes())
1512 self.assertEqual(nNod+1, m3_bis.getNumberOfNodes())
1513 self.assertEqual(nNod+1, m2_bis.getNumberOfNodes())
1514 self.assertEqual([3], nodesDup.getValues())
1515 self.assertEqual(m3_bis.getCoords()[3].getValues(), m3_bis.getCoords()[nNod:].getValues())
1516 self.assertEqual(set([22]), set(cells1.getValues()))
1517 self.assertEqual(set([77]), set(cells2.getValues()))
1518 self.assertEqual([36,74],mfu.getGroupArr(-1,"group").getValues())
1519 self.assertEqual([0,1],mfu.getGroupArr(0,"group_3d").getValues())
1520 self.assertEqual([213],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1521 m_bis0 = mfu.getMeshAtLevel(-1)
1522 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1523 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1526 def testBasicConstructors(self):
1527 fname="Pyfile18.med"
1528 m=MEDFileMesh.New(fname)
1529 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1530 m=MEDFileMesh.New(fname)
1531 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1532 m=MEDFileUMesh(fname)
1535 m=MEDFileCMesh("MEDFileMesh5.med")
1536 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1538 m=MEDFileMeshMultiTS()
1539 m=MEDFileMeshMultiTS(fname)
1540 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1542 m=MEDFileMeshes(fname)
1544 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1545 m=MEDFileFieldMultiTS()
1546 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1548 m=MEDFileFields(fname)
1550 m=MEDFileData(fname)
1552 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1553 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1554 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1555 m=MEDCouplingCMesh()
1556 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1557 m=MEDCouplingFieldTemplate(ON_NODES)
1558 m=MEDCouplingMultiFields([])
1559 m=MEDCouplingFieldOverTime([])
1562 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1563 def testBugSemiPartialField(self):
1564 fname="Pyfile46.med"
1565 m=MEDLoaderDataForTest.build2DMesh_3()
1566 m=m[:10] ; m.setName("mesh")
1567 f=m.getMeasureField(False)
1568 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1570 f.setName("SemiPartialField")
1572 f1=f[:6] ; f1.getMesh().setName(m.getName())
1573 f2=f[6:] ; f2.getMesh().setName(m.getName())
1575 mm=MEDFileUMesh.New()
1576 mm.setMeshAtLevel(0,m)
1577 ff=MEDFileField1TS.New()
1578 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1582 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1583 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1584 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1586 fread.checkConsistencyLight()
1587 fread2.checkConsistencyLight()
1588 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1589 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1592 def testUnPolyze1(self):
1593 fname="Pyfile47.med"
1594 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1595 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]
1596 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1597 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]]))
1599 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1600 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1601 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1602 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1603 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1604 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1605 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1606 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1608 mm.setRenumFieldArr(0,None)
1609 mm.setFamilyFieldArr(-1,None)
1612 def testUnPolyze2(self):
1613 fname="Pyfile48.med"
1614 mfd=MEDFileData.New()
1615 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1616 meshes=MEDFileMeshes.New()
1618 mfd.setMeshes(meshes)
1619 fields=MEDFileFields.New()
1620 mfd.setFields(fields)
1621 ff=MEDFileFieldMultiTS.New()
1622 fields.pushField(ff)
1624 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1625 f0_0.setTime(9.5,3,4)
1626 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1628 f0_0.setMesh(mm.getMeshAtLevel(0))
1629 ff.appendFieldNoProfileSBT(f0_0)
1630 ff0=ff.getTimeStepAtPos(0)
1631 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1632 f0_1.setTime(9.5,3,4)
1633 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1634 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1635 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1637 ff0.setFieldProfile(f0_1,mm,0,pfl)
1638 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1639 f0_2.setTime(9.5,3,4)
1640 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1641 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
1642 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1644 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1645 mfd.getFields().shallowCpyGlobs(ff0)
1647 mfd.unPolyzeMeshes()
1649 fmts=mfd.getFields()[0]
1650 self.assertEqual(fmts.getNumberOfTS(),1)
1651 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1652 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1653 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))])
1654 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1655 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1656 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1657 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1658 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1659 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1660 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1661 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))
1662 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1663 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1664 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1665 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1666 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1667 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])
1668 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1669 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1670 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1671 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])
1672 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1677 def testGaussWriteOnPfl1(self):
1678 fname="Pyfile49.med"
1679 fname2="Pyfile50.med"
1680 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1681 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1682 mQ8.allocateCells(1)
1683 mQ8.insertNextCell(NORM_QUAD8,list(range(8)))
1684 mQ8.finishInsertingCells()
1685 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1686 mQ4.allocateCells(1)
1687 mQ4.insertNextCell(NORM_QUAD4,list(range(4)))
1688 mQ4.finishInsertingCells()
1689 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1690 mT3.allocateCells(1)
1691 mT3.insertNextCell(NORM_TRI3,list(range(3)))
1692 mT3.finishInsertingCells()
1694 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.]]
1695 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1696 ms[:]=(elt.deepCopy() for elt in ms)
1697 for m,t in zip(ms,tr):
1698 d=m.getCoords() ; d+= t
1700 m=MEDCouplingUMesh.MergeUMeshes(ms)
1702 m2=m[:13] ; m2.setName(m.getName())
1703 ### 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.
1704 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1705 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1708 da=DataArrayDouble(34) ; da.iota(3.)
1710 f.setName("fieldCellOnPflWithoutPfl")
1711 fInvalid=f.deepCopy()
1712 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])
1713 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])
1714 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])
1715 f.checkConsistencyLight()
1716 fInvalid2=fInvalid.deepCopy()
1717 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1720 mm.setMeshAtLevel(0,m)
1723 f1ts=MEDFileField1TS.New()
1724 pfl=DataArrayInt(list(range(13))) ; pfl.setName("pfl")
1725 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1726 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1727 f1ts.setFieldProfile(f,mm,0,pfl)
1730 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1731 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1732 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1733 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1734 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1735 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1736 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1737 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
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 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1744 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1745 f2_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1746 f2_bis.checkConsistencyLight()
1747 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1749 WriteField(fname2,f,True)
1750 f2_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1751 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1752 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1753 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1754 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1755 m2=m[pfl] ; m2.setName(m.getName())
1758 da=DataArrayDouble(35) ; da.iota(3.)
1760 f.setName("fieldCellOnPflWithoutPfl2")
1761 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1762 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])
1763 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])
1764 f.checkConsistencyLight()
1767 mm.setMeshAtLevel(0,m)
1769 f1ts=MEDFileField1TS.New()
1770 f1ts.setFieldProfile(f,mm,0,pfl)
1771 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1772 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1773 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1774 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1776 dataRead=MEDFileData.New(fname)
1777 mRead=dataRead.getMeshes()[0]
1778 f1tsRead=dataRead.getFields()[0][0]
1779 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1780 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1781 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1782 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1783 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1784 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1785 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1787 WriteField(fname2,f,True)
1788 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1789 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1790 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1791 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1792 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1795 da=DataArrayDouble(60) ; da.iota(3.)
1797 f.setName("fieldCellWithoutPfl")
1798 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])
1799 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])
1800 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])
1801 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])
1802 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])
1803 f.checkConsistencyLight()
1805 mm.setMeshAtLevel(0,m)
1806 f1ts=MEDFileField1TS.New()
1807 f1ts.setFieldNoProfileSBT(f)
1808 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1809 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1810 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1811 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1812 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1816 dataRead=MEDFileData.New(fname)
1817 mRead=dataRead.getMeshes()[0]
1818 f1tsRead=dataRead.getFields()[0][0]
1819 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1820 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1821 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1822 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1823 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1824 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1826 WriteField(fname2,f,True)
1827 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1828 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1829 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1832 # Testing profile on nodes when the profile is identity but not on all nodes.
1833 def testMEDFieldPflOnNode1(self):
1834 fname="Pyfile51.med"
1835 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)
1836 m0=MEDCouplingUMesh("Mesh",2)
1838 m0.insertNextCell(NORM_TRI3,[1,4,2])
1839 m0.insertNextCell(NORM_TRI3,[4,5,2])
1840 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1841 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1842 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1843 m0.finishInsertingCells()
1845 m1=MEDCouplingUMesh(m0.getName(),1)
1847 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1849 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1851 m1.finishInsertingCells()
1855 m.setMeshAtLevel(0,m0)
1856 m.setMeshAtLevel(-1,m1)
1858 dt=3 ; it=2 ; tim=4.5
1859 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1860 fieldNode0.setName("fieldNode0")
1861 fieldNode0.setTime(tim,dt,it)
1862 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1863 arr=DataArrayDouble([10,11,12,13,14])
1864 fieldNode0.setArray(arr)
1865 f0=MEDFileField1TS()
1866 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1867 m.write(fname,2) ; f0.write(fname,0)
1868 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1869 fieldNode1.setName("fieldNode1")
1870 fieldNode1.setTime(tim,dt,it)
1871 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1872 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1873 fieldNode1.setArray(arr1)
1874 f1=MEDFileField1TS()
1875 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1878 ## Reading from file
1879 m=MEDFileMesh.New(fname)
1880 m0=m.getMeshAtLevel(0)
1881 m00=m0.deepCopy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1882 fieldNode0.setMesh(m00)
1883 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1884 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1885 ff0_1.checkConsistencyLight()
1886 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1887 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1888 ff0_2.checkConsistencyLight()
1889 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1890 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1891 ff0_3.checkConsistencyLight()
1892 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1893 ff0_4=ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1894 ff0_4.checkConsistencyLight()
1895 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1896 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1897 m1=m.getMeshAtLevel(-1)
1898 m10=m1.deepCopy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1899 fieldNode1.setMesh(m10)
1900 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1901 ff1_1.checkConsistencyLight()
1902 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1903 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1904 ff1_2.checkConsistencyLight()
1905 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1906 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1907 ff1_3.checkConsistencyLight()
1908 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1909 ff1_4=ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1910 ff1_4.checkConsistencyLight()
1911 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1912 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]
1913 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]
1914 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]
1915 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1916 arr_r.setName(fieldNode1.getArray().getName())
1917 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1918 pfl1_r.setName(pfl1.getName())
1919 self.assertTrue(pfl1_r.isEqual(pfl1))
1922 # Testing profile on nodes when the profile is identity but not on all nodes.
1923 def testMEDFieldPflOnCell1(self):
1924 fname="Pyfile52.med"
1925 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)
1926 m0=MEDCouplingUMesh("Mesh",2)
1928 m0.insertNextCell(NORM_TRI3,[1,4,2])
1929 m0.insertNextCell(NORM_TRI3,[4,5,2])
1930 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1931 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1932 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1933 m0.finishInsertingCells()
1935 m1=MEDCouplingUMesh(m0.getName(),1)
1937 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1939 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1941 m1.finishInsertingCells()
1945 m.setMeshAtLevel(0,m0)
1946 m.setMeshAtLevel(-1,m1)
1948 dt=3 ; it=2 ; tim=4.5
1949 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1950 fieldCell0.setName("fieldCell0")
1951 fieldCell0.setTime(tim,dt,it)
1952 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1953 arr=DataArrayDouble([10,11,12])
1954 fieldCell0.setArray(arr)
1955 f0=MEDFileField1TS()
1956 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1957 m.write(fname,2) ; f0.write(fname,0)
1958 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1959 fieldCell1.setName("fieldCell1")
1960 fieldCell1.setTime(tim,dt,it)
1961 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1962 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1963 fieldCell1.setArray(arr1)
1964 f1=MEDFileField1TS()
1965 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1968 ## Reading from file
1969 m=MEDFileMesh.New(fname)
1970 m0=m.getMeshAtLevel(0)
1971 m00=m0.deepCopy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1972 fieldCell0.setMesh(m00)
1973 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1974 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1975 ff0_1.checkConsistencyLight()
1976 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1977 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1978 ff0_2.checkConsistencyLight()
1979 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1980 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1981 ff0_3.checkConsistencyLight()
1982 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1983 ff0_4=ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1984 ff0_4.checkConsistencyLight()
1985 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1986 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1987 m1=m.getMeshAtLevel(-1)
1988 m10=m1.deepCopy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1989 fieldCell1.setMesh(m10)
1990 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1991 ff1_1.checkConsistencyLight()
1992 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1993 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1994 ff1_2.checkConsistencyLight()
1995 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1996 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1997 ff1_3.checkConsistencyLight()
1998 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1999 ff1_4=ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
2000 ff1_4.checkConsistencyLight()
2001 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
2002 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]
2003 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]
2004 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]
2005 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
2006 arr_r.setName(fieldCell1.getArray().getName())
2007 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
2008 pfl1_r.setName(pfl1.getName())
2009 self.assertTrue(pfl1_r.isEqual(pfl1))
2012 def testMEDFileUMeshZipCoords1(self):
2014 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2015 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])
2016 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2017 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2018 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2019 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2020 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2021 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
2022 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
2023 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
2024 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
2025 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
2027 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
2028 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
2029 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
2030 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
2031 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
2032 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
2033 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2034 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
2035 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
2038 def testMEDUMeshAddNodeGroup1(self):
2039 fname="Pyfile53.med"
2041 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2042 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])
2043 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2044 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2045 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2046 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2047 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2050 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
2051 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
2052 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2053 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2054 mm.setFamilyId("MyFam",2)
2055 mm.setFamilyId("MyOtherFam",3)
2056 mm.setFamilyId("MyOther-1",-1)
2057 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2058 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2060 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2061 mm.addNodeGroup(daTest)
2062 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2063 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2064 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2065 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2067 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2068 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2069 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2070 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2071 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2072 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2074 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
2075 da=DataArrayInt([3,12]) ; da.setName("grp0")
2076 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2078 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2080 mm=MEDFileMesh.New(fname)
2081 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2082 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2083 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2084 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2086 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2087 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2088 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2089 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2090 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2091 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2093 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
2094 da=DataArrayInt([3,12]) ; da.setName("grp0")
2095 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2097 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2100 def testMEDUMeshAddGroup1(self):
2101 fname="Pyfile54.med"
2103 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2104 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
2106 m0.insertNextCell(NORM_TRI3,[1,2,1])
2109 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
2112 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
2114 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2115 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2116 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2117 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2118 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2121 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
2122 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
2123 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2124 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2125 mm.setFamilyId("MyFam",2)
2126 mm.setFamilyId("MyOtherFam",3)
2127 mm.setFamilyId("MyOther-1",-1)
2128 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2129 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2131 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2132 mm.addGroup(0,daTest)
2133 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2134 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2135 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2136 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2138 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2139 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2140 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2141 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2142 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2143 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2145 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
2146 da=DataArrayInt([3,12]) ; da.setName("grp0")
2147 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2149 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2151 mm=MEDFileMesh.New(fname)
2152 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2153 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2154 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2155 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2157 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2158 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2159 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2160 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2161 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2162 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2164 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
2165 da=DataArrayInt([3,12]) ; da.setName("grp0")
2166 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2168 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2171 def testHeapMem1(self):
2172 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2174 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2176 m=MEDCouplingCMesh()
2177 arr=DataArrayDouble(10,1) ; arr.iota(0)
2178 m.setCoords(arr,arr)
2179 m=m.buildUnstructured()
2181 f=m.getMeasureField(False)
2182 self.assertIn(m.getHeapMemorySize(), list(range(3552 - 100, 3552 + 100 + 4 * strMulFac)))
2183 self.assertIn(f.getHeapMemorySize(), list(range(4215 - 100, 4215 + 100 + 8 * strMulFac)))
2186 mm.setMeshAtLevel(0,m)
2187 self.assertIn(mm.getHeapMemorySize(), list(range(3889 - 100, 4225 + 100 + 10 * strMulFac)))
2188 ff=MEDFileField1TS()
2189 ff.setFieldNoProfileSBT(f)
2190 self.assertIn(ff.getHeapMemorySize(), list(range(771 - 40, 871 + 21 + (4 + 1) * strMulFac)))
2192 fff=MEDFileFieldMultiTS()
2193 fff.appendFieldNoProfileSBT(f)
2194 self.assertIn(fff.getHeapMemorySize(), list(range(815 - 50, 915 + 30 + (6 + 2) * strMulFac)))
2196 fff.appendFieldNoProfileSBT(f)
2197 self.assertIn(fff.getHeapMemorySize(), list(range(1594 - 90, 1794 + 50 + (10 + 1) * strMulFac)))
2198 self.assertIn(fff[0, -1].getHeapMemorySize(), list(range(771 - 40, 871 + 20 + (4 + 1) * strMulFac)))
2201 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2202 fff.appendFieldProfile(f2,mm,0,pfl)
2203 self.assertIn(fff.getHeapMemorySize(), list(range(2348 - 130, 2608 + 100 + (10 + 2) * strMulFac)))
2204 self.assertIn(fff.getProfile("pfl").getHeapMemorySize(), list(range(204 - 10, 204 + 10 + 2 * strMulFac)))
2205 self.assertIn(fff[1, -1].getHeapMemorySize(), list(range(738 - 50, 838 + 30 + 4 * strMulFac)))
2208 def testCurveLinearMesh1(self):
2209 fname="Pyfile55.med"
2210 mesh=MEDCouplingCurveLinearMesh();
2211 mesh.setTime(2.3,4,5);
2212 mesh.setTimeUnit("us");
2213 mesh.setName("Example of Cuve linear mesh");
2214 mesh.setDescription("buildCLMesh");
2215 a1=DataArrayDouble(3*20,1);
2216 a1.iota(7.) ; a1.rearrange(3);
2218 mesh.setNodeGridStructure([4,5]);
2219 mesh.checkConsistencyLight();
2221 m=MEDFileCurveLinearMesh()
2223 d=DataArrayInt(20) ; d.iota(4)
2224 m.setFamilyFieldArr(1,d)
2225 d3=DataArrayInt(20) ; d3.iota(400)
2226 m.setRenumFieldArr(1,d3)
2227 d2=DataArrayInt(12) ; d2.iota(40)
2228 m.setFamilyFieldArr(0,d2)
2229 d4=DataArrayInt(21) ; d4.iota(4000)
2230 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2232 m.setRenumFieldArr(1,d4)
2235 m1=MEDFileCurveLinearMesh(fname)
2237 self.assertTrue(mm.isEqual(mesh,1e-12))
2238 self.assertEqual(mm.getSpaceDimension(),3)
2239 self.assertEqual(mm.getSpaceDimensionOnNodeStruct(),2)
2241 m1=MEDFileMesh.New(fname)
2242 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2243 self.assertTrue(isinstance(m1.getUnivName(),str))
2244 self.assertTrue(len(m1.getUnivName())!=0)
2245 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2248 def testParameters1(self):
2249 fname="Pyfile56.med"
2250 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2251 mm=MEDFileCMesh() ; mm.setMesh(m)
2252 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2254 p=MEDFileParameters()
2255 data.setParams(p) ; data.setMeshes(ms)
2256 pts=MEDFileParameterMultiTS()
2257 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2258 pts.appendValue(1,2,3.4,567.89)
2259 pts.appendValue(2,3,5.6,999.123)
2260 pts2=pts.deepCopy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2261 p.pushParam(pts) ; p.pushParam(pts2)
2263 p2=MEDFileParameters(fname)
2264 self.assertTrue(p.isEqual(p2,1e-14)[0])
2265 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2267 pts4=pts2.deepCopy()
2268 pts3=pts2.deepCopy()
2269 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2270 pts2.eraseTimeStepIds([0])
2271 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2273 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2274 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2275 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2276 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2277 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2279 self.assertTrue(p.isEqual(p2,1e-14)[0])
2280 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2281 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2282 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2283 self.assertEqual(p.getParamsNames(),('A','B'))
2284 ptsr=MEDFileParameterMultiTS(fname,"B")
2285 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2286 ptsr=MEDFileParameterMultiTS(fname)
2287 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2288 p1tsr=MEDFileParameterDouble1TS(fname)
2289 self.assertEqual(p1tsr.getName(),"A")
2290 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2291 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2292 self.assertEqual(p1tsr.getName(),"B")
2293 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2294 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2295 self.assertEqual(p1tsr.getName(),"B")
2296 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2297 data2=MEDFileData(fname)
2298 self.assertEqual(2,data2.getNumberOfParams())
2299 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2302 def testNamesOnCellAndNodesInMeshes1(self):
2303 fname="Pyfile58.med"
2304 fname2="Pyfile59.med"
2305 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2306 m1=m.buildDescendingConnectivity()[0]
2307 m1.sortCellsInMEDFileFrmt()
2310 mm.setMeshAtLevel(0,m)
2311 mm.setMeshAtLevel(-1,m1)
2312 namesCellL0=DataArrayAsciiChar(6,16)
2313 namesCellL0[:] = ["CellL0#%.3d " % (i) for i in range(6)]
2314 mm.setNameFieldAtLevel(0,namesCellL0)
2315 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.subArray(2)])
2316 namesCellL1[:] = ["CellLM1#%.3d " % (i) for i in range(16)]
2317 mm.setNameFieldAtLevel(-1,namesCellL1)
2318 namesNodes=namesCellL1.subArray(4,16)
2319 namesNodes[:] = ["Node#%.3d " % (i) for i in range(12)]
2320 mm.setNameFieldAtLevel(1,namesNodes)
2323 mmr=MEDFileMesh.New(fname)
2324 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d " % (i) for i in range(6)])))
2325 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d " % (i) for i in range(16)])))
2326 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d " % (i) for i in range(12)])))
2327 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2328 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2329 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2330 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2331 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2333 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2334 # remove names on nodes
2335 mmCpy.setNameFieldAtLevel(1,None)
2336 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2337 mm.setNameFieldAtLevel(1,None)
2338 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2339 mm.setNameFieldAtLevel(-1,None)
2341 mmr=MEDFileMesh.New(fname)
2342 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2343 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d " % (i) for i in range(6)])))
2344 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2346 c=MEDCouplingCMesh()
2347 arr=DataArrayDouble([0.,1.1,2.3])
2348 c.setCoords(arr,arr)
2352 cc.setNameFieldAtLevel(0, DataArrayAsciiChar(["Cell#%.3d " % (i) for i in range(4)]))
2353 cc.setNameFieldAtLevel(1, DataArrayAsciiChar(["Node#%.3d " % (i) for i in range(9)]))
2355 ccr=MEDFileMesh.New(fname2)
2356 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d " % (i) for i in range(4)])))
2357 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d " % (i) for i in range(9)])))
2358 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2359 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2360 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2361 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2362 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2364 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2367 def testToExportInExamples1(self):
2368 m=MEDCouplingCMesh()
2369 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2370 m.setCoords(arr,arr)
2371 m=m.buildUnstructured() ; m.setName("mesh")
2372 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2373 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2376 mm.setMeshAtLevel(0,m)
2377 mm.setMeshAtLevel(-1,m2)
2378 mm.setGroupsAtLevel(0,[grp1,grp2])
2379 mm.write("example.med",2)
2381 m0=mm.getMeshAtLevel(0)
2382 m1=mm.getMeshAtLevel(-1)
2383 grp1=mm.getGroupArr(0,"grp1")
2384 grp2=mm.getGroupArr(0,"grp2")
2386 whichGrp=DataArrayInt(m0.getNumberOfCells())
2387 whichGrp.fillWithValue(-1)
2388 for grpId,grp in enumerate(grps):
2391 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2392 e,f=a.areCellsIncludedIn(m1,2)
2394 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2395 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2396 c2.transformWithIndArr(whichGrp)
2397 splitOfM1=len(grps)*[None]
2398 for grpId,grp in enumerate(grps):
2399 tmp=c2.findIdsEqual(grpId)
2400 splitOfM1[grpId]=tmp
2402 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2403 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2406 def testBugCorrection1(self):
2409 self.assertEqual(fs[0],None)
2410 self.assertEqual(3,len(fs))
2413 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2414 f1Name="Pyfile60.med"
2415 f2Name="Pyfile61.med"
2416 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2418 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2420 # reading and compare
2421 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2422 for mn in d1.getMeshes().getMeshesNames():
2423 m1=d1.getMeshes()[mn]
2424 m2=d2.getMeshes()[mn]
2425 for lev in m1.getNonEmptyLevels():
2426 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2427 for grpName in grpsNames:
2428 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2432 for fieldn in d1.getFields().getFieldsNames():
2433 f1=d1.getFields()[fieldn]
2434 f2=d2.getFields()[fieldn]
2435 for it,order,tim in f1.getTimeSteps():
2438 if len(f1t.getPflsReallyUsed())!=0:
2440 for lev in f1t.getNonEmptyLevels()[1]:
2441 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2442 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2443 self.assertTrue(pfl1.isEqual(pfl2))
2444 self.assertTrue(arr1.isEqual(arr2,1e-10))
2449 for lev in f1t.getNonEmptyLevels()[1]:
2450 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2451 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2452 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2459 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2460 m=MEDCouplingCMesh()
2461 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2462 m.setCoords(arr,arr,arr)
2463 m=m.buildUnstructured()
2464 m2=m.buildDescendingConnectivity()[0]
2466 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2467 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2468 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2469 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2470 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2471 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2473 mm.setMeshAtLevel(0,m)
2474 mm.setGroupsAtLevel(0,[g1,g2])
2475 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2476 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2477 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2478 mm.normalizeFamIdsMEDFile()
2479 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2480 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2481 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2482 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2483 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2484 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2485 for g in mm.getGroupsOnSpecifiedLev(0):
2486 for f in mm.getFamiliesIdsOnGroup(g):
2487 self.assertTrue(f<0)
2492 mm.setMeshAtLevel(0,m)
2493 mm.setMeshAtLevel(-1,m2)
2494 mm.setGroupsAtLevel(0,[g1,g2])
2495 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2496 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2497 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2498 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2499 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2500 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2501 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2502 mm.normalizeFamIdsMEDFile()
2503 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2504 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2505 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2506 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2507 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2508 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2509 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2510 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2511 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2512 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2513 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2514 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2516 for g in mm.getGroupsOnSpecifiedLev(lev):
2517 for f in mm.getFamiliesIdsOnGroup(g):
2518 self.assertTrue(f<0)
2524 mm.setMeshAtLevel(0,m)
2525 mm.setMeshAtLevel(-1,m2)
2526 mm.setGroupsAtLevel(0,[g1,g2])
2527 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2528 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2529 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2530 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2531 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2532 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2533 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2534 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2535 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2536 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2537 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2538 mm.normalizeFamIdsMEDFile()
2539 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2540 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2541 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2542 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2543 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2544 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2545 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2546 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2547 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2548 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2549 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2550 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2551 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2552 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2553 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2554 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2555 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2556 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2558 for g in mm.getGroupsOnSpecifiedLev(lev):
2559 for f in mm.getFamiliesIdsOnGroup(g):
2560 self.assertTrue(f<0)
2564 for g in mm.getGroupsOnSpecifiedLev(1):
2565 for f in mm.getFamiliesIdsOnGroup(g):
2566 self.assertTrue(f>0)
2571 def testNonRegressionMantis22212ChangeGrpName(self):
2572 fileName="Pyfile62.med"
2573 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2574 m=MEDFileUMesh.New()
2575 m.setCoords(m2.getCoords())
2576 m.setMeshAtLevel(0,m2)
2577 m.setMeshAtLevel(-1,m1)
2578 m.setMeshAtLevel(-2,m0)
2579 m.setFamilyFieldArr(0,f2)
2580 m.setFamilyFieldArr(-1,f1)
2581 m.setFamilyFieldArr(-2,f0)
2582 m.setFamilyFieldArr(1,p)
2584 for i in range(nbOfFams):
2585 m.addFamily(fns[i],fids[i])
2588 for i in range(nbOfGrps):
2589 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2591 m.setName(m2.getName())
2592 m.setDescription(m2.getDescription())
2595 mm0=MEDFileMesh.New(fileName)
2596 mm1=MEDFileMesh.New(fileName)
2597 groupNamesIni=GetMeshGroupsNames(fileName,"ma")
2598 for name in groupNamesIni:
2599 mm1.changeGroupName(name,name+'N')
2601 mm1.write(fileName,2)
2604 mm2=MEDFileMesh.New(fileName)
2605 for name in groupNamesIni:
2606 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2607 arr0=mm0.getGroupArr(lev,name)
2608 arr2=mm2.getGroupArr(lev,name+'N')
2609 arr0.setName(name+'N')
2610 self.assertTrue(arr0.isEqual(arr2))
2615 def testInt32InMEDFileFieldStar1(self):
2616 fname="Pyfile63.med"
2617 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2618 f1=f1.convertToIntField()
2620 mm1=MEDFileUMesh.New()
2621 mm1.setCoords(m1.getCoords())
2622 mm1.setMeshAtLevel(0,m1)
2623 mm1.setName(m1.getName())
2625 ff1=MEDFileIntField1TS()
2626 ff1.setFieldNoProfileSBT(f1)
2627 a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2628 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2629 self.assertTrue(a.isEqual(f1,1e-12,0))
2631 a,b=ff1.getUndergroundDataArrayExt()
2632 self.assertEqual(a.getHiddenCppPointer(),ff1.getUndergroundDataArray().getHiddenCppPointer())
2633 self.assertEqual(b,[((3,0),(0,2)),((4,0),(2,4)),((6,0),(4,5)),((5,0),(5,6))])
2634 ff2=MEDFileAnyTypeField1TS.New(fname)
2635 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2636 self.assertEqual(ff2.getTime(),[0,1,2.0])
2637 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2638 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2639 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2640 self.assertTrue(a.isEqual(f1,1e-12,0))
2642 c=ff2.getUndergroundDataArray() ; c*=2
2643 ff2.write(fname,0) # 2 time steps in
2644 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2645 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2646 self.assertEqual(len(ffs1),2)
2647 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2648 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2649 self.assertTrue(a.isEqual(f1,1e-12,0))
2650 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
2651 self.assertTrue(a.isEqual(f1,1e-12,0))
2652 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2653 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2654 self.assertTrue(a.getArray().isEqual(2*f1.getArray()))
2655 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
2656 self.assertTrue(a.isEqual(f1,1e-12,0)) ; f1.getArray()[:]/=2
2657 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2659 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2662 self.assertTrue(bc.isEqual(3*f1.getArray()))
2663 nf1=MEDCouplingFieldInt(ON_NODES)
2664 nf1.setTime(9.,10,-1)
2665 nf1.setMesh(f1.getMesh())
2666 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
2667 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
2668 nff1=MEDFileIntField1TS.New()
2669 nff1.setFieldNoProfileSBT(nf1)
2670 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2671 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2674 nf2=MEDCouplingFieldInt(ON_NODES)
2675 nf2.setTime(19.,20,-11)
2676 nf2.setMesh(f1.getMesh())
2677 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2678 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
2679 nff2=MEDFileIntField1TS.New()
2680 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2681 nff2.setFieldProfile(nf2,mm1,0,npfl)
2682 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2683 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2684 self.assertTrue(b.isEqual(npfl))
2685 self.assertTrue(a.isEqual(narr2))
2687 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2688 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2689 self.assertTrue(b.isEqual(npfl))
2690 self.assertTrue(a.isEqual(narr2))
2692 nf3=MEDCouplingFieldDouble(ON_NODES)
2693 nf3.setName("VectorFieldOnNodesDouble")
2694 nf3.setTime(29.,30,-21)
2695 nf3.setMesh(f1.getMesh())
2696 nf3.setArray(f1.getMesh().getCoords())
2697 nff3=MEDFileField1TS.New()
2698 nff3.setFieldNoProfileSBT(nf3)
2700 fs=MEDFileFields(fname)
2701 self.assertEqual(len(fs),4)
2702 ffs=[it for it in fs]
2703 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2704 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2705 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2706 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2708 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray()))
2709 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray()))
2710 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2711 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2712 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2714 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2715 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2716 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2717 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2718 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2719 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2720 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2721 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2723 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2724 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2725 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2726 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2729 def testMEDFileFields1(self):
2730 fname="Pyfile64.med"
2731 f1=MEDCouplingFieldDouble(ON_NODES)
2732 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2733 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2734 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2736 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=list(range(12)) ; arr[:,1]=2*arr[:,0]
2738 f1.setName("Field1")
2739 ff1=MEDFileField1TS.New()
2740 ff1.setFieldNoProfileSBT(f1)
2741 self.assertEqual(ff1.getDtUnit(),"us")
2743 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2744 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2746 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2747 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2748 ff1s.setName("Field2")
2750 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2751 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2752 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2753 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2754 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2755 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2756 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2757 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2760 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2761 def testMEDFileFields2(self):
2762 fname="Pyfile65.med"
2763 # to check that all is initialize
2764 MEDFileField1TS().__str__()
2765 MEDFileFieldMultiTS().__str__()
2766 # building a mesh containing 4 tri3 + 5 quad4
2767 tri=MEDCouplingUMesh("tri",2)
2768 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2769 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2770 tris = [tri.deepCopy() for i in range(4)]
2771 for i,elt in enumerate(tris): elt.translate([i,0])
2772 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2773 quad=MEDCouplingUMesh("quad",2)
2774 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2775 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2776 quads = [quad.deepCopy() for i in range(5)]
2777 for i,elt in enumerate(quads): elt.translate([5+i,0])
2778 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2779 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2780 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2782 fmts0_0=MEDFileFieldMultiTS()
2783 fmts0_1=MEDFileFieldMultiTS()
2786 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2787 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2788 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2789 f.setTime(float(i+1)+0.1,i+1,-i-1)
2790 fmts0_0.appendFieldNoProfileSBT(f)
2791 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2792 self.assertEqual(fmts0_1.getName(),name1)
2793 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2794 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2796 # components names have been modified to generate errors
2797 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2798 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2799 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2800 f1ts.setInfo(['aa [bb]','eee [dd]'])
2801 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2803 # add a mismatch of nb of compos
2805 fmts0_2=fmts0_0.deepCopy()
2806 fmts0_3=fmts0_0.deepCopy()
2807 fmts0_4=fmts0_0.deepCopy()
2808 fmts0_5=fmts0_0.shallowCpy()
2809 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)
2811 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2812 del fmts0_3[[1.1,(6,-6),9]]
2813 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2814 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2815 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2816 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2817 fmts0_7=fmts0_4[::-3]
2818 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2819 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2822 fs0.pushField(fmts0_0)
2823 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2824 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2825 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2826 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2828 fs0=MEDFileFields(fname)
2829 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2830 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2831 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2832 del fs1[["2ndField",3]]
2833 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2834 fs2=fs0[[0,"4thField"]]
2835 self.assertTrue(isinstance(fs2,MEDFileFields))
2836 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2838 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2841 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2842 def testMEDFileFields3(self):
2843 fname="Pyfile66.med"
2844 # building a mesh containing 4 tri3 + 5 quad4
2845 tri=MEDCouplingUMesh("tri",2)
2846 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2847 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2848 tris = [tri.deepCopy() for i in range(4)]
2849 for i,elt in enumerate(tris): elt.translate([i,0])
2850 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2851 quad=MEDCouplingUMesh("quad",2)
2852 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2853 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2854 quads = [quad.deepCopy() for i in range(5)]
2855 for i,elt in enumerate(quads): elt.translate([5+i,0])
2856 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2857 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2858 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2860 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2862 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2863 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2864 fmts0_0=MEDFileFieldMultiTS()
2865 fmts0_1=MEDFileFieldMultiTS()
2868 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2869 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2870 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2871 f.setTime(float(i+1)+0.1,i+1,-i-1)
2872 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2873 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2874 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2875 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2878 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2879 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2880 fmts0_0.zipPflsNames()
2881 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2882 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2883 fmts0_2=fmts0_0.deepCopy()
2884 fmts0_3=fmts0_0.deepCopy()
2885 fmts0_4=fmts0_0.deepCopy()
2887 fs0.pushField(fmts0_0)
2888 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2889 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2890 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2891 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2893 fmts0_5=MEDFileFieldMultiTS()
2895 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2896 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2897 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2898 f.setTime(float(i+1)+0.1,i+1,-i-1)
2899 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2901 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2902 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2903 fs0.checkGlobsCoherency()
2907 def testSplitComponents1(self):
2908 fname="Pyfile67.med"
2909 # building a mesh containing 4 tri3 + 5 quad4
2910 tri=MEDCouplingUMesh("tri",2)
2911 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2912 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2913 tris = [tri.deepCopy() for i in range(4)]
2914 for i,elt in enumerate(tris): elt.translate([i,0])
2915 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2916 quad=MEDCouplingUMesh("quad",2)
2917 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2918 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2919 quads = [quad.deepCopy() for i in range(5)]
2920 for i,elt in enumerate(quads): elt.translate([5+i,0])
2921 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2922 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2923 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2925 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2927 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2928 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2930 fmts0_1=MEDFileFieldMultiTS()
2932 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2935 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2936 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2937 f.setTime(float(i+1)+0.1,i+1,-i-1)
2938 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2939 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2941 fs.pushField(fmts0_1)
2942 self.assertEqual(1,len(fs))
2943 l=fmts0_1.splitComponents()
2944 self.assertEqual(3,len(l))
2945 for elt in l: self.assertEqual(10,len(elt))
2946 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2948 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2951 self.assertEqual(4,len(fs))
2952 for elt in fs: self.assertEqual(10,len(elt))
2953 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2954 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2956 fs.write(fname,0) ; del fs
2958 fs1=MEDFileFields(fname)
2959 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2960 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2961 self.assertEqual(4,len(fs1))
2963 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2964 f1ts=fs1[fieldName][i]
2965 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2966 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2967 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2969 f1ts=fs1["1stField"][i]
2970 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2971 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2972 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2976 def testMEDFileFieldConvertTo1(self):
2977 fname="Pyfile68.med"
2978 # building a mesh containing 4 tri3 + 5 quad4
2979 tri=MEDCouplingUMesh("tri",2)
2980 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2981 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2982 tris = [tri.deepCopy() for i in range(4)]
2983 for i,elt in enumerate(tris): elt.translate([i,0])
2984 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2985 quad=MEDCouplingUMesh("quad",2)
2986 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2987 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2988 quads = [quad.deepCopy() for i in range(5)]
2989 for i,elt in enumerate(quads): elt.translate([5+i,0])
2990 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2991 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2992 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2993 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2995 ff0=MEDFileField1TS()
2996 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")
2997 f0.checkConsistencyLight()
2998 ff0.setFieldNoProfileSBT(f0)
3000 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
3001 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3003 ff0i=ff0.convertToInt()
3004 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
3005 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
3007 ff1=ff0i.convertToDouble()
3008 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3009 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
3011 del arr,f0,ff0,ff1,ff0i,fspExp
3012 ff0=MEDFileField1TS()
3013 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")
3014 f0.checkConsistencyLight()
3015 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
3016 ff0.setFieldProfile(f0,mm,0,pfl)
3017 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
3018 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3020 ff0i=ff0.convertToInt()
3021 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
3022 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
3023 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
3025 ff1=ff0i.convertToDouble()
3026 self.assertTrue(isinstance(ff1,MEDFileField1TS))
3027 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3028 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
3030 ff0=MEDFileFieldMultiTS()
3031 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)
3032 f0.checkConsistencyLight()
3033 ff0.appendFieldProfile(f0,mm,0,pfl)
3034 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)
3035 f0.checkConsistencyLight()
3036 ff0.appendFieldProfile(f0,mm,0,pfl)
3037 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)
3038 f0.checkConsistencyLight()
3039 ff0.appendFieldProfile(f0,mm,0,pfl)
3040 ff1=ff0.convertToInt()
3041 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3042 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3043 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3044 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3045 arr=ff1.getUndergroundDataArray(dt,it)
3046 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3048 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3053 ff1=ff1.convertToDouble()
3054 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
3055 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3056 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3057 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3058 arr=ff1.getUndergroundDataArray(dt,it)
3059 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
3061 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3063 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
3064 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3065 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3066 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3067 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
3068 arr=ff1.getUndergroundDataArray(dt,it)
3069 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3071 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
3074 def testMEDFileFieldPartialLoading(self):
3075 fname="Pyfile69.med"
3077 a=DataArrayInt() ; aa=a.getHeapMemorySize()
3079 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
3080 # building a mesh containing 30 tri3 + 40 quad4
3081 tri=MEDCouplingUMesh("tri",2)
3082 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3083 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3084 tris = [tri.deepCopy() for i in range(30)]
3085 for i,elt in enumerate(tris): elt.translate([i,0])
3086 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3087 quad=MEDCouplingUMesh("quad",2)
3088 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3089 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3090 quads = [quad.deepCopy() for i in range(40)]
3091 for i,elt in enumerate(quads): elt.translate([40+i,0])
3092 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3093 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3094 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3095 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3097 ff0=MEDFileField1TS()
3098 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")
3099 f0.checkConsistencyLight()
3100 ff0.setFieldNoProfileSBT(f0)
3103 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
3104 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3106 ff0=MEDFileField1TS()
3107 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")
3108 f0.checkConsistencyLight()
3109 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
3110 ff0.setFieldProfile(f0,mm,0,pfl)
3111 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
3112 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3115 ff0=MEDFileField1TS(fname,False)
3116 self.assertEqual(ff0.getName(),"FieldCell")
3117 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
3118 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
3119 heap_memory_ref=ff0.getHeapMemorySize()
3120 self.assertIn(heap_memory_ref, list(range(182, 540 + 2 * strMulFac)))
3122 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
3123 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3124 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
3126 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
3127 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
3128 heap_memory_ref=ff0.getHeapMemorySize()
3129 self.assertIn(heap_memory_ref, list(range(350, 600 + 6 * strMulFac)))
3131 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
3132 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3133 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3135 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3136 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3137 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3138 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3140 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3141 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3142 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3143 ff0.loadArraysIfNecessary() ##
3144 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
3145 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3146 heap_memory_ref=ff0.getHeapMemorySize()
3147 self.assertIn(heap_memory_ref, list(range(1100, 1400 + 2 * strMulFac)))
3149 hmd=ff0.getHeapMemorySize()-heap_memory_ref
3150 self.assertEqual(hmd,-800) # -50*8*2
3152 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
3154 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
3155 heap_memory_ref=ff0.getHeapMemorySize()
3156 self.assertIn(heap_memory_ref, list(range(299, 620 + 6 * strMulFac)))
3158 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3159 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3161 fieldName="FieldCellMultiTS"
3162 ff0=MEDFileFieldMultiTS()
3164 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)
3165 f0.setTime(float(t)+0.1,t,100+t)
3166 f0.checkConsistencyLight()
3167 ff0.appendFieldNoProfileSBT(f0)
3171 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
3172 heap_memory_ref=ff0.getHeapMemorySize()
3173 self.assertIn(heap_memory_ref, list(range(5536, 9212 + (80 + 26 + 1) * strMulFac)))
3175 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
3178 ffs=MEDFileFields(fname,False)
3179 heap_memory_ref=ffs.getHeapMemorySize()
3180 self.assertIn(heap_memory_ref, list(range(5335, 10031 + (80 + 50 + len(ffs)) * strMulFac)))
3182 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
3185 def testMEDFileMeshReadSelector1(self):
3186 mrs=MEDFileMeshReadSelector()
3187 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3188 mrs.__str__() ; mrs.__repr__()
3190 mrs=MEDFileMeshReadSelector(0)
3191 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())
3192 mrs=MEDFileMeshReadSelector(1)
3193 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3194 mrs=MEDFileMeshReadSelector(2)
3195 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3196 mrs=MEDFileMeshReadSelector(3)
3197 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3198 mrs=MEDFileMeshReadSelector(4)
3199 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3200 mrs=MEDFileMeshReadSelector(5)
3201 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3202 mrs=MEDFileMeshReadSelector(6)
3203 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3204 mrs=MEDFileMeshReadSelector(7)
3205 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3206 mrs=MEDFileMeshReadSelector(8)
3207 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3208 mrs=MEDFileMeshReadSelector(9)
3209 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3210 mrs=MEDFileMeshReadSelector(10)
3211 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3212 mrs=MEDFileMeshReadSelector(11)
3213 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3214 mrs=MEDFileMeshReadSelector(12)
3215 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3216 mrs=MEDFileMeshReadSelector(13)
3217 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3218 mrs=MEDFileMeshReadSelector(14)
3219 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3220 mrs=MEDFileMeshReadSelector(15)
3221 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3222 mrs=MEDFileMeshReadSelector(16)
3223 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3224 mrs=MEDFileMeshReadSelector(17)
3225 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3226 mrs=MEDFileMeshReadSelector(18)
3227 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3228 mrs=MEDFileMeshReadSelector(19)
3229 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3230 mrs=MEDFileMeshReadSelector(20)
3231 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3232 mrs=MEDFileMeshReadSelector(21)
3233 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3234 mrs=MEDFileMeshReadSelector(22)
3235 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3236 mrs=MEDFileMeshReadSelector(23)
3237 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3238 mrs=MEDFileMeshReadSelector(24)
3239 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3240 mrs=MEDFileMeshReadSelector(25)
3241 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3242 mrs=MEDFileMeshReadSelector(26)
3243 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3244 mrs=MEDFileMeshReadSelector(27)
3245 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3246 mrs=MEDFileMeshReadSelector(28)
3247 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3248 mrs=MEDFileMeshReadSelector(29)
3249 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3250 mrs=MEDFileMeshReadSelector(30)
3251 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3252 mrs=MEDFileMeshReadSelector(31)
3253 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3254 mrs=MEDFileMeshReadSelector(32)
3255 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3256 mrs=MEDFileMeshReadSelector(33)
3257 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3258 mrs=MEDFileMeshReadSelector(34)
3259 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3260 mrs=MEDFileMeshReadSelector(35)
3261 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3262 mrs=MEDFileMeshReadSelector(36)
3263 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3264 mrs=MEDFileMeshReadSelector(37)
3265 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3266 mrs=MEDFileMeshReadSelector(38)
3267 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3268 mrs=MEDFileMeshReadSelector(39)
3269 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3270 mrs=MEDFileMeshReadSelector(40)
3271 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3272 mrs=MEDFileMeshReadSelector(41)
3273 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3274 mrs=MEDFileMeshReadSelector(42)
3275 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3276 mrs=MEDFileMeshReadSelector(43)
3277 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3278 mrs=MEDFileMeshReadSelector(44)
3279 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3280 mrs=MEDFileMeshReadSelector(45)
3281 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3282 mrs=MEDFileMeshReadSelector(46)
3283 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3284 mrs=MEDFileMeshReadSelector(47)
3285 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3286 mrs=MEDFileMeshReadSelector(48)
3287 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3288 mrs=MEDFileMeshReadSelector(49)
3289 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3290 mrs=MEDFileMeshReadSelector(50)
3291 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3292 mrs=MEDFileMeshReadSelector(51)
3293 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3294 mrs=MEDFileMeshReadSelector(52)
3295 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3296 mrs=MEDFileMeshReadSelector(53)
3297 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3298 mrs=MEDFileMeshReadSelector(54)
3299 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3300 mrs=MEDFileMeshReadSelector(55)
3301 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3302 mrs=MEDFileMeshReadSelector(56)
3303 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3304 mrs=MEDFileMeshReadSelector(57)
3305 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3306 mrs=MEDFileMeshReadSelector(58)
3307 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3308 mrs=MEDFileMeshReadSelector(59)
3309 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3310 mrs=MEDFileMeshReadSelector(60)
3311 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3312 mrs=MEDFileMeshReadSelector(61)
3313 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3314 mrs=MEDFileMeshReadSelector(62)
3315 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3316 mrs=MEDFileMeshReadSelector(63)
3317 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3319 mrs=MEDFileMeshReadSelector(63)
3320 mrs.setCellFamilyFieldReading(False)
3321 self.assertEqual(mrs.getCode(),62)
3322 mrs.setCellFamilyFieldReading(True)
3323 self.assertEqual(mrs.getCode(),63)
3324 mrs.setNodeFamilyFieldReading(False)
3325 self.assertEqual(mrs.getCode(),61)
3326 mrs.setNodeFamilyFieldReading(True)
3327 self.assertEqual(mrs.getCode(),63)
3328 mrs.setCellNameFieldReading(False)
3329 self.assertEqual(mrs.getCode(),59)
3330 mrs.setCellNameFieldReading(True)
3331 self.assertEqual(mrs.getCode(),63)
3332 mrs.setNodeNameFieldReading(False)
3333 self.assertEqual(mrs.getCode(),55)
3334 mrs.setNodeNameFieldReading(True)
3335 self.assertEqual(mrs.getCode(),63)
3336 mrs.setCellNumFieldReading(False)
3337 self.assertEqual(mrs.getCode(),47)
3338 mrs.setCellNumFieldReading(True)
3339 self.assertEqual(mrs.getCode(),63)
3340 mrs.setNodeNumFieldReading(False)
3341 self.assertEqual(mrs.getCode(),31)
3342 mrs.setNodeNumFieldReading(True)
3343 self.assertEqual(mrs.getCode(),63)
3346 def testPartialReadOfMeshes(self):
3347 fname="Pyfile70.med"
3348 # building a mesh containing 4 tri3 + 5 quad4
3349 tri=MEDCouplingUMesh("tri",2)
3350 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3351 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3352 tris = [tri.deepCopy() for i in range(4)]
3353 for i,elt in enumerate(tris): elt.translate([i,0])
3354 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3355 quad=MEDCouplingUMesh("quad",2)
3356 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3357 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3358 quads = [quad.deepCopy() for i in range(5)]
3359 for i,elt in enumerate(quads): elt.translate([5+i,0])
3360 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3361 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3362 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3363 m1=m.buildDescendingConnectivity()[0]
3364 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3366 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3367 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3368 mm.setGroupsAtLevel(0,[grp0,grp1])
3369 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3370 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3371 mm.setGroupsAtLevel(-1,[grp2,grp3])
3372 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3373 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3374 mm.setGroupsAtLevel(1,[grp4,grp5])
3375 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3376 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3377 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3381 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3382 b4_ref_heap_mem=mm.getHeapMemorySize()
3383 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3384 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3385 ref_heap_mem=mm.getHeapMemorySize()
3386 # check the gain of memory using 1GTUMesh instead of UMesh
3387 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
3389 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3390 self.assertEqual(len(mm.getGroupsNames()),0)
3391 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3392 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3393 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3394 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3395 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3396 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3397 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3398 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3399 delta1=ref_heap_mem-mm.getHeapMemorySize()
3400 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3402 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3403 self.assertEqual(len(mm.getGroupsNames()),6)
3404 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3405 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3406 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3407 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3408 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3409 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3410 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3411 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3412 delta2=ref_heap_mem-mm.getHeapMemorySize()
3413 self.assertTrue(delta2<delta1)
3414 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3416 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3417 self.assertEqual(len(mm.getGroupsNames()),6)
3418 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3419 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3420 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3421 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3422 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3423 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3424 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3425 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3426 delta3=ref_heap_mem-mm.getHeapMemorySize()
3427 self.assertTrue(delta3<delta2)
3428 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3430 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3431 self.assertEqual(len(mm.getGroupsNames()),6)
3432 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3433 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3434 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3435 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3436 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3437 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3438 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3439 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3440 delta4=ref_heap_mem-mm.getHeapMemorySize()
3441 self.assertTrue(delta4<delta3)
3442 self.assertTrue(delta4>=32*4*2)
3444 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3445 self.assertEqual(len(mm.getGroupsNames()),6)
3446 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3447 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3448 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3449 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3450 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3451 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3452 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3453 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3454 delta5=ref_heap_mem-mm.getHeapMemorySize()
3455 self.assertTrue(delta5<delta4)
3456 self.assertEqual(delta5,0)
3459 # this test checks that setFieldProfile perform a check of the array length
3460 # compared to the profile length. This test also checks that mesh attribute of field
3461 # is not used by setFieldProfile (because across this test mesh is equal to None)
3462 def testCheckCompatibilityPfl1(self):
3463 # building a mesh containing 4 tri3 + 5 quad4
3464 tri=MEDCouplingUMesh("tri",2)
3465 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3466 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3467 tris = [tri.deepCopy() for i in range(4)]
3468 for i,elt in enumerate(tris): elt.translate([i,0])
3469 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3470 quad=MEDCouplingUMesh("quad",2)
3471 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3472 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3473 quads = [quad.deepCopy() for i in range(5)]
3474 for i,elt in enumerate(quads): elt.translate([5+i,0])
3475 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3476 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3477 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3478 m1=m.buildDescendingConnectivity()[0]
3479 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3481 f1ts=MEDFileField1TS()
3482 f=MEDCouplingFieldDouble(ON_NODES)
3483 vals=DataArrayDouble(7) ; vals.iota(1000)
3485 f.setName("anonymous") # f has no mesh it is not a bug
3486 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3487 f1ts.setFieldProfile(f,mm,0,pfl)
3489 f1ts=MEDFileField1TS()
3490 f=MEDCouplingFieldDouble(ON_NODES)
3491 vals=DataArrayDouble(8) ; vals.iota(1000)
3493 f.setName("anonymous") # f has no mesh it is not a bug
3494 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3495 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3497 f1ts=MEDFileField1TS()
3498 f=MEDCouplingFieldDouble(ON_CELLS)
3499 vals=DataArrayDouble(7) ; vals.iota(1000)
3501 f.setName("anonymous") # f has no mesh it is not a bug
3502 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3503 f1ts.setFieldProfile(f,mm,0,pfl)
3504 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3506 f1ts=MEDFileField1TS()
3507 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3508 vals=DataArrayDouble(27) ; vals.iota(1000)
3510 f.setName("anonymous") # f has no mesh it is not a bug
3511 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3513 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])
3514 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3515 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])
3517 f1ts.setFieldProfile(f,mm,0,pfl)
3518 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3519 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3520 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3521 vals=DataArrayDouble(27) ; vals.iota(1000)
3522 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3524 f1ts=MEDFileField1TS()
3525 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3526 vals=DataArrayDouble(25) ; vals.iota(1000)
3528 f.setName("anonymous") # f has no mesh it is not a bug
3529 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3530 f1ts.setFieldProfile(f,mm,0,pfl)
3531 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3532 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3534 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3535 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3537 f1ts=MEDFileField1TS()
3538 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3539 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3541 f1ts.setFieldProfile(f,mm,0,pfl)
3544 def testWRMeshWithNoCells(self):
3545 fname="Pyfile71.med"
3546 a=DataArrayDouble(4) ; a.iota()
3547 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3548 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3550 m.setMeshAtLevel(0,m00)
3551 m.setRenumFieldArr(1,DataArrayInt(list(range(10,26))))
3552 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3556 m=MEDFileMesh.New(fname)
3557 self.assertEqual((),m.getNonEmptyLevels())
3558 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))
3559 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(list(range(10,26)))))
3560 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3563 def testWRQPolyg1(self):
3564 fname="Pyfile72.med"
3565 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3566 m.insertNextCell([0,2,1,3])
3567 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3569 ms = [m.deepCopy() for i in range(4)]
3570 for i,elt in enumerate(ms):
3571 elt.translate([float(i)*1.5,0.])
3573 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3574 m0.convertAllToPoly()
3576 ms = [m.deepCopy() for i in range(5)]
3577 for i,elt in enumerate(ms):
3578 elt.translate([float(i)*1.5,1.5])
3580 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3581 m1.convertAllToPoly()
3582 m1.convertLinearCellsToQuadratic()
3584 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3587 mm.setMeshAtLevel(0,m)
3588 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3589 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3590 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3591 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3596 mm_read=MEDFileUMesh(fname)
3597 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3598 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3599 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3600 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3602 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3604 arr0=DataArrayDouble(9) ; arr0.iota()
3605 arr1=DataArrayDouble(9) ; arr1.iota(100)
3606 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3607 f.setArray(arr) ; f.checkConsistencyLight()
3609 ff=MEDFileField1TS()
3610 ff.setFieldNoProfileSBT(f)
3613 ff_read=MEDFileField1TS(fname)
3614 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3615 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3618 def testLoadIfNecessaryOnFromScratchFields0(self):
3620 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3622 fname="Pyfile77.med"
3623 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3624 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3626 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3627 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3628 m.finishInsertingCells()
3630 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3631 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3635 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3636 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3638 f0.setName("myELNOField")
3639 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3640 f0.setArray(arrs[0])
3641 ff0.appendFieldNoProfileSBT(f0)
3644 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3645 f0.setArray(arrs[1])
3646 ff0.appendFieldNoProfileSBT(f0)
3649 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3650 f0.setArray(arrs[2])
3651 ff0.appendFieldNoProfileSBT(f0)
3654 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3655 f0.setArray(arrs[3])
3656 ff0.appendFieldNoProfileSBT(f0)
3658 for i,arr in enumerate(arrs):
3659 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3660 fs[0][i].loadArraysIfNecessary()
3661 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3663 fs.loadArraysIfNecessary()
3664 for i,arr in enumerate(arrs):
3665 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3667 fs[0].loadArraysIfNecessary()
3668 for i,arr in enumerate(arrs):
3669 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3673 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3674 """ 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.
3676 fname="Pyfile78.med"
3677 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)
3678 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3679 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3681 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
3682 m0.insertNextCell(NORM_TETRA4,elt)
3684 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
3685 m0.insertNextCell(NORM_PYRA5,elt)
3687 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
3688 m0.insertNextCell(NORM_PENTA6,elt)
3690 m0.checkConsistency()
3691 m1=MEDCouplingUMesh(); m1.setName("mesh")
3692 m1.setMeshDimension(2);
3693 m1.allocateCells(5);
3694 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3695 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3696 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3697 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3698 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3699 m1.setCoords(coords);
3700 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3702 m3.insertNextCell(NORM_POINT1,[2])
3703 m3.insertNextCell(NORM_POINT1,[3])
3704 m3.insertNextCell(NORM_POINT1,[4])
3705 m3.insertNextCell(NORM_POINT1,[5])
3708 mm.setMeshAtLevel(0,m0)
3709 mm.setMeshAtLevel(-1,m1)
3710 mm.setMeshAtLevel(-3,m3)
3712 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3713 mm=MEDFileMesh.New(fname)
3715 fmts=MEDFileFieldMultiTS()
3716 f1ts=MEDFileField1TS()
3717 for lev in mm.getNonEmptyLevels():
3718 for gt in mm.getGeoTypesAtLevel(lev):
3719 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3720 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3721 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3722 f.setArray(arr) ; f.setName("f0")
3723 f1ts.setFieldNoProfileSBT(f)
3726 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3727 for lev in [0,-1,-3]:
3728 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3730 fmts.pushBackTimeStep(f1ts)
3734 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3735 fs=MEDFileFields(fname)
3736 self.assertEqual(len(fs),1)
3737 self.assertEqual(len(fs[0]),1)
3739 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),'','')])])
3740 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))
3743 def testMEDFileUMeshSetName(self):
3744 """ 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.
3745 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3747 fname="Pyfile79.med"
3748 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3750 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3751 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)
3752 m0.allocateCells(5);
3753 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3754 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3755 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3756 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3757 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3758 m0.setCoords(coords);
3759 mm.setMeshAtLevel(0,m0)
3760 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3762 m2.insertNextCell(NORM_POINT1,[2])
3763 m2.insertNextCell(NORM_POINT1,[3])
3764 m2.insertNextCell(NORM_POINT1,[4])
3765 m2.insertNextCell(NORM_POINT1,[5])
3766 mm.setMeshAtLevel(-2,m2)
3767 self.assertEqual(mm.getName(),"")
3768 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3769 mm.forceComputationOfParts()
3770 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3772 self.assertEqual(mm.getName(),"abc")
3773 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3774 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3775 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3776 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
3779 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
3780 fileName="Pyfile80.med"
3781 m=MEDCouplingCMesh() ; m.setName("cmesh")
3782 arr=DataArrayDouble(6) ; arr.iota()
3783 m.setCoords(arr,arr)
3784 nbCells=m.getNumberOfCells()
3785 self.assertEqual(25,nbCells)
3786 f=MEDCouplingFieldDouble(ON_CELLS)
3787 f.setName("FieldOnCell") ; f.setMesh(m)
3788 arr=DataArrayDouble(nbCells) ; arr.iota()
3792 fmts=MEDFileFieldMultiTS()
3794 for i in range(nbCells):
3795 t=(float(i)+0.1,i+1,-i-2)
3797 arr2=DataArrayDouble(nbCells)
3798 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
3801 f1ts=MEDFileField1TS()
3802 f1ts.setFieldNoProfileSBT(f)
3803 fmts.pushBackTimeStep(f1ts)
3805 fmts.unloadArraysWithoutDataLoss()
3806 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))
3807 fs=MEDFileFields() ; fs.pushField(fmts)
3808 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))
3809 fs.unloadArraysWithoutDataLoss()
3810 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))
3812 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))
3813 f1ts.unloadArraysWithoutDataLoss()
3814 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))
3815 mm.write(fileName,2)
3816 fs.write(fileName,0)
3817 del m,fmts,mm,f,f1ts
3819 mm=MEDFileMesh.New(fileName)
3820 fmts=MEDFileFieldMultiTS(fileName)
3821 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))
3822 fmts.unloadArraysWithoutDataLoss()
3823 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
3824 fmts.loadArraysIfNecessary()
3825 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))
3827 fs=MEDFileFields(fileName)
3828 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))
3829 fs.unloadArraysWithoutDataLoss()
3830 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
3831 fs.loadArraysIfNecessary()
3832 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))
3834 f1ts=MEDFileField1TS(fileName)
3835 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))
3836 f1ts.unloadArraysWithoutDataLoss()
3837 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
3838 f1ts.loadArraysIfNecessary()
3839 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))
3842 def testMEDFileUMeshLoadPart1(self):
3843 """ 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
3844 memory of the returned instance.
3846 fileName="Pyfile81.med"
3847 arr=DataArrayDouble(6) ; arr.iota()
3848 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3849 m=m.buildUnstructured()
3851 m.changeSpaceDimension(3,0.)
3852 infos=["aa [b]","cc [de]","gg [klm]"]
3853 m.getCoords().setInfoOnComponents(infos)
3854 m.checkConsistency()
3856 mm.setMeshAtLevel(0,m)
3857 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
3858 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
3859 mm.setMeshAtLevel(-1,m1)
3860 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])
3861 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])
3862 namesCellL0=DataArrayAsciiChar(25,16)
3863 namesCellL0[:] = ["Cell#%.3d " % (i) for i in range(25)]
3864 renumM1=DataArrayInt([3,4,0,2,1])
3865 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
3866 mm.setRenumFieldArr(0,renum0)
3867 mm.setFamilyFieldArr(0,famField0)
3868 mm.setNameFieldAtLevel(0,namesCellL0)
3869 mm.setRenumFieldArr(-1,renumM1)
3870 mm.setFamilyFieldArr(-1,famFieldM1)
3871 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])
3872 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])
3873 namesNodes=DataArrayAsciiChar(36,16)
3874 namesNodes[:] = ["Node#%.3d " % (i) for i in range(36)]
3875 mm.setRenumFieldArr(1,renum1)
3876 mm.setFamilyFieldArr(1,famField1)
3877 mm.setNameFieldAtLevel(1,namesNodes)
3878 mm.setFamilyId("Fam7",77)
3879 mm.setFamilyId("Fam8",88)
3880 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
3881 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
3882 mm.write(fileName,2)
3884 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
3885 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
3886 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])))
3887 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)
3888 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
3889 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
3890 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
3891 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
3892 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3893 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3894 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3896 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
3897 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
3898 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])))
3899 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)
3900 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
3901 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
3902 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
3903 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
3904 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
3905 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
3906 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
3908 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
3909 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
3910 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
3911 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
3912 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
3913 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
3914 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
3915 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
3916 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])))
3917 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
3918 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)
3919 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
3920 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3921 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3922 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3925 def testMEDFileFieldsLoadPart1(self):
3926 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
3928 fileName="Pyfile82.med"
3930 compos=["aa [kg]","bbb [m/s]"]
3931 arr=DataArrayDouble(6) ; arr.iota()
3932 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3933 m=m.buildUnstructured()
3935 m.changeSpaceDimension(3,0.)
3936 infos=["aa [b]","cc [de]","gg [klm]"]
3937 m.getCoords().setInfoOnComponents(infos)
3938 m.checkConsistency()
3939 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3941 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3942 arr[:,0]=list(range(25))
3943 arr[:,1]=list(range(100,125))
3945 WriteField(fileName,f,True)
3946 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3947 f.setName("FieldNode")
3948 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3949 arr[:,0]=list(range(200,236))
3950 arr[:,1]=list(range(300,336))
3952 f.checkConsistencyLight()
3953 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3956 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
3958 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3959 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
3962 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
3964 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3966 fs[0][0].loadArrays()
3967 arr = DataArrayDouble(12, 2) ; arr[:, 0] = list(range(3, 15)) ; arr[:, 1] = list(range(103, 115))
3968 arr.setInfoOnComponents(compos)
3969 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3970 fs[1][0].loadArrays()
3971 arr = DataArrayDouble(21, 2) ; arr[:, 0] = list(range(203, 224)) ; arr[:, 1] = list(range(303, 324))
3972 arr.setInfoOnComponents(compos)
3973 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3976 def testMEDFileWithoutCells1(self):
3977 fileName="Pyfile83.med"
3978 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
3979 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
3983 mm.write(fileName,2)
3985 mm=MEDFileMesh.New(fileName)
3986 self.assertEqual(mm.getName(),"mesh")
3987 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
3990 def testZipCoordsWithLoadPart1(self):
3991 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
3993 fileName="Pyfile84.med"
3995 compos=["aa [kg]","bbb [m/s]"]
3996 arr=DataArrayDouble(6) ; arr.iota()
3997 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3998 m=m.buildUnstructured()
4000 m.changeSpaceDimension(3,0.)
4001 infos=["aa [b]","cc [de]","gg [klm]"]
4002 m.getCoords().setInfoOnComponents(infos)
4003 m.checkConsistency()
4004 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
4006 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
4007 arr[:,0]=list(range(25))
4008 arr[:,1]=list(range(100,125))
4010 WriteField(fileName,f,True)
4011 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
4012 f.setName("FieldNode")
4013 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
4014 arr[:,0]=list(range(200,236))
4015 arr[:,1]=list(range(300,336))
4017 f.checkConsistencyLight()
4018 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
4021 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
4023 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4024 self.assertEqual(spd.getSlice(),slice(4,6,1))
4025 spd=mm.getPartDefAtLevel(1)
4026 self.assertEqual(spd.getSlice(),slice(4,14,1))
4027 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4028 mm.zipCoords() # <- The important line is here !
4029 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4030 self.assertEqual(spd.getSlice(),slice(4,6,1))
4031 spd=mm.getPartDefAtLevel(1)
4032 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4033 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
4034 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4035 fs[0][0].loadArrays()
4036 arr=DataArrayDouble([(4,104),(5,105)])
4037 arr.setInfoOnComponents(compos)
4038 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4039 fs[1][0].loadArrays()
4040 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
4041 arr.setInfoOnComponents(compos)
4042 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4045 def testMEDFileCMeshSetGroupsAtLevel(self):
4046 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
4048 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
4050 mm=MEDFileCMesh() ; mm.setMesh(m)
4051 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
4052 mm.setGroupsAtLevel(0,[grp])
4053 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
4056 def testMEDFileUMeshBuildExtrudedMesh1(self):
4057 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
4058 fileName="Pyfile85.med"
4061 meshName3DOut="Mesh3D"
4063 d1=DataArrayInt([0,4,20,24])
4064 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
4066 a=DataArrayDouble(6) ; a.iota()
4067 m=MEDCouplingCMesh() ; m.setCoords(a,a)
4068 m=m.buildUnstructured()
4069 d1c=d1.buildComplement(m.getNumberOfCells())
4070 m=m[d1c] ; m.zipCoords()
4071 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
4073 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
4074 m.setName(meshName2D)
4075 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
4076 e=d.deltaShiftIndex().findIdsEqual(1)
4079 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
4080 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
4081 mm.setGroupsAtLevel(0,[grp0])
4082 grp1=e ; grp1.setName("grp1")
4083 mm.setGroupsAtLevel(-1,[grp1])
4084 mm.write(fileName,2)
4086 a=DataArrayDouble(3) ; a.iota()
4087 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
4088 tmp.setName(meshName1D)
4089 tmp.changeSpaceDimension(3)
4090 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
4092 mm1D.setMeshAtLevel(0,tmp)
4093 mm1D.write(fileName,0)
4095 mm2D=MEDFileMesh.New(fileName,meshName2D)
4096 mm1D=MEDFileMesh.New(fileName,meshName1D)
4097 m1D=mm1D.getMeshAtLevel(0)
4098 mm3D=mm2D.buildExtrudedMesh(m1D,0)
4100 self.assertEqual(mm3D.getName(),mm2D.getName())
4101 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
4102 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
4103 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
4104 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
4105 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
4106 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
4107 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
4108 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
4109 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
4110 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.)])
4111 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
4112 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])
4113 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
4114 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])
4115 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
4116 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])
4117 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
4118 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])
4119 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
4120 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])
4121 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
4122 d=DataArrayInt(129) ; d.iota() ; d*=3
4123 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
4125 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
4126 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
4127 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
4128 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
4129 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])))
4130 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])))
4131 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])))
4132 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])))
4133 mm3D.setName("MeshExtruded")
4134 mm3D.write(fileName,0)
4137 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4138 def testMEDFileUMeshPickeling1(self):
4139 outFileName="Pyfile86.med"
4140 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)
4141 c.setInfoOnComponents(["aa","bbb"])
4142 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
4143 m=MEDCouplingUMesh();
4144 m.setMeshDimension(2);
4146 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
4147 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
4148 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
4149 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
4150 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
4151 m.finishInsertingCells();
4153 m.checkConsistencyLight()
4154 m1=MEDCouplingUMesh.New();
4155 m1.setMeshDimension(1);
4156 m1.allocateCells(3);
4157 m1.insertNextCell(NORM_SEG2,2,[1,4])
4158 m1.insertNextCell(NORM_SEG2,2,[3,6])
4159 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
4160 m1.finishInsertingCells();
4162 m1.checkConsistencyLight()
4163 m2=MEDCouplingUMesh.New();
4164 m2.setMeshDimension(0);
4165 m2.allocateCells(4);
4166 m2.insertNextCell(NORM_POINT1,1,[1])
4167 m2.insertNextCell(NORM_POINT1,1,[3])
4168 m2.insertNextCell(NORM_POINT1,1,[2])
4169 m2.insertNextCell(NORM_POINT1,1,[6])
4170 m2.finishInsertingCells();
4172 m2.checkConsistencyLight()
4174 mm=MEDFileUMesh.New()
4175 self.assertTrue(mm.getUnivNameWrStatus())
4176 mm.setName("MyFirstMEDCouplingMEDmesh")
4177 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
4181 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
4183 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
4184 # playing with groups
4185 g1_2=DataArrayInt.New()
4186 g1_2.setValues([1,3],2,1)
4188 g2_2=DataArrayInt.New()
4189 g2_2.setValues([1,2,3],3,1)
4191 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4192 g1_1=DataArrayInt.New()
4193 g1_1.setValues([0,1,2],3,1)
4195 g2_1=DataArrayInt.New()
4196 g2_1.setValues([0,2],2,1)
4198 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4199 g1_N=DataArrayInt.New()
4200 g1_N.setValues(list(range(8)),8,1)
4202 g2_N=DataArrayInt.New()
4203 g2_N.setValues(list(range(9)),9,1)
4205 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4206 mm.createGroupOnAll(0,"GrpOnAllCell")
4207 # check content of mm
4208 t=mm.getGroupArr(0,"G1",False)
4209 self.assertTrue(g1_2.isEqual(t));
4210 t=mm.getGroupArr(0,"G2",False)
4211 self.assertTrue(g2_2.isEqual(t));
4212 t=mm.getGroupArr(-1,"G1",False)
4213 self.assertTrue(g1_1.isEqual(t));
4214 t=mm.getGroupArr(-1,"G2",False)
4215 self.assertTrue(g2_1.isEqual(t));
4216 t=mm.getGroupArr(1,"G1",False)
4217 self.assertTrue(g1_N.isEqual(t));
4218 t=mm.getGroupArr(1,"G2",False)
4219 self.assertTrue(g2_N.isEqual(t));
4220 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4221 t=mm.getGroupArr(0,"GrpOnAllCell")
4223 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
4224 mm2=pickle.loads(st)
4225 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4226 self.assertEqual(mm.getAxisType(),AX_CART)
4228 mm.setAxisType(AX_CYL)
4229 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
4230 mm2=pickle.loads(st)
4231 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4232 self.assertEqual(mm2.getAxisType(),AX_CYL)
4235 def testMEDFileFieldsLoadSpecificEntities1(self):
4238 fileName="Pyfile87.med"
4242 m=MEDCouplingCMesh()
4243 arr=DataArrayDouble(nbNodes) ; arr.iota()
4245 m=m.buildUnstructured()
4248 fmts=MEDFileFieldMultiTS()
4249 for i in range(nbPdt):
4250 f=MEDCouplingFieldDouble(ON_NODES)
4252 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4254 f.setName(fieldName)
4255 f.setTime(float(i),i,0)
4256 fmts.appendFieldNoProfileSBT(f)
4259 mm=MEDFileUMesh() ; mm[0]=m
4260 fmts.write(fileName,2)
4261 mm.write(fileName,0)
4263 fs=MEDFileFields(fileName,False)
4264 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_NODES,NORM_ERROR)],False)
4265 fs.loadArraysIfNecessary()
4266 fs2.loadArraysIfNecessary()
4267 for i in range(nbPdt):
4268 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4270 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1])) ; m1=m1.buildUnstructured() ; m1.simplexize(0)
4271 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([3,4,5]),DataArrayDouble([0,1])) ; m2=m2.buildUnstructured()
4272 m3=MEDCouplingUMesh.MergeUMeshes(m1,m2) ; m3.setName(meshName)
4273 fmts=MEDFileFieldMultiTS()
4274 for i in range(nbPdt):
4275 f=MEDCouplingFieldDouble(ON_CELLS)
4277 arr=DataArrayDouble(8) ; arr.iota() ; arr*=i
4279 f.setName(fieldName)
4280 f.setTime(float(i),i,0)
4281 fmts.appendFieldNoProfileSBT(f)
4283 mm=MEDFileUMesh() ; mm[0]=m3
4285 self.assertEqual(mm.getNonEmptyLevels(),())
4287 self.assertEqual(mm.getNonEmptyLevels(),(0,))
4288 fmts.write(fileName,2)
4289 fs=MEDFileFields(fileName,False)
4290 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3)],False)
4291 fs3=MEDFileFieldMultiTS.LoadSpecificEntities(fileName,fieldName,[(ON_CELLS,NORM_QUAD4)],False)
4292 fs4=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3),(ON_CELLS,NORM_QUAD4)],False)
4293 fs.loadArraysIfNecessary()
4294 fs2.loadArraysIfNecessary()
4295 fs3.loadArraysIfNecessary()
4296 fs4.loadArraysIfNecessary()
4297 for i in range(nbPdt):
4298 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[:6].isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4299 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[6:8].isEqual(fs3[i].getUndergroundDataArray(),1e-12))
4300 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs4[fieldName][i].getUndergroundDataArray(),1e-12))
4304 def testMEDFileLotsOfTSRW1(self):
4307 fileName="Pyfile88.med"
4308 nbPdt=300 # <- perftest = 30000
4311 maxPdt=100 # <- optimum = 500
4312 m=MEDCouplingCMesh()
4313 arr=DataArrayDouble(nbNodes) ; arr.iota()
4315 m=m.buildUnstructured()
4318 nbOfField=nbPdt//maxPdt
4320 for j in range(nbOfField):
4321 fmts=MEDFileFieldMultiTS()
4322 s=DataArray.GetSlice(slice(0,nbPdt,1),j,nbOfField)
4323 for i in range(s.start, s.stop, s.step):
4324 f=MEDCouplingFieldDouble(ON_NODES)
4326 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4328 f.setName("%s_%d"%(fieldName,j))
4329 f.setTime(float(i),i,0)
4330 fmts.appendFieldNoProfileSBT(f)
4335 mm=MEDFileUMesh() ; mm[0]=m
4336 fs.write(fileName,2)
4337 mm.write(fileName,0)
4339 def appendInDict(d,key,val):
4346 allFields=GetAllFieldNames(fileName)
4348 pat=re.compile("([\d]+)([\s\S]+)$")
4349 for st in allFields:
4353 appendInDict(allFieldsDict,m.group(2)[::-1],m.group(1)[::-1])
4356 appendInDict(allFieldsDict,st,'')
4360 for k in allFieldsDict:
4361 if allFieldsDict[k]!=['']:
4362 allFieldsDict[k]=sorted(allFieldsDict[k],key=lambda x: int(x))
4365 for it in allFieldsDict[k]:
4366 fmts2.append(MEDFileFieldMultiTS.LoadSpecificEntities(fileName,k+it,[(ON_NODES,NORM_ERROR)]))
4371 for ii in range(nbIter):
4372 zeResu.pushBackTimeSteps(fmts2.pop())
4375 fs2.pushField(zeResu)
4377 self.assertEqual(fs2[0].getTimeSteps(), [(i, 0, float(i)) for i in range(nbPdt)])
4380 def testMEDFileMeshRearrangeFamIds1(self):
4381 """ Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies."""
4382 fileName="Pyfile89.med"
4383 meshName='Maillage_2'
4385 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)])
4387 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])
4388 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])
4389 m0=MEDCouplingUMesh(meshName,3) ; m0.setCoords(coords)
4390 m0.setConnectivity(c0,c0i)
4393 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])
4394 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])
4395 m1=MEDCouplingUMesh(meshName,2) ; m1.setCoords(coords)
4396 m1.setConnectivity(c1,c1i)
4399 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])
4400 m2=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
4401 m2.setNodalConnectivity(c2) ; m2.setCoords(coords)
4402 mm[-2]=m2.buildUnstructured()
4404 ref0=DataArrayInt(55) ; ref0[:]=0
4405 mm.setFamilyFieldArr(0,ref0)
4406 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]))
4407 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])
4408 mm.setFamilyFieldArr(-1,ref1)
4409 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])
4410 mm.setFamilyFieldArr(-2,ref2)
4412 for f,fid in (('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2)):
4413 mm.setFamilyId(f,fid)
4414 for grp,fams in [('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',))]:
4415 mm.setFamiliesOnGroup(grp,fams)
4416 mm.write(fileName,2)
4418 mm=MEDFileMesh.New(fileName)
4419 grp=mm.getGroup(-1,"Groupe_1")
4420 dai=grp.computeFetchedNodeIds()
4423 mm.rearrangeFamilies() # <- the aim of the test
4424 self.assertTrue(dai.isEqual(mm.getGroupArr(1,"TOTO")))
4425 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(ref0))
4426 self.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(ref1))
4427 self.assertTrue(mm.getFamilyFieldAtLevel(-2).isEqual(ref2))
4428 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])))
4429 allGrps=[('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',)),('TOTO',('Family_9',))]
4430 allFams=[('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2),('Family_9',9)]
4431 self.assertEqual(list(mm.getGroupsNames()),[elt[0] for elt in allGrps])
4432 for elt,fams in allGrps:
4433 self.assertEqual(mm.getFamiliesOnGroup(elt),fams)
4434 self.assertEqual(list(mm.getFamiliesNames()),[elt[0] for elt in allFams])
4435 for elt,eltId in allFams:
4436 self.assertEqual(mm.getFamilyId(elt),eltId)
4439 def testNonRegrCMeshSetFieldPfl1(self):
4440 """ Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile."""
4441 ff=MEDFileField1TS()
4444 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4448 field=MEDCouplingFieldDouble(ON_CELLS)
4450 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4451 field.setName("Field")
4452 field.checkConsistencyLight()
4453 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU") #<- false profile because defined on all cells !
4454 ff.setFieldProfile(field,mm,0,pfl) # <- bug was revealed here !
4455 self.assertEqual(ff.getPfls(),())
4456 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4457 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4458 del ff,mm,field,field2,pfl
4459 # same with unstructured mesh
4460 ff=MEDFileField1TS()
4463 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4466 m=m.buildUnstructured()
4468 field=MEDCouplingFieldDouble(ON_CELLS)
4470 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4471 field.setName("Field")
4472 field.checkConsistencyLight()
4473 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU")
4474 ff.setFieldProfile(field,mm,0,pfl)
4475 self.assertEqual(ff.getPfls(),())
4476 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4477 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4480 def testMEDFileUMeshLinearToQuadraticAndRev1(self):
4482 fileName="Pyfile90.med"
4483 fileName2="Pyfile91.med"
4484 arr=DataArrayDouble(5) ; arr.iota()
4485 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4486 m=m.buildUnstructured()
4487 d=DataArrayInt([3,7,11,15])
4490 m2=m[d.buildComplement(m.getNumberOfCells())]
4491 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
4492 m.changeSpaceDimension(3,0.)
4493 arr=DataArrayDouble(3) ; arr.iota()
4494 m1D=MEDCouplingCMesh() ; m1D.setCoords(arr) ; m1D=m1D.buildUnstructured() ; m1D.changeSpaceDimension(3,0.)
4495 m1D.setCoords(m1D.getCoords()[:,[1,2,0]])
4496 delta=m.getNumberOfNodes()*(m1D.getNumberOfNodes()-1)
4497 m3D=m.buildExtrudedMesh(m1D,0)
4498 m3D.sortCellsInMEDFileFrmt()
4499 m3D.setName(meshName)
4500 m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkConsistency()
4501 m1D=m2D.computeSkin() ; m1D.setName(meshName)
4502 m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
4505 mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D ; mm[-3]=m0D
4506 grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
4507 grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
4508 grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
4509 grpFaceNorth=DataArrayInt([6,7,17,18,19]) ; grpFaceNorth.setName("NorthFace")
4510 diagFace=DataArrayInt([0,1,13,15,17]) ; diagFace.setName("DiagFace")
4511 vol1=DataArrayInt([20,21,23,24]) ; vol1.setName("vol1")
4512 vol2=DataArrayInt([2,3,4,5,21,24]) ; vol2.setName("vol2")
4513 mm.setGroupsAtLevel(0,[vol1,vol2])
4514 mm.setGroupsAtLevel(-1,[grpFaceSouth,grpFaceNorth,diagFace])
4515 mm.setGroupsAtLevel(-2,[grpEdge0,grpEdge1])
4517 mmOut1=mm.linearToQuadratic(0,0.)
4518 mmOut1.write(fileName2,2)
4519 mmOut2=mmOut1.quadraticToLinear(0.)
4520 self.assertTrue(mm.isEqual(mmOut2,1e-12)[0])
4523 def testMEDFileMeshAddGroup1(self):
4524 m=MEDCouplingCMesh()
4525 arrX=DataArrayDouble(9) ; arrX.iota()
4526 arrY=DataArrayDouble(4) ; arrY.iota()
4527 m.setCoords(arrX,arrY)
4531 grp0=DataArrayInt([3,5,6,21,22]) ; grp0.setName("grp0")
4533 grp1=DataArrayInt([3,4,5,8,18,19,22]) ; grp1.setName("grp1")
4535 grp2=DataArrayInt([0,1,2,10,11]) ; grp2.setName("grp2")
4537 grp3=DataArrayInt([23]) ; grp3.setName("grp3")
4539 for grp in [grp0,grp1,grp2,grp3]:
4540 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4541 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2','grp3'))
4543 for grp in [grp0,grp1,grp2,grp3]:
4544 grpNode=grp.deepCopy() ; grpNode+=delta ; grpNode.setName("%s_node"%grp.getName())
4545 mm.addGroup(1,grpNode)
4546 self.assertEqual(mm.getGroupsNames(),('grp0','grp0_node','grp1','grp1_node','grp2','grp2_node','grp3','grp3_node'))
4547 for grp in [grp0,grp1,grp2,grp3]:
4548 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4549 for grp in [grp0,grp1,grp2,grp3]:
4550 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4551 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4552 mm.normalizeFamIdsMEDFile()
4553 for grp in [grp0,grp1,grp2,grp3]:
4554 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4555 for grp in [grp0,grp1,grp2,grp3]:
4556 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4557 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4560 def testMEDFileJoint1(self):
4561 fileName="Pyfile92.med"
4562 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4563 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4567 mm.setDescription("un maillage")
4568 mm.write(fileName,2)
4569 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4570 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4571 one_step_joint=MEDFileJointOneStep()
4572 one_step_joint.pushCorrespondence(cell_correspond)
4573 one_step_joint.pushCorrespondence(node_correspond)
4574 one_joint=MEDFileJoint()
4575 one_joint.pushStep(one_step_joint)
4576 one_joint.setLocalMeshName("maa1")
4577 one_joint.setRemoteMeshName("maa1")
4578 one_joint.setDescription("joint_description")
4579 one_joint.setJointName("joint_1")
4580 one_joint.setDomainNumber(1)
4581 self.assertEqual( one_joint.getLocalMeshName(), "maa1")
4582 self.assertEqual( one_joint.getRemoteMeshName(), "maa1")
4583 self.assertEqual( one_joint.getDescription(), "joint_description")
4584 self.assertEqual( one_joint.getJointName(), "joint_1")
4585 self.assertEqual( one_joint.getDomainNumber(), 1)
4586 joints=MEDFileJoints()
4587 joints.pushJoint(one_joint);
4588 joints.write(fileName,0)
4590 jointsR=MEDFileJoints(fileName,mm.getName())
4591 self.assertEqual( jointsR.getNumberOfJoints(), 1 )
4592 jR = jointsR.getJointAtPos(0)
4593 self.assertTrue( jR.isEqual( one_joint ))
4594 self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
4595 self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
4596 jointsR.destroyJointAtPos(0)
4599 def testMEDFileJoint2(self):
4600 fileNameWr="Pyfile93.med"
4601 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4602 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4606 mm.setDescription("un maillage")
4607 node_correspond=MEDFileJointCorrespondence(DataArrayInt([13,14,15,16]))
4608 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([17,18]),NORM_TETRA4,NORM_PENTA6)
4609 one_step_joint=MEDFileJointOneStep()
4610 two_step_joint=MEDFileJointOneStep()
4611 one_joint=MEDFileJoint()
4612 two_joint=MEDFileJoint()
4613 one_step_joint.pushCorrespondence(node_correspond)
4614 one_joint.pushStep(one_step_joint)
4615 two_step_joint.pushCorrespondence(cell_correspond)
4616 two_step_joint.pushCorrespondence(node_correspond)
4617 two_joint.pushStep(two_step_joint)
4618 one_joint.setLocalMeshName("maa1")
4619 one_joint.setRemoteMeshName("maa1")
4620 one_joint.setDescription("joint_description_1")
4621 one_joint.setJointName("joint_1")
4622 one_joint.setDomainNumber(1)
4623 two_joint.setLocalMeshName("maa1")
4624 two_joint.setRemoteMeshName("maa1")
4625 two_joint.setDescription("joint_description_2")
4626 two_joint.setJointName("joint_2")
4627 two_joint.setDomainNumber(2)
4628 joints=MEDFileJoints()
4629 joints.pushJoint(one_joint)
4630 joints.pushJoint(two_joint)
4631 mm.setJoints( joints )
4632 mm.write(fileNameWr,2)
4634 mm=MEDFileMesh.New(fileNameWr)
4635 self.assertEqual( mm.getNumberOfJoints(), 2)
4636 jointsR = mm.getJoints();
4637 self.assertEqual( jointsR.getMeshName(), mm.getName() )
4638 self.assertEqual( len( jointsR ), 2 )
4639 jointR1 = jointsR[0]
4640 jointR2 = jointsR[1]
4641 self.assertFalse( jointR1 is None )
4642 self.assertFalse( jointR2 is None )
4643 self.assertTrue( jointR1.isEqual( one_joint ))
4644 self.assertTrue( jointR2.isEqual( two_joint ))
4647 def testMEDFileJoint1(self):
4648 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4649 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4650 cell_correspon2=MEDFileJointCorrespondence(DataArrayInt([9,10,11]),NORM_TRI3,NORM_TRI3)
4651 cell_correspon3=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_QUAD4)
4652 joint1st_1=MEDFileJointOneStep()
4653 joint1st_1.pushCorrespondence(cell_correspond)
4654 joint1st_1.pushCorrespondence(node_correspond)
4655 joint1st_2=MEDFileJointOneStep()
4656 joint1st_2.pushCorrespondence(cell_correspond)
4657 joint1st_2.pushCorrespondence(node_correspond)
4658 joint1st_3=MEDFileJointOneStep()
4659 joint1st_3.pushCorrespondence(node_correspond)
4660 joint1st_3.pushCorrespondence(cell_correspond)
4661 joint1st_4=MEDFileJointOneStep()
4662 joint1st_4.pushCorrespondence(cell_correspond)
4663 joint1st_5=MEDFileJointOneStep()
4664 joint1st_5.pushCorrespondence(cell_correspon2)
4665 joint1st_6=MEDFileJointOneStep()
4666 joint1st_6.pushCorrespondence(cell_correspon3)
4667 self.assertTrue( joint1st_1.isEqual( joint1st_2 ))
4668 self.assertTrue( joint1st_1.isEqual( joint1st_3 ))
4669 self.assertFalse( joint1st_1.isEqual( joint1st_4 ))
4670 self.assertFalse( joint1st_4.isEqual( joint1st_5 ))
4671 self.assertFalse( joint1st_4.isEqual( joint1st_6 ))
4672 one_joint=MEDFileJoint()
4673 one_joint.pushStep(joint1st_1)
4674 one_joint.setLocalMeshName("maa1")
4675 one_joint.setRemoteMeshName("maa2")
4676 one_joint.setDescription("joint_description")
4677 one_joint.setJointName("joint_1")
4678 one_joint.setDomainNumber(1)
4679 self.assertEqual( "maa1", one_joint.getLocalMeshName())
4680 self.assertEqual( "maa2", one_joint.getRemoteMeshName())
4681 self.assertEqual( "joint_description", one_joint.getDescription())
4682 self.assertEqual( 1, one_joint.getDomainNumber())
4683 self.assertEqual( "joint_1", one_joint.getJointName())
4686 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
4687 def testMEDFileSafeCall0(self):
4688 """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
4689 fname="Pyfile94.med"
4690 errfname="Pyfile94.err"
4693 # first clean file if needed
4694 if os.path.exists(fname):
4697 # second : build a file from scratch
4698 m=MEDCouplingCMesh()
4699 arr=DataArrayDouble(11) ; arr.iota()
4700 m.setCoords(arr,arr)
4705 # third : change permissions to remove write access on created file
4706 os.chmod(fname, 0o444)
4707 # four : try to append data on file -> check that it raises Exception
4708 f=MEDCouplingFieldDouble(ON_CELLS)
4711 f.setArray(DataArrayDouble(100))
4712 f.getArray()[:]=100.
4713 f.checkConsistencyLight()
4714 f1ts=MEDFileField1TS()
4715 f1ts.setFieldNoProfileSBT(f)
4717 tmp=StdOutRedirect(errfname)
4718 self.assertRaises(InterpKernelException,f1ts.write,fname,0) # it should raise !
4721 if os.path.exists(errfname):
4726 def testUnivStatus1(self):
4727 """ Non regression test to check the effectiveness of univ write status."""
4728 fname="Pyfile95.med"
4729 arr=DataArrayDouble(10) ; arr.iota()
4730 m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh")
4731 mm=MEDFileCMesh() ; mm.setMesh(m)
4732 mm.setUnivNameWrStatus(False) # test is here
4734 mm=MEDFileCMesh(fname)
4735 self.assertEqual(mm.getUnivName(),"")
4736 mm.setUnivNameWrStatus(True)
4738 mm=MEDFileCMesh(fname)
4739 self.assertTrue(mm.getUnivName()!="")
4742 def testEmptyMesh(self):
4743 """ MEDLoader should be able to consistently write and read an empty mesh (coords array
4745 fname = "Pyfile96.med"
4746 m = MEDCouplingUMesh('toto', 2)
4747 m.setCoords(DataArrayDouble([], 0, 2))
4748 m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
4749 mfu = MEDFileUMesh()
4750 mfu.setMeshAtLevel(0, m)
4752 mfu2 = MEDFileUMesh(fname)
4753 self.assertEqual('toto', mfu2.getName())
4754 lvl = mfu2.getNonEmptyLevels()
4755 self.assertEqual((), lvl)
4757 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4758 def testMEDFileUMeshPickeling2(self):
4759 """ Check that pickalization can be performed on a unpickalized instance. Non regression test."""
4765 arr=DataArrayDouble(nbOfNodesPerAxis) ; arr.iota() ; arr/=(nbOfNodesPerAxis-1) ; arr*=hauteur
4766 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured() ; m.setName(name)
4767 mesh=MEDFileUMesh() ; mesh[0]=m
4768 m1=m.computeSkin() ; mesh[-1]=m1
4770 bary1=m1.computeCellCenterOfMass()[:,2]
4771 grp1=bary1.findIdsInRange(hauteur-1e-12,hauteur+1e-12) ; grp1.setName(grpName1)
4772 grp2=bary1.findIdsInRange(0.-1e-12,0.+1e-12) ; grp2.setName(grpName2)
4773 mesh.setGroupsAtLevel(-1,[grp1,grp2])
4775 st=pickle.dumps(mesh,2)
4777 st2=pickle.dumps(mm,2)
4778 mm2=pickle.loads(st2)
4779 self.assertTrue(mesh.isEqual(mm2,1e-12)[0])
4782 def testMEDFileEquivalence1(self):
4783 """ First check of equivalence implementation in MEDFileMesh"""
4784 fileName="Pyfile97.med"
4787 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)])
4788 coo.setInfoOnComponents(["X [Sans_unite]","Y [Sans_unite]","Z [Sans_unite]"])
4789 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])
4790 m1=MEDCoupling1SGTUMesh(meshName,NORM_QUAD4) ; m1.setCoords(coo) ; m1.setNodalConnectivity(connQ4) ; mm[-1]=m1
4791 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])
4792 m0=MEDCoupling1SGTUMesh(meshName,NORM_HEXA8) ; m0.setCoords(coo) ; m0.setNodalConnectivity(connH8) ; mm[0]=m0
4793 mm.getFamilyFieldAtLevel(-1)[:]=-2
4794 mm.getFamilyFieldAtLevel(0)[:]=0
4795 mm.addFamily("HOMARD________-1",-1)
4796 mm.addFamily("HOMARD________-2",-2)
4797 mm.addFamily("HOMARD________-3",-3)
4798 mm.setFamiliesIdsOnGroup("HOMARD",[-1,-2,-3])
4800 eqName="MAILLES_A_RECOLLER_APRES_HOMARD"
4801 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."
4802 mm.initializeEquivalences()
4803 eqs=mm.getEquivalences()
4804 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4805 eq0.setDescription(descEq)
4806 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)])
4807 eq0.setArray(-1,corr)
4808 self.assertEqual(eq0.getCell().size(),1)
4809 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4810 eq0.getCell().clear()
4811 self.assertEqual(eq0.getCell().size(),0)
4812 eq0.getCell().setArrayForType(NORM_QUAD4,corr)
4813 self.assertEqual(eq0.getCell().size(),1)
4814 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4815 mm.killEquivalences()
4816 mm.initializeEquivalences()
4817 eqs=mm.getEquivalences()
4818 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4819 eq0.setDescription(descEq)
4821 c.setArrayForType(NORM_QUAD4,corr)
4822 self.assertEqual(eq0.getCell().size(),1)
4823 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4825 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4826 self.assertEqual(mm2.getEquivalences().size(),1)
4827 self.assertTrue(mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4).isEqual(corr))
4828 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=2
4829 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
4830 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=0
4831 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4832 mm.write(fileName,2)
4834 mm3=MEDFileMesh.New(fileName)
4835 self.assertTrue(mm.isEqual(mm3,1e-12)[0])
4838 def testMEDFileForFamiliesPlayer1(self):
4839 """Non regression bug EDF11911. For serial killers using same family name to store both cells and nodes ! Only sky is the limit."""
4840 fileName="Pyfile98.med"
4842 magicSt="%s%%04i"%(MEDFileMesh.GetMagicFamilyStr())
4843 arr=DataArrayDouble(4) ; arr.iota()
4844 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4845 m=m.buildUnstructured()
4848 mm.setName(meshName)
4849 mm.setFamilyId("FAMILLE_ZERO",0)
4850 mm.getFamilyFieldAtLevel(0)[-3:]=-4
4851 mm.setFamilyId("RIDF%s"%(magicSt%0),-4)
4852 mm.setGroupsOnFamily("RIDF%s"%(magicSt%0),["RID"])
4853 d=DataArrayInt(16) ; d[:]=0 ; d[[1,2,4,5]]=3
4854 mm.setFamilyFieldArr(1,d)
4855 mm.setFamilyId("RIDF%s"%(magicSt%1),3)
4856 mm.setGroupsOnFamily("RIDF%s"%(magicSt%1),["RID"])
4857 self.assertEqual(mm.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4858 self.assertEqual(mm.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF")) # <- the aim of test is here !
4859 self.assertEqual(mm.getFamiliesIdsOnGroup("RID"),(-4,3))
4860 mm.write(fileName,2)
4861 # now read such funny file !
4862 mm2=MEDFileMesh.New(fileName) # <- normaly mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
4863 self.assertTrue(mm.isEqual(mm2,1e-16))
4864 self.assertEqual(mm2.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4865 self.assertEqual(mm2.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF"))
4866 self.assertEqual(mm2.getFamiliesIdsOnGroup("RID"),(-4,3))# <- very important too !
4869 def testCartesianizer1(self):
4870 """ This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. """
4872 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4873 mm=MEDFileUMesh() ; mm[0]=m ; mm.forceComputationOfParts()
4874 d0=DataArrayInt(16) ; d0[:]=0
4875 d1=DataArrayInt(9) ; d1[:]=0
4876 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4877 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4878 ref0=mm.getCoords().getHiddenCppPointer()
4879 ref1=mm[0].getNodalConnectivity().getHiddenCppPointer()
4880 self.assertEqual(ref0,mm[0].getCoords().getHiddenCppPointer())
4881 ref2=mm[0].getNodalConnectivityIndex().getHiddenCppPointer()
4882 ref3=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer()
4883 self.assertEqual(ref0,mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4884 mm.setAxisType(AX_CYL) #<- important
4885 mm2=mm.cartesianize() # the trigger
4886 self.assertEqual(mm2.getAxisType(),AX_CART)
4887 mm.setAxisType(AX_CART) # this is here only to avoid complaints
4888 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4889 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4890 self.assertTrue(ref0==mm.getCoords().getHiddenCppPointer()) # <- here important
4891 self.assertTrue(ref0!=mm2.getCoords().getHiddenCppPointer()) # <- here important
4892 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2[0].getCoords().getHiddenCppPointer())
4893 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4894 self.assertEqual(mm2[0].getNodalConnectivity().getHiddenCppPointer(),ref1) # <- here very important
4895 self.assertEqual(mm2[0].getNodalConnectivityIndex().getHiddenCppPointer(),ref2) # <- here very important
4896 self.assertEqual(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer(),ref3) # <- here very important
4897 self.assertEqual(mm2.getName(),mm.getName())
4898 self.assertEqual(mm2.getDescription(),mm.getDescription())
4899 self.assertEqual(mm2.getTime(),mm.getTime())
4900 self.assertEqual(mm2.getTime(),mm.getTime())
4901 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4902 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4903 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4904 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4905 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4906 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4907 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4908 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4910 mm.setAxisType(AX_CART)
4911 mm2=mm.cartesianize() # the trigger
4912 self.assertEqual(mm2.getAxisType(),AX_CART)
4913 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4914 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4915 # CurveLinearMesh non cart
4916 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildCurveLinear()
4917 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4918 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4919 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4920 ref0=mm.getMesh().getCoords().getHiddenCppPointer()
4921 mm2=mm.cartesianize() # the trigger
4922 self.assertEqual(mm2.getAxisType(),AX_CART)
4923 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4924 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4925 self.assertTrue(ref0==mm.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4926 self.assertTrue(ref0!=mm2.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4927 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4928 self.assertEqual(mm2.getName(),mm.getName())
4929 self.assertEqual(mm2.getDescription(),mm.getDescription())
4930 self.assertEqual(mm2.getTime(),mm.getTime())
4931 self.assertEqual(mm2.getTime(),mm.getTime())
4932 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4933 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4934 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4935 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4936 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4937 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4938 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4939 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4940 # CurveLinearMesh cart
4941 mm.setAxisType(AX_CART)
4942 mm2=mm.cartesianize() # the trigger
4943 self.assertEqual(mm2.getAxisType(),AX_CART)
4944 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4945 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4947 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4948 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4949 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4950 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4951 mm2=mm.cartesianize() # the trigger
4952 self.assertEqual(mm2.getAxisType(),AX_CART)
4953 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4954 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4955 self.assertEqual(mm2.getName(),mm.getName())
4956 self.assertEqual(mm2.getDescription(),mm.getDescription())
4957 self.assertEqual(mm2.getTime(),mm.getTime())
4958 self.assertEqual(mm2.getTime(),mm.getTime())
4959 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4960 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4961 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4962 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4963 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4964 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4965 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4966 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4968 mm.setAxisType(AX_CART)
4969 mm2=mm.cartesianize() # the trigger
4970 self.assertEqual(mm2.getAxisType(),AX_CART)
4971 self.assertTrue(isinstance(mm2,MEDFileCMesh))
4972 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4975 def testCheckCoherency(self):
4976 m2 = MEDCouplingUMesh("2d", 2)
4977 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
4978 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
4979 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
4980 mum = MEDFileUMesh()
4981 mum.setMeshAtLevel(0, m2)
4982 mum.setMeshAtLevel(-1, m1)
4983 mum.checkConsistency()
4984 mum2 = mum.deepCopy()
4987 arr = DataArrayInt([2]*4)
4988 mum.setFamilyFieldArr(1, arr); arr.reAlloc(35);
4989 self.assertRaises(InterpKernelException, mum.checkConsistency)
4990 mum=mum2; mum2=mum.deepCopy();
4991 arr = DataArrayInt([2]*4)
4992 mum.setRenumFieldArr(1, arr); arr.reAlloc(35);
4993 self.assertRaises(InterpKernelException, mum.checkConsistency)
4994 mum=mum2; mum2=mum.deepCopy();
4995 mum.setRenumFieldArr(1, DataArrayInt([2]*4))
4996 self.assertRaises(InterpKernelException, mum.checkConsistency)
4997 mum=mum2; mum2=mum.deepCopy();
4998 arr = DataArrayAsciiChar(['tutu x']*4)
4999 mum.setNameFieldAtLevel(1, arr); arr.reAlloc(35);
5000 self.assertRaises(InterpKernelException, mum.checkConsistency)
5003 mum=mum2; mum2=mum.deepCopy();
5004 arr = DataArrayInt([2]*2)
5005 mum.setFamilyFieldArr(0, arr); arr.reAlloc(35);
5006 self.assertRaises(InterpKernelException, mum.checkConsistency)
5007 mum=mum2; mum2=mum.deepCopy();
5008 arr = DataArrayInt([2]*2)
5009 mum.setRenumFieldArr(0, arr); arr.reAlloc(35);
5010 self.assertRaises(InterpKernelException, mum.checkConsistency)
5011 mum=mum2; mum2=mum.deepCopy();
5012 mum.setRenumFieldArr(0, DataArrayInt([2]*2))
5013 self.assertRaises(InterpKernelException, mum.checkConsistency)
5014 mum=mum2; mum2=mum.deepCopy();
5015 arr = DataArrayAsciiChar(['tutu x']*2)
5016 mum.setNameFieldAtLevel(0, arr); arr.reAlloc(35);
5017 self.assertRaises(InterpKernelException, mum.checkConsistency)
5020 mum=mum2; mum2=mum.deepCopy();
5021 arr = DataArrayInt([2]*5)
5022 mum.setFamilyFieldArr(-1, arr); arr.reAlloc(35);
5023 self.assertRaises(InterpKernelException, mum.checkConsistency)
5024 mum=mum2; mum2=mum.deepCopy();
5025 arr = DataArrayInt([2]*5)
5026 mum.setRenumFieldArr(-1, arr); arr.reAlloc(35);
5027 self.assertRaises(InterpKernelException, mum.checkConsistency)
5028 mum=mum2; mum2=mum.deepCopy();
5029 mum.setRenumFieldArr(-1, DataArrayInt([2]*5))
5030 self.assertRaises(InterpKernelException, mum.checkConsistency)
5031 mum=mum2; mum2=mum.deepCopy();
5032 arr = DataArrayAsciiChar(['tutu x']*5)
5033 mum.setNameFieldAtLevel(-1, arr); arr.reAlloc(35);
5034 self.assertRaises(InterpKernelException, mum.checkConsistency)
5036 def testCheckSMESHConsistency(self):
5037 m2 = MEDCouplingUMesh("2d", 2)
5038 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5039 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5040 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5041 mum = MEDFileUMesh()
5042 mum.setMeshAtLevel(0, m2)
5043 mum.setMeshAtLevel(-1, m1)
5044 mum.checkConsistency()
5045 mum.checkSMESHConsistency()
5046 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5047 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5048 mum.setRenumFieldArr(0, n2)
5049 mum.setRenumFieldArr(-1, n1)
5050 self.assertRaises(InterpKernelException, mum.checkSMESHConsistency)
5051 mum.setRenumFieldArr(-1, n1+100)
5052 mum.checkSMESHConsistency()
5055 def testClearNodeAndCellNumbers(self):
5056 m2 = MEDCouplingUMesh("2d", 2)
5057 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5058 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5059 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5060 mum = MEDFileUMesh()
5061 mum.setMeshAtLevel(0, m2)
5062 mum.setMeshAtLevel(-1, m1)
5063 mum.checkConsistency()
5064 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5065 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5066 mum.setRenumFieldArr(0, n2)
5067 mum.setRenumFieldArr(-1, n1)
5068 mum.clearNodeAndCellNumbers()
5069 mum.checkSMESHConsistency()
5072 def testCMeshSetFamilyFieldArrNull(self):
5074 fname="Pyfile99.med"
5075 arrX=DataArrayDouble([0,1,2,3])
5076 arrY=DataArrayDouble([0,1,2])
5077 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m.setName(meshName)
5078 mm=MEDFileCMesh() ; mm.setMesh(m)
5079 famCellIds=DataArrayInt([0,-2,-2,-1,-2,0])
5080 famNodeIds=DataArrayInt([0,0,0,3,4,1,2,7,2,1,0,0])
5081 mm.setFamilyFieldArr(0,famCellIds)
5082 mm.setFamilyFieldArr(1,famNodeIds)
5084 mm=MEDFileMesh.New(fname)
5085 self.assertTrue(mm.getFamilyFieldAtLevel(0) is not None)
5086 self.assertTrue(mm.getFamilyFieldAtLevel(1) is not None)
5087 mm.setFamilyFieldArr(0,None)#<- bug was here
5088 mm.setFamilyFieldArr(1,None)#<- bug was here
5089 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
5090 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
5092 self.assertTrue(mm3.getFamilyFieldAtLevel(0) is None)
5093 self.assertTrue(mm3.getFamilyFieldAtLevel(1) is None)
5095 mm2=MEDFileMesh.New(fname)
5096 self.assertTrue(mm2.getFamilyFieldAtLevel(0) is None)
5097 self.assertTrue(mm2.getFamilyFieldAtLevel(1) is None)
5100 def testAppendFieldProfileOnIntField(self):
5101 fname="Pyfile100.med"
5102 arrX=DataArrayDouble([0,1,2,3])
5103 arrY=DataArrayDouble([0,1,2])
5104 mesh=MEDCouplingCMesh() ; mesh.setCoords(arrX,arrY) ; mesh.setName("Mesh")
5108 fmts=MEDFileIntFieldMultiTS()
5110 pfl=DataArrayInt([1,3,5]) ; pfl.setName(pflName)
5111 f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(mesh)
5112 fieldName="FieldOnCell"
5113 f.setTime(1.2,1,1) ; f.setName(fieldName)
5114 arr=DataArrayInt([101,102,103]) ; f.setArray(arr)
5115 fmts.appendFieldProfile(f,mm,0,pfl)
5120 mm=MEDFileMesh.New(fname)
5121 fmts=MEDFileAnyTypeFieldMultiTS.New(fname)
5122 self.assertTrue(isinstance(fmts,MEDFileIntFieldMultiTS))
5123 self.assertEqual(fmts.getName(),fieldName)
5124 self.assertEqual(len(fmts),1)
5126 ftest,pfltest=f1ts.getFieldWithProfile(ON_CELLS,0,mm)
5127 self.assertEqual(pfltest.getName(),pflName)
5128 self.assertEqual(ftest.getName(),fieldName)
5129 self.assertTrue(ftest.isEqualWithoutConsideringStr(arr))
5130 ftest2=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
5131 self.assertTrue(ftest2.getArray().isEqualWithoutConsideringStr(arr))
5132 self.assertEqual(ftest2.getTime(),f.getTime())
5133 self.assertEqual(ftest2.getMesh().getNumberOfCells(),len(arr))
5136 def testMEDFileFieldEasyField1(self):
5137 """Check for all spatial discretization of field (cells,nodes,elno,gauss) for double field that all is OK. Here no profile and only top level is considered."""
5138 ## Basic test on cells on top level
5139 fname="Pyfile101.med"
5142 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5143 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5145 m.insertNextCell(NORM_TRI3,[0,1,2])
5146 m.insertNextCell(NORM_TRI3,[3,4,5])
5147 m.insertNextCell(NORM_TRI3,[6,7,8])
5148 m.insertNextCell(NORM_TRI3,[9,10,11])
5149 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5150 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5153 arr0=DataArrayDouble([10,11,12,13,100,101])
5154 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5155 f.setName(fieldName) ; f.setTime(2.,6,7)
5157 ff=MEDFileFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5159 arr2=arr0+1000 ; f.setArray(arr2)
5160 f.setTime(3.,8,9) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5164 mm=MEDFileMesh.New(fname)
5165 f1ts=MEDFileField1TS(fname,fieldName,6,7)
5166 ftst0=f1ts.field(mm)
5167 self.assertTrue(f0.isEqual(ftst0,1e-12,1e-12))
5168 f1ts=MEDFileField1TS(fname,fieldName,8,9)
5169 ftst1=f1ts.field(mm)
5170 self.assertTrue(f1.isEqual(ftst1,1e-12,1e-12))
5171 fmts=MEDFileFieldMultiTS(fname,fieldName)
5172 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,1e-12))
5173 ## Basic test on nodes on top level
5174 f2=MEDCouplingFieldDouble(ON_NODES) ; arr2=DataArrayDouble([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5175 f2.setName(fieldName)
5177 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5179 mm=MEDFileMesh.New(fname)
5180 f1ts=MEDFileField1TS(fname,fieldName,23,24)
5181 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,1e-12))
5182 fmts=MEDFileFieldMultiTS(fname,fieldName)
5183 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,1e-12))
5185 f3=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f3.setMesh(m) ; arr3=DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5186 f3.setName(fieldName) ; f3.checkConsistencyLight()
5187 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5189 mm=MEDFileMesh.New(fname)
5190 f1ts=MEDFileField1TS(fname,fieldName,2,3)
5191 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5193 f4=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5194 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,1.],[0.1,0.1, 0.2,0.2, 0.3,0.3, 0.4,0.4, 0.5,0.5],[0.2,0.3,0.1,0.05,0.35])
5195 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5196 arr4=DataArrayDouble([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5197 f4.checkConsistencyLight()
5198 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5200 mm=MEDFileMesh.New(fname)
5201 f1ts=MEDFileField1TS(fname,fieldName,4,5)
5202 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5205 def testMEDFileFieldEasyField2(self):
5206 """Same thantestMEDFileFieldEasyField1 except that here intfields are considered.
5207 Check for all spatial discretization of field (cells,nodes,elno,gauss) for int field that all is OK. Here no profile and only top level is considered."""
5208 ## Basic test on cells on top level
5209 fname="Pyfile102.med"
5212 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5213 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5215 m.insertNextCell(NORM_TRI3,[0,1,2])
5216 m.insertNextCell(NORM_TRI3,[3,4,5])
5217 m.insertNextCell(NORM_TRI3,[6,7,8])
5218 m.insertNextCell(NORM_TRI3,[9,10,11])
5219 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5220 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5223 arr0=DataArrayInt([10,11,12,13,100,101])
5224 f=MEDCouplingFieldInt(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5225 f.setName(fieldName) ; f.setTime(2.,6,7)
5227 ff=MEDFileIntFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5229 arr2=arr0+1000 ; f.setArray(arr2)
5230 f.setTime(3.,8,9) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f)
5234 mm=MEDFileMesh.New(fname)
5235 f1ts=MEDFileIntField1TS(fname,fieldName,6,7)
5236 ftst0=f1ts.field(mm)
5237 self.assertTrue(f0.isEqual(ftst0,1e-12,0))
5238 f1ts=MEDFileIntField1TS(fname,fieldName,8,9)
5239 ftst1=f1ts.field(mm)
5240 self.assertTrue(f1.isEqual(ftst1,1e-12,0))
5241 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5242 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,0))
5243 ## Basic test on nodes on top level
5244 f2=MEDCouplingFieldInt(ON_NODES) ; arr2=DataArrayInt([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5245 f2.setName(fieldName)
5247 ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5249 mm=MEDFileMesh.New(fname)
5250 f1ts=MEDFileIntField1TS(fname,fieldName,23,24)
5251 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,0))
5252 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5253 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,0))
5255 f3=MEDCouplingFieldInt(ON_GAUSS_NE) ; f3.setMesh(m) ; arr3=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5256 f3.setName(fieldName) ; f3.checkConsistencyLight()
5257 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5259 mm=MEDFileMesh.New(fname)
5260 f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5261 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
5263 f4=MEDCouplingFieldInt(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5264 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,1.],[0.1,0.1, 0.2,0.2, 0.3,0.3, 0.4,0.4, 0.5,0.5],[0.2,0.3,0.1,0.05,0.35])
5265 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5266 arr4=DataArrayInt([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5267 f4.checkConsistencyLight()
5268 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5270 mm=MEDFileMesh.New(fname)
5271 f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5272 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
5275 def testMEDFileFieldEasyField3(self):
5276 """Here a multi level mesh. And field on cells lying on different level of this mesh. Show how "field" method deal with that. Here on field double are considered."""
5277 fname="Pyfile103.med"
5280 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5281 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5283 m.insertNextCell(NORM_TRI3,[0,1,2])
5284 m.insertNextCell(NORM_TRI3,[3,4,5])
5285 m.insertNextCell(NORM_TRI3,[6,7,8])
5286 m.insertNextCell(NORM_TRI3,[9,10,11])
5287 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5288 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5290 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5292 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5293 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5297 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5298 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5300 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,1,2)
5301 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5302 # here f1 lying on level -1 not 0 check if "field" method detect it !
5303 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5304 f1.setMesh(mm[-1]) # -1 is very important
5306 f1.checkConsistencyLight()
5308 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5310 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,3,4)
5311 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5313 f3=MEDCouplingFieldDouble(ON_GAUSS_NE)
5314 f3.setMesh(mm[-1]) # this line is important
5315 arr3=DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5316 f3.setName(fieldName) ; f3.checkConsistencyLight()
5317 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5319 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,2,3)
5320 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5322 f4=MEDCouplingFieldDouble(ON_GAUSS_PT)
5323 f4.setMesh(mm[-1]) # this line is important
5324 f4.setName(fieldName)
5325 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,1.],[0.1,0.1, 0.2,0.2, 0.3,0.3, 0.4,0.4, 0.5,0.5],[0.2,0.3,0.1,0.05,0.35])
5326 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5327 arr4=DataArrayDouble([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5328 f4.checkConsistencyLight()
5329 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5330 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,4,5)
5331 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5334 def testMEDFileFieldEasyField4(self):
5335 """ Same than testMEDFileFieldEasyField3 but with integers"""
5336 fname="Pyfile104.med"
5339 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5340 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5342 m.insertNextCell(NORM_TRI3,[0,1,2])
5343 m.insertNextCell(NORM_TRI3,[3,4,5])
5344 m.insertNextCell(NORM_TRI3,[6,7,8])
5345 m.insertNextCell(NORM_TRI3,[9,10,11])
5346 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5347 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5349 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5351 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5352 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5356 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5357 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5359 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,1,2)
5360 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
5361 # here f1 lying on level -1 not 0 check if "field" method detect it !
5362 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5363 f1.setMesh(mm[-1]) # -1 is very important
5365 f1.checkConsistencyLight()
5367 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5369 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,3,4)
5370 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
5372 f3=MEDCouplingFieldInt(ON_GAUSS_NE)
5373 f3.setMesh(mm[-1]) # this line is important
5374 arr3=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
5375 f3.setName(fieldName) ; f3.checkConsistencyLight()
5376 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5378 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5379 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
5381 f4=MEDCouplingFieldInt(ON_GAUSS_PT)
5382 f4.setMesh(mm[-1]) # this line is important
5383 f4.setName(fieldName)
5384 f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,1.],[0.1,0.1, 0.2,0.2, 0.3,0.3, 0.4,0.4, 0.5,0.5],[0.2,0.3,0.1,0.05,0.35])
5385 f4.setGaussLocalizationOnType(NORM_QUAD4,[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.4, 0.6,0.7],[0.7,0.3]) ; f4.setTime(0.25,4,5)
5386 arr4=DataArrayInt([0,1,2,3,4 ,10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 45,46, 55,56]) ; arr4.setInfoOnComponent(0,"abc") ; f4.setArray(arr4)
5387 f4.checkConsistencyLight()
5388 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5389 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5390 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
5393 def testMEDFileFieldEasyField5(self):
5394 """More and more difficult now look at how profiles are managed by "field" method."""
5395 fname="Pyfile105.med"
5398 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5399 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5401 m.insertNextCell(NORM_TRI3,[0,1,2])
5402 m.insertNextCell(NORM_TRI3,[3,4,5])
5403 m.insertNextCell(NORM_TRI3,[6,7,8])
5404 m.insertNextCell(NORM_TRI3,[9,10,11])
5405 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5406 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5409 pfl=DataArrayInt([0,2,3,5]) ; pfl.setName("pfl")
5410 m2=m.deepCopy()[pfl] ; m2.setName(m.getName())
5412 arr0=DataArrayDouble([10,11,12,13])
5413 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m2)
5414 f.setName(fieldName) ; f.setTime(2.,6,7) ; f.checkConsistencyLight()
5415 ff=MEDFileFieldMultiTS() ; ff.appendFieldProfile(f,mm,0,pfl) # ff is a field on profile
5418 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5419 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5420 # more complicated -> multi level
5421 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5423 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5424 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5426 mm2[0]=m0 ; mm2[-1]=m
5428 ff=MEDFileField1TS() ; ff.setFieldProfile(f,mm2,-1,pfl)
5430 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5431 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5434 def testExtractPart1(self):
5435 coo=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(3,1),(4,1),(0,2),(1,2),(2,2),(3,2),(4,2)])
5437 m0=MEDCouplingUMesh(meshName,2) ; m0.setCoords(coo) ; m0.allocateCells()
5438 m0.insertNextCell(NORM_TRI3,[8,4,3])
5439 m0.insertNextCell(NORM_TRI3,[8,9,4])
5440 m0.insertNextCell(NORM_TRI3,[7,13,8])
5441 m0.insertNextCell(NORM_TRI3,[7,12,13])
5442 m0.insertNextCell(NORM_TRI3,[0,6,1])
5443 m0.insertNextCell(NORM_TRI3,[0,5,6])
5444 m0.insertNextCell(NORM_QUAD4,[1,6,7,2])
5445 m0.insertNextCell(NORM_QUAD4,[2,7,8,3])
5446 m0.insertNextCell(NORM_QUAD4,[8,13,14,9])
5447 m0.insertNextCell(NORM_QUAD4,[6,11,12,7])
5448 m0.insertNextCell(NORM_QUAD4,[5,10,11,6])
5450 m1=MEDCouplingUMesh(meshName,1) ; m1.setCoords(coo) ; m1.allocateCells()
5451 m1.insertNextCell(NORM_SEG2,[10,5])
5452 m1.insertNextCell(NORM_SEG2,[5,0])
5453 m1.insertNextCell(NORM_SEG2,[0,1])
5454 m1.insertNextCell(NORM_SEG2,[1,2])
5455 m1.insertNextCell(NORM_SEG2,[2,3])
5456 m1.insertNextCell(NORM_SEG2,[3,4])
5457 m1.insertNextCell(NORM_SEG2,[4,9])
5458 m1.insertNextCell(NORM_SEG2,[9,14])
5459 m1.insertNextCell(NORM_SEG2,[14,13])
5460 m1.insertNextCell(NORM_SEG2,[13,12])
5461 m1.insertNextCell(NORM_SEG2,[12,11])
5462 m1.insertNextCell(NORM_SEG2,[11,10])
5464 mm[0]=m0 ; mm[-1]=m1
5465 arr0=DataArrayInt([0,1,2,3,4,6,7,8,12,13])
5467 tab[0]=DataArrayInt([0,2,3,4,6,7])
5468 tab[-1]=DataArrayInt([2,3,4,5,9])
5470 self.assertTrue(mm.deduceNodeSubPartFromCellSubPart(tab).isEqual(arr0))
5474 fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5477 arr0_0=DataArrayDouble([100,101,102,103,104,105,106,107,108,109,110]) ; arr0_0.setInfoOnComponents(ic)
5478 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*t0) ; f0.setArray(arr0_0)
5479 f0.setMesh(m0) ; f0.setName(fname0)
5480 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setTime(*t0) ; f1.setArray(DataArrayDouble([200,201,202,203,204,205,206,207,208,209,210,211]))
5481 f1.setMesh(m1) ; f1.setName(fname0) ; f1.getArray().setInfoOnComponents(ic)
5482 f2=MEDCouplingFieldDouble(ON_NODES) ; f2.setTime(*t0) ; f2.setArray(DataArrayDouble([300,301,302,303,304,305,306,307,308,309,310,311,312,313,314]))
5483 f2.setMesh(m0) ; f2.setName(fname0) ; f2.getArray().setInfoOnComponents(ic)
5484 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.setFieldNoProfileSBT(f2)
5485 fmts.pushBackTimeStep(f1ts)
5487 mmOut=mm.extractPart(tab)
5489 fsPart0=fs.extractPart(tab,mm)
5490 self.assertEqual(len(fsPart0),1)
5492 self.assertEqual(len(fmtsP),1)
5494 self.assertRaises(InterpKernelException,f1ts.field,mmOut)
5496 self.assertTrue(mmOut[0].computeCellCenterOfMass().isEqual(m0[tab[0]].computeCellCenterOfMass(),1e-12))
5497 self.assertTrue(mmOut[-1].computeCellCenterOfMass().isEqual(m1[tab[-1]].computeCellCenterOfMass(),1e-12))
5499 m0Part=m0.deepCopy()[tab[0]] ; m0Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m0Part.setName(m0.getName())
5500 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5501 m1Part=m1.deepCopy()[tab[-1]] ; m1Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m1Part.setName(m0.getName())
5502 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5503 self.assertTrue(mmOut[-1].isEqual(m1Part,1e-12))
5505 f0Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mmOut) ; f0Part.checkConsistencyLight()
5506 self.assertEqual(f0Part.getTypeOfField(),ON_CELLS)
5507 self.assertTrue(f0Part.getMesh().isEqual(m0Part,1e-12))
5508 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic)
5509 self.assertTrue(f0Part.getArray().isEqual(arr0Exp,1e-12)) ; self.assertEqual(f0Part.getTime(),list(t0))
5510 f1Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,-1,mmOut) ; f1Part.checkConsistencyLight()
5511 self.assertEqual(f1Part.getTypeOfField(),ON_CELLS)
5512 self.assertTrue(f1Part.getMesh().isEqual(m1Part,1e-12))
5513 arr1Exp=DataArrayDouble([202,203,204,205,209]) ; arr1Exp.setInfoOnComponents(ic)
5514 self.assertTrue(f1Part.getArray().isEqual(arr1Exp,1e-12)) ; self.assertEqual(f1Part.getTime(),list(t0))
5516 f2Part=f1ts.getFieldOnMeshAtLevel(ON_NODES,0,mmOut) ; f2Part.checkConsistencyLight()
5517 arr2Exp=DataArrayDouble([300,301,302,303,304,306,307,308,312,313]) ; arr2Exp.setInfoOnComponents(ic)
5518 self.assertTrue(f2Part.getArray().isEqual(arr2Exp,1e-12)) ; self.assertEqual(f2Part.getTime(),list(t0))
5520 fs=MEDFileFields() ; fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5521 tss=[(16.5,3,4),(17.5,4,5),(18.5,5,6)]
5522 for i,tt in enumerate(tss):
5523 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*tt)
5524 myarr=arr0_0+i*1000.
5526 f0.setMesh(m0) ; f0.setName(fname0) ; f0.getArray().setInfoOnComponents(ic)
5527 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; fmts.pushBackTimeStep(f1ts)
5529 fsPart1=fs.extractPart(tab,mm)
5530 self.assertEqual(len(fsPart1),1)
5532 self.assertEqual(len(fmtsP),len(tss))
5533 for i,(f1tsP,tt) in enumerate(zip(fmtsP,tss)):
5534 fPart=f1tsP.field(mmOut) ; fPart.checkConsistencyLight()
5535 self.assertEqual(fPart.getTypeOfField(),ON_CELLS)
5536 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic) ; arr0Exp+=i*1000.
5537 self.assertTrue(fPart.getMesh().isEqual(m0Part,1e-12))
5538 self.assertTrue(fPart.getArray().isEqual(arr0Exp,1e-12))
5539 self.assertEqual(fPart.getTime(),list(tt))
5543 def testSymmetryPlusAggregationMFD1(self):
5544 """ Testing of MEDFileData::Aggregate and MEDFileUMesh::Aggregate and MEDFileUMesh::getAllDistributionOfType """
5545 fname1="Pyfile106_1.med"
5546 fname2="Pyfile106_2.med"
5547 fname3="Pyfile106_3.med"
5550 da1=DataArrayDouble([1,2,10,3,4,11,5,6,12,7,8,13],4,3) ; da1.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5552 mm1_0=MEDCouplingUMesh(meshName,3) ; mm1_0.allocateCells()
5553 mm1_0.setCoords(da1)
5554 mm1_0.insertNextCell(NORM_TETRA4,[0,1,2,3])
5555 mm1_0.insertNextCell(NORM_TETRA4,[4,5,6,7])
5556 mm1_0.insertNextCell(NORM_PENTA6,[8,9,10,11,12,13])
5557 mm1_0.insertNextCell(NORM_PENTA6,[14,15,16,17,18,19])
5558 mm1_0.insertNextCell(NORM_PENTA6,[20,21,22,23,24,25])
5560 mm1.setFamilyFieldArr(0,DataArrayInt([1,2,3,4,5]))
5561 mm1.setRenumFieldArr(0,DataArrayInt([11,12,13,14,15]))
5563 mm1_1=MEDCouplingUMesh(meshName,2) ; mm1_1.allocateCells()
5564 mm1_1.setCoords(da1)
5565 mm1_1.insertNextCell(NORM_TRI3,[0,1,2])
5566 mm1_1.insertNextCell(NORM_TRI3,[3,4,5])
5567 mm1_1.insertNextCell(NORM_QUAD4,[6,7,8,9])
5568 mm1_1.insertNextCell(NORM_QUAD4,[10,11,12,13])
5569 mm1_1.insertNextCell(NORM_QUAD4,[14,15,16,17])
5570 mm1_1.insertNextCell(NORM_QUAD4,[18,19,20,21])
5572 mm1.setFamilyFieldArr(-1,DataArrayInt([6,7,8,9,10,11]))
5573 mm1.setRenumFieldArr(-1,DataArrayInt([16,17,18,19,20,21]))
5574 for i in range(1,10):
5575 mm1.setFamilyId("F%d"%i,i)
5576 mm1.setFamilyId("FAMILLE_ZERO",0)
5577 mm1.setFamilyId("H1",100)
5578 mm1.setFamiliesOnGroup("myGRP",["F2","F6"])
5579 mm1.setFamiliesOnGroup("myGRP1",["F2","F6"])
5580 mm1.setFamilyFieldArr(1,DataArrayInt([12,13,14,15]))
5581 mm1.setRenumFieldArr(1,DataArrayInt([22,23,24,25]))
5584 da1=DataArrayDouble([9,10,30,11,12,31,13,14,32,15,16,33,17,18,34],5,3) ; da1.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5586 mm2_0=MEDCouplingUMesh(meshName,3) ; mm2_0.allocateCells()
5587 mm2_0.setCoords(da1)
5588 mm2_0.insertNextCell(NORM_TETRA4,[100,101,102,103])
5589 mm2_0.insertNextCell(NORM_TETRA4,[104,105,106,107])
5590 mm2_0.insertNextCell(NORM_TETRA4,[108,109,110,111])
5591 mm2_0.insertNextCell(NORM_PENTA6,[112,113,114,115,116,117])
5593 mm2.setFamilyFieldArr(0,DataArrayInt([40,41,42,43]))
5594 mm2.setRenumFieldArr(0,DataArrayInt([50,51,52,53]))
5596 mm2_1=MEDCouplingUMesh(meshName,2) ; mm2_1.allocateCells()
5597 mm2_1.setCoords(da1)
5598 mm2_1.insertNextCell(NORM_TRI3,[100,101,102])
5599 mm2_1.insertNextCell(NORM_TRI3,[103,104,105])
5600 mm2_1.insertNextCell(NORM_TRI3,[106,107,108])
5601 mm2_1.insertNextCell(NORM_QUAD4,[109,110,111,112])
5602 mm2_1.insertNextCell(NORM_QUAD4,[113,114,115,116])
5603 mm2_1.insertNextCell(NORM_QUAD4,[117,118,119,120])
5604 mm2_1.insertNextCell(NORM_QUAD4,[121,122,123,124])
5605 mm2_1.insertNextCell(NORM_QUAD4,[125,126,127,128])
5607 mm2.setFamilyFieldArr(-1,DataArrayInt([200,201,202,203,204,205,206,207]))
5608 mm2.setRenumFieldArr(-1,DataArrayInt([300,301,302,303,304,305,306,307]))
5609 for i in range(1,12):
5610 mm2.setFamilyId("G%d"%i,i+30)
5611 mm2.setFamilyId("H1",100)
5612 mm2.setFamilyId("FAMILLE_ZERO",0)
5613 mm2.setFamiliesOnGroup("myGRP",["G2","G6"])
5614 mm2.setFamiliesOnGroup("myGRP2",["G4","G7"])
5615 mm2.setFamilyFieldArr(1,DataArrayInt([112,113,114,115,116]))
5616 mm2.setRenumFieldArr(1,DataArrayInt([122,123,124,125,126]))
5618 mm=MEDFileUMesh.Aggregate([mm1,mm2])
5620 def CheckMesh(tester,mm):
5621 cooExp=DataArrayDouble([(1,2,10),(3,4,11),(5,6,12),(7,8,13),(9,10,30),(11,12,31),(13,14,32),(15,16,33),(17,18,34)]) ; cooExp.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5622 tester.assertTrue(mm.getCoords().isEqual(cooExp,1e-12))
5623 tester.assertTrue(mm[0].getNodalConnectivity().isEqual(DataArrayInt([14,0,1,2,3,14,4,5,6,7,14,104,105,106,107,14,108,109,110,111,14,112,113,114,115,16,8,9,10,11,12,13,16,14,15,16,17,18,19,16,20,21,22,23,24,25,16,116,117,118,119,120,121])))
5624 tester.assertTrue(mm[0].getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,32,39,46,53])))
5625 tester.assertTrue(mm[-1].getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,104,105,106,3,107,108,109,3,110,111,112,4,6,7,8,9,4,10,11,12,13,4,14,15,16,17,4,18,19,20,21,4,113,114,115,116,4,117,118,119,120,4,121,122,123,124,4,125,126,127,128,4,129,130,131,132])))
5626 tester.assertTrue(mm[-1].getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20,25,30,35,40,45,50,55,60,65])))
5627 tester.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([1,2,40,41,42,3,4,5,43])))
5628 tester.assertTrue(mm.getNumberFieldAtLevel(0).isEqual(DataArrayInt([11,12,50,51,52,13,14,15,53])))
5629 tester.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(DataArrayInt([6,7,200,201,202,8,9,10,11,203,204,205,206,207])))
5630 tester.assertTrue(mm.getNumberFieldAtLevel(-1).isEqual(DataArrayInt([16,17,300,301,302,18,19,20,21,303,304,305,306,307])))
5631 refFamIds=[("FAMILLE_ZERO",0),('F1',1),('F2',2),('F3',3),('F4',4),('F5',5),('F6',6),('F7',7),('F8',8),('F9',9),('G1',31),('G10',40),('G11',41),('G2',32),('G3',33),('G4',34),('G5',35),('G6',36),('G7',37),('G8',38),('G9',39),("H1",100)]
5632 tester.assertEqual(set(mm.getFamiliesNames()),set([elt[0] for elt in refFamIds]))
5633 tester.assertEqual(set([mm.getFamilyId(elt) for elt in mm.getFamiliesNames()]),set([elt[1] for elt in refFamIds]))
5634 tester.assertEqual(mm.getGroupsNames(),('myGRP','myGRP1','myGRP2'))
5635 tester.assertEqual(mm.getAllDistributionOfTypes(),[(NORM_TRI3,5),(NORM_QUAD4,9),(NORM_TETRA4,5),(NORM_PENTA6,4),(NORM_ERROR,9)])
5642 infoc=["dd [W]","eee [kA]"]
5644 fmts1=MEDFileFieldMultiTS()
5645 f1ts1=MEDFileField1TS()
5646 f1_1=MEDCouplingFieldDouble(ON_CELLS) ; f1_1.setMesh(mm1[0]) ; f1_1.setName(fieldName)
5647 arr1=DataArrayDouble([(10,110),(11,111),(12,112),(13,113),(14,114)])
5648 arr1.setInfoOnComponents(infoc)
5649 f1_1.setArray(arr1) ; f1_1.setTime(*t1) ; f1_1.setTimeUnit("ms")
5650 f1_1.checkConsistencyLight()
5651 f1ts1.setFieldNoProfileSBT(f1_1)
5653 f1_2=MEDCouplingFieldDouble(ON_CELLS) ; f1_2.setMesh(mm1[-1]) ; f1_2.setName(fieldName)
5654 arr2=DataArrayDouble([(15,115),(16,116),(17,117),(18,118),(19,119),(20,120)])
5655 arr2.setInfoOnComponents(infoc)
5656 f1_2.setArray(arr2) ; f1_2.setTime(*t1) ; f1_2.setTimeUnit("ms")
5657 f1_2.checkConsistencyLight()
5658 f1ts1.setFieldNoProfileSBT(f1_2)
5659 f1_3=MEDCouplingFieldDouble(ON_NODES) ; f1_3.setMesh(mm1[0]) ; f1_3.setName(fieldName)
5660 arr3=DataArrayDouble([(21,121),(22,122),(23,123),(24,124)])
5661 arr3.setInfoOnComponents(infoc)
5662 f1_3.setArray(arr3) ; f1_3.setTime(*t1) ; f1_3.setTimeUnit("ms")
5663 f1_3.checkConsistencyLight()
5664 f1ts1.setFieldNoProfileSBT(f1_3)
5665 fmts1.pushBackTimeStep(f1ts1)
5667 f1ts2=f1ts1.deepCopy()
5668 f1ts2.setTime(t2[1],t2[2],t2[0])
5669 f1ts2.getUndergroundDataArray()[:]+=2000
5670 fmts1.pushBackTimeStep(f1ts2)
5672 fmts2=MEDFileFieldMultiTS()
5673 f1ts3=MEDFileField1TS()
5674 f2_1=MEDCouplingFieldDouble(ON_CELLS) ; f2_1.setMesh(mm2[0]) ; f2_1.setName(fieldName)
5675 arr4=DataArrayDouble([(50,150),(51,151),(52,152),(53,153)])
5676 arr4.setInfoOnComponents(infoc)
5677 f2_1.setArray(arr4) ; f2_1.setTime(*t1) ; f2_1.setTimeUnit("ms")
5678 f2_1.checkConsistencyLight()
5679 f1ts3.setFieldNoProfileSBT(f2_1)
5680 f2_2=MEDCouplingFieldDouble(ON_CELLS) ; f2_2.setMesh(mm2[-1]) ; f2_2.setName(fieldName)
5681 arr5=DataArrayDouble([(54,154),(55,155),(56,156),(57,157),(158,158),(59,159),(60,160),(61,161)])
5682 arr5.setInfoOnComponents(infoc)
5683 f2_2.setArray(arr5) ; f2_2.setTime(*t1) ; f2_2.setTimeUnit("ms")
5684 f2_2.checkConsistencyLight()
5685 f1ts3.setFieldNoProfileSBT(f2_2)
5686 f2_3=MEDCouplingFieldDouble(ON_NODES) ; f2_3.setMesh(mm2[0]) ; f2_3.setName(fieldName)
5687 arr6=DataArrayDouble([(62,162),(63,163),(64,164),(65,165),(66,166)])
5688 arr6.setInfoOnComponents(infoc)
5689 f2_3.setArray(arr6) ; f2_3.setTime(*t1) ; f2_3.setTimeUnit("ms")
5690 f2_3.checkConsistencyLight()
5691 f1ts3.setFieldNoProfileSBT(f2_3)
5692 fmts2.pushBackTimeStep(f1ts3)
5694 f1ts4=f1ts3.deepCopy()
5695 f1ts4.setTime(t2[1],t2[2],t2[0])
5696 f1ts4.getUndergroundDataArray()[:]+=2000
5697 fmts2.pushBackTimeStep(f1ts4)
5700 mfd1.setMeshes(MEDFileMeshes())
5701 mfd1.getMeshes().pushMesh(mm1)
5702 mfd1.setFields(MEDFileFields())
5703 mfd1.getFields().pushField(fmts1)
5706 mfd2.setMeshes(MEDFileMeshes())
5707 mfd2.getMeshes().pushMesh(mm2)
5708 mfd2.setFields(MEDFileFields())
5709 mfd2.getFields().pushField(fmts2)
5711 mfd=MEDFileData.Aggregate([mfd1,mfd2])
5712 def CheckMFD(tester,mfd):
5713 tester.assertEqual(len(mfd.getMeshes()),1)
5714 tester.assertEqual(len(mfd.getFields()),1)
5715 CheckMesh(self,mfd.getMeshes()[0])
5716 tester.assertEqual(len(mfd.getFields()[0]),2)
5717 zeF1=mfd.getFields()[0][0]
5718 zeF1_1=zeF1.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
5719 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
5720 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5721 ref.renumberCells(o2n)
5722 tester.assertTrue(ref.isEqual(zeF1_1,1e-12,1e-12))
5723 zeF1_2=zeF1.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
5724 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
5725 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5726 ref.renumberCells(o2n)
5727 tester.assertTrue(ref.isEqual(zeF1_2,1e-12,1e-12))
5728 zeF1_3=zeF1.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
5729 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
5730 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5731 ref.renumberCells(o2n)
5732 tester.assertTrue(ref.isEqual(zeF1_3,1e-12,1e-12))
5734 zeF2=mfd.getFields()[0][1]
5735 zeF2_1=zeF2.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
5736 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
5737 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5738 ref.renumberCells(o2n)
5739 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5740 tester.assertTrue(ref.isEqual(zeF2_1,1e-12,1e-12))
5741 zeF2_2=zeF2.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
5742 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
5743 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5744 ref.renumberCells(o2n)
5745 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5746 tester.assertTrue(ref.isEqual(zeF2_2,1e-12,1e-12))
5747 zeF2_3=zeF2.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
5748 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
5749 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5750 ref.renumberCells(o2n)
5751 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5752 tester.assertTrue(ref.isEqual(zeF2_3,1e-12,1e-12))
5754 mfd1.write(fname1,2) ; mfd2.write(fname2,2)
5755 mfd=MEDFileData.Aggregate([MEDFileData(fname1),MEDFileData(fname2)])
5759 def testExtrudedMesh1(self):
5760 fname="Pyfile107.med"
5761 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
5762 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ) ; mesh3D.setName("mesh")
5763 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
5766 ex2=mm.convertToExtrudedMesh()
5767 mm2=MEDFileMesh.New(fname)
5768 ex3=mm2.convertToExtrudedMesh()
5769 self.assertTrue(ex.isEqual(ex2,1e-12))
5770 self.assertTrue(ex.isEqual(ex3,1e-12))
5773 @unittest.skipUnless(LooseVersion(MEDFileVersionStr())>=LooseVersion('3.2.1'),"This test requires at least MEDFile version 3.2.1")
5774 def testWriteInto30(self):
5775 fname="Pyfile108.med"
5776 fname2="Pyfile109.med"
5777 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(DataArrayDouble([0,0,1,1],2,2)) ; m.allocateCells() ; m.insertNextCell(NORM_SEG2,[1,0])
5778 mm=MEDFileUMesh() ; mm[0]=m
5779 mm.setFamilyId("FAMILLE_ZERO",0)
5782 assert(LooseVersion(MEDFileVersionOfFileStr(fname)).version[:2]==[3,0]) # checks that just written MED file has a version == 3.0.x
5783 mm2=MEDFileUMesh(fname)
5784 self.assertTrue(mm.isEqual(mm2,1e-12))
5787 assert(LooseVersion(MEDFileVersionOfFileStr(fname2)).version[:2]==list(MEDFileVersion()[:2])) # checks that MED file version of written mesh is thoose of the current MED file lib
5790 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5791 def testPickelizationOfMEDFileObjects1(self):
5792 fname="Pyfile110.med"
5793 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)
5794 m0=MEDCouplingUMesh("Mesh",2)
5796 m0.insertNextCell(NORM_TRI3,[1,4,2])
5797 m0.insertNextCell(NORM_TRI3,[4,5,2])
5798 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
5799 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
5800 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
5801 m0.finishInsertingCells()
5803 m1=MEDCouplingUMesh(m0.getName(),1)
5805 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
5807 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
5809 m1.finishInsertingCells()
5813 m.setMeshAtLevel(0,m0)
5814 m.setMeshAtLevel(-1,m1)
5816 dt=3 ; it=2 ; tim=4.5
5817 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
5818 fieldNode0.setName("fieldNode0")
5819 fieldNode0.setTime(tim,dt,it)
5820 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
5821 arr=DataArrayDouble([10,11,12,13,14])
5822 fieldNode0.setArray(arr)
5823 f0=MEDFileField1TS()
5824 f0.setFieldProfile(fieldNode0,m,0,pfl0)
5825 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
5826 fieldNode1.setName("fieldNode1")
5827 fieldNode1.setTime(tim,dt,it)
5828 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
5829 arr1=DataArrayDouble([20,21,22,23,24,25,26])
5830 fieldNode1.setArray(arr1)
5831 f1=MEDFileField1TS()
5832 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
5834 mfd.setMeshes(MEDFileMeshes()) ; mfd.setFields(MEDFileFields())
5835 mfd.getMeshes().pushMesh(m)
5836 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(f0)
5837 mfd.getFields().pushField(fmts)
5838 # first start gently
5841 self.assertEqual(len(mfd2.getMeshes()),1)
5842 self.assertEqual(len(mfd2.getFields()),1)
5843 self.assertEqual(len(mfd2.getFields()[0]),1)
5844 self.assertTrue(mfd2.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
5845 ff2=mfd2.getFields()[0][0].field(mfd2.getMeshes()[0])
5846 ff =mfd.getFields()[0][0].field(mfd.getMeshes()[0])
5847 self.assertTrue(ff2.isEqual(ff,1e-12,1e-12))
5848 # OK now end of joke -> serialization of MEDFileData
5849 st=pickle.dumps(mfd,pickle.HIGHEST_PROTOCOL)
5850 mfd3=pickle.loads(st)
5852 self.assertEqual(len(mfd3.getMeshes()),1)
5853 self.assertEqual(len(mfd3.getFields()),1)
5854 self.assertEqual(len(mfd3.getFields()[0]),1)
5855 self.assertTrue(mfd3.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
5856 ff3=mfd3.getFields()[0][0].field(mfd3.getMeshes()[0])
5857 self.assertTrue(ff3.isEqual(ff,1e-12,1e-12))
5858 # serialization of MEDFileFields
5859 st=pickle.dumps(mfd.getFields(),pickle.HIGHEST_PROTOCOL)
5860 fs4=pickle.loads(st)
5861 ff4=fs4[0][0].field(mfd3.getMeshes()[0])
5862 self.assertTrue(ff4.isEqual(ff,1e-12,1e-12))
5863 # serialization of MEDFileFieldMulitTS
5864 st=pickle.dumps(mfd.getFields()[0],pickle.HIGHEST_PROTOCOL)
5865 fmts5=pickle.loads(st)
5866 ff5=fmts5[0].field(mfd3.getMeshes()[0])
5867 self.assertTrue(ff5.isEqual(ff,1e-12,1e-12))
5868 # serialization of MEDFileField1TS
5869 st=pickle.dumps(mfd.getFields()[0][0],pickle.HIGHEST_PROTOCOL)
5870 f1ts6=pickle.loads(st)
5871 ff6=f1ts6.field(mfd3.getMeshes()[0])
5872 self.assertTrue(ff6.isEqual(ff,1e-12,1e-12))
5873 # serialization of MEDFileMeshes
5874 st=pickle.dumps(mfd.getMeshes(),pickle.HIGHEST_PROTOCOL)
5875 ms7=pickle.loads(st)
5876 self.assertEqual(len(ms7),1)
5877 self.assertTrue(ms7[0].isEqual(mfd.getMeshes()[0],1e-12))
5880 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5881 def testPickelizationOfMEDFileObjects2(self):
5883 self.testMEDMesh6() # generates MEDFileMesh5.med file
5884 mm=MEDFileMesh.New("MEDFileMesh5.med")
5885 self.assertTrue(isinstance(mm,MEDFileCMesh))
5886 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
5887 mm2=pickle.loads(st)
5888 self.assertTrue(isinstance(mm2,MEDFileCMesh))
5889 self.assertTrue(mm.getMesh().isEqual(mm2.getMesh(),1e-12))
5891 self.testCurveLinearMesh1() # generates Pyfile55.med
5892 mm=MEDFileMesh.New("Pyfile55.med")
5893 self.assertTrue(isinstance(mm,MEDFileCurveLinearMesh))
5894 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
5895 mm3=pickle.loads(st)
5896 self.assertTrue(isinstance(mm3,MEDFileCurveLinearMesh))
5897 self.assertTrue(mm.getMesh().isEqual(mm3.getMesh(),1e-12))
5898 self.testInt32InMEDFileFieldStar1()# generates Pyfile63.med
5899 # MEDFileIntFieldMultiTS
5900 fs4=MEDFileFields("Pyfile63.med")
5901 ms4=MEDFileMeshes("Pyfile63.med")
5902 self.assertTrue(isinstance(fs4[0],MEDFileIntFieldMultiTS))
5903 st=pickle.dumps(fs4[0],pickle.HIGHEST_PROTOCOL)
5904 fmts5=pickle.loads(st)
5905 self.assertEqual(len(fs4[0]),len(fmts5))
5906 self.assertTrue(isinstance(fmts5,MEDFileIntFieldMultiTS))
5907 self.assertTrue(fmts5[0].field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
5908 # MEDFileIntField1TS
5909 st=pickle.dumps(fs4[0][0],pickle.HIGHEST_PROTOCOL)
5910 f1ts6=pickle.loads(st)
5911 self.assertTrue(isinstance(f1ts6,MEDFileIntField1TS))
5912 self.assertTrue(f1ts6.field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
5914 self.testParameters1()# generates Pyfile56.med
5915 params=MEDFileParameters("Pyfile56.med")
5916 st=pickle.dumps(params,pickle.HIGHEST_PROTOCOL)
5917 params7=pickle.loads(st)
5918 self.assertEqual(len(params),len(params7))
5919 for i in range(len(params)):
5920 self.assertTrue(params[i].isEqual(params7[i],1e-12)[0])
5924 def testGlobalNumOnNodes1(self):
5925 """Test global number on nodes here. Used by partitionners."""
5926 fname="Pyfile112.med"
5927 arr=DataArrayDouble(5) ; arr.iota()
5928 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
5932 self.assertTrue(not mm.getGlobalNumFieldAtLevel(1))
5933 d=DataArrayInt([7,8,9,2,0])
5935 mm.setGlobalNumFieldAtLevel(1,d)
5936 mm.checkConsistency()
5937 self.assertRaises(InterpKernelException,mm.setGlobalNumFieldAtLevel,1,d[::2])
5938 mm.checkConsistency()
5939 self.assertEqual(d.getHiddenCppPointer(),mm.getGlobalNumFieldAtLevel(1).getHiddenCppPointer())
5940 self.assertTrue(mm.getGlobalNumFieldAtLevel(1).isEqual(dRef))
5942 mm2=MEDFileMesh.New(fname)
5943 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5944 self.assertTrue(mm2.getGlobalNumFieldAtLevel(1).isEqual(dRef))
5945 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,10)
5946 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
5947 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,7)
5948 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5951 def testPartialReadOfEntities1(self):
5952 """Test for advanced API on read to speed up read phase for users with "huge" number of time steps (more than 10 000)."""
5953 fname="Pyfile113.med"
5954 arr=DataArrayDouble(5) ; arr.iota()
5955 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
5962 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName(fieldName)
5963 f1.setArray(DataArrayDouble([0.,0.1,0.2,0.3,0.4]))
5965 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(m) ; f2.setName(fieldName)
5966 f2.setArray(DataArrayDouble([1.,1.1,1.2,1.3]))
5968 f1ts=MEDFileField1TS()
5969 f1ts.setFieldNoProfileSBT(f1)
5970 f1ts.setFieldNoProfileSBT(f2)
5971 self.assertEqual(set(f1ts.getTypesOfFieldAvailable()),set([ON_NODES,ON_CELLS]))
5972 f1ts_2=f1ts.deepCopy()
5973 f1ts_2.getUndergroundDataArray()[:]+=2
5974 f1ts_2.setTime(3,4,6.)
5975 fmts=MEDFileFieldMultiTS()
5976 fmts.pushBackTimeStep(f1ts)
5977 fmts.pushBackTimeStep(f1ts_2)
5982 ent=MEDFileEntities.BuildFrom([(ON_NODES,NORM_ERROR)])
5983 mm=MEDFileMesh.New(fname)
5984 fs=MEDFileFields(fname,False,ent) # the important line is here - We specify to MEDFileFields to read only nodes part to speed up read phase (by avoiding to scan all entities time geo types)
5986 self.assertEqual(len(fs),1)
5988 self.assertEqual(len(fmts),2)
5989 ff0=fmts[0] ; ff1=fmts[1]
5990 self.assertEqual(ff0.getTypesOfFieldAvailable(),[ON_NODES]) # only NODES have been loaded
5991 self.assertTrue(ff0.field(mm).isEqual(f1,1e-12,1e-12))
5992 f3=f1.deepCopy() ; f3+=2. ; f3.setTime(6.,3,4)
5993 self.assertTrue(ff1.field(mm).isEqual(f3,1e-12,1e-12))
5996 def testFloat32InMEDFileFieldStar1(self):
5997 """Like testInt32InMEDFileFieldStar1 but with float32 :)"""
5998 fname="Pyfile114.med"
5999 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
6000 f1=f1.convertToFloatField()
6002 mm1=MEDFileUMesh.New()
6003 mm1.setCoords(m1.getCoords())
6004 mm1.setMeshAtLevel(0,m1)
6005 mm1.setName(m1.getName())
6007 ff1=MEDFileFloatField1TS()
6008 ff1.setFieldNoProfileSBT(f1)
6009 a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
6010 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6011 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6013 a,b=ff1.getUndergroundDataArrayExt()
6014 self.assertEqual(a.getHiddenCppPointer(),ff1.getUndergroundDataArray().getHiddenCppPointer())
6015 self.assertEqual(b,[((3,0),(0,2)),((4,0),(2,4)),((6,0),(4,5)),((5,0),(5,6))])
6016 ff2=MEDFileAnyTypeField1TS.New(fname)
6017 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
6018 self.assertEqual(ff2.getTime(),[0,1,2.0])
6019 self.assertTrue(isinstance(ff2,MEDFileFloatField1TS))
6020 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6021 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6022 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6024 c=ff2.getUndergroundDataArray() ; c*=2
6025 ff2.write(fname,0) # 2 time steps in
6026 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
6027 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
6028 self.assertEqual(len(ffs1),2)
6029 self.assertTrue(isinstance(ffs1,MEDFileFloatFieldMultiTS))
6030 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6031 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6032 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
6033 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6034 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
6035 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
6036 self.assertTrue(a.getArray().isEqual(2*f1.getArray(),1e-7))
6037 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
6038 self.assertTrue(a.isEqual(f1,1e-12,1e-12)) ; f1.getArray()[:]/=2
6039 bc=DataArrayFloat(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6041 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6044 self.assertTrue(bc.isEqual(3*f1.getArray(),1e-7))
6045 nf1=MEDCouplingFieldFloat(ON_NODES)
6046 nf1.setTime(9.,10,-1)
6047 nf1.setMesh(f1.getMesh())
6048 narr=DataArrayFloat(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
6049 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
6050 nff1=MEDFileFloatField1TS.New()
6051 nff1.setFieldNoProfileSBT(nf1)
6052 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
6053 self.assertEqual(nff1.getTime(),[10,-1,9.0])
6056 nf2=MEDCouplingFieldFloat(ON_NODES)
6057 nf2.setTime(19.,20,-11)
6058 nf2.setMesh(f1.getMesh())
6059 narr2=DataArrayFloat(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
6060 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
6061 nff2=MEDFileFloatField1TS.New()
6062 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
6063 nff2.setFieldProfile(nf2,mm1,0,npfl)
6064 nff2.getFieldWithProfile(ON_NODES,0,mm1)
6065 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
6066 self.assertTrue(b.isEqual(npfl))
6067 self.assertTrue(a.isEqual(narr2,1e-7))
6069 nff2bis=MEDFileFloatField1TS(fname,"VectorFieldOnNodesPfl")
6070 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
6071 self.assertTrue(b.isEqual(npfl))
6072 self.assertTrue(a.isEqual(narr2,1e-7))
6074 nf3=MEDCouplingFieldDouble(ON_NODES)
6075 nf3.setName("VectorFieldOnNodesDouble")
6076 nf3.setTime(29.,30,-21)
6077 nf3.setMesh(f1.getMesh())
6078 nf3.setArray(f1.getMesh().getCoords())
6079 nff3=MEDFileField1TS.New()
6080 nff3.setFieldNoProfileSBT(nf3)
6082 fs=MEDFileFields(fname)
6083 self.assertEqual(len(fs),4)
6084 ffs=[it for it in fs]
6085 self.assertTrue(isinstance(ffs[0],MEDFileFloatFieldMultiTS))
6086 self.assertTrue(isinstance(ffs[1],MEDFileFloatFieldMultiTS))
6087 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
6088 self.assertTrue(isinstance(ffs[3],MEDFileFloatFieldMultiTS))
6090 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray(),1e-7))
6091 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray(),1e-7))
6092 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2,1e-7))
6093 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr,1e-7))
6094 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
6096 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
6097 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
6098 self.assertRaises(InterpKernelException,MEDFileFloatFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
6099 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
6100 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
6101 self.assertRaises(InterpKernelException,MEDFileFloatField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
6102 MEDFileFloatField1TS.New(fname,"VectorFieldOnNodes",10,-1)
6103 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
6105 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
6106 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
6107 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
6108 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
6111 def testPenta18_1(self):
6112 """EDF8478 : Test of read/write of penta18"""
6113 fname="Pyfile115.med"
6114 arr=DataArrayDouble([
6115 (0.,1.,1.),(0.,0.,1.),(1.,0.,1.),
6116 (0.,1.,0.),(0.,0.,0.),(1.,0.,0.),
6117 (0.,0.5,1.),(0.5,0.,1.),(0.5,0.5,1.),
6118 (0.,0.5,0.),(0.5,0.,0.),(0.5,0.5,0.),
6119 (0.,1.,0.5),(0.,0.,0.5),(1.,0.,0.5),
6120 (0.,0.5,0.5),(0.5,0.,0.5),(0.5,0.5,0.5)])
6121 m=MEDCouplingUMesh("mesh",3)
6124 m.insertNextCell(NORM_PENTA18,list(range(18)))
6125 m.checkConsistencyLight()
6127 f=MEDCouplingFieldDouble(ON_NODES)
6129 f.setName("FieldOnPenta18")
6130 f.setArray(DataArrayDouble(list(range(18))))
6131 f.checkConsistencyLight()
6133 m2,d,di,rd,rdi=m.buildDescendingConnectivity()
6135 f2=MEDCouplingFieldDouble(ON_NODES)
6137 f2.setName("FieldOnPenta18Sub")
6138 f2.setArray(DataArrayDouble(list(range(18))))
6139 f2.checkConsistencyLight()
6140 WriteField(fname,f2,True)
6142 self.assertTrue(f2.isEqual(f3,1e-12,1e-12))
6143 self.assertEqual(f3.getMesh().getNumberOfCells(),1)
6144 self.assertEqual(f3.getMesh().getTypeOfCell(0),NORM_PENTA18)
6147 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
6148 def testMedFileCapabilityToCryOnNewFeatureWritingIntoOldFiles(self):
6149 fname="Pyfile116.med"
6150 errfname="Pyfile116.err"
6151 c=DataArrayDouble([0,1,2,3])
6152 m=MEDCouplingCMesh()
6154 m=m.buildUnstructured()
6158 f=MEDCouplingFieldInt(ON_CELLS)
6159 f.setMesh(m) ; arr2=DataArrayInt(m.getNumberOfCells()) ; arr2.iota()
6162 f1ts=MEDFileIntField1TS()
6163 f1ts.setFieldNoProfileSBT(f)
6165 f1ts.write30(fname,0)
6167 f=MEDCouplingFieldFloat(ON_CELLS)
6168 f.setMesh(m) ; arr2=DataArrayFloat(m.getNumberOfCells()) ; arr2.iota()
6171 f1ts=MEDFileFloatField1TS()
6172 f1ts.setFieldNoProfileSBT(f)
6175 tmp=StdOutRedirect(errfname)
6176 self.assertRaises(InterpKernelException,f1ts.write30,fname,0)
6179 if os.path.exists(errfname):
6185 if __name__ == "__main__":