1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2022 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,WriteInTmpDir
27 from MEDLoaderDataForTest import TestWriteUMeshesRW1,TestMultiFieldShuffleRW1,GeneratePyfile7,GeneratePyfile10,GeneratePyfile12,GeneratePyfile13,GeneratePyfile14,GeneratePyfile18,GeneratePyfile19
28 from distutils.version import LooseVersion
31 if sys.version_info.major < 3:
32 import cPickle as pickle
36 class StdOutRedirect(object):
37 def __init__(self,fileName):
40 self.stdoutOld=os.dup(2)
41 self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
42 fd2=os.dup2(self.fdOfSinkFile,2)
43 self.origPyVal=sys.stderr
44 class FlushFile(object):
53 return self.f.isatty()
57 sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
61 sys.stderr=self.origPyVal
63 os.dup2(self.stdoutOld,2)
64 os.close(self.stdoutOld)
66 class MEDLoaderTest3(unittest.TestCase):
68 def testMEDMesh1(self):
69 GeneratePyfile18(self)
70 fileName="Pyfile18.med"
71 mname="ExampleOfMultiDimW"
72 medmesh=MEDFileMesh.New(fileName,mname)
73 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
74 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
75 m1_0=medmesh.getLevel0Mesh(True)
76 m1_1=ReadUMeshFromFile(fileName,mname,0)
77 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
78 m2_0=medmesh.getLevelM1Mesh(True)
79 m2_1=ReadUMeshFromFile(fileName,mname,-1)
80 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
84 def testMEDMesh2(self):
85 GeneratePyfile10(self)
86 fileName="Pyfile10.med"
88 outFileName="MEDFileMesh1.med"
89 medmesh=MEDFileUMesh.New(fileName,mname)
90 self.assertEqual((0,),medmesh.getNonEmptyLevels())
91 m1_0=medmesh.getLevel0Mesh(True)
92 m1_1=ReadUMeshFromFile(fileName,mname,0)
93 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
94 g1_0=medmesh.getGroup(0,"mesh2",True)
95 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
96 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
97 g1_0=medmesh.getGroup(0,"mesh3",True)
98 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
99 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
100 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
101 g1_1=ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
102 g1_1.setName(g1_0.getName())
103 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
104 g1_0=medmesh.getFamily(0,"Family_-3",True)
105 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
106 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
107 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
108 g1_1=ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
109 g1_1.setName(g1_0.getName())
110 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
111 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
112 medmesh.write(outFileName,2);
113 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
114 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
115 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
116 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
117 famn=medmesh.getFamilyNameGivenId(0)
118 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
120 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
121 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
122 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
123 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
124 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
127 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
129 def testMEDMesh3(self):
130 outFileName="MEDFileMesh3.med"
131 c=DataArrayDouble.New()
132 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 ];
133 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
134 c.setValues(coords,9,2)
135 m=MEDCouplingUMesh.New();
136 m.setMeshDimension(2);
138 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
139 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
140 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
141 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
142 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
143 m.finishInsertingCells();
145 m.checkConsistencyLight()
146 m1=MEDCouplingUMesh.New();
147 m1.setMeshDimension(1);
149 m1.insertNextCell(NORM_SEG2,2,[1,4])
150 m1.insertNextCell(NORM_SEG2,2,[3,6])
151 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
152 m1.finishInsertingCells();
154 m1.checkConsistencyLight()
155 m2=MEDCouplingUMesh.New();
156 m2.setMeshDimension(0);
158 m2.insertNextCell(NORM_POINT1,1,[1])
159 m2.insertNextCell(NORM_POINT1,1,[3])
160 m2.insertNextCell(NORM_POINT1,1,[2])
161 m2.insertNextCell(NORM_POINT1,1,[6])
162 m2.finishInsertingCells();
164 m2.checkConsistencyLight()
166 mm=MEDFileUMesh.New()
167 self.assertTrue(mm.getUnivNameWrStatus())
168 mm.setName("MyFirstMEDCouplingMEDmesh")
169 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
171 mm.setMeshAtLevel(-1,m1);
172 mm.setMeshAtLevel(0,m);
173 mm.setMeshAtLevel(-2,m2);
174 # playing with groups
175 g1_2=DataArrayInt.New()
176 g1_2.setValues([1,3],2,1)
178 g2_2=DataArrayInt.New()
179 g2_2.setValues([1,2,3],3,1)
181 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
182 g1_1=DataArrayInt.New()
183 g1_1.setValues([0,1,2],3,1)
185 g2_1=DataArrayInt.New()
186 g2_1.setValues([0,2],2,1)
188 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
189 g1_N=DataArrayInt.New()
190 g1_N.setValues(list(range(8)),8,1)
192 g2_N=DataArrayInt.New()
193 g2_N.setValues(list(range(9)),9,1)
195 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
196 mm.createGroupOnAll(0,"GrpOnAllCell")
197 # check content of mm
198 t=mm.getGroupArr(0,"G1",False)
199 self.assertTrue(g1_2.isEqual(t));
200 t=mm.getGroupArr(0,"G2",False)
201 self.assertTrue(g2_2.isEqual(t));
202 t=mm.getGroupArr(-1,"G1",False)
203 self.assertTrue(g1_1.isEqual(t));
204 t=mm.getGroupArr(-1,"G2",False)
205 self.assertTrue(g2_1.isEqual(t));
206 t=mm.getGroupArr(1,"G1",False)
207 self.assertTrue(g1_N.isEqual(t));
208 t=mm.getGroupArr(1,"G2",False)
209 self.assertTrue(g2_N.isEqual(t));
210 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
211 t=mm.getGroupArr(0,"GrpOnAllCell")
212 self.assertTrue(t.getValues()==list(range(5)))
215 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
216 mmCpy.write(outFileName,2);
218 mm=MEDFileMesh.New(outFileName)
220 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
221 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
222 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
223 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
224 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
225 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
226 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
227 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
228 self.assertEqual(3,len(lmm))
229 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
230 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
231 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
233 self.assertTrue(mm.getUnivNameWrStatus())
234 self.assertTrue(isinstance(mm.getUnivName(),str))
235 self.assertTrue(len(mm.getUnivName())!=0)
236 mbis=mm.getMeshAtLevel(0)
237 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
238 self.assertTrue(m.isEqual(mbis,1e-12));
240 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
243 # this test is the testMEDMesh3 except that permutation is dealed here
245 def testMEDMesh4(self):
246 outFileName="MEDFileMesh4.med"
247 c=DataArrayDouble.New()
248 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 ];
249 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
250 c.setValues(coords,9,2)
251 c.setInfoOnComponent(0,"abcdef [km]")
252 c.setInfoOnComponent(1,"ghij [MW]")
253 m=MEDCouplingUMesh.New();
254 m.setMeshDimension(2);
256 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
257 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
258 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
259 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
260 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
261 m.finishInsertingCells();
263 m.checkConsistencyLight()
264 m1=MEDCouplingUMesh.New();
265 m1.setMeshDimension(1);
267 m1.insertNextCell(NORM_SEG2,2,[1,4])
268 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
269 m1.insertNextCell(NORM_SEG2,2,[3,6])
270 m1.finishInsertingCells();
272 m1.checkConsistencyLight()
273 m2=MEDCouplingUMesh.New();
274 m2.setMeshDimension(0);
276 m2.insertNextCell(NORM_POINT1,1,[1])
277 m2.insertNextCell(NORM_POINT1,1,[3])
278 m2.insertNextCell(NORM_POINT1,1,[2])
279 m2.insertNextCell(NORM_POINT1,1,[6])
280 m2.finishInsertingCells();
282 m2.checkConsistencyLight()
284 mm=MEDFileUMesh.New()
285 mm.setName("My2ndMEDCouplingMEDmesh")
286 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
288 renumNode=DataArrayInt.New()
289 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
290 mm.setRenumFieldArr(1,renumNode)
292 mm.setMeshAtLevel(-1,m1,True);
293 mm.setMeshAtLevel(0,m,True);
294 mm.setMeshAtLevel(-2,m2,True);
295 mm.removeMeshAtLevel(-2)
296 mm.setMeshAtLevel(-2,m2,True);
297 # playing with groups
298 g1_2=DataArrayInt.New()
299 g1_2.setValues([2,3],2,1)
301 g2_2=DataArrayInt.New()
302 g2_2.setValues([2,0,3],3,1)
304 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
305 g1_1=DataArrayInt.New()
306 g1_1.setValues([0,2,1],3,1)
308 g2_1=DataArrayInt.New()
309 g2_1.setValues([0,2],2,1)
311 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
312 g1_N=DataArrayInt.New()
313 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
315 g2_N=DataArrayInt.New()
316 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
318 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
319 # check content of mm
320 t=mm.getGroupArr(0,"G1",True)
321 self.assertTrue(g1_2.isEqual(t));
322 t=mm.getGroupArr(0,"G2",True)
323 self.assertTrue(g2_2.isEqual(t));
324 t=mm.getGroupArr(-1,"G1",True)
325 self.assertTrue(g1_1.isEqual(t));
326 t=mm.getGroupArr(-1,"G2",True)
327 self.assertTrue(g2_1.isEqual(t));
328 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
330 mm.write(outFileName,2);
331 mm2=MEDFileMesh.New(outFileName)
332 res=mm.isEqual(mm2,1e-12)
333 self.assertTrue(res[0])
334 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
335 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
336 mm2.keepFamIdsOnlyOnLevs([3],[-1])
337 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
338 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
340 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
341 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
343 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
344 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
345 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
346 self.assertTrue(not mm2.existsFamily("Family_-8"))
347 mm2.createGroupOnAll(-1,"GrpOnAllFace")
348 self.assertTrue(mm2.existsFamily("Family_-8"))
349 self.assertEqual(list(range(3)),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
352 #testing persistence of retrieved arrays
354 def testMEDMesh5(self):
355 GeneratePyfile18(self)
356 fileName="Pyfile18.med"
357 mname="ExampleOfMultiDimW"
358 medmesh=MEDFileUMesh.New(fileName,mname)
359 m1_0=medmesh.getLevel0Mesh(True)
360 da1=medmesh.getFamilyFieldAtLevel(0)
362 self.assertEqual(20,m1_0.getNumberOfCells())
363 self.assertEqual(20,da1.getNumberOfTuples())
366 def internalMEDMesh6(self):
367 outFileName="MEDFileMesh5.med"
370 m1=MEDCouplingCMesh.New();
371 da=DataArrayDouble.New()
372 da.setValues([0.,1.,2.],3,1)
373 da.setInfoOnComponent(0,"XX [mm]")
375 da=DataArrayDouble.New()
376 da.setValues([0.,1.2],2,1)
377 da.setInfoOnComponent(0,"YY [km]")
379 da=DataArrayDouble.New()
380 da.setValues([0.,1.3],2,1)
381 da.setInfoOnComponent(0,"ZZ [um]")
384 self.assertTrue(m[0].isEqual(m1,1e-12))
385 self.assertTrue(isinstance(m[0],MEDCouplingCMesh))
386 m.setName("myFirstCartMesh")
387 m.setDescription("mmmmpppppppp")
390 da=DataArrayInt.New()
391 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
392 m.setFamilyFieldArr(1,da)
393 m.setFamilyId("family1",1)
394 da=m.getFamilyArr(1,"family1")
396 self.assertEqual(expected1,da.getValues())
397 self.assertTrue(m.getUnivNameWrStatus())
398 m.write(outFileName,2);
399 mm=MEDFileMesh.New(outFileName)
400 self.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
401 self.assertTrue(isinstance(mm,MEDFileCMesh))
402 self.assertTrue(isinstance(mm.getUnivName(),str))
403 self.assertTrue(len(mm.getUnivName())!=0)
404 self.assertTrue(m.isEqual(mm,1e-12)[0])
405 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
408 m1.setTime(tt[2],tt[0],tt[1])
409 m1.setName(m.getName())
410 m1.setTimeUnit(m.getTimeUnit())
411 m1.setDescription(m.getDescription())
412 self.assertTrue(m2.isEqual(m1,1e-12));
415 def testMEDMesh6(self):
416 self.internalMEDMesh6()
420 def testMEDMesh7(self):
421 fileName="Pyfile24.med"
422 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
424 m.setCoords(m2.getCoords())
425 m.setMeshAtLevel(0,m2)
426 m.setMeshAtLevel(-1,m1)
427 m.setMeshAtLevel(-2,m0)
428 m.setFamilyFieldArr(0,f2)
429 m.setFamilyFieldArr(-1,f1)
430 m.setFamilyFieldArr(-2,f0)
431 m.setFamilyFieldArr(1,p)
432 m.setRenumFieldArr(0,n2)
433 m.setRenumFieldArr(-1,n1)
434 m.setRenumFieldArr(-2,n0)
436 for i in range(nbOfFams):
437 m.addFamily(fns[i],fids[i])
440 for i in range(nbOfGrps):
441 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
443 m.setName(m2.getName())
444 m.setDescription(m2.getDescription())
446 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
447 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
448 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
449 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
450 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
451 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
452 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
453 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
454 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
457 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
460 def funcToTestDelItem(self,ff):
464 #emulation of pointe.med file.
466 def testMEDField1(self):
467 TestMultiFieldShuffleRW1(self)
468 mm=MEDFileMesh.New("Pyfile17.med")
469 mm.write("Pyfile17_bis.med",2)
470 ff=MEDFileFieldMultiTS("Pyfile17.med")
471 tsExpected=[[1,2],[3,4],[5,6]]
472 self.assertEqual(3,len(ff))
473 for pos,f1ts in enumerate(ff):
474 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
475 self.assertEqual(type(f1ts),MEDFileField1TS)
477 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
478 self.assertEqual([3,4],ff[1].getTime()[:-1])
479 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
480 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
481 ff.write("Pyfile17_bis.med",0)
483 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
484 self.assertEqual([(1,2),(3,4),(5,6)],ts)
485 self.funcToTestDelItem(ff)
486 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
487 self.assertEqual([(1,2)],ts)
492 def testMEDField2(self):
493 GeneratePyfile19(self)
494 mm=MEDFileMesh.New("Pyfile19.med")
495 mm.write("Pyfile19_bis.med",2)
496 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
497 ff.write("Pyfile19_bis.med",0)
498 self.assertEqual([('tyty','mm'),('uiop','MW')],GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
503 def testMEDField3(self):
504 GeneratePyfile13(self)
505 mm=MEDFileMesh.New("Pyfile13.med")
506 mm.write("Pyfile13_bis.med",2)
507 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
508 ff.write("Pyfile13_bis.med",0)
509 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
510 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
511 f2=ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
512 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
513 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
514 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
515 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
516 ff4=MEDFileField1TS.New("Pyfile13.med")
517 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
518 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
523 def testMEDField4(self):
524 GeneratePyfile14(self)
525 mm=MEDFileMesh.New("Pyfile14.med")
526 mm.write("Pyfile14_bis.med",2)
527 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
528 ff.write("Pyfile14_bis.med",0)
529 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
530 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
531 f2=ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
532 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
535 # MEDField get/set on pointe.med
537 def testMEDField5(self):
538 TestMultiFieldShuffleRW1(self)
539 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
540 f=ff.getFieldAtLevel(ON_CELLS,0)
541 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
542 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
543 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
544 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
545 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
546 # no with renumbering
547 f=ff.getFieldAtLevel(ON_CELLS,0,1)
548 f2=ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
549 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
550 f=ff.getFieldAtLevel(ON_CELLS,0,3)
551 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
552 f=ff.getFieldAtLevel(ON_CELLS,0,2)
553 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
554 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
555 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
558 # MEDField get/set on profiles nodes
560 def testMEDField6(self):
561 GeneratePyfile7(self)
562 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
563 its=ff.getIterations()
564 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
565 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
566 f2=ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
567 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
568 GeneratePyfile19(self)
569 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
570 its=ff.getIterations()
571 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
572 f2=ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
573 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
574 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
575 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
578 # MEDField get/set on profiles cells
580 def testMEDField7(self):
581 GeneratePyfile12(self)
582 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
583 its=ff.getIterations()
584 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
585 f2=ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
586 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
589 #first test of assignation. No profile and types sorted by type.
591 def testMEDField8(self):
593 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
595 mm1=MEDFileUMesh.New()
596 mm1.setCoords(m1.getCoords())
597 mm1.setMeshAtLevel(0,m1)
598 mm1.setName(m1.getName())
600 ff1=MEDFileField1TS.New()
601 ff1.setFieldNoProfileSBT(f1)
603 f2=ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
604 itt,orr,ti=ff1.getTime()
605 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
606 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
608 itt,orr,ti=ff1.getTime()
609 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
611 ff1.copyTimeInfoFrom(f1)
612 itt,orr,ti=ff1.getTime()
613 self.assertEqual(7,itt); self.assertEqual(8,orr); self.assertAlmostEqual(5.5,ti,14);
614 da,infos=ff1.getUndergroundDataArrayExt()
615 f2.getArray().setName(da.getName())#da has the same name than f2
616 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
617 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
620 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
622 mm1=MEDFileUMesh.New()
623 mm1.setCoords(m1.getCoords())
624 mm1.setMeshAtLevel(0,m1)
625 mm1.setName(m1.getName())
627 ff1=MEDFileField1TS.New()
628 ff1.setFieldNoProfileSBT(f1)
630 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
632 f2=ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
633 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
634 f1.getArray().setIJ(0,0,nv)
635 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
638 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
640 mm1=MEDFileUMesh.New()
641 mm1.setCoords(m1.getCoords())
642 mm1.setMeshAtLevel(0,m1)
643 mm1.setName(m1.getName())
645 ff1=MEDFileField1TS.New()
646 ff1.setFieldNoProfileSBT(f1)
648 f2=ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
649 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
650 da,infos=ff1.getUndergroundDataArrayExt()
651 f2.getArray().setName(da.getName())#da has the same name than f2
652 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
653 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
656 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
657 f1InvalidCpy=f1.deepCopy()
658 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
659 f1InvalidCpy2=f1.deepCopy()
660 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
662 mm1=MEDFileUMesh.New()
663 mm1.setCoords(m1.getCoords())
664 mm1.setMeshAtLevel(0,m1)
665 mm1.setName(m1.getName())
667 ff1=MEDFileField1TS.New()
668 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
669 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
670 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
671 ff1.setFieldNoProfileSBT(f1)
673 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
674 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
675 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
676 sbt=ff2.getFieldSplitedByType2()
677 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
678 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
679 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
680 self.assertEqual(6,loc1.getNumberOfPointsInCells())
681 self.assertEqual(3,loc1.getNumberOfGaussPoints())
682 self.assertEqual(2,loc1.getDimension())
683 da,infos=ff2.getUndergroundDataArrayExt()
684 f2.getArray().setName(da.getName())#da has the same name than f2
685 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
686 self.assertEqual(53,da.getNumberOfTuples())
687 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)
692 def testMEDFileData1(self):
696 m1=MEDLoaderDataForTest.build1DMesh_1()
697 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
698 mmm1=MEDFileMeshMultiTS.New() ;
699 mmm1.setOneTimeStep(mm1)
700 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
701 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
702 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
703 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
705 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
706 self.assertEqual(name,mmm.getName())
707 self.assertEqual(type(mmm),MEDFileUMesh)
709 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
711 ff1=MEDFileFieldMultiTS.New()
712 ff21=MEDFileFieldMultiTS.New()
713 ff22=MEDFileFieldMultiTS.New()
714 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
715 f1.getArray().setInfoOnComponent(0,"power [kW]")
716 ff1.appendFieldNoProfileSBT(f1)
717 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
718 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
719 ff21.appendFieldNoProfileSBT(f21)
720 f22=f21.deepCopy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
721 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
722 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
723 ff22.appendFieldNoProfileSBT(f22)
724 fs=MEDFileFields.New()
725 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
726 for name,fmts in zip(["f1","f21","f22"],fs):
727 self.assertEqual(name,fmts.getName())
731 fname2="Pyfile29_2.med"
734 d2=MEDFileData.New(fname2)
735 self.assertEqual(2,d2.getNumberOfMeshes())
736 self.assertEqual(3,d2.getNumberOfFields())
737 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
738 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
739 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
740 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
741 self.assertTrue(m1.isEqual(m1bis,1e-12))
742 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
743 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
744 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
745 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
746 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
750 def testMEDField9(self):
751 # first test field profile WR. Full type but with some type missing
753 m1=MEDLoaderDataForTest.build2DMesh_3()
754 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
756 ff1=MEDFileField1TS.New()
757 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
758 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
759 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.
760 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
762 ff1.setFieldProfile(f1,mm1,0,da)
763 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
767 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
768 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
769 self.assertTrue(vals.isEqual(d,1e-14))
771 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
772 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
773 ff2.deepCpyGlobs(ff3)
774 sbt=ff2.getFieldSplitedByType2()
775 self.assertEqual(3,sbt[0][0])#TRI3
776 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
777 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
778 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
779 self.assertEqual(4,sbt[1][0])#QUAD4
780 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
781 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
782 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
783 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
784 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
785 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
786 self.assertTrue(vals.isEqual(d,1e-14))
790 def testMEDField10(self):
792 m1=MEDLoaderDataForTest.build2DMesh_1()
793 m1.renumberCells([0,1,4,2,3,5],False)
794 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
796 ff1=MEDFileFieldMultiTS.New()
797 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
798 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
799 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.
800 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
802 ff1.appendFieldProfile(f1,mm1,0,da)
803 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
804 ff1.appendFieldProfile(f1,mm1,0,da)
808 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
809 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
810 self.assertTrue(vals.isEqual(e,1e-14))
811 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
812 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
813 self.assertTrue(vals.isEqual(d,1e-14))
815 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
816 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
817 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
818 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
819 self.assertTrue(vals.isEqual(e,1e-14))
820 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
821 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
822 self.assertTrue(vals.isEqual(d,1e-14))
825 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
827 def testMEDField11(self):
829 m1=MEDLoaderDataForTest.build2DMesh_1()
830 m1.renumberCells([0,1,4,2,3,5],False)
831 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
833 ff1=MEDFileField1TS.New()
834 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
835 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
836 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.
837 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
839 ff1.setFieldProfile(f1,mm1,0,da)
840 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
843 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
844 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
845 self.assertTrue(vals.isEqual(d,1e-14))
847 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
848 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
849 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
850 self.assertTrue(vals.isEqual(d,1e-14))
854 def testMEDField12(self):
856 m1=MEDLoaderDataForTest.build2DMesh_1()
857 m1.renumberCells([0,1,4,2,3,5],False)
858 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
860 ff1=MEDFileFieldMultiTS.New()
861 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
862 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
863 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.
864 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
866 ff1.appendFieldProfile(f1,mm1,0,da)
867 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
868 ff1.appendFieldProfile(f1,mm1,0,da)
871 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
872 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
873 self.assertTrue(vals.isEqual(e,1e-14))
874 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
875 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
876 self.assertTrue(vals.isEqual(d,1e-14))
878 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
879 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
880 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
881 self.assertTrue(vals.isEqual(e,1e-14))
882 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
883 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
884 self.assertTrue(vals.isEqual(d,1e-14))
888 def testMEDField13(self):
890 m1=MEDLoaderDataForTest.build2DMesh_1()
891 m1.renumberCells([0,1,4,2,3,5],False)
893 m1=m1.buildPartOfMySelf(list(range(5)),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
894 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
896 ff1=MEDFileField1TS.New()
897 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
898 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
899 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.
900 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
902 ff1.setFieldProfile(f1,mm1,0,da)
905 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
906 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
907 self.assertTrue(vals.isEqual(d,1e-14))
909 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
910 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
911 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
912 self.assertTrue(vals.isEqual(d,1e-14))
916 def testMEDField14(self):
918 m1=MEDLoaderDataForTest.build2DMesh_1()
919 m1.renumberCells([0,1,4,2,3,5],False)
921 m1=m1.buildPartOfMySelf(list(range(5)),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
922 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
924 ff1=MEDFileFieldMultiTS.New()
925 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
926 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
927 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.
928 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
930 ff1.appendFieldProfile(f1,mm1,0,da)
931 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
932 ff1.appendFieldProfile(f1,mm1,0,da)
935 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
936 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
937 self.assertTrue(vals.isEqual(d,1e-14))
938 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
939 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
940 self.assertTrue(vals.isEqual(e,1e-14))
941 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
943 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
944 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
945 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
946 self.assertTrue(vals.isEqual(d,1e-14))
947 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
948 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
949 self.assertTrue(vals.isEqual(e,1e-14))
951 # 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.
952 # 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
953 # for the necessity of the test ! The idea is too create artificially a mesh having one more fictitious cell per type and to roll back right after !
955 def testMEDField15(self):
957 m0=MEDLoaderDataForTest.build2DMesh_1()
958 m0.renumberCells([0,1,4,2,3,5],False)
960 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
961 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
962 ff1=MEDFileField1TS.New()
963 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
964 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
965 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.
966 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
968 ff1.setFieldProfile(f1,mm1,0,da)
969 m1=m0.buildPartOfMySelf(list(range(5)),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
972 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
973 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
974 self.assertTrue(p1.isIota(5))
975 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
977 # Test for getFieldAtTopLevel method
979 def testMEDField16(self):
981 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
983 mm1=MEDFileUMesh.New()
984 mm1.setCoords(m1.getCoords())
985 mm1.setMeshAtLevel(0,m1)
986 mm1.setName(m1.getName())
987 ff1=MEDFileField1TS.New()
988 ff1.setFieldNoProfileSBT(f1)
989 m2=m1.buildDescendingConnectivity()[0]
990 m2.sortCellsInMEDFileFrmt()
991 m2.setName(m1.getName())
992 mm1.setMeshAtLevel(-1,m2)
994 f2=m2.getMeasureField(True)
995 dd=DataArrayDouble.New()
996 dd.alloc(f2.getArray().getNumberOfTuples(),3)
997 dd[:,0]=f2.getArray()
998 dd[:,1]=2*f2.getArray()
999 dd[:,2]=3*f2.getArray()
1000 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
1002 f2.copyTinyStringsFrom(f1)
1003 f2.copyTinyAttrFrom(f1)
1004 ff1.setFieldNoProfileSBT(f2)
1006 # Reading Pyfile37.med
1007 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
1008 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
1009 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
1010 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
1011 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
1012 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
1013 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
1015 fname="Pyfile38.med"
1017 ff1=MEDFileField1TS.New()
1018 ff1.setFieldNoProfileSBT(f2)
1020 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
1021 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
1022 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
1025 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
1027 def testMEDField17(self):
1028 fname="Pyfile39.med"
1029 m1=MEDLoaderDataForTest.build2DMesh_1()
1030 m1.renumberCells([0,1,4,2,3,5],False)
1031 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
1033 ffs=MEDFileFields.New()
1034 ff1=MEDFileFieldMultiTS.New()
1035 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
1036 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
1037 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.
1038 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
1040 ff1.appendFieldProfile(f1,mm1,0,da)
1041 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
1042 ff1.appendFieldProfile(f1,mm1,0,da)
1044 ffs.setFieldAtPos(0,ff1)
1048 ffsr=MEDFileFields.New(fname)
1049 ff3=ffsr.getFieldAtPos(0)
1050 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
1051 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
1054 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
1056 def testMEDField18(self):
1057 fname="Pyfile40.med"
1058 m1=MEDLoaderDataForTest.build2DMesh_1()
1059 m1.renumberCells([0,1,4,2,3,5],False)
1060 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
1062 ffs=MEDFileFields.New()
1063 ff1=MEDFileFieldMultiTS.New()
1064 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
1065 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
1066 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.
1067 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
1069 ff1.appendFieldProfile(f1,mm1,0,da)
1070 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
1071 ff1.appendFieldProfile(f1,mm1,0,da)
1075 ffsr=MEDFileFields.New(fname)
1076 ff3=ffsr.getFieldAtPos(0)
1077 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
1078 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
1082 def testMEDFieldBug1(self):
1083 GeneratePyfile13(self)
1084 fname="Pyfile13.med"
1085 d=MEDFileData.New(fname)
1086 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1090 def testMEDMesh8(self):
1091 m=MEDLoaderDataForTest.build1DMesh_1()
1092 m.convertQuadraticCellsToLinear()
1093 mm=MEDFileUMesh.New()
1094 mm.setMeshAtLevel(0,m)
1095 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1096 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1097 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1098 mm.setGroupsAtLevel(0,[g1,g2],False)
1099 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1100 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1101 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1102 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1103 mm.assignFamilyNameWithGroupName()
1104 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1105 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1106 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1107 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1109 mm=MEDFileUMesh.New()
1110 mm.setMeshAtLevel(0,m)
1111 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1112 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1113 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1114 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1115 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1116 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1117 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1118 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1119 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1120 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1121 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1122 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1123 mm.changeFamilyId(5,6)
1124 g=mm.getGroupArr(0,"g3")
1125 self.assertTrue(g.isEqual(g3));
1126 g=mm.getGroupArr(0,"g2")
1127 self.assertTrue(g.isEqual(g2));
1128 g=mm.getGroupArr(0,"g1")
1129 self.assertTrue(g.isEqual(g1));
1132 # bug detected by gauthier
1134 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1135 fname="Pyfile41.med"
1136 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1138 mm1=MEDFileUMesh.New()
1139 mm1.setCoords(m1.getCoords())
1140 mm1.setMeshAtLevel(0,m1)
1142 ff1=MEDFileField1TS.New()
1143 ff1.setFieldNoProfileSBT(f1)
1145 # writing mesh1 and field1, now creation of mesh2 and field2
1148 m2.translate([0.5,0.6,0.7])
1149 m2.setName("3DSurfMesh_2")
1150 f2.getArray()[:]*=2.
1151 f2.setName("VectorFieldOnCells2")
1152 mm2=MEDFileUMesh.New()
1153 mm2.setCoords(m2.getCoords())
1154 mm2.setMeshAtLevel(0,m2)
1156 ff2=MEDFileField1TS.New()
1157 ff2.setFieldNoProfileSBT(f2)
1160 f3=ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1161 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1162 f4=ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1163 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1167 def testMEDLoaderMultiLevelCellField1(self):
1168 fname="Pyfile42.med"
1169 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1170 m=MEDFileUMesh.New()
1171 m.setCoords(m2.getCoords())
1172 m.setMeshAtLevel(0,m2)
1173 m.setMeshAtLevel(-1,m1)
1174 m.setMeshAtLevel(-2,m0)
1178 compNames1=["comp1","comp2","comp3"]
1179 ff1=MEDFileField1TS.New()
1180 da2=DataArrayDouble.New()
1181 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1183 da2.rearrange(len(compNames1))
1184 da2.setInfoOnComponents(compNames1)
1185 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkConsistencyLight()
1186 ff1.setFieldNoProfileSBT(f2)
1187 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1188 da0=DataArrayDouble.New()
1189 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1191 da0.rearrange(len(compNames1))
1192 da0.setInfoOnComponents(compNames1)
1193 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1194 ff1.setFieldNoProfileSBT(f0)
1195 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1196 da1=DataArrayDouble.New()
1197 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1199 da1.rearrange(len(compNames1))
1200 da1.setInfoOnComponents(compNames1)
1201 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1202 ff1.setFieldNoProfileSBT(f1)
1203 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1208 compNames2=["comp11","comp22"]
1209 ff2=MEDFileField1TS.New()
1210 da0=DataArrayDouble.New()
1211 da0.alloc(m0.getNumberOfCells()*2,1)
1214 da0.setInfoOnComponents(compNames2)
1215 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkConsistencyLight()
1216 ff2.setFieldNoProfileSBT(f0)
1217 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1218 da1=DataArrayDouble.New()
1219 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1221 da1.rearrange(len(compNames2))
1222 da1.setInfoOnComponents(compNames2)
1223 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkConsistencyLight()
1224 ff2.setFieldNoProfileSBT(f1)
1225 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1229 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1230 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1231 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1232 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1233 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1234 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1238 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1239 fname="Pyfile43.med"
1240 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1241 m=MEDFileUMesh.New()
1242 m.setMeshAtLevel(0,m2)
1243 m.setMeshAtLevel(-1,m1)
1244 m.setMeshAtLevel(-2,m0)
1245 f=MEDFileField1TS.New()
1246 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1247 ff.setName("NodeFieldPfl")
1248 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1250 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1251 f.setFieldProfile(ff,m,-2,pfl)
1252 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1253 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1254 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1255 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1256 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1257 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1258 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1259 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1260 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1261 expected1=[1.,10.,100.,2.,20.,200.]
1262 nodeCoordsWithValue1=[10.,2.5,0.]
1263 nodeCoordsWithValue2=[10.,3.75,0.]
1265 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1266 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1269 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1273 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1274 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been specified
1275 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1276 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1277 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1278 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1279 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1280 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1281 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1283 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1288 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1289 f=MEDFileField1TS.New()
1290 f.setFieldProfile(ff,m,-2,pfl)
1291 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1292 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1293 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1294 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1295 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1296 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1297 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1298 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1299 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1300 expected2=[2.,20.,200.,1.,10.,100.]
1302 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1303 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1306 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1309 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1310 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been specified
1311 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1312 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1313 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1314 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1315 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1316 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1317 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1319 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1324 def testBuildInnerBoundaryAlongM1Group1(self):
1325 fname="Pyfile44.med"
1326 m=MEDCouplingCMesh.New()
1327 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1328 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1329 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1330 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1331 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1332 m2.setName(m.getName())
1333 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1334 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1335 mm=MEDFileUMesh.New()
1336 mm.setMeshAtLevel(0,m)
1337 mm.setMeshAtLevel(-1,m2)
1338 mm.setGroupsAtLevel(-1,[grp,grp2])
1339 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1340 mm.setGroupsAtLevel(1,[grpNode])
1341 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1342 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1343 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1345 self.assertEqual(30,mm.getNumberOfNodes())
1346 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1347 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1349 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1350 self.assertEqual([15,16,17],nodes.getValues());
1351 self.assertEqual([7,8,9],cells.getValues());
1352 self.assertEqual([12,13,14],cells2.getValues());
1353 self.assertEqual(33,mm.getNumberOfNodes())
1354 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1355 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1356 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1357 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1358 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
1359 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1360 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
1361 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1362 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])
1363 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1364 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1366 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1367 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1368 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1369 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1370 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1375 def testBuildInnerBoundaryAlongM1Group2(self):
1376 fname="Pyfile45.med"
1377 m=MEDCouplingCMesh.New()
1378 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1379 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1380 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1381 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1382 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1383 m2.setName(m.getName())
1384 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1385 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1386 mm=MEDFileUMesh.New()
1387 mm.setMeshAtLevel(0,m)
1388 mm.setMeshAtLevel(-1,m2)
1389 mm.setGroupsAtLevel(-1,[grp,grp2])
1390 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1391 mm.setGroupsAtLevel(1,[grpNode])
1392 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1393 ref1=[4,9,8,14,15,4,10,9,15,16]
1394 ref2=[4,9,8,14,30,4,10,9,30,16]
1396 self.assertEqual(30,mm.getNumberOfNodes())
1397 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1398 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1400 nodes,cells,cells2=mm.buildInnerBoundaryAlongM1Group("Grp")
1401 self.assertEqual([15],nodes.getValues());
1402 self.assertEqual([7,8],cells.getValues());
1403 self.assertEqual([12,13],cells2.getValues());
1404 self.assertEqual(31,mm.getNumberOfNodes())
1405 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1406 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1407 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1408 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1409 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
1410 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1411 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
1412 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1413 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])
1414 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1415 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1417 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1418 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1419 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1420 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1421 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1426 def testBuildInnerBoundaryAlongM1Group3(self):
1427 """ Test buildInnerBoundaryAlongM1Group() with *non-connex* cracks """
1428 fname = "Pyfile73.med"
1429 m = MEDCouplingCMesh.New()
1430 m.setCoordsAt(0, DataArrayDouble([0.0,1.1,2.3,3.6,5.0]))
1431 m.setCoordsAt(1, DataArrayDouble([0.,1.,2.]))
1432 m = m.buildUnstructured(); m.setName("simple")
1433 m2 = m.buildDescendingConnectivity()[0]
1434 m2.setName(m.getName())
1436 # A crack in two non connected parts of the mesh:
1437 grpSeg = DataArrayInt([3,19]) ; grpSeg.setName("Grp")
1439 mm = MEDFileUMesh.New()
1440 mm.setMeshAtLevel(0,m)
1441 mm.setMeshAtLevel(-1,m2)
1442 mm.setGroupsAtLevel(-1,[grpSeg])
1443 nodes, cellsMod, cellsNotMod = mm.buildInnerBoundaryAlongM1Group("Grp")
1444 self.assertEqual([1,13],nodes.getValues());
1445 self.assertEqual([0,6],cellsMod.getValues());
1446 self.assertEqual([1,7],cellsNotMod.getValues());
1447 self.assertEqual(17,mm.getNumberOfNodes())
1448 self.assertEqual([3,19],mm.getGroupArr(-1,"Grp").getValues())
1449 self.assertEqual([22,23],mm.getGroupArr(-1,"Grp_dup").getValues())
1450 ref0=[4, 15, 0, 5, 6, 4, 8, 7, 12, 16]
1451 ref1=[4, 2, 1, 6, 7, 4, 9, 8, 13, 14]
1452 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[0,6]].getNodalConnectivity().getValues())
1453 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[1,7]].getNodalConnectivity().getValues())
1454 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
1455 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1457 refValues=DataArrayDouble([1.1, 1.2, 1.3, 1.4, 1.1, 1.2, 1.3, 1.4])
1458 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1459 self.assertTrue(delta.getMaxValue()[0]<1e-10)
1461 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1462 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1463 refValues2=refValues[:] ; refValues2[0] = 1.265; refValues2[6] = 1.105
1464 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1465 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1469 def testBuildInnerBoundaryAlongM1Group4(self):
1470 """ Test case where cells touch the M1 group on some nodes only and not on full edges (triangle mesh for ex)
1472 coo = DataArrayDouble([0.,0., 1.,0., 2.,0., 3.,0.,
1473 0.,1., 1.,1., 2.,1., 3.,1.,
1474 0.,2., 1.,2., 2.,2., 3.,2.], 12, 2)
1475 conn = [3,0,4,1, 3,1,4,5,
1482 connI = DataArrayInt()
1483 connI.alloc(13, 1); connI.iota(); connI *= 4
1484 m2 = MEDCouplingUMesh("2D", 2)
1486 m2.setConnectivity(DataArrayInt(conn), connI)
1487 m2.checkConsistency()
1488 m1, _, _, _, _ = m2.buildDescendingConnectivity()
1489 grpIds = DataArrayInt([9,11]); grpIds.setName("group")
1490 grpIds2 = DataArrayInt([0,1]); grpIds2.setName("group2")
1491 mfu = MEDFileUMesh()
1492 mfu.setMeshAtLevel(0, m2)
1493 mfu.setMeshAtLevel(-1, m1)
1494 mfu.setGroupsAtLevel(-1, [grpIds, grpIds2])
1495 nNod = m2.getNumberOfNodes()
1496 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1497 m2_bis = mfu.getMeshAtLevel(0)
1498 m2_bis.checkConsistency()
1499 m1_bis = mfu.getMeshAtLevel(-1)
1500 m1_bis.checkConsistency()
1501 self.assertEqual(nNod+2, mfu.getNumberOfNodes())
1502 self.assertEqual(nNod+2, m2_bis.getNumberOfNodes())
1503 self.assertEqual(nNod+2, m1_bis.getNumberOfNodes())
1504 self.assertEqual([6,7], nodesDup.getValues())
1505 self.assertEqual([2.,1., 3.,1.], m2_bis.getCoords()[nNod:].getValues())
1506 self.assertEqual(set([3,10,11]), set(cells1.getValues()))
1507 self.assertEqual(set([8,9,4,5]), set(cells2.getValues()))
1508 self.assertEqual([9,11],mfu.getGroupArr(-1,"group").getValues())
1509 self.assertEqual([23,24],mfu.getGroupArr(-1,"group_dup").getValues())
1510 self.assertEqual([0,1],mfu.getGroupArr(-1,"group2").getValues())
1511 ref0 =[3, 5, 10, 12, 3, 12, 10, 11, 3, 12, 11, 13]
1512 ref1 =[3, 2, 6, 7, 3, 2, 7, 3, 3, 1, 5, 6, 3, 1, 6, 2]
1513 self.assertEqual(ref0,mfu.getMeshAtLevel(0)[[3,10,11]].getNodalConnectivity().getValues())
1514 self.assertEqual(ref1,mfu.getMeshAtLevel(0)[[4,5,8,9]].getNodalConnectivity().getValues())
1515 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
1516 mfu.getGroup(-1,"group_dup").checkGeoEquivalWith(mfu.getGroup(-1,"group"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1517 m_bis0 = mfu.getMeshAtLevel(-1)
1518 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1519 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1522 def testBuildInnerBoundary5(self):
1523 """ Full 3D test with tetras only. In this case a tri from the group is not duplicated because it is made only
1524 of non duplicated nodes. The tri in question is hence not part of the final new "dup" group. """
1525 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,
1526 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,
1527 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,
1528 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,
1529 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,
1530 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,
1531 400.0, 0.0, 100.02162286181577, 99.31624553977466, 99.99999998882231, 200.0, 99.31624576683302, 100.00000010178034, 0.0, 99.31624560596512, 200.0, 100.0050761312483,
1532 99.31624560612883, 0.0, 100.00507613125338, 200.0, 99.99999995813045, 100.00950673487786, 0.0, 99.99999989928207, 100.0041870621175, 301.29063354383015,
1533 100.0000000093269, 0.0, 301.29063360689975, 0.0, 100.00957769061164, 140.52853868782435, 99.99999963972768, 100.00509135751312, 297.87779091770784,
1534 97.16750463405486, 97.18018457127863], 46, 3)
1535 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,
1536 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,
1537 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,
1538 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,
1539 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,
1540 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,
1541 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,
1542 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,
1543 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,
1544 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,
1546 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,
1547 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,
1548 360, 365, 370, 375, 380, 385, 390, 395, 400, 405, 410, 415, 420, 425, 430]
1549 m3 = MEDCouplingUMesh("3D", 3)
1551 m3.setConnectivity(DataArrayInt(c0), DataArrayInt(cI0))
1552 m3.checkConsistency()
1553 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1554 grpIds = DataArrayInt([36,74]); grpIds.setName("group")
1555 mfu = MEDFileUMesh()
1556 mfu.setMeshAtLevel(0, m3)
1557 mfu.setMeshAtLevel(-1, m2)
1558 grpIds3D = DataArrayInt([0,1]); grpIds3D.setName("group_3d")
1559 mfu.setGroupsAtLevel(0, [grpIds3D]) # just to check preservation of 3D group
1560 mfu.setGroupsAtLevel(-1, [grpIds])
1561 nNod = m3.getNumberOfNodes()
1562 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1563 m3_bis = mfu.getMeshAtLevel(0)
1564 m3_bis.checkConsistency()
1565 m2_bis = mfu.getMeshAtLevel(-1)
1566 m2_bis.checkConsistency()
1567 self.assertEqual(nNod+1, mfu.getNumberOfNodes())
1568 self.assertEqual(nNod+1, m3_bis.getNumberOfNodes())
1569 self.assertEqual(nNod+1, m2_bis.getNumberOfNodes())
1570 self.assertEqual([3], nodesDup.getValues())
1571 self.assertEqual(m3_bis.getCoords()[3].getValues(), m3_bis.getCoords()[nNod:].getValues())
1572 self.assertEqual(set([22]), set(cells1.getValues()))
1573 self.assertEqual(set([77]), set(cells2.getValues()))
1574 self.assertEqual([36,74],mfu.getGroupArr(-1,"group").getValues())
1575 self.assertEqual([0,1],mfu.getGroupArr(0,"group_3d").getValues())
1576 self.assertEqual([213],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1577 m_bis0 = mfu.getMeshAtLevel(-1)
1578 m_desc, _, _, _, _ = m_bis0.buildDescendingConnectivity()
1579 m_bis0.checkDeepEquivalOnSameNodesWith(mfu.getMeshAtLevel(-1), 2, 9.9999999)
1583 def testBuildInnerBoundary6(self):
1584 """ 3D test where the crack has a funny shape with a singular point (i.e. two faces of the M1 group are only connected by one point, not a full segment)
1585 The singular point was wrongly duplicated.
1587 coo = DataArrayDouble([(-1.38778e-17,0.226,0),(-1.38778e-17,-1.38778e-17,0),(0.226,0.226,0),(0.226,-1.38778e-17,0),(0.452,0.226,0),(0.452,-1.38778e-17,0),
1588 (-1.38778e-17,0.452,0),(0.226,0.452,0),(0.452,0.452,0),(-1.38778e-17,0.226,0.25),(0.226,0.226,0.25),(0.226,-1.38778e-17,0.25),(-1.38778e-17,-1.38778e-17,0.25),
1589 (-1.38778e-17,0.226,0.779375),(0.226,0.226,0.779375),(0.226,-1.38778e-17,0.779375),(-1.38778e-17,-1.38778e-17,0.779375),(-1.38778e-17,0.226,1.30875),
1590 (0.226,0.226,1.30875),(0.226,-1.38778e-17,1.30875),(-1.38778e-17,-1.38778e-17,1.30875),(0.452,0.226,0.25),(0.452,-1.38778e-17,0.25),(0.452,0.226,0.779375),
1591 (0.452,-1.38778e-17,0.779375),(0.452,0.226,1.30875),(0.452,-1.38778e-17,1.30875),(-1.38778e-17,0.452,0.25),(0.226,0.452,0.25),(-1.38778e-17,0.452,0.779375),
1592 (0.226,0.452,0.779375),(-1.38778e-17,0.452,1.30875),(0.226,0.452,1.30875),(0.452,0.452,0.25),(0.452,0.452,0.779375),(0.452,0.452,1.30875),(0.146,0.226,0.779375),
1593 (0.146,-1.38778e-17,0.779375),(0.146,0.226,1.30875),(0.146,-1.38778e-17,1.30875),(0.146,0.452,0.779375),(0.146,0.452,1.30875)])
1594 c0 = [18, 0, 2, 3, 1, 9, 10, 11, 12, 18, 9, 10, 11, 12, 13, 36, 37, 16, 18, 13, 36, 37, 16, 17, 38, 39, 20, 18, 2, 4, 5, 3, 10, 21, 22, 11, 18, 10, 21, 22, 11, 14, 23, 24, 15,
1595 18, 14, 23, 24, 15, 18, 25, 26, 19, 18, 6, 7, 2, 0, 27, 28, 10, 9, 18, 27,
1596 28, 10, 9, 29, 40, 36, 13, 18, 29, 40, 36, 13, 31, 41, 38, 17, 18, 7, 8, 4, 2, 28, 33, 21, 10, 18, 28, 33, 21, 10, 30, 34, 23, 14, 18, 30, 34, 23, 14, 32, 35, 25, 18]
1597 cI0 = [0, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99, 108]
1598 m3 = MEDCouplingUMesh("3D", 3)
1600 m3.setConnectivity(DataArrayInt(c0), DataArrayInt(cI0))
1601 m3.checkConsistency()
1602 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1603 grpIds = DataArrayInt([7,12,22,27]); grpIds.setName("group")
1604 mfu = MEDFileUMesh()
1605 mfu.setMeshAtLevel(0, m3)
1606 mfu.setMeshAtLevel(-1, m2)
1607 mfu.setGroupsAtLevel(-1, [grpIds])
1608 nNod = m3.getNumberOfNodes()
1609 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1610 m3_bis = mfu.getMeshAtLevel(0)
1611 m3_bis.checkConsistency()
1612 m2_bis = mfu.getMeshAtLevel(-1)
1613 m2_bis.checkConsistency()
1614 self.assertEqual(nNod+8, mfu.getNumberOfNodes())
1615 self.assertEqual(nNod+8, m3_bis.getNumberOfNodes())
1616 self.assertEqual(nNod+8, m2_bis.getNumberOfNodes())
1617 self.assertEqual([13, 14, 17, 18, 23, 25, 36, 38], nodesDup.getValues())
1618 self.assertEqual(m3_bis.getCoords()[nodesDup].getValues(), m3_bis.getCoords()[nNod:].getValues())
1619 self.assertEqual(set([1, 2, 4, 5]), set(cells1.getValues()))
1620 self.assertEqual(set([7, 8, 10, 11]), set(cells2.getValues()))
1621 self.assertEqual([7, 12, 22, 27],mfu.getGroupArr(-1,"group").getValues())
1622 self.assertEqual([56, 57, 58, 59],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1623 m_desc, _, _, _, _ = m3_bis.buildDescendingConnectivity()
1624 m_desc.checkDeepEquivalOnSameNodesWith(m2_bis, 2, 9.9999)
1628 def testBuildInnerBoundary7(self):
1629 """ 3D test where the crack has another funny shape with another singular point (i.e. two faces of the M1 group are only connected by one point, not a full segment)
1630 Once the crack is inserted, the cells on either side of the crack do not necessarily form a connex spread zone. This was not properly handled either.
1632 m3 = MEDCouplingUMesh('box', 3)
1633 coo = DataArrayDouble([(5,17,0),(0,17,0),(0,12,0),(5,12,0),(15,17,0),(15,12,0),(20,12,0),(20,17,0),(20,2,0),(15,2,0),(15,-3,0),(20,-3,0),(5,-3,0),(5,2,0),(0,-3,0),(0,2,0),(5,17,10),(5,17,20),(5,17,30),(5,17,40),(0,17,10),(0,17,20),(0,17,30),(0,17,40),(0,12,10),(0,12,20),(0,12,30),(0,12,40),(5,12,10),(5,12,20),(5,12,30),(5,12,40),(15,17,10),(15,17,20),(15,17,30),(15,17,40),(15,12,10),(15,12,20),(15,12,30),(15,12,40),(20,12,10),(20,12,20),(20,12,30),(20,12,40),(20,17,10),(20,17,20),(20,17,30),(20,17,40),(20,2,10),(20,2,20),(20,2,30),(20,2,40),(15,2,10),(15,2,20),(15,2,30),(15,2,40),(15,-3,10),(15,-3,20),(15,-3,30),(15,-3,40),(20,-3,10),(20,-3,20),(20,-3,30),(20,-3,40),
1634 (5,-3,10),(5,-3,20),(5,-3,30),(5,-3,40),(5,2,10),(5,2,20),(5,2,30),(5,2,40),(0,-3,10),(0,-3,20),(0,-3,30),(0,-3,40),(0,2,10),(0,2,20),(0,2,30),(0,2,40),(20,8,0),(0,8,0),(20,8,10),(20,8,20),(20,8,30),(20,8,40),(15,8,30),(15,8,40),(5,8,30),(5,8,40),(0,8,10),(0,8,20),(0,8,30),(0,8,40)])
1636 c = DataArrayInt([31, 0, 3, 2, 1, -1, 16, 20, 24, 28, -1, 0, 16, 28, 3, -1, 3, 28, 24, 2, -1, 2, 24, 20, 1, -1, 1, 20, 16, 0, 31, 16, 28, 24, 20, -1, 17, 21, 25, 29, -1, 16, 17, 29, 28, -1, 28, 29, 25, 24, -1, 24, 25, 21, 20, -1, 20, 21, 17, 16, 31, 17, 29, 25, 21, -1, 18, 22, 26, 30, -1, 17, 18, 30, 29, -1, 29, 30, 26, 25, -1, 25, 26, 22, 21, -1, 21, 22, 18, 17, 31, 18, 30, 26, 22, -1, 19, 23, 27, 31, -1, 18, 19, 31, 30, -1, 30, 31, 27, 26, -1, 26, 27, 23, 22, -1, 22, 23, 19, 18, 31, 4, 5, 3, 0, -1, 32, 16, 28, 36, -1, 4, 32, 36, 5, -1, 5, 36, 28, 3, -1, 3, 28, 16, 0, -1, 0, 16, 32, 4, 31, 32, 36, 28, 16, -1, 33, 17, 29, 37, -1, 32, 33, 37,
1637 36, -1, 36, 37, 29, 28, -1, 28, 29, 17, 16, -1, 16, 17, 33, 32, 31, 33, 37, 29, 17, -1, 34, 18, 30, 38, -1, 33, 34, 38, 37, -1, 37, 38, 30, 29, -1, 29, 30, 18, 17, -1, 17, 18, 34, 33, 31, 34, 38, 30, 18, -1, 35, 19, 31, 39, -1, 34, 35, 39, 38, -1, 38, 39, 31, 30, -1, 30, 31, 19, 18, -1, 18, 19, 35, 34, 31, 6, 5, 4, 7, -1, 40, 44, 32, 36, -1, 6, 40, 36, 5, -1, 5, 36, 32, 4, -1, 4, 32, 44, 7, -1, 7, 44, 40, 6, 31, 40, 36, 32, 44, -1, 41, 45, 33, 37, -1, 40, 41, 37, 36, -1, 36, 37, 33, 32, -1, 32, 33, 45, 44, -1, 44, 45, 41, 40, 31, 41, 37, 33, 45, -1, 42, 46, 34, 38, -1, 41, 42, 38, 37, -1, 37, 38, 34, 33, -1, 33, 34, 46, 45, -1, 45, 46, 42, 41, 31,
1638 42, 38, 34, 46, -1, 43, 47, 35, 39, -1, 42, 43, 39, 38, -1, 38, 39, 35, 34, -1, 34, 35, 47, 46, -1, 46, 47, 43, 42, 31, 80, 9, 5, 6, -1, 82, 40, 36, 52, -1, 80, 82, 52, 9, -1, 9, 52, 36, 5, -1, 5, 36, 40, 6, -1, 6, 40, 82, 80, 31, 82, 52, 36, 40, -1, 83, 41, 37, 53, -1, 82, 83, 53, 52, -1, 52, 53, 37, 36, -1, 36, 37, 41, 40, -1, 40, 41, 83, 82, 31, 83, 53, 37, 41, -1, 84, 42, 38, 86, -1, 83, 84, 86, 53, -1, 53, 86, 38, 37, -1, 37, 38, 42, 41, -1, 41, 42, 84, 83, 31, 84, 86, 38, 42, -1, 85, 43, 39, 87, -1, 84, 85, 87, 86, -1, 86, 87, 39, 38, -1, 38, 39, 43, 42, -1, 42, 43, 85, 84, 31, 10, 9, 8, 11, -1, 56, 60, 48, 52, -1, 10, 56, 52, 9, -1, 9, 52,
1639 48, 8, -1, 8, 48, 60, 11, -1, 11, 60, 56, 10, 31, 56, 52,
1640 48, 60, -1, 57, 61, 49, 53, -1, 56, 57, 53, 52, -1, 52, 53, 49, 48, -1, 48, 49, 61, 60, -1, 60, 61, 57, 56, 31, 57, 53, 49, 61, -1, 58, 62, 50, 54, -1, 57, 58, 54, 53, -1, 53, 54, 50, 49, -1, 49, 50, 62, 61, -1, 61, 62, 58, 57, 31, 58, 54, 50, 62, -1, 59, 63, 51, 55, -1, 58, 59, 55, 54, -1, 54, 55, 51, 50, -1, 50, 51, 63, 62, -1, 62, 63, 59, 58, 31, 12, 13, 9, 10, -1, 64, 56, 52, 68, -1, 12, 64, 68, 13, -1, 13, 68, 52, 9, -1, 9, 52, 56, 10, -1, 10, 56, 64, 12, 31, 64, 68, 52, 56, -1, 65, 57, 53, 69, -1, 64, 65, 69, 68, -1, 68, 69, 53, 52, -1, 52, 53, 57, 56, -1, 56, 57, 65, 64, 31, 65, 69, 53, 57, -1, 66, 58, 54, 70, -1, 65, 66, 70, 69, -1, 69, 70,
1641 54, 53, -1, 53, 54, 58, 57, -1, 57, 58, 66, 65, 31, 66, 70, 54, 58, -1, 67, 59, 55, 71, -1, 66, 67, 71, 70, -1, 70, 71, 55, 54, -1, 54, 55, 59, 58, -1, 58, 59, 67, 66, 31, 14, 15, 13, 12, -1, 72, 64, 68, 76, -1, 14, 72, 76, 15, -1, 15, 76, 68, 13, -1, 13, 68, 64, 12, -1, 12, 64, 72, 14, 31, 72, 76, 68, 64, -1, 73, 65, 69, 77, -1, 72, 73, 77, 76, -1, 76, 77, 69, 68, -1, 68, 69, 65, 64, -1, 64, 65, 73, 72, 31, 73, 77, 69, 65, -1, 74, 66, 70, 78, -1, 73, 74, 78, 77, -1, 77, 78, 70, 69, -1, 69, 70, 66, 65, -1, 65, 66, 74, 73, 31, 74, 78, 70, 66, -1, 75, 67, 71, 79, -1, 74, 75, 79, 78, -1, 78, 79, 71, 70, -1, 70, 71, 67, 66, -1,
1642 66, 67, 75, 74, 31, 2, 3, 13, 81, -1, 24, 90, 68, 28, -1, 2, 24, 28, 3, -1, 3, 28, 68, 13, -1, 13, 68, 90, 81, -1, 81, 90, 24, 2, 31, 24, 28, 68, 90, -1, 25, 91, 69, 29, -1, 24, 25, 29, 28, -1, 28, 29, 69, 68, -1, 68, 69, 91, 90, -1, 90, 91, 25, 24, 31, 25, 29, 69, 91, -1, 26, 92, 88, 30, -1, 25, 26, 30, 29, -1, 29, 30, 88, 69, -1, 69, 88, 92, 91, -1, 91, 92, 26, 25, 31, 26, 30, 88, 92, -1, 27, 93, 89, 31, -1, 26, 27, 31, 30, -1, 30, 31, 89, 88, -1, 88, 89, 93, 92, -1, 92, 93, 27, 26, 31, 13, 3, 5, 9, -1, 68, 52, 36, 28, -1, 13, 68, 28, 3, -1, 3, 28, 36, 5, -1, 5, 36, 52, 9, -1, 9, 52, 68, 13, 31, 68, 28, 36, 52, -1, 69, 53, 37, 29, -1, 68, 69, 29,
1643 28, -1, 28, 29, 37, 36, -1, 36, 37, 53, 52, -1, 52, 53, 69, 68, 31, 69, 29, 37, 53, -1, 88, 86, 38, 30, -1, 69, 88, 30, 29, -1, 29, 30, 38, 37, -1, 37, 38, 86, 53, -1, 53, 86, 88, 69, 31, 88, 30, 38, 86, -1, 89, 87, 39, 31, -1, 88, 89, 31, 30, -1, 30, 31, 39, 38, -1, 38, 39, 87, 86, -1, 86, 87, 89, 88])
1644 cI = DataArrayInt([0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720, 750, 780, 810, 840, 870, 900, 930, 960, 990, 1020, 1050, 1080])
1645 m3.setConnectivity(c, cI)
1646 m3.checkConsistency()
1647 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1648 grpIds = DataArrayInt([2,7,12,17,95,99,103,107,129,133,137,141]); grpIds.setName("group")
1649 mfu = MEDFileUMesh()
1650 mfu.setMeshAtLevel(0, m3)
1651 mfu.setMeshAtLevel(-1, m2)
1652 mfu.setGroupsAtLevel(-1, [grpIds])
1653 nNod = m3.getNumberOfNodes()
1654 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1655 m3_bis = mfu.getMeshAtLevel(0)
1656 m3_bis.checkConsistency()
1657 m2_bis = mfu.getMeshAtLevel(-1)
1658 m2_bis.checkConsistency()
1659 self.assertEqual(nNod+22, mfu.getNumberOfNodes())
1660 self.assertEqual(nNod+22, m3_bis.getNumberOfNodes())
1661 self.assertEqual(nNod+22, m2_bis.getNumberOfNodes())
1662 self.assertEqual([0, 3, 12, 13, 16, 17, 18, 19, 28, 29, 30, 31, 64, 65, 66, 67, 68, 69, 70, 71, 88, 89], nodesDup.getValues())
1663 self.assertEqual(m3_bis.getCoords()[nodesDup].getValues(), m3_bis.getCoords()[nNod:].getValues())
1664 self.assertEqual(set([0, 1, 2, 3, 24, 25, 26, 27, 28, 29, 30, 31]), set(cells1.getValues()))
1665 self.assertEqual(set([4, 5, 6, 7, 20, 21, 22, 23, 32, 33, 34, 35]), set(cells2.getValues()))
1666 self.assertEqual([2, 7, 12, 17, 95, 99, 103, 107, 129, 133, 137, 141],mfu.getGroupArr(-1,"group").getValues())
1667 self.assertEqual([151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1668 m_desc, _, _, _, _ = m3_bis.buildDescendingConnectivity()
1669 m_desc.checkDeepEquivalOnSameNodesWith(m2_bis, 2, 9.9999)
1672 def testBuildInnerBoundary8(self):
1673 """ 3D test where the crack leaves 'naked' cells. If we call a 'close-to-crack cell' a cell which shares a face with the M1 group,
1674 a 'naked cell' is a cell that has some node duplicated, but which do not share any face with a 'close-to-crack cell'. In this case
1675 it is tricky to decide whether this cell should be renumbered or not ...
1676 Warning: on the mesh below some points have already been doubled by a previous cut.
1678 m3 = MEDCouplingUMesh('box', 3)
1679 coo = DataArrayDouble([(0,15,0),(0,5,0),(3,5,0),(5,5,0),(5,15,0),(5,20,0),(0,20,0),(15,20,0),(15,15,0),(20,15,0),(20,20,0),(20,5,0),(15,5,0),(15,0,0),(20,0,0),(5,-1.60551e-25,0),(5,3,0),(3,0,0),
1680 (3,3,0),(0,0,0),(0,3,0),(0,15,10),(0,15,20),(0,15,30),(0,15,40),(0,5,10),(0,5,20),(0,5,30),(0,5,40),(3,5,10),(3,5,20),(3,5,30),(3,5,40),(5,5,10),(5,5,20),(5,5,30),(5,5,40),(5,15,10),(5,15,20),(5,15,30),
1681 (5,15,40),(5,20,10),(5,20,20),(5,20,30),(5,20,40),(0,20,10),(0,20,20),(0,20,30),(0,20,40),(15,20,10),(15,20,20),(15,20,30),(15,20,40),(15,15,10),(15,15,20),(15,15,30),(15,15,40),(20,15,10),(20,15,20),
1682 (20,15,30),(20,15,40),(20,20,10),(20,20,20),(20,20,30),(20,20,40),(20,5,10),(20,5,20),(20,5,30),(20,5,40),(15,5,10),(15,5,20),(15,5,30),(15,5,40),(15,0,10),(15,0,20),(15,0,30),(15,0,40),(20,0,10),
1683 (20,0,20),(20,0,30),(20,0,40),(5,-1.60551e-25,10),(5,-1.60551e-25,20),(5,-1.60551e-25,30),(5,-1.60551e-25,40),(5,3,10),(5,3,20),(5,3,30),(5,3,40),(3,0,10),(3,0,20),(3,0,30),(3,0,40),(3,3,10),(3,3,20),
1684 (3,3,30),(3,3,40),(0,0,10),(0,0,20),(0,0,30),(0,0,40),(0,3,10),(0,3,20),(0,3,30),(0,3,40),(0,9,0),(3,9,0),(20,9,0),(0,9,10),(0,9,20),(0,9,30),(0,9,40),(3,9,10),(3,9,20),(3,9,30),(3,9,40),(5,9,30),
1685 (5,9,40),(20,9,10),(20,9,20),(20,9,30),(20,9,40),(15,9,30),(15,9,40),(0,15,0),(20,15,0),(0,15,10),(0,15,20),(0,15,30),(0,15,40),(5,15,30),(5,15,40),(15,15,30),(15,15,40),(20,15,10),(20,15,20),(20,15,30),
1688 c = DataArrayInt([31, 5, 4, 124, 6, -1, 41, 45, 126, 37, -1, 5, 41, 37, 4, -1, 4, 37, 126, 124, -1, 124, 126, 45, 6, -1, 6, 45, 41, 5, 31, 41, 37, 126, 45, -1, 42, 46, 127, 38, -1, 41, 42, 38, 37, -1, 37, 38, 127, 126, -1, 126, 127, 46, 45, -1, 45, 46, 42, 41, 31, 42, 38, 127, 46, -1, 43, 47, 128, 130, -1, 42, 43, 130, 38, -1, 38, 130, 128, 127, -1, 127, 128, 47, 46, -1, 46, 47, 43, 42, 31, 43, 130, 128, 47,
1689 -1, 44, 48, 129, 131, -1, 43, 44, 131, 130, -1, 130, 131, 129, 128, -1, 128, 129, 48, 47, -1, 47, 48, 44, 43, 31, 7, 8, 4, 5, -1, 49, 41, 37, 53, -1, 7, 49, 53, 8, -1, 8, 53, 37, 4, -1, 4, 37, 41, 5, -1, 5, 41, 49, 7, 31, 49, 53, 37, 41, -1, 50, 42, 38, 54, -1, 49, 50, 54, 53, -1, 53, 54, 38, 37, -1, 37, 38, 42, 41, -1, 41, 42, 50, 49, 31, 50, 54, 38, 42, -1, 51, 43, 130, 132, -1, 50, 51, 132, 54, -1, 54, 132,
1690 130, 38, -1, 38, 130, 43, 42, -1, 42, 43, 51, 50, 31, 51, 132, 130, 43, -1, 52, 44, 131, 133, -1, 51, 52, 133, 132, -1, 132, 133, 131, 130, -1, 130, 131, 44, 43, -1, 43, 44, 52, 51, 31, 125, 8, 7, 10, -1, 134, 61, 49, 53, -1, 125, 134, 53, 8, -1, 8, 53, 49, 7, -1, 7, 49, 61, 10, -1, 10, 61, 134, 125, 31, 134, 53, 49, 61, -1, 135, 62, 50, 54, -1, 134, 135, 54, 53, -1, 53, 54, 50, 49, -1, 49, 50, 62, 61, -1,
1691 61, 62, 135, 134, 31, 135, 54, 50, 62, -1, 136, 63, 51, 132, -1, 135, 136, 132, 54, -1, 54, 132, 51, 50, -1, 50, 51, 63, 62, -1, 62, 63, 136, 135, 31, 136, 132, 51, 63, -1, 137, 64, 52, 133, -1, 136, 137, 133, 132, -1, 132, 133, 52, 51, -1, 51, 52, 64, 63, -1, 63, 64, 137, 136, 31, 107, 12, 8, 9, -1, 118, 57, 53, 69, -1, 107, 118, 69, 12, -1, 12, 69, 53, 8, -1, 8, 53, 57, 9, -1, 9, 57, 118, 107, 31, 118, 69,
1692 53, 57, -1, 119, 58, 54, 70, -1, 118, 119, 70, 69, -1, 69, 70, 54, 53, -1, 53, 54, 58, 57, -1, 57, 58, 119, 118, 31, 119, 70, 54, 58, -1, 120, 59, 55, 122, -1, 119, 120, 122, 70, -1, 70, 122, 55, 54, -1, 54, 55, 59, 58, -1, 58, 59, 120, 119, 31, 120, 122, 55, 59, -1, 121, 60, 56, 123, -1, 120, 121, 123, 122, -1, 122, 123, 56, 55, -1, 55, 56, 60, 59, -1, 59, 60, 121, 120, 31, 13, 12, 11, 14, -1, 73, 77, 65, 69,
1693 -1, 13, 73, 69, 12, -1, 12, 69, 65, 11, -1, 11, 65, 77, 14, -1, 14, 77, 73, 13, 31, 73, 69, 65, 77, -1, 74, 78, 66, 70, -1, 73, 74, 70, 69, -1, 69, 70, 66, 65, -1, 65, 66, 78, 77, -1, 77, 78, 74, 73, 31, 74, 70, 66, 78, -1, 75, 79, 67, 71, -1, 74, 75, 71, 70, -1, 70, 71, 67, 66, -1, 66, 67, 79, 78, -1, 78, 79, 75, 74, 31, 75, 71, 67, 79, -1, 76, 80, 68, 72, -1, 75, 76, 72, 71, -1, 71, 72, 68, 67, -1, 67, 68, 80,
1694 79, -1, 79, 80, 76, 75, 31, 17, 18, 16, 15, -1, 89, 81, 85, 93, -1, 17, 89, 93, 18, -1, 18, 93, 85, 16, -1, 16, 85, 81, 15, -1, 15, 81, 89, 17, 31, 89, 93, 85, 81, -1, 90, 82, 86, 94, -1, 89, 90, 94, 93, -1, 93, 94, 86, 85, -1, 85, 86, 82, 81, -1, 81, 82, 90, 89, 31, 90, 94, 86, 82, -1, 91, 83, 87, 95, -1, 90, 91, 95, 94, -1, 94, 95, 87, 86, -1, 86, 87, 83, 82, -1, 82, 83, 91, 90, 31, 91, 95, 87, 83, -1, 92, 84,
1695 88, 96, -1, 91, 92, 96, 95, -1, 95, 96, 88, 87, -1, 87, 88, 84, 83, -1, 83, 84, 92, 91, 31, 19, 20, 18, 17, -1, 97, 89, 93, 101, -1, 19, 97, 101, 20, -1, 20, 101, 93, 18, -1, 18, 93, 89, 17, -1, 17, 89, 97, 19, 31, 97, 101, 93, 89, -1, 98, 90, 94, 102, -1, 97, 98, 102, 101, -1, 101, 102, 94, 93, -1, 93, 94, 90, 89, -1, 89, 90, 98, 97, 31, 98, 102, 94, 90, -1, 99, 91, 95, 103, -1, 98, 99, 103, 102, -1, 102, 103,
1696 95, 94, -1, 94, 95, 91, 90, -1, 90, 91, 99, 98, 31, 99, 103, 95, 91, -1, 100, 92, 96, 104, -1, 99, 100, 104, 103, -1, 103, 104, 96, 95, -1, 95, 96, 92, 91, -1, 91, 92, 100, 99, 31, 1, 2, 18, 20, -1, 25, 101, 93, 29, -1, 1, 25, 29, 2, -1, 2, 29, 93, 18, -1, 18, 93, 101, 20, -1, 20, 101, 25, 1, 31, 25, 29, 93, 101, -1, 26, 102, 94, 30, -1, 25, 26, 30, 29, -1, 29, 30, 94, 93, -1, 93, 94, 102, 101, -1, 101, 102,
1697 26, 25, 31, 26, 30, 94, 102, -1, 27, 103, 95, 31, -1, 26, 27, 31, 30, -1, 30, 31, 95, 94, -1, 94, 95, 103, 102, -1, 102, 103, 27, 26, 31, 27, 31, 95, 103, -1, 28, 104, 96, 32, -1, 27, 28, 32, 31, -1, 31, 32, 96, 95, -1, 95, 96, 104, 103, -1, 103, 104, 28, 27, 31, 3, 4, 8, 12, -1, 33, 69, 53, 37, -1, 3, 33, 37, 4, -1, 4, 37, 53, 8, -1, 8, 53, 69, 12, -1, 12, 69, 33, 3, 31, 33, 37, 53, 69, -1, 34, 70, 54, 38, -1,
1698 33, 34, 38, 37, -1, 37, 38, 54, 53, -1, 53, 54, 70, 69, -1, 69, 70, 34, 33, 31, 34, 38, 54, 70, -1, 116, 122, 55, 39, -1, 34, 116, 39, 38, -1, 38, 39, 55, 54, -1, 54, 55, 122, 70, -1, 70, 122, 116, 34, 31, 116, 39, 55, 122, -1, 117, 123, 56, 40, -1, 116, 117, 40, 39, -1, 39, 40, 56, 55, -1, 55, 56, 123, 122, -1, 122, 123, 117, 116, 31, 16, 18, 2, 3, -1, 85, 33, 29, 93, -1, 16, 85, 93, 18, -1, 18, 93, 29, 2,
1699 -1, 2, 29, 33, 3, -1, 3, 33, 85, 16, 31, 85, 93, 29, 33, -1, 86, 34, 30, 94, -1, 85, 86, 94, 93, -1, 93, 94, 30, 29, -1, 29, 30, 34, 33, -1, 33, 34, 86, 85, 31, 86, 94, 30, 34, -1, 87, 35, 31, 95, -1, 86, 87, 95, 94, -1, 94, 95, 31, 30, -1, 30, 31, 35, 34, -1, 34, 35, 87, 86, 31, 87, 95, 31, 35, -1, 88, 36, 32, 96, -1, 87, 88, 96, 95, -1, 95, 96, 32, 31, -1, 31, 32, 36, 35, -1, 35, 36, 88, 87, 31, 4, 3, 106,
1700 105, 0, -1, 37, 21, 108, 112, 33, -1, 3, 4, 37, 33, -1, 106, 3, 33, 112, -1, 105, 106, 112, 108, -1, 0, 105, 108, 21, -1, 4, 0, 21, 37, 31, 37, 33, 112, 108, 21, -1, 38, 22, 109, 113, 34, -1, 33, 37, 38, 34, -1, 112, 33, 34, 113, -1, 108, 112, 113, 109, -1, 21, 108, 109, 22, -1, 37, 21, 22, 38, 31, 38, 34, 113, 109, 22, -1, 39, 23, 110, 114, 116, -1, 34, 38, 39, 116, -1, 113, 34, 116, 114, -1, 109, 113, 114, 110,
1701 -1, 22, 109, 110, 23, -1, 38, 22, 23, 39, 31, 39, 116, 114, 110, 23, -1, 40, 24, 111, 115, 117, -1, 116, 39, 40, 117, -1, 114, 116, 117, 115, -1, 110, 114, 115, 111, -1, 23, 110, 111, 24, -1, 39, 23, 24, 40, 31, 16, 3, 12, 13, 15, -1, 85, 81, 73, 69, 33, -1, 3, 16, 85, 33, -1, 12, 3, 33, 69, -1, 13, 12, 69, 73, -1, 15, 13, 73, 81, -1, 16, 15, 81, 85, 31, 85, 33, 69, 73, 81, -1, 86, 82, 74, 70, 34, -1, 33, 85,
1702 86, 34, -1, 69, 33, 34, 70, -1, 73, 69, 70, 74, -1, 81, 73, 74, 82, -1, 85, 81, 82, 86, 31, 86, 34, 70, 74, 82, -1, 87, 83, 75, 71, 35, -1, 34, 86, 87, 35, -1, 70, 34, 35, 71, -1, 74, 70, 71, 75, -1, 82, 74, 75, 83, -1, 86, 82, 83, 87, 31, 87, 35, 71, 75, 83, -1, 88, 84, 76, 72, 36, -1, 35, 87, 88, 36, -1, 71, 35, 36, 72, -1, 75, 71, 72, 76, -1, 83, 75, 76, 84, -1, 87, 83, 84, 88])
1703 cI = DataArrayInt([0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720, 750, 780, 810, 840, 870, 900, 930, 960, 990, 1020, 1050, 1080, 1110, 1140, 1170, 1200, 1237, 1274, 1311, 1348, 1385, 1422, 1459, 1496])
1704 m3.setConnectivity(c, cI)
1705 m3.checkConsistency()
1706 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1707 grpIds = DataArrayInt([2,7,12,17,101,106,111,116,160,164,170,173,176,179]); grpIds.setName("group")
1708 mfu = MEDFileUMesh()
1709 mfu.setMeshAtLevel(0, m3)
1710 mfu.setMeshAtLevel(-1, m2)
1711 mfu.setGroupsAtLevel(-1, [grpIds])
1712 nNod = m3.getNumberOfNodes()
1713 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1714 m3_bis = mfu.getMeshAtLevel(0)
1715 m3_bis.checkConsistency()
1716 m2_bis = mfu.getMeshAtLevel(-1)
1717 m2_bis.checkConsistency()
1718 self.assertEqual(nNod+23, mfu.getNumberOfNodes())
1719 self.assertEqual(nNod+23, m3_bis.getNumberOfNodes())
1720 self.assertEqual(nNod+23, m2_bis.getNumberOfNodes())
1721 self.assertEqual([5, 15, 16, 35, 36, 39, 40, 41, 42, 43, 44, 81, 82, 83, 84, 85, 86, 87, 88, 116, 117, 130, 131], nodesDup.getValues())
1722 self.assertEqual(m3_bis.getCoords()[nodesDup].getValues(), m3_bis.getCoords()[nNod:].getValues())
1723 self.assertEqual(set([0, 1, 2, 3, 20, 21, 22, 23, 34, 35, 36, 37, 38, 39]), set(cells1.getValues()))
1724 self.assertEqual(set([4, 5, 6, 7, 42, 43, 44, 45, 46, 47]), set(cells2.getValues()))
1725 self.assertEqual([2, 7, 12, 17, 101, 106, 111, 116, 160, 164, 170, 173, 176, 179],mfu.getGroupArr(-1,"group").getValues())
1726 self.assertEqual([212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1727 m_desc, _, _, _, _ = m3_bis.buildDescendingConnectivity()
1728 m_desc.checkDeepEquivalOnSameNodesWith(m2_bis, 2, 9.9999)
1731 def testBuildInnerBoundary9(self):
1732 """ 3D test where the crack is performed so that two non-connex parts are found facing one single connex part on the other side
1735 m3 = MEDCouplingUMesh('box', 3)
1736 coo = DataArrayDouble([(0,4.6,0),(3,4.6,0),(5,4.6,0),(15,4.6,0),(15,0,0),(5,-1.60551e-25,0),(5,3,0),(3,0,0),(3,3.8,0),(0,0,0),(0,3.8,0),(0,4.6,10),(0,4.6,20),(3,4.6,10),(3,4.6,20),(5,4.6,10),(5,4.6,20),(15,4.6,10),(15,4.6,20),(15,0,10),(15,0,20),(5,-1.60551e-25,10),(5,-1.60551e-25,20),(5,3,10),(5,3,20),(3,0,10),(3,0,20),(3,3.8,10),(3,3.8,20),(0,0,10),(0,0,20),(0,3.8,10),(0,3.8,20),(3,3,0),(0,3,0),(3,3,10),(3,3,20),(0,3,10),(0,3,20)])
1738 c = DataArrayInt([31, 7, 33, 6, 5, -1, 25, 21, 23, 35, -1, 7, 25, 35, 33, -1, 33, 35, 23, 6, -1, 6, 23, 21, 5, -1, 5, 21, 25, 7, 31, 25, 35, 23, 21, -1, 26, 22, 24, 36, -1, 25, 26, 36, 35, -1, 35, 36, 24, 23, -1, 23, 24, 22, 21, -1, 21, 22, 26, 25, 31, 9, 34, 33, 7, -1, 29, 25, 35, 37, -1, 9, 29, 37, 34, -1, 34, 37, 35, 33, -1, 33, 35, 25, 7, -1, 7, 25, 29, 9, 31, 29, 37, 35, 25, -1, 30, 26, 36, 38, -1, 29, 30, 38, 37, -1, 37, 38, 36, 35, -1, 35, 36, 26, 25, -1, 25, 26, 30, 29, 31, 0, 1, 8, 10, -1, 11, 31, 27, 13, -1, 0, 11, 13, 1, -1, 1, 13, 27, 8, -1, 8, 27, 31, 10, -1, 10, 31, 11, 0, 31, 11, 13, 27, 31, -1, 12, 32, 28, 14, -1, 11, 12, 14, 13, -1, 13, 14, 28, 27, -1, 27, 28, 32, 31, -1, 31, 32, 12, 11, 31, 6, 8, 1, 2, -1, 23, 15, 13, 27, -1, 6, 23, 27, 8, -1, 8, 27, 13, 1, -1, 1, 13, 15, 2, -1, 2, 15, 23, 6, 31, 23, 27, 13, 15, -1, 24, 16, 14, 28, -1, 23, 24, 28, 27, -1, 27, 28, 14, 13, -1, 13, 14, 16, 15, -1, 15, 16, 24, 23, 31, 6, 2, 3, 4, 5, -1, 23, 21, 19, 17, 15, -1, 2, 6, 23, 15, -1, 3, 2, 15, 17, -1, 4, 3, 17, 19, -1, 5, 4, 19, 21, -1, 6, 5, 21, 23, 31, 23, 15, 17, 19, 21, -1, 24, 22, 20, 18, 16, -1, 15, 23, 24, 16, -1, 17, 15, 16, 18, -1, 19, 17, 18, 20, -1, 21, 19, 20, 22, -1, 23, 21, 22, 24])
1739 cI = DataArrayInt([0, 30, 60, 90, 120, 150, 180, 210, 240, 277, 314])
1740 m3.setConnectivity(c, cI)
1741 m3.checkConsistency()
1742 m2, _, _,_,_ = m3.buildDescendingConnectivity()
1743 grpIds = DataArrayInt([4,9,35,39]); grpIds.setName("group")
1744 mfu = MEDFileUMesh()
1745 mfu.setMeshAtLevel(0, m3)
1746 mfu.setMeshAtLevel(-1, m2)
1747 mfu.setGroupsAtLevel(-1, [grpIds])
1748 m2, _, _, _, _ = m3.buildDescendingConnectivity()
1749 grpIds = DataArrayInt([4,9,35,39]); grpIds.setName("group")
1750 mfu = MEDFileUMesh()
1751 mfu.setMeshAtLevel(0, m3)
1752 mfu.setMeshAtLevel(-1, m2)
1753 mfu.setGroupsAtLevel(-1, [grpIds])
1754 nNod = m3.getNumberOfNodes()
1755 nodesDup, cells1, cells2 = mfu.buildInnerBoundaryAlongM1Group("group")
1756 m3_bis = mfu.getMeshAtLevel(0)
1757 m3_bis.checkConsistency()
1758 m2_bis = mfu.getMeshAtLevel(-1)
1759 m2_bis.checkConsistency()
1760 self.assertEqual(nNod+9, mfu.getNumberOfNodes())
1761 self.assertEqual(nNod+9, m3_bis.getNumberOfNodes())
1762 self.assertEqual(nNod+9, m2_bis.getNumberOfNodes())
1763 self.assertEqual([2, 5, 6, 15, 16, 21, 22, 23, 24], nodesDup.getValues())
1764 self.assertEqual(m3_bis.getCoords()[nodesDup].getValues(), m3_bis.getCoords()[nNod:].getValues())
1765 self.assertEqual(set([0,1,6,7]), set(cells1.getValues()))
1766 self.assertEqual(set([8,9]), set(cells2.getValues()))
1767 self.assertEqual([4,9,35,39],mfu.getGroupArr(-1,"group").getValues())
1768 self.assertEqual([49, 50, 51, 52],mfu.getGroupArr(-1,"group_dup").getValues()) # here only one cell has been duplicated
1769 m_desc, _, _, _, _ = m3_bis.buildDescendingConnectivity()
1770 m_desc.checkDeepEquivalOnSameNodesWith(m2_bis, 2, 9.9999)
1774 def testBasicConstructors(self):
1775 GeneratePyfile18(self)
1776 fname="Pyfile18.med"
1777 TestWriteUMeshesRW1(self)
1778 m=MEDFileMesh.New(fname)
1779 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1780 m=MEDFileMesh.New(fname)
1781 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1782 m=MEDFileUMesh(fname)
1784 self.internalMEDMesh6()
1785 m=MEDFileCMesh("MEDFileMesh5.med")
1786 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1788 m=MEDFileMeshMultiTS()
1789 m=MEDFileMeshMultiTS(fname)
1790 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1792 m=MEDFileMeshes(fname)
1794 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1795 m=MEDFileFieldMultiTS()
1796 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1798 m=MEDFileFields(fname)
1800 m=MEDFileData(fname)
1802 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1803 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1804 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1805 m=MEDCouplingCMesh()
1806 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1807 m=MEDCouplingFieldTemplate(ON_NODES)
1808 m=MEDCouplingMultiFields([])
1809 m=MEDCouplingFieldOverTime([])
1812 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1814 def testBugSemiPartialField(self):
1815 fname="Pyfile46.med"
1816 m=MEDLoaderDataForTest.build2DMesh_3()
1817 m=m[:10] ; m.setName("mesh")
1818 f=m.getMeasureField(False)
1819 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1821 f.setName("SemiPartialField")
1823 f1=f[:6] ; f1.getMesh().setName(m.getName())
1824 f2=f[6:] ; f2.getMesh().setName(m.getName())
1826 mm=MEDFileUMesh.New()
1827 mm.setMeshAtLevel(0,m)
1828 ff=MEDFileField1TS.New()
1829 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1833 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1834 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1835 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1837 fread.checkConsistencyLight()
1838 fread2.checkConsistencyLight()
1839 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1840 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1844 def testUnPolyze1(self):
1845 fname="Pyfile47.med"
1846 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1847 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]
1848 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1849 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]]))
1851 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1852 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1853 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1854 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1855 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1856 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1857 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1858 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1860 mm.setRenumFieldArr(0,None)
1861 mm.setFamilyFieldArr(-1,None)
1865 def testUnPolyze2(self):
1866 fname="Pyfile48.med"
1867 mfd=MEDFileData.New()
1868 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1869 meshes=MEDFileMeshes.New()
1871 mfd.setMeshes(meshes)
1872 fields=MEDFileFields.New()
1873 mfd.setFields(fields)
1874 ff=MEDFileFieldMultiTS.New()
1875 fields.pushField(ff)
1877 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1878 f0_0.setTime(9.5,3,4)
1879 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1881 f0_0.setMesh(mm.getMeshAtLevel(0))
1882 ff.appendFieldNoProfileSBT(f0_0)
1883 ff0=ff.getTimeStepAtPos(0)
1884 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1885 f0_1.setTime(9.5,3,4)
1886 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1887 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1888 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1890 ff0.setFieldProfile(f0_1,mm,0,pfl)
1891 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1892 f0_2.setTime(9.5,3,4)
1893 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1894 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
1895 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1897 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1898 mfd.getFields().shallowCpyGlobs(ff0)
1900 mfd.unPolyzeMeshes()
1902 fmts=mfd.getFields()[0]
1903 self.assertEqual(fmts.getNumberOfTS(),1)
1904 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1905 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1906 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))])
1907 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1908 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1909 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1910 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1911 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1912 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1913 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1914 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))
1915 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1916 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1917 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1918 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1919 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1920 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])
1921 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1922 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1923 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1924 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])
1925 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1931 def testGaussWriteOnPfl1(self):
1932 fname="Pyfile49.med"
1933 fname2="Pyfile50.med"
1934 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1935 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1936 mQ8.allocateCells(1)
1937 mQ8.insertNextCell(NORM_QUAD8,list(range(8)))
1938 mQ8.finishInsertingCells()
1939 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1940 mQ4.allocateCells(1)
1941 mQ4.insertNextCell(NORM_QUAD4,list(range(4)))
1942 mQ4.finishInsertingCells()
1943 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1944 mT3.allocateCells(1)
1945 mT3.insertNextCell(NORM_TRI3,list(range(3)))
1946 mT3.finishInsertingCells()
1948 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.]]
1949 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1950 ms[:]=(elt.deepCopy() for elt in ms)
1951 for m,t in zip(ms,tr):
1952 d=m.getCoords() ; d+= t
1954 m=MEDCouplingUMesh.MergeUMeshes(ms)
1956 m2=m[:13] ; m2.setName(m.getName())
1957 ### 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.
1958 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1959 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1962 da=DataArrayDouble(34) ; da.iota(3.)
1964 f.setName("fieldCellOnPflWithoutPfl")
1965 fInvalid=f.deepCopy()
1966 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])
1967 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])
1968 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])
1969 f.checkConsistencyLight()
1970 fInvalid2=fInvalid.deepCopy()
1971 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1974 mm.setMeshAtLevel(0,m)
1977 f1ts=MEDFileField1TS.New()
1978 pfl=DataArrayInt(list(range(13))) ; pfl.setName("pfl")
1979 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1980 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1981 f1ts.setFieldProfile(f,mm,0,pfl)
1984 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1985 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1986 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1987 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1988 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1989 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1990 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1991 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1993 dataRead=MEDFileData.New(fname)
1994 mRead=dataRead.getMeshes()[0]
1995 f1tsRead=dataRead.getFields()[0][0]
1996 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1997 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1998 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1999 f2_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
2000 f2_bis.checkConsistencyLight()
2001 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
2003 WriteField(fname2,f,True)
2004 f2_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
2005 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
2006 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
2007 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
2008 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
2009 m2=m[pfl] ; m2.setName(m.getName())
2012 da=DataArrayDouble(35) ; da.iota(3.)
2014 f.setName("fieldCellOnPflWithoutPfl2")
2015 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
2016 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])
2017 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])
2018 f.checkConsistencyLight()
2021 mm.setMeshAtLevel(0,m)
2023 f1ts=MEDFileField1TS.New()
2024 f1ts.setFieldProfile(f,mm,0,pfl)
2025 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
2026 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
2027 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
2028 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
2030 dataRead=MEDFileData.New(fname)
2031 mRead=dataRead.getMeshes()[0]
2032 f1tsRead=dataRead.getFields()[0][0]
2033 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
2034 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
2035 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
2036 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
2037 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
2038 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
2039 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
2041 WriteField(fname2,f,True)
2042 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
2043 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
2044 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
2045 ## Use case 3 : no pfl but creation of pfls due to gauss pts
2046 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
2049 da=DataArrayDouble(60) ; da.iota(3.)
2051 f.setName("fieldCellWithoutPfl")
2052 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])
2053 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])
2054 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])
2055 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])
2056 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])
2057 f.checkConsistencyLight()
2059 mm.setMeshAtLevel(0,m)
2060 f1ts=MEDFileField1TS.New()
2061 f1ts.setFieldNoProfileSBT(f)
2062 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
2063 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
2064 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
2065 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
2066 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
2070 dataRead=MEDFileData.New(fname)
2071 mRead=dataRead.getMeshes()[0]
2072 f1tsRead=dataRead.getFields()[0][0]
2073 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
2074 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
2075 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
2076 f3_bis=ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
2077 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
2078 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
2080 WriteField(fname2,f,True)
2081 f3_ter=ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
2082 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
2083 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
2086 # Testing profile on nodes when the profile is identity but not on all nodes.
2088 def testMEDFieldPflOnNode1(self):
2089 fname="Pyfile51.med"
2090 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)
2091 m0=MEDCouplingUMesh("Mesh",2)
2093 m0.insertNextCell(NORM_TRI3,[1,4,2])
2094 m0.insertNextCell(NORM_TRI3,[4,5,2])
2095 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
2096 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
2097 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
2098 m0.finishInsertingCells()
2100 m1=MEDCouplingUMesh(m0.getName(),1)
2102 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
2104 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
2106 m1.finishInsertingCells()
2110 m.setMeshAtLevel(0,m0)
2111 m.setMeshAtLevel(-1,m1)
2113 dt=3 ; it=2 ; tim=4.5
2114 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
2115 fieldNode0.setName("fieldNode0")
2116 fieldNode0.setTime(tim,dt,it)
2117 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
2118 arr=DataArrayDouble([10,11,12,13,14])
2119 fieldNode0.setArray(arr)
2120 f0=MEDFileField1TS()
2121 f0.setFieldProfile(fieldNode0,m,0,pfl0)
2122 m.write(fname,2) ; f0.write(fname,0)
2123 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
2124 fieldNode1.setName("fieldNode1")
2125 fieldNode1.setTime(tim,dt,it)
2126 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
2127 arr1=DataArrayDouble([20,21,22,23,24,25,26])
2128 fieldNode1.setArray(arr1)
2129 f1=MEDFileField1TS()
2130 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
2133 ## Reading from file
2134 m=MEDFileMesh.New(fname)
2135 m0=m.getMeshAtLevel(0)
2136 m00=m0.deepCopy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
2137 fieldNode0.setMesh(m00)
2138 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
2139 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
2140 ff0_1.checkConsistencyLight()
2141 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
2142 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
2143 ff0_2.checkConsistencyLight()
2144 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
2145 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
2146 ff0_3.checkConsistencyLight()
2147 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
2148 ff0_4=ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
2149 ff0_4.checkConsistencyLight()
2150 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
2151 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
2152 m1=m.getMeshAtLevel(-1)
2153 m10=m1.deepCopy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
2154 fieldNode1.setMesh(m10)
2155 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
2156 ff1_1.checkConsistencyLight()
2157 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
2158 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
2159 ff1_2.checkConsistencyLight()
2160 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
2161 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
2162 ff1_3.checkConsistencyLight()
2163 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
2164 ff1_4=ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
2165 ff1_4.checkConsistencyLight()
2166 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
2167 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]
2168 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]
2169 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]
2170 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
2171 arr_r.setName(fieldNode1.getArray().getName())
2172 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
2173 pfl1_r.setName(pfl1.getName())
2174 self.assertTrue(pfl1_r.isEqual(pfl1))
2177 # Testing profile on nodes when the profile is identity but not on all nodes.
2179 def testMEDFieldPflOnCell1(self):
2180 fname="Pyfile52.med"
2181 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)
2182 m0=MEDCouplingUMesh("Mesh",2)
2184 m0.insertNextCell(NORM_TRI3,[1,4,2])
2185 m0.insertNextCell(NORM_TRI3,[4,5,2])
2186 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
2187 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
2188 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
2189 m0.finishInsertingCells()
2191 m1=MEDCouplingUMesh(m0.getName(),1)
2193 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
2195 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
2197 m1.finishInsertingCells()
2201 m.setMeshAtLevel(0,m0)
2202 m.setMeshAtLevel(-1,m1)
2204 dt=3 ; it=2 ; tim=4.5
2205 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
2206 fieldCell0.setName("fieldCell0")
2207 fieldCell0.setTime(tim,dt,it)
2208 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
2209 arr=DataArrayDouble([10,11,12])
2210 fieldCell0.setArray(arr)
2211 f0=MEDFileField1TS()
2212 f0.setFieldProfile(fieldCell0,m,0,pfl0)
2213 m.write(fname,2) ; f0.write(fname,0)
2214 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
2215 fieldCell1.setName("fieldCell1")
2216 fieldCell1.setTime(tim,dt,it)
2217 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
2218 arr1=DataArrayDouble([20,21,22,23,24,25,26])
2219 fieldCell1.setArray(arr1)
2220 f1=MEDFileField1TS()
2221 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
2224 ## Reading from file
2225 m=MEDFileMesh.New(fname)
2226 m0=m.getMeshAtLevel(0)
2227 m00=m0.deepCopy() ; m00=m00[pfl0] ; m00.setName(m.getName())
2228 fieldCell0.setMesh(m00)
2229 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
2230 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
2231 ff0_1.checkConsistencyLight()
2232 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
2233 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
2234 ff0_2.checkConsistencyLight()
2235 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
2236 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
2237 ff0_3.checkConsistencyLight()
2238 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
2239 ff0_4=ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
2240 ff0_4.checkConsistencyLight()
2241 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
2242 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
2243 m1=m.getMeshAtLevel(-1)
2244 m10=m1.deepCopy() ; m10=m10[pfl1] ; m10.setName(m.getName())
2245 fieldCell1.setMesh(m10)
2246 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
2247 ff1_1.checkConsistencyLight()
2248 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
2249 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
2250 ff1_2.checkConsistencyLight()
2251 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
2252 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
2253 ff1_3.checkConsistencyLight()
2254 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
2255 ff1_4=ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
2256 ff1_4.checkConsistencyLight()
2257 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
2258 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]
2259 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]
2260 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]
2261 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
2262 arr_r.setName(fieldCell1.getArray().getName())
2263 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
2264 pfl1_r.setName(pfl1.getName())
2265 self.assertTrue(pfl1_r.isEqual(pfl1))
2269 def testMEDFileUMeshZipCoords1(self):
2271 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2272 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])
2273 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2274 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2275 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2276 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2277 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2278 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
2279 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
2280 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
2281 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
2282 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
2284 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
2285 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
2286 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
2287 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
2288 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
2289 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
2290 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
2291 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
2292 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
2296 def testMEDUMeshAddNodeGroup1(self):
2297 fname="Pyfile53.med"
2299 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2300 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])
2301 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2302 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2303 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2304 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2305 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2308 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
2309 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
2310 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2311 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2312 mm.setFamilyId("MyFam",2)
2313 mm.setFamilyId("MyOtherFam",3)
2314 mm.setFamilyId("MyOther-1",-1)
2315 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2316 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2318 self.assertTrue(mm.getNodeFamiliesArr(["MyFam","MyOtherFam"]).isEqual(DataArrayInt([1,3,4,12]))) # find family id 2 and 3 into famCoo
2320 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2321 mm.addNodeGroup(daTest)
2322 self.assertTrue(mm.getNodeGroupArr(daTest.getName()).isEqual(daTest)) # the node group has been pushed right before -> now read it
2323 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
2325 expect1=DataArrayInt([1,4]) ; expect1.setName("MyFam")
2326 self.assertTrue(mm.getNodeFamilyArr(expect1.getName()).isEqual(expect1))
2328 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2329 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2330 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2331 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2333 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2334 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2335 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2336 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2337 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2338 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2340 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
2341 da=DataArrayInt([3,12]) ; da.setName("grp0")
2342 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2344 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2346 mm=MEDFileMesh.New(fname)
2347 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
2348 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
2349 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
2350 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2352 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
2353 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2354 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2355 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2356 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
2357 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2359 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
2360 da=DataArrayInt([3,12]) ; da.setName("grp0")
2361 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
2363 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2367 def testMEDUMeshAddGroup1(self):
2368 fname="Pyfile54.med"
2370 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
2371 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
2373 m0.insertNextCell(NORM_TRI3,[1,2,1])
2376 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
2379 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
2381 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
2382 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
2383 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
2384 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
2385 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
2388 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
2389 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
2390 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
2391 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
2392 mm.setFamilyId("MyFam",2)
2393 mm.setFamilyId("MyOtherFam",3)
2394 mm.setFamilyId("MyOther-1",-1)
2395 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
2396 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
2398 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
2399 mm.addGroup(0,daTest)
2400 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2401 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2402 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2403 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2405 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2406 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2407 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2408 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2409 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2410 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2412 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
2413 da=DataArrayInt([3,12]) ; da.setName("grp0")
2414 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2416 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2418 mm=MEDFileMesh.New(fname)
2419 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
2420 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
2421 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
2422 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
2424 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
2425 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
2426 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
2427 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
2428 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
2429 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
2431 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
2432 da=DataArrayInt([3,12]) ; da.setName("grp0")
2433 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
2435 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
2439 def testHeapMem1(self):
2440 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2442 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2444 m=MEDCouplingCMesh()
2445 arr=DataArrayDouble(10,1) ; arr.iota(0)
2446 m.setCoords(arr,arr)
2447 m=m.buildUnstructured()
2449 f=m.getMeasureField(False)
2450 cooMem = 100 * 2 * 8
2451 nodalMem = 5 * 81 * MEDCouplingSizeOfIDs()//8
2452 indexMem = 82 * MEDCouplingSizeOfIDs()//8
2453 meshMem = cooMem + nodalMem + indexMem
2454 self.assertIn(m.getHeapMemorySize(), list(range(meshMem - 100, meshMem + 100 + 4 * strMulFac)))
2455 delta = (m.getHeapMemorySize()-meshMem)//3 # std::string::capacity behaves differently
2456 self.assertIn(f.getHeapMemorySize(), list(range(meshMem + 81*8 - (100 + 3*delta), meshMem + 81*8 + (100+3*delta) + 8 * strMulFac)))
2459 mm.setMeshAtLevel(0,m)
2460 self.assertIn(mm.getHeapMemorySize(), list(range(meshMem + 81*(MEDCouplingSizeOfIDs()//8) - (100+3*delta), meshMem + 81*(MEDCouplingSizeOfIDs()//8) + (100+3*delta) + 10 * strMulFac)))
2461 ff=MEDFileField1TS()
2462 ff.setFieldNoProfileSBT(f)
2463 self.assertIn(ff.getHeapMemorySize(), list(range(771 - 40, 871 + 21 + (4 + 1) * strMulFac)))
2465 fff=MEDFileFieldMultiTS()
2466 fff.appendFieldNoProfileSBT(f)
2467 self.assertIn(fff.getHeapMemorySize(), list(range(815 - 50, 915 + 30 + (6 + 2) * strMulFac)))
2469 fff.appendFieldNoProfileSBT(f)
2470 self.assertIn(fff.getHeapMemorySize(), list(range(1594 - 90, 1794 + 50 + (10 + 1) * strMulFac)))
2471 self.assertIn(fff[0, -1].getHeapMemorySize(), list(range(771 - 40, 871 + 20 + (4 + 1) * strMulFac)))
2474 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2475 fff.appendFieldProfile(f2,mm,0,pfl)
2476 self.assertIn(fff.getHeapMemorySize(), range(2348 - 130, 2608 + 400 + (10 + 2) * strMulFac))
2477 self.assertIn(fff.getProfile("pfl").getHeapMemorySize(), list(range(50 *(MEDCouplingSizeOfIDs()//8) - 10, 50 *(MEDCouplingSizeOfIDs()//8) + 10 + 2 * strMulFac)))
2478 self.assertIn(fff[1, -1].getHeapMemorySize(), range(538 + (50 *(MEDCouplingSizeOfIDs()//8)) - 50, 900 + (50 *(MEDCouplingSizeOfIDs()//8)) + 30 + 4 * strMulFac))
2481 def internalCurveLinearMesh1(self):
2482 fname="Pyfile55.med"
2483 mesh=MEDCouplingCurveLinearMesh();
2484 mesh.setTime(2.3,4,5);
2485 mesh.setTimeUnit("us");
2486 mesh.setName("Example of Cuve linear mesh");
2487 mesh.setDescription("buildCLMesh");
2488 a1=DataArrayDouble(3*20,1);
2489 a1.iota(7.) ; a1.rearrange(3);
2491 mesh.setNodeGridStructure([4,5]);
2492 mesh.checkConsistencyLight();
2494 m=MEDFileCurveLinearMesh()
2496 d=DataArrayInt(20) ; d.iota(4)
2497 m.setFamilyFieldArr(1,d)
2498 d3=DataArrayInt(20) ; d3.iota(400)
2499 m.setRenumFieldArr(1,d3)
2500 d2=DataArrayInt(12) ; d2.iota(40)
2501 m.setFamilyFieldArr(0,d2)
2502 d4=DataArrayInt(21) ; d4.iota(4000)
2503 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2505 m.setRenumFieldArr(1,d4)
2508 m1=MEDFileCurveLinearMesh(fname)
2510 self.assertTrue(mm.isEqual(mesh,1e-12))
2511 self.assertEqual(mm.getSpaceDimension(),3)
2512 self.assertEqual(mm.getSpaceDimensionOnNodeStruct(),2)
2514 m1=MEDFileMesh.New(fname)
2515 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2516 self.assertTrue(isinstance(m1.getUnivName(),str))
2517 self.assertTrue(len(m1.getUnivName())!=0)
2518 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2522 def testCurveLinearMesh1(self):
2523 self.internalCurveLinearMesh1()
2526 def testParameters1(self):
2527 self.internalParameters1()
2529 def internalParameters1(self):
2530 fname="Pyfile56.med"
2531 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2532 mm=MEDFileCMesh() ; mm.setMesh(m)
2533 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2535 p=MEDFileParameters()
2536 data.setParams(p) ; data.setMeshes(ms)
2537 pts=MEDFileParameterMultiTS()
2538 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2539 pts.appendValue(1,2,3.4,567.89)
2540 pts.appendValue(2,3,5.6,999.123)
2541 pts2=pts.deepCopy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2542 p.pushParam(pts) ; p.pushParam(pts2)
2544 p2=MEDFileParameters(fname)
2545 self.assertTrue(p.isEqual(p2,1e-14)[0])
2546 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2548 pts4=pts2.deepCopy()
2549 pts3=pts2.deepCopy()
2550 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2551 pts2.eraseTimeStepIds([0])
2552 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2554 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2555 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2556 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2557 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2558 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2560 self.assertTrue(p.isEqual(p2,1e-14)[0])
2561 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2562 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2563 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2564 self.assertEqual(p.getParamsNames(),('A','B'))
2565 ptsr=MEDFileParameterMultiTS(fname,"B")
2566 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2567 ptsr=MEDFileParameterMultiTS(fname)
2568 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2569 p1tsr=MEDFileParameterDouble1TS(fname)
2570 self.assertEqual(p1tsr.getName(),"A")
2571 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2572 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2573 self.assertEqual(p1tsr.getName(),"B")
2574 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2575 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2576 self.assertEqual(p1tsr.getName(),"B")
2577 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2578 data2=MEDFileData(fname)
2579 self.assertEqual(2,data2.getNumberOfParams())
2580 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2584 def testNamesOnCellAndNodesInMeshes1(self):
2585 fname="Pyfile58.med"
2586 fname2="Pyfile59.med"
2587 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2588 m1=m.buildDescendingConnectivity()[0]
2589 m1.sortCellsInMEDFileFrmt()
2592 mm.setMeshAtLevel(0,m)
2593 mm.setMeshAtLevel(-1,m1)
2594 namesCellL0=DataArrayAsciiChar(6,16)
2595 namesCellL0[:] = ["CellL0#%.3d " % (i) for i in range(6)]
2596 mm.setNameFieldAtLevel(0,namesCellL0)
2597 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.subArray(2)])
2598 namesCellL1[:] = ["CellLM1#%.3d " % (i) for i in range(16)]
2599 mm.setNameFieldAtLevel(-1,namesCellL1)
2600 namesNodes=namesCellL1.subArray(4,16)
2601 namesNodes[:] = ["Node#%.3d " % (i) for i in range(12)]
2602 mm.setNameFieldAtLevel(1,namesNodes)
2605 mmr=MEDFileMesh.New(fname)
2606 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d " % (i) for i in range(6)])))
2607 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d " % (i) for i in range(16)])))
2608 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d " % (i) for i in range(12)])))
2609 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2610 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2611 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2612 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2613 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2615 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2616 # remove names on nodes
2617 mmCpy.setNameFieldAtLevel(1,None)
2618 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2619 mm.setNameFieldAtLevel(1,None)
2620 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2621 mm.setNameFieldAtLevel(-1,None)
2623 mmr=MEDFileMesh.New(fname)
2624 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2625 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d " % (i) for i in range(6)])))
2626 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2628 c=MEDCouplingCMesh()
2629 arr=DataArrayDouble([0.,1.1,2.3])
2630 c.setCoords(arr,arr)
2634 cc.setNameFieldAtLevel(0, DataArrayAsciiChar(["Cell#%.3d " % (i) for i in range(4)]))
2635 cc.setNameFieldAtLevel(1, DataArrayAsciiChar(["Node#%.3d " % (i) for i in range(9)]))
2637 ccr=MEDFileMesh.New(fname2)
2638 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d " % (i) for i in range(4)])))
2639 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d " % (i) for i in range(9)])))
2640 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2641 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2642 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2643 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2644 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2646 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2650 def testToExportInExamples1(self):
2651 m=MEDCouplingCMesh()
2652 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2653 m.setCoords(arr,arr)
2654 m=m.buildUnstructured() ; m.setName("mesh")
2655 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2656 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2659 mm.setMeshAtLevel(0,m)
2660 mm.setMeshAtLevel(-1,m2)
2661 mm.setGroupsAtLevel(0,[grp1,grp2])
2662 mm.write("example.med",2)
2664 m0=mm.getMeshAtLevel(0)
2665 m1=mm.getMeshAtLevel(-1)
2666 grp1=mm.getGroupArr(0,"grp1")
2667 grp2=mm.getGroupArr(0,"grp2")
2669 whichGrp=DataArrayInt(m0.getNumberOfCells())
2670 whichGrp.fillWithValue(-1)
2671 for grpId,grp in enumerate(grps):
2674 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2675 e,f=a.areCellsIncludedIn(m1,2)
2677 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2678 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2679 c2.transformWithIndArr(whichGrp)
2680 splitOfM1=len(grps)*[None]
2681 for grpId,grp in enumerate(grps):
2682 tmp=c2.findIdsEqual(grpId)
2683 splitOfM1[grpId]=tmp
2685 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2686 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2690 def testBugCorrection1(self):
2693 self.assertEqual(fs[0],None)
2694 self.assertEqual(3,len(fs))
2698 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2699 f1Name="Pyfile60.med"
2700 f2Name="Pyfile61.med"
2701 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2703 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2705 # reading and compare
2706 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2707 for mn in d1.getMeshes().getMeshesNames():
2708 m1=d1.getMeshes()[mn]
2709 m2=d2.getMeshes()[mn]
2710 for lev in m1.getNonEmptyLevels():
2711 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2712 for grpName in grpsNames:
2713 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2717 for fieldn in d1.getFields().getFieldsNames():
2718 f1=d1.getFields()[fieldn]
2719 f2=d2.getFields()[fieldn]
2720 for it,order,tim in f1.getTimeSteps():
2723 if len(f1t.getPflsReallyUsed())!=0:
2725 for lev in f1t.getNonEmptyLevels()[1]:
2726 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2727 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2728 self.assertTrue(pfl1.isEqual(pfl2))
2729 self.assertTrue(arr1.isEqual(arr2,1e-10))
2734 for lev in f1t.getNonEmptyLevels()[1]:
2735 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2736 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2737 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2745 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2746 m=MEDCouplingCMesh()
2747 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2748 m.setCoords(arr,arr,arr)
2749 m=m.buildUnstructured()
2750 m2=m.buildDescendingConnectivity()[0]
2752 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2753 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2754 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2755 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2756 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2757 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2759 mm.setMeshAtLevel(0,m)
2760 mm.setGroupsAtLevel(0,[g1,g2])
2761 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2762 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2763 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2764 mm.normalizeFamIdsMEDFile()
2765 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2766 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2767 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2768 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2769 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2770 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2771 for g in mm.getGroupsOnSpecifiedLev(0):
2772 for f in mm.getFamiliesIdsOnGroup(g):
2773 self.assertTrue(f<0)
2778 mm.setMeshAtLevel(0,m)
2779 mm.setMeshAtLevel(-1,m2)
2780 mm.setGroupsAtLevel(0,[g1,g2])
2781 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2782 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2783 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2784 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2785 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2786 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2787 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2788 mm.normalizeFamIdsMEDFile()
2789 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2790 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2791 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2792 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2793 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2794 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2795 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2796 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2797 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2798 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2799 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2800 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2802 for g in mm.getGroupsOnSpecifiedLev(lev):
2803 for f in mm.getFamiliesIdsOnGroup(g):
2804 self.assertTrue(f<0)
2810 mm.setMeshAtLevel(0,m)
2811 mm.setMeshAtLevel(-1,m2)
2812 mm.setGroupsAtLevel(0,[g1,g2])
2813 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2814 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2815 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2816 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2817 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2818 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2819 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2820 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2821 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2822 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2823 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2824 mm.normalizeFamIdsMEDFile()
2825 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2826 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2827 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2828 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2829 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2830 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2831 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2832 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2833 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2834 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2835 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2836 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2837 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2838 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2839 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2840 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2841 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2842 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2844 for g in mm.getGroupsOnSpecifiedLev(lev):
2845 for f in mm.getFamiliesIdsOnGroup(g):
2846 self.assertTrue(f<0)
2850 for g in mm.getGroupsOnSpecifiedLev(1):
2851 for f in mm.getFamiliesIdsOnGroup(g):
2852 self.assertTrue(f>0)
2858 def testNonRegressionMantis22212ChangeGrpName(self):
2859 fileName="Pyfile62.med"
2860 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2861 m=MEDFileUMesh.New()
2862 m.setCoords(m2.getCoords())
2863 m.setMeshAtLevel(0,m2)
2864 m.setMeshAtLevel(-1,m1)
2865 m.setMeshAtLevel(-2,m0)
2866 m.setFamilyFieldArr(0,f2)
2867 m.setFamilyFieldArr(-1,f1)
2868 m.setFamilyFieldArr(-2,f0)
2869 m.setFamilyFieldArr(1,p)
2871 for i in range(nbOfFams):
2872 m.addFamily(fns[i],fids[i])
2875 for i in range(nbOfGrps):
2876 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2878 m.setName(m2.getName())
2879 m.setDescription(m2.getDescription())
2882 mm0=MEDFileMesh.New(fileName)
2883 mm1=MEDFileMesh.New(fileName)
2884 groupNamesIni=GetMeshGroupsNames(fileName,"ma")
2885 for name in groupNamesIni:
2886 mm1.changeGroupName(name,name+'N')
2888 mm1.write(fileName,2)
2891 mm2=MEDFileMesh.New(fileName)
2892 for name in groupNamesIni:
2893 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2894 arr0=mm0.getGroupArr(lev,name)
2895 arr2=mm2.getGroupArr(lev,name+'N')
2896 arr0.setName(name+'N')
2897 self.assertTrue(arr0.isEqual(arr2))
2903 def testInt32InMEDFileFieldStar1(self):
2904 self.internalInt32InMEDFileFieldStar1()
2906 def internalInt32InMEDFileFieldStar1(self):
2907 fname="Pyfile63.med"
2908 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2909 f1=f1.convertToIntField()
2911 mm1=MEDFileUMesh.New()
2912 mm1.setCoords(m1.getCoords())
2913 mm1.setMeshAtLevel(0,m1)
2914 mm1.setName(m1.getName())
2916 ff1=MEDFileIntField1TS()
2917 ff1.setFieldNoProfileSBT(f1)
2918 a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2919 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2920 self.assertTrue(a.isEqual(f1,1e-12,0))
2922 a,b=ff1.getUndergroundDataArrayExt()
2923 self.assertEqual(a.getHiddenCppPointer(),ff1.getUndergroundDataArray().getHiddenCppPointer())
2924 self.assertEqual(b,[((3,0),(0,2)),((4,0),(2,4)),((6,0),(4,5)),((5,0),(5,6))])
2925 ff2=MEDFileAnyTypeField1TS.New(fname)
2926 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2927 self.assertEqual(ff2.getTime(),[0,1,2.0])
2928 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2929 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2930 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2931 self.assertTrue(a.isEqual(f1,1e-12,0))
2933 c=ff2.getUndergroundDataArray() ; c*=2
2934 ff2.write(fname,0) # 2 time steps in
2935 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2936 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2937 self.assertEqual(len(ffs1),2)
2938 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2939 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2940 self.assertTrue(a.isEqual(f1,1e-12,0))
2941 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
2942 self.assertTrue(a.isEqual(f1,1e-12,0))
2943 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2944 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2945 self.assertTrue(a.getArray().isEqual(2*f1.getArray()))
2946 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
2947 self.assertTrue(a.isEqual(f1,1e-12,0)) ; f1.getArray()[:]/=2
2948 bc=DataArrayInt32(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2950 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
2953 self.assertTrue(bc.isEqual(3*f1.getArray()))
2954 nf1=MEDCouplingFieldInt(ON_NODES)
2955 nf1.setTime(9.,10,-1)
2956 nf1.setMesh(f1.getMesh())
2957 narr=DataArrayInt32(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
2958 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
2959 nff1=MEDFileIntField1TS.New()
2960 nff1.setFieldNoProfileSBT(nf1)
2961 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2962 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2965 nf2=MEDCouplingFieldInt(ON_NODES)
2966 nf2.setTime(19.,20,-11)
2967 nf2.setMesh(f1.getMesh())
2968 narr2=DataArrayInt32(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2969 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
2970 nff2=MEDFileIntField1TS.New()
2971 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2972 nff2.setFieldProfile(nf2,mm1,0,npfl)
2973 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2974 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2975 self.assertTrue(b.isEqual(npfl))
2976 self.assertTrue(a.isEqual(narr2))
2978 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2979 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2980 self.assertTrue(b.isEqual(npfl))
2981 self.assertTrue(a.isEqual(narr2))
2983 nf3=MEDCouplingFieldDouble(ON_NODES)
2984 nf3.setName("VectorFieldOnNodesDouble")
2985 nf3.setTime(29.,30,-21)
2986 nf3.setMesh(f1.getMesh())
2987 nf3.setArray(f1.getMesh().getCoords())
2988 nff3=MEDFileField1TS.New()
2989 nff3.setFieldNoProfileSBT(nf3)
2991 fs=MEDFileFields(fname)
2992 self.assertEqual(len(fs),4)
2993 ffs=[it for it in fs]
2994 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2995 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2996 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2997 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2999 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray()))
3000 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray()))
3001 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
3002 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
3003 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
3005 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
3006 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
3007 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
3008 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
3009 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
3010 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
3011 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
3012 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
3014 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
3015 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
3016 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
3017 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
3021 def testMEDFileFields1(self):
3022 fname="Pyfile64.med"
3023 f1=MEDCouplingFieldDouble(ON_NODES)
3024 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
3025 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
3026 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
3028 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=list(range(12)) ; arr[:,1]=2*arr[:,0]
3030 f1.setName("Field1")
3031 ff1=MEDFileField1TS.New()
3032 ff1.setFieldNoProfileSBT(f1)
3033 self.assertEqual(ff1.getDtUnit(),"us")
3035 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
3036 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
3038 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
3039 ff1s=MEDFileFieldMultiTS(fname,"Field1")
3040 ff1s.setName("Field2")
3042 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
3043 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
3044 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
3045 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
3046 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
3047 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
3048 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
3049 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
3052 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
3054 def testMEDFileFields2(self):
3055 fname="Pyfile65.med"
3056 # to check that all is initialize
3057 MEDFileField1TS().__str__()
3058 MEDFileFieldMultiTS().__str__()
3059 # building a mesh containing 4 tri3 + 5 quad4
3060 tri=MEDCouplingUMesh("tri",2)
3061 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3062 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3063 tris = [tri.deepCopy() for i in range(4)]
3064 for i,elt in enumerate(tris): elt.translate([i,0])
3065 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3066 quad=MEDCouplingUMesh("quad",2)
3067 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3068 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3069 quads = [quad.deepCopy() for i in range(5)]
3070 for i,elt in enumerate(quads): elt.translate([5+i,0])
3071 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3072 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3073 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3075 fmts0_0=MEDFileFieldMultiTS()
3076 fmts0_1=MEDFileFieldMultiTS()
3079 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
3080 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
3081 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
3082 f.setTime(float(i+1)+0.1,i+1,-i-1)
3083 fmts0_0.appendFieldNoProfileSBT(f)
3084 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
3085 self.assertEqual(fmts0_1.getName(),name1)
3086 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
3087 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
3089 # components names have been modified to generate errors
3090 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
3091 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
3092 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
3093 f1ts.setInfo(['aa [bb]','eee [dd]'])
3094 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
3096 # add a mismatch of nb of compos
3098 fmts0_2=fmts0_0.deepCopy()
3099 fmts0_3=fmts0_0.deepCopy()
3100 fmts0_4=fmts0_0.deepCopy()
3101 fmts0_5=fmts0_0.shallowCpy()
3102 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)
3104 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
3105 del fmts0_3[[1.1,(6,-6),9]]
3106 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
3107 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
3108 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
3109 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
3110 fmts0_7=fmts0_4[::-3]
3111 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
3112 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
3115 fs0.pushField(fmts0_0)
3116 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
3117 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
3118 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
3119 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
3121 fs0=MEDFileFields(fname)
3122 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
3123 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
3124 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
3125 del fs1[["2ndField",3]]
3126 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
3127 fs2=fs0[[0,"4thField"]]
3128 self.assertTrue(isinstance(fs2,MEDFileFields))
3129 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
3131 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
3134 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
3136 def testMEDFileFields3(self):
3137 fname="Pyfile66.med"
3138 # building a mesh containing 4 tri3 + 5 quad4
3139 tri=MEDCouplingUMesh("tri",2)
3140 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3141 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3142 tris = [tri.deepCopy() for i in range(4)]
3143 for i,elt in enumerate(tris): elt.translate([i,0])
3144 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3145 quad=MEDCouplingUMesh("quad",2)
3146 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3147 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3148 quads = [quad.deepCopy() for i in range(5)]
3149 for i,elt in enumerate(quads): elt.translate([5+i,0])
3150 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3151 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3152 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3154 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3156 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3157 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
3158 fmts0_0=MEDFileFieldMultiTS()
3159 fmts0_1=MEDFileFieldMultiTS()
3162 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
3163 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
3164 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
3165 f.setTime(float(i+1)+0.1,i+1,-i-1)
3166 fmts0_0.appendFieldProfile(f,mm,0,pfl)
3167 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
3168 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
3169 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
3172 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
3173 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
3174 fmts0_0.zipPflsNames()
3175 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
3176 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
3177 fmts0_2=fmts0_0.deepCopy()
3178 fmts0_3=fmts0_0.deepCopy()
3179 fmts0_4=fmts0_0.deepCopy()
3181 fs0.pushField(fmts0_0)
3182 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
3183 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
3184 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
3185 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
3187 fmts0_5=MEDFileFieldMultiTS()
3189 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
3190 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
3191 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
3192 f.setTime(float(i+1)+0.1,i+1,-i-1)
3193 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
3195 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
3196 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
3197 fs0.checkGlobsCoherency()
3202 def testSplitComponents1(self):
3203 fname="Pyfile67.med"
3204 # building a mesh containing 4 tri3 + 5 quad4
3205 tri=MEDCouplingUMesh("tri",2)
3206 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3207 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3208 tris = [tri.deepCopy() for i in range(4)]
3209 for i,elt in enumerate(tris): elt.translate([i,0])
3210 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3211 quad=MEDCouplingUMesh("quad",2)
3212 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3213 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3214 quads = [quad.deepCopy() for i in range(5)]
3215 for i,elt in enumerate(quads): elt.translate([5+i,0])
3216 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3217 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3218 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3220 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3222 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3223 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
3225 fmts0_1=MEDFileFieldMultiTS()
3227 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
3230 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
3231 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
3232 f.setTime(float(i+1)+0.1,i+1,-i-1)
3233 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
3234 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
3236 fs.pushField(fmts0_1)
3237 self.assertEqual(1,len(fs))
3238 l=fmts0_1.splitComponents()
3239 self.assertEqual(3,len(l))
3240 for elt in l: self.assertEqual(10,len(elt))
3241 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
3243 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
3246 self.assertEqual(4,len(fs))
3247 for elt in fs: self.assertEqual(10,len(elt))
3248 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
3249 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
3251 fs.write(fname,0) ; del fs
3253 fs1=MEDFileFields(fname)
3254 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
3255 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
3256 self.assertEqual(4,len(fs1))
3258 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
3259 f1ts=fs1[fieldName][i]
3260 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
3261 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
3262 self.assertTrue(d.isEqual(f.getArray(),1e-13))
3264 f1ts=fs1["1stField"][i]
3265 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
3266 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
3267 self.assertTrue(d.isEqual(f.getArray(),1e-13))
3272 def testMEDFileFieldConvertTo1(self):
3273 fname="Pyfile68.med"
3274 # building a mesh containing 4 tri3 + 5 quad4
3275 tri=MEDCouplingUMesh("tri",2)
3276 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3277 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3278 tris = [tri.deepCopy() for i in range(4)]
3279 for i,elt in enumerate(tris): elt.translate([i,0])
3280 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3281 quad=MEDCouplingUMesh("quad",2)
3282 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3283 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3284 quads = [quad.deepCopy() for i in range(5)]
3285 for i,elt in enumerate(quads): elt.translate([5+i,0])
3286 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3287 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3288 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3289 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3291 ff0=MEDFileField1TS()
3292 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")
3293 f0.checkConsistencyLight()
3294 ff0.setFieldNoProfileSBT(f0)
3296 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
3297 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3299 ff0i=ff0.convertToInt()
3300 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
3301 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
3303 ff1=ff0i.convertToDouble()
3304 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3305 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
3307 ff0i64=ff0.convertToInt64()
3308 self.assertEqual(ff0i64.getFieldSplitedByType(),fspExp)
3309 self.assertTrue(arr.convertToInt64Arr().isEqual(ff0i64.getUndergroundDataArray()))
3311 ff2=ff0i64.convertToDouble()
3312 self.assertTrue(ff2.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3313 self.assertEqual(ff2.getFieldSplitedByType(),fspExp)
3315 del arr,f0,ff0,ff1,ff2,ff0i,ff0i64,fspExp
3316 ff0=MEDFileField1TS()
3317 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")
3318 f0.checkConsistencyLight()
3319 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
3320 ff0.setFieldProfile(f0,mm,0,pfl)
3321 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
3322 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3324 ff0i=ff0.convertToInt()
3325 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
3326 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
3327 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
3329 ff1=ff0i.convertToDouble()
3330 self.assertTrue(isinstance(ff1,MEDFileField1TS))
3331 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3332 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
3334 ff0i64=ff0.convertToInt64()
3335 self.assertTrue(isinstance(ff0i64,MEDFileInt64Field1TS))
3336 self.assertEqual(ff0i64.getFieldSplitedByType(),fspExp)
3337 self.assertTrue(arr.convertToInt64Arr().isEqual(ff0i64.getUndergroundDataArray()))
3339 ff2=ff0i64.convertToDouble()
3340 self.assertTrue(isinstance(ff2,MEDFileField1TS))
3341 self.assertTrue(ff2.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
3342 self.assertEqual(ff2.getFieldSplitedByType(),fspExp)
3344 ff0=MEDFileFieldMultiTS()
3345 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)
3346 f0.checkConsistencyLight()
3347 ff0.appendFieldProfile(f0,mm,0,pfl)
3348 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)
3349 f0.checkConsistencyLight()
3350 ff0.appendFieldProfile(f0,mm,0,pfl)
3351 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)
3352 f0.checkConsistencyLight()
3353 ff0.appendFieldProfile(f0,mm,0,pfl)
3354 ff1=ff0.convertToInt()
3355 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3356 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3357 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3358 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3359 arr=ff1.getUndergroundDataArray(dt,it)
3360 arr.isEqualWithoutConsideringStr(DataArrayInt32.Range(delt,delt+7,1))
3362 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3367 ff1=ff1.convertToDouble()
3368 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
3369 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3370 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3371 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
3372 arr=ff1.getUndergroundDataArray(dt,it)
3373 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
3375 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
3377 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
3378 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
3379 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
3380 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
3381 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
3382 arr=ff1.getUndergroundDataArray(dt,it)
3383 arr.isEqualWithoutConsideringStr(DataArrayInt32.Range(delt,delt+7,1))
3385 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
3389 def testMEDFileFieldPartialLoading(self):
3390 fname="Pyfile69.med"
3392 a=DataArrayInt() ; aa=a.getHeapMemorySize()
3394 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
3395 # building a mesh containing 30 tri3 + 40 quad4
3396 tri=MEDCouplingUMesh("tri",2)
3397 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3398 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3399 tris = [tri.deepCopy() for i in range(30)]
3400 for i,elt in enumerate(tris): elt.translate([i,0])
3401 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3402 quad=MEDCouplingUMesh("quad",2)
3403 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3404 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3405 quads = [quad.deepCopy() for i in range(40)]
3406 for i,elt in enumerate(quads): elt.translate([40+i,0])
3407 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3408 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3409 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3410 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
3412 ff0=MEDFileField1TS()
3413 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")
3414 f0.checkConsistencyLight()
3415 ff0.setFieldNoProfileSBT(f0)
3418 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
3419 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3421 ff0=MEDFileField1TS()
3422 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")
3423 f0.checkConsistencyLight()
3424 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
3425 ff0.setFieldProfile(f0,mm,0,pfl)
3426 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
3427 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
3430 ff0=MEDFileField1TS(fname,False)
3431 self.assertEqual(ff0.getName(),"FieldCell")
3432 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
3433 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
3434 heap_memory_ref=ff0.getHeapMemorySize()
3435 self.assertIn(heap_memory_ref, list(range(182, 540 + 2 * strMulFac)))
3437 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
3438 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3439 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
3441 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
3442 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
3443 heap_memory_ref=ff0.getHeapMemorySize()
3444 self.assertIn(heap_memory_ref, list(range(350, 700 + 6 * strMulFac)))
3446 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
3447 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3448 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3450 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3451 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3452 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3453 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3455 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3456 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
3457 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3458 ff0.loadArraysIfNecessary() ##
3459 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
3460 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3461 heap_memory_ref=ff0.getHeapMemorySize()
3462 self.assertIn(heap_memory_ref, list(range(1100, 1600 + 2 * strMulFac)))
3464 hmd=ff0.getHeapMemorySize()-heap_memory_ref
3465 self.assertEqual(hmd,-800) # -50*8*2
3467 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
3469 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
3470 heap_memory_ref=ff0.getHeapMemorySize()
3471 self.assertIn(heap_memory_ref, list(range(299, 670 + 6 * strMulFac)))
3473 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
3474 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
3476 fieldName="FieldCellMultiTS"
3477 ff0=MEDFileFieldMultiTS()
3479 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)
3480 f0.setTime(float(t)+0.1,t,100+t)
3481 f0.checkConsistencyLight()
3482 ff0.appendFieldNoProfileSBT(f0)
3486 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
3487 heap_memory_ref=ff0.getHeapMemorySize()
3488 self.assertIn(heap_memory_ref, range(5536, 9212 + (80 + 26 + 1) * strMulFac))
3490 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
3493 ffs=MEDFileFields(fname,False)
3494 heap_memory_ref=ffs.getHeapMemorySize()
3495 self.assertIn(heap_memory_ref, range(5335, 10331 + (80 + 50 + len(ffs)) * strMulFac))
3497 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
3501 def testMEDFileMeshReadSelector1(self):
3502 mrs=MEDFileMeshReadSelector()
3503 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3504 mrs.__str__() ; mrs.__repr__()
3506 mrs=MEDFileMeshReadSelector(0)
3507 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())
3508 mrs=MEDFileMeshReadSelector(1)
3509 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3510 mrs=MEDFileMeshReadSelector(2)
3511 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3512 mrs=MEDFileMeshReadSelector(3)
3513 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3514 mrs=MEDFileMeshReadSelector(4)
3515 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3516 mrs=MEDFileMeshReadSelector(5)
3517 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3518 mrs=MEDFileMeshReadSelector(6)
3519 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3520 mrs=MEDFileMeshReadSelector(7)
3521 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3522 mrs=MEDFileMeshReadSelector(8)
3523 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3524 mrs=MEDFileMeshReadSelector(9)
3525 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3526 mrs=MEDFileMeshReadSelector(10)
3527 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3528 mrs=MEDFileMeshReadSelector(11)
3529 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3530 mrs=MEDFileMeshReadSelector(12)
3531 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3532 mrs=MEDFileMeshReadSelector(13)
3533 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3534 mrs=MEDFileMeshReadSelector(14)
3535 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3536 mrs=MEDFileMeshReadSelector(15)
3537 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3538 mrs=MEDFileMeshReadSelector(16)
3539 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3540 mrs=MEDFileMeshReadSelector(17)
3541 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3542 mrs=MEDFileMeshReadSelector(18)
3543 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3544 mrs=MEDFileMeshReadSelector(19)
3545 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3546 mrs=MEDFileMeshReadSelector(20)
3547 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3548 mrs=MEDFileMeshReadSelector(21)
3549 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3550 mrs=MEDFileMeshReadSelector(22)
3551 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3552 mrs=MEDFileMeshReadSelector(23)
3553 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3554 mrs=MEDFileMeshReadSelector(24)
3555 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3556 mrs=MEDFileMeshReadSelector(25)
3557 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3558 mrs=MEDFileMeshReadSelector(26)
3559 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3560 mrs=MEDFileMeshReadSelector(27)
3561 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3562 mrs=MEDFileMeshReadSelector(28)
3563 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3564 mrs=MEDFileMeshReadSelector(29)
3565 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3566 mrs=MEDFileMeshReadSelector(30)
3567 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3568 mrs=MEDFileMeshReadSelector(31)
3569 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3570 mrs=MEDFileMeshReadSelector(32)
3571 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3572 mrs=MEDFileMeshReadSelector(33)
3573 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3574 mrs=MEDFileMeshReadSelector(34)
3575 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3576 mrs=MEDFileMeshReadSelector(35)
3577 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3578 mrs=MEDFileMeshReadSelector(36)
3579 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3580 mrs=MEDFileMeshReadSelector(37)
3581 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3582 mrs=MEDFileMeshReadSelector(38)
3583 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3584 mrs=MEDFileMeshReadSelector(39)
3585 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3586 mrs=MEDFileMeshReadSelector(40)
3587 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3588 mrs=MEDFileMeshReadSelector(41)
3589 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3590 mrs=MEDFileMeshReadSelector(42)
3591 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3592 mrs=MEDFileMeshReadSelector(43)
3593 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3594 mrs=MEDFileMeshReadSelector(44)
3595 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3596 mrs=MEDFileMeshReadSelector(45)
3597 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3598 mrs=MEDFileMeshReadSelector(46)
3599 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3600 mrs=MEDFileMeshReadSelector(47)
3601 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3602 mrs=MEDFileMeshReadSelector(48)
3603 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3604 mrs=MEDFileMeshReadSelector(49)
3605 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3606 mrs=MEDFileMeshReadSelector(50)
3607 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3608 mrs=MEDFileMeshReadSelector(51)
3609 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3610 mrs=MEDFileMeshReadSelector(52)
3611 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3612 mrs=MEDFileMeshReadSelector(53)
3613 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3614 mrs=MEDFileMeshReadSelector(54)
3615 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3616 mrs=MEDFileMeshReadSelector(55)
3617 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3618 mrs=MEDFileMeshReadSelector(56)
3619 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3620 mrs=MEDFileMeshReadSelector(57)
3621 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3622 mrs=MEDFileMeshReadSelector(58)
3623 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3624 mrs=MEDFileMeshReadSelector(59)
3625 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3626 mrs=MEDFileMeshReadSelector(60)
3627 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3628 mrs=MEDFileMeshReadSelector(61)
3629 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3630 mrs=MEDFileMeshReadSelector(62)
3631 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3632 mrs=MEDFileMeshReadSelector(63)
3633 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3635 mrs=MEDFileMeshReadSelector(63)
3636 mrs.setCellFamilyFieldReading(False)
3637 self.assertEqual(mrs.getCode(),62)
3638 mrs.setCellFamilyFieldReading(True)
3639 self.assertEqual(mrs.getCode(),63)
3640 mrs.setNodeFamilyFieldReading(False)
3641 self.assertEqual(mrs.getCode(),61)
3642 mrs.setNodeFamilyFieldReading(True)
3643 self.assertEqual(mrs.getCode(),63)
3644 mrs.setCellNameFieldReading(False)
3645 self.assertEqual(mrs.getCode(),59)
3646 mrs.setCellNameFieldReading(True)
3647 self.assertEqual(mrs.getCode(),63)
3648 mrs.setNodeNameFieldReading(False)
3649 self.assertEqual(mrs.getCode(),55)
3650 mrs.setNodeNameFieldReading(True)
3651 self.assertEqual(mrs.getCode(),63)
3652 mrs.setCellNumFieldReading(False)
3653 self.assertEqual(mrs.getCode(),47)
3654 mrs.setCellNumFieldReading(True)
3655 self.assertEqual(mrs.getCode(),63)
3656 mrs.setNodeNumFieldReading(False)
3657 self.assertEqual(mrs.getCode(),31)
3658 mrs.setNodeNumFieldReading(True)
3659 self.assertEqual(mrs.getCode(),63)
3663 def testPartialReadOfMeshes(self):
3664 fname="Pyfile70.med"
3665 # building a mesh containing 4 tri3 + 5 quad4
3666 tri=MEDCouplingUMesh("tri",2)
3667 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3668 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3669 tris = [tri.deepCopy() for i in range(4)]
3670 for i,elt in enumerate(tris): elt.translate([i,0])
3671 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3672 quad=MEDCouplingUMesh("quad",2)
3673 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3674 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3675 quads = [quad.deepCopy() for i in range(5)]
3676 for i,elt in enumerate(quads): elt.translate([5+i,0])
3677 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3678 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3679 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3680 m1=m.buildDescendingConnectivity()[0]
3681 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3683 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3684 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3685 mm.setGroupsAtLevel(0,[grp0,grp1])
3686 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3687 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3688 mm.setGroupsAtLevel(-1,[grp2,grp3])
3689 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3690 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3691 mm.setGroupsAtLevel(1,[grp4,grp5])
3692 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3693 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3694 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3698 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3699 b4_ref_heap_mem=mm.getHeapMemorySize()
3700 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3701 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3702 ref_heap_mem=mm.getHeapMemorySize()
3703 # check the gain of memory using 1GTUMesh instead of UMesh
3704 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
3706 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3707 self.assertEqual(len(mm.getGroupsNames()),0)
3708 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3709 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3710 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3711 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3712 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3713 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3714 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3715 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3716 delta1=ref_heap_mem-mm.getHeapMemorySize()
3717 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3719 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3720 self.assertEqual(len(mm.getGroupsNames()),6)
3721 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3722 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3723 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3724 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3725 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3726 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3727 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3728 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3729 delta2=ref_heap_mem-mm.getHeapMemorySize()
3730 self.assertTrue(delta2<delta1)
3731 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3733 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3734 self.assertEqual(len(mm.getGroupsNames()),6)
3735 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3736 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3737 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3738 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3739 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3740 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3741 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3742 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3743 delta3=ref_heap_mem-mm.getHeapMemorySize()
3744 self.assertTrue(delta3<delta2)
3745 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3747 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3748 self.assertEqual(len(mm.getGroupsNames()),6)
3749 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3750 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3751 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3752 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3753 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3754 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3755 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3756 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3757 delta4=ref_heap_mem-mm.getHeapMemorySize()
3758 self.assertTrue(delta4<delta3)
3759 self.assertTrue(delta4>=MEDCouplingSizeOfIDs()/2*4*2)
3761 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3762 self.assertEqual(len(mm.getGroupsNames()),6)
3763 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3764 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3765 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3766 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3767 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3768 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3769 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3770 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3771 delta5=ref_heap_mem-mm.getHeapMemorySize()
3772 self.assertTrue(delta5<delta4)
3773 self.assertEqual(delta5,0)
3776 # this test checks that setFieldProfile perform a check of the array length
3777 # compared to the profile length. This test also checks that mesh attribute of field
3778 # is not used by setFieldProfile (because across this test mesh is equal to None)
3780 def testCheckCompatibilityPfl1(self):
3781 # building a mesh containing 4 tri3 + 5 quad4
3782 tri=MEDCouplingUMesh("tri",2)
3783 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3784 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3785 tris = [tri.deepCopy() for i in range(4)]
3786 for i,elt in enumerate(tris): elt.translate([i,0])
3787 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3788 quad=MEDCouplingUMesh("quad",2)
3789 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3790 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3791 quads = [quad.deepCopy() for i in range(5)]
3792 for i,elt in enumerate(quads): elt.translate([5+i,0])
3793 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3794 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3795 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3796 m1=m.buildDescendingConnectivity()[0]
3797 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3799 f1ts=MEDFileField1TS()
3800 f=MEDCouplingFieldDouble(ON_NODES)
3801 vals=DataArrayDouble(7) ; vals.iota(1000)
3803 f.setName("anonymous") # f has no mesh it is not a bug
3804 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3805 f1ts.setFieldProfile(f,mm,0,pfl)
3807 f1ts=MEDFileField1TS()
3808 f=MEDCouplingFieldDouble(ON_NODES)
3809 vals=DataArrayDouble(8) ; vals.iota(1000)
3811 f.setName("anonymous") # f has no mesh it is not a bug
3812 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3813 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3815 f1ts=MEDFileField1TS()
3816 f=MEDCouplingFieldDouble(ON_CELLS)
3817 vals=DataArrayDouble(7) ; vals.iota(1000)
3819 f.setName("anonymous") # f has no mesh it is not a bug
3820 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3821 f1ts.setFieldProfile(f,mm,0,pfl)
3822 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3824 f1ts=MEDFileField1TS()
3825 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3826 vals=DataArrayDouble(27) ; vals.iota(1000)
3828 f.setName("anonymous") # f has no mesh it is not a bug
3829 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3831 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])
3832 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3833 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])
3835 f1ts.setFieldProfile(f,mm,0,pfl)
3836 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3837 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3838 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3839 vals=DataArrayDouble(27) ; vals.iota(1000)
3840 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3842 f1ts=MEDFileField1TS()
3843 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3844 vals=DataArrayDouble(25) ; vals.iota(1000)
3846 f.setName("anonymous") # f has no mesh it is not a bug
3847 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3848 f1ts.setFieldProfile(f,mm,0,pfl)
3849 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3850 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3852 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3853 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3855 f1ts=MEDFileField1TS()
3856 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3857 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3859 f1ts.setFieldProfile(f,mm,0,pfl)
3863 def testWRMeshWithNoCells(self):
3864 fname="Pyfile71.med"
3865 a=DataArrayDouble(4) ; a.iota()
3866 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3867 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3869 m.setMeshAtLevel(0,m00)
3870 m.setRenumFieldArr(1,DataArrayInt(list(range(10,26))))
3871 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3875 m=MEDFileMesh.New(fname)
3876 self.assertEqual((),m.getNonEmptyLevels())
3877 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))
3878 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(list(range(10,26)))))
3879 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3883 def testWRQPolyg1(self):
3884 fname="Pyfile72.med"
3885 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3886 m.insertNextCell([0,2,1,3])
3887 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3889 ms = [m.deepCopy() for i in range(4)]
3890 for i,elt in enumerate(ms):
3891 elt.translate([float(i)*1.5,0.])
3893 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3894 m0.convertAllToPoly()
3896 ms = [m.deepCopy() for i in range(5)]
3897 for i,elt in enumerate(ms):
3898 elt.translate([float(i)*1.5,1.5])
3900 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3901 m1.convertAllToPoly()
3902 m1.convertLinearCellsToQuadratic()
3904 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3907 mm.setMeshAtLevel(0,m)
3908 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3909 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3910 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3911 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3916 mm_read=MEDFileUMesh(fname)
3917 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3918 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3919 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3920 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3922 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3924 arr0=DataArrayDouble(9) ; arr0.iota()
3925 arr1=DataArrayDouble(9) ; arr1.iota(100)
3926 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3927 f.setArray(arr) ; f.checkConsistencyLight()
3929 ff=MEDFileField1TS()
3930 ff.setFieldNoProfileSBT(f)
3933 ff_read=MEDFileField1TS(fname)
3934 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3935 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3939 def testLoadIfNecessaryOnFromScratchFields0(self):
3941 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3943 fname="Pyfile77.med"
3944 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3945 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3947 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3948 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3949 m.finishInsertingCells()
3951 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3952 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3956 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3957 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3959 f0.setName("myELNOField")
3960 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3961 f0.setArray(arrs[0])
3962 ff0.appendFieldNoProfileSBT(f0)
3965 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3966 f0.setArray(arrs[1])
3967 ff0.appendFieldNoProfileSBT(f0)
3970 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3971 f0.setArray(arrs[2])
3972 ff0.appendFieldNoProfileSBT(f0)
3975 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3976 f0.setArray(arrs[3])
3977 ff0.appendFieldNoProfileSBT(f0)
3979 for i,arr in enumerate(arrs):
3980 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3981 fs[0][i].loadArraysIfNecessary()
3982 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3984 fs.loadArraysIfNecessary()
3985 for i,arr in enumerate(arrs):
3986 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3988 fs[0].loadArraysIfNecessary()
3989 for i,arr in enumerate(arrs):
3990 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3995 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3996 """ 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.
3998 fname="Pyfile78.med"
3999 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)
4000 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
4001 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
4003 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
4004 m0.insertNextCell(NORM_TETRA4,elt)
4006 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
4007 m0.insertNextCell(NORM_PYRA5,elt)
4009 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
4010 m0.insertNextCell(NORM_PENTA6,elt)
4012 m0.checkConsistency()
4013 m1=MEDCouplingUMesh(); m1.setName("mesh")
4014 m1.setMeshDimension(2);
4015 m1.allocateCells(5);
4016 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
4017 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
4018 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
4019 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
4020 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
4021 m1.setCoords(coords);
4022 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
4024 m3.insertNextCell(NORM_POINT1,[2])
4025 m3.insertNextCell(NORM_POINT1,[3])
4026 m3.insertNextCell(NORM_POINT1,[4])
4027 m3.insertNextCell(NORM_POINT1,[5])
4030 mm.setMeshAtLevel(0,m0)
4031 mm.setMeshAtLevel(-1,m1)
4032 mm.setMeshAtLevel(-3,m3)
4034 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
4035 mm=MEDFileMesh.New(fname)
4037 fmts=MEDFileFieldMultiTS()
4038 f1ts=MEDFileField1TS()
4039 for lev in mm.getNonEmptyLevels():
4040 for gt in mm.getGeoTypesAtLevel(lev):
4041 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
4042 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
4043 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
4044 f.setArray(arr) ; f.setName("f0")
4045 f1ts.setFieldNoProfileSBT(f)
4048 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
4049 for lev in [0,-1,-3]:
4050 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
4052 fmts.pushBackTimeStep(f1ts)
4056 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
4057 fs=MEDFileFields(fname)
4058 self.assertEqual(len(fs),1)
4059 self.assertEqual(len(fs[0]),1)
4061 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),'','')])])
4062 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))
4066 def testMEDFileUMeshSetName(self):
4067 """ This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the conversion is performed in memory and a preparation is done then.
4068 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
4070 fname="Pyfile79.med"
4071 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
4073 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
4074 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)
4075 m0.allocateCells(5);
4076 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
4077 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
4078 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
4079 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
4080 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
4081 m0.setCoords(coords);
4082 mm.setMeshAtLevel(0,m0)
4083 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
4085 m2.insertNextCell(NORM_POINT1,[2])
4086 m2.insertNextCell(NORM_POINT1,[3])
4087 m2.insertNextCell(NORM_POINT1,[4])
4088 m2.insertNextCell(NORM_POINT1,[5])
4089 mm.setMeshAtLevel(-2,m2)
4090 self.assertEqual(mm.getName(),"")
4091 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
4092 mm.forceComputationOfParts()
4093 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
4095 self.assertEqual(mm.getName(),"abc")
4096 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
4097 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
4098 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
4099 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
4103 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
4104 fileName="Pyfile80.med"
4105 m=MEDCouplingCMesh() ; m.setName("cmesh")
4106 arr=DataArrayDouble(6) ; arr.iota()
4107 m.setCoords(arr,arr)
4108 nbCells=m.getNumberOfCells()
4109 self.assertEqual(25,nbCells)
4110 f=MEDCouplingFieldDouble(ON_CELLS)
4111 f.setName("FieldOnCell") ; f.setMesh(m)
4112 arr=DataArrayDouble(nbCells) ; arr.iota()
4116 fmts=MEDFileFieldMultiTS()
4118 for i in range(nbCells):
4119 t=(float(i)+0.1,i+1,-i-2)
4121 arr2=DataArrayDouble(nbCells)
4122 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
4125 f1ts=MEDFileField1TS()
4126 f1ts.setFieldNoProfileSBT(f)
4127 fmts.pushBackTimeStep(f1ts)
4129 fmts.unloadArraysWithoutDataLoss()
4130 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))
4131 fs=MEDFileFields() ; fs.pushField(fmts)
4132 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))
4133 fs.unloadArraysWithoutDataLoss()
4134 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))
4136 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))
4137 f1ts.unloadArraysWithoutDataLoss()
4138 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))
4139 mm.write(fileName,2)
4140 fs.write(fileName,0)
4141 del m,fmts,mm,f,f1ts
4143 mm=MEDFileMesh.New(fileName)
4144 fmts=MEDFileFieldMultiTS(fileName)
4145 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))
4146 fmts.unloadArraysWithoutDataLoss()
4147 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
4148 fmts.loadArraysIfNecessary()
4149 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))
4151 fs=MEDFileFields(fileName)
4152 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))
4153 fs.unloadArraysWithoutDataLoss()
4154 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
4155 fs.loadArraysIfNecessary()
4156 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))
4158 f1ts=MEDFileField1TS(fileName)
4159 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))
4160 f1ts.unloadArraysWithoutDataLoss()
4161 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
4162 f1ts.loadArraysIfNecessary()
4163 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))
4167 def testMEDFileUMeshLoadPart1(self):
4168 """ This method tests MEDFileUMesh.LoadPart that loads only a part of a specified mesh in a MED file. The part is specified using a slice of cell ids. Only nodes on which cells lies are loaded to reduce at most the amount of
4169 memory of the returned instance.
4171 fileName="Pyfile81.med"
4172 arr=DataArrayDouble(6) ; arr.iota()
4173 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4174 m=m.buildUnstructured()
4176 m.changeSpaceDimension(3,0.)
4177 infos=["aa [b]","cc [de]","gg [klm]"]
4178 m.getCoords().setInfoOnComponents(infos)
4179 m.checkConsistency()
4181 mm.setMeshAtLevel(0,m)
4182 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
4183 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
4184 mm.setMeshAtLevel(-1,m1)
4185 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])
4186 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])
4187 namesCellL0=DataArrayAsciiChar(25,16)
4188 namesCellL0[:] = ["Cell#%.3d " % (i) for i in range(25)]
4189 renumM1=DataArrayInt([3,4,0,2,1])
4190 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
4191 mm.setRenumFieldArr(0,renum0)
4192 mm.setFamilyFieldArr(0,famField0)
4193 mm.setNameFieldAtLevel(0,namesCellL0)
4194 mm.setRenumFieldArr(-1,renumM1)
4195 mm.setFamilyFieldArr(-1,famFieldM1)
4196 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])
4197 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])
4198 namesNodes=DataArrayAsciiChar(36,16)
4199 namesNodes[:] = ["Node#%.3d " % (i) for i in range(36)]
4200 mm.setRenumFieldArr(1,renum1)
4201 mm.setFamilyFieldArr(1,famField1)
4202 mm.setNameFieldAtLevel(1,namesNodes)
4203 mm.setFamilyId("Fam7",77)
4204 mm.setFamilyId("Fam8",88)
4205 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
4206 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
4207 mm.write(fileName,2)
4209 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
4210 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
4211 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])))
4212 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)
4213 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
4214 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
4215 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
4216 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
4217 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
4218 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
4219 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
4221 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
4222 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
4223 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])))
4224 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)
4225 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
4226 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
4227 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
4228 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
4229 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
4230 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
4231 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
4233 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
4234 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
4235 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
4236 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
4237 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
4238 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
4239 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
4240 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
4241 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])))
4242 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
4243 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)
4244 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
4245 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
4246 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
4247 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
4251 def testMEDFileFieldsLoadPart1(self):
4252 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
4254 fileName="Pyfile82.med"
4256 compos=["aa [kg]","bbb [m/s]"]
4257 arr=DataArrayDouble(6) ; arr.iota()
4258 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4259 m=m.buildUnstructured()
4261 m.changeSpaceDimension(3,0.)
4262 infos=["aa [b]","cc [de]","gg [klm]"]
4263 m.getCoords().setInfoOnComponents(infos)
4264 m.checkConsistency()
4265 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
4267 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
4268 arr[:,0]=list(range(25))
4269 arr[:,1]=list(range(100,125))
4271 WriteField(fileName,f,True)
4272 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
4273 f.setName("FieldNode")
4274 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
4275 arr[:,0]=list(range(200,236))
4276 arr[:,1]=list(range(300,336))
4278 f.checkConsistencyLight()
4279 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
4282 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
4284 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4285 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
4288 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
4290 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4292 fs[0][0].loadArrays()
4293 arr = DataArrayDouble(12, 2) ; arr[:, 0] = list(range(3, 15)) ; arr[:, 1] = list(range(103, 115))
4294 arr.setInfoOnComponents(compos)
4295 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4296 fs[1][0].loadArrays()
4297 arr = DataArrayDouble(21, 2) ; arr[:, 0] = list(range(203, 224)) ; arr[:, 1] = list(range(303, 324))
4298 arr.setInfoOnComponents(compos)
4299 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4303 def testMEDFileWithoutCells1(self):
4304 fileName="Pyfile83.med"
4305 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4306 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
4310 mm.write(fileName,2)
4312 mm=MEDFileMesh.New(fileName)
4313 self.assertEqual(mm.getName(),"mesh")
4314 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
4318 def testZipCoordsWithLoadPart1(self):
4319 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
4321 fileName="Pyfile84.med"
4323 compos=["aa [kg]","bbb [m/s]"]
4324 arr=DataArrayDouble(6) ; arr.iota()
4325 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4326 m=m.buildUnstructured()
4328 m.changeSpaceDimension(3,0.)
4329 infos=["aa [b]","cc [de]","gg [klm]"]
4330 m.getCoords().setInfoOnComponents(infos)
4331 m.checkConsistency()
4332 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
4334 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
4335 arr[:,0]=list(range(25))
4336 arr[:,1]=list(range(100,125))
4338 WriteField(fileName,f,True)
4339 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
4340 f.setName("FieldNode")
4341 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
4342 arr[:,0]=list(range(200,236))
4343 arr[:,1]=list(range(300,336))
4345 f.checkConsistencyLight()
4346 WriteFieldUsingAlreadyWrittenMesh(fileName,f)
4349 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
4351 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4352 self.assertEqual(spd.getSlice(),slice(4,6,1))
4353 spd=mm.getPartDefAtLevel(1)
4354 self.assertEqual(spd.getSlice(),slice(4,14,1))
4355 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4356 mm.zipCoords() # <- The important line is here !
4357 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4358 self.assertEqual(spd.getSlice(),slice(4,6,1))
4359 spd=mm.getPartDefAtLevel(1)
4360 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4361 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
4362 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4363 fs[0][0].loadArrays()
4364 arr=DataArrayDouble([(4,104),(5,105)])
4365 arr.setInfoOnComponents(compos)
4366 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4367 fs[1][0].loadArrays()
4368 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
4369 arr.setInfoOnComponents(compos)
4370 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4371 m_ref = mm[0].deepCopy()
4372 # now read it in 2 load sessions to avoid memory peak. zipCoords is no more requested here.
4374 mrs = MEDFileMeshReadSelector()
4375 mrs.setNumberOfCoordsLoadSessions(2)
4376 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1],-1,-1,mrs)
4378 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
4379 self.assertEqual(spd.getSlice(),slice(4,6,1))
4380 spd=mm.getPartDefAtLevel(1)
4381 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
4382 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
4383 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
4384 fs[0][0].loadArrays()
4385 arr=DataArrayDouble([(4,104),(5,105)])
4386 arr.setInfoOnComponents(compos)
4387 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
4388 fs[1][0].loadArrays()
4389 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
4390 arr.setInfoOnComponents(compos)
4391 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
4392 self.assertTrue( mm[0].deepCopy().isEqual(m_ref,1e-12) )
4396 def testMEDFileCMeshSetGroupsAtLevel(self):
4397 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
4399 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
4401 mm=MEDFileCMesh() ; mm.setMesh(m)
4402 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
4403 mm.setGroupsAtLevel(0,[grp])
4404 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
4408 def testMEDFileUMeshBuildExtrudedMesh1(self):
4409 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
4410 fileName="Pyfile85.med"
4413 meshName3DOut="Mesh3D"
4415 d1=DataArrayInt([0,4,20,24])
4416 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
4418 a=DataArrayDouble(6) ; a.iota()
4419 m=MEDCouplingCMesh() ; m.setCoords(a,a)
4420 m=m.buildUnstructured()
4421 d1c=d1.buildComplement(m.getNumberOfCells())
4422 m=m[d1c] ; m.zipCoords()
4423 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
4425 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
4426 m.setName(meshName2D)
4427 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
4428 e=d.deltaShiftIndex().findIdsEqual(1)
4431 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
4432 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
4433 mm.setGroupsAtLevel(0,[grp0])
4434 grp1=e ; grp1.setName("grp1")
4435 mm.setGroupsAtLevel(-1,[grp1])
4436 mm.write(fileName,2)
4438 a=DataArrayDouble(3) ; a.iota()
4439 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
4440 tmp.setName(meshName1D)
4441 tmp.changeSpaceDimension(3)
4442 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
4444 mm1D.setMeshAtLevel(0,tmp)
4445 mm1D.write(fileName,0)
4447 mm2D=MEDFileMesh.New(fileName,meshName2D)
4448 mm1D=MEDFileMesh.New(fileName,meshName1D)
4449 m1D=mm1D.getMeshAtLevel(0)
4450 mm3D=mm2D.buildExtrudedMesh(m1D,0)
4452 self.assertEqual(mm3D.getName(),mm2D.getName())
4453 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
4454 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
4455 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
4456 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
4457 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
4458 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
4459 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
4460 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
4461 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
4462 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.)])
4463 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
4464 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])
4465 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
4466 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])
4467 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
4468 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])
4469 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
4470 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])
4471 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
4472 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])
4473 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
4474 d=DataArrayInt(129) ; d.iota() ; d*=3
4475 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
4477 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
4478 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
4479 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
4480 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
4481 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])))
4482 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])))
4483 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])))
4484 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])))
4485 mm3D.setName("MeshExtruded")
4486 mm3D.write(fileName,0)
4489 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
4491 def testMEDFileUMeshPickeling1(self):
4492 outFileName="Pyfile86.med"
4493 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)
4494 c.setInfoOnComponents(["aa","bbb"])
4495 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
4496 m=MEDCouplingUMesh();
4497 m.setMeshDimension(2);
4499 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
4500 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
4501 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
4502 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
4503 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
4504 m.finishInsertingCells();
4506 m.checkConsistencyLight()
4507 m1=MEDCouplingUMesh.New();
4508 m1.setMeshDimension(1);
4509 m1.allocateCells(3);
4510 m1.insertNextCell(NORM_SEG2,2,[1,4])
4511 m1.insertNextCell(NORM_SEG2,2,[3,6])
4512 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
4513 m1.finishInsertingCells();
4515 m1.checkConsistencyLight()
4516 m2=MEDCouplingUMesh.New();
4517 m2.setMeshDimension(0);
4518 m2.allocateCells(4);
4519 m2.insertNextCell(NORM_POINT1,1,[1])
4520 m2.insertNextCell(NORM_POINT1,1,[3])
4521 m2.insertNextCell(NORM_POINT1,1,[2])
4522 m2.insertNextCell(NORM_POINT1,1,[6])
4523 m2.finishInsertingCells();
4525 m2.checkConsistencyLight()
4527 mm=MEDFileUMesh.New()
4528 self.assertTrue(mm.getUnivNameWrStatus())
4529 mm.setName("MyFirstMEDCouplingMEDmesh")
4530 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
4534 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
4536 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
4537 # playing with groups
4538 g1_2=DataArrayInt.New()
4539 g1_2.setValues([1,3],2,1)
4541 g2_2=DataArrayInt.New()
4542 g2_2.setValues([1,2,3],3,1)
4544 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4545 g1_1=DataArrayInt.New()
4546 g1_1.setValues([0,1,2],3,1)
4548 g2_1=DataArrayInt.New()
4549 g2_1.setValues([0,2],2,1)
4551 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4552 g1_N=DataArrayInt.New()
4553 g1_N.setValues(list(range(8)),8,1)
4555 g2_N=DataArrayInt.New()
4556 g2_N.setValues(list(range(9)),9,1)
4558 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4559 mm.createGroupOnAll(0,"GrpOnAllCell")
4560 # check content of mm
4561 t=mm.getGroupArr(0,"G1",False)
4562 self.assertTrue(g1_2.isEqual(t));
4563 t=mm.getGroupArr(0,"G2",False)
4564 self.assertTrue(g2_2.isEqual(t));
4565 t=mm.getGroupArr(-1,"G1",False)
4566 self.assertTrue(g1_1.isEqual(t));
4567 t=mm.getGroupArr(-1,"G2",False)
4568 self.assertTrue(g2_1.isEqual(t));
4569 t=mm.getGroupArr(1,"G1",False)
4570 self.assertTrue(g1_N.isEqual(t));
4571 t=mm.getGroupArr(1,"G2",False)
4572 self.assertTrue(g2_N.isEqual(t));
4573 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4574 t=mm.getGroupArr(0,"GrpOnAllCell")
4576 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
4577 mm2=pickle.loads(st)
4578 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4579 self.assertEqual(mm.getAxisType(),AX_CART)
4581 mm.setAxisType(AX_CYL)
4582 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
4583 mm2=pickle.loads(st)
4584 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4585 self.assertEqual(mm2.getAxisType(),AX_CYL)
4589 def testMEDFileFieldsLoadSpecificEntities1(self):
4592 fileName="Pyfile87.med"
4596 m=MEDCouplingCMesh()
4597 arr=DataArrayDouble(nbNodes) ; arr.iota()
4599 m=m.buildUnstructured()
4602 fmts=MEDFileFieldMultiTS()
4603 for i in range(nbPdt):
4604 f=MEDCouplingFieldDouble(ON_NODES)
4606 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4608 f.setName(fieldName)
4609 f.setTime(float(i),i,0)
4610 fmts.appendFieldNoProfileSBT(f)
4613 mm=MEDFileUMesh() ; mm[0]=m
4614 fmts.write(fileName,2)
4615 mm.write(fileName,0)
4617 fs=MEDFileFields(fileName,False)
4618 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_NODES,NORM_ERROR)],False)
4619 fs.loadArraysIfNecessary()
4620 fs2.loadArraysIfNecessary()
4621 for i in range(nbPdt):
4622 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4624 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1])) ; m1=m1.buildUnstructured() ; m1.simplexize(0)
4625 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([3,4,5]),DataArrayDouble([0,1])) ; m2=m2.buildUnstructured()
4626 m3=MEDCouplingUMesh.MergeUMeshes(m1,m2) ; m3.setName(meshName)
4627 fmts=MEDFileFieldMultiTS()
4628 for i in range(nbPdt):
4629 f=MEDCouplingFieldDouble(ON_CELLS)
4631 arr=DataArrayDouble(8) ; arr.iota() ; arr*=i
4633 f.setName(fieldName)
4634 f.setTime(float(i),i,0)
4635 fmts.appendFieldNoProfileSBT(f)
4637 mm=MEDFileUMesh() ; mm[0]=m3
4639 self.assertEqual(mm.getNonEmptyLevels(),())
4641 self.assertEqual(mm.getNonEmptyLevels(),(0,))
4642 fmts.write(fileName,2)
4643 fs=MEDFileFields(fileName,False)
4644 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3)],False)
4645 fs3=MEDFileFieldMultiTS.LoadSpecificEntities(fileName,fieldName,[(ON_CELLS,NORM_QUAD4)],False)
4646 fs4=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3),(ON_CELLS,NORM_QUAD4)],False)
4647 fs.loadArraysIfNecessary()
4648 fs2.loadArraysIfNecessary()
4649 fs3.loadArraysIfNecessary()
4650 fs4.loadArraysIfNecessary()
4651 for i in range(nbPdt):
4652 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[:6].isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4653 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[6:8].isEqual(fs3[i].getUndergroundDataArray(),1e-12))
4654 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs4[fieldName][i].getUndergroundDataArray(),1e-12))
4659 def testMEDFileLotsOfTSRW1(self):
4662 fileName="Pyfile88.med"
4663 nbPdt=300 # <- perftest = 30000
4666 maxPdt=100 # <- optimum = 500
4667 m=MEDCouplingCMesh()
4668 arr=DataArrayDouble(nbNodes) ; arr.iota()
4670 m=m.buildUnstructured()
4673 nbOfField=nbPdt//maxPdt
4675 for j in range(nbOfField):
4676 fmts=MEDFileFieldMultiTS()
4677 s=DataArray.GetSlice(slice(0,nbPdt,1),j,nbOfField)
4678 for i in range(s.start, s.stop, s.step):
4679 f=MEDCouplingFieldDouble(ON_NODES)
4681 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4683 f.setName("%s_%d"%(fieldName,j))
4684 f.setTime(float(i),i,0)
4685 fmts.appendFieldNoProfileSBT(f)
4690 mm=MEDFileUMesh() ; mm[0]=m
4691 fs.write(fileName,2)
4692 mm.write(fileName,0)
4694 def appendInDict(d,key,val):
4701 allFields=GetAllFieldNames(fileName)
4703 pat=re.compile("([\d]+)([\s\S]+)$")
4704 for st in allFields:
4708 appendInDict(allFieldsDict,m.group(2)[::-1],m.group(1)[::-1])
4711 appendInDict(allFieldsDict,st,'')
4715 for k in allFieldsDict:
4716 if allFieldsDict[k]!=['']:
4717 allFieldsDict[k]=sorted(allFieldsDict[k],key=lambda x: int(x))
4720 for it in allFieldsDict[k]:
4721 fmts2.append(MEDFileFieldMultiTS.LoadSpecificEntities(fileName,k+it,[(ON_NODES,NORM_ERROR)]))
4726 for ii in range(nbIter):
4727 zeResu.pushBackTimeSteps(fmts2.pop())
4730 fs2.pushField(zeResu)
4732 self.assertEqual(fs2[0].getTimeSteps(), [(i, 0, float(i)) for i in range(nbPdt)])
4736 def testMEDFileMeshRearrangeFamIds1(self):
4737 """ Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies."""
4738 fileName="Pyfile89.med"
4739 meshName='Maillage_2'
4741 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)])
4743 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])
4744 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])
4745 m0=MEDCouplingUMesh(meshName,3) ; m0.setCoords(coords)
4746 m0.setConnectivity(c0,c0i)
4749 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])
4750 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])
4751 m1=MEDCouplingUMesh(meshName,2) ; m1.setCoords(coords)
4752 m1.setConnectivity(c1,c1i)
4755 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])
4756 m2=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
4757 m2.setNodalConnectivity(c2) ; m2.setCoords(coords)
4758 mm[-2]=m2.buildUnstructured()
4760 ref0=DataArrayInt(55) ; ref0[:]=0
4761 mm.setFamilyFieldArr(0,ref0)
4762 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]))
4763 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])
4764 mm.setFamilyFieldArr(-1,ref1)
4765 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])
4766 mm.setFamilyFieldArr(-2,ref2)
4768 for f,fid in (('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2)):
4769 mm.setFamilyId(f,fid)
4770 for grp,fams in [('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',))]:
4771 mm.setFamiliesOnGroup(grp,fams)
4772 mm.write(fileName,2)
4774 mm=MEDFileMesh.New(fileName)
4775 grp=mm.getGroup(-1,"Groupe_1")
4776 dai=grp.computeFetchedNodeIds()
4779 mm.rearrangeFamilies() # <- the aim of the test
4780 self.assertTrue(dai.isEqual(mm.getGroupArr(1,"TOTO")))
4781 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(ref0))
4782 self.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(ref1))
4783 self.assertTrue(mm.getFamilyFieldAtLevel(-2).isEqual(ref2))
4784 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])))
4785 allGrps=[('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',)),('TOTO',('Family_9',))]
4786 allFams=[('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2),('Family_9',9)]
4787 self.assertEqual(list(mm.getGroupsNames()),[elt[0] for elt in allGrps])
4788 for elt,fams in allGrps:
4789 self.assertEqual(mm.getFamiliesOnGroup(elt),fams)
4790 self.assertEqual(list(mm.getFamiliesNames()),[elt[0] for elt in allFams])
4791 for elt,eltId in allFams:
4792 self.assertEqual(mm.getFamilyId(elt),eltId)
4796 def testNonRegrCMeshSetFieldPfl1(self):
4797 """ Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile."""
4798 ff=MEDFileField1TS()
4801 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4805 field=MEDCouplingFieldDouble(ON_CELLS)
4807 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4808 field.setName("Field")
4809 field.checkConsistencyLight()
4810 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU") #<- false profile because defined on all cells !
4811 ff.setFieldProfile(field,mm,0,pfl) # <- bug was revealed here !
4812 self.assertEqual(ff.getPfls(),())
4813 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4814 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4815 del ff,mm,field,field2,pfl
4816 # same with unstructured mesh
4817 ff=MEDFileField1TS()
4820 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4823 m=m.buildUnstructured()
4825 field=MEDCouplingFieldDouble(ON_CELLS)
4827 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4828 field.setName("Field")
4829 field.checkConsistencyLight()
4830 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU")
4831 ff.setFieldProfile(field,mm,0,pfl)
4832 self.assertEqual(ff.getPfls(),())
4833 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4834 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4838 def testMEDFileUMeshLinearToQuadraticAndRev1(self):
4840 fileName="Pyfile90.med"
4841 fileName2="Pyfile91.med"
4842 arr=DataArrayDouble(5) ; arr.iota()
4843 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4844 m=m.buildUnstructured()
4845 d=DataArrayInt([3,7,11,15])
4848 m2=m[d.buildComplement(m.getNumberOfCells())]
4849 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
4850 m.changeSpaceDimension(3,0.)
4851 arr=DataArrayDouble(3) ; arr.iota()
4852 m1D=MEDCouplingCMesh() ; m1D.setCoords(arr) ; m1D=m1D.buildUnstructured() ; m1D.changeSpaceDimension(3,0.)
4853 m1D.setCoords(m1D.getCoords()[:,[1,2,0]])
4854 delta=m.getNumberOfNodes()*(m1D.getNumberOfNodes()-1)
4855 m3D=m.buildExtrudedMesh(m1D,0)
4856 m3D.sortCellsInMEDFileFrmt()
4857 m3D.setName(meshName)
4858 m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkConsistency()
4859 m1D=m2D.computeSkin() ; m1D.setName(meshName)
4860 m0D=MEDCouplingUMesh.Build0DMeshFromCoords(m3D.getCoords()) ; m0D.setName(meshName) ; m0D=m0D[[2,4,10]]
4863 mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D ; mm[-3]=m0D
4864 grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
4865 grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
4866 grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
4867 grpFaceNorth=DataArrayInt([6,7,17,18,19]) ; grpFaceNorth.setName("NorthFace")
4868 diagFace=DataArrayInt([0,1,13,15,17]) ; diagFace.setName("DiagFace")
4869 vol1=DataArrayInt([20,21,23,24]) ; vol1.setName("vol1")
4870 vol2=DataArrayInt([2,3,4,5,21,24]) ; vol2.setName("vol2")
4871 mm.setGroupsAtLevel(0,[vol1,vol2])
4872 mm.setGroupsAtLevel(-1,[grpFaceSouth,grpFaceNorth,diagFace])
4873 mm.setGroupsAtLevel(-2,[grpEdge0,grpEdge1])
4875 mmOut1=mm.linearToQuadratic(0,0.)
4876 mmOut1.write(fileName2,2)
4877 mmOut2=mmOut1.quadraticToLinear(0.)
4878 self.assertTrue(mm.isEqual(mmOut2,1e-12)[0])
4882 def testMEDFileMeshAddGroup1(self):
4883 m=MEDCouplingCMesh()
4884 arrX=DataArrayDouble(9) ; arrX.iota()
4885 arrY=DataArrayDouble(4) ; arrY.iota()
4886 m.setCoords(arrX,arrY)
4890 grp0=DataArrayInt([3,5,6,21,22]) ; grp0.setName("grp0")
4892 grp1=DataArrayInt([3,4,5,8,18,19,22]) ; grp1.setName("grp1")
4894 grp2=DataArrayInt([0,1,2,10,11]) ; grp2.setName("grp2")
4896 grp3=DataArrayInt([23]) ; grp3.setName("grp3")
4898 for grp in [grp0,grp1,grp2,grp3]:
4899 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4900 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2','grp3'))
4902 for grp in [grp0,grp1,grp2,grp3]:
4903 grpNode=grp.deepCopy() ; grpNode+=delta ; grpNode.setName("%s_node"%grp.getName())
4904 mm.addGroup(1,grpNode)
4905 self.assertEqual(mm.getGroupsNames(),('grp0','grp0_node','grp1','grp1_node','grp2','grp2_node','grp3','grp3_node'))
4906 for grp in [grp0,grp1,grp2,grp3]:
4907 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4908 for grp in [grp0,grp1,grp2,grp3]:
4909 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4910 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4911 mm.normalizeFamIdsMEDFile()
4912 for grp in [grp0,grp1,grp2,grp3]:
4913 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4914 for grp in [grp0,grp1,grp2,grp3]:
4915 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4916 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4920 def testMEDFileJoint1(self):
4921 fileName="Pyfile92.med"
4922 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4923 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4927 mm.setDescription("un maillage")
4928 mm.write(fileName,2)
4929 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4930 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4931 one_step_joint=MEDFileJointOneStep()
4932 one_step_joint.pushCorrespondence(cell_correspond)
4933 one_step_joint.pushCorrespondence(node_correspond)
4934 one_joint=MEDFileJoint()
4935 one_joint.pushStep(one_step_joint)
4936 one_joint.setLocalMeshName("maa1")
4937 one_joint.setRemoteMeshName("maa1")
4938 one_joint.setDescription("joint_description")
4939 one_joint.setJointName("joint_1")
4940 one_joint.setDomainNumber(1)
4941 self.assertEqual( one_joint.getLocalMeshName(), "maa1")
4942 self.assertEqual( one_joint.getRemoteMeshName(), "maa1")
4943 self.assertEqual( one_joint.getDescription(), "joint_description")
4944 self.assertEqual( one_joint.getJointName(), "joint_1")
4945 self.assertEqual( one_joint.getDomainNumber(), 1)
4946 joints=MEDFileJoints()
4947 joints.pushJoint(one_joint);
4948 joints.write(fileName,0)
4950 jointsR=MEDFileJoints(fileName,mm.getName())
4951 self.assertEqual( jointsR.getNumberOfJoints(), 1 )
4952 jR = jointsR.getJointAtPos(0)
4953 self.assertTrue( jR.isEqual( one_joint ))
4954 self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
4955 self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
4956 jointsR.destroyJointAtPos(0)
4960 def testMEDFileJoint2(self):
4961 fileNameWr="Pyfile93.med"
4962 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4963 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4967 mm.setDescription("un maillage")
4968 node_correspond=MEDFileJointCorrespondence(DataArrayInt([13,14,15,16]))
4969 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([17,18]),NORM_TETRA4,NORM_PENTA6)
4970 one_step_joint=MEDFileJointOneStep()
4971 two_step_joint=MEDFileJointOneStep()
4972 one_joint=MEDFileJoint()
4973 two_joint=MEDFileJoint()
4974 one_step_joint.pushCorrespondence(node_correspond)
4975 one_joint.pushStep(one_step_joint)
4976 two_step_joint.pushCorrespondence(cell_correspond)
4977 two_step_joint.pushCorrespondence(node_correspond)
4978 two_joint.pushStep(two_step_joint)
4979 one_joint.setLocalMeshName("maa1")
4980 one_joint.setRemoteMeshName("maa1")
4981 one_joint.setDescription("joint_description_1")
4982 one_joint.setJointName("joint_1")
4983 one_joint.setDomainNumber(1)
4984 two_joint.setLocalMeshName("maa1")
4985 two_joint.setRemoteMeshName("maa1")
4986 two_joint.setDescription("joint_description_2")
4987 two_joint.setJointName("joint_2")
4988 two_joint.setDomainNumber(2)
4989 joints=MEDFileJoints()
4990 joints.pushJoint(one_joint)
4991 joints.pushJoint(two_joint)
4992 mm.setJoints( joints )
4993 mm.write(fileNameWr,2)
4995 mm=MEDFileMesh.New(fileNameWr)
4996 self.assertEqual( mm.getNumberOfJoints(), 2)
4997 jointsR = mm.getJoints();
4998 self.assertEqual( jointsR.getMeshName(), mm.getName() )
4999 self.assertEqual( len( jointsR ), 2 )
5000 jointR1 = jointsR[0]
5001 jointR2 = jointsR[1]
5002 self.assertFalse( jointR1 is None )
5003 self.assertFalse( jointR2 is None )
5004 self.assertTrue( jointR1.isEqual( one_joint ))
5005 self.assertTrue( jointR2.isEqual( two_joint ))
5009 def testMEDFileJoint1(self):
5010 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
5011 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
5012 cell_correspon2=MEDFileJointCorrespondence(DataArrayInt([9,10,11]),NORM_TRI3,NORM_TRI3)
5013 cell_correspon3=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_QUAD4)
5014 joint1st_1=MEDFileJointOneStep()
5015 joint1st_1.pushCorrespondence(cell_correspond)
5016 joint1st_1.pushCorrespondence(node_correspond)
5017 joint1st_2=MEDFileJointOneStep()
5018 joint1st_2.pushCorrespondence(cell_correspond)
5019 joint1st_2.pushCorrespondence(node_correspond)
5020 joint1st_3=MEDFileJointOneStep()
5021 joint1st_3.pushCorrespondence(node_correspond)
5022 joint1st_3.pushCorrespondence(cell_correspond)
5023 joint1st_4=MEDFileJointOneStep()
5024 joint1st_4.pushCorrespondence(cell_correspond)
5025 joint1st_5=MEDFileJointOneStep()
5026 joint1st_5.pushCorrespondence(cell_correspon2)
5027 joint1st_6=MEDFileJointOneStep()
5028 joint1st_6.pushCorrespondence(cell_correspon3)
5029 self.assertTrue( joint1st_1.isEqual( joint1st_2 ))
5030 self.assertTrue( joint1st_1.isEqual( joint1st_3 ))
5031 self.assertFalse( joint1st_1.isEqual( joint1st_4 ))
5032 self.assertFalse( joint1st_4.isEqual( joint1st_5 ))
5033 self.assertFalse( joint1st_4.isEqual( joint1st_6 ))
5034 self.assertEqual(1,joint1st_6.getNumberOfCorrespondences())
5035 joint1st_6.clearCorrespondences()
5036 self.assertEqual(0,joint1st_6.getNumberOfCorrespondences())
5037 one_joint=MEDFileJoint()
5038 one_joint.pushStep(joint1st_1)
5039 one_joint.setLocalMeshName("maa1")
5040 one_joint.setRemoteMeshName("maa2")
5041 one_joint.setDescription("joint_description")
5042 one_joint.setJointName("joint_1")
5043 one_joint.setDomainNumber(1)
5044 self.assertEqual( "maa1", one_joint.getLocalMeshName())
5045 self.assertEqual( "maa2", one_joint.getRemoteMeshName())
5046 self.assertEqual( "joint_description", one_joint.getDescription())
5047 self.assertEqual( 1, one_joint.getDomainNumber())
5048 self.assertEqual( "joint_1", one_joint.getJointName())
5049 one_joint_copy = one_joint.deepCopy()
5050 self.assertEqual( "maa1", one_joint_copy.getLocalMeshName())
5051 self.assertEqual( "maa2", one_joint_copy.getRemoteMeshName())
5052 self.assertEqual( "joint_description", one_joint_copy.getDescription())
5053 self.assertEqual( 1, one_joint_copy.getDomainNumber())
5054 self.assertEqual( "joint_1", one_joint_copy.getJointName())
5057 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
5059 def testMEDFileSafeCall0(self):
5060 """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
5061 fname="Pyfile94.med"
5062 errfname="Pyfile94.err"
5065 # first clean file if needed
5066 if os.path.exists(fname):
5069 # second : build a file from scratch
5070 m=MEDCouplingCMesh()
5071 arr=DataArrayDouble(11) ; arr.iota()
5072 m.setCoords(arr,arr)
5077 # third : change permissions to remove write access on created file
5078 os.chmod(fname, 0o444)
5079 # four : try to append data on file -> check that it raises Exception
5080 f=MEDCouplingFieldDouble(ON_CELLS)
5083 f.setArray(DataArrayDouble(100))
5084 f.getArray()[:]=100.
5085 f.checkConsistencyLight()
5086 f1ts=MEDFileField1TS()
5087 f1ts.setFieldNoProfileSBT(f)
5089 tmp=StdOutRedirect(errfname)
5090 self.assertRaises(InterpKernelException,f1ts.write,fname,0) # it should raise !
5093 if os.path.exists(errfname):
5099 def testUnivStatus1(self):
5100 """ Non regression test to check the effectiveness of univ write status."""
5101 fname="Pyfile95.med"
5102 arr=DataArrayDouble(10) ; arr.iota()
5103 m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh")
5104 mm=MEDFileCMesh() ; mm.setMesh(m)
5105 mm.setUnivNameWrStatus(False) # test is here
5107 mm=MEDFileCMesh(fname)
5108 self.assertEqual(mm.getUnivName(),"")
5109 mm.setUnivNameWrStatus(True)
5111 mm=MEDFileCMesh(fname)
5112 self.assertTrue(mm.getUnivName()!="")
5116 def testEmptyMesh(self):
5117 """ MEDLoader should be able to consistently write and read an empty mesh (coords array
5119 fname = "Pyfile96.med"
5120 m = MEDCouplingUMesh('toto', 2)
5121 m.setCoords(DataArrayDouble([], 0, 2))
5122 m.setConnectivity(DataArrayInt([]), DataArrayInt([0]))
5123 mfu = MEDFileUMesh()
5124 mfu.setMeshAtLevel(0, m)
5126 mfu2 = MEDFileUMesh(fname)
5127 self.assertEqual('toto', mfu2.getName())
5128 lvl = mfu2.getNonEmptyLevels()
5129 self.assertEqual((), lvl)
5131 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
5132 def testMEDFileUMeshPickeling2(self):
5133 """ Check that pickalization can be performed on a unpickalized instance. Non regression test."""
5139 arr=DataArrayDouble(nbOfNodesPerAxis) ; arr.iota() ; arr/=(nbOfNodesPerAxis-1) ; arr*=hauteur
5140 m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr) ; m=m.buildUnstructured() ; m.setName(name)
5141 mesh=MEDFileUMesh() ; mesh[0]=m
5142 m1=m.computeSkin() ; mesh[-1]=m1
5144 bary1=m1.computeCellCenterOfMass()[:,2]
5145 grp1=bary1.findIdsInRange(hauteur-1e-12,hauteur+1e-12) ; grp1.setName(grpName1)
5146 grp2=bary1.findIdsInRange(0.-1e-12,0.+1e-12) ; grp2.setName(grpName2)
5147 mesh.setGroupsAtLevel(-1,[grp1,grp2])
5149 st=pickle.dumps(mesh,2)
5151 st2=pickle.dumps(mm,2)
5152 mm2=pickle.loads(st2)
5153 self.assertTrue(mesh.isEqual(mm2,1e-12)[0])
5157 def testMEDFileEquivalence1(self):
5158 """ First check of equivalence implementation in MEDFileMesh"""
5159 fileName="Pyfile97.med"
5162 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)])
5163 coo.setInfoOnComponents(["X [Sans_unite]","Y [Sans_unite]","Z [Sans_unite]"])
5164 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])
5165 m1=MEDCoupling1SGTUMesh(meshName,NORM_QUAD4) ; m1.setCoords(coo) ; m1.setNodalConnectivity(connQ4) ; mm[-1]=m1
5166 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])
5167 m0=MEDCoupling1SGTUMesh(meshName,NORM_HEXA8) ; m0.setCoords(coo) ; m0.setNodalConnectivity(connH8) ; mm[0]=m0
5168 mm.getFamilyFieldAtLevel(-1)[:]=-2
5169 mm.getFamilyFieldAtLevel(0)[:]=0
5170 mm.addFamily("HOMARD________-1",-1)
5171 mm.addFamily("HOMARD________-2",-2)
5172 mm.addFamily("HOMARD________-3",-3)
5173 mm.setFamiliesIdsOnGroup("HOMARD",[-1,-2,-3])
5175 eqName="MAILLES_A_RECOLLER_APRES_HOMARD"
5176 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."
5177 mm.initializeEquivalences()
5178 eqs=mm.getEquivalences()
5179 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
5180 eq0.setDescription(descEq)
5181 corr=DataArrayInt32([(0,3),(0,4),(0,5),(0,6),(1,7),(1,8),(1,9),(1,10),(2,11),(2,12),(2,13),(2,14)])
5182 eq0.setArray(-1,corr)
5183 self.assertEqual(eq0.getCell().size(),1)
5184 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
5185 eq0.getCell().clear()
5186 self.assertEqual(eq0.getCell().size(),0)
5187 eq0.getCell().setArrayForType(NORM_QUAD4,corr)
5188 self.assertEqual(eq0.getCell().size(),1)
5189 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
5190 mm.killEquivalences()
5191 mm.initializeEquivalences()
5192 eqs=mm.getEquivalences()
5193 eq0=eqs.appendEmptyEquivalenceWithName(eqName)
5194 eq0.setDescription(descEq)
5196 c.setArrayForType(NORM_QUAD4,corr)
5197 self.assertEqual(eq0.getCell().size(),1)
5198 self.assertTrue(eq0.getCell().getArray(NORM_QUAD4).isEqual(corr))
5200 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5201 self.assertEqual(mm2.getEquivalences().size(),1)
5202 self.assertTrue(mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4).isEqual(corr))
5203 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=2
5204 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
5205 mm2.getEquivalences().getEquivalence(0).getCell().getArray(NORM_QUAD4)[0,0]=0
5206 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
5207 mm.write(fileName,2)
5209 mm3=MEDFileMesh.New(fileName)
5210 self.assertTrue(mm.isEqual(mm3,1e-12)[0])
5214 def testMEDFileForFamiliesPlayer1(self):
5215 """Non regression bug EDF11911. For serial killers using same family name to store both cells and nodes ! Only sky is the limit."""
5216 fileName="Pyfile98.med"
5218 magicSt="%s%%04i"%(MEDFileMesh.GetMagicFamilyStr())
5219 arr=DataArrayDouble(4) ; arr.iota()
5220 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
5221 m=m.buildUnstructured()
5224 mm.setName(meshName)
5225 mm.setFamilyId("FAMILLE_ZERO",0)
5226 mm.getFamilyFieldAtLevel(0)[-3:]=-4
5227 mm.setFamilyId("RIDF%s"%(magicSt%0),-4)
5228 mm.setGroupsOnFamily("RIDF%s"%(magicSt%0),["RID"])
5229 d=DataArrayInt(16) ; d[:]=0 ; d[[1,2,4,5]]=3
5230 mm.setFamilyFieldArr(1,d)
5231 mm.setFamilyId("RIDF%s"%(magicSt%1),3)
5232 mm.setGroupsOnFamily("RIDF%s"%(magicSt%1),["RID"])
5233 self.assertEqual(mm.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
5234 self.assertEqual(mm.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF")) # <- the aim of test is here !
5235 self.assertEqual(mm.getFamiliesIdsOnGroup("RID"),(-4,3))
5236 mm.write(fileName,2)
5237 # now read such funny file !
5238 mm2=MEDFileMesh.New(fileName) # <- normally mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
5239 self.assertTrue(mm.isEqual(mm2,1e-16))
5240 self.assertEqual(mm2.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
5241 self.assertEqual(mm2.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF"))
5242 self.assertEqual(mm2.getFamiliesIdsOnGroup("RID"),(-4,3))# <- very important too !
5246 def testCartesianizer1(self):
5247 """ This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. """
5249 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
5250 mm=MEDFileUMesh() ; mm[0]=m ; mm.forceComputationOfParts()
5251 d0=DataArrayInt(16) ; d0[:]=0
5252 d1=DataArrayInt(9) ; d1[:]=0
5253 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
5254 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
5255 ref0=mm.getCoords().getHiddenCppPointer()
5256 ref1=mm[0].getNodalConnectivity().getHiddenCppPointer()
5257 self.assertEqual(ref0,mm[0].getCoords().getHiddenCppPointer())
5258 ref2=mm[0].getNodalConnectivityIndex().getHiddenCppPointer()
5259 ref3=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer()
5260 self.assertEqual(ref0,mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
5261 mm.setAxisType(AX_CYL) #<- important
5262 mm2=mm.cartesianize() # the trigger
5263 self.assertEqual(mm2.getAxisType(),AX_CART)
5264 mm.setAxisType(AX_CART) # this is here only to avoid complaints
5265 self.assertTrue(isinstance(mm2,MEDFileUMesh))
5266 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
5267 self.assertTrue(ref0==mm.getCoords().getHiddenCppPointer()) # <- here important
5268 self.assertTrue(ref0!=mm2.getCoords().getHiddenCppPointer()) # <- here important
5269 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2[0].getCoords().getHiddenCppPointer())
5270 self.assertEqual(mm2.getCoords().getHiddenCppPointer(),mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getCoords().getHiddenCppPointer())
5271 self.assertEqual(mm2[0].getNodalConnectivity().getHiddenCppPointer(),ref1) # <- here very important
5272 self.assertEqual(mm2[0].getNodalConnectivityIndex().getHiddenCppPointer(),ref2) # <- here very important
5273 self.assertEqual(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getNodalConnectivity().getHiddenCppPointer(),ref3) # <- here very important
5274 self.assertEqual(mm2.getName(),mm.getName())
5275 self.assertEqual(mm2.getDescription(),mm.getDescription())
5276 self.assertEqual(mm2.getTime(),mm.getTime())
5277 self.assertEqual(mm2.getTime(),mm.getTime())
5278 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
5279 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
5280 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
5281 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
5282 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
5283 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
5284 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
5285 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
5287 mm.setAxisType(AX_CART)
5288 mm2=mm.cartesianize() # the trigger
5289 self.assertEqual(mm2.getAxisType(),AX_CART)
5290 self.assertTrue(isinstance(mm2,MEDFileUMesh))
5291 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
5292 # CurveLinearMesh non cart
5293 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildCurveLinear()
5294 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
5295 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
5296 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
5297 ref0=mm.getMesh().getCoords().getHiddenCppPointer()
5298 mm2=mm.cartesianize() # the trigger
5299 self.assertEqual(mm2.getAxisType(),AX_CART)
5300 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
5301 self.assertTrue(mm.getHiddenCppPointer()!=mm2.getHiddenCppPointer())
5302 self.assertTrue(ref0==mm.getMesh().getCoords().getHiddenCppPointer()) # <- here important
5303 self.assertTrue(ref0!=mm2.getMesh().getCoords().getHiddenCppPointer()) # <- here important
5304 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
5305 self.assertEqual(mm2.getName(),mm.getName())
5306 self.assertEqual(mm2.getDescription(),mm.getDescription())
5307 self.assertEqual(mm2.getTime(),mm.getTime())
5308 self.assertEqual(mm2.getTime(),mm.getTime())
5309 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
5310 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
5311 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
5312 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
5313 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
5314 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
5315 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
5316 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
5317 # CurveLinearMesh cart
5318 mm.setAxisType(AX_CART)
5319 mm2=mm.cartesianize() # the trigger
5320 self.assertEqual(mm2.getAxisType(),AX_CART)
5321 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
5322 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
5324 arr=DataArrayDouble(4) ; arr.iota() ; m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
5325 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setAxisType(AX_CYL) #<- important
5326 mm.setFamilyFieldArr(0,d1) ; mm.setFamilyFieldArr(1,d0)
5327 mm.setName("a") ; mm.setDescription("b") ; mm.setTime(3,4,5.) ; mm.addFamily("c",-4) ; mm.setFamiliesOnGroup("d",["c"]) ; mm.setTimeUnit("ms")
5328 mm2=mm.cartesianize() # the trigger
5329 self.assertEqual(mm2.getAxisType(),AX_CART)
5330 self.assertTrue(isinstance(mm2,MEDFileCurveLinearMesh))
5331 self.assertEqual(mm2.getMesh().getNodeGridStructure(),mm.getMesh().getNodeGridStructure())
5332 self.assertEqual(mm2.getName(),mm.getName())
5333 self.assertEqual(mm2.getDescription(),mm.getDescription())
5334 self.assertEqual(mm2.getTime(),mm.getTime())
5335 self.assertEqual(mm2.getTime(),mm.getTime())
5336 self.assertEqual(mm2.getTimeUnit(),mm.getTimeUnit())
5337 self.assertEqual(mm2.getGroupsNames(),mm.getGroupsNames())
5338 self.assertEqual(mm2.getFamiliesNames(),mm.getFamiliesNames())
5339 self.assertEqual([mm2.getFamilyId(elt) for elt in mm2.getFamiliesNames()],[mm.getFamilyId(elt2) for elt2 in mm.getFamiliesNames()])
5340 self.assertEqual(mm.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer())
5341 self.assertEqual(mm2.getFamilyFieldAtLevel(0).getHiddenCppPointer(),d1.getHiddenCppPointer()) # <- here very important
5342 self.assertEqual(mm.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer())
5343 self.assertEqual(mm2.getFamilyFieldAtLevel(1).getHiddenCppPointer(),d0.getHiddenCppPointer()) # <- here very important
5345 mm.setAxisType(AX_CART)
5346 mm2=mm.cartesianize() # the trigger
5347 self.assertEqual(mm2.getAxisType(),AX_CART)
5348 self.assertTrue(isinstance(mm2,MEDFileCMesh))
5349 self.assertTrue(mm.getHiddenCppPointer()==mm2.getHiddenCppPointer()) # optimization
5353 def testCheckCoherency(self):
5354 m2 = MEDCouplingUMesh("2d", 2)
5355 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5356 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5357 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5358 mum = MEDFileUMesh()
5359 mum.setMeshAtLevel(0, m2)
5360 mum.setMeshAtLevel(-1, m1)
5361 mum.checkConsistency()
5362 mum2 = mum.deepCopy()
5365 arr = DataArrayInt([2]*4)
5366 mum.setFamilyFieldArr(1, arr); arr.reAlloc(35);
5367 self.assertRaises(InterpKernelException, mum.checkConsistency)
5368 mum=mum2; mum2=mum.deepCopy();
5369 arr = DataArrayInt([2]*4)
5370 mum.setRenumFieldArr(1, arr); arr.reAlloc(35);
5371 self.assertRaises(InterpKernelException, mum.checkConsistency)
5372 mum=mum2; mum2=mum.deepCopy();
5373 mum.setRenumFieldArr(1, DataArrayInt([2]*4))
5374 self.assertRaises(InterpKernelException, mum.checkConsistency)
5375 mum=mum2; mum2=mum.deepCopy();
5376 arr = DataArrayAsciiChar(['tutu x']*4)
5377 mum.setNameFieldAtLevel(1, arr); arr.reAlloc(35);
5378 self.assertRaises(InterpKernelException, mum.checkConsistency)
5381 mum=mum2; mum2=mum.deepCopy();
5382 arr = DataArrayInt([2]*2)
5383 mum.setFamilyFieldArr(0, arr); arr.reAlloc(35);
5384 self.assertRaises(InterpKernelException, mum.checkConsistency)
5385 mum=mum2; mum2=mum.deepCopy();
5386 arr = DataArrayInt([2]*2)
5387 mum.setRenumFieldArr(0, arr); arr.reAlloc(35);
5388 self.assertRaises(InterpKernelException, mum.checkConsistency)
5389 mum=mum2; mum2=mum.deepCopy();
5390 mum.setRenumFieldArr(0, DataArrayInt([2]*2))
5391 self.assertRaises(InterpKernelException, mum.checkConsistency)
5392 mum=mum2; mum2=mum.deepCopy();
5393 arr = DataArrayAsciiChar(['tutu x']*2)
5394 mum.setNameFieldAtLevel(0, arr); arr.reAlloc(35);
5395 self.assertRaises(InterpKernelException, mum.checkConsistency)
5398 mum=mum2; mum2=mum.deepCopy();
5399 arr = DataArrayInt([2]*5)
5400 mum.setFamilyFieldArr(-1, arr); arr.reAlloc(35);
5401 self.assertRaises(InterpKernelException, mum.checkConsistency)
5402 mum=mum2; mum2=mum.deepCopy();
5403 arr = DataArrayInt([2]*5)
5404 mum.setRenumFieldArr(-1, arr); arr.reAlloc(35);
5405 self.assertRaises(InterpKernelException, mum.checkConsistency)
5406 mum=mum2; mum2=mum.deepCopy();
5407 mum.setRenumFieldArr(-1, DataArrayInt([2]*5))
5408 self.assertRaises(InterpKernelException, mum.checkConsistency)
5409 mum=mum2; mum2=mum.deepCopy();
5410 arr = DataArrayAsciiChar(['tutu x']*5)
5411 mum.setNameFieldAtLevel(-1, arr); arr.reAlloc(35);
5412 self.assertRaises(InterpKernelException, mum.checkConsistency)
5415 def testCheckSMESHConsistency(self):
5416 m2 = MEDCouplingUMesh("2d", 2)
5417 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5418 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5419 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5420 mum = MEDFileUMesh()
5421 mum.setMeshAtLevel(0, m2)
5422 mum.setMeshAtLevel(-1, m1)
5423 mum.checkConsistency()
5424 mum.checkSMESHConsistency()
5425 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5426 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5427 mum.setRenumFieldArr(0, n2)
5428 mum.setRenumFieldArr(-1, n1)
5429 self.assertRaises(InterpKernelException, mum.checkSMESHConsistency)
5430 mum.setRenumFieldArr(-1, n1+100)
5431 mum.checkSMESHConsistency()
5435 def testClearNodeAndCellNumbers(self):
5436 m2 = MEDCouplingUMesh("2d", 2)
5437 m2.setCoords(DataArrayDouble([(0.0, 1.0)] * 4, 4,2)) # whatever
5438 m2.setConnectivity(DataArrayInt([NORM_TRI3, 0,1,2,NORM_TRI3, 1,2,3]), DataArrayInt(([0,4,8])))
5439 m1 , _, _ , _, _ = m2.buildDescendingConnectivity()
5440 mum = MEDFileUMesh()
5441 mum.setMeshAtLevel(0, m2)
5442 mum.setMeshAtLevel(-1, m1)
5443 mum.checkConsistency()
5444 n2 = DataArrayInt(m2.getNumberOfCells(), 1); n2.iota(1)
5445 n1 = DataArrayInt(m1.getNumberOfCells(), 1); n1.iota(1)
5446 mum.setRenumFieldArr(0, n2)
5447 mum.setRenumFieldArr(-1, n1)
5448 mum.clearNodeAndCellNumbers()
5449 mum.checkSMESHConsistency()
5453 def testCMeshSetFamilyFieldArrNull(self):
5455 fname="Pyfile99.med"
5456 arrX=DataArrayDouble([0,1,2,3])
5457 arrY=DataArrayDouble([0,1,2])
5458 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m.setName(meshName)
5459 mm=MEDFileCMesh() ; mm.setMesh(m)
5460 famCellIds=DataArrayInt([0,-2,-2,-1,-2,0])
5461 famNodeIds=DataArrayInt([0,0,0,3,4,1,2,7,2,1,0,0])
5462 mm.setFamilyFieldArr(0,famCellIds)
5463 mm.setFamilyFieldArr(1,famNodeIds)
5465 mm=MEDFileMesh.New(fname)
5466 self.assertTrue(mm.getFamilyFieldAtLevel(0) is not None)
5467 self.assertTrue(mm.getFamilyFieldAtLevel(1) is not None)
5468 mm.setFamilyFieldArr(0,None)#<- bug was here
5469 mm.setFamilyFieldArr(1,None)#<- bug was here
5470 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
5471 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
5473 self.assertTrue(mm3.getFamilyFieldAtLevel(0) is None)
5474 self.assertTrue(mm3.getFamilyFieldAtLevel(1) is None)
5476 mm2=MEDFileMesh.New(fname)
5477 self.assertTrue(mm2.getFamilyFieldAtLevel(0) is None)
5478 self.assertTrue(mm2.getFamilyFieldAtLevel(1) is None)
5482 def testAppendFieldProfileOnIntField(self):
5483 fname="Pyfile100.med"
5484 arrX=DataArrayDouble([0,1,2,3])
5485 arrY=DataArrayDouble([0,1,2])
5486 mesh=MEDCouplingCMesh() ; mesh.setCoords(arrX,arrY) ; mesh.setName("Mesh")
5490 fmts=MEDFileIntFieldMultiTS()
5492 pfl=DataArrayInt([1,3,5]) ; pfl.setName(pflName)
5493 f=MEDCouplingFieldInt(ON_CELLS) ; f.setMesh(mesh)
5494 fieldName="FieldOnCell"
5495 f.setTime(1.2,1,1) ; f.setName(fieldName)
5496 arr=DataArrayInt32([101,102,103]) ; f.setArray(arr)
5497 fmts.appendFieldProfile(f,mm,0,pfl)
5502 mm=MEDFileMesh.New(fname)
5503 fmts=MEDFileAnyTypeFieldMultiTS.New(fname)
5504 self.assertTrue(isinstance(fmts,MEDFileIntFieldMultiTS))
5505 self.assertEqual(fmts.getName(),fieldName)
5506 self.assertEqual(len(fmts),1)
5508 ftest,pfltest=f1ts.getFieldWithProfile(ON_CELLS,0,mm)
5509 self.assertEqual(pfltest.getName(),pflName)
5510 self.assertEqual(ftest.getName(),fieldName)
5511 self.assertTrue(ftest.isEqualWithoutConsideringStr(arr))
5512 ftest2=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
5513 self.assertTrue(ftest2.getArray().isEqualWithoutConsideringStr(arr))
5514 self.assertEqual(ftest2.getTime(),f.getTime())
5515 self.assertEqual(ftest2.getMesh().getNumberOfCells(),len(arr))
5519 def testMEDFileFieldEasyField1(self):
5520 """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."""
5521 ## Basic test on cells on top level
5522 fname="Pyfile101.med"
5525 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5526 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5528 m.insertNextCell(NORM_TRI3,[0,1,2])
5529 m.insertNextCell(NORM_TRI3,[3,4,5])
5530 m.insertNextCell(NORM_TRI3,[6,7,8])
5531 m.insertNextCell(NORM_TRI3,[9,10,11])
5532 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5533 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5536 arr0=DataArrayDouble([10,11,12,13,100,101])
5537 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5538 f.setName(fieldName) ; f.setTime(2.,6,7)
5540 ff=MEDFileFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5542 arr2=arr0+1000 ; f.setArray(arr2)
5543 f.setTime(3.,8,9) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5547 mm=MEDFileMesh.New(fname)
5548 f1ts=MEDFileField1TS(fname,fieldName,6,7)
5549 ftst0=f1ts.field(mm)
5550 self.assertTrue(f0.isEqual(ftst0,1e-12,1e-12))
5551 f1ts=MEDFileField1TS(fname,fieldName,8,9)
5552 ftst1=f1ts.field(mm)
5553 self.assertTrue(f1.isEqual(ftst1,1e-12,1e-12))
5554 fmts=MEDFileFieldMultiTS(fname,fieldName)
5555 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,1e-12))
5556 ## Basic test on nodes on top level
5557 f2=MEDCouplingFieldDouble(ON_NODES) ; arr2=DataArrayDouble([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5558 f2.setName(fieldName)
5560 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5562 mm=MEDFileMesh.New(fname)
5563 f1ts=MEDFileField1TS(fname,fieldName,23,24)
5564 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,1e-12))
5565 fmts=MEDFileFieldMultiTS(fname,fieldName)
5566 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,1e-12))
5568 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)
5569 f3.setName(fieldName) ; f3.checkConsistencyLight()
5570 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5572 mm=MEDFileMesh.New(fname)
5573 f1ts=MEDFileField1TS(fname,fieldName,2,3)
5574 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5576 f4=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5577 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])
5578 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)
5579 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)
5580 f4.checkConsistencyLight()
5581 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5583 mm=MEDFileMesh.New(fname)
5584 f1ts=MEDFileField1TS(fname,fieldName,4,5)
5585 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5589 def testMEDFileFieldEasyField2(self):
5590 """Same thantestMEDFileFieldEasyField1 except that here intfields are considered.
5591 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."""
5592 ## Basic test on cells on top level
5593 fname="Pyfile102.med"
5596 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5597 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5599 m.insertNextCell(NORM_TRI3,[0,1,2])
5600 m.insertNextCell(NORM_TRI3,[3,4,5])
5601 m.insertNextCell(NORM_TRI3,[6,7,8])
5602 m.insertNextCell(NORM_TRI3,[9,10,11])
5603 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5604 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5607 arr0=DataArrayInt32([10,11,12,13,100,101])
5608 f=MEDCouplingFieldInt(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m)
5609 f.setName(fieldName) ; f.setTime(2.,6,7)
5611 ff=MEDFileIntFieldMultiTS() ; ff.appendFieldNoProfileSBT(f)
5613 arr2=arr0+1000 ; f.setArray(arr2)
5614 f.setTime(3.,8,9) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f)
5618 mm=MEDFileMesh.New(fname)
5619 f1ts=MEDFileIntField1TS(fname,fieldName,6,7)
5620 ftst0=f1ts.field(mm)
5621 self.assertTrue(f0.isEqual(ftst0,1e-12,0))
5622 f1ts=MEDFileIntField1TS(fname,fieldName,8,9)
5623 ftst1=f1ts.field(mm)
5624 self.assertTrue(f1.isEqual(ftst1,1e-12,0))
5625 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5626 self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,0))
5627 ## Basic test on nodes on top level
5628 f2=MEDCouplingFieldInt(ON_NODES) ; arr2=DataArrayInt32([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
5629 f2.setName(fieldName)
5631 ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f2) ; ff.write(fname,0)
5633 mm=MEDFileMesh.New(fname)
5634 f1ts=MEDFileIntField1TS(fname,fieldName,23,24)
5635 self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,0))
5636 fmts=MEDFileIntFieldMultiTS(fname,fieldName)
5637 self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,0))
5639 f3=MEDCouplingFieldInt(ON_GAUSS_NE) ; f3.setMesh(m) ; arr3=DataArrayInt32([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)
5640 f3.setName(fieldName) ; f3.checkConsistencyLight()
5641 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5643 mm=MEDFileMesh.New(fname)
5644 f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5645 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
5647 f4=MEDCouplingFieldInt(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
5648 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])
5649 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)
5650 arr4=DataArrayInt32([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)
5651 f4.checkConsistencyLight()
5652 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5654 mm=MEDFileMesh.New(fname)
5655 f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5656 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
5660 def testMEDFileFieldEasyField3(self):
5661 """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."""
5662 fname="Pyfile103.med"
5665 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5666 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5668 m.insertNextCell(NORM_TRI3,[0,1,2])
5669 m.insertNextCell(NORM_TRI3,[3,4,5])
5670 m.insertNextCell(NORM_TRI3,[6,7,8])
5671 m.insertNextCell(NORM_TRI3,[9,10,11])
5672 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5673 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5675 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5677 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5678 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5682 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5683 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5685 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,1,2)
5686 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5687 # here f1 lying on level -1 not 0 check if "field" method detect it !
5688 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayDouble([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5689 f1.setMesh(mm[-1]) # -1 is very important
5691 f1.checkConsistencyLight()
5693 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5695 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,3,4)
5696 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
5698 f3=MEDCouplingFieldDouble(ON_GAUSS_NE)
5699 f3.setMesh(mm[-1]) # this line is important
5700 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)
5701 f3.setName(fieldName) ; f3.checkConsistencyLight()
5702 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5704 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,2,3)
5705 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
5707 f4=MEDCouplingFieldDouble(ON_GAUSS_PT)
5708 f4.setMesh(mm[-1]) # this line is important
5709 f4.setName(fieldName)
5710 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])
5711 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)
5712 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)
5713 f4.checkConsistencyLight()
5714 mm.write(fname,2) ; ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5715 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,4,5)
5716 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
5720 def testMEDFileFieldEasyField4(self):
5721 """ Same than testMEDFileFieldEasyField3 but with integers"""
5722 fname="Pyfile104.med"
5725 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5726 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5728 m.insertNextCell(NORM_TRI3,[0,1,2])
5729 m.insertNextCell(NORM_TRI3,[3,4,5])
5730 m.insertNextCell(NORM_TRI3,[6,7,8])
5731 m.insertNextCell(NORM_TRI3,[9,10,11])
5732 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5733 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5735 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5737 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5738 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5742 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt32([(0,100),(1,101)])) ; f1.setMesh(mm[0]) ; f1.setTime(4.,1,2)
5743 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5745 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,1,2)
5746 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
5747 # here f1 lying on level -1 not 0 check if "field" method detect it !
5748 f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt32([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
5749 f1.setMesh(mm[-1]) # -1 is very important
5751 f1.checkConsistencyLight()
5753 f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
5755 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,3,4)
5756 self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
5758 f3=MEDCouplingFieldInt(ON_GAUSS_NE)
5759 f3.setMesh(mm[-1]) # this line is important
5760 arr3=DataArrayInt32([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)
5761 f3.setName(fieldName) ; f3.checkConsistencyLight()
5762 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
5764 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
5765 self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
5767 f4=MEDCouplingFieldInt(ON_GAUSS_PT)
5768 f4.setMesh(mm[-1]) # this line is important
5769 f4.setName(fieldName)
5770 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])
5771 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)
5772 arr4=DataArrayInt32([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)
5773 f4.checkConsistencyLight()
5774 mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
5775 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
5776 self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
5780 def testMEDFileFieldEasyField5(self):
5781 """More and more difficult now look at how profiles are managed by "field" method."""
5782 fname="Pyfile105.med"
5785 coo=DataArrayDouble([(3,2,1),(8,7,6),(5,9,10)])
5786 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coo)
5788 m.insertNextCell(NORM_TRI3,[0,1,2])
5789 m.insertNextCell(NORM_TRI3,[3,4,5])
5790 m.insertNextCell(NORM_TRI3,[6,7,8])
5791 m.insertNextCell(NORM_TRI3,[9,10,11])
5792 m.insertNextCell(NORM_QUAD4,[100,101,102,103])
5793 m.insertNextCell(NORM_QUAD4,[104,105,106,107])
5796 pfl=DataArrayInt([0,2,3,5]) ; pfl.setName("pfl")
5797 m2=m.deepCopy()[pfl] ; m2.setName(m.getName())
5799 arr0=DataArrayDouble([10,11,12,13])
5800 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setArray(arr0) ; f.setMesh(m2)
5801 f.setName(fieldName) ; f.setTime(2.,6,7) ; f.checkConsistencyLight()
5802 ff=MEDFileFieldMultiTS() ; ff.appendFieldProfile(f,mm,0,pfl) # ff is a field on profile
5805 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5806 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5807 # more complicated -> multi level
5808 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coo)
5810 m0.insertNextCell(NORM_TETRA4,[3,2,5,0])
5811 m0.insertNextCell(NORM_TETRA4,[7,6,3,2])
5813 mm2[0]=m0 ; mm2[-1]=m
5815 ff=MEDFileField1TS() ; ff.setFieldProfile(f,mm2,-1,pfl)
5817 mm=MEDFileMesh.New(fname) ; f1ts=MEDFileField1TS(fname,fieldName,6,7)
5818 self.assertTrue(f.isEqual(f1ts.field(mm),1e-12,1e-12))
5822 def testExtractPart1(self):
5823 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)])
5825 m0=MEDCouplingUMesh(meshName,2) ; m0.setCoords(coo) ; m0.allocateCells()
5826 m0.insertNextCell(NORM_TRI3,[8,4,3])
5827 m0.insertNextCell(NORM_TRI3,[8,9,4])
5828 m0.insertNextCell(NORM_TRI3,[7,13,8])
5829 m0.insertNextCell(NORM_TRI3,[7,12,13])
5830 m0.insertNextCell(NORM_TRI3,[0,6,1])
5831 m0.insertNextCell(NORM_TRI3,[0,5,6])
5832 m0.insertNextCell(NORM_QUAD4,[1,6,7,2])
5833 m0.insertNextCell(NORM_QUAD4,[2,7,8,3])
5834 m0.insertNextCell(NORM_QUAD4,[8,13,14,9])
5835 m0.insertNextCell(NORM_QUAD4,[6,11,12,7])
5836 m0.insertNextCell(NORM_QUAD4,[5,10,11,6])
5838 m1=MEDCouplingUMesh(meshName,1) ; m1.setCoords(coo) ; m1.allocateCells()
5839 m1.insertNextCell(NORM_SEG2,[10,5])
5840 m1.insertNextCell(NORM_SEG2,[5,0])
5841 m1.insertNextCell(NORM_SEG2,[0,1])
5842 m1.insertNextCell(NORM_SEG2,[1,2])
5843 m1.insertNextCell(NORM_SEG2,[2,3])
5844 m1.insertNextCell(NORM_SEG2,[3,4])
5845 m1.insertNextCell(NORM_SEG2,[4,9])
5846 m1.insertNextCell(NORM_SEG2,[9,14])
5847 m1.insertNextCell(NORM_SEG2,[14,13])
5848 m1.insertNextCell(NORM_SEG2,[13,12])
5849 m1.insertNextCell(NORM_SEG2,[12,11])
5850 m1.insertNextCell(NORM_SEG2,[11,10])
5852 mm[0]=m0 ; mm[-1]=m1
5853 arr0=DataArrayInt([0,1,2,3,4,6,7,8,12,13])
5855 tab[0]=DataArrayInt([0,2,3,4,6,7])
5856 tab[-1]=DataArrayInt([2,3,4,5,9])
5858 self.assertTrue(mm.deduceNodeSubPartFromCellSubPart(tab).isEqual(arr0))
5862 fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5865 arr0_0=DataArrayDouble([100,101,102,103,104,105,106,107,108,109,110]) ; arr0_0.setInfoOnComponents(ic)
5866 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*t0) ; f0.setArray(arr0_0)
5867 f0.setMesh(m0) ; f0.setName(fname0)
5868 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setTime(*t0) ; f1.setArray(DataArrayDouble([200,201,202,203,204,205,206,207,208,209,210,211]))
5869 f1.setMesh(m1) ; f1.setName(fname0) ; f1.getArray().setInfoOnComponents(ic)
5870 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]))
5871 f2.setMesh(m0) ; f2.setName(fname0) ; f2.getArray().setInfoOnComponents(ic)
5872 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.setFieldNoProfileSBT(f2)
5873 fmts.pushBackTimeStep(f1ts)
5875 mmOut=mm.extractPart(tab)
5877 fsPart0=fs.extractPart(tab,mm)
5878 self.assertEqual(len(fsPart0),1)
5880 self.assertEqual(len(fmtsP),1)
5882 self.assertRaises(InterpKernelException,f1ts.field,mmOut)
5884 self.assertTrue(mmOut[0].computeCellCenterOfMass().isEqual(m0[tab[0]].computeCellCenterOfMass(),1e-12))
5885 self.assertTrue(mmOut[-1].computeCellCenterOfMass().isEqual(m1[tab[-1]].computeCellCenterOfMass(),1e-12))
5887 m0Part=m0.deepCopy()[tab[0]] ; m0Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m0Part.setName(m0.getName())
5888 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5889 m1Part=m1.deepCopy()[tab[-1]] ; m1Part.renumberNodes(tab[1].invertArrayN2O2O2N(mm.getNumberOfNodes()),len(tab[1])) ; m1Part.setName(m0.getName())
5890 self.assertTrue(mmOut[0].isEqual(m0Part,1e-12))
5891 self.assertTrue(mmOut[-1].isEqual(m1Part,1e-12))
5893 f0Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mmOut) ; f0Part.checkConsistencyLight()
5894 self.assertEqual(f0Part.getTypeOfField(),ON_CELLS)
5895 self.assertTrue(f0Part.getMesh().isEqual(m0Part,1e-12))
5896 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic)
5897 self.assertTrue(f0Part.getArray().isEqual(arr0Exp,1e-12)) ; self.assertEqual(f0Part.getTime(),list(t0))
5898 f1Part=f1ts.getFieldOnMeshAtLevel(ON_CELLS,-1,mmOut) ; f1Part.checkConsistencyLight()
5899 self.assertEqual(f1Part.getTypeOfField(),ON_CELLS)
5900 self.assertTrue(f1Part.getMesh().isEqual(m1Part,1e-12))
5901 arr1Exp=DataArrayDouble([202,203,204,205,209]) ; arr1Exp.setInfoOnComponents(ic)
5902 self.assertTrue(f1Part.getArray().isEqual(arr1Exp,1e-12)) ; self.assertEqual(f1Part.getTime(),list(t0))
5904 f2Part=f1ts.getFieldOnMeshAtLevel(ON_NODES,0,mmOut) ; f2Part.checkConsistencyLight()
5905 arr2Exp=DataArrayDouble([300,301,302,303,304,306,307,308,312,313]) ; arr2Exp.setInfoOnComponents(ic)
5906 self.assertTrue(f2Part.getArray().isEqual(arr2Exp,1e-12)) ; self.assertEqual(f2Part.getTime(),list(t0))
5908 fs=MEDFileFields() ; fmts=MEDFileFieldMultiTS() ; fs.pushField(fmts)
5909 tss=[(16.5,3,4),(17.5,4,5),(18.5,5,6)]
5910 for i,tt in enumerate(tss):
5911 f0=MEDCouplingFieldDouble(ON_CELLS) ; f0.setTime(*tt)
5912 myarr=arr0_0+i*1000.
5914 f0.setMesh(m0) ; f0.setName(fname0) ; f0.getArray().setInfoOnComponents(ic)
5915 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f0) ; fmts.pushBackTimeStep(f1ts)
5917 fsPart1=fs.extractPart(tab,mm)
5918 self.assertEqual(len(fsPart1),1)
5920 self.assertEqual(len(fmtsP),len(tss))
5921 for i,(f1tsP,tt) in enumerate(zip(fmtsP,tss)):
5922 fPart=f1tsP.field(mmOut) ; fPart.checkConsistencyLight()
5923 self.assertEqual(fPart.getTypeOfField(),ON_CELLS)
5924 arr0Exp=DataArrayDouble([100,102,103,104,106,107]) ; arr0Exp.setInfoOnComponents(ic) ; arr0Exp+=i*1000.
5925 self.assertTrue(fPart.getMesh().isEqual(m0Part,1e-12))
5926 self.assertTrue(fPart.getArray().isEqual(arr0Exp,1e-12))
5927 self.assertEqual(fPart.getTime(),list(tt))
5932 def testSymmetryPlusAggregationMFD1(self):
5933 """ Testing of MEDFileData::Aggregate and MEDFileUMesh::Aggregate and MEDFileUMesh::getAllDistributionOfType """
5934 fname1="Pyfile106_1.med"
5935 fname2="Pyfile106_2.med"
5936 fname3="Pyfile106_3.med"
5939 da1=DataArrayDouble([1,2,10,3,4,11,5,6,12,7,8,13],4,3) ; da1.setInfoOnComponents(["aa [m]","bbb [kg]","cccc [MW]"])
5941 mm1_0=MEDCouplingUMesh(meshName,3) ; mm1_0.allocateCells()
5942 mm1_0.setCoords(da1)
5943 mm1_0.insertNextCell(NORM_TETRA4,[0,1,2,3])
5944 mm1_0.insertNextCell(NORM_TETRA4,[4,5,6,7])
5945 mm1_0.insertNextCell(NORM_PENTA6,[8,9,10,11,12,13])
5946 mm1_0.insertNextCell(NORM_PENTA6,[14,15,16,17,18,19])
5947 mm1_0.insertNextCell(NORM_PENTA6,[20,21,22,23,24,25])
5949 mm1.setFamilyFieldArr(0,DataArrayInt([1,2,3,4,5]))
5950 mm1.setRenumFieldArr(0,DataArrayInt([11,12,13,14,15]))
5952 mm1_1=MEDCouplingUMesh(meshName,2) ; mm1_1.allocateCells()
5953 mm1_1.setCoords(da1)
5954 mm1_1.insertNextCell(NORM_TRI3,[0,1,2])
5955 mm1_1.insertNextCell(NORM_TRI3,[3,4,5])
5956 mm1_1.insertNextCell(NORM_QUAD4,[6,7,8,9])
5957 mm1_1.insertNextCell(NORM_QUAD4,[10,11,12,13])
5958 mm1_1.insertNextCell(NORM_QUAD4,[14,15,16,17])
5959 mm1_1.insertNextCell(NORM_QUAD4,[18,19,20,21])
5961 mm1.setFamilyFieldArr(-1,DataArrayInt([6,7,8,9,10,11]))
5962 mm1.setRenumFieldArr(-1,DataArrayInt([16,17,18,19,20,21]))
5963 for i in range(1,10):
5964 mm1.setFamilyId("F%d"%i,i)
5965 mm1.setFamilyId("FAMILLE_ZERO",0)
5966 mm1.setFamilyId("H1",100)
5967 mm1.setFamiliesOnGroup("myGRP",["F2","F6"])
5968 mm1.setFamiliesOnGroup("myGRP1",["F2","F6"])
5969 mm1.setFamilyFieldArr(1,DataArrayInt([12,13,14,15]))
5970 mm1.setRenumFieldArr(1,DataArrayInt([22,23,24,25]))
5973 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]"])
5975 mm2_0=MEDCouplingUMesh(meshName,3) ; mm2_0.allocateCells()
5976 mm2_0.setCoords(da1)
5977 mm2_0.insertNextCell(NORM_TETRA4,[100,101,102,103])
5978 mm2_0.insertNextCell(NORM_TETRA4,[104,105,106,107])
5979 mm2_0.insertNextCell(NORM_TETRA4,[108,109,110,111])
5980 mm2_0.insertNextCell(NORM_PENTA6,[112,113,114,115,116,117])
5982 mm2.setFamilyFieldArr(0,DataArrayInt([40,41,42,43]))
5983 mm2.setRenumFieldArr(0,DataArrayInt([50,51,52,53]))
5985 mm2_1=MEDCouplingUMesh(meshName,2) ; mm2_1.allocateCells()
5986 mm2_1.setCoords(da1)
5987 mm2_1.insertNextCell(NORM_TRI3,[100,101,102])
5988 mm2_1.insertNextCell(NORM_TRI3,[103,104,105])
5989 mm2_1.insertNextCell(NORM_TRI3,[106,107,108])
5990 mm2_1.insertNextCell(NORM_QUAD4,[109,110,111,112])
5991 mm2_1.insertNextCell(NORM_QUAD4,[113,114,115,116])
5992 mm2_1.insertNextCell(NORM_QUAD4,[117,118,119,120])
5993 mm2_1.insertNextCell(NORM_QUAD4,[121,122,123,124])
5994 mm2_1.insertNextCell(NORM_QUAD4,[125,126,127,128])
5996 mm2.setFamilyFieldArr(-1,DataArrayInt([200,201,202,203,204,205,206,207]))
5997 mm2.setRenumFieldArr(-1,DataArrayInt([300,301,302,303,304,305,306,307]))
5998 for i in range(1,12):
5999 mm2.setFamilyId("G%d"%i,i+30)
6000 mm2.setFamilyId("H1",100)
6001 mm2.setFamilyId("FAMILLE_ZERO",0)
6002 mm2.setFamiliesOnGroup("myGRP",["G2","G6"])
6003 mm2.setFamiliesOnGroup("myGRP2",["G4","G7"])
6004 mm2.setFamilyFieldArr(1,DataArrayInt([112,113,114,115,116]))
6005 mm2.setRenumFieldArr(1,DataArrayInt([122,123,124,125,126]))
6007 mm=MEDFileUMesh.Aggregate([mm1,mm2])
6009 def CheckMesh(tester,mm):
6010 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]"])
6011 tester.assertTrue(mm.getCoords().isEqual(cooExp,1e-12))
6012 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])))
6013 tester.assertTrue(mm[0].getNodalConnectivityIndex().isEqual(DataArrayInt([0,5,10,15,20,25,32,39,46,53])))
6014 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])))
6015 tester.assertTrue(mm[-1].getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8,12,16,20,25,30,35,40,45,50,55,60,65])))
6016 tester.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([1,2,40,41,42,3,4,5,43])))
6017 tester.assertTrue(mm.getNumberFieldAtLevel(0).isEqual(DataArrayInt([11,12,50,51,52,13,14,15,53])))
6018 tester.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(DataArrayInt([6,7,200,201,202,8,9,10,11,203,204,205,206,207])))
6019 tester.assertTrue(mm.getNumberFieldAtLevel(-1).isEqual(DataArrayInt([16,17,300,301,302,18,19,20,21,303,304,305,306,307])))
6020 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)]
6021 tester.assertEqual(set(mm.getFamiliesNames()),set([elt[0] for elt in refFamIds]))
6022 tester.assertEqual(set([mm.getFamilyId(elt) for elt in mm.getFamiliesNames()]),set([elt[1] for elt in refFamIds]))
6023 tester.assertEqual(mm.getGroupsNames(),('myGRP','myGRP1','myGRP2'))
6024 tester.assertEqual(mm.getAllDistributionOfTypes(),[(NORM_TRI3,5),(NORM_QUAD4,9),(NORM_TETRA4,5),(NORM_PENTA6,4),(NORM_ERROR,9)])
6031 infoc=["dd [W]","eee [kA]"]
6033 fmts1=MEDFileFieldMultiTS()
6034 f1ts1=MEDFileField1TS()
6035 f1_1=MEDCouplingFieldDouble(ON_CELLS) ; f1_1.setMesh(mm1[0]) ; f1_1.setName(fieldName)
6036 arr1=DataArrayDouble([(10,110),(11,111),(12,112),(13,113),(14,114)])
6037 arr1.setInfoOnComponents(infoc)
6038 f1_1.setArray(arr1) ; f1_1.setTime(*t1) ; f1_1.setTimeUnit("ms")
6039 f1_1.checkConsistencyLight()
6040 f1ts1.setFieldNoProfileSBT(f1_1)
6042 f1_2=MEDCouplingFieldDouble(ON_CELLS) ; f1_2.setMesh(mm1[-1]) ; f1_2.setName(fieldName)
6043 arr2=DataArrayDouble([(15,115),(16,116),(17,117),(18,118),(19,119),(20,120)])
6044 arr2.setInfoOnComponents(infoc)
6045 f1_2.setArray(arr2) ; f1_2.setTime(*t1) ; f1_2.setTimeUnit("ms")
6046 f1_2.checkConsistencyLight()
6047 f1ts1.setFieldNoProfileSBT(f1_2)
6048 f1_3=MEDCouplingFieldDouble(ON_NODES) ; f1_3.setMesh(mm1[0]) ; f1_3.setName(fieldName)
6049 arr3=DataArrayDouble([(21,121),(22,122),(23,123),(24,124)])
6050 arr3.setInfoOnComponents(infoc)
6051 f1_3.setArray(arr3) ; f1_3.setTime(*t1) ; f1_3.setTimeUnit("ms")
6052 f1_3.checkConsistencyLight()
6053 f1ts1.setFieldNoProfileSBT(f1_3)
6054 fmts1.pushBackTimeStep(f1ts1)
6056 f1ts2=f1ts1.deepCopy()
6057 f1ts2.setTime(t2[1],t2[2],t2[0])
6058 f1ts2.getUndergroundDataArray()[:]+=2000
6059 fmts1.pushBackTimeStep(f1ts2)
6061 fmts2=MEDFileFieldMultiTS()
6062 f1ts3=MEDFileField1TS()
6063 f2_1=MEDCouplingFieldDouble(ON_CELLS) ; f2_1.setMesh(mm2[0]) ; f2_1.setName(fieldName)
6064 arr4=DataArrayDouble([(50,150),(51,151),(52,152),(53,153)])
6065 arr4.setInfoOnComponents(infoc)
6066 f2_1.setArray(arr4) ; f2_1.setTime(*t1) ; f2_1.setTimeUnit("ms")
6067 f2_1.checkConsistencyLight()
6068 f1ts3.setFieldNoProfileSBT(f2_1)
6069 f2_2=MEDCouplingFieldDouble(ON_CELLS) ; f2_2.setMesh(mm2[-1]) ; f2_2.setName(fieldName)
6070 arr5=DataArrayDouble([(54,154),(55,155),(56,156),(57,157),(158,158),(59,159),(60,160),(61,161)])
6071 arr5.setInfoOnComponents(infoc)
6072 f2_2.setArray(arr5) ; f2_2.setTime(*t1) ; f2_2.setTimeUnit("ms")
6073 f2_2.checkConsistencyLight()
6074 f1ts3.setFieldNoProfileSBT(f2_2)
6075 f2_3=MEDCouplingFieldDouble(ON_NODES) ; f2_3.setMesh(mm2[0]) ; f2_3.setName(fieldName)
6076 arr6=DataArrayDouble([(62,162),(63,163),(64,164),(65,165),(66,166)])
6077 arr6.setInfoOnComponents(infoc)
6078 f2_3.setArray(arr6) ; f2_3.setTime(*t1) ; f2_3.setTimeUnit("ms")
6079 f2_3.checkConsistencyLight()
6080 f1ts3.setFieldNoProfileSBT(f2_3)
6081 fmts2.pushBackTimeStep(f1ts3)
6083 f1ts4=f1ts3.deepCopy()
6084 f1ts4.setTime(t2[1],t2[2],t2[0])
6085 f1ts4.getUndergroundDataArray()[:]+=2000
6086 fmts2.pushBackTimeStep(f1ts4)
6089 mfd1.setMeshes(MEDFileMeshes())
6090 mfd1.getMeshes().pushMesh(mm1)
6091 mfd1.setFields(MEDFileFields())
6092 mfd1.getFields().pushField(fmts1)
6095 mfd2.setMeshes(MEDFileMeshes())
6096 mfd2.getMeshes().pushMesh(mm2)
6097 mfd2.setFields(MEDFileFields())
6098 mfd2.getFields().pushField(fmts2)
6100 mfd=MEDFileData.Aggregate([mfd1,mfd2])
6101 def CheckMFD(tester,mfd):
6102 tester.assertEqual(len(mfd.getMeshes()),1)
6103 tester.assertEqual(len(mfd.getFields()),1)
6104 CheckMesh(self,mfd.getMeshes()[0])
6105 tester.assertEqual(len(mfd.getFields()[0]),2)
6106 zeF1=mfd.getFields()[0][0]
6107 zeF1_1=zeF1.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
6108 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
6109 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
6110 ref.renumberCells(o2n)
6111 tester.assertTrue(ref.isEqual(zeF1_1,1e-12,1e-12))
6112 zeF1_2=zeF1.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
6113 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
6114 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
6115 ref.renumberCells(o2n)
6116 tester.assertTrue(ref.isEqual(zeF1_2,1e-12,1e-12))
6117 zeF1_3=zeF1.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
6118 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
6119 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
6120 ref.renumberCells(o2n)
6121 tester.assertTrue(ref.isEqual(zeF1_3,1e-12,1e-12))
6123 zeF2=mfd.getFields()[0][1]
6124 zeF2_1=zeF2.getFieldOnMeshAtLevel(ON_CELLS,0,mfd.getMeshes()[0])
6125 ref=MEDCouplingFieldDouble.MergeFields([f1_1,f2_1])
6126 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
6127 ref.renumberCells(o2n)
6128 ref.setTime(*t2) ; ref.getArray()[:]+=2000
6129 tester.assertTrue(ref.isEqual(zeF2_1,1e-12,1e-12))
6130 zeF2_2=zeF2.getFieldOnMeshAtLevel(ON_CELLS,-1,mfd.getMeshes()[0])
6131 ref=MEDCouplingFieldDouble.MergeFields([f1_2,f2_2])
6132 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
6133 ref.renumberCells(o2n)
6134 ref.setTime(*t2) ; ref.getArray()[:]+=2000
6135 tester.assertTrue(ref.isEqual(zeF2_2,1e-12,1e-12))
6136 zeF2_3=zeF2.getFieldOnMeshAtLevel(ON_NODES,0,mfd.getMeshes()[0])
6137 ref=MEDCouplingFieldDouble.MergeFields([f1_3,f2_3])
6138 o2n=ref.getMesh().deepCopy().sortCellsInMEDFileFrmt()
6139 ref.renumberCells(o2n)
6140 ref.setTime(*t2) ; ref.getArray()[:]+=2000
6141 tester.assertTrue(ref.isEqual(zeF2_3,1e-12,1e-12))
6143 mfd1.write(fname1,2) ; mfd2.write(fname2,2)
6144 mfd=MEDFileData.Aggregate([MEDFileData(fname1),MEDFileData(fname2)])
6149 def testAggregateWithGroups(self):
6150 """ Testing MEDFileUMesh::Aggretate when groups are present. """
6151 def generate(grp_name, offset):
6152 coo = DataArrayDouble([0., 1., 2.])
6154 m = MEDCouplingCMesh("toto")
6155 m.setCoords(coo, coo)
6156 m = m.buildUnstructured()
6157 mu = MEDFileUMesh.New()
6158 mu.setMeshAtLevel(0, m)
6159 g = DataArrayInt([0])
6161 g2 = DataArrayInt([1])
6162 g2.setName("common") # make a common group for all meshes being merged
6163 mu.setGroupsAtLevel(0, [g, g2])
6166 m1 = generate("A", 0.)
6167 m2 = generate("B", 2.)
6168 mm = MEDFileUMesh.Aggregate([m1,m2])
6170 self.assertEqual(mm.getFamilyFieldAtLevel(0).getValues(), [-2, -3, -1, -1, -4, -5, -1, -1])
6171 self.assertEqual(mm.getNumberFieldAtLevel(0), None)
6172 refFamIds=[('Family_-1',-1),('Family_-2',-2),('Family_-3',-3), ('Family_-4',-4), ('Family_-5',-5)]
6173 self.assertEqual(set(mm.getFamiliesNames()),set([elt[0] for elt in refFamIds]))
6174 self.assertEqual(set([mm.getFamilyId(elt) for elt in mm.getFamiliesNames()]),set([elt[1] for elt in refFamIds]))
6175 self.assertEqual(mm.getGroupsNames(),('A','B', 'common'))
6176 self.assertEqual(mm.getGroupArr(0, 'A').getValues(), [0])
6177 self.assertEqual(mm.getGroupArr(0, 'B').getValues(), [4])
6178 self.assertEqual(mm.getGroupArr(0, 'common').getValues(), [1,5])
6183 def testExtrudedMesh1(self):
6184 fname="Pyfile107.med"
6185 arrX=DataArrayDouble([0,1,2,3]) ; arrY=DataArrayDouble([0,1,2,3,4]) ; arrZ=DataArrayDouble([0,1,2,3,4,5])
6186 mesh3D=MEDCouplingCMesh() ; mesh3D.setCoords(arrX,arrY,arrZ) ; mesh3D.setName("mesh")
6187 ex=MEDCouplingMappedExtrudedMesh(mesh3D)
6190 ex2=mm.convertToExtrudedMesh()
6191 mm2=MEDFileMesh.New(fname)
6192 ex3=mm2.convertToExtrudedMesh()
6193 self.assertTrue(ex.isEqual(ex2,1e-12))
6194 self.assertTrue(ex.isEqual(ex3,1e-12))
6197 @unittest.skipUnless(LooseVersion(MEDFileVersionStr())>=LooseVersion('3.2.1'),"This test requires at least MEDFile version 3.2.1")
6199 def testWriteInto30(self):
6200 fname="Pyfile108.med"
6201 fname2="Pyfile109.med"
6202 m=MEDCouplingUMesh("mesh",1) ; m.setCoords(DataArrayDouble([0,0,1,1],2,2)) ; m.allocateCells() ; m.insertNextCell(NORM_SEG2,[1,0])
6203 mm=MEDFileUMesh() ; mm[0]=m
6204 mm.setFamilyId("FAMILLE_ZERO",0)
6207 assert(LooseVersion(MEDFileVersionOfFileStr(fname)).version[:2]==[3,3]) # checks that just written MED file has a version == 3.0.x
6208 mm2=MEDFileUMesh(fname)
6209 self.assertTrue(mm.isEqual(mm2,1e-12))
6212 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
6215 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
6217 def testPickelizationOfMEDFileObjects1(self):
6218 fname="Pyfile110.med"
6219 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)
6220 m0=MEDCouplingUMesh("Mesh",2)
6222 m0.insertNextCell(NORM_TRI3,[1,4,2])
6223 m0.insertNextCell(NORM_TRI3,[4,5,2])
6224 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
6225 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
6226 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
6227 m0.finishInsertingCells()
6229 m1=MEDCouplingUMesh(m0.getName(),1)
6231 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
6233 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
6235 m1.finishInsertingCells()
6239 m.setMeshAtLevel(0,m0)
6240 m.setMeshAtLevel(-1,m1)
6242 dt=3 ; it=2 ; tim=4.5
6243 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
6244 fieldNode0.setName("fieldNode0")
6245 fieldNode0.setTime(tim,dt,it)
6246 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
6247 arr=DataArrayDouble([10,11,12,13,14])
6248 fieldNode0.setArray(arr)
6249 f0=MEDFileField1TS()
6250 f0.setFieldProfile(fieldNode0,m,0,pfl0)
6251 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
6252 fieldNode1.setName("fieldNode1")
6253 fieldNode1.setTime(tim,dt,it)
6254 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
6255 arr1=DataArrayDouble([20,21,22,23,24,25,26])
6256 fieldNode1.setArray(arr1)
6257 f1=MEDFileField1TS()
6258 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
6260 mfd.setMeshes(MEDFileMeshes()) ; mfd.setFields(MEDFileFields())
6261 mfd.getMeshes().pushMesh(m)
6262 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(f0)
6263 mfd.getFields().pushField(fmts)
6264 # first start gently
6267 self.assertEqual(len(mfd2.getMeshes()),1)
6268 self.assertEqual(len(mfd2.getFields()),1)
6269 self.assertEqual(len(mfd2.getFields()[0]),1)
6270 self.assertTrue(mfd2.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
6271 ff2=mfd2.getFields()[0][0].field(mfd2.getMeshes()[0])
6272 ff =mfd.getFields()[0][0].field(mfd.getMeshes()[0])
6273 self.assertTrue(ff2.isEqual(ff,1e-12,1e-12))
6274 # OK now end of joke -> serialization of MEDFileData
6275 st=pickle.dumps(mfd,pickle.HIGHEST_PROTOCOL)
6276 mfd3=pickle.loads(st)
6278 self.assertEqual(len(mfd3.getMeshes()),1)
6279 self.assertEqual(len(mfd3.getFields()),1)
6280 self.assertEqual(len(mfd3.getFields()[0]),1)
6281 self.assertTrue(mfd3.getMeshes()[0].isEqual(mfd.getMeshes()[0],1e-12))
6282 ff3=mfd3.getFields()[0][0].field(mfd3.getMeshes()[0])
6283 self.assertTrue(ff3.isEqual(ff,1e-12,1e-12))
6284 # serialization of MEDFileFields
6285 st=pickle.dumps(mfd.getFields(),pickle.HIGHEST_PROTOCOL)
6286 fs4=pickle.loads(st)
6287 ff4=fs4[0][0].field(mfd3.getMeshes()[0])
6288 self.assertTrue(ff4.isEqual(ff,1e-12,1e-12))
6289 # serialization of MEDFileFieldMulitTS
6290 st=pickle.dumps(mfd.getFields()[0],pickle.HIGHEST_PROTOCOL)
6291 fmts5=pickle.loads(st)
6292 ff5=fmts5[0].field(mfd3.getMeshes()[0])
6293 self.assertTrue(ff5.isEqual(ff,1e-12,1e-12))
6294 # serialization of MEDFileField1TS
6295 st=pickle.dumps(mfd.getFields()[0][0],pickle.HIGHEST_PROTOCOL)
6296 f1ts6=pickle.loads(st)
6297 ff6=f1ts6.field(mfd3.getMeshes()[0])
6298 self.assertTrue(ff6.isEqual(ff,1e-12,1e-12))
6299 # serialization of MEDFileMeshes
6300 st=pickle.dumps(mfd.getMeshes(),pickle.HIGHEST_PROTOCOL)
6301 ms7=pickle.loads(st)
6302 self.assertEqual(len(ms7),1)
6303 self.assertTrue(ms7[0].isEqual(mfd.getMeshes()[0],1e-12))
6306 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
6308 def testPickelizationOfMEDFileObjects2(self):
6310 self.internalMEDMesh6() # generates MEDFileMesh5.med file
6311 mm=MEDFileMesh.New("MEDFileMesh5.med")
6312 self.assertTrue(isinstance(mm,MEDFileCMesh))
6313 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
6314 mm2=pickle.loads(st)
6315 self.assertTrue(isinstance(mm2,MEDFileCMesh))
6316 self.assertTrue(mm.getMesh().isEqual(mm2.getMesh(),1e-12))
6318 self.internalCurveLinearMesh1() # generates Pyfile55.med
6319 mm=MEDFileMesh.New("Pyfile55.med")
6320 self.assertTrue(isinstance(mm,MEDFileCurveLinearMesh))
6321 st=pickle.dumps(mm,pickle.HIGHEST_PROTOCOL)
6322 mm3=pickle.loads(st)
6323 self.assertTrue(isinstance(mm3,MEDFileCurveLinearMesh))
6324 self.assertTrue(mm.getMesh().isEqual(mm3.getMesh(),1e-12))
6325 self.internalInt32InMEDFileFieldStar1()# generates Pyfile63.med
6326 # MEDFileIntFieldMultiTS
6327 fs4=MEDFileFields("Pyfile63.med")
6328 ms4=MEDFileMeshes("Pyfile63.med")
6329 self.assertTrue(isinstance(fs4[0],MEDFileIntFieldMultiTS))
6330 st=pickle.dumps(fs4[0],pickle.HIGHEST_PROTOCOL)
6331 fmts5=pickle.loads(st)
6332 self.assertEqual(len(fs4[0]),len(fmts5))
6333 self.assertTrue(isinstance(fmts5,MEDFileIntFieldMultiTS))
6334 self.assertTrue(fmts5[0].field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
6335 # MEDFileIntField1TS
6336 st=pickle.dumps(fs4[0][0],pickle.HIGHEST_PROTOCOL)
6337 f1ts6=pickle.loads(st)
6338 self.assertTrue(isinstance(f1ts6,MEDFileIntField1TS))
6339 self.assertTrue(f1ts6.field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
6341 self.internalParameters1()# generates Pyfile56.med
6342 params=MEDFileParameters("Pyfile56.med")
6343 st=pickle.dumps(params,pickle.HIGHEST_PROTOCOL)
6344 params7=pickle.loads(st)
6345 self.assertEqual(len(params),len(params7))
6346 for i in range(len(params)):
6347 self.assertTrue(params[i].isEqual(params7[i],1e-12)[0])
6352 def testGlobalNumOnNodes1(self):
6353 """Test global number on nodes here. Used by partitionners."""
6354 fname="Pyfile112.med"
6355 arr=DataArrayDouble(5) ; arr.iota()
6356 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
6360 self.assertTrue(not mm.getGlobalNumFieldAtLevel(1))
6361 d=DataArrayInt([7,8,9,2,0])
6363 mm.setGlobalNumFieldAtLevel(1,d)
6364 mm.checkConsistency()
6365 self.assertRaises(InterpKernelException,mm.setGlobalNumFieldAtLevel,1,d[::2])
6366 mm.checkConsistency()
6367 self.assertEqual(d.getHiddenCppPointer(),mm.getGlobalNumFieldAtLevel(1).getHiddenCppPointer())
6368 self.assertTrue(mm.getGlobalNumFieldAtLevel(1).isEqual(dRef))
6370 mm2=MEDFileMesh.New(fname)
6371 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
6372 self.assertTrue(mm2.getGlobalNumFieldAtLevel(1).isEqual(dRef))
6373 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,10)
6374 self.assertTrue(not mm.isEqual(mm2,1e-12)[0])
6375 mm2.getGlobalNumFieldAtLevel(1).setIJ(0,0,7)
6376 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
6380 def testPartialReadOfEntities1(self):
6381 """Test for advanced API on read to speed up read phase for users with "huge" number of time steps (more than 10 000)."""
6382 fname="Pyfile113.med"
6383 arr=DataArrayDouble(5) ; arr.iota()
6384 m=MEDCouplingUMesh.Build1DMeshFromCoords(arr)
6391 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName(fieldName)
6392 f1.setArray(DataArrayDouble([0.,0.1,0.2,0.3,0.4]))
6394 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setMesh(m) ; f2.setName(fieldName)
6395 f2.setArray(DataArrayDouble([1.,1.1,1.2,1.3]))
6397 f1ts=MEDFileField1TS()
6398 f1ts.setFieldNoProfileSBT(f1)
6399 f1ts.setFieldNoProfileSBT(f2)
6400 self.assertEqual(set(f1ts.getTypesOfFieldAvailable()),set([ON_NODES,ON_CELLS]))
6401 f1ts_2=f1ts.deepCopy()
6402 f1ts_2.getUndergroundDataArray()[:]+=2
6403 f1ts_2.setTime(3,4,6.)
6404 fmts=MEDFileFieldMultiTS()
6405 fmts.pushBackTimeStep(f1ts)
6406 fmts.pushBackTimeStep(f1ts_2)
6411 ent=MEDFileEntities.BuildFrom([(ON_NODES,NORM_ERROR)])
6412 mm=MEDFileMesh.New(fname)
6413 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)
6415 self.assertEqual(len(fs),1)
6417 self.assertEqual(len(fmts),2)
6418 ff0=fmts[0] ; ff1=fmts[1]
6419 self.assertEqual(ff0.getTypesOfFieldAvailable(),[ON_NODES]) # only NODES have been loaded
6420 self.assertTrue(ff0.field(mm).isEqual(f1,1e-12,1e-12))
6421 f3=f1.deepCopy() ; f3+=2. ; f3.setTime(6.,3,4)
6422 self.assertTrue(ff1.field(mm).isEqual(f3,1e-12,1e-12))
6426 def testFloat32InMEDFileFieldStar1(self):
6427 """Like testInt32InMEDFileFieldStar1 but with float32 :)"""
6428 fname="Pyfile114.med"
6429 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
6430 f1=f1.convertToFloatField()
6432 mm1=MEDFileUMesh.New()
6433 mm1.setCoords(m1.getCoords())
6434 mm1.setMeshAtLevel(0,m1)
6435 mm1.setName(m1.getName())
6437 ff1=MEDFileFloatField1TS()
6438 ff1.setFieldNoProfileSBT(f1)
6439 a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
6440 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6441 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6443 a,b=ff1.getUndergroundDataArrayExt()
6444 self.assertEqual(a.getHiddenCppPointer(),ff1.getUndergroundDataArray().getHiddenCppPointer())
6445 self.assertEqual(b,[((3,0),(0,2)),((4,0),(2,4)),((6,0),(4,5)),((5,0),(5,6))])
6446 ff2=MEDFileAnyTypeField1TS.New(fname)
6447 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
6448 self.assertEqual(ff2.getTime(),[0,1,2.0])
6449 self.assertTrue(isinstance(ff2,MEDFileFloatField1TS))
6450 a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6451 self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6452 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6454 c=ff2.getUndergroundDataArray() ; c*=2
6455 ff2.write(fname,0) # 2 time steps in
6456 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
6457 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
6458 self.assertEqual(len(ffs1),2)
6459 self.assertTrue(isinstance(ffs1,MEDFileFloatFieldMultiTS))
6460 a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6461 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6462 a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
6463 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
6464 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
6465 a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
6466 self.assertTrue(a.getArray().isEqual(2*f1.getArray(),1e-7))
6467 f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
6468 self.assertTrue(a.isEqual(f1,1e-12,1e-12)) ; f1.getArray()[:]/=2
6469 bc=DataArrayFloat(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
6471 a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
6474 self.assertTrue(bc.isEqual(3*f1.getArray(),1e-7))
6475 nf1=MEDCouplingFieldFloat(ON_NODES)
6476 nf1.setTime(9.,10,-1)
6477 nf1.setMesh(f1.getMesh())
6478 narr=DataArrayFloat(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
6479 nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
6480 nff1=MEDFileFloatField1TS.New()
6481 nff1.setFieldNoProfileSBT(nf1)
6482 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
6483 self.assertEqual(nff1.getTime(),[10,-1,9.0])
6486 nf2=MEDCouplingFieldFloat(ON_NODES)
6487 nf2.setTime(19.,20,-11)
6488 nf2.setMesh(f1.getMesh())
6489 narr2=DataArrayFloat(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
6490 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
6491 nff2=MEDFileFloatField1TS.New()
6492 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
6493 nff2.setFieldProfile(nf2,mm1,0,npfl)
6494 nff2.getFieldWithProfile(ON_NODES,0,mm1)
6495 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
6496 self.assertTrue(b.isEqual(npfl))
6497 self.assertTrue(a.isEqual(narr2,1e-7))
6499 nff2bis=MEDFileFloatField1TS(fname,"VectorFieldOnNodesPfl")
6500 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
6501 self.assertTrue(b.isEqual(npfl))
6502 self.assertTrue(a.isEqual(narr2,1e-7))
6504 nf3=MEDCouplingFieldDouble(ON_NODES)
6505 nf3.setName("VectorFieldOnNodesDouble")
6506 nf3.setTime(29.,30,-21)
6507 nf3.setMesh(f1.getMesh())
6508 nf3.setArray(f1.getMesh().getCoords())
6509 nff3=MEDFileField1TS.New()
6510 nff3.setFieldNoProfileSBT(nf3)
6512 fs=MEDFileFields(fname)
6513 self.assertEqual(len(fs),4)
6514 ffs=[it for it in fs]
6515 self.assertTrue(isinstance(ffs[0],MEDFileFloatFieldMultiTS))
6516 self.assertTrue(isinstance(ffs[1],MEDFileFloatFieldMultiTS))
6517 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
6518 self.assertTrue(isinstance(ffs[3],MEDFileFloatFieldMultiTS))
6520 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray(),1e-7))
6521 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray(),1e-7))
6522 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2,1e-7))
6523 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr,1e-7))
6524 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
6526 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
6527 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
6528 self.assertRaises(InterpKernelException,MEDFileFloatFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
6529 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
6530 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
6531 self.assertRaises(InterpKernelException,MEDFileFloatField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
6532 MEDFileFloatField1TS.New(fname,"VectorFieldOnNodes",10,-1)
6533 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
6535 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
6536 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
6537 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
6538 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
6542 def testPenta18_1(self):
6543 """EDF8478 : Test of read/write of penta18"""
6544 fname="Pyfile115.med"
6545 arr=DataArrayDouble([
6546 (0.,1.,1.),(0.,0.,1.),(1.,0.,1.),
6547 (0.,1.,0.),(0.,0.,0.),(1.,0.,0.),
6548 (0.,0.5,1.),(0.5,0.,1.),(0.5,0.5,1.),
6549 (0.,0.5,0.),(0.5,0.,0.),(0.5,0.5,0.),
6550 (0.,1.,0.5),(0.,0.,0.5),(1.,0.,0.5),
6551 (0.,0.5,0.5),(0.5,0.,0.5),(0.5,0.5,0.5)])
6552 m=MEDCouplingUMesh("mesh",3)
6555 m.insertNextCell(NORM_PENTA18,list(range(18)))
6556 m.checkConsistencyLight()
6558 f=MEDCouplingFieldDouble(ON_NODES)
6560 f.setName("FieldOnPenta18")
6561 f.setArray(DataArrayDouble(list(range(18))))
6562 f.checkConsistencyLight()
6564 m2,d,di,rd,rdi=m.buildDescendingConnectivity()
6566 f2=MEDCouplingFieldDouble(ON_NODES)
6568 f2.setName("FieldOnPenta18Sub")
6569 f2.setArray(DataArrayDouble(list(range(18))))
6570 f2.checkConsistencyLight()
6571 WriteField(fname,f2,True)
6573 self.assertTrue(f2.isEqual(f3,1e-12,1e-12))
6574 self.assertEqual(f3.getMesh().getNumberOfCells(),1)
6575 self.assertEqual(f3.getMesh().getTypeOfCell(0),NORM_PENTA18)
6579 def testFieldsLinearToQuadratic(self):
6580 fname="Pyfile117.med"
6581 arr=DataArrayDouble([0,1])
6582 m=MEDCouplingCMesh();
6583 m.setCoords(arr,arr,arr)
6584 m=m.buildUnstructured()
6586 m2.translate([2,0,0])
6587 m3=MEDCouplingUMesh.MergeUMeshes([m,m2])
6591 mmq=mm.linearToQuadratic(0)
6592 mms=MEDFileMeshes() ; mms.pushMesh(mm)
6593 mmsq=MEDFileMeshes() ; mmsq.pushMesh(mmq)
6595 f=MEDCouplingFieldDouble(ON_NODES)
6599 arr=DataArrayDouble(m3.getNumberOfNodes())
6602 f1ts=MEDFileField1TS()
6603 f1ts.setFieldNoProfileSBT(f)
6604 fmts=MEDFileFieldMultiTS()
6605 fmts.pushBackTimeStep(f1ts)
6606 f1ts_2=f1ts.deepCopy()
6607 f1ts_2.setTime(3,4,5.)
6608 f1ts_2.getUndergroundDataArray()[:]*=2.
6609 fmts.pushBackTimeStep(f1ts_2)
6612 fs2=fs.linearToQuadratic(mms,mmsq)
6613 self.myTester1(fs2,mmsq[0])
6614 # A small Write/Read and test again
6615 mms.write(fname,2) ; fs.write(fname,0)
6616 mms=MEDFileMeshes(fname) ; fs=MEDFileFields(fname)
6617 mmq=mms[0].linearToQuadratic(0) ; mmqs=MEDFileMeshes() ; mmqs.pushMesh(mmq)
6618 fs2=fs.linearToQuadratic(mms,mmqs)
6619 self.myTester1(fs2,mmqs[0])
6622 def myTester1(self,fs2,mmq):
6623 dataExp=DataArrayDouble([0.,0.,0.,1.,0.,0.,0.,1.,0.,1.,1.,0.,0.,0.,1.,1.,0.,1.,0.,1.,1.,1.,1.,1.,2.,0.,0.,3.,0.,0.,2.,1.,0.,3.,1.,0.,2.,0.,1.,3.,0.,1.,2.,1.,1.,3.,1.,1.,0.5, 0.,0.,0.,0.5, 0.,0.5, 1.,0.,1.,0.5, 0.,0.5, 0.,1.,0.,0.5, 1.,0.5, 1.,1.,1.,0.5, 1.,1.,0.,0.5, 0.,0.,0.5, 0.,1.,0.5, 1.,1.,0.5, 2.5, 0.,0.,2.,0.5, 0.,2.5, 1.,0.,3.,0.5, 0.,2.5, 0.,1.,2.,0.5, 1.,2.5, 1.,1.,3.,0.5, 1.,3.,0.,0.5, 2.,0.,0.5, 2.,1.,0.5, 3.,1.,0.5],40,3)
6624 dataExp1=DataArrayInt([1,0,2,3,5,4,6,7,16,17,18,19,20,21,22,23,24,25,26,27,9,8,10,11,13,12,14,15,28,29,30,31,32,33,34,35,36,37,38,39])
6625 dataExp2=DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0.5,1,2.5,2,4.5,5,6.5,6,3,2,4,5,8.5,9,10.5,10,12.5,13,14.5,14,11,10,12,13])
6626 fToTest=fs2[0][0].field(mmq)
6627 self.assertEqual(fToTest.getTime(),[3.,1,2])
6628 mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
6629 self.assertTrue(mTest.getNodalConnectivity().isEqual(dataExp1))
6630 self.assertTrue(mTest.getCoords().isEqual(dataExp,1e-12))
6631 self.assertTrue(fToTest.getArray().isEqual(dataExp2,1e-12))
6632 # testing 2nd timestep
6633 fToTest=fs2[0][1].field(mmq)
6634 self.assertEqual(fToTest.getTime(),[5.,3,4])
6635 mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
6636 self.assertTrue(mTest.getNodalConnectivity().isEqual(dataExp1))
6637 self.assertTrue(mTest.getCoords().isEqual(dataExp,1e-12))
6638 self.assertTrue(fToTest.getArray().isEqual(2*dataExp2,1e-12))
6642 def testFieldsLinearToQuadratic2(self):
6643 """Same than testFieldsLinearToQuadratic but with profile on NODES"""
6644 GeneratePyfile18(self)
6645 fname="Pyfile118.med"
6646 arr=DataArrayDouble([0,1])
6647 m=MEDCouplingCMesh();
6648 m.setCoords(arr,arr,arr)
6649 m=m.buildUnstructured()
6651 m2.translate([2,0,0])
6652 m3=MEDCouplingUMesh.MergeUMeshes([m,m2])
6654 # add a point for fun
6655 m3.setCoords(DataArrayDouble.Aggregate(m3.getCoords(),DataArrayDouble([1.5,1.5,1.5],1,3)))
6659 mmq=mm.linearToQuadratic(0)
6660 mms=MEDFileMeshes() ; mms.pushMesh(mm)
6661 mmsq=MEDFileMeshes() ; mmsq.pushMesh(mmq)
6663 f=MEDCouplingFieldDouble(ON_NODES)
6667 arr=DataArrayDouble(8) ; arr.iota()
6670 f1ts=MEDFileField1TS()
6671 pfl=DataArrayInt([8,9,10,11,12,13,14,15]) ; pfl.setName("pfl")
6672 f1ts.setFieldProfile(f,mm,0,pfl) # f lying on 8 nodes of cell #1
6673 f1ts_2=f1ts.deepCopy()
6674 f1ts_2.setTime(3,4,5.)
6675 f1ts_2.getUndergroundDataArray()[:]*=4.
6676 fmts=MEDFileFieldMultiTS()
6677 fmts.pushBackTimeStep(f1ts)
6678 fmts.pushBackTimeStep(f1ts_2)
6681 fs2=fs.linearToQuadratic(mms,mmsq)
6682 mms.write(fname,2) ; fs.write(fname,0)
6684 self.myTester2(fs2,mmq)
6686 mms=MEDFileMeshes(fname) ; fs=MEDFileFields(fname)
6687 mmq=mms[0].linearToQuadratic(0) ; mmqs=MEDFileMeshes() ; mmqs.pushMesh(mmq)
6688 fs2=fs.linearToQuadratic(mms,mmqs)
6689 self.myTester2(fs2,mmq)
6690 ## More vicious add single node 16
6693 mmq=mm.linearToQuadratic(0)
6694 mms=MEDFileMeshes() ; mms.pushMesh(mm)
6695 mmsq=MEDFileMeshes() ; mmsq.pushMesh(mmq)
6697 f=MEDCouplingFieldDouble(ON_NODES)
6701 arr=DataArrayDouble(9) ; arr.iota()
6704 f1ts=MEDFileField1TS()
6705 pfl=DataArrayInt([8,9,10,11,12,13,14,15,16]) ; pfl.setName("pfl")
6706 f1ts.setFieldProfile(f,mm,0,pfl) # f lying on 9 nodes of cell #1 + orphan node
6707 fmts=MEDFileFieldMultiTS()
6708 fmts.pushBackTimeStep(f1ts)
6711 fs2=fs.linearToQuadratic(mms,mmsq)
6713 pflExpected=DataArrayInt([8,9,10,11,12,13,14,15,16,29,30,31,32,33,34,35,36,37,38,39,40]) ; pflExpected.setName("pfl_NODE")
6714 f1tsToTest=fs2[0][0]
6715 exp1=DataArrayDouble([0,1,2,3,4,5,6,7,8,0.5,1,2.5,2,4.5,5,6.5,6,3,2,4,5])
6716 assert(f1tsToTest.getProfile("pfl_NODE").isEqual(pflExpected))
6717 assert(f1tsToTest.getUndergroundDataArray().isEqual(exp1,1e-12))
6718 assert(f1tsToTest.getFieldSplitedByType()==[(40,[(1,(0,21),'pfl_NODE','')])])
6721 def myTester2(self,fs2,mmq):
6722 pflExpected=DataArrayInt([8,9,10,11,12,13,14,15,29,30,31,32,33,34,35,36,37,38,39,40]) ; pflExpected.setName("pfl_NODE")
6723 f1tsToTest=fs2[0][0]
6724 exp1=DataArrayDouble([0,1,2,3,4,5,6,7,0.5,1,2.5,2,4.5,5,6.5,6,3,2,4,5])
6725 self.assertTrue(f1tsToTest.getProfile("pfl_NODE").isEqual(pflExpected))
6726 self.assertTrue(f1tsToTest.getUndergroundDataArray().isEqual(exp1,1e-12))
6727 self.assertEqual(f1tsToTest.getFieldSplitedByType(),[(NORM_ERROR,[(1,(0,20),'pfl_NODE','')])])
6728 fToTest=fs2[0][0].field(mmq)
6729 self.assertEqual(fToTest.getTime(),[3.,1,2])
6730 mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
6731 self.assertTrue(mTest.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19])))
6732 self.assertTrue(mTest.getCoords().isEqual(DataArrayDouble([(2,0,0),(3,0,0),(2,1,0),(3,1,0),(2,0,1),(3,0,1),(2,1,1),(3,1,1),(2.5,0,0),(2,0.5,0),(2.5,1,0),(3,0.5,0),(2.5,0,1),(2,0.5,1),(2.5,1,1),(3,0.5,1),(3,0,0.5),(2,0,0.5),(2,1,0.5),(3,1,0.5)],20,3),1e-12))
6733 self.assertTrue(fToTest.getArray().isEqual(exp1,1e-12))
6735 f1tsToTest=fs2[0][1]
6736 self.assertTrue(f1tsToTest.getProfile("pfl_NODE").isEqual(pflExpected))
6737 self.assertTrue(f1tsToTest.getUndergroundDataArray().isEqual(4*exp1,1e-12))
6738 self.assertEqual(f1tsToTest.getFieldSplitedByType(),[(NORM_ERROR,[(1,(0,20),'pfl_NODE','')])])
6739 fToTest=fs2[0][1].field(mmq)
6740 self.assertEqual(fToTest.getTime(),[5.,3,4])
6741 mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
6742 self.assertTrue(mTest.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19])))
6743 self.assertTrue(mTest.getCoords().isEqual(DataArrayDouble([(2,0,0),(3,0,0),(2,1,0),(3,1,0),(2,0,1),(3,0,1),(2,1,1),(3,1,1),(2.5,0,0),(2,0.5,0),(2.5,1,0),(3,0.5,0),(2.5,0,1),(2,0.5,1),(2.5,1,1),(3,0.5,1),(3,0,0.5),(2,0,0.5),(2,1,0.5),(3,1,0.5)],20,3),1e-12))
6744 self.assertTrue(fToTest.getArray().isEqual(4*exp1,1e-12))
6749 def testSetFieldProfileFlatly1(self):
6750 """ Sometimes for downstream code fan of profiles, profile are requested unconditionally. setFieldProfile try to reduce at most profile usage. So setFieldProfileFlatly has been added to always create
6752 arr=DataArrayDouble(10) ; arr.iota()
6753 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
6754 m=m.buildUnstructured()
6757 m=MEDCouplingUMesh.MergeUMeshes(m2,m)
6761 f=MEDCouplingFieldDouble(ON_CELLS)
6763 arr=DataArrayDouble(m.getNumberOfCells())
6767 pfl=DataArrayInt(m.getNumberOfCells()) ; pfl.iota() ; pfl.setName("pfl")
6769 refSp=[(3,[(0,(0,162),'','')]),(4,[(0,(162,243),'','')])]
6770 refSp1=[(3,[(0,(0,162),'pfl_NORM_TRI3','')]),(4,[(0,(162,243),'pfl_NORM_QUAD4','')])]
6772 f1ts=MEDFileField1TS()
6773 f1ts.setFieldProfile(f,mm,0,pfl)
6774 self.assertEqual(f1ts.getPfls(),()) # here setFieldProfile has detected useless pfl -> no pfl
6775 self.assertEqual(f1ts.getFieldSplitedByType(),refSp)
6776 self.assertTrue(f1ts.field(mm).isEqual(f,1e-12,1e-12)) # the essential
6778 f1ts=MEDFileField1TS()
6779 f1ts.setFieldProfileFlatly(f,mm,0,pfl) # no optimization attempt. Create pfl unconditionally
6780 self.assertEqual(f1ts.getPfls(),("%s_NORM_TRI3"%pfl.getName(),"%s_NORM_QUAD4"%pfl.getName()))
6781 self.assertEqual(f1ts.getFieldSplitedByType(),refSp1)
6782 self.assertTrue(f1ts.field(mm).isEqual(f,1e-12,1e-12)) # the essential
6783 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3").isIota(162))
6784 self.assertTrue(f1ts.getProfile("pfl_NORM_QUAD4").isIota(81))
6788 def testRmGroupAtSpeLevelAndMultiLevGrpCreation(self):
6789 """ Here multi level groups are created"""
6790 arr=DataArrayDouble(11) ; arr.iota()
6791 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
6792 m=m.buildUnstructured()
6794 m1=m.buildDescendingConnectivity()[0]
6799 grp0_0=DataArrayInt([0,1,2,6]) ; grp0_0.setName(grpName)
6800 grp0_1=DataArrayInt([0,1,2,7]) ; grp0_1.setName(grpName)
6801 grp1=DataArrayInt([1,2,3,5,6]) ; grp1.setName("grp1")
6802 grp2=DataArrayInt([2,3,5,8]) ; grp2.setName("grp2")
6803 ################ ajouter un groupe sur plusieurs niveau
6805 mm.addGroup(-1,grp2)
6806 mm.addGroup(0,grp0_0)
6807 mm.addGroup(-1,grp0_1)
6808 self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(0,-1))
6809 self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0))
6810 self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
6811 self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
6812 self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
6813 self.assertRaises(InterpKernelException,mm.addGroup,-1,grp0_1) # raise
6814 self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0))
6815 self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
6816 self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
6817 self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
6818 mm.removeGroupAtLevel(0,grpName)
6819 self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(-1,))
6820 self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
6821 self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
6822 self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
6823 mm.removeGroupAtLevel(-1,grpName)
6824 self.assertEqual(mm.getGrpNonEmptyLevels(grpName),())
6825 self.assertRaises(InterpKernelException,mm.removeGroupAtLevel,-2,grpName)
6826 mm.addGroup(-1,grp0_1)
6827 mm.addGroup(0,grp0_0)
6828 self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(0,-1))
6829 self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0))
6830 self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
6831 self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
6832 self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
6836 def testYutaka(self):
6837 """ Thank you to Yutaka Nishizawa for having report this bug. At level -1, adding a first group on all entities leads to a group lying on family 0...
6838 Then rearrange method removes unused entites by putting 0 on them -> Previously group has been modified by rearrange. Should not !"""
6840 m=MEDCouplingCMesh()
6841 arr=DataArrayDouble(4) ; arr.iota()
6842 m.setCoords(arr,arr,arr)
6843 m=m.buildUnstructured()
6846 m=m.buildUnstructured()
6847 m1=m.buildDescendingConnectivity()[0]
6853 grp0=DataArrayInt([0,1,2]) ; grp0.setName("grp0")
6855 grp1=DataArrayInt([3,4,5,6]) ; grp1.setName("grp1")
6857 grp2=DataArrayInt([7,8,9]) ; grp2.setName("grp2")
6859 grp3=DataArrayInt.Range(0,m1.getNumberOfCells(),1) ; grp3.setName("grp3")
6860 mm.addGroup(-1,grp3)
6861 self.assertNotIn(0,mm.getFamiliesIdsOnGroup("grp3")) # bug was here !
6862 grp4=DataArrayInt([3,5,8,10]) ; grp4.setName("grp4")
6863 mm.addNodeGroup(grp4)
6864 mm.rearrangeFamilies()
6865 self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp0"),(0,))
6866 self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp1"),(0,))
6867 self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp2"),(0,))
6868 self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp3"),(-1,))
6869 self.assertEqual(mm.getGrpNonEmptyLevelsExt("grp4"),(1,))
6871 for grp in [grp0,grp1,grp2,grp3,grp4]:
6872 self.assertTrue(mm.getGroupArr(mm.getGrpNonEmptyLevelsExt(grp.getName())[0],grp.getName()).isEqual(grp))
6877 def testContxtMger1TS(self):
6878 fname="Pyfile119.med"
6879 coo=DataArrayDouble(1000) ; coo.iota()
6880 m=MEDCouplingUMesh.Build0DMeshFromCoords(coo)
6882 WriteMesh(fname,m,True)
6883 f=MEDCouplingFieldDouble(ON_CELLS)
6886 arr=DataArrayDouble(m.getNumberOfCells())
6888 f.checkConsistencyLight()
6891 f.setTime(float(i),i,0)
6892 WriteFieldUsingAlreadyWrittenMesh(fname,f)
6895 mm=MEDFileMesh.New(fname)
6896 fmts=MEDFileFieldMultiTS(fname,False)
6897 refSize=fmts.getHeapMemorySize()
6903 self.assertIn(fmts.getHeapMemorySize(),range(refSize,refSize+refSize//10))
6906 def testZipFamilies1(self):
6908 MEDFileMesh.zipFamilies tries to reduce family partitions under groups.
6911 arr=DataArrayDouble(10) ; arr.iota()
6912 m=MEDCouplingCMesh()
6913 m.setCoords(arr,arr)
6914 m=m.buildUnstructured()
6919 for i in range(m.getNumberOfCells()):
6920 d = DataArrayInt([i])
6921 d.setName("grp%d"%i)
6925 grp_all = DataArrayInt.Range(0,m.getNumberOfCells(),1)
6926 grp_all.setName("grp_all")
6927 mm.addGroup(0,grp_all)
6928 for i in range(m.getNumberOfCells()):
6929 mm.removeGroup("grp{}".format(i))
6932 mm.zipFamilies() # the method to test
6934 self.assertEqual(mm.getGroupsNames(),("grp_all",))
6935 self.assertEqual(len(mm.getFamiliesNames()),1)
6936 self.assertTrue(mm.getGroupArr(0,"grp_all").isEqualWithoutConsideringStr(DataArrayInt.Range(0,81,1)))
6939 def testZipFamilies2(self):
6941 MEDFileMesh.zipFamilies tries to reduce family partitions under groups.
6944 arr=DataArrayDouble(21) ; arr.iota()
6945 m=MEDCouplingCMesh()
6947 m=m.buildUnstructured()
6952 # 1 and 3 to be merged
6953 # 2 and 5 to be merged
6954 mm.setFamilyFieldArr(0,DataArrayInt([-1,-1,-2,-3,-8, 0,-7,-7,-1,0, -6,-2,-5,-5,-2, -2,-2,-5,-4,-3]))
6955 for i in range(1,9):
6956 mm.setFamilyId("Fam_{}".format(i),-i)
6957 mm.setFamiliesOnGroup("grp0",["Fam_1","Fam_3","Fam_6"])
6958 mm.setFamiliesOnGroup("grp1",["Fam_1","Fam_2","Fam_3","Fam_5","Fam_6"])
6959 mm.setFamiliesOnGroup("grp2",["Fam_2","Fam_5","Fam_6","Fam_7"])
6961 grp0=DataArrayInt([0,1,3,8,10,19])
6962 grp1=DataArrayInt([0,1,2,3,8,10,11,12,13,14,15,16,17,19])
6963 grp2=DataArrayInt([2,6,7,10,11,12,13,14,15,16,17])
6964 self.assertTrue(mm.getGroupArr(0,"grp0").isEqualWithoutConsideringStr(grp0))
6965 self.assertTrue(mm.getGroupArr(0,"grp1").isEqualWithoutConsideringStr(grp1))
6966 self.assertTrue(mm.getGroupArr(0,"grp2").isEqualWithoutConsideringStr(grp2))
6967 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2'))
6969 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2'))
6970 self.assertTrue(mm.getGroupArr(0,"grp0").isEqualWithoutConsideringStr(grp0))
6971 self.assertTrue(mm.getGroupArr(0,"grp1").isEqualWithoutConsideringStr(grp1))
6972 self.assertTrue(mm.getGroupArr(0,"grp2").isEqualWithoutConsideringStr(grp2))
6973 self.assertEqual(mm.getFamiliesNames(),('Fam_1','Fam_2','Fam_6','Fam_7'))
6976 def testMeshConvertFromMEDFileGeoType(self):
6977 self.assertEqual(MEDFileMesh.ConvertFromMEDFileGeoType(320),NORM_HEXA20)
6980 def testFieldInt64_0(self):
6982 Small basic test with I/O of field in int64.
6984 fname="Pyfile120.med"
6985 arr = DataArrayDouble([0,1])
6986 m = MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m.setName("mesh") ; m=m.buildUnstructured()
6987 f = MEDCouplingFieldInt64(ON_CELLS) ; f.setName("field")
6988 v = 1234567890123456
6989 f.setArray(DataArrayInt64([v]))
6993 f1ts = MEDFileInt64Field1TS()
6994 f1ts.setFieldNoProfileSBT(f)
6995 fmts = MEDFileInt64FieldMultiTS()
6996 fmts.pushBackTimeStep(f1ts)
6997 fs = MEDFileFields()
7002 mm = MEDFileMesh.New(fname)
7003 fs = MEDFileFields(fname)
7004 f = fs[0][0].field(mm)
7005 self.assertTrue( isinstance(f,MEDCouplingFieldInt64) )
7006 self.assertEqual( f.getArray().getIJ(0,0) , v )
7009 def testNonRegUMeshSubParts(self):
7011 Non regression test focuses on accordance between time stamp and active data structure in MEDFileUMeshAggregateCompute class.
7013 fname = "Pyfile121.med"
7014 m0 = MEDCouplingUMesh("mesh",1)
7015 coords = DataArrayDouble([(0,0),(1,0),(2,0)])
7016 m0.setCoords(coords)
7018 m0.insertNextCell(NORM_SEG2,[1,2])
7021 m1 = MEDCoupling1SGTUMesh(m0.getName(), NORM_POINT1)
7022 m1.setCoords(m0.getCoords())
7023 m1.setNodalConnectivity(DataArrayInt([1,2]))
7024 m1.setName(m0.getName())
7026 fni = mm.computeFetchedNodeIds() # <- This invokation of const method implies 1SGTU parts computation
7027 mm.zipCoords() # <- This call changes the coords and connectivity
7030 mm = MEDFileMesh.New(fname)
7031 mm[0].checkConsistency() # <- check that correct DS has been taken at write time into MEDFileUMeshAggregateCompute
7032 self.assertTrue( m0.isEqual(mm[0],1e-12) )
7037 if __name__ == "__main__":