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()
53 sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
56 sys.stderr=self.origPyVal
57 if sys.version_info.major >= 3:
58 self.fdOfSinkFile.close()
60 #os.fsync(self.fdOfSinkFile)
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 ff2=MEDFileAnyTypeField1TS.New(fname)
2632 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2633 self.assertEqual(ff2.getTime(),[0,1,2.0])
2634 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2635 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2636 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2637 self.assertTrue(a.isEqual(f1,1e-12,0))
2639 c=ff2.getUndergroundDataArray() ; c*=2
2640 ff2.write(fname,0) # 2 time steps in
2641 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2642 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2643 self.assertEqual(len(ffs1),2)
2644 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2645 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2646 self.assertTrue(a.isEqual(f1,1e-12,0))
2647 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
2648 self.assertTrue(a.isEqual(f1,1e-12,0))
2649 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2650 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2651 self.assertTrue(a.getArray().isEqual(2*f1.getArray()))
2652 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
2653 self.assertTrue(a.isEqual(f1,1e-12,0)) ; f1.getArray()[:]/=2
2654 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2656 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2659 self.assertTrue(bc.isEqual(3*f1.getArray()))
2660 nf1=MEDCouplingFieldInt(ON_NODES)
2661 nf1.setTime(9.,10,-1)
2662 nf1.setMesh(f1.getMesh())
2663 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
2664 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
2665 nff1=MEDFileIntField1TS.New()
2666 nff1.setFieldNoProfileSBT(nf1)
2667 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2668 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2671 nf2=MEDCouplingFieldInt(ON_NODES)
2672 nf2.setTime(19.,20,-11)
2673 nf2.setMesh(f1.getMesh())
2674 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2675 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
2676 nff2=MEDFileIntField1TS.New()
2677 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2678 nff2.setFieldProfile(nf2,mm1,0,npfl)
2679 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2680 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2681 self.assertTrue(b.isEqual(npfl))
2682 self.assertTrue(a.isEqual(narr2))
2684 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2685 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2686 self.assertTrue(b.isEqual(npfl))
2687 self.assertTrue(a.isEqual(narr2))
2689 nf3=MEDCouplingFieldDouble(ON_NODES)
2690 nf3.setName("VectorFieldOnNodesDouble")
2691 nf3.setTime(29.,30,-21)
2692 nf3.setMesh(f1.getMesh())
2693 nf3.setArray(f1.getMesh().getCoords())
2694 nff3=MEDFileField1TS.New()
2695 nff3.setFieldNoProfileSBT(nf3)
2697 fs=MEDFileFields(fname)
2698 self.assertEqual(len(fs),4)
2699 ffs=[it for it in fs]
2700 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2701 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2702 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2703 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2705 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray()))
2706 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray()))
2707 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2708 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2709 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2711 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2712 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2713 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2714 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2715 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2716 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2717 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2718 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2720 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2721 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2722 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2723 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2726 def testMEDFileFields1(self):
2727 fname="Pyfile64.med"
2728 f1=MEDCouplingFieldDouble(ON_NODES)
2729 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2730 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2731 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2733 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=list(range(12)) ; arr[:,1]=2*arr[:,0]
2735 f1.setName("Field1")
2736 ff1=MEDFileField1TS.New()
2737 ff1.setFieldNoProfileSBT(f1)
2738 self.assertEqual(ff1.getDtUnit(),"us")
2740 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2741 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2743 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2744 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2745 ff1s.setName("Field2")
2747 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2748 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2749 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2750 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2751 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2752 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2753 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2754 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2757 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2758 def testMEDFileFields2(self):
2759 fname="Pyfile65.med"
2760 # to check that all is initialize
2761 MEDFileField1TS().__str__()
2762 MEDFileFieldMultiTS().__str__()
2763 # building a mesh containing 4 tri3 + 5 quad4
2764 tri=MEDCouplingUMesh("tri",2)
2765 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2766 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2767 tris = [tri.deepCopy() for i in range(4)]
2768 for i,elt in enumerate(tris): elt.translate([i,0])
2769 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2770 quad=MEDCouplingUMesh("quad",2)
2771 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2772 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2773 quads = [quad.deepCopy() for i in range(5)]
2774 for i,elt in enumerate(quads): elt.translate([5+i,0])
2775 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2776 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2777 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2779 fmts0_0=MEDFileFieldMultiTS()
2780 fmts0_1=MEDFileFieldMultiTS()
2783 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2784 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2785 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2786 f.setTime(float(i+1)+0.1,i+1,-i-1)
2787 fmts0_0.appendFieldNoProfileSBT(f)
2788 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2789 self.assertEqual(fmts0_1.getName(),name1)
2790 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2791 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2793 # components names have been modified to generate errors
2794 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2795 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2796 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2797 f1ts.setInfo(['aa [bb]','eee [dd]'])
2798 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2800 # add a mismatch of nb of compos
2802 fmts0_2=fmts0_0.deepCopy()
2803 fmts0_3=fmts0_0.deepCopy()
2804 fmts0_4=fmts0_0.deepCopy()
2805 fmts0_5=fmts0_0.shallowCpy()
2806 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)
2808 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2809 del fmts0_3[[1.1,(6,-6),9]]
2810 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2811 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2812 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2813 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2814 fmts0_7=fmts0_4[::-3]
2815 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2816 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2819 fs0.pushField(fmts0_0)
2820 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2821 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2822 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2823 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2825 fs0=MEDFileFields(fname)
2826 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2827 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2828 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2829 del fs1[["2ndField",3]]
2830 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2831 fs2=fs0[[0,"4thField"]]
2832 self.assertTrue(isinstance(fs2,MEDFileFields))
2833 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2835 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2838 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2839 def testMEDFileFields3(self):
2840 fname="Pyfile66.med"
2841 # building a mesh containing 4 tri3 + 5 quad4
2842 tri=MEDCouplingUMesh("tri",2)
2843 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2844 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2845 tris = [tri.deepCopy() for i in range(4)]
2846 for i,elt in enumerate(tris): elt.translate([i,0])
2847 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2848 quad=MEDCouplingUMesh("quad",2)
2849 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2850 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2851 quads = [quad.deepCopy() for i in range(5)]
2852 for i,elt in enumerate(quads): elt.translate([5+i,0])
2853 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2854 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2855 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2857 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2859 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2860 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2861 fmts0_0=MEDFileFieldMultiTS()
2862 fmts0_1=MEDFileFieldMultiTS()
2865 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2866 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2867 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2868 f.setTime(float(i+1)+0.1,i+1,-i-1)
2869 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2870 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2871 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2872 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2875 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2876 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2877 fmts0_0.zipPflsNames()
2878 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2879 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2880 fmts0_2=fmts0_0.deepCopy()
2881 fmts0_3=fmts0_0.deepCopy()
2882 fmts0_4=fmts0_0.deepCopy()
2884 fs0.pushField(fmts0_0)
2885 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2886 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2887 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2888 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2890 fmts0_5=MEDFileFieldMultiTS()
2892 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2893 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2894 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2895 f.setTime(float(i+1)+0.1,i+1,-i-1)
2896 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2898 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2899 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2900 fs0.checkGlobsCoherency()
2904 def testSplitComponents1(self):
2905 fname="Pyfile67.med"
2906 # building a mesh containing 4 tri3 + 5 quad4
2907 tri=MEDCouplingUMesh("tri",2)
2908 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2909 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2910 tris = [tri.deepCopy() for i in range(4)]
2911 for i,elt in enumerate(tris): elt.translate([i,0])
2912 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2913 quad=MEDCouplingUMesh("quad",2)
2914 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2915 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2916 quads = [quad.deepCopy() for i in range(5)]
2917 for i,elt in enumerate(quads): elt.translate([5+i,0])
2918 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2919 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2920 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2922 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2924 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2925 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2927 fmts0_1=MEDFileFieldMultiTS()
2929 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2932 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2933 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2934 f.setTime(float(i+1)+0.1,i+1,-i-1)
2935 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2936 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2938 fs.pushField(fmts0_1)
2939 self.assertEqual(1,len(fs))
2940 l=fmts0_1.splitComponents()
2941 self.assertEqual(3,len(l))
2942 for elt in l: self.assertEqual(10,len(elt))
2943 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2945 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2948 self.assertEqual(4,len(fs))
2949 for elt in fs: self.assertEqual(10,len(elt))
2950 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2951 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2953 fs.write(fname,0) ; del fs
2955 fs1=MEDFileFields(fname)
2956 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2957 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2958 self.assertEqual(4,len(fs1))
2960 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2961 f1ts=fs1[fieldName][i]
2962 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2963 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2964 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2966 f1ts=fs1["1stField"][i]
2967 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2968 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2969 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2973 def testMEDFileFieldConvertTo1(self):
2974 fname="Pyfile68.med"
2975 # building a mesh containing 4 tri3 + 5 quad4
2976 tri=MEDCouplingUMesh("tri",2)
2977 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2978 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2979 tris = [tri.deepCopy() for i in range(4)]
2980 for i,elt in enumerate(tris): elt.translate([i,0])
2981 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2982 quad=MEDCouplingUMesh("quad",2)
2983 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2984 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2985 quads = [quad.deepCopy() for i in range(5)]
2986 for i,elt in enumerate(quads): elt.translate([5+i,0])
2987 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2988 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2989 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2990 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2992 ff0=MEDFileField1TS()
2993 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")
2994 f0.checkConsistencyLight()
2995 ff0.setFieldNoProfileSBT(f0)
2997 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2998 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3000 ff0i=ff0.convertToInt()
3001 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
3002 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
3004 ff1=ff0i.convertToDouble()
3005 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3006 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
3008 del arr,f0,ff0,ff1,ff0i,fspExp
3009 ff0=MEDFileField1TS()
3010 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")
3011 f0.checkConsistencyLight()
3012 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
3013 ff0.setFieldProfile(f0,mm,0,pfl)
3014 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
3015 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3017 ff0i=ff0.convertToInt()
3018 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
3019 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
3020 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
3022 ff1=ff0i.convertToDouble()
3023 self.assertTrue(isinstance(ff1,MEDFileField1TS))
3024 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3025 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
3027 ff0=MEDFileFieldMultiTS()
3028 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)
3029 f0.checkConsistencyLight()
3030 ff0.appendFieldProfile(f0,mm,0,pfl)
3031 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)
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(200) ; arr.rearrange(2) ; arr.setInfoOnComponents(["X [km]","YY [mm]"]) ; f0.setArray(arr) ; f0.setName("FieldCellMTime") ; f0.setTime(2.1,2,12)
3035 f0.checkConsistencyLight()
3036 ff0.appendFieldProfile(f0,mm,0,pfl)
3037 ff1=ff0.convertToInt()
3038 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3039 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3040 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3041 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3042 arr=ff1.getUndergroundDataArray(dt,it)
3043 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3045 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3050 ff1=ff1.convertToDouble()
3051 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
3052 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3053 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3054 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3055 arr=ff1.getUndergroundDataArray(dt,it)
3056 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
3058 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3060 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
3061 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3062 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3063 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3064 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
3065 arr=ff1.getUndergroundDataArray(dt,it)
3066 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
3068 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
3071 def testMEDFileFieldPartialLoading(self):
3072 fname="Pyfile69.med"
3074 a=DataArrayInt() ; aa=a.getHeapMemorySize()
3076 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
3077 # building a mesh containing 30 tri3 + 40 quad4
3078 tri=MEDCouplingUMesh("tri",2)
3079 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3080 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3081 tris = [tri.deepCopy() for i in range(30)]
3082 for i,elt in enumerate(tris): elt.translate([i,0])
3083 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3084 quad=MEDCouplingUMesh("quad",2)
3085 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3086 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3087 quads = [quad.deepCopy() for i in range(40)]
3088 for i,elt in enumerate(quads): elt.translate([40+i,0])
3089 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3090 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3091 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3092 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3094 ff0=MEDFileField1TS()
3095 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")
3096 f0.checkConsistencyLight()
3097 ff0.setFieldNoProfileSBT(f0)
3100 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
3101 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3103 ff0=MEDFileField1TS()
3104 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")
3105 f0.checkConsistencyLight()
3106 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
3107 ff0.setFieldProfile(f0,mm,0,pfl)
3108 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
3109 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3112 ff0=MEDFileField1TS(fname,False)
3113 self.assertEqual(ff0.getName(),"FieldCell")
3114 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
3115 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
3116 heap_memory_ref=ff0.getHeapMemorySize()
3117 self.assertIn(heap_memory_ref, list(range(182, 540 + 2 * strMulFac)))
3119 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
3120 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3121 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
3123 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
3124 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
3125 heap_memory_ref=ff0.getHeapMemorySize()
3126 self.assertIn(heap_memory_ref, list(range(350, 600 + 6 * strMulFac)))
3128 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
3129 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3130 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3132 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3133 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3134 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3135 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3137 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3138 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3139 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3140 ff0.loadArraysIfNecessary() ##
3141 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
3142 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3143 heap_memory_ref=ff0.getHeapMemorySize()
3144 self.assertIn(heap_memory_ref, list(range(1100, 1400 + 2 * strMulFac)))
3146 hmd=ff0.getHeapMemorySize()-heap_memory_ref
3147 self.assertEqual(hmd,-800) # -50*8*2
3149 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
3151 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
3152 heap_memory_ref=ff0.getHeapMemorySize()
3153 self.assertIn(heap_memory_ref, list(range(299, 620 + 6 * strMulFac)))
3155 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3156 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3158 fieldName="FieldCellMultiTS"
3159 ff0=MEDFileFieldMultiTS()
3161 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)
3162 f0.setTime(float(t)+0.1,t,100+t)
3163 f0.checkConsistencyLight()
3164 ff0.appendFieldNoProfileSBT(f0)
3168 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
3169 heap_memory_ref=ff0.getHeapMemorySize()
3170 self.assertIn(heap_memory_ref, list(range(5536, 9212 + (80 + 26 + 1) * strMulFac)))
3172 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
3175 ffs=MEDFileFields(fname,False)
3176 heap_memory_ref=ffs.getHeapMemorySize()
3177 self.assertIn(heap_memory_ref, list(range(5335, 10031 + (80 + 50 + len(ffs)) * strMulFac)))
3179 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
3182 def testMEDFileMeshReadSelector1(self):
3183 mrs=MEDFileMeshReadSelector()
3184 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3185 mrs.__str__() ; mrs.__repr__()
3187 mrs=MEDFileMeshReadSelector(0)
3188 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())
3189 mrs=MEDFileMeshReadSelector(1)
3190 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3191 mrs=MEDFileMeshReadSelector(2)
3192 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3193 mrs=MEDFileMeshReadSelector(3)
3194 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3195 mrs=MEDFileMeshReadSelector(4)
3196 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3197 mrs=MEDFileMeshReadSelector(5)
3198 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3199 mrs=MEDFileMeshReadSelector(6)
3200 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3201 mrs=MEDFileMeshReadSelector(7)
3202 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3203 mrs=MEDFileMeshReadSelector(8)
3204 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3205 mrs=MEDFileMeshReadSelector(9)
3206 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3207 mrs=MEDFileMeshReadSelector(10)
3208 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3209 mrs=MEDFileMeshReadSelector(11)
3210 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3211 mrs=MEDFileMeshReadSelector(12)
3212 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3213 mrs=MEDFileMeshReadSelector(13)
3214 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3215 mrs=MEDFileMeshReadSelector(14)
3216 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3217 mrs=MEDFileMeshReadSelector(15)
3218 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3219 mrs=MEDFileMeshReadSelector(16)
3220 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3221 mrs=MEDFileMeshReadSelector(17)
3222 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3223 mrs=MEDFileMeshReadSelector(18)
3224 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3225 mrs=MEDFileMeshReadSelector(19)
3226 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3227 mrs=MEDFileMeshReadSelector(20)
3228 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3229 mrs=MEDFileMeshReadSelector(21)
3230 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3231 mrs=MEDFileMeshReadSelector(22)
3232 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3233 mrs=MEDFileMeshReadSelector(23)
3234 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3235 mrs=MEDFileMeshReadSelector(24)
3236 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3237 mrs=MEDFileMeshReadSelector(25)
3238 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3239 mrs=MEDFileMeshReadSelector(26)
3240 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3241 mrs=MEDFileMeshReadSelector(27)
3242 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3243 mrs=MEDFileMeshReadSelector(28)
3244 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3245 mrs=MEDFileMeshReadSelector(29)
3246 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3247 mrs=MEDFileMeshReadSelector(30)
3248 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3249 mrs=MEDFileMeshReadSelector(31)
3250 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3251 mrs=MEDFileMeshReadSelector(32)
3252 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3253 mrs=MEDFileMeshReadSelector(33)
3254 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3255 mrs=MEDFileMeshReadSelector(34)
3256 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3257 mrs=MEDFileMeshReadSelector(35)
3258 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3259 mrs=MEDFileMeshReadSelector(36)
3260 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3261 mrs=MEDFileMeshReadSelector(37)
3262 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3263 mrs=MEDFileMeshReadSelector(38)
3264 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3265 mrs=MEDFileMeshReadSelector(39)
3266 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3267 mrs=MEDFileMeshReadSelector(40)
3268 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3269 mrs=MEDFileMeshReadSelector(41)
3270 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3271 mrs=MEDFileMeshReadSelector(42)
3272 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3273 mrs=MEDFileMeshReadSelector(43)
3274 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3275 mrs=MEDFileMeshReadSelector(44)
3276 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3277 mrs=MEDFileMeshReadSelector(45)
3278 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3279 mrs=MEDFileMeshReadSelector(46)
3280 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3281 mrs=MEDFileMeshReadSelector(47)
3282 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3283 mrs=MEDFileMeshReadSelector(48)
3284 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3285 mrs=MEDFileMeshReadSelector(49)
3286 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3287 mrs=MEDFileMeshReadSelector(50)
3288 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3289 mrs=MEDFileMeshReadSelector(51)
3290 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3291 mrs=MEDFileMeshReadSelector(52)
3292 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3293 mrs=MEDFileMeshReadSelector(53)
3294 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3295 mrs=MEDFileMeshReadSelector(54)
3296 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3297 mrs=MEDFileMeshReadSelector(55)
3298 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3299 mrs=MEDFileMeshReadSelector(56)
3300 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3301 mrs=MEDFileMeshReadSelector(57)
3302 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3303 mrs=MEDFileMeshReadSelector(58)
3304 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3305 mrs=MEDFileMeshReadSelector(59)
3306 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3307 mrs=MEDFileMeshReadSelector(60)
3308 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3309 mrs=MEDFileMeshReadSelector(61)
3310 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3311 mrs=MEDFileMeshReadSelector(62)
3312 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3313 mrs=MEDFileMeshReadSelector(63)
3314 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3316 mrs=MEDFileMeshReadSelector(63)
3317 mrs.setCellFamilyFieldReading(False)
3318 self.assertEqual(mrs.getCode(),62)
3319 mrs.setCellFamilyFieldReading(True)
3320 self.assertEqual(mrs.getCode(),63)
3321 mrs.setNodeFamilyFieldReading(False)
3322 self.assertEqual(mrs.getCode(),61)
3323 mrs.setNodeFamilyFieldReading(True)
3324 self.assertEqual(mrs.getCode(),63)
3325 mrs.setCellNameFieldReading(False)
3326 self.assertEqual(mrs.getCode(),59)
3327 mrs.setCellNameFieldReading(True)
3328 self.assertEqual(mrs.getCode(),63)
3329 mrs.setNodeNameFieldReading(False)
3330 self.assertEqual(mrs.getCode(),55)
3331 mrs.setNodeNameFieldReading(True)
3332 self.assertEqual(mrs.getCode(),63)
3333 mrs.setCellNumFieldReading(False)
3334 self.assertEqual(mrs.getCode(),47)
3335 mrs.setCellNumFieldReading(True)
3336 self.assertEqual(mrs.getCode(),63)
3337 mrs.setNodeNumFieldReading(False)
3338 self.assertEqual(mrs.getCode(),31)
3339 mrs.setNodeNumFieldReading(True)
3340 self.assertEqual(mrs.getCode(),63)
3343 def testPartialReadOfMeshes(self):
3344 fname="Pyfile70.med"
3345 # building a mesh containing 4 tri3 + 5 quad4
3346 tri=MEDCouplingUMesh("tri",2)
3347 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3348 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3349 tris = [tri.deepCopy() for i in range(4)]
3350 for i,elt in enumerate(tris): elt.translate([i,0])
3351 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3352 quad=MEDCouplingUMesh("quad",2)
3353 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3354 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3355 quads = [quad.deepCopy() for i in range(5)]
3356 for i,elt in enumerate(quads): elt.translate([5+i,0])
3357 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3358 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3359 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3360 m1=m.buildDescendingConnectivity()[0]
3361 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3363 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3364 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3365 mm.setGroupsAtLevel(0,[grp0,grp1])
3366 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3367 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3368 mm.setGroupsAtLevel(-1,[grp2,grp3])
3369 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3370 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3371 mm.setGroupsAtLevel(1,[grp4,grp5])
3372 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3373 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3374 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3378 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3379 b4_ref_heap_mem=mm.getHeapMemorySize()
3380 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3381 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3382 ref_heap_mem=mm.getHeapMemorySize()
3383 # check the gain of memory using 1GTUMesh instead of UMesh
3384 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
3386 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3387 self.assertEqual(len(mm.getGroupsNames()),0)
3388 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3389 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3390 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3391 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3392 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3393 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3394 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3395 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3396 delta1=ref_heap_mem-mm.getHeapMemorySize()
3397 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3399 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3400 self.assertEqual(len(mm.getGroupsNames()),6)
3401 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3402 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3403 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3404 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3405 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3406 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3407 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3408 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3409 delta2=ref_heap_mem-mm.getHeapMemorySize()
3410 self.assertTrue(delta2<delta1)
3411 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3413 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3414 self.assertEqual(len(mm.getGroupsNames()),6)
3415 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3416 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3417 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3418 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3419 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3420 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3421 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3422 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3423 delta3=ref_heap_mem-mm.getHeapMemorySize()
3424 self.assertTrue(delta3<delta2)
3425 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3427 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3428 self.assertEqual(len(mm.getGroupsNames()),6)
3429 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3430 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3431 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3432 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3433 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3434 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3435 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3436 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3437 delta4=ref_heap_mem-mm.getHeapMemorySize()
3438 self.assertTrue(delta4<delta3)
3439 self.assertTrue(delta4>=32*4*2)
3441 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3442 self.assertEqual(len(mm.getGroupsNames()),6)
3443 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3444 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3445 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3446 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3447 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3448 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3449 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3450 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3451 delta5=ref_heap_mem-mm.getHeapMemorySize()
3452 self.assertTrue(delta5<delta4)
3453 self.assertEqual(delta5,0)
3456 # this test checks that setFieldProfile perform a check of the array length
3457 # compared to the profile length. This test also checks that mesh attribute of field
3458 # is not used by setFieldProfile (because across this test mesh is equal to None)
3459 def testCheckCompatibilityPfl1(self):
3460 # building a mesh containing 4 tri3 + 5 quad4
3461 tri=MEDCouplingUMesh("tri",2)
3462 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3463 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3464 tris = [tri.deepCopy() for i in range(4)]
3465 for i,elt in enumerate(tris): elt.translate([i,0])
3466 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3467 quad=MEDCouplingUMesh("quad",2)
3468 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3469 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3470 quads = [quad.deepCopy() for i in range(5)]
3471 for i,elt in enumerate(quads): elt.translate([5+i,0])
3472 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3473 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3474 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3475 m1=m.buildDescendingConnectivity()[0]
3476 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3478 f1ts=MEDFileField1TS()
3479 f=MEDCouplingFieldDouble(ON_NODES)
3480 vals=DataArrayDouble(7) ; vals.iota(1000)
3482 f.setName("anonymous") # f has no mesh it is not a bug
3483 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3484 f1ts.setFieldProfile(f,mm,0,pfl)
3486 f1ts=MEDFileField1TS()
3487 f=MEDCouplingFieldDouble(ON_NODES)
3488 vals=DataArrayDouble(8) ; vals.iota(1000)
3490 f.setName("anonymous") # f has no mesh it is not a bug
3491 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3492 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3494 f1ts=MEDFileField1TS()
3495 f=MEDCouplingFieldDouble(ON_CELLS)
3496 vals=DataArrayDouble(7) ; vals.iota(1000)
3498 f.setName("anonymous") # f has no mesh it is not a bug
3499 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3500 f1ts.setFieldProfile(f,mm,0,pfl)
3501 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3503 f1ts=MEDFileField1TS()
3504 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3505 vals=DataArrayDouble(27) ; vals.iota(1000)
3507 f.setName("anonymous") # f has no mesh it is not a bug
3508 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3510 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])
3511 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3512 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])
3514 f1ts.setFieldProfile(f,mm,0,pfl)
3515 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3516 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3517 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3518 vals=DataArrayDouble(27) ; vals.iota(1000)
3519 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3521 f1ts=MEDFileField1TS()
3522 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3523 vals=DataArrayDouble(25) ; vals.iota(1000)
3525 f.setName("anonymous") # f has no mesh it is not a bug
3526 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3527 f1ts.setFieldProfile(f,mm,0,pfl)
3528 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3529 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3531 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3532 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3534 f1ts=MEDFileField1TS()
3535 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3536 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3538 f1ts.setFieldProfile(f,mm,0,pfl)
3541 def testWRMeshWithNoCells(self):
3542 fname="Pyfile71.med"
3543 a=DataArrayDouble(4) ; a.iota()
3544 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3545 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3547 m.setMeshAtLevel(0,m00)
3548 m.setRenumFieldArr(1,DataArrayInt(list(range(10,26))))
3549 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3553 m=MEDFileMesh.New(fname)
3554 self.assertEqual((),m.getNonEmptyLevels())
3555 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))
3556 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(list(range(10,26)))))
3557 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3560 def testWRQPolyg1(self):
3561 fname="Pyfile72.med"
3562 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3563 m.insertNextCell([0,2,1,3])
3564 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3566 ms = [m.deepCopy() for i in range(4)]
3567 for i,elt in enumerate(ms):
3568 elt.translate([float(i)*1.5,0.])
3570 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3571 m0.convertAllToPoly()
3573 ms = [m.deepCopy() for i in range(5)]
3574 for i,elt in enumerate(ms):
3575 elt.translate([float(i)*1.5,1.5])
3577 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3578 m1.convertAllToPoly()
3579 m1.convertLinearCellsToQuadratic()
3581 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3584 mm.setMeshAtLevel(0,m)
3585 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3586 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3587 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3588 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3593 mm_read=MEDFileUMesh(fname)
3594 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3595 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3596 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3597 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3599 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3601 arr0=DataArrayDouble(9) ; arr0.iota()
3602 arr1=DataArrayDouble(9) ; arr1.iota(100)
3603 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3604 f.setArray(arr) ; f.checkConsistencyLight()
3606 ff=MEDFileField1TS()
3607 ff.setFieldNoProfileSBT(f)
3610 ff_read=MEDFileField1TS(fname)
3611 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3612 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3615 def testLoadIfNecessaryOnFromScratchFields0(self):
3617 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3619 fname="Pyfile77.med"
3620 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3621 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3623 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3624 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3625 m.finishInsertingCells()
3627 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3628 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3632 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3633 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3635 f0.setName("myELNOField")
3636 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3637 f0.setArray(arrs[0])
3638 ff0.appendFieldNoProfileSBT(f0)
3641 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3642 f0.setArray(arrs[1])
3643 ff0.appendFieldNoProfileSBT(f0)
3646 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3647 f0.setArray(arrs[2])
3648 ff0.appendFieldNoProfileSBT(f0)
3651 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3652 f0.setArray(arrs[3])
3653 ff0.appendFieldNoProfileSBT(f0)
3655 for i,arr in enumerate(arrs):
3656 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3657 fs[0][i].loadArraysIfNecessary()
3658 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3660 fs.loadArraysIfNecessary()
3661 for i,arr in enumerate(arrs):
3662 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3664 fs[0].loadArraysIfNecessary()
3665 for i,arr in enumerate(arrs):
3666 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3670 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3671 """ 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.
3673 fname="Pyfile78.med"
3674 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)
3675 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3676 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3678 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
3679 m0.insertNextCell(NORM_TETRA4,elt)
3681 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
3682 m0.insertNextCell(NORM_PYRA5,elt)
3684 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
3685 m0.insertNextCell(NORM_PENTA6,elt)
3687 m0.checkConsistency()
3688 m1=MEDCouplingUMesh(); m1.setName("mesh")
3689 m1.setMeshDimension(2);
3690 m1.allocateCells(5);
3691 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3692 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3693 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3694 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3695 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3696 m1.setCoords(coords);
3697 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3699 m3.insertNextCell(NORM_POINT1,[2])
3700 m3.insertNextCell(NORM_POINT1,[3])
3701 m3.insertNextCell(NORM_POINT1,[4])
3702 m3.insertNextCell(NORM_POINT1,[5])
3705 mm.setMeshAtLevel(0,m0)
3706 mm.setMeshAtLevel(-1,m1)
3707 mm.setMeshAtLevel(-3,m3)
3709 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3710 mm=MEDFileMesh.New(fname)
3712 fmts=MEDFileFieldMultiTS()
3713 f1ts=MEDFileField1TS()
3714 for lev in mm.getNonEmptyLevels():
3715 for gt in mm.getGeoTypesAtLevel(lev):
3716 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3717 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3718 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3719 f.setArray(arr) ; f.setName("f0")
3720 f1ts.setFieldNoProfileSBT(f)
3723 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3724 for lev in [0,-1,-3]:
3725 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3727 fmts.pushBackTimeStep(f1ts)
3731 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3732 fs=MEDFileFields(fname)
3733 self.assertEqual(len(fs),1)
3734 self.assertEqual(len(fs[0]),1)
3736 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),'','')])])
3737 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))
3740 def testMEDFileUMeshSetName(self):
3741 """ 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.
3742 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3744 fname="Pyfile79.med"
3745 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3747 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3748 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)
3749 m0.allocateCells(5);
3750 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3751 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3752 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3753 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3754 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3755 m0.setCoords(coords);
3756 mm.setMeshAtLevel(0,m0)
3757 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3759 m2.insertNextCell(NORM_POINT1,[2])
3760 m2.insertNextCell(NORM_POINT1,[3])
3761 m2.insertNextCell(NORM_POINT1,[4])
3762 m2.insertNextCell(NORM_POINT1,[5])
3763 mm.setMeshAtLevel(-2,m2)
3764 self.assertEqual(mm.getName(),"")
3765 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3766 mm.forceComputationOfParts()
3767 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3769 self.assertEqual(mm.getName(),"abc")
3770 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3771 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3772 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3773 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
3776 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
3777 fileName="Pyfile80.med"
3778 m=MEDCouplingCMesh() ; m.setName("cmesh")
3779 arr=DataArrayDouble(6) ; arr.iota()
3780 m.setCoords(arr,arr)
3781 nbCells=m.getNumberOfCells()
3782 self.assertEqual(25,nbCells)
3783 f=MEDCouplingFieldDouble(ON_CELLS)
3784 f.setName("FieldOnCell") ; f.setMesh(m)
3785 arr=DataArrayDouble(nbCells) ; arr.iota()
3789 fmts=MEDFileFieldMultiTS()
3791 for i in range(nbCells):
3792 t=(float(i)+0.1,i+1,-i-2)
3794 arr2=DataArrayDouble(nbCells)
3795 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
3798 f1ts=MEDFileField1TS()
3799 f1ts.setFieldNoProfileSBT(f)
3800 fmts.pushBackTimeStep(f1ts)
3802 fmts.unloadArraysWithoutDataLoss()
3803 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))
3804 fs=MEDFileFields() ; fs.pushField(fmts)
3805 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))
3806 fs.unloadArraysWithoutDataLoss()
3807 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 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))
3810 f1ts.unloadArraysWithoutDataLoss()
3811 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))
3812 mm.write(fileName,2)
3813 fs.write(fileName,0)
3814 del m,fmts,mm,f,f1ts
3816 mm=MEDFileMesh.New(fileName)
3817 fmts=MEDFileFieldMultiTS(fileName)
3818 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))
3819 fmts.unloadArraysWithoutDataLoss()
3820 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
3821 fmts.loadArraysIfNecessary()
3822 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))
3824 fs=MEDFileFields(fileName)
3825 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))
3826 fs.unloadArraysWithoutDataLoss()
3827 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
3828 fs.loadArraysIfNecessary()
3829 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))
3831 f1ts=MEDFileField1TS(fileName)
3832 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))
3833 f1ts.unloadArraysWithoutDataLoss()
3834 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
3835 f1ts.loadArraysIfNecessary()
3836 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))
3839 def testMEDFileUMeshLoadPart1(self):
3840 """ 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
3841 memory of the returned instance.
3843 fileName="Pyfile81.med"
3844 arr=DataArrayDouble(6) ; arr.iota()
3845 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3846 m=m.buildUnstructured()
3848 m.changeSpaceDimension(3,0.)
3849 infos=["aa [b]","cc [de]","gg [klm]"]
3850 m.getCoords().setInfoOnComponents(infos)
3851 m.checkConsistency()
3853 mm.setMeshAtLevel(0,m)
3854 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
3855 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
3856 mm.setMeshAtLevel(-1,m1)
3857 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])
3858 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])
3859 namesCellL0=DataArrayAsciiChar(25,16)
3860 namesCellL0[:] = ["Cell#%.3d " % (i) for i in range(25)]
3861 renumM1=DataArrayInt([3,4,0,2,1])
3862 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
3863 mm.setRenumFieldArr(0,renum0)
3864 mm.setFamilyFieldArr(0,famField0)
3865 mm.setNameFieldAtLevel(0,namesCellL0)
3866 mm.setRenumFieldArr(-1,renumM1)
3867 mm.setFamilyFieldArr(-1,famFieldM1)
3868 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])
3869 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])
3870 namesNodes=DataArrayAsciiChar(36,16)
3871 namesNodes[:] = ["Node#%.3d " % (i) for i in range(36)]
3872 mm.setRenumFieldArr(1,renum1)
3873 mm.setFamilyFieldArr(1,famField1)
3874 mm.setNameFieldAtLevel(1,namesNodes)
3875 mm.setFamilyId("Fam7",77)
3876 mm.setFamilyId("Fam8",88)
3877 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
3878 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
3879 mm.write(fileName,2)
3881 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
3882 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
3883 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])))
3884 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)
3885 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
3886 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
3887 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
3888 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
3889 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3890 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3891 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3893 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
3894 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
3895 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])))
3896 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)
3897 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
3898 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
3899 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
3900 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
3901 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
3902 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
3903 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
3905 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
3906 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
3907 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
3908 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
3909 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
3910 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
3911 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
3912 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
3913 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])))
3914 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
3915 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)
3916 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
3917 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3918 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3919 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3922 def testMEDFileFieldsLoadPart1(self):
3923 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
3925 fileName="Pyfile82.med"
3927 compos=["aa [kg]","bbb [m/s]"]
3928 arr=DataArrayDouble(6) ; arr.iota()
3929 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3930 m=m.buildUnstructured()
3932 m.changeSpaceDimension(3,0.)
3933 infos=["aa [b]","cc [de]","gg [klm]"]
3934 m.getCoords().setInfoOnComponents(infos)
3935 m.checkConsistency()
3936 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3938 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3939 arr[:,0]=list(range(25))
3940 arr[:,1]=list(range(100,125))
3942 WriteField(fileName,f,True)
3943 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3944 f.setName("FieldNode")
3945 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3946 arr[:,0]=list(range(200,236))
3947 arr[:,1]=list(range(300,336))
3949 f.checkConsistencyLight()
3950 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3953 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
3955 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3956 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
3959 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
3961 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3963 fs[0][0].loadArrays()
3964 arr = DataArrayDouble(12, 2) ; arr[:, 0] = list(range(3, 15)) ; arr[:, 1] = list(range(103, 115))
3965 arr.setInfoOnComponents(compos)
3966 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3967 fs[1][0].loadArrays()
3968 arr = DataArrayDouble(21, 2) ; arr[:, 0] = list(range(203, 224)) ; arr[:, 1] = list(range(303, 324))
3969 arr.setInfoOnComponents(compos)
3970 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3973 def testMEDFileWithoutCells1(self):
3974 fileName="Pyfile83.med"
3975 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
3976 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
3980 mm.write(fileName,2)
3982 mm=MEDFileMesh.New(fileName)
3983 self.assertEqual(mm.getName(),"mesh")
3984 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
3987 def testZipCoordsWithLoadPart1(self):
3988 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
3990 fileName="Pyfile84.med"
3992 compos=["aa [kg]","bbb [m/s]"]
3993 arr=DataArrayDouble(6) ; arr.iota()
3994 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3995 m=m.buildUnstructured()
3997 m.changeSpaceDimension(3,0.)
3998 infos=["aa [b]","cc [de]","gg [klm]"]
3999 m.getCoords().setInfoOnComponents(infos)
4000 m.checkConsistency()
4001 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
4003 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
4004 arr[:,0]=list(range(25))
4005 arr[:,1]=list(range(100,125))
4007 WriteField(fileName,f,True)
4008 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
4009 f.setName("FieldNode")
4010 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
4011 arr[:,0]=list(range(200,236))
4012 arr[:,1]=list(range(300,336))
4014 f.checkConsistencyLight()
4015 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
4018 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
4020 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4021 self.assertEqual(spd.getSlice(),slice(4,6,1))
4022 spd=mm.getPartDefAtLevel(1)
4023 self.assertEqual(spd.getSlice(),slice(4,14,1))
4024 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4025 mm.zipCoords() # <- The important line is here !
4026 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4027 self.assertEqual(spd.getSlice(),slice(4,6,1))
4028 spd=mm.getPartDefAtLevel(1)
4029 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4030 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
4031 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4032 fs[0][0].loadArrays()
4033 arr=DataArrayDouble([(4,104),(5,105)])
4034 arr.setInfoOnComponents(compos)
4035 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4036 fs[1][0].loadArrays()
4037 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
4038 arr.setInfoOnComponents(compos)
4039 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4042 def testMEDFileCMeshSetGroupsAtLevel(self):
4043 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
4045 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
4047 mm=MEDFileCMesh() ; mm.setMesh(m)
4048 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
4049 mm.setGroupsAtLevel(0,[grp])
4050 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
4053 def testMEDFileUMeshBuildExtrudedMesh1(self):
4054 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
4055 fileName="Pyfile85.med"
4058 meshName3DOut="Mesh3D"
4060 d1=DataArrayInt([0,4,20,24])
4061 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
4063 a=DataArrayDouble(6) ; a.iota()
4064 m=MEDCouplingCMesh() ; m.setCoords(a,a)
4065 m=m.buildUnstructured()
4066 d1c=d1.buildComplement(m.getNumberOfCells())
4067 m=m[d1c] ; m.zipCoords()
4068 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
4070 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
4071 m.setName(meshName2D)
4072 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
4073 e=d.deltaShiftIndex().findIdsEqual(1)
4076 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
4077 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
4078 mm.setGroupsAtLevel(0,[grp0])
4079 grp1=e ; grp1.setName("grp1")
4080 mm.setGroupsAtLevel(-1,[grp1])
4081 mm.write(fileName,2)
4083 a=DataArrayDouble(3) ; a.iota()
4084 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
4085 tmp.setName(meshName1D)
4086 tmp.changeSpaceDimension(3)
4087 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
4089 mm1D.setMeshAtLevel(0,tmp)
4090 mm1D.write(fileName,0)
4092 mm2D=MEDFileMesh.New(fileName,meshName2D)
4093 mm1D=MEDFileMesh.New(fileName,meshName1D)
4094 m1D=mm1D.getMeshAtLevel(0)
4095 mm3D=mm2D.buildExtrudedMesh(m1D,0)
4097 self.assertEqual(mm3D.getName(),mm2D.getName())
4098 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
4099 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
4100 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
4101 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
4102 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
4103 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
4104 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
4105 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
4106 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
4107 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.)])
4108 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
4109 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])
4110 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
4111 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])
4112 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
4113 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])
4114 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
4115 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])
4116 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
4117 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])
4118 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
4119 d=DataArrayInt(129) ; d.iota() ; d*=3
4120 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
4122 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
4123 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
4124 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
4125 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
4126 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])))
4127 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])))
4128 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])))
4129 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])))
4130 mm3D.setName("MeshExtruded")
4131 mm3D.write(fileName,0)
4134 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4135 def testMEDFileUMeshPickeling1(self):
4136 outFileName="Pyfile86.med"
4137 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)
4138 c.setInfoOnComponents(["aa","bbb"])
4139 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
4140 m=MEDCouplingUMesh();
4141 m.setMeshDimension(2);
4143 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
4144 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
4145 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
4146 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
4147 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
4148 m.finishInsertingCells();
4150 m.checkConsistencyLight()
4151 m1=MEDCouplingUMesh.New();
4152 m1.setMeshDimension(1);
4153 m1.allocateCells(3);
4154 m1.insertNextCell(NORM_SEG2,2,[1,4])
4155 m1.insertNextCell(NORM_SEG2,2,[3,6])
4156 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
4157 m1.finishInsertingCells();
4159 m1.checkConsistencyLight()
4160 m2=MEDCouplingUMesh.New();
4161 m2.setMeshDimension(0);
4162 m2.allocateCells(4);
4163 m2.insertNextCell(NORM_POINT1,1,[1])
4164 m2.insertNextCell(NORM_POINT1,1,[3])
4165 m2.insertNextCell(NORM_POINT1,1,[2])
4166 m2.insertNextCell(NORM_POINT1,1,[6])
4167 m2.finishInsertingCells();
4169 m2.checkConsistencyLight()
4171 mm=MEDFileUMesh.New()
4172 self.assertTrue(mm.getUnivNameWrStatus())
4173 mm.setName("MyFirstMEDCouplingMEDmesh")
4174 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
4178 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
4180 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
4181 # playing with groups
4182 g1_2=DataArrayInt.New()
4183 g1_2.setValues([1,3],2,1)
4185 g2_2=DataArrayInt.New()
4186 g2_2.setValues([1,2,3],3,1)
4188 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4189 g1_1=DataArrayInt.New()
4190 g1_1.setValues([0,1,2],3,1)
4192 g2_1=DataArrayInt.New()
4193 g2_1.setValues([0,2],2,1)
4195 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4196 g1_N=DataArrayInt.New()
4197 g1_N.setValues(list(range(8)),8,1)
4199 g2_N=DataArrayInt.New()
4200 g2_N.setValues(list(range(9)),9,1)
4202 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4203 mm.createGroupOnAll(0,"GrpOnAllCell")
4204 # check content of mm
4205 t=mm.getGroupArr(0,"G1",False)
4206 self.assertTrue(g1_2.isEqual(t));
4207 t=mm.getGroupArr(0,"G2",False)
4208 self.assertTrue(g2_2.isEqual(t));
4209 t=mm.getGroupArr(-1,"G1",False)
4210 self.assertTrue(g1_1.isEqual(t));
4211 t=mm.getGroupArr(-1,"G2",False)
4212 self.assertTrue(g2_1.isEqual(t));
4213 t=mm.getGroupArr(1,"G1",False)
4214 self.assertTrue(g1_N.isEqual(t));
4215 t=mm.getGroupArr(1,"G2",False)
4216 self.assertTrue(g2_N.isEqual(t));
4217 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4218 t=mm.getGroupArr(0,"GrpOnAllCell")
4220 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
4221 mm2=pickle.loads(st)
4222 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4223 self.assertEqual(mm.getAxisType(),AX_CART)
4225 mm.setAxisType(AX_CYL)
4226 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
4227 mm2=pickle.loads(st)
4228 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4229 self.assertEqual(mm2.getAxisType(),AX_CYL)
4232 def testMEDFileFieldsLoadSpecificEntities1(self):
4235 fileName="Pyfile87.med"
4239 m=MEDCouplingCMesh()
4240 arr=DataArrayDouble(nbNodes) ; arr.iota()
4242 m=m.buildUnstructured()
4245 fmts=MEDFileFieldMultiTS()
4246 for i in range(nbPdt):
4247 f=MEDCouplingFieldDouble(ON_NODES)
4249 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4251 f.setName(fieldName)
4252 f.setTime(float(i),i,0)
4253 fmts.appendFieldNoProfileSBT(f)
4256 mm=MEDFileUMesh() ; mm[0]=m
4257 fmts.write(fileName,2)
4258 mm.write(fileName,0)
4260 fs=MEDFileFields(fileName,False)
4261 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_NODES,NORM_ERROR)],False)
4262 fs.loadArraysIfNecessary()
4263 fs2.loadArraysIfNecessary()
4264 for i in range(nbPdt):
4265 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4267 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1])) ; m1=m1.buildUnstructured() ; m1.simplexize(0)
4268 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([3,4,5]),DataArrayDouble([0,1])) ; m2=m2.buildUnstructured()
4269 m3=MEDCouplingUMesh.MergeUMeshes(m1,m2) ; m3.setName(meshName)
4270 fmts=MEDFileFieldMultiTS()
4271 for i in range(nbPdt):
4272 f=MEDCouplingFieldDouble(ON_CELLS)
4274 arr=DataArrayDouble(8) ; arr.iota() ; arr*=i
4276 f.setName(fieldName)
4277 f.setTime(float(i),i,0)
4278 fmts.appendFieldNoProfileSBT(f)
4280 mm=MEDFileUMesh() ; mm[0]=m3
4282 self.assertEqual(mm.getNonEmptyLevels(),())
4284 self.assertEqual(mm.getNonEmptyLevels(),(0,))
4285 fmts.write(fileName,2)
4286 fs=MEDFileFields(fileName,False)
4287 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3)],False)
4288 fs3=MEDFileFieldMultiTS.LoadSpecificEntities(fileName,fieldName,[(ON_CELLS,NORM_QUAD4)],False)
4289 fs4=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3),(ON_CELLS,NORM_QUAD4)],False)
4290 fs.loadArraysIfNecessary()
4291 fs2.loadArraysIfNecessary()
4292 fs3.loadArraysIfNecessary()
4293 fs4.loadArraysIfNecessary()
4294 for i in range(nbPdt):
4295 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[:6].isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4296 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[6:8].isEqual(fs3[i].getUndergroundDataArray(),1e-12))
4297 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs4[fieldName][i].getUndergroundDataArray(),1e-12))
4301 def testMEDFileLotsOfTSRW1(self):
4304 fileName="Pyfile88.med"
4305 nbPdt=300 # <- perftest = 30000
4308 maxPdt=100 # <- optimum = 500
4309 m=MEDCouplingCMesh()
4310 arr=DataArrayDouble(nbNodes) ; arr.iota()
4312 m=m.buildUnstructured()
4315 nbOfField=nbPdt//maxPdt
4317 for j in range(nbOfField):
4318 fmts=MEDFileFieldMultiTS()
4319 s=DataArray.GetSlice(slice(0,nbPdt,1),j,nbOfField)
4320 for i in range(s.start, s.stop, s.step):
4321 f=MEDCouplingFieldDouble(ON_NODES)
4323 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4325 f.setName("%s_%d"%(fieldName,j))
4326 f.setTime(float(i),i,0)
4327 fmts.appendFieldNoProfileSBT(f)
4332 mm=MEDFileUMesh() ; mm[0]=m
4333 fs.write(fileName,2)
4334 mm.write(fileName,0)
4336 def appendInDict(d,key,val):
4343 allFields=GetAllFieldNames(fileName)
4345 pat=re.compile("([\d]+)([\s\S]+)$")
4346 for st in allFields:
4350 appendInDict(allFieldsDict,m.group(2)[::-1],m.group(1)[::-1])
4353 appendInDict(allFieldsDict,st,'')
4357 for k in allFieldsDict:
4358 if allFieldsDict[k]!=['']:
4359 allFieldsDict[k]=sorted(allFieldsDict[k],key=lambda x: int(x))
4362 for it in allFieldsDict[k]:
4363 fmts2.append(MEDFileFieldMultiTS.LoadSpecificEntities(fileName,k+it,[(ON_NODES,NORM_ERROR)]))
4368 for ii in range(nbIter):
4369 zeResu.pushBackTimeSteps(fmts2.pop())
4372 fs2.pushField(zeResu)
4374 self.assertEqual(fs2[0].getTimeSteps(), [(i, 0, float(i)) for i in range(nbPdt)])
4377 def testMEDFileMeshRearrangeFamIds1(self):
4378 """ Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies."""
4379 fileName="Pyfile89.med"
4380 meshName='Maillage_2'
4382 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)])
4384 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])
4385 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])
4386 m0=MEDCouplingUMesh(meshName,3) ; m0.setCoords(coords)
4387 m0.setConnectivity(c0,c0i)
4390 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])
4391 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])
4392 m1=MEDCouplingUMesh(meshName,2) ; m1.setCoords(coords)
4393 m1.setConnectivity(c1,c1i)
4396 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])
4397 m2=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
4398 m2.setNodalConnectivity(c2) ; m2.setCoords(coords)
4399 mm[-2]=m2.buildUnstructured()
4401 ref0=DataArrayInt(55) ; ref0[:]=0
4402 mm.setFamilyFieldArr(0,ref0)
4403 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]))
4404 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])
4405 mm.setFamilyFieldArr(-1,ref1)
4406 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])
4407 mm.setFamilyFieldArr(-2,ref2)
4409 for f,fid in (('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2)):
4410 mm.setFamilyId(f,fid)
4411 for grp,fams in [('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',))]:
4412 mm.setFamiliesOnGroup(grp,fams)
4413 mm.write(fileName,2)
4415 mm=MEDFileMesh.New(fileName)
4416 grp=mm.getGroup(-1,"Groupe_1")
4417 dai=grp.computeFetchedNodeIds()
4420 mm.rearrangeFamilies() # <- the aim of the test
4421 self.assertTrue(dai.isEqual(mm.getGroupArr(1,"TOTO")))
4422 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(ref0))
4423 self.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(ref1))
4424 self.assertTrue(mm.getFamilyFieldAtLevel(-2).isEqual(ref2))
4425 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])))
4426 allGrps=[('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',)),('TOTO',('Family_9',))]
4427 allFams=[('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2),('Family_9',9)]
4428 self.assertEqual(list(mm.getGroupsNames()),[elt[0] for elt in allGrps])
4429 for elt,fams in allGrps:
4430 self.assertEqual(mm.getFamiliesOnGroup(elt),fams)
4431 self.assertEqual(list(mm.getFamiliesNames()),[elt[0] for elt in allFams])
4432 for elt,eltId in allFams:
4433 self.assertEqual(mm.getFamilyId(elt),eltId)
4436 def testNonRegrCMeshSetFieldPfl1(self):
4437 """ Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile."""
4438 ff=MEDFileField1TS()
4441 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4445 field=MEDCouplingFieldDouble(ON_CELLS)
4447 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4448 field.setName("Field")
4449 field.checkConsistencyLight()
4450 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU") #<- false profile because defined on all cells !
4451 ff.setFieldProfile(field,mm,0,pfl) # <- bug was revealed here !
4452 self.assertEqual(ff.getPfls(),())
4453 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4454 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4455 del ff,mm,field,field2,pfl
4456 # same with unstructured mesh
4457 ff=MEDFileField1TS()
4460 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4463 m=m.buildUnstructured()
4465 field=MEDCouplingFieldDouble(ON_CELLS)
4467 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4468 field.setName("Field")
4469 field.checkConsistencyLight()
4470 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU")
4471 ff.setFieldProfile(field,mm,0,pfl)
4472 self.assertEqual(ff.getPfls(),())
4473 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4474 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4477 def testMEDFileUMeshLinearToQuadraticAndRev1(self):
4479 fileName="Pyfile90.med"
4480 fileName2="Pyfile91.med"
4481 arr=DataArrayDouble(5) ; arr.iota()
4482 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4483 m=m.buildUnstructured()
4484 d=DataArrayInt([3,7,11,15])
4487 m2=m[d.buildComplement(m.getNumberOfCells())]
4488 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
4489 m.changeSpaceDimension(3,0.)
4490 arr=DataArrayDouble(3) ; arr.iota()
4491 m1D=MEDCouplingCMesh() ; m1D.setCoords(arr) ; m1D=m1D.buildUnstructured() ; m1D.changeSpaceDimension(3,0.)
4492 m1D.setCoords(m1D.getCoords()[:,[1,2,0]])
4493 delta=m.getNumberOfNodes()*(m1D.getNumberOfNodes()-1)
4494 m3D=m.buildExtrudedMesh(m1D,0)
4495 m3D.sortCellsInMEDFileFrmt()
4496 m3D.setName(meshName)
4497 m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkConsistency()
4498 m1D=m2D.computeSkin() ; m1D.setName(meshName)
4499 m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
4502 mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D ; mm[-3]=m0D
4503 grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
4504 grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
4505 grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
4506 grpFaceNorth=DataArrayInt([6,7,17,18,19]) ; grpFaceNorth.setName("NorthFace")
4507 diagFace=DataArrayInt([0,1,13,15,17]) ; diagFace.setName("DiagFace")
4508 vol1=DataArrayInt([20,21,23,24]) ; vol1.setName("vol1")
4509 vol2=DataArrayInt([2,3,4,5,21,24]) ; vol2.setName("vol2")
4510 mm.setGroupsAtLevel(0,[vol1,vol2])
4511 mm.setGroupsAtLevel(-1,[grpFaceSouth,grpFaceNorth,diagFace])
4512 mm.setGroupsAtLevel(-2,[grpEdge0,grpEdge1])
4514 mmOut1=mm.linearToQuadratic(0,0.)
4515 mmOut1.write(fileName2,2)
4516 mmOut2=mmOut1.quadraticToLinear(0.)
4517 self.assertTrue(mm.isEqual(mmOut2,1e-12)[0])
4520 def testMEDFileMeshAddGroup1(self):
4521 m=MEDCouplingCMesh()
4522 arrX=DataArrayDouble(9) ; arrX.iota()
4523 arrY=DataArrayDouble(4) ; arrY.iota()
4524 m.setCoords(arrX,arrY)
4528 grp0=DataArrayInt([3,5,6,21,22]) ; grp0.setName("grp0")
4530 grp1=DataArrayInt([3,4,5,8,18,19,22]) ; grp1.setName("grp1")
4532 grp2=DataArrayInt([0,1,2,10,11]) ; grp2.setName("grp2")
4534 grp3=DataArrayInt([23]) ; grp3.setName("grp3")
4536 for grp in [grp0,grp1,grp2,grp3]:
4537 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4538 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2','grp3'))
4540 for grp in [grp0,grp1,grp2,grp3]:
4541 grpNode=grp.deepCopy() ; grpNode+=delta ; grpNode.setName("%s_node"%grp.getName())
4542 mm.addGroup(1,grpNode)
4543 self.assertEqual(mm.getGroupsNames(),('grp0','grp0_node','grp1','grp1_node','grp2','grp2_node','grp3','grp3_node'))
4544 for grp in [grp0,grp1,grp2,grp3]:
4545 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4546 for grp in [grp0,grp1,grp2,grp3]:
4547 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4548 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4549 mm.normalizeFamIdsMEDFile()
4550 for grp in [grp0,grp1,grp2,grp3]:
4551 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4552 for grp in [grp0,grp1,grp2,grp3]:
4553 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4554 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4557 def testMEDFileJoint1(self):
4558 fileName="Pyfile92.med"
4559 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4560 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4564 mm.setDescription("un maillage")
4565 mm.write(fileName,2)
4566 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4567 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4568 one_step_joint=MEDFileJointOneStep()
4569 one_step_joint.pushCorrespondence(cell_correspond)
4570 one_step_joint.pushCorrespondence(node_correspond)
4571 one_joint=MEDFileJoint()
4572 one_joint.pushStep(one_step_joint)
4573 one_joint.setLocalMeshName("maa1")
4574 one_joint.setRemoteMeshName("maa1")
4575 one_joint.setDescription("joint_description")
4576 one_joint.setJointName("joint_1")
4577 one_joint.setDomainNumber(1)
4578 self.assertEqual( one_joint.getLocalMeshName(), "maa1")
4579 self.assertEqual( one_joint.getRemoteMeshName(), "maa1")
4580 self.assertEqual( one_joint.getDescription(), "joint_description")
4581 self.assertEqual( one_joint.getJointName(), "joint_1")
4582 self.assertEqual( one_joint.getDomainNumber(), 1)
4583 joints=MEDFileJoints()
4584 joints.pushJoint(one_joint);
4585 joints.write(fileName,0)
4587 jointsR=MEDFileJoints(fileName,mm.getName())
4588 self.assertEqual( jointsR.getNumberOfJoints(), 1 )
4589 jR = jointsR.getJointAtPos(0)
4590 self.assertTrue( jR.isEqual( one_joint ))
4591 self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
4592 self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
4593 jointsR.destroyJointAtPos(0)
4596 def testMEDFileJoint2(self):
4597 fileNameWr="Pyfile93.med"
4598 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4599 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4603 mm.setDescription("un maillage")
4604 node_correspond=MEDFileJointCorrespondence(DataArrayInt([13,14,15,16]))
4605 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([17,18]),NORM_TETRA4,NORM_PENTA6)
4606 one_step_joint=MEDFileJointOneStep()
4607 two_step_joint=MEDFileJointOneStep()
4608 one_joint=MEDFileJoint()
4609 two_joint=MEDFileJoint()
4610 one_step_joint.pushCorrespondence(node_correspond)
4611 one_joint.pushStep(one_step_joint)
4612 two_step_joint.pushCorrespondence(cell_correspond)
4613 two_step_joint.pushCorrespondence(node_correspond)
4614 two_joint.pushStep(two_step_joint)
4615 one_joint.setLocalMeshName("maa1")
4616 one_joint.setRemoteMeshName("maa1")
4617 one_joint.setDescription("joint_description_1")
4618 one_joint.setJointName("joint_1")
4619 one_joint.setDomainNumber(1)
4620 two_joint.setLocalMeshName("maa1")
4621 two_joint.setRemoteMeshName("maa1")
4622 two_joint.setDescription("joint_description_2")
4623 two_joint.setJointName("joint_2")
4624 two_joint.setDomainNumber(2)
4625 joints=MEDFileJoints()
4626 joints.pushJoint(one_joint)
4627 joints.pushJoint(two_joint)
4628 mm.setJoints( joints )
4629 mm.write(fileNameWr,2)
4631 mm=MEDFileMesh.New(fileNameWr)
4632 self.assertEqual( mm.getNumberOfJoints(), 2)
4633 jointsR = mm.getJoints();
4634 self.assertEqual( jointsR.getMeshName(), mm.getName() )
4635 self.assertEqual( len( jointsR ), 2 )
4636 jointR1 = jointsR[0]
4637 jointR2 = jointsR[1]
4638 self.assertFalse( jointR1 is None )
4639 self.assertFalse( jointR2 is None )
4640 self.assertTrue( jointR1.isEqual( one_joint ))
4641 self.assertTrue( jointR2.isEqual( two_joint ))
4644 def testMEDFileJoint1(self):
4645 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4646 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4647 cell_correspon2=MEDFileJointCorrespondence(DataArrayInt([9,10,11]),NORM_TRI3,NORM_TRI3)
4648 cell_correspon3=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_QUAD4)
4649 joint1st_1=MEDFileJointOneStep()
4650 joint1st_1.pushCorrespondence(cell_correspond)
4651 joint1st_1.pushCorrespondence(node_correspond)
4652 joint1st_2=MEDFileJointOneStep()
4653 joint1st_2.pushCorrespondence(cell_correspond)
4654 joint1st_2.pushCorrespondence(node_correspond)
4655 joint1st_3=MEDFileJointOneStep()
4656 joint1st_3.pushCorrespondence(node_correspond)
4657 joint1st_3.pushCorrespondence(cell_correspond)
4658 joint1st_4=MEDFileJointOneStep()
4659 joint1st_4.pushCorrespondence(cell_correspond)
4660 joint1st_5=MEDFileJointOneStep()
4661 joint1st_5.pushCorrespondence(cell_correspon2)
4662 joint1st_6=MEDFileJointOneStep()
4663 joint1st_6.pushCorrespondence(cell_correspon3)
4664 self.assertTrue( joint1st_1.isEqual( joint1st_2 ))
4665 self.assertTrue( joint1st_1.isEqual( joint1st_3 ))
4666 self.assertFalse( joint1st_1.isEqual( joint1st_4 ))
4667 self.assertFalse( joint1st_4.isEqual( joint1st_5 ))
4668 self.assertFalse( joint1st_4.isEqual( joint1st_6 ))
4669 one_joint=MEDFileJoint()
4670 one_joint.pushStep(joint1st_1)
4671 one_joint.setLocalMeshName("maa1")
4672 one_joint.setRemoteMeshName("maa2")
4673 one_joint.setDescription("joint_description")
4674 one_joint.setJointName("joint_1")
4675 one_joint.setDomainNumber(1)
4676 self.assertEqual( "maa1", one_joint.getLocalMeshName())
4677 self.assertEqual( "maa2", one_joint.getRemoteMeshName())
4678 self.assertEqual( "joint_description", one_joint.getDescription())
4679 self.assertEqual( 1, one_joint.getDomainNumber())
4680 self.assertEqual( "joint_1", one_joint.getJointName())
4683 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
4684 def testMEDFileSafeCall0(self):
4685 """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
4686 fname="Pyfile94.med"
4687 errfname="Pyfile94.err"
4690 # first clean file if needed
4691 if os.path.exists(fname):
4694 # second : build a file from scratch
4695 m=MEDCouplingCMesh()
4696 arr=DataArrayDouble(11) ; arr.iota()
4697 m.setCoords(arr,arr)
4702 # third : change permissions to remove write access on created file
4703 os.chmod(fname, 0o444)
4704 # four : try to append data on file -> check that it raises Exception
4705 f=MEDCouplingFieldDouble(ON_CELLS)
4708 f.setArray(DataArrayDouble(100))
4709 f.getArray()[:]=100.
4710 f.checkConsistencyLight()
4711 f1ts=MEDFileField1TS()
4712 f1ts.setFieldNoProfileSBT(f)
4714 tmp=StdOutRedirect(errfname)
4715 self.assertRaises(InterpKernelException,f1ts.write,fname,0) # it should raise !
4718 if os.path.exists(errfname):
4723 def testUnivStatus1(self):
4724 """ Non regression test to check the effectiveness of univ write status."""
4725 fname="Pyfile95.med"
4726 arr=DataArrayDouble(10) ; arr.iota()
4727 m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh")
4728 mm=MEDFileCMesh() ; mm.setMesh(m)
4729 mm.setUnivNameWrStatus(False) # test is here
4731 mm=MEDFileCMesh(fname)
4732 self.assertEqual(mm.getUnivName(),"")
4733 mm.setUnivNameWrStatus(True)
4735 mm=MEDFileCMesh(fname)
4736 self.assertTrue(mm.getUnivName()!="")
4739 def testEmptyMesh(self):
4740 """ MEDLoader should be able to consistently write and read an empty mesh (coords array
4742 fname = "Pyfile96.med"
4743 m = MEDCouplingUMesh('toto', 2)
4744 m.setCoords(DataArrayDouble([], 0, 2))
4745 m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
4746 mfu = MEDFileUMesh()
4747 mfu.setMeshAtLevel(0, m)
4749 mfu2 = MEDFileUMesh(fname)
4750 self.assertEqual('toto', mfu2.getName())
4751 lvl = mfu2.getNonEmptyLevels()
4752 self.assertEqual((), lvl)
4754 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4755 def testMEDFileUMeshPickeling2(self):
4756 """ Check that pickalization can be performed on a unpickalized instance. Non regression test."""
4762 arr=DataArrayDouble(nbOfNodesPerAxis) ; arr.iota() ; arr/=(nbOfNodesPerAxis-1) ; arr*=hauteur
4763 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured() ; m.setName(name)
4764 mesh=MEDFileUMesh() ; mesh[0]=m
4765 m1=m.computeSkin() ; mesh[-1]=m1
4767 bary1=m1.computeCellCenterOfMass()[:,2]
4768 grp1=bary1.findIdsInRange(hauteur-1e-12,hauteur+1e-12) ; grp1.setName(grpName1)
4769 grp2=bary1.findIdsInRange(0.-1e-12,0.+1e-12) ; grp2.setName(grpName2)
4770 mesh.setGroupsAtLevel(-1,[grp1,grp2])
4772 st=pickle.dumps(mesh,2)
4774 st2=pickle.dumps(mm,2)
4775 mm2=pickle.loads(st2)
4776 self.assertTrue(mesh.isEqual(mm2,1e-12)[0])
4779 def testMEDFileEquivalence1(self):
4780 """ First check of equivalence implementation in MEDFileMesh"""
4781 fileName="Pyfile97.med"
4784 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)])
4785 coo.setInfoOnComponents(["X [Sans_unite]","Y [Sans_unite]","Z [Sans_unite]"])
4786 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])
4787 m1=MEDCoupling1SGTUMesh(meshName,NORM_QUAD4) ; m1.setCoords(coo) ; m1.setNodalConnectivity(connQ4) ; mm[-1]=m1
4788 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])
4789 m0=MEDCoupling1SGTUMesh(meshName,NORM_HEXA8) ; m0.setCoords(coo) ; m0.setNodalConnectivity(connH8) ; mm[0]=m0
4790 mm.getFamilyFieldAtLevel(-1)[:]=-2
4791 mm.getFamilyFieldAtLevel(0)[:]=0
4792 mm.addFamily("HOMARD________-1",-1)
4793 mm.addFamily("HOMARD________-2",-2)
4794 mm.addFamily("HOMARD________-3",-3)
4795 mm.setFamiliesIdsOnGroup("HOMARD",[-1,-2,-3])
4797 eqName="MAILLES_A_RECOLLER_APRES_HOMARD"
4798 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."
4799 mm.initializeEquivalences()
4800 eqs=mm.getEquivalences()
4801 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4802 eq0.setDescription(descEq)
4803 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)])
4804 eq0.setArray(-1,corr)
4805 self.assertEqual(eq0.getCell().size(),1)
4806 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4807 eq0.getCell().clear()
4808 self.assertEqual(eq0.getCell().size(),0)
4809 eq0.getCell().setArrayForType(NORM_QUAD4,corr)
4810 self.assertEqual(eq0.getCell().size(),1)
4811 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4812 mm.killEquivalences()
4813 mm.initializeEquivalences()
4814 eqs=mm.getEquivalences()
4815 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
4816 eq0.setDescription(descEq)
4818 c.setArrayForType(NORM_QUAD4,corr)
4819 self.assertEqual(eq0.getCell().size(),1)
4820 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
4822 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4823 self.assertEqual(mm2.getEquivalences().size(),1)
4824 self.assertTrue(mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4).isEqual(corr))
4825 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=2
4826 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
4827 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=0
4828 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4829 mm.write(fileName,2)
4831 mm3=MEDFileMesh.New(fileName)
4832 self.assertTrue(mm.isEqual(mm3,1e-12)[0])
4835 def testMEDFileForFamiliesPlayer1(self):
4836 """Non regression bug EDF11911. For serial killers using same family name to store both cells and nodes ! Only sky is the limit."""
4837 fileName="Pyfile98.med"
4839 magicSt="%s%%04i"%(MEDFileMesh.GetMagicFamilyStr())
4840 arr=DataArrayDouble(4) ; arr.iota()
4841 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4842 m=m.buildUnstructured()
4845 mm.setName(meshName)
4846 mm.setFamilyId("FAMILLE_ZERO",0)
4847 mm.getFamilyFieldAtLevel(0)[-3:]=-4
4848 mm.setFamilyId("RIDF%s"%(magicSt%0),-4)
4849 mm.setGroupsOnFamily("RIDF%s"%(magicSt%0),["RID"])
4850 d=DataArrayInt(16) ; d[:]=0 ; d[[1,2,4,5]]=3
4851 mm.setFamilyFieldArr(1,d)
4852 mm.setFamilyId("RIDF%s"%(magicSt%1),3)
4853 mm.setGroupsOnFamily("RIDF%s"%(magicSt%1),["RID"])
4854 self.assertEqual(mm.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4855 self.assertEqual(mm.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF")) # <- the aim of test is here !
4856 self.assertEqual(mm.getFamiliesIdsOnGroup("RID"),(-4,3))
4857 mm.write(fileName,2)
4858 # now read such funny file !
4859 mm2=MEDFileMesh.New(fileName) # <- normaly mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
4860 self.assertTrue(mm.isEqual(mm2,1e-16))
4861 self.assertEqual(mm2.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
4862 self.assertEqual(mm2.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF"))
4863 self.assertEqual(mm2.getFamiliesIdsOnGroup("RID"),(-4,3))# <- very important too !
4866 def testCartesianizer1(self):
4867 """ This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. """
4869 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
4870 mm=MEDFileUMesh() ; mm[0]=m ; mm.forceComputationOfParts()
4871 d0=DataArrayInt(16) ; d0[:]=0
4872 d1=DataArrayInt(9) ; d1[:]=0
4873 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4874 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4875 ref0=mm.getCoords().getHiddenCppPointer()
4876 ref1=mm[0].getNodalConnectivity().getHiddenCppPointer()
4877 self.assertEqual(ref0,mm[0].getCoords().getHiddenCppPointer())
4878 ref2=mm[0].getNodalConnectivityIndex().getHiddenCppPointer()
4879 ref3=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer()
4880 self.assertEqual(ref0,mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4881 mm.setAxisType(AX_CYL) #<- important
4882 mm2=mm.cartesianize() # the trigger
4883 self.assertEqual(mm2.getAxisType(),AX_CART)
4884 mm.setAxisType(AX_CART) # this is here only to avoid complaints
4885 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4886 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4887 self.assertTrue(ref0==mm.getCoords().getHiddenCppPointer()) # <- here important
4888 self.assertTrue(ref0!=mm2.getCoords().getHiddenCppPointer()) # <- here important
4889 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2[0].getCoords().getHiddenCppPointer())
4890 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
4891 self.assertEqual(mm2[0].getNodalConnectivity().getHiddenCppPointer(),ref1) # <- here very important
4892 self.assertEqual(mm2[0].getNodalConnectivityIndex().getHiddenCppPointer(),ref2) # <- here very important
4893 self.assertEqual(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer(),ref3) # <- here very important
4894 self.assertEqual(mm2.getName(),mm.getName())
4895 self.assertEqual(mm2.getDescription(),mm.getDescription())
4896 self.assertEqual(mm2.getTime(),mm.getTime())
4897 self.assertEqual(mm2.getTime(),mm.getTime())
4898 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4899 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4900 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4901 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4902 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4903 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4904 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4905 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4907 mm.setAxisType(AX_CART)
4908 mm2=mm.cartesianize() # the trigger
4909 self.assertEqual(mm2.getAxisType(),AX_CART)
4910 self.assertTrue(isinstance(mm2,MEDFileUMesh))
4911 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4912 # CurveLinearMesh non cart
4913 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildCurveLinear()
4914 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4915 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4916 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4917 ref0=mm.getMesh().getCoords().getHiddenCppPointer()
4918 mm2=mm.cartesianize() # the trigger
4919 self.assertEqual(mm2.getAxisType(),AX_CART)
4920 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4921 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
4922 self.assertTrue(ref0==mm.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4923 self.assertTrue(ref0!=mm2.getMesh().getCoords().getHiddenCppPointer()) # <- here important
4924 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4925 self.assertEqual(mm2.getName(),mm.getName())
4926 self.assertEqual(mm2.getDescription(),mm.getDescription())
4927 self.assertEqual(mm2.getTime(),mm.getTime())
4928 self.assertEqual(mm2.getTime(),mm.getTime())
4929 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4930 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4931 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4932 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4933 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4934 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4935 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4936 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4937 # CurveLinearMesh cart
4938 mm.setAxisType(AX_CART)
4939 mm2=mm.cartesianize() # the trigger
4940 self.assertEqual(mm2.getAxisType(),AX_CART)
4941 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4942 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4944 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4945 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
4946 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
4947 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
4948 mm2=mm.cartesianize() # the trigger
4949 self.assertEqual(mm2.getAxisType(),AX_CART)
4950 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
4951 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
4952 self.assertEqual(mm2.getName(),mm.getName())
4953 self.assertEqual(mm2.getDescription(),mm.getDescription())
4954 self.assertEqual(mm2.getTime(),mm.getTime())
4955 self.assertEqual(mm2.getTime(),mm.getTime())
4956 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
4957 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
4958 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
4959 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
4960 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
4961 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
4962 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
4963 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
4965 mm.setAxisType(AX_CART)
4966 mm2=mm.cartesianize() # the trigger
4967 self.assertEqual(mm2.getAxisType(),AX_CART)
4968 self.assertTrue(isinstance(mm2,MEDFileCMesh))
4969 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
4972 def testCheckCoherency(self):
4973 m2 = MEDCouplingUMesh("2d", 2)
4974 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
4975 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
4976 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
4977 mum = MEDFileUMesh()
4978 mum.setMeshAtLevel(0, m2)
4979 mum.setMeshAtLevel(-1, m1)
4980 mum.checkConsistency()
4981 mum2 = mum.deepCopy()
4984 arr = DataArrayInt([2]*4)
4985 mum.setFamilyFieldArr(1, arr); arr.reAlloc(35);
4986 self.assertRaises(InterpKernelException, mum.checkConsistency)
4987 mum=mum2; mum2=mum.deepCopy();
4988 arr = DataArrayInt([2]*4)
4989 mum.setRenumFieldArr(1, arr); arr.reAlloc(35);
4990 self.assertRaises(InterpKernelException, mum.checkConsistency)
4991 mum=mum2; mum2=mum.deepCopy();
4992 mum.setRenumFieldArr(1, DataArrayInt([2]*4))
4993 self.assertRaises(InterpKernelException, mum.checkConsistency)
4994 mum=mum2; mum2=mum.deepCopy();
4995 arr = DataArrayAsciiChar(['tutu x']*4)
4996 mum.setNameFieldAtLevel(1, arr); arr.reAlloc(35);
4997 self.assertRaises(InterpKernelException, mum.checkConsistency)
5000 mum=mum2; mum2=mum.deepCopy();
5001 arr = DataArrayInt([2]*2)
5002 mum.setFamilyFieldArr(0, arr); arr.reAlloc(35);
5003 self.assertRaises(InterpKernelException, mum.checkConsistency)
5004 mum=mum2; mum2=mum.deepCopy();
5005 arr = DataArrayInt([2]*2)
5006 mum.setRenumFieldArr(0, arr); arr.reAlloc(35);
5007 self.assertRaises(InterpKernelException, mum.checkConsistency)
5008 mum=mum2; mum2=mum.deepCopy();
5009 mum.setRenumFieldArr(0, DataArrayInt([2]*2))
5010 self.assertRaises(InterpKernelException, mum.checkConsistency)
5011 mum=mum2; mum2=mum.deepCopy();
5012 arr = DataArrayAsciiChar(['tutu x']*2)
5013 mum.setNameFieldAtLevel(0, arr); arr.reAlloc(35);
5014 self.assertRaises(InterpKernelException, mum.checkConsistency)
5017 mum=mum2; mum2=mum.deepCopy();
5018 arr = DataArrayInt([2]*5)
5019 mum.setFamilyFieldArr(-1, arr); arr.reAlloc(35);
5020 self.assertRaises(InterpKernelException, mum.checkConsistency)
5021 mum=mum2; mum2=mum.deepCopy();
5022 arr = DataArrayInt([2]*5)
5023 mum.setRenumFieldArr(-1, arr); arr.reAlloc(35);
5024 self.assertRaises(InterpKernelException, mum.checkConsistency)
5025 mum=mum2; mum2=mum.deepCopy();
5026 mum.setRenumFieldArr(-1, DataArrayInt([2]*5))
5027 self.assertRaises(InterpKernelException, mum.checkConsistency)
5028 mum=mum2; mum2=mum.deepCopy();
5029 arr = DataArrayAsciiChar(['tutu x']*5)
5030 mum.setNameFieldAtLevel(-1, arr); arr.reAlloc(35);
5031 self.assertRaises(InterpKernelException, mum.checkConsistency)
5033 def testCheckSMESHConsistency(self):
5034 m2 = MEDCouplingUMesh("2d", 2)
5035 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5036 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5037 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5038 mum = MEDFileUMesh()
5039 mum.setMeshAtLevel(0, m2)
5040 mum.setMeshAtLevel(-1, m1)
5041 mum.checkConsistency()
5042 mum.checkSMESHConsistency()
5043 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5044 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5045 mum.setRenumFieldArr(0, n2)
5046 mum.setRenumFieldArr(-1, n1)
5047 self.assertRaises(InterpKernelException, mum.checkSMESHConsistency)
5048 mum.setRenumFieldArr(-1, n1+100)
5049 mum.checkSMESHConsistency()
5052 def testClearNodeAndCellNumbers(self):
5053 m2 = MEDCouplingUMesh("2d", 2)
5054 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5055 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5056 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5057 mum = MEDFileUMesh()
5058 mum.setMeshAtLevel(0, m2)
5059 mum.setMeshAtLevel(-1, m1)
5060 mum.checkConsistency()
5061 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5062 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5063 mum.setRenumFieldArr(0, n2)
5064 mum.setRenumFieldArr(-1, n1)
5065 mum.clearNodeAndCellNumbers()
5066 mum.checkSMESHConsistency()
5069 def testCMeshSetFamilyFieldArrNull(self):
5071 fname="Pyfile99.med"
5072 arrX=DataArrayDouble([0,1,2,3])
5073 arrY=DataArrayDouble([0,1,2])
5074 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m.setName(meshName)
5075 mm=MEDFileCMesh() ; mm.setMesh(m)
5076 famCellIds=DataArrayInt([0,-2,-2,-1,-2,0])
5077 famNodeIds=DataArrayInt([0,0,0,3,4,1,2,7,2,1,0,0])
5078 mm.setFamilyFieldArr(0,famCellIds)
5079 mm.setFamilyFieldArr(1,famNodeIds)
5081 mm=MEDFileMesh.New(fname)
5082 self.assertTrue(mm.getFamilyFieldAtLevel(0) is not None)
5083 self.assertTrue(mm.getFamilyFieldAtLevel(1) is not None)
5084 mm.setFamilyFieldArr(0,None)#<- bug was here
5085 mm.setFamilyFieldArr(1,None)#<- bug was here
5086 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
5087 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
5089 self.assertTrue(mm3.getFamilyFieldAtLevel(0) is None)
5090 self.assertTrue(mm3.getFamilyFieldAtLevel(1) is None)
5092 mm2=MEDFileMesh.New(fname)
5093 self.assertTrue(mm2.getFamilyFieldAtLevel(0) is None)
5094 self.assertTrue(mm2.getFamilyFieldAtLevel(1) is None)
5097 def testAppendFieldProfileOnIntField(self):
5098 fname="Pyfile100.med"
5099 arrX=DataArrayDouble([0,1,2,3])
5100 arrY=DataArrayDouble([0,1,2])
5101 mesh=MEDCouplingCMesh() ; mesh.setCoords(arrX,arrY) ; mesh.setName("Mesh")
5105 fmts=MEDFileIntFieldMultiTS()
5107 pfl=DataArrayInt([1,3,5]) ; pfl.setName(pflName)
5108 f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(mesh)
5109 fieldName="FieldOnCell"
5110 f.setTime(1.2,1,1) ; f.setName(fieldName)
5111 arr=DataArrayInt([101,102,103]) ; f.setArray(arr)
5112 fmts.appendFieldProfile(f,mm,0,pfl)
5117 mm=MEDFileMesh.New(fname)
5118 fmts=MEDFileAnyTypeFieldMultiTS.New(fname)
5119 self.assertTrue(isinstance(fmts,MEDFileIntFieldMultiTS))
5120 self.assertEqual(fmts.getName(),fieldName)
5121 self.assertEqual(len(fmts),1)
5123 ftest,pfltest=f1ts.getFieldWithProfile(ON_CELLS,0,mm)
5124 self.assertEqual(pfltest.getName(),pflName)
5125 self.assertEqual(ftest.getName(),fieldName)
5126 self.assertTrue(ftest.isEqualWithoutConsideringStr(arr))
5127 ftest2=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
5128 self.assertTrue(ftest2.getArray().isEqualWithoutConsideringStr(arr))
5129 self.assertEqual(ftest2.getTime(),f.getTime())
5130 self.assertEqual(ftest2.getMesh().getNumberOfCells(),len(arr))
5133 def testMEDFileFieldEasyField1(self):
5134 """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."""
5135 ## Basic test on cells on top level
5136 fname="Pyfile101.med"
5139 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5140 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5142 m.insertNextCell(NORM_TRI3,[0,1,2])
5143 m.insertNextCell(NORM_TRI3,[3,4,5])
5144 m.insertNextCell(NORM_TRI3,[6,7,8])
5145 m.insertNextCell(NORM_TRI3,[9,10,11])
5146 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5147 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5150 arr0=DataArrayDouble([10,11,12,13,100,101])
5151 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5152 f.setName(fieldName) ; f.setTime(2.,6,7)
5154 ff=MEDFileFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5156 arr2=arr0+1000 ; f.setArray(arr2)
5157 f.setTime(3.,8,9) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5161 mm=MEDFileMesh.New(fname)
5162 f1ts=MEDFileField1TS(fname,fieldName,6,7)
5163 ftst0=f1ts.field(mm)
5164 self.assertTrue(f0.isEqual(ftst0,1e-12,1e-12))
5165 f1ts=MEDFileField1TS(fname,fieldName,8,9)
5166 ftst1=f1ts.field(mm)
5167 self.assertTrue(f1.isEqual(ftst1,1e-12,1e-12))
5168 fmts=MEDFileFieldMultiTS(fname,fieldName)
5169 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,1e-12))
5170 ## Basic test on nodes on top level
5171 f2=MEDCouplingFieldDouble(ON_NODES) ; arr2=DataArrayDouble([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5172 f2.setName(fieldName)
5174 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5176 mm=MEDFileMesh.New(fname)
5177 f1ts=MEDFileField1TS(fname,fieldName,23,24)
5178 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,1e-12))
5179 fmts=MEDFileFieldMultiTS(fname,fieldName)
5180 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,1e-12))
5182 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)
5183 f3.setName(fieldName) ; f3.checkConsistencyLight()
5184 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5186 mm=MEDFileMesh.New(fname)
5187 f1ts=MEDFileField1TS(fname,fieldName,2,3)
5188 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5190 f4=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5191 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])
5192 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)
5193 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)
5194 f4.checkConsistencyLight()
5195 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5197 mm=MEDFileMesh.New(fname)
5198 f1ts=MEDFileField1TS(fname,fieldName,4,5)
5199 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5202 def testMEDFileFieldEasyField2(self):
5203 """Same thantestMEDFileFieldEasyField1 except that here intfields are considered.
5204 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."""
5205 ## Basic test on cells on top level
5206 fname="Pyfile102.med"
5209 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5210 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5212 m.insertNextCell(NORM_TRI3,[0,1,2])
5213 m.insertNextCell(NORM_TRI3,[3,4,5])
5214 m.insertNextCell(NORM_TRI3,[6,7,8])
5215 m.insertNextCell(NORM_TRI3,[9,10,11])
5216 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5217 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5220 arr0=DataArrayInt([10,11,12,13,100,101])
5221 f=MEDCouplingFieldInt(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5222 f.setName(fieldName) ; f.setTime(2.,6,7)
5224 ff=MEDFileIntFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5226 arr2=arr0+1000 ; f.setArray(arr2)
5227 f.setTime(3.,8,9) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f)
5231 mm=MEDFileMesh.New(fname)
5232 f1ts=MEDFileIntField1TS(fname,fieldName,6,7)
5233 ftst0=f1ts.field(mm)
5234 self.assertTrue(f0.isEqual(ftst0,1e-12,0))
5235 f1ts=MEDFileIntField1TS(fname,fieldName,8,9)
5236 ftst1=f1ts.field(mm)
5237 self.assertTrue(f1.isEqual(ftst1,1e-12,0))
5238 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5239 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,0))
5240 ## Basic test on nodes on top level
5241 f2=MEDCouplingFieldInt(ON_NODES) ; arr2=DataArrayInt([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5242 f2.setName(fieldName)
5244 ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5246 mm=MEDFileMesh.New(fname)
5247 f1ts=MEDFileIntField1TS(fname,fieldName,23,24)
5248 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,0))
5249 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5250 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,0))
5252 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)
5253 f3.setName(fieldName) ; f3.checkConsistencyLight()
5254 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5256 mm=MEDFileMesh.New(fname)
5257 f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5258 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
5260 f4=MEDCouplingFieldInt(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5261 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])
5262 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)
5263 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)
5264 f4.checkConsistencyLight()
5265 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5267 mm=MEDFileMesh.New(fname)
5268 f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5269 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
5272 def testMEDFileFieldEasyField3(self):
5273 """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."""
5274 fname="Pyfile103.med"
5277 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5278 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5280 m.insertNextCell(NORM_TRI3,[0,1,2])
5281 m.insertNextCell(NORM_TRI3,[3,4,5])
5282 m.insertNextCell(NORM_TRI3,[6,7,8])
5283 m.insertNextCell(NORM_TRI3,[9,10,11])
5284 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5285 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5287 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5289 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5290 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5294 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5295 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5297 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,1,2)
5298 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5299 # here f1 lying on level -1 not 0 check if "field" method detect it !
5300 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5301 f1.setMesh(mm[-1]) # -1 is very important
5303 f1.checkConsistencyLight()
5305 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5307 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,3,4)
5308 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5310 f3=MEDCouplingFieldDouble(ON_GAUSS_NE)
5311 f3.setMesh(mm[-1]) # this line is important
5312 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)
5313 f3.setName(fieldName) ; f3.checkConsistencyLight()
5314 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5316 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,2,3)
5317 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5319 f4=MEDCouplingFieldDouble(ON_GAUSS_PT)
5320 f4.setMesh(mm[-1]) # this line is important
5321 f4.setName(fieldName)
5322 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])
5323 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)
5324 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)
5325 f4.checkConsistencyLight()
5326 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5327 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,4,5)
5328 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5331 def testMEDFileFieldEasyField4(self):
5332 """ Same than testMEDFileFieldEasyField3 but with integers"""
5333 fname="Pyfile104.med"
5336 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5337 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5339 m.insertNextCell(NORM_TRI3,[0,1,2])
5340 m.insertNextCell(NORM_TRI3,[3,4,5])
5341 m.insertNextCell(NORM_TRI3,[6,7,8])
5342 m.insertNextCell(NORM_TRI3,[9,10,11])
5343 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5344 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5346 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5348 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5349 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5353 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5354 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5356 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,1,2)
5357 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
5358 # here f1 lying on level -1 not 0 check if "field" method detect it !
5359 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5360 f1.setMesh(mm[-1]) # -1 is very important
5362 f1.checkConsistencyLight()
5364 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5366 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,3,4)
5367 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
5369 f3=MEDCouplingFieldInt(ON_GAUSS_NE)
5370 f3.setMesh(mm[-1]) # this line is important
5371 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)
5372 f3.setName(fieldName) ; f3.checkConsistencyLight()
5373 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5375 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5376 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
5378 f4=MEDCouplingFieldInt(ON_GAUSS_PT)
5379 f4.setMesh(mm[-1]) # this line is important
5380 f4.setName(fieldName)
5381 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])
5382 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)
5383 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)
5384 f4.checkConsistencyLight()
5385 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5386 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5387 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
5390 def testMEDFileFieldEasyField5(self):
5391 """More and more difficult now look at how profiles are managed by "field" method."""
5392 fname="Pyfile105.med"
5395 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5396 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5398 m.insertNextCell(NORM_TRI3,[0,1,2])
5399 m.insertNextCell(NORM_TRI3,[3,4,5])
5400 m.insertNextCell(NORM_TRI3,[6,7,8])
5401 m.insertNextCell(NORM_TRI3,[9,10,11])
5402 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5403 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5406 pfl=DataArrayInt([0,2,3,5]) ; pfl.setName("pfl")
5407 m2=m.deepCopy()[pfl] ; m2.setName(m.getName())
5409 arr0=DataArrayDouble([10,11,12,13])
5410 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m2)
5411 f.setName(fieldName) ; f.setTime(2.,6,7) ; f.checkConsistencyLight()
5412 ff=MEDFileFieldMultiTS() ; ff.appendFieldProfile(f,mm,0,pfl) # ff is a field on profile
5415 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5416 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5417 # more complicated -> multi level
5418 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5420 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5421 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5423 mm2[0]=m0 ; mm2[-1]=m
5425 ff=MEDFileField1TS() ; ff.setFieldProfile(f,mm2,-1,pfl)
5427 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5428 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5431 def testExtractPart1(self):
5432 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)])
5434 m0=MEDCouplingUMesh(meshName,2) ; m0.setCoords(coo) ; m0.allocateCells()
5435 m0.insertNextCell(NORM_TRI3,[8,4,3])
5436 m0.insertNextCell(NORM_TRI3,[8,9,4])
5437 m0.insertNextCell(NORM_TRI3,[7,13,8])
5438 m0.insertNextCell(NORM_TRI3,[7,12,13])
5439 m0.insertNextCell(NORM_TRI3,[0,6,1])
5440 m0.insertNextCell(NORM_TRI3,[0,5,6])
5441 m0.insertNextCell(NORM_QUAD4,[1,6,7,2])
5442 m0.insertNextCell(NORM_QUAD4,[2,7,8,3])
5443 m0.insertNextCell(NORM_QUAD4,[8,13,14,9])
5444 m0.insertNextCell(NORM_QUAD4,[6,11,12,7])
5445 m0.insertNextCell(NORM_QUAD4,[5,10,11,6])
5447 m1=MEDCouplingUMesh(meshName,1) ; m1.setCoords(coo) ; m1.allocateCells()
5448 m1.insertNextCell(NORM_SEG2,[10,5])
5449 m1.insertNextCell(NORM_SEG2,[5,0])
5450 m1.insertNextCell(NORM_SEG2,[0,1])
5451 m1.insertNextCell(NORM_SEG2,[1,2])
5452 m1.insertNextCell(NORM_SEG2,[2,3])
5453 m1.insertNextCell(NORM_SEG2,[3,4])
5454 m1.insertNextCell(NORM_SEG2,[4,9])
5455 m1.insertNextCell(NORM_SEG2,[9,14])
5456 m1.insertNextCell(NORM_SEG2,[14,13])
5457 m1.insertNextCell(NORM_SEG2,[13,12])
5458 m1.insertNextCell(NORM_SEG2,[12,11])
5459 m1.insertNextCell(NORM_SEG2,[11,10])
5461 mm[0]=m0 ; mm[-1]=m1
5462 arr0=DataArrayInt([0,1,2,3,4,6,7,8,12,13])
5464 tab[0]=DataArrayInt([0,2,3,4,6,7])
5465 tab[-1]=DataArrayInt([2,3,4,5,9])
5467 self.assertTrue(mm.deduceNodeSubPartFromCellSubPart(tab).isEqual(arr0))
5471 fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5474 arr0_0=DataArrayDouble([100,101,102,103,104,105,106,107,108,109,110]) ; arr0_0.setInfoOnComponents(ic)
5475 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*t0) ; f0.setArray(arr0_0)
5476 f0.setMesh(m0) ; f0.setName(fname0)
5477 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setTime(*t0) ; f1.setArray(DataArrayDouble([200,201,202,203,204,205,206,207,208,209,210,211]))
5478 f1.setMesh(m1) ; f1.setName(fname0) ; f1.getArray().setInfoOnComponents(ic)
5479 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]))
5480 f2.setMesh(m0) ; f2.setName(fname0) ; f2.getArray().setInfoOnComponents(ic)
5481 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.setFieldNoProfileSBT(f2)
5482 fmts.pushBackTimeStep(f1ts)
5484 mmOut=mm.extractPart(tab)
5486 fsPart0=fs.extractPart(tab,mm)
5487 self.assertEqual(len(fsPart0),1)
5489 self.assertEqual(len(fmtsP),1)
5491 self.assertRaises(InterpKernelException,f1ts.field,mmOut)
5493 self.assertTrue(mmOut[0].computeCellCenterOfMass().isEqual(m0[tab[0]].computeCellCenterOfMass(),1e-12))
5494 self.assertTrue(mmOut[-1].computeCellCenterOfMass().isEqual(m1[tab[-1]].computeCellCenterOfMass(),1e-12))
5496 m0Part=m0.deepCopy()[tab[0]] ; m0Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m0Part.setName(m0.getName())
5497 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5498 m1Part=m1.deepCopy()[tab[-1]] ; m1Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m1Part.setName(m0.getName())
5499 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5500 self.assertTrue(mmOut[-1].isEqual(m1Part,1e-12))
5502 f0Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mmOut) ; f0Part.checkConsistencyLight()
5503 self.assertEqual(f0Part.getTypeOfField(),ON_CELLS)
5504 self.assertTrue(f0Part.getMesh().isEqual(m0Part,1e-12))
5505 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic)
5506 self.assertTrue(f0Part.getArray().isEqual(arr0Exp,1e-12)) ; self.assertEqual(f0Part.getTime(),list(t0))
5507 f1Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,-1,mmOut) ; f1Part.checkConsistencyLight()
5508 self.assertEqual(f1Part.getTypeOfField(),ON_CELLS)
5509 self.assertTrue(f1Part.getMesh().isEqual(m1Part,1e-12))
5510 arr1Exp=DataArrayDouble([202,203,204,205,209]) ; arr1Exp.setInfoOnComponents(ic)
5511 self.assertTrue(f1Part.getArray().isEqual(arr1Exp,1e-12)) ; self.assertEqual(f1Part.getTime(),list(t0))
5513 f2Part=f1ts.getFieldOnMeshAtLevel(ON_NODES,0,mmOut) ; f2Part.checkConsistencyLight()
5514 arr2Exp=DataArrayDouble([300,301,302,303,304,306,307,308,312,313]) ; arr2Exp.setInfoOnComponents(ic)
5515 self.assertTrue(f2Part.getArray().isEqual(arr2Exp,1e-12)) ; self.assertEqual(f2Part.getTime(),list(t0))
5517 fs=MEDFileFields() ; fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5518 tss=[(16.5,3,4),(17.5,4,5),(18.5,5,6)]
5519 for i,tt in enumerate(tss):
5520 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*tt)
5521 myarr=arr0_0+i*1000.
5523 f0.setMesh(m0) ; f0.setName(fname0) ; f0.getArray().setInfoOnComponents(ic)
5524 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; fmts.pushBackTimeStep(f1ts)
5526 fsPart1=fs.extractPart(tab,mm)
5527 self.assertEqual(len(fsPart1),1)
5529 self.assertEqual(len(fmtsP),len(tss))
5530 for i,(f1tsP,tt) in enumerate(zip(fmtsP,tss)):
5531 fPart=f1tsP.field(mmOut) ; fPart.checkConsistencyLight()
5532 self.assertEqual(fPart.getTypeOfField(),ON_CELLS)
5533 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic) ; arr0Exp+=i*1000.
5534 self.assertTrue(fPart.getMesh().isEqual(m0Part,1e-12))
5535 self.assertTrue(fPart.getArray().isEqual(arr0Exp,1e-12))
5536 self.assertEqual(fPart.getTime(),list(tt))
5540 def testSymmetryPlusAggregationMFD1(self):
5541 """ Testing of MEDFileData::Aggregate and MEDFileUMesh::Aggregate and MEDFileUMesh::getAllDistributionOfType """
5542 fname1="Pyfile106_1.med"
5543 fname2="Pyfile106_2.med"
5544 fname3="Pyfile106_3.med"
5547 da1=DataArrayDouble([1,2,10,3,4,11,5,6,12,7,8,13],4,3) ; da1.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5549 mm1_0=MEDCouplingUMesh(meshName,3) ; mm1_0.allocateCells()
5550 mm1_0.setCoords(da1)
5551 mm1_0.insertNextCell(NORM_TETRA4,[0,1,2,3])
5552 mm1_0.insertNextCell(NORM_TETRA4,[4,5,6,7])
5553 mm1_0.insertNextCell(NORM_PENTA6,[8,9,10,11,12,13])
5554 mm1_0.insertNextCell(NORM_PENTA6,[14,15,16,17,18,19])
5555 mm1_0.insertNextCell(NORM_PENTA6,[20,21,22,23,24,25])
5557 mm1.setFamilyFieldArr(0,DataArrayInt([1,2,3,4,5]))
5558 mm1.setRenumFieldArr(0,DataArrayInt([11,12,13,14,15]))
5560 mm1_1=MEDCouplingUMesh(meshName,2) ; mm1_1.allocateCells()
5561 mm1_1.setCoords(da1)
5562 mm1_1.insertNextCell(NORM_TRI3,[0,1,2])
5563 mm1_1.insertNextCell(NORM_TRI3,[3,4,5])
5564 mm1_1.insertNextCell(NORM_QUAD4,[6,7,8,9])
5565 mm1_1.insertNextCell(NORM_QUAD4,[10,11,12,13])
5566 mm1_1.insertNextCell(NORM_QUAD4,[14,15,16,17])
5567 mm1_1.insertNextCell(NORM_QUAD4,[18,19,20,21])
5569 mm1.setFamilyFieldArr(-1,DataArrayInt([6,7,8,9,10,11]))
5570 mm1.setRenumFieldArr(-1,DataArrayInt([16,17,18,19,20,21]))
5571 for i in range(1,10):
5572 mm1.setFamilyId("F%d"%i,i)
5573 mm1.setFamilyId("FAMILLE_ZERO",0)
5574 mm1.setFamilyId("H1",100)
5575 mm1.setFamiliesOnGroup("myGRP",["F2","F6"])
5576 mm1.setFamiliesOnGroup("myGRP1",["F2","F6"])
5577 mm1.setFamilyFieldArr(1,DataArrayInt([12,13,14,15]))
5578 mm1.setRenumFieldArr(1,DataArrayInt([22,23,24,25]))
5581 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]"])
5583 mm2_0=MEDCouplingUMesh(meshName,3) ; mm2_0.allocateCells()
5584 mm2_0.setCoords(da1)
5585 mm2_0.insertNextCell(NORM_TETRA4,[100,101,102,103])
5586 mm2_0.insertNextCell(NORM_TETRA4,[104,105,106,107])
5587 mm2_0.insertNextCell(NORM_TETRA4,[108,109,110,111])
5588 mm2_0.insertNextCell(NORM_PENTA6,[112,113,114,115,116,117])
5590 mm2.setFamilyFieldArr(0,DataArrayInt([40,41,42,43]))
5591 mm2.setRenumFieldArr(0,DataArrayInt([50,51,52,53]))
5593 mm2_1=MEDCouplingUMesh(meshName,2) ; mm2_1.allocateCells()
5594 mm2_1.setCoords(da1)
5595 mm2_1.insertNextCell(NORM_TRI3,[100,101,102])
5596 mm2_1.insertNextCell(NORM_TRI3,[103,104,105])
5597 mm2_1.insertNextCell(NORM_TRI3,[106,107,108])
5598 mm2_1.insertNextCell(NORM_QUAD4,[109,110,111,112])
5599 mm2_1.insertNextCell(NORM_QUAD4,[113,114,115,116])
5600 mm2_1.insertNextCell(NORM_QUAD4,[117,118,119,120])
5601 mm2_1.insertNextCell(NORM_QUAD4,[121,122,123,124])
5602 mm2_1.insertNextCell(NORM_QUAD4,[125,126,127,128])
5604 mm2.setFamilyFieldArr(-1,DataArrayInt([200,201,202,203,204,205,206,207]))
5605 mm2.setRenumFieldArr(-1,DataArrayInt([300,301,302,303,304,305,306,307]))
5606 for i in range(1,12):
5607 mm2.setFamilyId("G%d"%i,i+30)
5608 mm2.setFamilyId("H1",100)
5609 mm2.setFamilyId("FAMILLE_ZERO",0)
5610 mm2.setFamiliesOnGroup("myGRP",["G2","G6"])
5611 mm2.setFamiliesOnGroup("myGRP2",["G4","G7"])
5612 mm2.setFamilyFieldArr(1,DataArrayInt([112,113,114,115,116]))
5613 mm2.setRenumFieldArr(1,DataArrayInt([122,123,124,125,126]))
5615 mm=MEDFileUMesh.Aggregate([mm1,mm2])
5617 def CheckMesh(tester,mm):
5618 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]"])
5619 tester.assertTrue(mm.getCoords().isEqual(cooExp,1e-12))
5620 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])))
5621 tester.assertTrue(mm[0].getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,32,39,46,53])))
5622 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])))
5623 tester.assertTrue(mm[-1].getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20,25,30,35,40,45,50,55,60,65])))
5624 tester.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([1,2,40,41,42,3,4,5,43])))
5625 tester.assertTrue(mm.getNumberFieldAtLevel(0).isEqual(DataArrayInt([11,12,50,51,52,13,14,15,53])))
5626 tester.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(DataArrayInt([6,7,200,201,202,8,9,10,11,203,204,205,206,207])))
5627 tester.assertTrue(mm.getNumberFieldAtLevel(-1).isEqual(DataArrayInt([16,17,300,301,302,18,19,20,21,303,304,305,306,307])))
5628 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)]
5629 tester.assertEqual(set(mm.getFamiliesNames()),set([elt[0] for elt in refFamIds]))
5630 tester.assertEqual(set([mm.getFamilyId(elt) for elt in mm.getFamiliesNames()]),set([elt[1] for elt in refFamIds]))
5631 tester.assertEqual(mm.getGroupsNames(),('myGRP','myGRP1','myGRP2'))
5632 tester.assertEqual(mm.getAllDistributionOfTypes(),[(NORM_TRI3,5),(NORM_QUAD4,9),(NORM_TETRA4,5),(NORM_PENTA6,4),(NORM_ERROR,9)])
5639 infoc=["dd [W]","eee [kA]"]
5641 fmts1=MEDFileFieldMultiTS()
5642 f1ts1=MEDFileField1TS()
5643 f1_1=MEDCouplingFieldDouble(ON_CELLS) ; f1_1.setMesh(mm1[0]) ; f1_1.setName(fieldName)
5644 arr1=DataArrayDouble([(10,110),(11,111),(12,112),(13,113),(14,114)])
5645 arr1.setInfoOnComponents(infoc)
5646 f1_1.setArray(arr1) ; f1_1.setTime(*t1) ; f1_1.setTimeUnit("ms")
5647 f1_1.checkConsistencyLight()
5648 f1ts1.setFieldNoProfileSBT(f1_1)
5650 f1_2=MEDCouplingFieldDouble(ON_CELLS) ; f1_2.setMesh(mm1[-1]) ; f1_2.setName(fieldName)
5651 arr2=DataArrayDouble([(15,115),(16,116),(17,117),(18,118),(19,119),(20,120)])
5652 arr2.setInfoOnComponents(infoc)
5653 f1_2.setArray(arr2) ; f1_2.setTime(*t1) ; f1_2.setTimeUnit("ms")
5654 f1_2.checkConsistencyLight()
5655 f1ts1.setFieldNoProfileSBT(f1_2)
5656 f1_3=MEDCouplingFieldDouble(ON_NODES) ; f1_3.setMesh(mm1[0]) ; f1_3.setName(fieldName)
5657 arr3=DataArrayDouble([(21,121),(22,122),(23,123),(24,124)])
5658 arr3.setInfoOnComponents(infoc)
5659 f1_3.setArray(arr3) ; f1_3.setTime(*t1) ; f1_3.setTimeUnit("ms")
5660 f1_3.checkConsistencyLight()
5661 f1ts1.setFieldNoProfileSBT(f1_3)
5662 fmts1.pushBackTimeStep(f1ts1)
5664 f1ts2=f1ts1.deepCopy()
5665 f1ts2.setTime(t2[1],t2[2],t2[0])
5666 f1ts2.getUndergroundDataArray()[:]+=2000
5667 fmts1.pushBackTimeStep(f1ts2)
5669 fmts2=MEDFileFieldMultiTS()
5670 f1ts3=MEDFileField1TS()
5671 f2_1=MEDCouplingFieldDouble(ON_CELLS) ; f2_1.setMesh(mm2[0]) ; f2_1.setName(fieldName)
5672 arr4=DataArrayDouble([(50,150),(51,151),(52,152),(53,153)])
5673 arr4.setInfoOnComponents(infoc)
5674 f2_1.setArray(arr4) ; f2_1.setTime(*t1) ; f2_1.setTimeUnit("ms")
5675 f2_1.checkConsistencyLight()
5676 f1ts3.setFieldNoProfileSBT(f2_1)
5677 f2_2=MEDCouplingFieldDouble(ON_CELLS) ; f2_2.setMesh(mm2[-1]) ; f2_2.setName(fieldName)
5678 arr5=DataArrayDouble([(54,154),(55,155),(56,156),(57,157),(158,158),(59,159),(60,160),(61,161)])
5679 arr5.setInfoOnComponents(infoc)
5680 f2_2.setArray(arr5) ; f2_2.setTime(*t1) ; f2_2.setTimeUnit("ms")
5681 f2_2.checkConsistencyLight()
5682 f1ts3.setFieldNoProfileSBT(f2_2)
5683 f2_3=MEDCouplingFieldDouble(ON_NODES) ; f2_3.setMesh(mm2[0]) ; f2_3.setName(fieldName)
5684 arr6=DataArrayDouble([(62,162),(63,163),(64,164),(65,165),(66,166)])
5685 arr6.setInfoOnComponents(infoc)
5686 f2_3.setArray(arr6) ; f2_3.setTime(*t1) ; f2_3.setTimeUnit("ms")
5687 f2_3.checkConsistencyLight()
5688 f1ts3.setFieldNoProfileSBT(f2_3)
5689 fmts2.pushBackTimeStep(f1ts3)
5691 f1ts4=f1ts3.deepCopy()
5692 f1ts4.setTime(t2[1],t2[2],t2[0])
5693 f1ts4.getUndergroundDataArray()[:]+=2000
5694 fmts2.pushBackTimeStep(f1ts4)
5697 mfd1.setMeshes(MEDFileMeshes())
5698 mfd1.getMeshes().pushMesh(mm1)
5699 mfd1.setFields(MEDFileFields())
5700 mfd1.getFields().pushField(fmts1)
5703 mfd2.setMeshes(MEDFileMeshes())
5704 mfd2.getMeshes().pushMesh(mm2)
5705 mfd2.setFields(MEDFileFields())
5706 mfd2.getFields().pushField(fmts2)
5708 mfd=MEDFileData.Aggregate([mfd1,mfd2])
5709 def CheckMFD(tester,mfd):
5710 tester.assertEqual(len(mfd.getMeshes()),1)
5711 tester.assertEqual(len(mfd.getFields()),1)
5712 CheckMesh(self,mfd.getMeshes()[0])
5713 tester.assertEqual(len(mfd.getFields()[0]),2)
5714 zeF1=mfd.getFields()[0][0]
5715 zeF1_1=zeF1.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
5716 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
5717 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5718 ref.renumberCells(o2n)
5719 tester.assertTrue(ref.isEqual(zeF1_1,1e-12,1e-12))
5720 zeF1_2=zeF1.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
5721 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
5722 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5723 ref.renumberCells(o2n)
5724 tester.assertTrue(ref.isEqual(zeF1_2,1e-12,1e-12))
5725 zeF1_3=zeF1.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
5726 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
5727 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5728 ref.renumberCells(o2n)
5729 tester.assertTrue(ref.isEqual(zeF1_3,1e-12,1e-12))
5731 zeF2=mfd.getFields()[0][1]
5732 zeF2_1=zeF2.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
5733 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
5734 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5735 ref.renumberCells(o2n)
5736 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5737 tester.assertTrue(ref.isEqual(zeF2_1,1e-12,1e-12))
5738 zeF2_2=zeF2.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
5739 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
5740 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5741 ref.renumberCells(o2n)
5742 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5743 tester.assertTrue(ref.isEqual(zeF2_2,1e-12,1e-12))
5744 zeF2_3=zeF2.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
5745 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
5746 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
5747 ref.renumberCells(o2n)
5748 ref.setTime(*t2) ; ref.getArray()[:]+=2000
5749 tester.assertTrue(ref.isEqual(zeF2_3,1e-12,1e-12))
5751 mfd1.write(fname1,2) ; mfd2.write(fname2,2)
5752 mfd=MEDFileData.Aggregate([MEDFileData(fname1),MEDFileData(fname2)])
5756 def testExtrudedMesh1(self):
5757 fname="Pyfile107.med"
5758 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
5759 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ) ; mesh3D.setName("mesh")
5760 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
5763 ex2=mm.convertToExtrudedMesh()
5764 mm2=MEDFileMesh.New(fname)
5765 ex3=mm2.convertToExtrudedMesh()
5766 self.assertTrue(ex.isEqual(ex2,1e-12))
5767 self.assertTrue(ex.isEqual(ex3,1e-12))
5770 @unittest.skipUnless(LooseVersion(MEDFileVersionStr())>=LooseVersion('3.2.1'),"This test requires at least MEDFile version 3.2.1")
5771 def testWriteInto30(self):
5772 fname="Pyfile108.med"
5773 fname2="Pyfile109.med"
5774 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(DataArrayDouble([0,0,1,1],2,2)) ; m.allocateCells() ; m.insertNextCell(NORM_SEG2,[1,0])
5775 mm=MEDFileUMesh() ; mm[0]=m
5776 mm.setFamilyId("FAMILLE_ZERO",0)
5779 assert(LooseVersion(MEDFileVersionOfFileStr(fname)).version[:2]==[3,0]) # checks that just written MED file has a version == 3.0.x
5780 mm2=MEDFileUMesh(fname)
5781 self.assertTrue(mm.isEqual(mm2,1e-12))
5784 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
5787 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5788 def testPickelizationOfMEDFileObjects1(self):
5789 fname="Pyfile110.med"
5790 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)
5791 m0=MEDCouplingUMesh("Mesh",2)
5793 m0.insertNextCell(NORM_TRI3,[1,4,2])
5794 m0.insertNextCell(NORM_TRI3,[4,5,2])
5795 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
5796 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
5797 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
5798 m0.finishInsertingCells()
5800 m1=MEDCouplingUMesh(m0.getName(),1)
5802 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
5804 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
5806 m1.finishInsertingCells()
5810 m.setMeshAtLevel(0,m0)
5811 m.setMeshAtLevel(-1,m1)
5813 dt=3 ; it=2 ; tim=4.5
5814 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
5815 fieldNode0.setName("fieldNode0")
5816 fieldNode0.setTime(tim,dt,it)
5817 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
5818 arr=DataArrayDouble([10,11,12,13,14])
5819 fieldNode0.setArray(arr)
5820 f0=MEDFileField1TS()
5821 f0.setFieldProfile(fieldNode0,m,0,pfl0)
5822 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
5823 fieldNode1.setName("fieldNode1")
5824 fieldNode1.setTime(tim,dt,it)
5825 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
5826 arr1=DataArrayDouble([20,21,22,23,24,25,26])
5827 fieldNode1.setArray(arr1)
5828 f1=MEDFileField1TS()
5829 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
5831 mfd.setMeshes(MEDFileMeshes()) ; mfd.setFields(MEDFileFields())
5832 mfd.getMeshes().pushMesh(m)
5833 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(f0)
5834 mfd.getFields().pushField(fmts)
5835 # first start gently
5838 self.assertEqual(len(mfd2.getMeshes()),1)
5839 self.assertEqual(len(mfd2.getFields()),1)
5840 self.assertEqual(len(mfd2.getFields()[0]),1)
5841 self.assertTrue(mfd2.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
5842 ff2=mfd2.getFields()[0][0].field(mfd2.getMeshes()[0])
5843 ff =mfd.getFields()[0][0].field(mfd.getMeshes()[0])
5844 self.assertTrue(ff2.isEqual(ff,1e-12,1e-12))
5845 # OK now end of joke -> serialization of MEDFileData
5846 st=pickle.dumps(mfd,pickle.HIGHEST_PROTOCOL)
5847 mfd3=pickle.loads(st)
5849 self.assertEqual(len(mfd3.getMeshes()),1)
5850 self.assertEqual(len(mfd3.getFields()),1)
5851 self.assertEqual(len(mfd3.getFields()[0]),1)
5852 self.assertTrue(mfd3.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
5853 ff3=mfd3.getFields()[0][0].field(mfd3.getMeshes()[0])
5854 self.assertTrue(ff3.isEqual(ff,1e-12,1e-12))
5855 # serialization of MEDFileFields
5856 st=pickle.dumps(mfd.getFields(),pickle.HIGHEST_PROTOCOL)
5857 fs4=pickle.loads(st)
5858 ff4=fs4[0][0].field(mfd3.getMeshes()[0])
5859 self.assertTrue(ff4.isEqual(ff,1e-12,1e-12))
5860 # serialization of MEDFileFieldMulitTS
5861 st=pickle.dumps(mfd.getFields()[0],pickle.HIGHEST_PROTOCOL)
5862 fmts5=pickle.loads(st)
5863 ff5=fmts5[0].field(mfd3.getMeshes()[0])
5864 self.assertTrue(ff5.isEqual(ff,1e-12,1e-12))
5865 # serialization of MEDFileField1TS
5866 st=pickle.dumps(mfd.getFields()[0][0],pickle.HIGHEST_PROTOCOL)
5867 f1ts6=pickle.loads(st)
5868 ff6=f1ts6.field(mfd3.getMeshes()[0])
5869 self.assertTrue(ff6.isEqual(ff,1e-12,1e-12))
5870 # serialization of MEDFileMeshes
5871 st=pickle.dumps(mfd.getMeshes(),pickle.HIGHEST_PROTOCOL)
5872 ms7=pickle.loads(st)
5873 self.assertEqual(len(ms7),1)
5874 self.assertTrue(ms7[0].isEqual(mfd.getMeshes()[0],1e-12))
5877 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5878 def testPickelizationOfMEDFileObjects2(self):
5880 self.testMEDMesh6() # generates MEDFileMesh5.med file
5881 mm=MEDFileMesh.New("MEDFileMesh5.med")
5882 self.assertTrue(isinstance(mm,MEDFileCMesh))
5883 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
5884 mm2=pickle.loads(st)
5885 self.assertTrue(isinstance(mm2,MEDFileCMesh))
5886 self.assertTrue(mm.getMesh().isEqual(mm2.getMesh(),1e-12))
5888 self.testCurveLinearMesh1() # generates Pyfile55.med
5889 mm=MEDFileMesh.New("Pyfile55.med")
5890 self.assertTrue(isinstance(mm,MEDFileCurveLinearMesh))
5891 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
5892 mm3=pickle.loads(st)
5893 self.assertTrue(isinstance(mm3,MEDFileCurveLinearMesh))
5894 self.assertTrue(mm.getMesh().isEqual(mm3.getMesh(),1e-12))
5895 self.testInt32InMEDFileFieldStar1()# generates Pyfile63.med
5896 # MEDFileIntFieldMultiTS
5897 fs4=MEDFileFields("Pyfile63.med")
5898 ms4=MEDFileMeshes("Pyfile63.med")
5899 self.assertTrue(isinstance(fs4[0],MEDFileIntFieldMultiTS))
5900 st=pickle.dumps(fs4[0],pickle.HIGHEST_PROTOCOL)
5901 fmts5=pickle.loads(st)
5902 self.assertEqual(len(fs4[0]),len(fmts5))
5903 self.assertTrue(isinstance(fmts5,MEDFileIntFieldMultiTS))
5904 self.assertTrue(fmts5[0].field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
5905 # MEDFileIntField1TS
5906 st=pickle.dumps(fs4[0][0],pickle.HIGHEST_PROTOCOL)
5907 f1ts6=pickle.loads(st)
5908 self.assertTrue(isinstance(f1ts6,MEDFileIntField1TS))
5909 self.assertTrue(f1ts6.field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
5911 self.testParameters1()# generates Pyfile56.med
5912 params=MEDFileParameters("Pyfile56.med")
5913 st=pickle.dumps(params,pickle.HIGHEST_PROTOCOL)
5914 params7=pickle.loads(st)
5915 self.assertEqual(len(params),len(params7))
5916 for i in range(len(params)):
5917 self.assertTrue(params[i].isEqual(params7[i],1e-12)[0])
5921 def testGlobalNumOnNodes1(self):
5922 """Test global number on nodes here. Used by partitionners."""
5923 fname="Pyfile112.med"
5924 arr=DataArrayDouble(5) ; arr.iota()
5925 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
5929 self.assertTrue(not mm.getGlobalNumFieldAtLevel(1))
5930 d=DataArrayInt([7,8,9,2,0])
5932 mm.setGlobalNumFieldAtLevel(1,d)
5933 mm.checkConsistency()
5934 self.assertRaises(InterpKernelException,mm.setGlobalNumFieldAtLevel,1,d[::2])
5935 mm.checkConsistency()
5936 self.assertEqual(d.getHiddenCppPointer(),mm.getGlobalNumFieldAtLevel(1).getHiddenCppPointer())
5937 self.assertTrue(mm.getGlobalNumFieldAtLevel(1).isEqual(dRef))
5939 mm2=MEDFileMesh.New(fname)
5940 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5941 self.assertTrue(mm2.getGlobalNumFieldAtLevel(1).isEqual(dRef))
5942 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,10)
5943 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
5944 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,7)
5945 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5948 def testPartialReadOfEntities1(self):
5949 """Test for advanced API on read to speed up read phase for users with "huge" number of time steps (more than 10 000)."""
5950 fname="Pyfile113.med"
5951 arr=DataArrayDouble(5) ; arr.iota()
5952 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
5959 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName(fieldName)
5960 f1.setArray(DataArrayDouble([0.,0.1,0.2,0.3,0.4]))
5962 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(m) ; f2.setName(fieldName)
5963 f2.setArray(DataArrayDouble([1.,1.1,1.2,1.3]))
5965 f1ts=MEDFileField1TS()
5966 f1ts.setFieldNoProfileSBT(f1)
5967 f1ts.setFieldNoProfileSBT(f2)
5968 self.assertEqual(set(f1ts.getTypesOfFieldAvailable()),set([ON_NODES,ON_CELLS]))
5969 f1ts_2=f1ts.deepCopy()
5970 f1ts_2.getUndergroundDataArray()[:]+=2
5971 f1ts_2.setTime(3,4,6.)
5972 fmts=MEDFileFieldMultiTS()
5973 fmts.pushBackTimeStep(f1ts)
5974 fmts.pushBackTimeStep(f1ts_2)
5979 ent=MEDFileEntities.BuildFrom([(ON_NODES,NORM_ERROR)])
5980 mm=MEDFileMesh.New(fname)
5981 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)
5983 self.assertEqual(len(fs),1)
5985 self.assertEqual(len(fmts),2)
5986 ff0=fmts[0] ; ff1=fmts[1]
5987 self.assertEqual(ff0.getTypesOfFieldAvailable(),[ON_NODES]) # only NODES have been loaded
5988 self.assertTrue(ff0.field(mm).isEqual(f1,1e-12,1e-12))
5989 f3=f1.deepCopy() ; f3+=2. ; f3.setTime(6.,3,4)
5990 self.assertTrue(ff1.field(mm).isEqual(f3,1e-12,1e-12))
5993 def testFloat32InMEDFileFieldStar1(self):
5994 """Like testInt32InMEDFileFieldStar1 but with float32 :)"""
5995 fname="Pyfile114.med"
5996 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
5997 f1=f1.convertToFloatField()
5999 mm1=MEDFileUMesh.New()
6000 mm1.setCoords(m1.getCoords())
6001 mm1.setMeshAtLevel(0,m1)
6002 mm1.setName(m1.getName())
6004 ff1=MEDFileFloatField1TS()
6005 ff1.setFieldNoProfileSBT(f1)
6006 a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
6007 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6008 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6010 ff2=MEDFileAnyTypeField1TS.New(fname)
6011 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
6012 self.assertEqual(ff2.getTime(),[0,1,2.0])
6013 self.assertTrue(isinstance(ff2,MEDFileFloatField1TS))
6014 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6015 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6016 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6018 c=ff2.getUndergroundDataArray() ; c*=2
6019 ff2.write(fname,0) # 2 time steps in
6020 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
6021 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
6022 self.assertEqual(len(ffs1),2)
6023 self.assertTrue(isinstance(ffs1,MEDFileFloatFieldMultiTS))
6024 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6025 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6026 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
6027 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6028 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
6029 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
6030 self.assertTrue(a.getArray().isEqual(2*f1.getArray(),1e-7))
6031 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
6032 self.assertTrue(a.isEqual(f1,1e-12,1e-12)) ; f1.getArray()[:]/=2
6033 bc=DataArrayFloat(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6035 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6038 self.assertTrue(bc.isEqual(3*f1.getArray(),1e-7))
6039 nf1=MEDCouplingFieldFloat(ON_NODES)
6040 nf1.setTime(9.,10,-1)
6041 nf1.setMesh(f1.getMesh())
6042 narr=DataArrayFloat(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
6043 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
6044 nff1=MEDFileFloatField1TS.New()
6045 nff1.setFieldNoProfileSBT(nf1)
6046 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
6047 self.assertEqual(nff1.getTime(),[10,-1,9.0])
6050 nf2=MEDCouplingFieldFloat(ON_NODES)
6051 nf2.setTime(19.,20,-11)
6052 nf2.setMesh(f1.getMesh())
6053 narr2=DataArrayFloat(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
6054 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
6055 nff2=MEDFileFloatField1TS.New()
6056 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
6057 nff2.setFieldProfile(nf2,mm1,0,npfl)
6058 nff2.getFieldWithProfile(ON_NODES,0,mm1)
6059 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
6060 self.assertTrue(b.isEqual(npfl))
6061 self.assertTrue(a.isEqual(narr2,1e-7))
6063 nff2bis=MEDFileFloatField1TS(fname,"VectorFieldOnNodesPfl")
6064 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
6065 self.assertTrue(b.isEqual(npfl))
6066 self.assertTrue(a.isEqual(narr2,1e-7))
6068 nf3=MEDCouplingFieldDouble(ON_NODES)
6069 nf3.setName("VectorFieldOnNodesDouble")
6070 nf3.setTime(29.,30,-21)
6071 nf3.setMesh(f1.getMesh())
6072 nf3.setArray(f1.getMesh().getCoords())
6073 nff3=MEDFileField1TS.New()
6074 nff3.setFieldNoProfileSBT(nf3)
6076 fs=MEDFileFields(fname)
6077 self.assertEqual(len(fs),4)
6078 ffs=[it for it in fs]
6079 self.assertTrue(isinstance(ffs[0],MEDFileFloatFieldMultiTS))
6080 self.assertTrue(isinstance(ffs[1],MEDFileFloatFieldMultiTS))
6081 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
6082 self.assertTrue(isinstance(ffs[3],MEDFileFloatFieldMultiTS))
6084 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray(),1e-7))
6085 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray(),1e-7))
6086 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2,1e-7))
6087 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr,1e-7))
6088 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
6090 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
6091 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
6092 self.assertRaises(InterpKernelException,MEDFileFloatFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
6093 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
6094 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
6095 self.assertRaises(InterpKernelException,MEDFileFloatField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
6096 MEDFileFloatField1TS.New(fname,"VectorFieldOnNodes",10,-1)
6097 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
6099 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
6100 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
6101 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
6102 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
6105 def testPenta18_1(self):
6106 """EDF8478 : Test of read/write of penta18"""
6107 fname="Pyfile115.med"
6108 arr=DataArrayDouble([
6109 (0.,1.,1.),(0.,0.,1.),(1.,0.,1.),
6110 (0.,1.,0.),(0.,0.,0.),(1.,0.,0.),
6111 (0.,0.5,1.),(0.5,0.,1.),(0.5,0.5,1.),
6112 (0.,0.5,0.),(0.5,0.,0.),(0.5,0.5,0.),
6113 (0.,1.,0.5),(0.,0.,0.5),(1.,0.,0.5),
6114 (0.,0.5,0.5),(0.5,0.,0.5),(0.5,0.5,0.5)])
6115 m=MEDCouplingUMesh("mesh",3)
6118 m.insertNextCell(NORM_PENTA18,list(range(18)))
6119 m.checkConsistencyLight()
6121 f=MEDCouplingFieldDouble(ON_NODES)
6123 f.setName("FieldOnPenta18")
6124 f.setArray(DataArrayDouble(list(range(18))))
6125 f.checkConsistencyLight()
6127 m2,d,di,rd,rdi=m.buildDescendingConnectivity()
6129 f2=MEDCouplingFieldDouble(ON_NODES)
6131 f2.setName("FieldOnPenta18Sub")
6132 f2.setArray(DataArrayDouble(list(range(18))))
6133 f2.checkConsistencyLight()
6134 WriteField(fname,f2,True)
6136 self.assertTrue(f2.isEqual(f3,1e-12,1e-12))
6137 self.assertEqual(f3.getMesh().getNumberOfCells(),1)
6138 self.assertEqual(f3.getMesh().getTypeOfCell(0),NORM_PENTA18)
6141 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
6142 def testMedFileCapabilityToCryOnNewFeatureWritingIntoOldFiles(self):
6143 fname="Pyfile116.med"
6144 errfname="Pyfile116.err"
6145 c=DataArrayDouble([0,1,2,3])
6146 m=MEDCouplingCMesh()
6148 m=m.buildUnstructured()
6152 f=MEDCouplingFieldInt(ON_CELLS)
6153 f.setMesh(m) ; arr2=DataArrayInt(m.getNumberOfCells()) ; arr2.iota()
6156 f1ts=MEDFileIntField1TS()
6157 f1ts.setFieldNoProfileSBT(f)
6159 f1ts.write30(fname,0)
6161 f=MEDCouplingFieldFloat(ON_CELLS)
6162 f.setMesh(m) ; arr2=DataArrayFloat(m.getNumberOfCells()) ; arr2.iota()
6165 f1ts=MEDFileFloatField1TS()
6166 f1ts.setFieldNoProfileSBT(f)
6169 tmp=StdOutRedirect(errfname)
6170 self.assertRaises(InterpKernelException,f1ts.write30,fname,0)
6173 if os.path.exists(errfname):
6179 if __name__ == "__main__":