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