1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2015 CEA/DEN, EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (CEA/DEN)
22 from MEDLoader import *
24 from math import pi,e,sqrt
25 from MEDLoaderDataForTest import MEDLoaderDataForTest
27 class MEDLoaderTest(unittest.TestCase):
28 def testMEDMesh1(self):
29 fileName="Pyfile18.med"
30 mname="ExampleOfMultiDimW"
31 medmesh=MEDFileMesh.New(fileName,mname)
32 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
33 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
34 m1_0=medmesh.getLevel0Mesh(True)
35 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
36 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
37 m2_0=medmesh.getLevelM1Mesh(True)
38 m2_1=MEDLoader.ReadUMeshFromFile(fileName,mname,-1)
39 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
42 def testMEDMesh2(self):
43 fileName="Pyfile10.med"
45 outFileName="MEDFileMesh1.med"
46 medmesh=MEDFileUMesh.New(fileName,mname)
47 self.assertEqual((0,),medmesh.getNonEmptyLevels())
48 m1_0=medmesh.getLevel0Mesh(True)
49 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
50 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
51 g1_0=medmesh.getGroup(0,"mesh2",True)
52 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
53 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
54 g1_0=medmesh.getGroup(0,"mesh3",True)
55 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
56 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
57 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
58 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
59 g1_1.setName(g1_0.getName())
60 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
61 g1_0=medmesh.getFamily(0,"Family_-3",True)
62 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
63 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
64 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
65 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
66 g1_1.setName(g1_0.getName())
67 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
68 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
69 medmesh.write(outFileName,2);
70 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
71 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
72 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
73 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
74 famn=medmesh.getFamilyNameGivenId(0)
75 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
77 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
78 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
79 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
80 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
81 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
84 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
85 def testMEDMesh3(self):
86 outFileName="MEDFileMesh3.med"
87 c=DataArrayDouble.New()
88 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 ];
89 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
90 c.setValues(coords,9,2)
91 m=MEDCouplingUMesh.New();
92 m.setMeshDimension(2);
94 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
95 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
96 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
97 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
98 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
99 m.finishInsertingCells();
102 m1=MEDCouplingUMesh.New();
103 m1.setMeshDimension(1);
105 m1.insertNextCell(NORM_SEG2,2,[1,4])
106 m1.insertNextCell(NORM_SEG2,2,[3,6])
107 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
108 m1.finishInsertingCells();
111 m2=MEDCouplingUMesh.New();
112 m2.setMeshDimension(0);
114 m2.insertNextCell(NORM_POINT1,1,[1])
115 m2.insertNextCell(NORM_POINT1,1,[3])
116 m2.insertNextCell(NORM_POINT1,1,[2])
117 m2.insertNextCell(NORM_POINT1,1,[6])
118 m2.finishInsertingCells();
122 mm=MEDFileUMesh.New()
123 self.assertTrue(mm.getUnivNameWrStatus())
124 mm.setName("MyFirstMEDCouplingMEDmesh")
125 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
127 mm.setMeshAtLevel(-1,m1);
128 mm.setMeshAtLevel(0,m);
129 mm.setMeshAtLevel(-2,m2);
130 # playing with groups
131 g1_2=DataArrayInt.New()
132 g1_2.setValues([1,3],2,1)
134 g2_2=DataArrayInt.New()
135 g2_2.setValues([1,2,3],3,1)
137 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
138 g1_1=DataArrayInt.New()
139 g1_1.setValues([0,1,2],3,1)
141 g2_1=DataArrayInt.New()
142 g2_1.setValues([0,2],2,1)
144 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
145 g1_N=DataArrayInt.New()
146 g1_N.setValues(range(8),8,1)
148 g2_N=DataArrayInt.New()
149 g2_N.setValues(range(9),9,1)
151 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
152 mm.createGroupOnAll(0,"GrpOnAllCell")
153 # check content of mm
154 t=mm.getGroupArr(0,"G1",False)
155 self.assertTrue(g1_2.isEqual(t));
156 t=mm.getGroupArr(0,"G2",False)
157 self.assertTrue(g2_2.isEqual(t));
158 t=mm.getGroupArr(-1,"G1",False)
159 self.assertTrue(g1_1.isEqual(t));
160 t=mm.getGroupArr(-1,"G2",False)
161 self.assertTrue(g2_1.isEqual(t));
162 t=mm.getGroupArr(1,"G1",False)
163 self.assertTrue(g1_N.isEqual(t));
164 t=mm.getGroupArr(1,"G2",False)
165 self.assertTrue(g2_N.isEqual(t));
166 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
167 t=mm.getGroupArr(0,"GrpOnAllCell")
168 self.assertTrue(t.getValues()==range(5))
171 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
172 mmCpy.write(outFileName,2);
174 mm=MEDFileMesh.New(outFileName)
176 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
177 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
178 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
179 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
180 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
181 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
182 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
183 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
184 self.assertEqual(3,len(lmm))
185 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
186 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
187 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
189 self.assertTrue(mm.getUnivNameWrStatus())
190 self.assertTrue(isinstance(mm.getUnivName(),str))
191 self.assertTrue(len(mm.getUnivName())!=0)
192 mbis=mm.getMeshAtLevel(0)
193 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
194 self.assertTrue(m.isEqual(mbis,1e-12));
196 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),MEDLoader.GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
199 # this test is the testMEDMesh3 except that permutation is dealed here
200 def testMEDMesh4(self):
201 outFileName="MEDFileMesh4.med"
202 c=DataArrayDouble.New()
203 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 ];
204 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
205 c.setValues(coords,9,2)
206 c.setInfoOnComponent(0,"abcdef [km]")
207 c.setInfoOnComponent(1,"ghij [MW]")
208 m=MEDCouplingUMesh.New();
209 m.setMeshDimension(2);
211 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
212 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
213 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
214 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
215 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
216 m.finishInsertingCells();
219 m1=MEDCouplingUMesh.New();
220 m1.setMeshDimension(1);
222 m1.insertNextCell(NORM_SEG2,2,[1,4])
223 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
224 m1.insertNextCell(NORM_SEG2,2,[3,6])
225 m1.finishInsertingCells();
228 m2=MEDCouplingUMesh.New();
229 m2.setMeshDimension(0);
231 m2.insertNextCell(NORM_POINT1,1,[1])
232 m2.insertNextCell(NORM_POINT1,1,[3])
233 m2.insertNextCell(NORM_POINT1,1,[2])
234 m2.insertNextCell(NORM_POINT1,1,[6])
235 m2.finishInsertingCells();
239 mm=MEDFileUMesh.New()
240 mm.setName("My2ndMEDCouplingMEDmesh")
241 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
243 renumNode=DataArrayInt.New()
244 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
245 mm.setRenumFieldArr(1,renumNode)
246 mm.setMeshAtLevel(-1,m1,True);
247 mm.setMeshAtLevel(0,m,True);
248 mm.setMeshAtLevel(-2,m2,True);
249 mm.removeMeshAtLevel(-2)
250 mm.setMeshAtLevel(-2,m2,True);
251 # playing with groups
252 g1_2=DataArrayInt.New()
253 g1_2.setValues([2,3],2,1)
255 g2_2=DataArrayInt.New()
256 g2_2.setValues([2,0,3],3,1)
258 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
259 g1_1=DataArrayInt.New()
260 g1_1.setValues([0,2,1],3,1)
262 g2_1=DataArrayInt.New()
263 g2_1.setValues([0,2],2,1)
265 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
266 g1_N=DataArrayInt.New()
267 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
269 g2_N=DataArrayInt.New()
270 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
272 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
273 # check content of mm
274 t=mm.getGroupArr(0,"G1",True)
275 self.assertTrue(g1_2.isEqual(t));
276 t=mm.getGroupArr(0,"G2",True)
277 self.assertTrue(g2_2.isEqual(t));
278 t=mm.getGroupArr(-1,"G1",True)
279 self.assertTrue(g1_1.isEqual(t));
280 t=mm.getGroupArr(-1,"G2",True)
281 self.assertTrue(g2_1.isEqual(t));
282 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
284 mm.write(outFileName,2);
285 mm2=MEDFileMesh.New(outFileName)
286 res=mm.isEqual(mm2,1e-12)
287 self.assertTrue(res[0])
288 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
289 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
290 mm2.keepFamIdsOnlyOnLevs([3],[-1])
291 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
292 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
294 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
295 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
297 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
298 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
299 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
300 self.assertTrue(not mm2.existsFamily("Family_-8"))
301 mm2.createGroupOnAll(-1,"GrpOnAllFace")
302 self.assertTrue(mm2.existsFamily("Family_-8"))
303 self.assertEqual(range(3),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
306 #testing persistence of retrieved arrays
307 def testMEDMesh5(self):
308 fileName="Pyfile18.med"
309 mname="ExampleOfMultiDimW"
310 medmesh=MEDFileUMesh.New(fileName,mname)
311 m1_0=medmesh.getLevel0Mesh(True)
312 da1=medmesh.getFamilyFieldAtLevel(0)
314 self.assertEqual(20,m1_0.getNumberOfCells())
315 self.assertEqual(20,da1.getNumberOfTuples())
318 def testMEDMesh6(self):
319 outFileName="MEDFileMesh5.med"
322 m1=MEDCouplingCMesh.New();
323 da=DataArrayDouble.New()
324 da.setValues([0.,1.,2.],3,1)
325 da.setInfoOnComponent(0,"XX [mm]")
327 da=DataArrayDouble.New()
328 da.setValues([0.,1.2],2,1)
329 da.setInfoOnComponent(0,"YY [km]")
331 da=DataArrayDouble.New()
332 da.setValues([0.,1.3],2,1)
333 da.setInfoOnComponent(0,"ZZ [um]")
336 m.setName("myFirstCartMesh")
337 m.setDescription("mmmmpppppppp")
340 da=DataArrayInt.New()
341 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
342 m.setFamilyFieldArr(1,da)
343 m.setFamilyId("family1",1)
344 da=m.getFamilyArr(1,"family1")
346 self.assertEqual(expected1,da.getValues())
347 self.assertTrue(m.getUnivNameWrStatus())
348 m.write(outFileName,2);
349 mm=MEDFileMesh.New(outFileName)
350 self.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
351 self.assertTrue(isinstance(mm,MEDFileCMesh))
352 self.assertTrue(isinstance(mm.getUnivName(),str))
353 self.assertTrue(len(mm.getUnivName())!=0)
354 self.assertTrue(m.isEqual(mm,1e-12)[0])
355 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
358 m1.setTime(tt[2],tt[0],tt[1])
359 m1.setName(m.getName())
360 m1.setTimeUnit(m.getTimeUnit())
361 m1.setDescription(m.getDescription())
362 self.assertTrue(m2.isEqual(m1,1e-12));
365 def testMEDMesh7(self):
366 fileName="Pyfile24.med"
367 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
369 m.setCoords(m2.getCoords())
370 m.setMeshAtLevel(0,m2)
371 m.setMeshAtLevel(-1,m1)
372 m.setMeshAtLevel(-2,m0)
373 m.setFamilyFieldArr(0,f2)
374 m.setFamilyFieldArr(-1,f1)
375 m.setFamilyFieldArr(-2,f0)
376 m.setFamilyFieldArr(1,p)
377 m.setRenumFieldArr(0,n2)
378 m.setRenumFieldArr(-1,n1)
379 m.setRenumFieldArr(-2,n0)
381 for i in xrange(nbOfFams):
382 m.addFamily(fns[i],fids[i])
385 for i in xrange(nbOfGrps):
386 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
388 m.setName(m2.getName())
389 m.setDescription(m2.getDescription())
391 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
392 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
393 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
394 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
395 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
396 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
397 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
398 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
399 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
402 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
405 def funcToTestDelItem(self,ff):
409 #emulation of pointe.med file.
410 def testMEDField1(self):
411 mm=MEDFileMesh.New("Pyfile17.med")
412 mm.write("Pyfile17_bis.med",2)
413 ff=MEDFileFieldMultiTS("Pyfile17.med")
414 tsExpected=[[1,2],[3,4],[5,6]]
415 self.assertEqual(3,len(ff))
416 for pos,f1ts in enumerate(ff):
417 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
418 self.assertEqual(type(f1ts),MEDFileField1TS)
420 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
421 self.assertEqual([3,4],ff[1].getTime()[:-1])
422 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
423 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
424 ff.write("Pyfile17_bis.med",0)
426 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
427 self.assertEqual([(1,2),(3,4),(5,6)],ts)
428 self.funcToTestDelItem(ff)
429 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
430 self.assertEqual([(1,2)],ts)
434 def testMEDField2(self):
435 mm=MEDFileMesh.New("Pyfile19.med")
436 mm.write("Pyfile19_bis.med",2)
437 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
438 ff.write("Pyfile19_bis.med",0)
439 self.assertEqual([('tyty','mm'),('uiop','MW')],MEDLoader.GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
443 def testMEDField3(self):
444 mm=MEDFileMesh.New("Pyfile13.med")
445 mm.write("Pyfile13_bis.med",2)
446 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
447 ff.write("Pyfile13_bis.med",0)
448 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
449 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
450 f2=MEDLoader.ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
451 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
452 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
453 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
454 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
455 ff4=MEDFileField1TS.New("Pyfile13.med")
456 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
457 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
461 def testMEDField4(self):
462 mm=MEDFileMesh.New("Pyfile14.med")
463 mm.write("Pyfile14_bis.med",2)
464 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
465 ff.write("Pyfile14_bis.med",0)
466 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
467 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
468 f2=MEDLoader.ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
469 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
472 # MEDField get/set on pointe.med
473 def testMEDField5(self):
474 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
475 f=ff.getFieldAtLevel(ON_CELLS,0)
476 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
477 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
478 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
479 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
480 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
481 # no with renumbering
482 f=ff.getFieldAtLevel(ON_CELLS,0,1)
483 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
484 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
485 f=ff.getFieldAtLevel(ON_CELLS,0,3)
486 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
487 f=ff.getFieldAtLevel(ON_CELLS,0,2)
488 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
489 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
490 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
493 # MEDField get/set on profiles nodes
494 def testMEDField6(self):
495 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
496 its=ff.getIterations()
497 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
498 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
499 f2=MEDLoader.ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
500 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
501 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
502 its=ff.getIterations()
503 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
504 f2=MEDLoader.ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
505 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
506 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
507 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
510 # MEDField get/set on profiles cells
511 def testMEDField7(self):
512 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
513 its=ff.getIterations()
514 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
515 f2=MEDLoader.ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
516 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
519 #first test of assignation. No profile and types sorted by type.
520 def testMEDField8(self):
522 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
524 mm1=MEDFileUMesh.New()
525 mm1.setCoords(m1.getCoords())
526 mm1.setMeshAtLevel(0,m1)
527 mm1.setName(m1.getName())
529 ff1=MEDFileField1TS.New()
530 ff1.setFieldNoProfileSBT(f1)
532 f2=MEDLoader.ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
533 itt,orr,ti=ff1.getTime()
534 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
535 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
537 itt,orr,ti=ff1.getTime()
538 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
539 da,infos=ff1.getUndergroundDataArrayExt()
540 f2.getArray().setName(da.getName())#da has the same name than f2
541 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
542 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
545 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
547 mm1=MEDFileUMesh.New()
548 mm1.setCoords(m1.getCoords())
549 mm1.setMeshAtLevel(0,m1)
550 mm1.setName(m1.getName())
552 ff1=MEDFileField1TS.New()
553 ff1.setFieldNoProfileSBT(f1)
555 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
557 f2=MEDLoader.ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
558 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
559 f1.getArray().setIJ(0,0,nv)
560 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
563 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
565 mm1=MEDFileUMesh.New()
566 mm1.setCoords(m1.getCoords())
567 mm1.setMeshAtLevel(0,m1)
568 mm1.setName(m1.getName())
570 ff1=MEDFileField1TS.New()
571 ff1.setFieldNoProfileSBT(f1)
573 f2=MEDLoader.ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
574 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
575 da,infos=ff1.getUndergroundDataArrayExt()
576 f2.getArray().setName(da.getName())#da has the same name than f2
577 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
578 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
581 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
582 f1InvalidCpy=f1.deepCpy()
583 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
584 f1InvalidCpy2=f1.deepCpy()
585 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
587 mm1=MEDFileUMesh.New()
588 mm1.setCoords(m1.getCoords())
589 mm1.setMeshAtLevel(0,m1)
590 mm1.setName(m1.getName())
592 ff1=MEDFileField1TS.New()
593 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
594 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
595 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
596 ff1.setFieldNoProfileSBT(f1)
598 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
599 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
600 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
601 sbt=ff2.getFieldSplitedByType2()
602 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
603 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
604 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
605 self.assertEqual(6,loc1.getNumberOfPointsInCells())
606 self.assertEqual(3,loc1.getNumberOfGaussPoints())
607 self.assertEqual(2,loc1.getDimension())
608 da,infos=ff2.getUndergroundDataArrayExt()
609 f2.getArray().setName(da.getName())#da has the same name than f2
610 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
611 self.assertEqual(53,da.getNumberOfTuples())
612 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)
616 def testMEDFileData1(self):
620 m1=MEDLoaderDataForTest.build1DMesh_1()
621 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
622 mmm1=MEDFileMeshMultiTS.New() ;
623 mmm1.setOneTimeStep(mm1)
624 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
625 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
626 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
627 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
629 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
630 self.assertEqual(name,mmm.getName())
631 self.assertEqual(type(mmm),MEDFileUMesh)
633 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
635 ff1=MEDFileFieldMultiTS.New()
636 ff21=MEDFileFieldMultiTS.New()
637 ff22=MEDFileFieldMultiTS.New()
638 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
639 f1.getArray().setInfoOnComponent(0,"power [kW]")
640 ff1.appendFieldNoProfileSBT(f1)
641 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
642 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
643 ff21.appendFieldNoProfileSBT(f21)
644 f22=f21.deepCpy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
645 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
646 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
647 ff22.appendFieldNoProfileSBT(f22)
648 fs=MEDFileFields.New()
649 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
650 for name,fmts in zip(["f1","f21","f22"],fs):
651 self.assertEqual(name,fmts.getName())
655 fname2="Pyfile29_2.med"
658 d2=MEDFileData.New(fname2)
659 self.assertEqual(2,d2.getNumberOfMeshes())
660 self.assertEqual(3,d2.getNumberOfFields())
661 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
662 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
663 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
664 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
665 self.assertTrue(m1.isEqual(m1bis,1e-12))
666 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
667 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
668 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
669 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
670 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
673 def testMEDField9(self):
674 # first test field profile WR. Full type but with some type missing
676 m1=MEDLoaderDataForTest.build2DMesh_3()
677 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
679 ff1=MEDFileField1TS.New()
680 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
681 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
682 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.
683 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
685 ff1.setFieldProfile(f1,mm1,0,da)
686 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
690 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
691 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
692 self.assertTrue(vals.isEqual(d,1e-14))
694 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
695 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
696 ff2.deepCpyGlobs(ff3)
697 sbt=ff2.getFieldSplitedByType2()
698 self.assertEqual(3,sbt[0][0])#TRI3
699 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
700 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
701 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
702 self.assertEqual(4,sbt[1][0])#QUAD4
703 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
704 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
705 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
706 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
707 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
708 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
709 self.assertTrue(vals.isEqual(d,1e-14))
712 def testMEDField10(self):
714 m1=MEDLoaderDataForTest.build2DMesh_1()
715 m1.renumberCells([0,1,4,2,3,5],False)
716 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
718 ff1=MEDFileFieldMultiTS.New()
719 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
720 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
721 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.
722 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
724 ff1.appendFieldProfile(f1,mm1,0,da)
725 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
726 ff1.appendFieldProfile(f1,mm1,0,da)
730 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
731 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
732 self.assertTrue(vals.isEqual(e,1e-14))
733 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
734 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
735 self.assertTrue(vals.isEqual(d,1e-14))
737 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
738 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
739 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
740 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
741 self.assertTrue(vals.isEqual(e,1e-14))
742 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
743 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
744 self.assertTrue(vals.isEqual(d,1e-14))
747 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
748 def testMEDField11(self):
750 m1=MEDLoaderDataForTest.build2DMesh_1()
751 m1.renumberCells([0,1,4,2,3,5],False)
752 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
754 ff1=MEDFileField1TS.New()
755 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
756 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
757 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.
758 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
760 ff1.setFieldProfile(f1,mm1,0,da)
761 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
764 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
765 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
766 self.assertTrue(vals.isEqual(d,1e-14))
768 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
769 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
770 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
771 self.assertTrue(vals.isEqual(d,1e-14))
774 def testMEDField12(self):
776 m1=MEDLoaderDataForTest.build2DMesh_1()
777 m1.renumberCells([0,1,4,2,3,5],False)
778 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
780 ff1=MEDFileFieldMultiTS.New()
781 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
782 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
783 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.
784 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
786 ff1.appendFieldProfile(f1,mm1,0,da)
787 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
788 ff1.appendFieldProfile(f1,mm1,0,da)
791 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
792 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
793 self.assertTrue(vals.isEqual(e,1e-14))
794 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
795 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
796 self.assertTrue(vals.isEqual(d,1e-14))
798 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
799 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
800 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
801 self.assertTrue(vals.isEqual(e,1e-14))
802 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
803 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
804 self.assertTrue(vals.isEqual(d,1e-14))
807 def testMEDField13(self):
809 m1=MEDLoaderDataForTest.build2DMesh_1()
810 m1.renumberCells([0,1,4,2,3,5],False)
812 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
813 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
815 ff1=MEDFileField1TS.New()
816 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
817 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
818 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.
819 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
821 ff1.setFieldProfile(f1,mm1,0,da)
824 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
825 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
826 self.assertTrue(vals.isEqual(d,1e-14))
828 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
829 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
830 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
831 self.assertTrue(vals.isEqual(d,1e-14))
834 def testMEDField14(self):
836 m1=MEDLoaderDataForTest.build2DMesh_1()
837 m1.renumberCells([0,1,4,2,3,5],False)
839 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
840 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
842 ff1=MEDFileFieldMultiTS.New()
843 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
844 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
845 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.
846 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
848 ff1.appendFieldProfile(f1,mm1,0,da)
849 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
850 ff1.appendFieldProfile(f1,mm1,0,da)
853 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
854 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
855 self.assertTrue(vals.isEqual(d,1e-14))
856 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
857 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
858 self.assertTrue(vals.isEqual(e,1e-14))
859 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
861 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
862 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
863 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
864 self.assertTrue(vals.isEqual(d,1e-14))
865 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
866 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
867 self.assertTrue(vals.isEqual(e,1e-14))
869 # 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.
870 # 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
871 # for the necessity of the test ! The idea is too create artificially a mesh having one more fictious cell per type and to roll back right after !
872 def testMEDField15(self):
874 m0=MEDLoaderDataForTest.build2DMesh_1()
875 m0.renumberCells([0,1,4,2,3,5],False)
877 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
878 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
879 ff1=MEDFileField1TS.New()
880 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
881 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
882 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.
883 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
885 ff1.setFieldProfile(f1,mm1,0,da)
886 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
889 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
890 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
891 self.assertTrue(p1.isIdentity())
892 self.assertEqual(5,p1.getNumberOfTuples())
893 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
895 # Test for getFieldAtTopLevel method
896 def testMEDField16(self):
898 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
900 mm1=MEDFileUMesh.New()
901 mm1.setCoords(m1.getCoords())
902 mm1.setMeshAtLevel(0,m1)
903 mm1.setName(m1.getName())
904 ff1=MEDFileField1TS.New()
905 ff1.setFieldNoProfileSBT(f1)
906 m2=m1.buildDescendingConnectivity()[0]
907 m2.sortCellsInMEDFileFrmt()
908 m2.setName(m1.getName())
909 mm1.setMeshAtLevel(-1,m2)
911 f2=m2.getMeasureField(True)
912 dd=DataArrayDouble.New()
913 dd.alloc(f2.getArray().getNumberOfTuples(),3)
914 dd[:,0]=f2.getArray()
915 dd[:,1]=2*f2.getArray()
916 dd[:,2]=3*f2.getArray()
917 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
919 f2.copyTinyStringsFrom(f1)
920 f2.copyTinyAttrFrom(f1)
921 ff1.setFieldNoProfileSBT(f2)
923 # Reading Pyfile37.med
924 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
925 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
926 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
927 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
928 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
929 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
930 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
934 ff1=MEDFileField1TS.New()
935 ff1.setFieldNoProfileSBT(f2)
937 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
938 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
939 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
942 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
943 def testMEDField17(self):
945 m1=MEDLoaderDataForTest.build2DMesh_1()
946 m1.renumberCells([0,1,4,2,3,5],False)
947 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
949 ffs=MEDFileFields.New()
950 ff1=MEDFileFieldMultiTS.New()
951 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
952 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
953 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.
954 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
956 ff1.appendFieldProfile(f1,mm1,0,da)
957 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
958 ff1.appendFieldProfile(f1,mm1,0,da)
960 ffs.setFieldAtPos(0,ff1)
964 ffsr=MEDFileFields.New(fname)
965 ff3=ffsr.getFieldAtPos(0)
966 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
967 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
970 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
971 def testMEDField18(self):
973 m1=MEDLoaderDataForTest.build2DMesh_1()
974 m1.renumberCells([0,1,4,2,3,5],False)
975 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
977 ffs=MEDFileFields.New()
978 ff1=MEDFileFieldMultiTS.New()
979 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
980 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
981 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.
982 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
984 ff1.appendFieldProfile(f1,mm1,0,da)
985 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
986 ff1.appendFieldProfile(f1,mm1,0,da)
990 ffsr=MEDFileFields.New(fname)
991 ff3=ffsr.getFieldAtPos(0)
992 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
993 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
996 def testMEDFieldBug1(self):
998 d=MEDFileData.New(fname)
999 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1002 def testMEDMesh8(self):
1003 m=MEDLoaderDataForTest.build1DMesh_1()
1004 m.convertQuadraticCellsToLinear()
1005 mm=MEDFileUMesh.New()
1006 mm.setMeshAtLevel(0,m)
1007 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1008 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1009 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1010 mm.setGroupsAtLevel(0,[g1,g2],False)
1011 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1012 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1013 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1014 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1015 mm.assignFamilyNameWithGroupName()
1016 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1017 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1018 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1019 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1021 mm=MEDFileUMesh.New()
1022 mm.setMeshAtLevel(0,m)
1023 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1024 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1025 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1026 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1027 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1028 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1029 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1030 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1031 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1032 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1033 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1034 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1035 mm.changeFamilyId(5,6)
1036 g=mm.getGroupArr(0,"g3")
1037 self.assertTrue(g.isEqual(g3));
1038 g=mm.getGroupArr(0,"g2")
1039 self.assertTrue(g.isEqual(g2));
1040 g=mm.getGroupArr(0,"g1")
1041 self.assertTrue(g.isEqual(g1));
1044 # bug detected by gauthier
1045 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1046 fname="Pyfile41.med"
1047 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1049 mm1=MEDFileUMesh.New()
1050 mm1.setCoords(m1.getCoords())
1051 mm1.setMeshAtLevel(0,m1)
1053 ff1=MEDFileField1TS.New()
1054 ff1.setFieldNoProfileSBT(f1)
1056 # writing mesh1 and field1, now creation of mesh2 and field2
1059 m2.translate([0.5,0.6,0.7])
1060 m2.setName("3DSurfMesh_2")
1061 f2.getArray()[:]*=2.
1062 f2.setName("VectorFieldOnCells2")
1063 mm2=MEDFileUMesh.New()
1064 mm2.setCoords(m2.getCoords())
1065 mm2.setMeshAtLevel(0,m2)
1067 ff2=MEDFileField1TS.New()
1068 ff2.setFieldNoProfileSBT(f2)
1071 f3=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1072 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1073 f4=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1074 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1077 def testMEDLoaderMultiLevelCellField1(self):
1078 fname="Pyfile42.med"
1079 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1080 m=MEDFileUMesh.New()
1081 m.setCoords(m2.getCoords())
1082 m.setMeshAtLevel(0,m2)
1083 m.setMeshAtLevel(-1,m1)
1084 m.setMeshAtLevel(-2,m0)
1088 compNames1=["comp1","comp2","comp3"]
1089 ff1=MEDFileField1TS.New()
1090 da2=DataArrayDouble.New()
1091 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1093 da2.rearrange(len(compNames1))
1094 da2.setInfoOnComponents(compNames1)
1095 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkCoherency()
1096 ff1.setFieldNoProfileSBT(f2)
1097 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1098 da0=DataArrayDouble.New()
1099 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1101 da0.rearrange(len(compNames1))
1102 da0.setInfoOnComponents(compNames1)
1103 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1104 ff1.setFieldNoProfileSBT(f0)
1105 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1106 da1=DataArrayDouble.New()
1107 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1109 da1.rearrange(len(compNames1))
1110 da1.setInfoOnComponents(compNames1)
1111 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1112 ff1.setFieldNoProfileSBT(f1)
1113 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1118 compNames2=["comp11","comp22"]
1119 ff2=MEDFileField1TS.New()
1120 da0=DataArrayDouble.New()
1121 da0.alloc(m0.getNumberOfCells()*2,1)
1124 da0.setInfoOnComponents(compNames2)
1125 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1126 ff2.setFieldNoProfileSBT(f0)
1127 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1128 da1=DataArrayDouble.New()
1129 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1131 da1.rearrange(len(compNames2))
1132 da1.setInfoOnComponents(compNames2)
1133 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1134 ff2.setFieldNoProfileSBT(f1)
1135 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1139 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1140 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1141 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1142 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1143 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1144 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1147 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1148 fname="Pyfile43.med"
1149 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1150 m=MEDFileUMesh.New()
1151 m.setMeshAtLevel(0,m2)
1152 m.setMeshAtLevel(-1,m1)
1153 m.setMeshAtLevel(-2,m0)
1154 f=MEDFileField1TS.New()
1155 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1156 ff.setName("NodeFieldPfl")
1157 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1159 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1160 f.setFieldProfile(ff,m,-2,pfl)
1161 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1162 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1163 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1164 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1165 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1166 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1167 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1168 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1169 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1170 expected1=[1.,10.,100.,2.,20.,200.]
1171 nodeCoordsWithValue1=[10.,2.5,0.]
1172 nodeCoordsWithValue2=[10.,3.75,0.]
1174 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1175 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1178 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1182 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1183 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1184 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1185 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1186 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1187 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1188 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1189 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1190 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1192 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1197 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1198 f=MEDFileField1TS.New()
1199 f.setFieldProfile(ff,m,-2,pfl)
1200 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1201 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1202 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1203 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1204 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1205 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1206 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1207 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1208 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1209 expected2=[2.,20.,200.,1.,10.,100.]
1211 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1212 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1215 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1218 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1219 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1220 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1221 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1222 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1223 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1224 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1225 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1226 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1228 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1232 def testDuplicateNodesOnM1Group1(self):
1233 fname="Pyfile44.med"
1234 m=MEDCouplingCMesh.New()
1235 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1236 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1237 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1238 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1239 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1240 m2.setName(m.getName())
1241 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1242 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1243 mm=MEDFileUMesh.New()
1244 mm.setMeshAtLevel(0,m)
1245 mm.setMeshAtLevel(-1,m2)
1246 mm.setGroupsAtLevel(-1,[grp,grp2])
1247 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1248 mm.setGroupsAtLevel(1,[grpNode])
1249 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1250 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1251 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1253 self.assertEqual(30,mm.getNumberOfNodes())
1254 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1255 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1257 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1258 self.assertEqual([15,16,17],nodes.getValues());
1259 self.assertEqual([7,8,9],cells.getValues());
1260 self.assertEqual([12,13,14],cells2.getValues());
1261 self.assertEqual(33,mm.getNumberOfNodes())
1262 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1263 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1264 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1265 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1266 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
1267 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1268 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
1269 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1270 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])
1271 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1272 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1274 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1275 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1276 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1277 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1278 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1282 def testDuplicateNodesOnM1Group2(self):
1283 fname="Pyfile45.med"
1284 m=MEDCouplingCMesh.New()
1285 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1286 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1287 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1288 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1289 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1290 m2.setName(m.getName())
1291 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1292 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1293 mm=MEDFileUMesh.New()
1294 mm.setMeshAtLevel(0,m)
1295 mm.setMeshAtLevel(-1,m2)
1296 mm.setGroupsAtLevel(-1,[grp,grp2])
1297 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1298 mm.setGroupsAtLevel(1,[grpNode])
1299 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1300 ref1=[4,9,8,14,15,4,10,9,15,16]
1301 ref2=[4,9,8,14,30,4,10,9,30,16]
1303 self.assertEqual(30,mm.getNumberOfNodes())
1304 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1305 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1307 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1308 self.assertEqual([15],nodes.getValues());
1309 self.assertEqual([7,8],cells.getValues());
1310 self.assertEqual([12,13],cells2.getValues());
1311 self.assertEqual(31,mm.getNumberOfNodes())
1312 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1313 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1314 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1315 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1316 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
1317 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1318 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
1319 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1320 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])
1321 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1322 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1324 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1325 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1326 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1327 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1328 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1332 def testBasicConstructors(self):
1333 fname="Pyfile18.med"
1334 m=MEDFileMesh.New(fname)
1335 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1336 m=MEDFileMesh.New(fname)
1337 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1338 m=MEDFileUMesh(fname)
1341 m=MEDFileCMesh("MEDFileMesh5.med")
1342 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1344 m=MEDFileMeshMultiTS()
1345 m=MEDFileMeshMultiTS(fname)
1346 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1348 m=MEDFileMeshes(fname)
1350 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1351 m=MEDFileFieldMultiTS()
1352 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1354 m=MEDFileFields(fname)
1356 m=MEDFileData(fname)
1358 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1359 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1360 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1361 m=MEDCouplingCMesh()
1362 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1363 m=MEDCouplingFieldTemplate(ON_NODES)
1364 m=MEDCouplingMultiFields([])
1365 m=MEDCouplingFieldOverTime([])
1368 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1369 def testBugSemiPartialField(self):
1370 fname="Pyfile46.med"
1371 m=MEDLoaderDataForTest.build2DMesh_3()
1372 m=m[:10] ; m.setName("mesh")
1373 f=m.getMeasureField(ON_CELLS)
1374 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1376 f.setName("SemiPartialField")
1378 f1=f[:6] ; f1.getMesh().setName(m.getName())
1379 f2=f[6:] ; f2.getMesh().setName(m.getName())
1381 mm=MEDFileUMesh.New()
1382 mm.setMeshAtLevel(0,m)
1383 ff=MEDFileField1TS.New()
1384 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1388 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1389 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1390 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1392 fread.checkCoherency()
1393 fread2.checkCoherency()
1394 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1395 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1398 def testUnPolyze1(self):
1399 fname="Pyfile47.med"
1400 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1401 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]
1402 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1403 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]]))
1405 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1406 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1407 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1408 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1409 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1410 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1411 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1412 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1414 mm.setRenumFieldArr(0,None)
1415 mm.setFamilyFieldArr(-1,None)
1418 def testUnPolyze2(self):
1419 fname="Pyfile48.med"
1420 mfd=MEDFileData.New()
1421 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1422 meshes=MEDFileMeshes.New()
1424 mfd.setMeshes(meshes)
1425 fields=MEDFileFields.New()
1426 mfd.setFields(fields)
1427 ff=MEDFileFieldMultiTS.New()
1428 fields.pushField(ff)
1430 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1431 f0_0.setTime(9.5,3,4)
1432 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1434 f0_0.setMesh(mm.getMeshAtLevel(0))
1435 ff.appendFieldNoProfileSBT(f0_0)
1436 ff0=ff.getTimeStepAtPos(0)
1437 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1438 f0_1.setTime(9.5,3,4)
1439 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1440 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1441 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1443 ff0.setFieldProfile(f0_1,mm,0,pfl)
1444 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1445 f0_2.setTime(9.5,3,4)
1446 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1447 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
1448 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1450 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1451 mfd.getFields().shallowCpyGlobs(ff0)
1453 mfd.unPolyzeMeshes()
1455 fmts=mfd.getFields()[0]
1456 self.assertEqual(fmts.getNumberOfTS(),1)
1457 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1458 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1459 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))])
1460 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1461 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1462 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1463 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1464 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1465 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1466 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1467 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))
1468 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1469 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1470 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1471 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1472 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1473 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])
1474 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1475 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1476 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1477 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])
1478 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1483 def testGaussWriteOnPfl1(self):
1484 fname="Pyfile49.med"
1485 fname2="Pyfile50.med"
1486 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1487 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1488 mQ8.allocateCells(1)
1489 mQ8.insertNextCell(NORM_QUAD8,range(8))
1490 mQ8.finishInsertingCells()
1491 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1492 mQ4.allocateCells(1)
1493 mQ4.insertNextCell(NORM_QUAD4,range(4))
1494 mQ4.finishInsertingCells()
1495 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1496 mT3.allocateCells(1)
1497 mT3.insertNextCell(NORM_TRI3,range(3))
1498 mT3.finishInsertingCells()
1500 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.]]
1501 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1502 ms[:]=(elt.deepCpy() for elt in ms)
1503 for m,t in zip(ms,tr):
1504 d=m.getCoords() ; d+= t
1506 m=MEDCouplingUMesh.MergeUMeshes(ms)
1508 m2=m[:13] ; m2.setName(m.getName())
1509 ### 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.
1510 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1511 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1514 da=DataArrayDouble(34) ; da.iota(3.)
1516 f.setName("fieldCellOnPflWithoutPfl")
1517 fInvalid=f.deepCpy()
1518 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])
1519 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])
1520 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])
1522 fInvalid2=fInvalid.deepCpy()
1523 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1526 mm.setMeshAtLevel(0,m)
1529 f1ts=MEDFileField1TS.New()
1530 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1531 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1532 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1533 f1ts.setFieldProfile(f,mm,0,pfl)
1536 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1537 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1538 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1539 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1540 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1541 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1542 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1543 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1545 dataRead=MEDFileData.New(fname)
1546 mRead=dataRead.getMeshes()[0]
1547 f1tsRead=dataRead.getFields()[0][0]
1548 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1549 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1550 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1551 f2_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1552 f2_bis.checkCoherency()
1553 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1555 MEDLoader.WriteField(fname2,f,True)
1556 f2_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1557 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1558 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1559 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1560 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1561 m2=m[pfl] ; m2.setName(m.getName())
1564 da=DataArrayDouble(35) ; da.iota(3.)
1566 f.setName("fieldCellOnPflWithoutPfl2")
1567 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1568 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])
1569 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])
1573 mm.setMeshAtLevel(0,m)
1575 f1ts=MEDFileField1TS.New()
1576 f1ts.setFieldProfile(f,mm,0,pfl)
1577 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1578 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1579 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1580 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1582 dataRead=MEDFileData.New(fname)
1583 mRead=dataRead.getMeshes()[0]
1584 f1tsRead=dataRead.getFields()[0][0]
1585 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1586 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1587 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1588 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1589 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1590 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1591 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1593 MEDLoader.WriteField(fname2,f,True)
1594 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1595 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1596 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1597 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1598 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1601 da=DataArrayDouble(60) ; da.iota(3.)
1603 f.setName("fieldCellWithoutPfl")
1604 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])
1605 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])
1606 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])
1607 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])
1608 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])
1611 mm.setMeshAtLevel(0,m)
1612 f1ts=MEDFileField1TS.New()
1613 f1ts.setFieldNoProfileSBT(f)
1614 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1615 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1616 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1617 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1618 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1622 dataRead=MEDFileData.New(fname)
1623 mRead=dataRead.getMeshes()[0]
1624 f1tsRead=dataRead.getFields()[0][0]
1625 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1626 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1627 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1628 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1629 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1630 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1632 MEDLoader.WriteField(fname2,f,True)
1633 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1634 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1635 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1638 # Testing profile on nodes when the profile is identity but not on all nodes.
1639 def testMEDFieldPflOnNode1(self):
1640 fname="Pyfile51.med"
1641 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)
1642 m0=MEDCouplingUMesh("Mesh",2)
1644 m0.insertNextCell(NORM_TRI3,[1,4,2])
1645 m0.insertNextCell(NORM_TRI3,[4,5,2])
1646 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1647 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1648 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1649 m0.finishInsertingCells()
1651 m1=MEDCouplingUMesh(m0.getName(),1)
1653 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1655 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1657 m1.finishInsertingCells()
1661 m.setMeshAtLevel(0,m0)
1662 m.setMeshAtLevel(-1,m1)
1664 dt=3 ; it=2 ; tim=4.5
1665 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1666 fieldNode0.setName("fieldNode0")
1667 fieldNode0.setTime(tim,dt,it)
1668 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1669 arr=DataArrayDouble([10,11,12,13,14])
1670 fieldNode0.setArray(arr)
1671 f0=MEDFileField1TS()
1672 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1673 m.write(fname,2) ; f0.write(fname,0)
1674 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1675 fieldNode1.setName("fieldNode1")
1676 fieldNode1.setTime(tim,dt,it)
1677 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1678 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1679 fieldNode1.setArray(arr1)
1680 f1=MEDFileField1TS()
1681 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1684 ## Reading from file
1685 m=MEDFileMesh.New(fname)
1686 m0=m.getMeshAtLevel(0)
1687 m00=m0.deepCpy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1688 fieldNode0.setMesh(m00)
1689 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1690 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1691 ff0_1.checkCoherency()
1692 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1693 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1694 ff0_2.checkCoherency()
1695 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1696 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1697 ff0_3.checkCoherency()
1698 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1699 ff0_4=MEDLoader.ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1700 ff0_4.checkCoherency()
1701 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1702 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1703 m1=m.getMeshAtLevel(-1)
1704 m10=m1.deepCpy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1705 fieldNode1.setMesh(m10)
1706 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1707 ff1_1.checkCoherency()
1708 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1709 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1710 ff1_2.checkCoherency()
1711 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1712 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1713 ff1_3.checkCoherency()
1714 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1715 ff1_4=MEDLoader.ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1716 ff1_4.checkCoherency()
1717 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1718 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]
1719 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]
1720 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]
1721 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1722 arr_r.setName(fieldNode1.getArray().getName())
1723 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1724 pfl1_r.setName(pfl1.getName())
1725 self.assertTrue(pfl1_r.isEqual(pfl1))
1728 # Testing profile on nodes when the profile is identity but not on all nodes.
1729 def testMEDFieldPflOnCell1(self):
1730 fname="Pyfile52.med"
1731 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)
1732 m0=MEDCouplingUMesh("Mesh",2)
1734 m0.insertNextCell(NORM_TRI3,[1,4,2])
1735 m0.insertNextCell(NORM_TRI3,[4,5,2])
1736 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1737 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1738 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1739 m0.finishInsertingCells()
1741 m1=MEDCouplingUMesh(m0.getName(),1)
1743 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1745 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1747 m1.finishInsertingCells()
1751 m.setMeshAtLevel(0,m0)
1752 m.setMeshAtLevel(-1,m1)
1754 dt=3 ; it=2 ; tim=4.5
1755 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1756 fieldCell0.setName("fieldCell0")
1757 fieldCell0.setTime(tim,dt,it)
1758 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1759 arr=DataArrayDouble([10,11,12])
1760 fieldCell0.setArray(arr)
1761 f0=MEDFileField1TS()
1762 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1763 m.write(fname,2) ; f0.write(fname,0)
1764 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1765 fieldCell1.setName("fieldCell1")
1766 fieldCell1.setTime(tim,dt,it)
1767 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1768 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1769 fieldCell1.setArray(arr1)
1770 f1=MEDFileField1TS()
1771 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1774 ## Reading from file
1775 m=MEDFileMesh.New(fname)
1776 m0=m.getMeshAtLevel(0)
1777 m00=m0.deepCpy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1778 fieldCell0.setMesh(m00)
1779 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1780 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1781 ff0_1.checkCoherency()
1782 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1783 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1784 ff0_2.checkCoherency()
1785 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1786 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1787 ff0_3.checkCoherency()
1788 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1789 ff0_4=MEDLoader.ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1790 ff0_4.checkCoherency()
1791 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1792 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1793 m1=m.getMeshAtLevel(-1)
1794 m10=m1.deepCpy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1795 fieldCell1.setMesh(m10)
1796 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1797 ff1_1.checkCoherency()
1798 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1799 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1800 ff1_2.checkCoherency()
1801 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1802 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1803 ff1_3.checkCoherency()
1804 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1805 ff1_4=MEDLoader.ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1806 ff1_4.checkCoherency()
1807 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1808 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]
1809 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]
1810 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]
1811 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1812 arr_r.setName(fieldCell1.getArray().getName())
1813 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1814 pfl1_r.setName(pfl1.getName())
1815 self.assertTrue(pfl1_r.isEqual(pfl1))
1818 def testMEDFileUMeshZipCoords1(self):
1820 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1821 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])
1822 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1823 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1824 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1825 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1826 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1827 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1828 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1829 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1830 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1831 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1833 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1834 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1835 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1836 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1837 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1838 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1839 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1840 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1841 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
1844 def testMEDUMeshAddNodeGroup1(self):
1845 fname="Pyfile53.med"
1847 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1848 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])
1849 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1850 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1851 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1852 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1853 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1856 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
1857 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
1858 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1859 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1860 mm.setFamilyId("MyFam",2)
1861 mm.setFamilyId("MyOtherFam",3)
1862 mm.setFamilyId("MyOther-1",-1)
1863 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1864 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1866 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1867 mm.addNodeGroup(daTest)
1868 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1869 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1870 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1871 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1873 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1874 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1875 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1876 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1877 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1878 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1880 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
1881 da=DataArrayInt([3,12]) ; da.setName("grp0")
1882 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1884 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1886 mm=MEDFileMesh.New(fname)
1887 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1888 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1889 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1890 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1892 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1893 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1894 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1895 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1896 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1897 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1899 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
1900 da=DataArrayInt([3,12]) ; da.setName("grp0")
1901 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1903 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1906 def testMEDUMeshAddGroup1(self):
1907 fname="Pyfile54.med"
1909 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1910 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
1912 m0.insertNextCell(NORM_TRI3,[1,2,1])
1915 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
1918 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
1920 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1921 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1922 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1923 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1924 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1927 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
1928 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
1929 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1930 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1931 mm.setFamilyId("MyFam",2)
1932 mm.setFamilyId("MyOtherFam",3)
1933 mm.setFamilyId("MyOther-1",-1)
1934 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1935 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1937 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1938 mm.addGroup(0,daTest)
1939 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1940 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1941 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1942 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1944 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1945 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1946 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1947 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1948 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1949 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1951 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
1952 da=DataArrayInt([3,12]) ; da.setName("grp0")
1953 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1955 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1957 mm=MEDFileMesh.New(fname)
1958 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1959 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1960 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1961 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1963 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1964 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1965 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1966 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1967 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1968 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1970 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
1971 da=DataArrayInt([3,12]) ; da.setName("grp0")
1972 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1974 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1977 def testHeapMem1(self):
1978 a=DataArrayInt() ; aa=a.getHeapMemorySize()
1980 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
1982 m=MEDCouplingCMesh()
1983 arr=DataArrayDouble(10,1) ; arr.iota(0)
1984 m.setCoords(arr,arr)
1985 m=m.buildUnstructured()
1987 f=m.getMeasureField(ON_CELLS)
1988 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
1989 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
1992 mm.setMeshAtLevel(0,m)
1993 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100+10*strMulFac))
1994 ff=MEDFileField1TS()
1995 ff.setFieldNoProfileSBT(f)
1996 self.assertIn(ff.getHeapMemorySize(),xrange(771-40,771+21+(4+1)*strMulFac))
1998 fff=MEDFileFieldMultiTS()
1999 fff.appendFieldNoProfileSBT(f)
2000 self.assertIn(fff.getHeapMemorySize(),xrange(815-50,815+30+(6+2)*strMulFac))
2002 fff.appendFieldNoProfileSBT(f)
2003 self.assertIn(fff.getHeapMemorySize(),xrange(1594-90,1594+50+(10+1)*strMulFac))
2004 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(771-40,771+20+(4+1)*strMulFac))
2007 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2008 fff.appendFieldProfile(f2,mm,0,pfl)
2009 self.assertIn(fff.getHeapMemorySize(),xrange(2348-130,2348+100+(10+2)*strMulFac))
2010 self.assertIn(fff.getProfile("pfl").getHeapMemorySize(),xrange(204-10,204+10+2*strMulFac))
2011 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(738-50,738+30+4*strMulFac))
2014 def testCurveLinearMesh1(self):
2015 fname="Pyfile55.med"
2016 mesh=MEDCouplingCurveLinearMesh();
2017 mesh.setTime(2.3,4,5);
2018 mesh.setTimeUnit("us");
2019 mesh.setName("Example of Cuve linear mesh");
2020 mesh.setDescription("buildCLMesh");
2021 a1=DataArrayDouble(3*20,1);
2022 a1.iota(7.) ; a1.rearrange(3);
2024 mesh.setNodeGridStructure([4,5]);
2025 mesh.checkCoherency();
2027 m=MEDFileCurveLinearMesh()
2029 d=DataArrayInt(20) ; d.iota(4)
2030 m.setFamilyFieldArr(1,d)
2031 d3=DataArrayInt(20) ; d3.iota(400)
2032 m.setRenumFieldArr(1,d3)
2033 d2=DataArrayInt(12) ; d2.iota(40)
2034 m.setFamilyFieldArr(0,d2)
2035 d4=DataArrayInt(21) ; d4.iota(4000)
2036 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2038 m.setRenumFieldArr(1,d4)
2041 m1=MEDFileCurveLinearMesh(fname)
2043 self.assertTrue(mm.isEqual(mesh,1e-12))
2044 self.assertEqual(mm.getSpaceDimension(),3)
2045 self.assertEqual(mm.getSpaceDimensionOnNodeStruct(),2)
2047 m1=MEDFileMesh.New(fname)
2048 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2049 self.assertTrue(isinstance(m1.getUnivName(),str))
2050 self.assertTrue(len(m1.getUnivName())!=0)
2051 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2054 def testParameters1(self):
2055 fname="Pyfile56.med"
2056 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2057 mm=MEDFileCMesh() ; mm.setMesh(m)
2058 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2060 p=MEDFileParameters()
2061 data.setParams(p) ; data.setMeshes(ms)
2062 pts=MEDFileParameterMultiTS()
2063 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2064 pts.appendValue(1,2,3.4,567.89)
2065 pts.appendValue(2,3,5.6,999.123)
2066 pts2=pts.deepCpy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2067 p.pushParam(pts) ; p.pushParam(pts2)
2069 p2=MEDFileParameters(fname)
2070 self.assertTrue(p.isEqual(p2,1e-14)[0])
2071 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2075 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2076 pts2.eraseTimeStepIds([0])
2077 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2079 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2080 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2081 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2082 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2083 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2085 self.assertTrue(p.isEqual(p2,1e-14)[0])
2086 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2087 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2088 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2089 self.assertEqual(p.getParamsNames(),('A','B'))
2090 ptsr=MEDFileParameterMultiTS(fname,"B")
2091 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2092 ptsr=MEDFileParameterMultiTS(fname)
2093 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2094 p1tsr=MEDFileParameterDouble1TS(fname)
2095 self.assertEqual(p1tsr.getName(),"A")
2096 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2097 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2098 self.assertEqual(p1tsr.getName(),"B")
2099 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2100 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2101 self.assertEqual(p1tsr.getName(),"B")
2102 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2103 data2=MEDFileData(fname)
2104 self.assertEqual(2,data2.getNumberOfParams())
2105 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2108 def testNamesOnCellAndNodesInMeshes1(self):
2109 fname="Pyfile58.med"
2110 fname2="Pyfile59.med"
2111 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2112 m1=m.buildDescendingConnectivity()[0]
2113 m1.sortCellsInMEDFileFrmt()
2116 mm.setMeshAtLevel(0,m)
2117 mm.setMeshAtLevel(-1,m1)
2118 namesCellL0=DataArrayAsciiChar(6,16)
2119 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2120 mm.setNameFieldAtLevel(0,namesCellL0)
2121 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.substr(2)])
2122 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2123 mm.setNameFieldAtLevel(-1,namesCellL1)
2124 namesNodes=namesCellL1.substr(4,16)
2125 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2126 mm.setNameFieldAtLevel(1,namesNodes)
2129 mmr=MEDFileMesh.New(fname)
2130 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2131 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2132 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2133 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2134 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2135 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2136 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2137 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2139 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2140 # remove names on nodes
2141 mmCpy.setNameFieldAtLevel(1,None)
2142 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2143 mm.setNameFieldAtLevel(1,None)
2144 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2145 mm.setNameFieldAtLevel(-1,None)
2147 mmr=MEDFileMesh.New(fname)
2148 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2149 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2150 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2152 c=MEDCouplingCMesh()
2153 arr=DataArrayDouble([0.,1.1,2.3])
2154 c.setCoords(arr,arr)
2158 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2159 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2161 ccr=MEDFileMesh.New(fname2)
2162 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2163 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2164 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2165 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2166 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2167 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2168 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2170 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2173 def testToExportInExamples1(self):
2174 m=MEDCouplingCMesh()
2175 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2176 m.setCoords(arr,arr)
2177 m=m.buildUnstructured() ; m.setName("mesh")
2178 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2179 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2182 mm.setMeshAtLevel(0,m)
2183 mm.setMeshAtLevel(-1,m2)
2184 mm.setGroupsAtLevel(0,[grp1,grp2])
2185 mm.write("example.med",2)
2187 m0=mm.getMeshAtLevel(0)
2188 m1=mm.getMeshAtLevel(-1)
2189 grp1=mm.getGroupArr(0,"grp1")
2190 grp2=mm.getGroupArr(0,"grp2")
2192 whichGrp=DataArrayInt(m0.getNumberOfCells())
2193 whichGrp.fillWithValue(-1)
2194 for grpId,grp in enumerate(grps):
2197 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2198 e,f=a.areCellsIncludedIn(m1,2)
2200 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2201 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2202 c2.transformWithIndArr(whichGrp)
2203 splitOfM1=len(grps)*[None]
2204 for grpId,grp in enumerate(grps):
2205 tmp=c2.getIdsEqual(grpId)
2206 splitOfM1[grpId]=tmp
2208 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2209 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2212 def testBugCorrection1(self):
2215 self.assertEqual(fs[0],None)
2216 self.assertEqual(3,len(fs))
2219 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2220 f1Name="Pyfile60.med"
2221 f2Name="Pyfile61.med"
2222 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2224 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2226 # reading and compare
2227 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2228 for mn in d1.getMeshes().getMeshesNames():
2229 m1=d1.getMeshes()[mn]
2230 m2=d2.getMeshes()[mn]
2231 for lev in m1.getNonEmptyLevels():
2232 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2233 for grpName in grpsNames:
2234 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2238 for fieldn in d1.getFields().getFieldsNames():
2239 f1=d1.getFields()[fieldn]
2240 f2=d2.getFields()[fieldn]
2241 for it,order,tim in f1.getTimeSteps():
2244 if len(f1t.getPflsReallyUsed())!=0:
2246 for lev in f1t.getNonEmptyLevels()[1]:
2247 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2248 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2249 self.assertTrue(pfl1.isEqual(pfl2))
2250 self.assertTrue(arr1.isEqual(arr2,1e-10))
2255 for lev in f1t.getNonEmptyLevels()[1]:
2256 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2257 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2258 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2265 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2266 m=MEDCouplingCMesh()
2267 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2268 m.setCoords(arr,arr,arr)
2269 m=m.buildUnstructured()
2270 m2=m.buildDescendingConnectivity()[0]
2272 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2273 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2274 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2275 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2276 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2277 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2279 mm.setMeshAtLevel(0,m)
2280 mm.setGroupsAtLevel(0,[g1,g2])
2281 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2282 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2283 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2284 mm.normalizeFamIdsMEDFile()
2285 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2286 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2287 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2288 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2289 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2290 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2291 for g in mm.getGroupsOnSpecifiedLev(0):
2292 for f in mm.getFamiliesIdsOnGroup(g):
2293 self.assertTrue(f<0)
2298 mm.setMeshAtLevel(0,m)
2299 mm.setMeshAtLevel(-1,m2)
2300 mm.setGroupsAtLevel(0,[g1,g2])
2301 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2302 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2303 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2304 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2305 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2306 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2307 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2308 mm.normalizeFamIdsMEDFile()
2309 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2310 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2311 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2312 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2313 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2314 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2315 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2316 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2317 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2318 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2319 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2320 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2322 for g in mm.getGroupsOnSpecifiedLev(lev):
2323 for f in mm.getFamiliesIdsOnGroup(g):
2324 self.assertTrue(f<0)
2330 mm.setMeshAtLevel(0,m)
2331 mm.setMeshAtLevel(-1,m2)
2332 mm.setGroupsAtLevel(0,[g1,g2])
2333 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2334 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2335 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2336 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2337 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2338 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2339 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2340 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2341 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2342 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2343 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2344 mm.normalizeFamIdsMEDFile()
2345 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2346 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2347 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2348 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2349 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2350 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2351 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2352 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2353 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2354 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2355 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2356 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2357 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2358 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2359 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2360 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2361 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2362 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2364 for g in mm.getGroupsOnSpecifiedLev(lev):
2365 for f in mm.getFamiliesIdsOnGroup(g):
2366 self.assertTrue(f<0)
2370 for g in mm.getGroupsOnSpecifiedLev(1):
2371 for f in mm.getFamiliesIdsOnGroup(g):
2372 self.assertTrue(f>0)
2377 def testNonRegressionMantis22212ChangeGrpName(self):
2378 fileName="Pyfile62.med"
2379 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2380 m=MEDFileUMesh.New()
2381 m.setCoords(m2.getCoords())
2382 m.setMeshAtLevel(0,m2)
2383 m.setMeshAtLevel(-1,m1)
2384 m.setMeshAtLevel(-2,m0)
2385 m.setFamilyFieldArr(0,f2)
2386 m.setFamilyFieldArr(-1,f1)
2387 m.setFamilyFieldArr(-2,f0)
2388 m.setFamilyFieldArr(1,p)
2390 for i in xrange(nbOfFams):
2391 m.addFamily(fns[i],fids[i])
2394 for i in xrange(nbOfGrps):
2395 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2397 m.setName(m2.getName())
2398 m.setDescription(m2.getDescription())
2401 mm0=MEDFileMesh.New(fileName)
2402 mm1=MEDFileMesh.New(fileName)
2403 groupNamesIni=MEDLoader.GetMeshGroupsNames(fileName,"ma")
2404 for name in groupNamesIni:
2405 mm1.changeGroupName(name,name+'N')
2407 mm1.write(fileName,2)
2410 mm2=MEDFileMesh.New(fileName)
2411 for name in groupNamesIni:
2412 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2413 arr0=mm0.getGroupArr(lev,name)
2414 arr2=mm2.getGroupArr(lev,name+'N')
2415 arr0.setName(name+'N')
2416 self.assertTrue(arr0.isEqual(arr2))
2421 def testInt32InMEDFileFieldStar1(self):
2422 fname="Pyfile63.med"
2423 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2424 arr=f1.getArray().convertToIntArr()
2427 mm1=MEDFileUMesh.New()
2428 mm1.setCoords(m1.getCoords())
2429 mm1.setMeshAtLevel(0,m1)
2430 mm1.setName(m1.getName())
2432 ff1=MEDFileIntField1TS()
2433 ff1.setFieldNoProfileSBT(f1,arr)
2434 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2435 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2436 self.assertTrue(b.isEqual(arr))
2437 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2439 ff2=MEDFileAnyTypeField1TS.New(fname)
2440 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2441 self.assertEqual(ff2.getTime(),[0,1,2.0])
2442 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2443 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2444 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2445 self.assertTrue(b.isEqual(arr))
2446 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2448 c=ff2.getUndergroundDataArray() ; c*=2
2449 ff2.write(fname,0) # 2 time steps in
2450 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2451 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2452 self.assertEqual(len(ffs1),2)
2453 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2454 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2455 self.assertTrue(b.isEqual(arr))
2456 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2457 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2458 self.assertTrue(b.isEqual(arr))
2459 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2460 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2461 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2462 self.assertTrue(b.isEqual(2*arr))
2464 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2465 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2467 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2470 self.assertTrue(bc.isEqual(3*arr))
2471 nf1=MEDCouplingFieldDouble(ON_NODES)
2472 nf1.setTime(9.,10,-1)
2473 nf1.setMesh(f1.getMesh())
2474 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2475 nf1.setName("VectorFieldOnNodes")
2476 nff1=MEDFileIntField1TS.New()
2477 nff1.setFieldNoProfileSBT(nf1,narr)
2478 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2479 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2482 nf2=MEDCouplingFieldDouble(ON_NODES)
2483 nf2.setTime(19.,20,-11)
2484 nf2.setMesh(f1.getMesh())
2485 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2486 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2487 nff2=MEDFileIntField1TS.New()
2488 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2489 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2490 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2491 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2492 self.assertTrue(b.isEqual(npfl))
2493 self.assertTrue(a.isEqual(narr2))
2495 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2496 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2497 self.assertTrue(b.isEqual(npfl))
2498 self.assertTrue(a.isEqual(narr2))
2500 nf3=MEDCouplingFieldDouble(ON_NODES)
2501 nf3.setName("VectorFieldOnNodesDouble")
2502 nf3.setTime(29.,30,-21)
2503 nf3.setMesh(f1.getMesh())
2504 nf3.setArray(f1.getMesh().getCoords())
2505 nff3=MEDFileField1TS.New()
2506 nff3.setFieldNoProfileSBT(nf3)
2508 fs=MEDFileFields(fname)
2509 self.assertEqual(len(fs),4)
2510 ffs=[it for it in fs]
2511 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2512 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2513 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2514 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2516 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2517 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2518 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2519 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2520 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2522 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2523 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2524 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2525 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2526 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2527 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2528 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2529 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2531 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2532 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2533 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2534 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2537 def testMEDFileFields1(self):
2538 fname="Pyfile64.med"
2539 f1=MEDCouplingFieldDouble(ON_NODES)
2540 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2541 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2542 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2544 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2546 f1.setName("Field1")
2547 ff1=MEDFileField1TS.New()
2548 ff1.setFieldNoProfileSBT(f1)
2549 self.assertEqual(ff1.getDtUnit(),"us")
2551 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2552 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2554 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2555 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2556 ff1s.setName("Field2")
2558 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2559 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2560 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2561 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2562 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2563 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2564 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2565 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2568 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2569 def testMEDFileFields2(self):
2570 fname="Pyfile65.med"
2571 # to check that all is initialize
2572 MEDFileField1TS().__str__()
2573 MEDFileFieldMultiTS().__str__()
2574 # building a mesh containing 4 tri3 + 5 quad4
2575 tri=MEDCouplingUMesh("tri",2)
2576 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2577 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2578 tris=[tri.deepCpy() for i in xrange(4)]
2579 for i,elt in enumerate(tris): elt.translate([i,0])
2580 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2581 quad=MEDCouplingUMesh("quad",2)
2582 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2583 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2584 quads=[quad.deepCpy() for i in xrange(5)]
2585 for i,elt in enumerate(quads): elt.translate([5+i,0])
2586 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2587 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2588 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2590 fmts0_0=MEDFileFieldMultiTS()
2591 fmts0_1=MEDFileFieldMultiTS()
2593 for i in xrange(10):
2594 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2595 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2596 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2597 f.setTime(float(i+1)+0.1,i+1,-i-1)
2598 fmts0_0.appendFieldNoProfileSBT(f)
2599 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2600 self.assertEqual(fmts0_1.getName(),name1)
2601 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2602 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2604 # components names have been modified to generate errors
2605 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2606 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2607 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2608 f1ts.setInfo(['aa [bb]','eee [dd]'])
2609 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2611 # add a mismatch of nb of compos
2613 fmts0_2=fmts0_0.deepCpy()
2614 fmts0_3=fmts0_0.deepCpy()
2615 fmts0_4=fmts0_0.deepCpy()
2616 fmts0_5=fmts0_0.shallowCpy()
2617 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)
2619 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2620 del fmts0_3[[1.1,(6,-6),9]]
2621 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2622 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2623 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2624 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2625 fmts0_7=fmts0_4[::-3]
2626 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2627 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2630 fs0.pushField(fmts0_0)
2631 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2632 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2633 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2634 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2636 fs0=MEDFileFields(fname)
2637 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2638 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2639 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2640 del fs1[["2ndField",3]]
2641 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2642 fs2=fs0[[0,"4thField"]]
2643 self.assertTrue(isinstance(fs2,MEDFileFields))
2644 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2646 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2649 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2650 def testMEDFileFields3(self):
2651 fname="Pyfile66.med"
2652 # building a mesh containing 4 tri3 + 5 quad4
2653 tri=MEDCouplingUMesh("tri",2)
2654 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2655 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2656 tris=[tri.deepCpy() for i in xrange(4)]
2657 for i,elt in enumerate(tris): elt.translate([i,0])
2658 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2659 quad=MEDCouplingUMesh("quad",2)
2660 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2661 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2662 quads=[quad.deepCpy() for i in xrange(5)]
2663 for i,elt in enumerate(quads): elt.translate([5+i,0])
2664 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2665 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2666 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2668 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2670 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2671 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2672 fmts0_0=MEDFileFieldMultiTS()
2673 fmts0_1=MEDFileFieldMultiTS()
2675 for i in xrange(10):
2676 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2677 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2678 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2679 f.setTime(float(i+1)+0.1,i+1,-i-1)
2680 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2681 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2682 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2683 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2686 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2687 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2688 fmts0_0.zipPflsNames()
2689 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2690 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2691 fmts0_2=fmts0_0.deepCpy()
2692 fmts0_3=fmts0_0.deepCpy()
2693 fmts0_4=fmts0_0.deepCpy()
2695 fs0.pushField(fmts0_0)
2696 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2697 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2698 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2699 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2701 fmts0_5=MEDFileFieldMultiTS()
2703 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2704 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2705 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2706 f.setTime(float(i+1)+0.1,i+1,-i-1)
2707 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2709 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2710 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2711 fs0.checkGlobsCoherency()
2715 def testSplitComponents1(self):
2716 fname="Pyfile67.med"
2717 # building a mesh containing 4 tri3 + 5 quad4
2718 tri=MEDCouplingUMesh("tri",2)
2719 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2720 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2721 tris=[tri.deepCpy() for i in xrange(4)]
2722 for i,elt in enumerate(tris): elt.translate([i,0])
2723 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2724 quad=MEDCouplingUMesh("quad",2)
2725 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2726 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2727 quads=[quad.deepCpy() for i in xrange(5)]
2728 for i,elt in enumerate(quads): elt.translate([5+i,0])
2729 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2730 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2731 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2733 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2735 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2736 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2738 fmts0_1=MEDFileFieldMultiTS()
2740 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2741 for i in xrange(10):
2743 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2744 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2745 f.setTime(float(i+1)+0.1,i+1,-i-1)
2746 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2747 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2749 fs.pushField(fmts0_1)
2750 self.assertEqual(1,len(fs))
2751 l=fmts0_1.splitComponents()
2752 self.assertEqual(3,len(l))
2753 for elt in l: self.assertEqual(10,len(elt))
2754 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2756 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2759 self.assertEqual(4,len(fs))
2760 for elt in fs: self.assertEqual(10,len(elt))
2761 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2762 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2764 fs.write(fname,0) ; del fs
2766 fs1=MEDFileFields(fname)
2767 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2768 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2769 self.assertEqual(4,len(fs1))
2770 for i in xrange(10):
2771 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2772 f1ts=fs1[fieldName][i]
2773 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2774 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2775 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2777 f1ts=fs1["1stField"][i]
2778 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2779 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2780 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2784 def testMEDFileFieldConvertTo1(self):
2785 fname="Pyfile68.med"
2786 # building a mesh containing 4 tri3 + 5 quad4
2787 tri=MEDCouplingUMesh("tri",2)
2788 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2789 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2790 tris=[tri.deepCpy() for i in xrange(4)]
2791 for i,elt in enumerate(tris): elt.translate([i,0])
2792 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2793 quad=MEDCouplingUMesh("quad",2)
2794 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2795 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2796 quads=[quad.deepCpy() for i in xrange(5)]
2797 for i,elt in enumerate(quads): elt.translate([5+i,0])
2798 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2799 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2800 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2801 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2803 ff0=MEDFileField1TS()
2804 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")
2806 ff0.setFieldNoProfileSBT(f0)
2808 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2809 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2811 ff0i=ff0.convertToInt()
2812 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2813 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2815 ff1=ff0i.convertToDouble()
2816 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2817 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2819 del arr,f0,ff0,ff1,ff0i,fspExp
2820 ff0=MEDFileField1TS()
2821 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")
2823 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2824 ff0.setFieldProfile(f0,mm,0,pfl)
2825 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2826 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2828 ff0i=ff0.convertToInt()
2829 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2830 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2831 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2833 ff1=ff0i.convertToDouble()
2834 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2835 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2836 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2838 ff0=MEDFileFieldMultiTS()
2839 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)
2841 ff0.appendFieldProfile(f0,mm,0,pfl)
2842 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)
2844 ff0.appendFieldProfile(f0,mm,0,pfl)
2845 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)
2847 ff0.appendFieldProfile(f0,mm,0,pfl)
2848 ff1=ff0.convertToInt()
2849 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2850 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2851 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2852 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2853 arr=ff1.getUndergroundDataArray(dt,it)
2854 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2856 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2861 ff1=ff1.convertToDouble()
2862 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
2863 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2864 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2865 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2866 arr=ff1.getUndergroundDataArray(dt,it)
2867 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
2869 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2871 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
2872 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2873 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2874 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2875 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
2876 arr=ff1.getUndergroundDataArray(dt,it)
2877 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2879 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
2882 def testMEDFileFieldPartialLoading(self):
2883 fname="Pyfile69.med"
2885 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2887 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2888 # building a mesh containing 30 tri3 + 40 quad4
2889 tri=MEDCouplingUMesh("tri",2)
2890 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2891 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2892 tris=[tri.deepCpy() for i in xrange(30)]
2893 for i,elt in enumerate(tris): elt.translate([i,0])
2894 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2895 quad=MEDCouplingUMesh("quad",2)
2896 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2897 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2898 quads=[quad.deepCpy() for i in xrange(40)]
2899 for i,elt in enumerate(quads): elt.translate([40+i,0])
2900 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2901 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2902 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2903 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2905 ff0=MEDFileField1TS()
2906 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")
2908 ff0.setFieldNoProfileSBT(f0)
2911 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
2912 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2914 ff0=MEDFileField1TS()
2915 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")
2917 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2918 ff0.setFieldProfile(f0,mm,0,pfl)
2919 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
2920 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2923 ff0=MEDFileField1TS(fname,False)
2924 self.assertEqual(ff0.getName(),"FieldCell")
2925 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
2926 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
2927 heap_memory_ref=ff0.getHeapMemorySize()
2928 self.assertIn(heap_memory_ref,xrange(182,298+2*strMulFac))
2930 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
2931 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2932 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
2934 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
2935 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
2936 heap_memory_ref=ff0.getHeapMemorySize()
2937 self.assertIn(heap_memory_ref,xrange(350,415+6*strMulFac))
2939 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
2940 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2941 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2943 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2944 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2945 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2946 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2948 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2949 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2950 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2951 ff0.loadArraysIfNecessary() ##
2952 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
2953 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2954 heap_memory_ref=ff0.getHeapMemorySize()
2955 self.assertIn(heap_memory_ref,xrange(1100,1215+2*strMulFac))
2957 hmd=ff0.getHeapMemorySize()-heap_memory_ref
2958 self.assertEqual(hmd,-800) # -50*8*2
2960 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
2962 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
2963 heap_memory_ref=ff0.getHeapMemorySize()
2964 self.assertIn(heap_memory_ref,xrange(299,415+6*strMulFac))
2966 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2967 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2969 fieldName="FieldCellMultiTS"
2970 ff0=MEDFileFieldMultiTS()
2971 for t in xrange(20):
2972 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)
2973 f0.setTime(float(t)+0.1,t,100+t)
2975 ff0.appendFieldNoProfileSBT(f0)
2979 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
2980 heap_memory_ref=ff0.getHeapMemorySize()
2981 self.assertIn(heap_memory_ref,xrange(5536,5956+(80+26)*strMulFac))
2983 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
2986 ffs=MEDFileFields(fname,False)
2987 heap_memory_ref=ffs.getHeapMemorySize()
2988 self.assertIn(heap_memory_ref,xrange(5335,6687+(80+50)*strMulFac))
2990 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
2993 def testMEDFileMeshReadSelector1(self):
2994 mrs=MEDFileMeshReadSelector()
2995 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
2996 mrs.__str__() ; mrs.__repr__()
2998 mrs=MEDFileMeshReadSelector(0)
2999 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())
3000 mrs=MEDFileMeshReadSelector(1)
3001 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3002 mrs=MEDFileMeshReadSelector(2)
3003 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3004 mrs=MEDFileMeshReadSelector(3)
3005 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3006 mrs=MEDFileMeshReadSelector(4)
3007 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3008 mrs=MEDFileMeshReadSelector(5)
3009 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3010 mrs=MEDFileMeshReadSelector(6)
3011 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3012 mrs=MEDFileMeshReadSelector(7)
3013 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3014 mrs=MEDFileMeshReadSelector(8)
3015 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3016 mrs=MEDFileMeshReadSelector(9)
3017 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3018 mrs=MEDFileMeshReadSelector(10)
3019 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3020 mrs=MEDFileMeshReadSelector(11)
3021 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3022 mrs=MEDFileMeshReadSelector(12)
3023 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3024 mrs=MEDFileMeshReadSelector(13)
3025 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3026 mrs=MEDFileMeshReadSelector(14)
3027 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3028 mrs=MEDFileMeshReadSelector(15)
3029 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3030 mrs=MEDFileMeshReadSelector(16)
3031 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3032 mrs=MEDFileMeshReadSelector(17)
3033 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3034 mrs=MEDFileMeshReadSelector(18)
3035 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3036 mrs=MEDFileMeshReadSelector(19)
3037 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3038 mrs=MEDFileMeshReadSelector(20)
3039 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3040 mrs=MEDFileMeshReadSelector(21)
3041 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3042 mrs=MEDFileMeshReadSelector(22)
3043 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3044 mrs=MEDFileMeshReadSelector(23)
3045 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3046 mrs=MEDFileMeshReadSelector(24)
3047 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3048 mrs=MEDFileMeshReadSelector(25)
3049 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3050 mrs=MEDFileMeshReadSelector(26)
3051 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3052 mrs=MEDFileMeshReadSelector(27)
3053 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3054 mrs=MEDFileMeshReadSelector(28)
3055 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3056 mrs=MEDFileMeshReadSelector(29)
3057 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3058 mrs=MEDFileMeshReadSelector(30)
3059 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3060 mrs=MEDFileMeshReadSelector(31)
3061 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3062 mrs=MEDFileMeshReadSelector(32)
3063 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3064 mrs=MEDFileMeshReadSelector(33)
3065 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3066 mrs=MEDFileMeshReadSelector(34)
3067 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3068 mrs=MEDFileMeshReadSelector(35)
3069 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3070 mrs=MEDFileMeshReadSelector(36)
3071 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3072 mrs=MEDFileMeshReadSelector(37)
3073 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3074 mrs=MEDFileMeshReadSelector(38)
3075 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3076 mrs=MEDFileMeshReadSelector(39)
3077 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3078 mrs=MEDFileMeshReadSelector(40)
3079 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3080 mrs=MEDFileMeshReadSelector(41)
3081 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3082 mrs=MEDFileMeshReadSelector(42)
3083 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3084 mrs=MEDFileMeshReadSelector(43)
3085 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3086 mrs=MEDFileMeshReadSelector(44)
3087 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3088 mrs=MEDFileMeshReadSelector(45)
3089 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3090 mrs=MEDFileMeshReadSelector(46)
3091 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3092 mrs=MEDFileMeshReadSelector(47)
3093 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3094 mrs=MEDFileMeshReadSelector(48)
3095 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3096 mrs=MEDFileMeshReadSelector(49)
3097 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3098 mrs=MEDFileMeshReadSelector(50)
3099 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3100 mrs=MEDFileMeshReadSelector(51)
3101 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3102 mrs=MEDFileMeshReadSelector(52)
3103 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3104 mrs=MEDFileMeshReadSelector(53)
3105 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3106 mrs=MEDFileMeshReadSelector(54)
3107 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3108 mrs=MEDFileMeshReadSelector(55)
3109 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3110 mrs=MEDFileMeshReadSelector(56)
3111 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3112 mrs=MEDFileMeshReadSelector(57)
3113 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3114 mrs=MEDFileMeshReadSelector(58)
3115 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3116 mrs=MEDFileMeshReadSelector(59)
3117 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3118 mrs=MEDFileMeshReadSelector(60)
3119 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3120 mrs=MEDFileMeshReadSelector(61)
3121 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3122 mrs=MEDFileMeshReadSelector(62)
3123 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3124 mrs=MEDFileMeshReadSelector(63)
3125 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3127 mrs=MEDFileMeshReadSelector(63)
3128 mrs.setCellFamilyFieldReading(False)
3129 self.assertEqual(mrs.getCode(),62)
3130 mrs.setCellFamilyFieldReading(True)
3131 self.assertEqual(mrs.getCode(),63)
3132 mrs.setNodeFamilyFieldReading(False)
3133 self.assertEqual(mrs.getCode(),61)
3134 mrs.setNodeFamilyFieldReading(True)
3135 self.assertEqual(mrs.getCode(),63)
3136 mrs.setCellNameFieldReading(False)
3137 self.assertEqual(mrs.getCode(),59)
3138 mrs.setCellNameFieldReading(True)
3139 self.assertEqual(mrs.getCode(),63)
3140 mrs.setNodeNameFieldReading(False)
3141 self.assertEqual(mrs.getCode(),55)
3142 mrs.setNodeNameFieldReading(True)
3143 self.assertEqual(mrs.getCode(),63)
3144 mrs.setCellNumFieldReading(False)
3145 self.assertEqual(mrs.getCode(),47)
3146 mrs.setCellNumFieldReading(True)
3147 self.assertEqual(mrs.getCode(),63)
3148 mrs.setNodeNumFieldReading(False)
3149 self.assertEqual(mrs.getCode(),31)
3150 mrs.setNodeNumFieldReading(True)
3151 self.assertEqual(mrs.getCode(),63)
3154 def testPartialReadOfMeshes(self):
3155 fname="Pyfile70.med"
3156 # building a mesh containing 4 tri3 + 5 quad4
3157 tri=MEDCouplingUMesh("tri",2)
3158 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3159 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3160 tris=[tri.deepCpy() for i in xrange(4)]
3161 for i,elt in enumerate(tris): elt.translate([i,0])
3162 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3163 quad=MEDCouplingUMesh("quad",2)
3164 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3165 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3166 quads=[quad.deepCpy() for i in xrange(5)]
3167 for i,elt in enumerate(quads): elt.translate([5+i,0])
3168 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3169 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3170 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3171 m1=m.buildDescendingConnectivity()[0]
3172 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3174 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3175 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3176 mm.setGroupsAtLevel(0,[grp0,grp1])
3177 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3178 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3179 mm.setGroupsAtLevel(-1,[grp2,grp3])
3180 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3181 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3182 mm.setGroupsAtLevel(1,[grp4,grp5])
3183 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3184 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3185 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3189 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3190 b4_ref_heap_mem=mm.getHeapMemorySize()
3191 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3192 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3193 ref_heap_mem=mm.getHeapMemorySize()
3194 # check the gain of memory using 1GTUMesh instead of UMesh
3195 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
3197 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3198 self.assertEqual(len(mm.getGroupsNames()),0)
3199 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3200 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3201 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3202 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3203 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3204 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3205 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3206 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3207 delta1=ref_heap_mem-mm.getHeapMemorySize()
3208 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3210 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3211 self.assertEqual(len(mm.getGroupsNames()),6)
3212 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3213 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3214 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3215 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3216 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3217 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3218 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3219 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3220 delta2=ref_heap_mem-mm.getHeapMemorySize()
3221 self.assertTrue(delta2<delta1)
3222 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3224 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3225 self.assertEqual(len(mm.getGroupsNames()),6)
3226 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3227 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3228 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3229 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3230 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3231 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3232 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3233 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3234 delta3=ref_heap_mem-mm.getHeapMemorySize()
3235 self.assertTrue(delta3<delta2)
3236 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3238 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3239 self.assertEqual(len(mm.getGroupsNames()),6)
3240 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3241 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3242 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3243 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3244 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3245 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3246 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3247 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3248 delta4=ref_heap_mem-mm.getHeapMemorySize()
3249 self.assertTrue(delta4<delta3)
3250 self.assertTrue(delta4>=32*4*2)
3252 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3253 self.assertEqual(len(mm.getGroupsNames()),6)
3254 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3255 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3256 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3257 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3258 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3259 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3260 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3261 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3262 delta5=ref_heap_mem-mm.getHeapMemorySize()
3263 self.assertTrue(delta5<delta4)
3264 self.assertEqual(delta5,0)
3267 # this test checks that setFieldProfile perform a check of the array length
3268 # compared to the profile length. This test also checks that mesh attribute of field
3269 # is not used by setFieldProfile (because across this test mesh is equal to None)
3270 def testCheckCompatibilityPfl1(self):
3271 # building a mesh containing 4 tri3 + 5 quad4
3272 tri=MEDCouplingUMesh("tri",2)
3273 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3274 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3275 tris=[tri.deepCpy() for i in xrange(4)]
3276 for i,elt in enumerate(tris): elt.translate([i,0])
3277 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3278 quad=MEDCouplingUMesh("quad",2)
3279 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3280 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3281 quads=[quad.deepCpy() for i in xrange(5)]
3282 for i,elt in enumerate(quads): elt.translate([5+i,0])
3283 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3284 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3285 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3286 m1=m.buildDescendingConnectivity()[0]
3287 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3289 f1ts=MEDFileField1TS()
3290 f=MEDCouplingFieldDouble(ON_NODES)
3291 vals=DataArrayDouble(7) ; vals.iota(1000)
3293 f.setName("anonymous") # f has no mesh it is not a bug
3294 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3295 f1ts.setFieldProfile(f,mm,0,pfl)
3297 f1ts=MEDFileField1TS()
3298 f=MEDCouplingFieldDouble(ON_NODES)
3299 vals=DataArrayDouble(8) ; vals.iota(1000)
3301 f.setName("anonymous") # f has no mesh it is not a bug
3302 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3303 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3305 f1ts=MEDFileField1TS()
3306 f=MEDCouplingFieldDouble(ON_CELLS)
3307 vals=DataArrayDouble(7) ; vals.iota(1000)
3309 f.setName("anonymous") # f has no mesh it is not a bug
3310 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3311 f1ts.setFieldProfile(f,mm,0,pfl)
3312 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3314 f1ts=MEDFileField1TS()
3315 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3316 vals=DataArrayDouble(27) ; vals.iota(1000)
3318 f.setName("anonymous") # f has no mesh it is not a bug
3319 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3321 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])
3322 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3323 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])
3325 f1ts.setFieldProfile(f,mm,0,pfl)
3326 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3327 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3328 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3329 vals=DataArrayDouble(27) ; vals.iota(1000)
3330 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3332 f1ts=MEDFileField1TS()
3333 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3334 vals=DataArrayDouble(25) ; vals.iota(1000)
3336 f.setName("anonymous") # f has no mesh it is not a bug
3337 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3338 f1ts.setFieldProfile(f,mm,0,pfl)
3339 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3340 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3342 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3343 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3345 f1ts=MEDFileField1TS()
3346 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3347 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3349 f1ts.setFieldProfile(f,mm,0,pfl)
3352 def testWRMeshWithNoCells(self):
3353 fname="Pyfile71.med"
3354 a=DataArrayDouble(4) ; a.iota()
3355 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3356 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3358 m.setMeshAtLevel(0,m00)
3359 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3360 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3364 m=MEDFileMesh.New(fname)
3365 self.assertEqual((),m.getNonEmptyLevels())
3366 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))
3367 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3368 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3371 #@unittest.skipUnless(False,"requires Vadim's green light")
3372 def testWRQPolyg1(self):
3373 fname="Pyfile72.med"
3374 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3375 m.insertNextCell([0,2,1,3])
3376 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3378 ms=[m.deepCpy() for i in xrange(4)]
3379 for i,elt in enumerate(ms):
3380 elt.translate([float(i)*1.5,0.])
3382 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3383 m0.convertAllToPoly()
3385 ms=[m.deepCpy() for i in xrange(5)]
3386 for i,elt in enumerate(ms):
3387 elt.translate([float(i)*1.5,1.5])
3389 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3390 m1.convertAllToPoly()
3391 m1.convertLinearCellsToQuadratic()
3393 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3396 mm.setMeshAtLevel(0,m)
3397 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3398 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3399 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3400 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3405 mm_read=MEDFileUMesh(fname)
3406 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3407 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3408 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3409 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3411 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3413 arr0=DataArrayDouble(9) ; arr0.iota()
3414 arr1=DataArrayDouble(9) ; arr1.iota(100)
3415 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3416 f.setArray(arr) ; f.checkCoherency()
3418 ff=MEDFileField1TS()
3419 ff.setFieldNoProfileSBT(f)
3422 ff_read=MEDFileField1TS(fname)
3423 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3424 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3427 def testLoadIfNecessaryOnFromScratchFields0(self):
3429 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3431 fname="Pyfile77.med"
3432 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3433 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3435 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3436 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3437 m.finishInsertingCells()
3439 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3440 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3444 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3445 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3447 f0.setName("myELNOField")
3448 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3449 f0.setArray(arrs[0])
3450 ff0.appendFieldNoProfileSBT(f0)
3453 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3454 f0.setArray(arrs[1])
3455 ff0.appendFieldNoProfileSBT(f0)
3458 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3459 f0.setArray(arrs[2])
3460 ff0.appendFieldNoProfileSBT(f0)
3463 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3464 f0.setArray(arrs[3])
3465 ff0.appendFieldNoProfileSBT(f0)
3467 for i,arr in enumerate(arrs):
3468 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3469 fs[0][i].loadArraysIfNecessary()
3470 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3472 fs.loadArraysIfNecessary()
3473 for i,arr in enumerate(arrs):
3474 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3476 fs[0].loadArraysIfNecessary()
3477 for i,arr in enumerate(arrs):
3478 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3482 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3483 """ 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.
3485 fname="Pyfile78.med"
3486 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)
3487 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3488 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3490 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
3491 m0.insertNextCell(NORM_TETRA4,elt)
3493 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
3494 m0.insertNextCell(NORM_PYRA5,elt)
3496 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
3497 m0.insertNextCell(NORM_PENTA6,elt)
3499 m0.checkCoherency2()
3500 m1=MEDCouplingUMesh(); m1.setName("mesh")
3501 m1.setMeshDimension(2);
3502 m1.allocateCells(5);
3503 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3504 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3505 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3506 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3507 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3508 m1.setCoords(coords);
3509 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3511 m3.insertNextCell(NORM_POINT1,[2])
3512 m3.insertNextCell(NORM_POINT1,[3])
3513 m3.insertNextCell(NORM_POINT1,[4])
3514 m3.insertNextCell(NORM_POINT1,[5])
3517 mm.setMeshAtLevel(0,m0)
3518 mm.setMeshAtLevel(-1,m1)
3519 mm.setMeshAtLevel(-3,m3)
3521 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3522 mm=MEDFileMesh.New(fname)
3524 fmts=MEDFileFieldMultiTS()
3525 f1ts=MEDFileField1TS()
3526 for lev in mm.getNonEmptyLevels():
3527 for gt in mm.getGeoTypesAtLevel(lev):
3528 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3529 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3530 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3531 f.setArray(arr) ; f.setName("f0")
3532 f1ts.setFieldNoProfileSBT(f)
3535 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3536 for lev in [0,-1,-3]:
3537 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3539 fmts.pushBackTimeStep(f1ts)
3543 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3544 fs=MEDFileFields(fname)
3545 self.assertEqual(len(fs),1)
3546 self.assertEqual(len(fs[0]),1)
3548 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),'','')])])
3549 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))
3552 def testMEDFileUMeshSetName(self):
3553 """ This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the convertion is performed in memory and a preparation is done then.
3554 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3556 fname="Pyfile79.med"
3557 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3559 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3560 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)
3561 m0.allocateCells(5);
3562 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3563 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3564 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3565 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3566 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3567 m0.setCoords(coords);
3568 mm.setMeshAtLevel(0,m0)
3569 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3571 m2.insertNextCell(NORM_POINT1,[2])
3572 m2.insertNextCell(NORM_POINT1,[3])
3573 m2.insertNextCell(NORM_POINT1,[4])
3574 m2.insertNextCell(NORM_POINT1,[5])
3575 mm.setMeshAtLevel(-2,m2)
3576 self.assertEqual(mm.getName(),"")
3577 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3578 mm.forceComputationOfParts()
3579 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3581 self.assertEqual(mm.getName(),"abc")
3582 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3583 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3584 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3585 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
3588 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
3589 fileName="Pyfile80.med"
3590 m=MEDCouplingCMesh() ; m.setName("cmesh")
3591 arr=DataArrayDouble(6) ; arr.iota()
3592 m.setCoords(arr,arr)
3593 nbCells=m.getNumberOfCells()
3594 self.assertEqual(25,nbCells)
3595 f=MEDCouplingFieldDouble(ON_CELLS)
3596 f.setName("FieldOnCell") ; f.setMesh(m)
3597 arr=DataArrayDouble(nbCells) ; arr.iota()
3601 fmts=MEDFileFieldMultiTS()
3603 for i in xrange(nbCells):
3604 t=(float(i)+0.1,i+1,-i-2)
3606 arr2=DataArrayDouble(nbCells)
3607 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
3610 f1ts=MEDFileField1TS()
3611 f1ts.setFieldNoProfileSBT(f)
3612 fmts.pushBackTimeStep(f1ts)
3614 fmts.unloadArraysWithoutDataLoss()
3615 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))
3616 fs=MEDFileFields() ; fs.pushField(fmts)
3617 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))
3618 fs.unloadArraysWithoutDataLoss()
3619 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))
3621 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))
3622 f1ts.unloadArraysWithoutDataLoss()
3623 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))
3624 mm.write(fileName,2)
3625 fs.write(fileName,0)
3626 del m,fmts,mm,f,f1ts
3628 mm=MEDFileMesh.New(fileName)
3629 fmts=MEDFileFieldMultiTS(fileName)
3630 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))
3631 fmts.unloadArraysWithoutDataLoss()
3632 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
3633 fmts.loadArraysIfNecessary()
3634 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))
3636 fs=MEDFileFields(fileName)
3637 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))
3638 fs.unloadArraysWithoutDataLoss()
3639 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
3640 fs.loadArraysIfNecessary()
3641 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))
3643 f1ts=MEDFileField1TS(fileName)
3644 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))
3645 f1ts.unloadArraysWithoutDataLoss()
3646 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
3647 f1ts.loadArraysIfNecessary()
3648 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))
3651 def testMEDFileUMeshLoadPart1(self):
3652 """ This method tests MEDFileUMesh.LoadPart that loads only a part of a specified mesh in a MED file. The part is specfied using a slice of cell ids. Only nodes on which cells lies are loaded to reduce at most the amount of
3653 memory of the returned instance.
3655 fileName="Pyfile81.med"
3656 arr=DataArrayDouble(6) ; arr.iota()
3657 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3658 m=m.buildUnstructured()
3660 m.changeSpaceDimension(3,0.)
3661 infos=["aa [b]","cc [de]","gg [klm]"]
3662 m.getCoords().setInfoOnComponents(infos)
3665 mm.setMeshAtLevel(0,m)
3666 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
3667 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
3668 mm.setMeshAtLevel(-1,m1)
3669 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])
3670 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])
3671 namesCellL0=DataArrayAsciiChar(25,16)
3672 namesCellL0[:]=["Cell#%.3d "%(i) for i in xrange(25)]
3673 renumM1=DataArrayInt([3,4,0,2,1])
3674 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
3675 mm.setRenumFieldArr(0,renum0)
3676 mm.setFamilyFieldArr(0,famField0)
3677 mm.setNameFieldAtLevel(0,namesCellL0)
3678 mm.setRenumFieldArr(-1,renumM1)
3679 mm.setFamilyFieldArr(-1,famFieldM1)
3680 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])
3681 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])
3682 namesNodes=DataArrayAsciiChar(36,16)
3683 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(36)]
3684 mm.setRenumFieldArr(1,renum1)
3685 mm.setFamilyFieldArr(1,famField1)
3686 mm.setNameFieldAtLevel(1,namesNodes)
3687 mm.setFamilyId("Fam7",77)
3688 mm.setFamilyId("Fam8",88)
3689 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
3690 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
3691 mm.write(fileName,2)
3693 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
3694 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
3695 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])))
3696 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)
3697 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
3698 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
3699 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
3700 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
3701 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3702 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3703 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3705 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
3706 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
3707 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])))
3708 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)
3709 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
3710 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
3711 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
3712 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
3713 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
3714 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
3715 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
3717 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
3718 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
3719 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
3720 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
3721 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
3722 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
3723 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
3724 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
3725 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])))
3726 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
3727 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)
3728 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
3729 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3730 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3731 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3734 def testMEDFileFieldsLoadPart1(self):
3735 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
3737 fileName="Pyfile82.med"
3739 compos=["aa [kg]","bbb [m/s]"]
3740 arr=DataArrayDouble(6) ; arr.iota()
3741 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3742 m=m.buildUnstructured()
3744 m.changeSpaceDimension(3,0.)
3745 infos=["aa [b]","cc [de]","gg [klm]"]
3746 m.getCoords().setInfoOnComponents(infos)
3748 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3750 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3752 arr[:,1]=range(100,125)
3754 MEDLoader.WriteField(fileName,f,2)
3755 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3756 f.setName("FieldNode")
3757 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3758 arr[:,0]=range(200,236)
3759 arr[:,1]=range(300,336)
3762 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3765 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
3767 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3768 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
3771 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
3773 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3775 fs[0][0].loadArrays()
3776 arr=DataArrayDouble(12,2) ; arr[:,0]=range(3,15) ; arr[:,1]=range(103,115)
3777 arr.setInfoOnComponents(compos)
3778 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3779 fs[1][0].loadArrays()
3780 arr=DataArrayDouble(21,2) ; arr[:,0]=range(203,224) ; arr[:,1]=range(303,324)
3781 arr.setInfoOnComponents(compos)
3782 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3785 def testMEDFileWithoutCells1(self):
3786 fileName="Pyfile83.med"
3787 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
3788 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
3792 mm.write(fileName,2)
3794 mm=MEDFileMesh.New(fileName)
3795 self.assertEqual(mm.getName(),"mesh")
3796 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
3799 def testZipCoordsWithLoadPart1(self):
3800 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
3802 fileName="Pyfile84.med"
3804 compos=["aa [kg]","bbb [m/s]"]
3805 arr=DataArrayDouble(6) ; arr.iota()
3806 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3807 m=m.buildUnstructured()
3809 m.changeSpaceDimension(3,0.)
3810 infos=["aa [b]","cc [de]","gg [klm]"]
3811 m.getCoords().setInfoOnComponents(infos)
3813 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3815 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3817 arr[:,1]=range(100,125)
3819 MEDLoader.WriteField(fileName,f,2)
3820 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3821 f.setName("FieldNode")
3822 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3823 arr[:,0]=range(200,236)
3824 arr[:,1]=range(300,336)
3827 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3830 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
3832 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3833 self.assertEqual(spd.getSlice(),slice(4,6,1))
3834 spd=mm.getPartDefAtLevel(1)
3835 self.assertEqual(spd.getSlice(),slice(4,14,1))
3836 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3837 mm.zipCoords() # <- The important line is here !
3838 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3839 self.assertEqual(spd.getSlice(),slice(4,6,1))
3840 spd=mm.getPartDefAtLevel(1)
3841 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3842 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3843 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3844 fs[0][0].loadArrays()
3845 arr=DataArrayDouble([(4,104),(5,105)])
3846 arr.setInfoOnComponents(compos)
3847 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3848 fs[1][0].loadArrays()
3849 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
3850 arr.setInfoOnComponents(compos)
3851 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3854 def testMEDFileCMeshSetGroupsAtLevel(self):
3855 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
3857 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
3859 mm=MEDFileCMesh() ; mm.setMesh(m)
3860 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
3861 mm.setGroupsAtLevel(0,[grp])
3862 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
3865 def testMEDFileUMeshBuildExtrudedMesh1(self):
3866 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
3867 fileName="Pyfile85.med"
3870 meshName3DOut="Mesh3D"
3872 d1=DataArrayInt([0,4,20,24])
3873 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
3875 a=DataArrayDouble(6) ; a.iota()
3876 m=MEDCouplingCMesh() ; m.setCoords(a,a)
3877 m=m.buildUnstructured()
3878 d1c=d1.buildComplement(m.getNumberOfCells())
3879 m=m[d1c] ; m.zipCoords()
3880 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
3882 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
3883 m.setName(meshName2D)
3884 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
3885 e=d.deltaShiftIndex().getIdsEqual(1)
3888 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
3889 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
3890 mm.setGroupsAtLevel(0,[grp0])
3891 grp1=e ; grp1.setName("grp1")
3892 mm.setGroupsAtLevel(-1,[grp1])
3893 mm.write(fileName,2)
3895 a=DataArrayDouble(3) ; a.iota()
3896 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
3897 tmp.setName(meshName1D)
3898 tmp.changeSpaceDimension(3)
3899 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
3901 mm1D.setMeshAtLevel(0,tmp)
3902 mm1D.write(fileName,0)
3904 mm2D=MEDFileMesh.New(fileName,meshName2D)
3905 mm1D=MEDFileMesh.New(fileName,meshName1D)
3906 m1D=mm1D.getMeshAtLevel(0)
3907 mm3D=mm2D.buildExtrudedMesh(m1D,0)
3909 self.assertEqual(mm3D.getName(),mm2D.getName())
3910 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
3911 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
3912 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
3913 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
3914 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
3915 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
3916 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
3917 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
3918 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
3919 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.)])
3920 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
3921 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])
3922 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
3923 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])
3924 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
3925 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])
3926 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
3927 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])
3928 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
3929 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])
3930 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
3931 d=DataArrayInt(129) ; d.iota() ; d*=3
3932 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
3934 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
3935 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
3936 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
3937 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
3938 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])))
3939 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])))
3940 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])))
3941 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])))
3942 mm3D.setName("MeshExtruded")
3943 mm3D.write(fileName,0)
3946 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
3947 def testMEDFileUMeshPickeling1(self):
3949 outFileName="Pyfile86.med"
3950 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)
3951 c.setInfoOnComponents(["aa","bbb"])
3952 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
3953 m=MEDCouplingUMesh();
3954 m.setMeshDimension(2);
3956 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
3957 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
3958 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
3959 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
3960 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
3961 m.finishInsertingCells();
3964 m1=MEDCouplingUMesh.New();
3965 m1.setMeshDimension(1);
3966 m1.allocateCells(3);
3967 m1.insertNextCell(NORM_SEG2,2,[1,4])
3968 m1.insertNextCell(NORM_SEG2,2,[3,6])
3969 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
3970 m1.finishInsertingCells();
3973 m2=MEDCouplingUMesh.New();
3974 m2.setMeshDimension(0);
3975 m2.allocateCells(4);
3976 m2.insertNextCell(NORM_POINT1,1,[1])
3977 m2.insertNextCell(NORM_POINT1,1,[3])
3978 m2.insertNextCell(NORM_POINT1,1,[2])
3979 m2.insertNextCell(NORM_POINT1,1,[6])
3980 m2.finishInsertingCells();
3984 mm=MEDFileUMesh.New()
3985 self.assertTrue(mm.getUnivNameWrStatus())
3986 mm.setName("MyFirstMEDCouplingMEDmesh")
3987 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
3989 mm.setMeshAtLevel(-1,m1);
3990 mm.setMeshAtLevel(0,m);
3991 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
3992 mm.setMeshAtLevel(-2,m2);
3993 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
3994 # playing with groups
3995 g1_2=DataArrayInt.New()
3996 g1_2.setValues([1,3],2,1)
3998 g2_2=DataArrayInt.New()
3999 g2_2.setValues([1,2,3],3,1)
4001 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4002 g1_1=DataArrayInt.New()
4003 g1_1.setValues([0,1,2],3,1)
4005 g2_1=DataArrayInt.New()
4006 g2_1.setValues([0,2],2,1)
4008 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4009 g1_N=DataArrayInt.New()
4010 g1_N.setValues(range(8),8,1)
4012 g2_N=DataArrayInt.New()
4013 g2_N.setValues(range(9),9,1)
4015 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4016 mm.createGroupOnAll(0,"GrpOnAllCell")
4017 # check content of mm
4018 t=mm.getGroupArr(0,"G1",False)
4019 self.assertTrue(g1_2.isEqual(t));
4020 t=mm.getGroupArr(0,"G2",False)
4021 self.assertTrue(g2_2.isEqual(t));
4022 t=mm.getGroupArr(-1,"G1",False)
4023 self.assertTrue(g1_1.isEqual(t));
4024 t=mm.getGroupArr(-1,"G2",False)
4025 self.assertTrue(g2_1.isEqual(t));
4026 t=mm.getGroupArr(1,"G1",False)
4027 self.assertTrue(g1_N.isEqual(t));
4028 t=mm.getGroupArr(1,"G2",False)
4029 self.assertTrue(g2_N.isEqual(t));
4030 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4031 t=mm.getGroupArr(0,"GrpOnAllCell")
4033 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
4034 mm2=cPickle.loads(st)
4035 self.assertTrue(mm.isEqual(mm2,1e-12)[0])