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 *
25 from math import pi,e,sqrt
26 from MEDLoaderDataForTest import MEDLoaderDataForTest
28 class MEDLoaderTest(unittest.TestCase):
29 def testMEDMesh1(self):
30 fileName="Pyfile18.med"
31 mname="ExampleOfMultiDimW"
32 medmesh=MEDFileMesh.New(fileName,mname)
33 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
34 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
35 m1_0=medmesh.getLevel0Mesh(True)
36 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
37 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
38 m2_0=medmesh.getLevelM1Mesh(True)
39 m2_1=MEDLoader.ReadUMeshFromFile(fileName,mname,-1)
40 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
43 def testMEDMesh2(self):
44 fileName="Pyfile10.med"
46 outFileName="MEDFileMesh1.med"
47 medmesh=MEDFileUMesh.New(fileName,mname)
48 self.assertEqual((0,),medmesh.getNonEmptyLevels())
49 m1_0=medmesh.getLevel0Mesh(True)
50 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
51 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
52 g1_0=medmesh.getGroup(0,"mesh2",True)
53 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
54 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
55 g1_0=medmesh.getGroup(0,"mesh3",True)
56 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
57 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
58 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
59 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
60 g1_1.setName(g1_0.getName())
61 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
62 g1_0=medmesh.getFamily(0,"Family_-3",True)
63 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
64 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
65 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
66 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
67 g1_1.setName(g1_0.getName())
68 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
69 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
70 medmesh.write(outFileName,2);
71 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
72 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
73 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
74 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
75 famn=medmesh.getFamilyNameGivenId(0)
76 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
78 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
79 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
80 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
81 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
82 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
85 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
86 def testMEDMesh3(self):
87 outFileName="MEDFileMesh3.med"
88 c=DataArrayDouble.New()
89 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 ];
90 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
91 c.setValues(coords,9,2)
92 m=MEDCouplingUMesh.New();
93 m.setMeshDimension(2);
95 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
96 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
97 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
98 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
99 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
100 m.finishInsertingCells();
103 m1=MEDCouplingUMesh.New();
104 m1.setMeshDimension(1);
106 m1.insertNextCell(NORM_SEG2,2,[1,4])
107 m1.insertNextCell(NORM_SEG2,2,[3,6])
108 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
109 m1.finishInsertingCells();
112 m2=MEDCouplingUMesh.New();
113 m2.setMeshDimension(0);
115 m2.insertNextCell(NORM_POINT1,1,[1])
116 m2.insertNextCell(NORM_POINT1,1,[3])
117 m2.insertNextCell(NORM_POINT1,1,[2])
118 m2.insertNextCell(NORM_POINT1,1,[6])
119 m2.finishInsertingCells();
123 mm=MEDFileUMesh.New()
124 self.assertTrue(mm.getUnivNameWrStatus())
125 mm.setName("MyFirstMEDCouplingMEDmesh")
126 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
128 mm.setMeshAtLevel(-1,m1);
129 mm.setMeshAtLevel(0,m);
130 mm.setMeshAtLevel(-2,m2);
131 # playing with groups
132 g1_2=DataArrayInt.New()
133 g1_2.setValues([1,3],2,1)
135 g2_2=DataArrayInt.New()
136 g2_2.setValues([1,2,3],3,1)
138 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
139 g1_1=DataArrayInt.New()
140 g1_1.setValues([0,1,2],3,1)
142 g2_1=DataArrayInt.New()
143 g2_1.setValues([0,2],2,1)
145 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
146 g1_N=DataArrayInt.New()
147 g1_N.setValues(range(8),8,1)
149 g2_N=DataArrayInt.New()
150 g2_N.setValues(range(9),9,1)
152 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
153 mm.createGroupOnAll(0,"GrpOnAllCell")
154 # check content of mm
155 t=mm.getGroupArr(0,"G1",False)
156 self.assertTrue(g1_2.isEqual(t));
157 t=mm.getGroupArr(0,"G2",False)
158 self.assertTrue(g2_2.isEqual(t));
159 t=mm.getGroupArr(-1,"G1",False)
160 self.assertTrue(g1_1.isEqual(t));
161 t=mm.getGroupArr(-1,"G2",False)
162 self.assertTrue(g2_1.isEqual(t));
163 t=mm.getGroupArr(1,"G1",False)
164 self.assertTrue(g1_N.isEqual(t));
165 t=mm.getGroupArr(1,"G2",False)
166 self.assertTrue(g2_N.isEqual(t));
167 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
168 t=mm.getGroupArr(0,"GrpOnAllCell")
169 self.assertTrue(t.getValues()==range(5))
172 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
173 mmCpy.write(outFileName,2);
175 mm=MEDFileMesh.New(outFileName)
177 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
178 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
179 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
180 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
181 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
182 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
183 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
184 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
185 self.assertEqual(3,len(lmm))
186 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
187 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
188 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
190 self.assertTrue(mm.getUnivNameWrStatus())
191 self.assertTrue(isinstance(mm.getUnivName(),str))
192 self.assertTrue(len(mm.getUnivName())!=0)
193 mbis=mm.getMeshAtLevel(0)
194 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
195 self.assertTrue(m.isEqual(mbis,1e-12));
197 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),MEDLoader.GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
200 # this test is the testMEDMesh3 except that permutation is dealed here
201 def testMEDMesh4(self):
202 outFileName="MEDFileMesh4.med"
203 c=DataArrayDouble.New()
204 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 ];
205 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
206 c.setValues(coords,9,2)
207 c.setInfoOnComponent(0,"abcdef [km]")
208 c.setInfoOnComponent(1,"ghij [MW]")
209 m=MEDCouplingUMesh.New();
210 m.setMeshDimension(2);
212 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
213 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
214 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
215 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
216 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
217 m.finishInsertingCells();
220 m1=MEDCouplingUMesh.New();
221 m1.setMeshDimension(1);
223 m1.insertNextCell(NORM_SEG2,2,[1,4])
224 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
225 m1.insertNextCell(NORM_SEG2,2,[3,6])
226 m1.finishInsertingCells();
229 m2=MEDCouplingUMesh.New();
230 m2.setMeshDimension(0);
232 m2.insertNextCell(NORM_POINT1,1,[1])
233 m2.insertNextCell(NORM_POINT1,1,[3])
234 m2.insertNextCell(NORM_POINT1,1,[2])
235 m2.insertNextCell(NORM_POINT1,1,[6])
236 m2.finishInsertingCells();
240 mm=MEDFileUMesh.New()
241 mm.setName("My2ndMEDCouplingMEDmesh")
242 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
244 renumNode=DataArrayInt.New()
245 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
246 mm.setRenumFieldArr(1,renumNode)
247 mm.setMeshAtLevel(-1,m1,True);
248 mm.setMeshAtLevel(0,m,True);
249 mm.setMeshAtLevel(-2,m2,True);
250 mm.removeMeshAtLevel(-2)
251 mm.setMeshAtLevel(-2,m2,True);
252 # playing with groups
253 g1_2=DataArrayInt.New()
254 g1_2.setValues([2,3],2,1)
256 g2_2=DataArrayInt.New()
257 g2_2.setValues([2,0,3],3,1)
259 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
260 g1_1=DataArrayInt.New()
261 g1_1.setValues([0,2,1],3,1)
263 g2_1=DataArrayInt.New()
264 g2_1.setValues([0,2],2,1)
266 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
267 g1_N=DataArrayInt.New()
268 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
270 g2_N=DataArrayInt.New()
271 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
273 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
274 # check content of mm
275 t=mm.getGroupArr(0,"G1",True)
276 self.assertTrue(g1_2.isEqual(t));
277 t=mm.getGroupArr(0,"G2",True)
278 self.assertTrue(g2_2.isEqual(t));
279 t=mm.getGroupArr(-1,"G1",True)
280 self.assertTrue(g1_1.isEqual(t));
281 t=mm.getGroupArr(-1,"G2",True)
282 self.assertTrue(g2_1.isEqual(t));
283 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
285 mm.write(outFileName,2);
286 mm2=MEDFileMesh.New(outFileName)
287 res=mm.isEqual(mm2,1e-12)
288 self.assertTrue(res[0])
289 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
290 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
291 mm2.keepFamIdsOnlyOnLevs([3],[-1])
292 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
293 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
295 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
296 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
298 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
299 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
300 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
301 self.assertTrue(not mm2.existsFamily("Family_-8"))
302 mm2.createGroupOnAll(-1,"GrpOnAllFace")
303 self.assertTrue(mm2.existsFamily("Family_-8"))
304 self.assertEqual(range(3),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
307 #testing persistence of retrieved arrays
308 def testMEDMesh5(self):
309 fileName="Pyfile18.med"
310 mname="ExampleOfMultiDimW"
311 medmesh=MEDFileUMesh.New(fileName,mname)
312 m1_0=medmesh.getLevel0Mesh(True)
313 da1=medmesh.getFamilyFieldAtLevel(0)
315 self.assertEqual(20,m1_0.getNumberOfCells())
316 self.assertEqual(20,da1.getNumberOfTuples())
319 def testMEDMesh6(self):
320 outFileName="MEDFileMesh5.med"
323 m1=MEDCouplingCMesh.New();
324 da=DataArrayDouble.New()
325 da.setValues([0.,1.,2.],3,1)
326 da.setInfoOnComponent(0,"XX [mm]")
328 da=DataArrayDouble.New()
329 da.setValues([0.,1.2],2,1)
330 da.setInfoOnComponent(0,"YY [km]")
332 da=DataArrayDouble.New()
333 da.setValues([0.,1.3],2,1)
334 da.setInfoOnComponent(0,"ZZ [um]")
337 self.assertTrue(m[0].isEqual(m1,1e-12))
338 self.assertTrue(isinstance(m[0],MEDCouplingCMesh))
339 m.setName("myFirstCartMesh")
340 m.setDescription("mmmmpppppppp")
343 da=DataArrayInt.New()
344 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
345 m.setFamilyFieldArr(1,da)
346 m.setFamilyId("family1",1)
347 da=m.getFamilyArr(1,"family1")
349 self.assertEqual(expected1,da.getValues())
350 self.assertTrue(m.getUnivNameWrStatus())
351 m.write(outFileName,2);
352 mm=MEDFileMesh.New(outFileName)
353 self.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
354 self.assertTrue(isinstance(mm,MEDFileCMesh))
355 self.assertTrue(isinstance(mm.getUnivName(),str))
356 self.assertTrue(len(mm.getUnivName())!=0)
357 self.assertTrue(m.isEqual(mm,1e-12)[0])
358 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
361 m1.setTime(tt[2],tt[0],tt[1])
362 m1.setName(m.getName())
363 m1.setTimeUnit(m.getTimeUnit())
364 m1.setDescription(m.getDescription())
365 self.assertTrue(m2.isEqual(m1,1e-12));
368 def testMEDMesh7(self):
369 fileName="Pyfile24.med"
370 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
372 m.setCoords(m2.getCoords())
373 m.setMeshAtLevel(0,m2)
374 m.setMeshAtLevel(-1,m1)
375 m.setMeshAtLevel(-2,m0)
376 m.setFamilyFieldArr(0,f2)
377 m.setFamilyFieldArr(-1,f1)
378 m.setFamilyFieldArr(-2,f0)
379 m.setFamilyFieldArr(1,p)
380 m.setRenumFieldArr(0,n2)
381 m.setRenumFieldArr(-1,n1)
382 m.setRenumFieldArr(-2,n0)
384 for i in xrange(nbOfFams):
385 m.addFamily(fns[i],fids[i])
388 for i in xrange(nbOfGrps):
389 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
391 m.setName(m2.getName())
392 m.setDescription(m2.getDescription())
394 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
395 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
396 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
397 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
398 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
399 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
400 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
401 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
402 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
405 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
408 def funcToTestDelItem(self,ff):
412 #emulation of pointe.med file.
413 def testMEDField1(self):
414 mm=MEDFileMesh.New("Pyfile17.med")
415 mm.write("Pyfile17_bis.med",2)
416 ff=MEDFileFieldMultiTS("Pyfile17.med")
417 tsExpected=[[1,2],[3,4],[5,6]]
418 self.assertEqual(3,len(ff))
419 for pos,f1ts in enumerate(ff):
420 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
421 self.assertEqual(type(f1ts),MEDFileField1TS)
423 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
424 self.assertEqual([3,4],ff[1].getTime()[:-1])
425 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
426 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
427 ff.write("Pyfile17_bis.med",0)
429 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
430 self.assertEqual([(1,2),(3,4),(5,6)],ts)
431 self.funcToTestDelItem(ff)
432 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
433 self.assertEqual([(1,2)],ts)
437 def testMEDField2(self):
438 mm=MEDFileMesh.New("Pyfile19.med")
439 mm.write("Pyfile19_bis.med",2)
440 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
441 ff.write("Pyfile19_bis.med",0)
442 self.assertEqual([('tyty','mm'),('uiop','MW')],MEDLoader.GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
446 def testMEDField3(self):
447 mm=MEDFileMesh.New("Pyfile13.med")
448 mm.write("Pyfile13_bis.med",2)
449 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
450 ff.write("Pyfile13_bis.med",0)
451 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
452 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
453 f2=MEDLoader.ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
454 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
455 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
456 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
457 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
458 ff4=MEDFileField1TS.New("Pyfile13.med")
459 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
460 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
464 def testMEDField4(self):
465 mm=MEDFileMesh.New("Pyfile14.med")
466 mm.write("Pyfile14_bis.med",2)
467 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
468 ff.write("Pyfile14_bis.med",0)
469 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
470 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
471 f2=MEDLoader.ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
472 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
475 # MEDField get/set on pointe.med
476 def testMEDField5(self):
477 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
478 f=ff.getFieldAtLevel(ON_CELLS,0)
479 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
480 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
481 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
482 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
483 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
484 # no with renumbering
485 f=ff.getFieldAtLevel(ON_CELLS,0,1)
486 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
487 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
488 f=ff.getFieldAtLevel(ON_CELLS,0,3)
489 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
490 f=ff.getFieldAtLevel(ON_CELLS,0,2)
491 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
492 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
493 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
496 # MEDField get/set on profiles nodes
497 def testMEDField6(self):
498 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
499 its=ff.getIterations()
500 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
501 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
502 f2=MEDLoader.ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
503 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
504 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
505 its=ff.getIterations()
506 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
507 f2=MEDLoader.ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
508 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
509 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
510 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
513 # MEDField get/set on profiles cells
514 def testMEDField7(self):
515 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
516 its=ff.getIterations()
517 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
518 f2=MEDLoader.ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
519 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
522 #first test of assignation. No profile and types sorted by type.
523 def testMEDField8(self):
525 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
527 mm1=MEDFileUMesh.New()
528 mm1.setCoords(m1.getCoords())
529 mm1.setMeshAtLevel(0,m1)
530 mm1.setName(m1.getName())
532 ff1=MEDFileField1TS.New()
533 ff1.setFieldNoProfileSBT(f1)
535 f2=MEDLoader.ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
536 itt,orr,ti=ff1.getTime()
537 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
538 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
540 itt,orr,ti=ff1.getTime()
541 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
542 da,infos=ff1.getUndergroundDataArrayExt()
543 f2.getArray().setName(da.getName())#da has the same name than f2
544 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
545 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
548 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
550 mm1=MEDFileUMesh.New()
551 mm1.setCoords(m1.getCoords())
552 mm1.setMeshAtLevel(0,m1)
553 mm1.setName(m1.getName())
555 ff1=MEDFileField1TS.New()
556 ff1.setFieldNoProfileSBT(f1)
558 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
560 f2=MEDLoader.ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
561 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
562 f1.getArray().setIJ(0,0,nv)
563 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
566 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
568 mm1=MEDFileUMesh.New()
569 mm1.setCoords(m1.getCoords())
570 mm1.setMeshAtLevel(0,m1)
571 mm1.setName(m1.getName())
573 ff1=MEDFileField1TS.New()
574 ff1.setFieldNoProfileSBT(f1)
576 f2=MEDLoader.ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
577 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
578 da,infos=ff1.getUndergroundDataArrayExt()
579 f2.getArray().setName(da.getName())#da has the same name than f2
580 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
581 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
584 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
585 f1InvalidCpy=f1.deepCpy()
586 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
587 f1InvalidCpy2=f1.deepCpy()
588 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
590 mm1=MEDFileUMesh.New()
591 mm1.setCoords(m1.getCoords())
592 mm1.setMeshAtLevel(0,m1)
593 mm1.setName(m1.getName())
595 ff1=MEDFileField1TS.New()
596 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
597 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
598 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
599 ff1.setFieldNoProfileSBT(f1)
601 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
602 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
603 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
604 sbt=ff2.getFieldSplitedByType2()
605 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
606 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
607 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
608 self.assertEqual(6,loc1.getNumberOfPointsInCells())
609 self.assertEqual(3,loc1.getNumberOfGaussPoints())
610 self.assertEqual(2,loc1.getDimension())
611 da,infos=ff2.getUndergroundDataArrayExt()
612 f2.getArray().setName(da.getName())#da has the same name than f2
613 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
614 self.assertEqual(53,da.getNumberOfTuples())
615 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)
619 def testMEDFileData1(self):
623 m1=MEDLoaderDataForTest.build1DMesh_1()
624 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
625 mmm1=MEDFileMeshMultiTS.New() ;
626 mmm1.setOneTimeStep(mm1)
627 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
628 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
629 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
630 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
632 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
633 self.assertEqual(name,mmm.getName())
634 self.assertEqual(type(mmm),MEDFileUMesh)
636 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
638 ff1=MEDFileFieldMultiTS.New()
639 ff21=MEDFileFieldMultiTS.New()
640 ff22=MEDFileFieldMultiTS.New()
641 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
642 f1.getArray().setInfoOnComponent(0,"power [kW]")
643 ff1.appendFieldNoProfileSBT(f1)
644 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
645 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
646 ff21.appendFieldNoProfileSBT(f21)
647 f22=f21.deepCpy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
648 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
649 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
650 ff22.appendFieldNoProfileSBT(f22)
651 fs=MEDFileFields.New()
652 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
653 for name,fmts in zip(["f1","f21","f22"],fs):
654 self.assertEqual(name,fmts.getName())
658 fname2="Pyfile29_2.med"
661 d2=MEDFileData.New(fname2)
662 self.assertEqual(2,d2.getNumberOfMeshes())
663 self.assertEqual(3,d2.getNumberOfFields())
664 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
665 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
666 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
667 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
668 self.assertTrue(m1.isEqual(m1bis,1e-12))
669 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
670 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
671 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
672 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
673 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
676 def testMEDField9(self):
677 # first test field profile WR. Full type but with some type missing
679 m1=MEDLoaderDataForTest.build2DMesh_3()
680 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
682 ff1=MEDFileField1TS.New()
683 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
684 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
685 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.
686 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
688 ff1.setFieldProfile(f1,mm1,0,da)
689 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
693 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
694 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
695 self.assertTrue(vals.isEqual(d,1e-14))
697 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
698 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
699 ff2.deepCpyGlobs(ff3)
700 sbt=ff2.getFieldSplitedByType2()
701 self.assertEqual(3,sbt[0][0])#TRI3
702 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
703 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
704 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
705 self.assertEqual(4,sbt[1][0])#QUAD4
706 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
707 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
708 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
709 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
710 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
711 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
712 self.assertTrue(vals.isEqual(d,1e-14))
715 def testMEDField10(self):
717 m1=MEDLoaderDataForTest.build2DMesh_1()
718 m1.renumberCells([0,1,4,2,3,5],False)
719 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
721 ff1=MEDFileFieldMultiTS.New()
722 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
723 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
724 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.
725 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
727 ff1.appendFieldProfile(f1,mm1,0,da)
728 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
729 ff1.appendFieldProfile(f1,mm1,0,da)
733 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
734 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
735 self.assertTrue(vals.isEqual(e,1e-14))
736 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
737 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
738 self.assertTrue(vals.isEqual(d,1e-14))
740 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
741 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
742 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
743 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
744 self.assertTrue(vals.isEqual(e,1e-14))
745 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
746 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
747 self.assertTrue(vals.isEqual(d,1e-14))
750 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
751 def testMEDField11(self):
753 m1=MEDLoaderDataForTest.build2DMesh_1()
754 m1.renumberCells([0,1,4,2,3,5],False)
755 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
757 ff1=MEDFileField1TS.New()
758 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
759 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
760 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.
761 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
763 ff1.setFieldProfile(f1,mm1,0,da)
764 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
767 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
768 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
769 self.assertTrue(vals.isEqual(d,1e-14))
771 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
772 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
773 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
774 self.assertTrue(vals.isEqual(d,1e-14))
777 def testMEDField12(self):
779 m1=MEDLoaderDataForTest.build2DMesh_1()
780 m1.renumberCells([0,1,4,2,3,5],False)
781 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
783 ff1=MEDFileFieldMultiTS.New()
784 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
785 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
786 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.
787 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
789 ff1.appendFieldProfile(f1,mm1,0,da)
790 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
791 ff1.appendFieldProfile(f1,mm1,0,da)
794 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
795 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
796 self.assertTrue(vals.isEqual(e,1e-14))
797 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
798 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
799 self.assertTrue(vals.isEqual(d,1e-14))
801 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
802 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
803 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
804 self.assertTrue(vals.isEqual(e,1e-14))
805 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
806 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
807 self.assertTrue(vals.isEqual(d,1e-14))
810 def testMEDField13(self):
812 m1=MEDLoaderDataForTest.build2DMesh_1()
813 m1.renumberCells([0,1,4,2,3,5],False)
815 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
816 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
818 ff1=MEDFileField1TS.New()
819 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
820 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
821 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.
822 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
824 ff1.setFieldProfile(f1,mm1,0,da)
827 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
828 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
829 self.assertTrue(vals.isEqual(d,1e-14))
831 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
832 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
833 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
834 self.assertTrue(vals.isEqual(d,1e-14))
837 def testMEDField14(self):
839 m1=MEDLoaderDataForTest.build2DMesh_1()
840 m1.renumberCells([0,1,4,2,3,5],False)
842 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
843 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
845 ff1=MEDFileFieldMultiTS.New()
846 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
847 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
848 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.
849 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
851 ff1.appendFieldProfile(f1,mm1,0,da)
852 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
853 ff1.appendFieldProfile(f1,mm1,0,da)
856 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
857 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
858 self.assertTrue(vals.isEqual(d,1e-14))
859 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
860 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
861 self.assertTrue(vals.isEqual(e,1e-14))
862 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
864 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
865 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
866 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
867 self.assertTrue(vals.isEqual(d,1e-14))
868 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
869 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
870 self.assertTrue(vals.isEqual(e,1e-14))
872 # 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.
873 # 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
874 # 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 !
875 def testMEDField15(self):
877 m0=MEDLoaderDataForTest.build2DMesh_1()
878 m0.renumberCells([0,1,4,2,3,5],False)
880 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
881 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
882 ff1=MEDFileField1TS.New()
883 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
884 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
885 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
886 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
888 ff1.setFieldProfile(f1,mm1,0,da)
889 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
892 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
893 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
894 self.assertTrue(p1.isIdentity())
895 self.assertEqual(5,p1.getNumberOfTuples())
896 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
898 # Test for getFieldAtTopLevel method
899 def testMEDField16(self):
901 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
903 mm1=MEDFileUMesh.New()
904 mm1.setCoords(m1.getCoords())
905 mm1.setMeshAtLevel(0,m1)
906 mm1.setName(m1.getName())
907 ff1=MEDFileField1TS.New()
908 ff1.setFieldNoProfileSBT(f1)
909 m2=m1.buildDescendingConnectivity()[0]
910 m2.sortCellsInMEDFileFrmt()
911 m2.setName(m1.getName())
912 mm1.setMeshAtLevel(-1,m2)
914 f2=m2.getMeasureField(True)
915 dd=DataArrayDouble.New()
916 dd.alloc(f2.getArray().getNumberOfTuples(),3)
917 dd[:,0]=f2.getArray()
918 dd[:,1]=2*f2.getArray()
919 dd[:,2]=3*f2.getArray()
920 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
922 f2.copyTinyStringsFrom(f1)
923 f2.copyTinyAttrFrom(f1)
924 ff1.setFieldNoProfileSBT(f2)
926 # Reading Pyfile37.med
927 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
928 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
929 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
930 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
931 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
932 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
933 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
937 ff1=MEDFileField1TS.New()
938 ff1.setFieldNoProfileSBT(f2)
940 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
941 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
942 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
945 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
946 def testMEDField17(self):
948 m1=MEDLoaderDataForTest.build2DMesh_1()
949 m1.renumberCells([0,1,4,2,3,5],False)
950 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
952 ffs=MEDFileFields.New()
953 ff1=MEDFileFieldMultiTS.New()
954 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
955 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
956 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.
957 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
959 ff1.appendFieldProfile(f1,mm1,0,da)
960 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
961 ff1.appendFieldProfile(f1,mm1,0,da)
963 ffs.setFieldAtPos(0,ff1)
967 ffsr=MEDFileFields.New(fname)
968 ff3=ffsr.getFieldAtPos(0)
969 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
970 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
973 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
974 def testMEDField18(self):
976 m1=MEDLoaderDataForTest.build2DMesh_1()
977 m1.renumberCells([0,1,4,2,3,5],False)
978 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
980 ffs=MEDFileFields.New()
981 ff1=MEDFileFieldMultiTS.New()
982 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
983 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
984 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.
985 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
987 ff1.appendFieldProfile(f1,mm1,0,da)
988 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
989 ff1.appendFieldProfile(f1,mm1,0,da)
993 ffsr=MEDFileFields.New(fname)
994 ff3=ffsr.getFieldAtPos(0)
995 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
996 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
999 def testMEDFieldBug1(self):
1000 fname="Pyfile13.med"
1001 d=MEDFileData.New(fname)
1002 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1005 def testMEDMesh8(self):
1006 m=MEDLoaderDataForTest.build1DMesh_1()
1007 m.convertQuadraticCellsToLinear()
1008 mm=MEDFileUMesh.New()
1009 mm.setMeshAtLevel(0,m)
1010 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1011 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1012 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1013 mm.setGroupsAtLevel(0,[g1,g2],False)
1014 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1015 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1016 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1017 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1018 mm.assignFamilyNameWithGroupName()
1019 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1020 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1021 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1022 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1024 mm=MEDFileUMesh.New()
1025 mm.setMeshAtLevel(0,m)
1026 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1027 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1028 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1029 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1030 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1031 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1032 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1033 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1034 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1035 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1036 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1037 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1038 mm.changeFamilyId(5,6)
1039 g=mm.getGroupArr(0,"g3")
1040 self.assertTrue(g.isEqual(g3));
1041 g=mm.getGroupArr(0,"g2")
1042 self.assertTrue(g.isEqual(g2));
1043 g=mm.getGroupArr(0,"g1")
1044 self.assertTrue(g.isEqual(g1));
1047 # bug detected by gauthier
1048 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1049 fname="Pyfile41.med"
1050 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1052 mm1=MEDFileUMesh.New()
1053 mm1.setCoords(m1.getCoords())
1054 mm1.setMeshAtLevel(0,m1)
1056 ff1=MEDFileField1TS.New()
1057 ff1.setFieldNoProfileSBT(f1)
1059 # writing mesh1 and field1, now creation of mesh2 and field2
1062 m2.translate([0.5,0.6,0.7])
1063 m2.setName("3DSurfMesh_2")
1064 f2.getArray()[:]*=2.
1065 f2.setName("VectorFieldOnCells2")
1066 mm2=MEDFileUMesh.New()
1067 mm2.setCoords(m2.getCoords())
1068 mm2.setMeshAtLevel(0,m2)
1070 ff2=MEDFileField1TS.New()
1071 ff2.setFieldNoProfileSBT(f2)
1074 f3=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1075 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1076 f4=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1077 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1080 def testMEDLoaderMultiLevelCellField1(self):
1081 fname="Pyfile42.med"
1082 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1083 m=MEDFileUMesh.New()
1084 m.setCoords(m2.getCoords())
1085 m.setMeshAtLevel(0,m2)
1086 m.setMeshAtLevel(-1,m1)
1087 m.setMeshAtLevel(-2,m0)
1091 compNames1=["comp1","comp2","comp3"]
1092 ff1=MEDFileField1TS.New()
1093 da2=DataArrayDouble.New()
1094 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1096 da2.rearrange(len(compNames1))
1097 da2.setInfoOnComponents(compNames1)
1098 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkCoherency()
1099 ff1.setFieldNoProfileSBT(f2)
1100 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1101 da0=DataArrayDouble.New()
1102 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1104 da0.rearrange(len(compNames1))
1105 da0.setInfoOnComponents(compNames1)
1106 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1107 ff1.setFieldNoProfileSBT(f0)
1108 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1109 da1=DataArrayDouble.New()
1110 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1112 da1.rearrange(len(compNames1))
1113 da1.setInfoOnComponents(compNames1)
1114 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1115 ff1.setFieldNoProfileSBT(f1)
1116 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1121 compNames2=["comp11","comp22"]
1122 ff2=MEDFileField1TS.New()
1123 da0=DataArrayDouble.New()
1124 da0.alloc(m0.getNumberOfCells()*2,1)
1127 da0.setInfoOnComponents(compNames2)
1128 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1129 ff2.setFieldNoProfileSBT(f0)
1130 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1131 da1=DataArrayDouble.New()
1132 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1134 da1.rearrange(len(compNames2))
1135 da1.setInfoOnComponents(compNames2)
1136 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1137 ff2.setFieldNoProfileSBT(f1)
1138 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1142 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1143 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1144 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1145 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1146 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1147 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1150 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1151 fname="Pyfile43.med"
1152 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1153 m=MEDFileUMesh.New()
1154 m.setMeshAtLevel(0,m2)
1155 m.setMeshAtLevel(-1,m1)
1156 m.setMeshAtLevel(-2,m0)
1157 f=MEDFileField1TS.New()
1158 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1159 ff.setName("NodeFieldPfl")
1160 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1162 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1163 f.setFieldProfile(ff,m,-2,pfl)
1164 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1165 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1166 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1167 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1168 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1169 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1170 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1171 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1172 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1173 expected1=[1.,10.,100.,2.,20.,200.]
1174 nodeCoordsWithValue1=[10.,2.5,0.]
1175 nodeCoordsWithValue2=[10.,3.75,0.]
1177 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1178 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1181 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1185 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1186 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1187 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1188 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1189 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1190 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1191 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1192 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1193 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1195 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1200 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1201 f=MEDFileField1TS.New()
1202 f.setFieldProfile(ff,m,-2,pfl)
1203 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1204 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1205 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1206 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1207 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1208 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1209 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1210 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1211 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1212 expected2=[2.,20.,200.,1.,10.,100.]
1214 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1215 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1218 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1221 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1222 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1223 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1224 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1225 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1226 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1227 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1228 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1229 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1231 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1235 def testDuplicateNodesOnM1Group1(self):
1236 fname="Pyfile44.med"
1237 m=MEDCouplingCMesh.New()
1238 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1239 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1240 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1241 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1242 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1243 m2.setName(m.getName())
1244 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1245 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1246 mm=MEDFileUMesh.New()
1247 mm.setMeshAtLevel(0,m)
1248 mm.setMeshAtLevel(-1,m2)
1249 mm.setGroupsAtLevel(-1,[grp,grp2])
1250 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1251 mm.setGroupsAtLevel(1,[grpNode])
1252 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1253 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1254 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1256 self.assertEqual(30,mm.getNumberOfNodes())
1257 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1258 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1260 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1261 self.assertEqual([15,16,17],nodes.getValues());
1262 self.assertEqual([7,8,9],cells.getValues());
1263 self.assertEqual([12,13,14],cells2.getValues());
1264 self.assertEqual(33,mm.getNumberOfNodes())
1265 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1266 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1267 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1268 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1269 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
1270 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1271 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
1272 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1273 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])
1274 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1275 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1277 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1278 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1279 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1280 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1281 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1285 def testDuplicateNodesOnM1Group2(self):
1286 fname="Pyfile45.med"
1287 m=MEDCouplingCMesh.New()
1288 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1289 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1290 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1291 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1292 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1293 m2.setName(m.getName())
1294 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1295 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1296 mm=MEDFileUMesh.New()
1297 mm.setMeshAtLevel(0,m)
1298 mm.setMeshAtLevel(-1,m2)
1299 mm.setGroupsAtLevel(-1,[grp,grp2])
1300 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1301 mm.setGroupsAtLevel(1,[grpNode])
1302 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1303 ref1=[4,9,8,14,15,4,10,9,15,16]
1304 ref2=[4,9,8,14,30,4,10,9,30,16]
1306 self.assertEqual(30,mm.getNumberOfNodes())
1307 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1308 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1310 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1311 self.assertEqual([15],nodes.getValues());
1312 self.assertEqual([7,8],cells.getValues());
1313 self.assertEqual([12,13],cells2.getValues());
1314 self.assertEqual(31,mm.getNumberOfNodes())
1315 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1316 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1317 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1318 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1319 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
1320 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1321 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
1322 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1323 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])
1324 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1325 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1327 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1328 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1329 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1330 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1331 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1335 def testBasicConstructors(self):
1336 fname="Pyfile18.med"
1337 m=MEDFileMesh.New(fname)
1338 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1339 m=MEDFileMesh.New(fname)
1340 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1341 m=MEDFileUMesh(fname)
1344 m=MEDFileCMesh("MEDFileMesh5.med")
1345 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1347 m=MEDFileMeshMultiTS()
1348 m=MEDFileMeshMultiTS(fname)
1349 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1351 m=MEDFileMeshes(fname)
1353 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1354 m=MEDFileFieldMultiTS()
1355 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1357 m=MEDFileFields(fname)
1359 m=MEDFileData(fname)
1361 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1362 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1363 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1364 m=MEDCouplingCMesh()
1365 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1366 m=MEDCouplingFieldTemplate(ON_NODES)
1367 m=MEDCouplingMultiFields([])
1368 m=MEDCouplingFieldOverTime([])
1371 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1372 def testBugSemiPartialField(self):
1373 fname="Pyfile46.med"
1374 m=MEDLoaderDataForTest.build2DMesh_3()
1375 m=m[:10] ; m.setName("mesh")
1376 f=m.getMeasureField(ON_CELLS)
1377 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1379 f.setName("SemiPartialField")
1381 f1=f[:6] ; f1.getMesh().setName(m.getName())
1382 f2=f[6:] ; f2.getMesh().setName(m.getName())
1384 mm=MEDFileUMesh.New()
1385 mm.setMeshAtLevel(0,m)
1386 ff=MEDFileField1TS.New()
1387 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1391 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1392 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1393 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1395 fread.checkCoherency()
1396 fread2.checkCoherency()
1397 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1398 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1401 def testUnPolyze1(self):
1402 fname="Pyfile47.med"
1403 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1404 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]
1405 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1406 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]]))
1408 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1409 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1410 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1411 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1412 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1413 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1414 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1415 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1417 mm.setRenumFieldArr(0,None)
1418 mm.setFamilyFieldArr(-1,None)
1421 def testUnPolyze2(self):
1422 fname="Pyfile48.med"
1423 mfd=MEDFileData.New()
1424 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1425 meshes=MEDFileMeshes.New()
1427 mfd.setMeshes(meshes)
1428 fields=MEDFileFields.New()
1429 mfd.setFields(fields)
1430 ff=MEDFileFieldMultiTS.New()
1431 fields.pushField(ff)
1433 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1434 f0_0.setTime(9.5,3,4)
1435 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1437 f0_0.setMesh(mm.getMeshAtLevel(0))
1438 ff.appendFieldNoProfileSBT(f0_0)
1439 ff0=ff.getTimeStepAtPos(0)
1440 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1441 f0_1.setTime(9.5,3,4)
1442 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1443 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1444 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1446 ff0.setFieldProfile(f0_1,mm,0,pfl)
1447 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1448 f0_2.setTime(9.5,3,4)
1449 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1450 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
1451 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1453 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1454 mfd.getFields().shallowCpyGlobs(ff0)
1456 mfd.unPolyzeMeshes()
1458 fmts=mfd.getFields()[0]
1459 self.assertEqual(fmts.getNumberOfTS(),1)
1460 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1461 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1462 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))])
1463 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1464 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1465 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1466 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1467 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1468 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1469 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1470 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))
1471 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1472 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1473 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1474 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1475 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1476 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])
1477 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1478 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1479 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1480 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])
1481 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1486 def testGaussWriteOnPfl1(self):
1487 fname="Pyfile49.med"
1488 fname2="Pyfile50.med"
1489 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1490 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1491 mQ8.allocateCells(1)
1492 mQ8.insertNextCell(NORM_QUAD8,range(8))
1493 mQ8.finishInsertingCells()
1494 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1495 mQ4.allocateCells(1)
1496 mQ4.insertNextCell(NORM_QUAD4,range(4))
1497 mQ4.finishInsertingCells()
1498 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1499 mT3.allocateCells(1)
1500 mT3.insertNextCell(NORM_TRI3,range(3))
1501 mT3.finishInsertingCells()
1503 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.]]
1504 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1505 ms[:]=(elt.deepCpy() for elt in ms)
1506 for m,t in zip(ms,tr):
1507 d=m.getCoords() ; d+= t
1509 m=MEDCouplingUMesh.MergeUMeshes(ms)
1511 m2=m[:13] ; m2.setName(m.getName())
1512 ### 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.
1513 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1514 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1517 da=DataArrayDouble(34) ; da.iota(3.)
1519 f.setName("fieldCellOnPflWithoutPfl")
1520 fInvalid=f.deepCpy()
1521 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])
1522 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])
1523 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])
1525 fInvalid2=fInvalid.deepCpy()
1526 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1529 mm.setMeshAtLevel(0,m)
1532 f1ts=MEDFileField1TS.New()
1533 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1534 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1535 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1536 f1ts.setFieldProfile(f,mm,0,pfl)
1539 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1540 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1541 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1542 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1543 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1544 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1545 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1546 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1548 dataRead=MEDFileData.New(fname)
1549 mRead=dataRead.getMeshes()[0]
1550 f1tsRead=dataRead.getFields()[0][0]
1551 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1552 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1553 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1554 f2_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1555 f2_bis.checkCoherency()
1556 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1558 MEDLoader.WriteField(fname2,f,True)
1559 f2_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1560 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1561 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1562 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1563 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1564 m2=m[pfl] ; m2.setName(m.getName())
1567 da=DataArrayDouble(35) ; da.iota(3.)
1569 f.setName("fieldCellOnPflWithoutPfl2")
1570 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1571 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])
1572 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])
1576 mm.setMeshAtLevel(0,m)
1578 f1ts=MEDFileField1TS.New()
1579 f1ts.setFieldProfile(f,mm,0,pfl)
1580 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1581 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1582 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1583 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1585 dataRead=MEDFileData.New(fname)
1586 mRead=dataRead.getMeshes()[0]
1587 f1tsRead=dataRead.getFields()[0][0]
1588 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1589 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1590 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1591 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1592 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1593 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1594 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1596 MEDLoader.WriteField(fname2,f,True)
1597 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1598 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1599 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1600 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1601 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1604 da=DataArrayDouble(60) ; da.iota(3.)
1606 f.setName("fieldCellWithoutPfl")
1607 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])
1608 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])
1609 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])
1610 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])
1611 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])
1614 mm.setMeshAtLevel(0,m)
1615 f1ts=MEDFileField1TS.New()
1616 f1ts.setFieldNoProfileSBT(f)
1617 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1618 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1619 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1620 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1621 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1625 dataRead=MEDFileData.New(fname)
1626 mRead=dataRead.getMeshes()[0]
1627 f1tsRead=dataRead.getFields()[0][0]
1628 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1629 f3.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,1e-12,1e-12))
1631 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1632 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1633 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1635 MEDLoader.WriteField(fname2,f,True)
1636 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1637 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1638 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1641 # Testing profile on nodes when the profile is identity but not on all nodes.
1642 def testMEDFieldPflOnNode1(self):
1643 fname="Pyfile51.med"
1644 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)
1645 m0=MEDCouplingUMesh("Mesh",2)
1647 m0.insertNextCell(NORM_TRI3,[1,4,2])
1648 m0.insertNextCell(NORM_TRI3,[4,5,2])
1649 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1650 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1651 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1652 m0.finishInsertingCells()
1654 m1=MEDCouplingUMesh(m0.getName(),1)
1656 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1658 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1660 m1.finishInsertingCells()
1664 m.setMeshAtLevel(0,m0)
1665 m.setMeshAtLevel(-1,m1)
1667 dt=3 ; it=2 ; tim=4.5
1668 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1669 fieldNode0.setName("fieldNode0")
1670 fieldNode0.setTime(tim,dt,it)
1671 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1672 arr=DataArrayDouble([10,11,12,13,14])
1673 fieldNode0.setArray(arr)
1674 f0=MEDFileField1TS()
1675 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1676 m.write(fname,2) ; f0.write(fname,0)
1677 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1678 fieldNode1.setName("fieldNode1")
1679 fieldNode1.setTime(tim,dt,it)
1680 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1681 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1682 fieldNode1.setArray(arr1)
1683 f1=MEDFileField1TS()
1684 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1687 ## Reading from file
1688 m=MEDFileMesh.New(fname)
1689 m0=m.getMeshAtLevel(0)
1690 m00=m0.deepCpy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1691 fieldNode0.setMesh(m00)
1692 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1693 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1694 ff0_1.checkCoherency()
1695 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1696 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1697 ff0_2.checkCoherency()
1698 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1699 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1700 ff0_3.checkCoherency()
1701 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1702 ff0_4=MEDLoader.ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1703 ff0_4.checkCoherency()
1704 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1705 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1706 m1=m.getMeshAtLevel(-1)
1707 m10=m1.deepCpy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1708 fieldNode1.setMesh(m10)
1709 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1710 ff1_1.checkCoherency()
1711 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1712 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1713 ff1_2.checkCoherency()
1714 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1715 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1716 ff1_3.checkCoherency()
1717 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1718 ff1_4=MEDLoader.ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1719 ff1_4.checkCoherency()
1720 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1721 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]
1722 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]
1723 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]
1724 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1725 arr_r.setName(fieldNode1.getArray().getName())
1726 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1727 pfl1_r.setName(pfl1.getName())
1728 self.assertTrue(pfl1_r.isEqual(pfl1))
1731 # Testing profile on nodes when the profile is identity but not on all nodes.
1732 def testMEDFieldPflOnCell1(self):
1733 fname="Pyfile52.med"
1734 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)
1735 m0=MEDCouplingUMesh("Mesh",2)
1737 m0.insertNextCell(NORM_TRI3,[1,4,2])
1738 m0.insertNextCell(NORM_TRI3,[4,5,2])
1739 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1740 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1741 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1742 m0.finishInsertingCells()
1744 m1=MEDCouplingUMesh(m0.getName(),1)
1746 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1748 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1750 m1.finishInsertingCells()
1754 m.setMeshAtLevel(0,m0)
1755 m.setMeshAtLevel(-1,m1)
1757 dt=3 ; it=2 ; tim=4.5
1758 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1759 fieldCell0.setName("fieldCell0")
1760 fieldCell0.setTime(tim,dt,it)
1761 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1762 arr=DataArrayDouble([10,11,12])
1763 fieldCell0.setArray(arr)
1764 f0=MEDFileField1TS()
1765 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1766 m.write(fname,2) ; f0.write(fname,0)
1767 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1768 fieldCell1.setName("fieldCell1")
1769 fieldCell1.setTime(tim,dt,it)
1770 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1771 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1772 fieldCell1.setArray(arr1)
1773 f1=MEDFileField1TS()
1774 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1777 ## Reading from file
1778 m=MEDFileMesh.New(fname)
1779 m0=m.getMeshAtLevel(0)
1780 m00=m0.deepCpy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1781 fieldCell0.setMesh(m00)
1782 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1783 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1784 ff0_1.checkCoherency()
1785 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1786 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1787 ff0_2.checkCoherency()
1788 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1789 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1790 ff0_3.checkCoherency()
1791 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1792 ff0_4=MEDLoader.ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1793 ff0_4.checkCoherency()
1794 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1795 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1796 m1=m.getMeshAtLevel(-1)
1797 m10=m1.deepCpy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1798 fieldCell1.setMesh(m10)
1799 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1800 ff1_1.checkCoherency()
1801 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1802 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1803 ff1_2.checkCoherency()
1804 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1805 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1806 ff1_3.checkCoherency()
1807 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1808 ff1_4=MEDLoader.ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1809 ff1_4.checkCoherency()
1810 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1811 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]
1812 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]
1813 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]
1814 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1815 arr_r.setName(fieldCell1.getArray().getName())
1816 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1817 pfl1_r.setName(pfl1.getName())
1818 self.assertTrue(pfl1_r.isEqual(pfl1))
1821 def testMEDFileUMeshZipCoords1(self):
1823 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1824 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])
1825 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1826 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1827 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1828 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1829 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1830 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1831 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1832 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1833 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1834 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1836 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1837 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1838 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1839 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1840 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1841 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1842 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1843 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1844 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
1847 def testMEDUMeshAddNodeGroup1(self):
1848 fname="Pyfile53.med"
1850 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1851 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])
1852 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1853 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1854 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1855 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1856 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1859 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
1860 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
1861 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1862 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1863 mm.setFamilyId("MyFam",2)
1864 mm.setFamilyId("MyOtherFam",3)
1865 mm.setFamilyId("MyOther-1",-1)
1866 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1867 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1869 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1870 mm.addNodeGroup(daTest)
1871 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1872 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1873 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1874 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1876 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1877 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1878 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1879 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1880 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1881 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1883 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
1884 da=DataArrayInt([3,12]) ; da.setName("grp0")
1885 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1887 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1889 mm=MEDFileMesh.New(fname)
1890 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1891 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1892 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1893 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1895 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1896 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1897 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1898 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1899 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1900 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1902 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
1903 da=DataArrayInt([3,12]) ; da.setName("grp0")
1904 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1906 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1909 def testMEDUMeshAddGroup1(self):
1910 fname="Pyfile54.med"
1912 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1913 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
1915 m0.insertNextCell(NORM_TRI3,[1,2,1])
1918 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
1921 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
1923 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1924 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1925 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1926 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1927 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1930 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
1931 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
1932 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1933 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1934 mm.setFamilyId("MyFam",2)
1935 mm.setFamilyId("MyOtherFam",3)
1936 mm.setFamilyId("MyOther-1",-1)
1937 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1938 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1940 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1941 mm.addGroup(0,daTest)
1942 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1943 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1944 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1945 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1947 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1948 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1949 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1950 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1951 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1952 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1954 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
1955 da=DataArrayInt([3,12]) ; da.setName("grp0")
1956 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1958 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1960 mm=MEDFileMesh.New(fname)
1961 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1962 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1963 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1964 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1966 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1967 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1968 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1969 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1970 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1971 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1973 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
1974 da=DataArrayInt([3,12]) ; da.setName("grp0")
1975 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1977 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1980 def testHeapMem1(self):
1981 a=DataArrayInt() ; aa=a.getHeapMemorySize()
1983 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
1985 m=MEDCouplingCMesh()
1986 arr=DataArrayDouble(10,1) ; arr.iota(0)
1987 m.setCoords(arr,arr)
1988 m=m.buildUnstructured()
1990 f=m.getMeasureField(ON_CELLS)
1991 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
1992 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
1995 mm.setMeshAtLevel(0,m)
1996 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100+10*strMulFac))
1997 ff=MEDFileField1TS()
1998 ff.setFieldNoProfileSBT(f)
1999 self.assertIn(ff.getHeapMemorySize(),xrange(771-40,771+21+(4+1)*strMulFac))
2001 fff=MEDFileFieldMultiTS()
2002 fff.appendFieldNoProfileSBT(f)
2003 self.assertIn(fff.getHeapMemorySize(),xrange(815-50,815+30+(6+2)*strMulFac))
2005 fff.appendFieldNoProfileSBT(f)
2006 self.assertIn(fff.getHeapMemorySize(),xrange(1594-90,1594+50+(10+1)*strMulFac))
2007 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(771-40,771+20+(4+1)*strMulFac))
2010 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2011 fff.appendFieldProfile(f2,mm,0,pfl)
2012 self.assertIn(fff.getHeapMemorySize(),xrange(2348-130,2348+100+(10+2)*strMulFac))
2013 self.assertIn(fff.getProfile("pfl").getHeapMemorySize(),xrange(204-10,204+10+2*strMulFac))
2014 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(738-50,738+30+4*strMulFac))
2017 def testCurveLinearMesh1(self):
2018 fname="Pyfile55.med"
2019 mesh=MEDCouplingCurveLinearMesh();
2020 mesh.setTime(2.3,4,5);
2021 mesh.setTimeUnit("us");
2022 mesh.setName("Example of Cuve linear mesh");
2023 mesh.setDescription("buildCLMesh");
2024 a1=DataArrayDouble(3*20,1);
2025 a1.iota(7.) ; a1.rearrange(3);
2027 mesh.setNodeGridStructure([4,5]);
2028 mesh.checkCoherency();
2030 m=MEDFileCurveLinearMesh()
2032 d=DataArrayInt(20) ; d.iota(4)
2033 m.setFamilyFieldArr(1,d)
2034 d3=DataArrayInt(20) ; d3.iota(400)
2035 m.setRenumFieldArr(1,d3)
2036 d2=DataArrayInt(12) ; d2.iota(40)
2037 m.setFamilyFieldArr(0,d2)
2038 d4=DataArrayInt(21) ; d4.iota(4000)
2039 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2041 m.setRenumFieldArr(1,d4)
2044 m1=MEDFileCurveLinearMesh(fname)
2046 self.assertTrue(mm.isEqual(mesh,1e-12))
2047 self.assertEqual(mm.getSpaceDimension(),3)
2048 self.assertEqual(mm.getSpaceDimensionOnNodeStruct(),2)
2050 m1=MEDFileMesh.New(fname)
2051 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2052 self.assertTrue(isinstance(m1.getUnivName(),str))
2053 self.assertTrue(len(m1.getUnivName())!=0)
2054 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2057 def testParameters1(self):
2058 fname="Pyfile56.med"
2059 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2060 mm=MEDFileCMesh() ; mm.setMesh(m)
2061 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2063 p=MEDFileParameters()
2064 data.setParams(p) ; data.setMeshes(ms)
2065 pts=MEDFileParameterMultiTS()
2066 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2067 pts.appendValue(1,2,3.4,567.89)
2068 pts.appendValue(2,3,5.6,999.123)
2069 pts2=pts.deepCpy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2070 p.pushParam(pts) ; p.pushParam(pts2)
2072 p2=MEDFileParameters(fname)
2073 self.assertTrue(p.isEqual(p2,1e-14)[0])
2074 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2078 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2079 pts2.eraseTimeStepIds([0])
2080 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2082 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2083 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2084 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2085 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2086 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2088 self.assertTrue(p.isEqual(p2,1e-14)[0])
2089 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2090 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2091 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2092 self.assertEqual(p.getParamsNames(),('A','B'))
2093 ptsr=MEDFileParameterMultiTS(fname,"B")
2094 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2095 ptsr=MEDFileParameterMultiTS(fname)
2096 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2097 p1tsr=MEDFileParameterDouble1TS(fname)
2098 self.assertEqual(p1tsr.getName(),"A")
2099 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2100 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2101 self.assertEqual(p1tsr.getName(),"B")
2102 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2103 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2104 self.assertEqual(p1tsr.getName(),"B")
2105 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2106 data2=MEDFileData(fname)
2107 self.assertEqual(2,data2.getNumberOfParams())
2108 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2111 def testNamesOnCellAndNodesInMeshes1(self):
2112 fname="Pyfile58.med"
2113 fname2="Pyfile59.med"
2114 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2115 m1=m.buildDescendingConnectivity()[0]
2116 m1.sortCellsInMEDFileFrmt()
2119 mm.setMeshAtLevel(0,m)
2120 mm.setMeshAtLevel(-1,m1)
2121 namesCellL0=DataArrayAsciiChar(6,16)
2122 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2123 mm.setNameFieldAtLevel(0,namesCellL0)
2124 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.substr(2)])
2125 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2126 mm.setNameFieldAtLevel(-1,namesCellL1)
2127 namesNodes=namesCellL1.substr(4,16)
2128 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2129 mm.setNameFieldAtLevel(1,namesNodes)
2132 mmr=MEDFileMesh.New(fname)
2133 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2134 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2135 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2136 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2137 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2138 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2139 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2140 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2142 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2143 # remove names on nodes
2144 mmCpy.setNameFieldAtLevel(1,None)
2145 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2146 mm.setNameFieldAtLevel(1,None)
2147 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2148 mm.setNameFieldAtLevel(-1,None)
2150 mmr=MEDFileMesh.New(fname)
2151 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2152 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2153 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2155 c=MEDCouplingCMesh()
2156 arr=DataArrayDouble([0.,1.1,2.3])
2157 c.setCoords(arr,arr)
2161 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2162 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2164 ccr=MEDFileMesh.New(fname2)
2165 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2166 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2167 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2168 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2169 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2170 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2171 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2173 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2176 def testToExportInExamples1(self):
2177 m=MEDCouplingCMesh()
2178 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2179 m.setCoords(arr,arr)
2180 m=m.buildUnstructured() ; m.setName("mesh")
2181 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2182 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2185 mm.setMeshAtLevel(0,m)
2186 mm.setMeshAtLevel(-1,m2)
2187 mm.setGroupsAtLevel(0,[grp1,grp2])
2188 mm.write("example.med",2)
2190 m0=mm.getMeshAtLevel(0)
2191 m1=mm.getMeshAtLevel(-1)
2192 grp1=mm.getGroupArr(0,"grp1")
2193 grp2=mm.getGroupArr(0,"grp2")
2195 whichGrp=DataArrayInt(m0.getNumberOfCells())
2196 whichGrp.fillWithValue(-1)
2197 for grpId,grp in enumerate(grps):
2200 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2201 e,f=a.areCellsIncludedIn(m1,2)
2203 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2204 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2205 c2.transformWithIndArr(whichGrp)
2206 splitOfM1=len(grps)*[None]
2207 for grpId,grp in enumerate(grps):
2208 tmp=c2.getIdsEqual(grpId)
2209 splitOfM1[grpId]=tmp
2211 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2212 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2215 def testBugCorrection1(self):
2218 self.assertEqual(fs[0],None)
2219 self.assertEqual(3,len(fs))
2222 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2223 f1Name="Pyfile60.med"
2224 f2Name="Pyfile61.med"
2225 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2227 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2229 # reading and compare
2230 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2231 for mn in d1.getMeshes().getMeshesNames():
2232 m1=d1.getMeshes()[mn]
2233 m2=d2.getMeshes()[mn]
2234 for lev in m1.getNonEmptyLevels():
2235 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2236 for grpName in grpsNames:
2237 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2241 for fieldn in d1.getFields().getFieldsNames():
2242 f1=d1.getFields()[fieldn]
2243 f2=d2.getFields()[fieldn]
2244 for it,order,tim in f1.getTimeSteps():
2247 if len(f1t.getPflsReallyUsed())!=0:
2249 for lev in f1t.getNonEmptyLevels()[1]:
2250 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2251 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2252 self.assertTrue(pfl1.isEqual(pfl2))
2253 self.assertTrue(arr1.isEqual(arr2,1e-10))
2258 for lev in f1t.getNonEmptyLevels()[1]:
2259 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2260 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2261 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2268 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2269 m=MEDCouplingCMesh()
2270 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2271 m.setCoords(arr,arr,arr)
2272 m=m.buildUnstructured()
2273 m2=m.buildDescendingConnectivity()[0]
2275 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2276 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2277 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2278 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2279 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2280 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2282 mm.setMeshAtLevel(0,m)
2283 mm.setGroupsAtLevel(0,[g1,g2])
2284 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2285 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2286 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2287 mm.normalizeFamIdsMEDFile()
2288 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2289 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2290 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2291 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2292 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2293 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2294 for g in mm.getGroupsOnSpecifiedLev(0):
2295 for f in mm.getFamiliesIdsOnGroup(g):
2296 self.assertTrue(f<0)
2301 mm.setMeshAtLevel(0,m)
2302 mm.setMeshAtLevel(-1,m2)
2303 mm.setGroupsAtLevel(0,[g1,g2])
2304 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2305 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2306 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2307 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2308 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2309 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2310 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2311 mm.normalizeFamIdsMEDFile()
2312 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2313 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2314 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2315 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2316 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2317 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2318 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2319 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2320 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2321 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2322 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2323 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2325 for g in mm.getGroupsOnSpecifiedLev(lev):
2326 for f in mm.getFamiliesIdsOnGroup(g):
2327 self.assertTrue(f<0)
2333 mm.setMeshAtLevel(0,m)
2334 mm.setMeshAtLevel(-1,m2)
2335 mm.setGroupsAtLevel(0,[g1,g2])
2336 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2337 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2338 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2339 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2340 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2341 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2342 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2343 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2344 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2345 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2346 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2347 mm.normalizeFamIdsMEDFile()
2348 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2349 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2350 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2351 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2352 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2353 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2354 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2355 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2356 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2357 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2358 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2359 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2360 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2361 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2362 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2363 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2364 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2365 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2367 for g in mm.getGroupsOnSpecifiedLev(lev):
2368 for f in mm.getFamiliesIdsOnGroup(g):
2369 self.assertTrue(f<0)
2373 for g in mm.getGroupsOnSpecifiedLev(1):
2374 for f in mm.getFamiliesIdsOnGroup(g):
2375 self.assertTrue(f>0)
2380 def testNonRegressionMantis22212ChangeGrpName(self):
2381 fileName="Pyfile62.med"
2382 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2383 m=MEDFileUMesh.New()
2384 m.setCoords(m2.getCoords())
2385 m.setMeshAtLevel(0,m2)
2386 m.setMeshAtLevel(-1,m1)
2387 m.setMeshAtLevel(-2,m0)
2388 m.setFamilyFieldArr(0,f2)
2389 m.setFamilyFieldArr(-1,f1)
2390 m.setFamilyFieldArr(-2,f0)
2391 m.setFamilyFieldArr(1,p)
2393 for i in xrange(nbOfFams):
2394 m.addFamily(fns[i],fids[i])
2397 for i in xrange(nbOfGrps):
2398 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2400 m.setName(m2.getName())
2401 m.setDescription(m2.getDescription())
2404 mm0=MEDFileMesh.New(fileName)
2405 mm1=MEDFileMesh.New(fileName)
2406 groupNamesIni=MEDLoader.GetMeshGroupsNames(fileName,"ma")
2407 for name in groupNamesIni:
2408 mm1.changeGroupName(name,name+'N')
2410 mm1.write(fileName,2)
2413 mm2=MEDFileMesh.New(fileName)
2414 for name in groupNamesIni:
2415 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2416 arr0=mm0.getGroupArr(lev,name)
2417 arr2=mm2.getGroupArr(lev,name+'N')
2418 arr0.setName(name+'N')
2419 self.assertTrue(arr0.isEqual(arr2))
2424 def testInt32InMEDFileFieldStar1(self):
2425 fname="Pyfile63.med"
2426 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2427 arr=f1.getArray().convertToIntArr()
2430 mm1=MEDFileUMesh.New()
2431 mm1.setCoords(m1.getCoords())
2432 mm1.setMeshAtLevel(0,m1)
2433 mm1.setName(m1.getName())
2435 ff1=MEDFileIntField1TS()
2436 ff1.setFieldNoProfileSBT(f1,arr)
2437 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2438 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2439 self.assertTrue(b.isEqual(arr))
2440 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2442 ff2=MEDFileAnyTypeField1TS.New(fname)
2443 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2444 self.assertEqual(ff2.getTime(),[0,1,2.0])
2445 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2446 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2447 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2448 self.assertTrue(b.isEqual(arr))
2449 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2451 c=ff2.getUndergroundDataArray() ; c*=2
2452 ff2.write(fname,0) # 2 time steps in
2453 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2454 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2455 self.assertEqual(len(ffs1),2)
2456 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
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 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2461 self.assertTrue(b.isEqual(arr))
2462 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2463 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2464 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2465 self.assertTrue(b.isEqual(2*arr))
2467 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2468 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2470 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2473 self.assertTrue(bc.isEqual(3*arr))
2474 nf1=MEDCouplingFieldDouble(ON_NODES)
2475 nf1.setTime(9.,10,-1)
2476 nf1.setMesh(f1.getMesh())
2477 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2478 nf1.setName("VectorFieldOnNodes")
2479 nff1=MEDFileIntField1TS.New()
2480 nff1.setFieldNoProfileSBT(nf1,narr)
2481 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2482 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2485 nf2=MEDCouplingFieldDouble(ON_NODES)
2486 nf2.setTime(19.,20,-11)
2487 nf2.setMesh(f1.getMesh())
2488 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2489 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2490 nff2=MEDFileIntField1TS.New()
2491 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2492 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2493 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2494 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2495 self.assertTrue(b.isEqual(npfl))
2496 self.assertTrue(a.isEqual(narr2))
2498 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2499 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2500 self.assertTrue(b.isEqual(npfl))
2501 self.assertTrue(a.isEqual(narr2))
2503 nf3=MEDCouplingFieldDouble(ON_NODES)
2504 nf3.setName("VectorFieldOnNodesDouble")
2505 nf3.setTime(29.,30,-21)
2506 nf3.setMesh(f1.getMesh())
2507 nf3.setArray(f1.getMesh().getCoords())
2508 nff3=MEDFileField1TS.New()
2509 nff3.setFieldNoProfileSBT(nf3)
2511 fs=MEDFileFields(fname)
2512 self.assertEqual(len(fs),4)
2513 ffs=[it for it in fs]
2514 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2515 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2516 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2517 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2519 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2520 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2521 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2522 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2523 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2525 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2526 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2527 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2528 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2529 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2530 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2531 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2532 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2534 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2535 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2536 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2537 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2540 def testMEDFileFields1(self):
2541 fname="Pyfile64.med"
2542 f1=MEDCouplingFieldDouble(ON_NODES)
2543 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2544 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2545 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2547 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2549 f1.setName("Field1")
2550 ff1=MEDFileField1TS.New()
2551 ff1.setFieldNoProfileSBT(f1)
2552 self.assertEqual(ff1.getDtUnit(),"us")
2554 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2555 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2557 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2558 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2559 ff1s.setName("Field2")
2561 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2562 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2563 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2564 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2565 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2566 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2567 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2568 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2571 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2572 def testMEDFileFields2(self):
2573 fname="Pyfile65.med"
2574 # to check that all is initialize
2575 MEDFileField1TS().__str__()
2576 MEDFileFieldMultiTS().__str__()
2577 # building a mesh containing 4 tri3 + 5 quad4
2578 tri=MEDCouplingUMesh("tri",2)
2579 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2580 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2581 tris=[tri.deepCpy() for i in xrange(4)]
2582 for i,elt in enumerate(tris): elt.translate([i,0])
2583 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2584 quad=MEDCouplingUMesh("quad",2)
2585 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2586 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2587 quads=[quad.deepCpy() for i in xrange(5)]
2588 for i,elt in enumerate(quads): elt.translate([5+i,0])
2589 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2590 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2591 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2593 fmts0_0=MEDFileFieldMultiTS()
2594 fmts0_1=MEDFileFieldMultiTS()
2596 for i in xrange(10):
2597 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2598 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2599 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2600 f.setTime(float(i+1)+0.1,i+1,-i-1)
2601 fmts0_0.appendFieldNoProfileSBT(f)
2602 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2603 self.assertEqual(fmts0_1.getName(),name1)
2604 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2605 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2607 # components names have been modified to generate errors
2608 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2609 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2610 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2611 f1ts.setInfo(['aa [bb]','eee [dd]'])
2612 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2614 # add a mismatch of nb of compos
2616 fmts0_2=fmts0_0.deepCpy()
2617 fmts0_3=fmts0_0.deepCpy()
2618 fmts0_4=fmts0_0.deepCpy()
2619 fmts0_5=fmts0_0.shallowCpy()
2620 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)
2622 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2623 del fmts0_3[[1.1,(6,-6),9]]
2624 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2625 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2626 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2627 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2628 fmts0_7=fmts0_4[::-3]
2629 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2630 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2633 fs0.pushField(fmts0_0)
2634 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2635 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2636 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2637 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2639 fs0=MEDFileFields(fname)
2640 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2641 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2642 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2643 del fs1[["2ndField",3]]
2644 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2645 fs2=fs0[[0,"4thField"]]
2646 self.assertTrue(isinstance(fs2,MEDFileFields))
2647 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2649 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2652 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2653 def testMEDFileFields3(self):
2654 fname="Pyfile66.med"
2655 # building a mesh containing 4 tri3 + 5 quad4
2656 tri=MEDCouplingUMesh("tri",2)
2657 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2658 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2659 tris=[tri.deepCpy() for i in xrange(4)]
2660 for i,elt in enumerate(tris): elt.translate([i,0])
2661 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2662 quad=MEDCouplingUMesh("quad",2)
2663 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2664 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2665 quads=[quad.deepCpy() for i in xrange(5)]
2666 for i,elt in enumerate(quads): elt.translate([5+i,0])
2667 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2668 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2669 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2671 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2673 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2674 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2675 fmts0_0=MEDFileFieldMultiTS()
2676 fmts0_1=MEDFileFieldMultiTS()
2678 for i in xrange(10):
2679 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2680 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2681 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2682 f.setTime(float(i+1)+0.1,i+1,-i-1)
2683 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2684 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2685 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2686 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2689 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2690 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2691 fmts0_0.zipPflsNames()
2692 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2693 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2694 fmts0_2=fmts0_0.deepCpy()
2695 fmts0_3=fmts0_0.deepCpy()
2696 fmts0_4=fmts0_0.deepCpy()
2698 fs0.pushField(fmts0_0)
2699 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2700 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2701 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2702 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2704 fmts0_5=MEDFileFieldMultiTS()
2706 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2707 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2708 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2709 f.setTime(float(i+1)+0.1,i+1,-i-1)
2710 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2712 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2713 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2714 fs0.checkGlobsCoherency()
2718 def testSplitComponents1(self):
2719 fname="Pyfile67.med"
2720 # building a mesh containing 4 tri3 + 5 quad4
2721 tri=MEDCouplingUMesh("tri",2)
2722 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2723 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2724 tris=[tri.deepCpy() for i in xrange(4)]
2725 for i,elt in enumerate(tris): elt.translate([i,0])
2726 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2727 quad=MEDCouplingUMesh("quad",2)
2728 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2729 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2730 quads=[quad.deepCpy() for i in xrange(5)]
2731 for i,elt in enumerate(quads): elt.translate([5+i,0])
2732 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2733 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2734 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2736 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2738 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2739 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2741 fmts0_1=MEDFileFieldMultiTS()
2743 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2744 for i in xrange(10):
2746 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2747 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2748 f.setTime(float(i+1)+0.1,i+1,-i-1)
2749 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2750 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2752 fs.pushField(fmts0_1)
2753 self.assertEqual(1,len(fs))
2754 l=fmts0_1.splitComponents()
2755 self.assertEqual(3,len(l))
2756 for elt in l: self.assertEqual(10,len(elt))
2757 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2759 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2762 self.assertEqual(4,len(fs))
2763 for elt in fs: self.assertEqual(10,len(elt))
2764 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2765 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2767 fs.write(fname,0) ; del fs
2769 fs1=MEDFileFields(fname)
2770 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2771 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2772 self.assertEqual(4,len(fs1))
2773 for i in xrange(10):
2774 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2775 f1ts=fs1[fieldName][i]
2776 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2777 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2778 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2780 f1ts=fs1["1stField"][i]
2781 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2782 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2783 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2787 def testMEDFileFieldConvertTo1(self):
2788 fname="Pyfile68.med"
2789 # building a mesh containing 4 tri3 + 5 quad4
2790 tri=MEDCouplingUMesh("tri",2)
2791 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2792 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2793 tris=[tri.deepCpy() for i in xrange(4)]
2794 for i,elt in enumerate(tris): elt.translate([i,0])
2795 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2796 quad=MEDCouplingUMesh("quad",2)
2797 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2798 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2799 quads=[quad.deepCpy() for i in xrange(5)]
2800 for i,elt in enumerate(quads): elt.translate([5+i,0])
2801 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2802 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2803 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2804 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2806 ff0=MEDFileField1TS()
2807 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")
2809 ff0.setFieldNoProfileSBT(f0)
2811 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2812 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2814 ff0i=ff0.convertToInt()
2815 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2816 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2818 ff1=ff0i.convertToDouble()
2819 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2820 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2822 del arr,f0,ff0,ff1,ff0i,fspExp
2823 ff0=MEDFileField1TS()
2824 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")
2826 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2827 ff0.setFieldProfile(f0,mm,0,pfl)
2828 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2829 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2831 ff0i=ff0.convertToInt()
2832 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2833 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2834 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2836 ff1=ff0i.convertToDouble()
2837 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2838 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2839 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2841 ff0=MEDFileFieldMultiTS()
2842 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)
2844 ff0.appendFieldProfile(f0,mm,0,pfl)
2845 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)
2847 ff0.appendFieldProfile(f0,mm,0,pfl)
2848 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)
2850 ff0.appendFieldProfile(f0,mm,0,pfl)
2851 ff1=ff0.convertToInt()
2852 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2853 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2854 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2855 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2856 arr=ff1.getUndergroundDataArray(dt,it)
2857 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2859 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2864 ff1=ff1.convertToDouble()
2865 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
2866 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2867 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2868 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2869 arr=ff1.getUndergroundDataArray(dt,it)
2870 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
2872 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2874 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
2875 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2876 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2877 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2878 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
2879 arr=ff1.getUndergroundDataArray(dt,it)
2880 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2882 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
2885 def testMEDFileFieldPartialLoading(self):
2886 fname="Pyfile69.med"
2888 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2890 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2891 # building a mesh containing 30 tri3 + 40 quad4
2892 tri=MEDCouplingUMesh("tri",2)
2893 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2894 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2895 tris=[tri.deepCpy() for i in xrange(30)]
2896 for i,elt in enumerate(tris): elt.translate([i,0])
2897 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2898 quad=MEDCouplingUMesh("quad",2)
2899 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2900 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2901 quads=[quad.deepCpy() for i in xrange(40)]
2902 for i,elt in enumerate(quads): elt.translate([40+i,0])
2903 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2904 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2905 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2906 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2908 ff0=MEDFileField1TS()
2909 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")
2911 ff0.setFieldNoProfileSBT(f0)
2914 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
2915 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2917 ff0=MEDFileField1TS()
2918 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")
2920 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2921 ff0.setFieldProfile(f0,mm,0,pfl)
2922 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
2923 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2926 ff0=MEDFileField1TS(fname,False)
2927 self.assertEqual(ff0.getName(),"FieldCell")
2928 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
2929 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
2930 heap_memory_ref=ff0.getHeapMemorySize()
2931 self.assertIn(heap_memory_ref,xrange(182,298+2*strMulFac))
2933 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
2934 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2935 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
2937 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
2938 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
2939 heap_memory_ref=ff0.getHeapMemorySize()
2940 self.assertIn(heap_memory_ref,xrange(350,415+6*strMulFac))
2942 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
2943 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2944 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2946 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2947 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2948 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2949 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2951 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2952 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2953 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2954 ff0.loadArraysIfNecessary() ##
2955 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
2956 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2957 heap_memory_ref=ff0.getHeapMemorySize()
2958 self.assertIn(heap_memory_ref,xrange(1100,1215+2*strMulFac))
2960 hmd=ff0.getHeapMemorySize()-heap_memory_ref
2961 self.assertEqual(hmd,-800) # -50*8*2
2963 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
2965 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
2966 heap_memory_ref=ff0.getHeapMemorySize()
2967 self.assertIn(heap_memory_ref,xrange(299,415+6*strMulFac))
2969 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2970 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2972 fieldName="FieldCellMultiTS"
2973 ff0=MEDFileFieldMultiTS()
2974 for t in xrange(20):
2975 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)
2976 f0.setTime(float(t)+0.1,t,100+t)
2978 ff0.appendFieldNoProfileSBT(f0)
2982 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
2983 heap_memory_ref=ff0.getHeapMemorySize()
2984 self.assertIn(heap_memory_ref,xrange(5536,5956+(80+26)*strMulFac))
2986 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
2989 ffs=MEDFileFields(fname,False)
2990 heap_memory_ref=ffs.getHeapMemorySize()
2991 self.assertIn(heap_memory_ref,xrange(5335,6687+(80+50)*strMulFac))
2993 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
2996 def testMEDFileMeshReadSelector1(self):
2997 mrs=MEDFileMeshReadSelector()
2998 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
2999 mrs.__str__() ; mrs.__repr__()
3001 mrs=MEDFileMeshReadSelector(0)
3002 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())
3003 mrs=MEDFileMeshReadSelector(1)
3004 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3005 mrs=MEDFileMeshReadSelector(2)
3006 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3007 mrs=MEDFileMeshReadSelector(3)
3008 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3009 mrs=MEDFileMeshReadSelector(4)
3010 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3011 mrs=MEDFileMeshReadSelector(5)
3012 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3013 mrs=MEDFileMeshReadSelector(6)
3014 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3015 mrs=MEDFileMeshReadSelector(7)
3016 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3017 mrs=MEDFileMeshReadSelector(8)
3018 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3019 mrs=MEDFileMeshReadSelector(9)
3020 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3021 mrs=MEDFileMeshReadSelector(10)
3022 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3023 mrs=MEDFileMeshReadSelector(11)
3024 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3025 mrs=MEDFileMeshReadSelector(12)
3026 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3027 mrs=MEDFileMeshReadSelector(13)
3028 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3029 mrs=MEDFileMeshReadSelector(14)
3030 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3031 mrs=MEDFileMeshReadSelector(15)
3032 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3033 mrs=MEDFileMeshReadSelector(16)
3034 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3035 mrs=MEDFileMeshReadSelector(17)
3036 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3037 mrs=MEDFileMeshReadSelector(18)
3038 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3039 mrs=MEDFileMeshReadSelector(19)
3040 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3041 mrs=MEDFileMeshReadSelector(20)
3042 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3043 mrs=MEDFileMeshReadSelector(21)
3044 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3045 mrs=MEDFileMeshReadSelector(22)
3046 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3047 mrs=MEDFileMeshReadSelector(23)
3048 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3049 mrs=MEDFileMeshReadSelector(24)
3050 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3051 mrs=MEDFileMeshReadSelector(25)
3052 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3053 mrs=MEDFileMeshReadSelector(26)
3054 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3055 mrs=MEDFileMeshReadSelector(27)
3056 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3057 mrs=MEDFileMeshReadSelector(28)
3058 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3059 mrs=MEDFileMeshReadSelector(29)
3060 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3061 mrs=MEDFileMeshReadSelector(30)
3062 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3063 mrs=MEDFileMeshReadSelector(31)
3064 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3065 mrs=MEDFileMeshReadSelector(32)
3066 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3067 mrs=MEDFileMeshReadSelector(33)
3068 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3069 mrs=MEDFileMeshReadSelector(34)
3070 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3071 mrs=MEDFileMeshReadSelector(35)
3072 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3073 mrs=MEDFileMeshReadSelector(36)
3074 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3075 mrs=MEDFileMeshReadSelector(37)
3076 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3077 mrs=MEDFileMeshReadSelector(38)
3078 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3079 mrs=MEDFileMeshReadSelector(39)
3080 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3081 mrs=MEDFileMeshReadSelector(40)
3082 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3083 mrs=MEDFileMeshReadSelector(41)
3084 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3085 mrs=MEDFileMeshReadSelector(42)
3086 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3087 mrs=MEDFileMeshReadSelector(43)
3088 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3089 mrs=MEDFileMeshReadSelector(44)
3090 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3091 mrs=MEDFileMeshReadSelector(45)
3092 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3093 mrs=MEDFileMeshReadSelector(46)
3094 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3095 mrs=MEDFileMeshReadSelector(47)
3096 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3097 mrs=MEDFileMeshReadSelector(48)
3098 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3099 mrs=MEDFileMeshReadSelector(49)
3100 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3101 mrs=MEDFileMeshReadSelector(50)
3102 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3103 mrs=MEDFileMeshReadSelector(51)
3104 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3105 mrs=MEDFileMeshReadSelector(52)
3106 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3107 mrs=MEDFileMeshReadSelector(53)
3108 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3109 mrs=MEDFileMeshReadSelector(54)
3110 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3111 mrs=MEDFileMeshReadSelector(55)
3112 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3113 mrs=MEDFileMeshReadSelector(56)
3114 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3115 mrs=MEDFileMeshReadSelector(57)
3116 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3117 mrs=MEDFileMeshReadSelector(58)
3118 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3119 mrs=MEDFileMeshReadSelector(59)
3120 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3121 mrs=MEDFileMeshReadSelector(60)
3122 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3123 mrs=MEDFileMeshReadSelector(61)
3124 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3125 mrs=MEDFileMeshReadSelector(62)
3126 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3127 mrs=MEDFileMeshReadSelector(63)
3128 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3130 mrs=MEDFileMeshReadSelector(63)
3131 mrs.setCellFamilyFieldReading(False)
3132 self.assertEqual(mrs.getCode(),62)
3133 mrs.setCellFamilyFieldReading(True)
3134 self.assertEqual(mrs.getCode(),63)
3135 mrs.setNodeFamilyFieldReading(False)
3136 self.assertEqual(mrs.getCode(),61)
3137 mrs.setNodeFamilyFieldReading(True)
3138 self.assertEqual(mrs.getCode(),63)
3139 mrs.setCellNameFieldReading(False)
3140 self.assertEqual(mrs.getCode(),59)
3141 mrs.setCellNameFieldReading(True)
3142 self.assertEqual(mrs.getCode(),63)
3143 mrs.setNodeNameFieldReading(False)
3144 self.assertEqual(mrs.getCode(),55)
3145 mrs.setNodeNameFieldReading(True)
3146 self.assertEqual(mrs.getCode(),63)
3147 mrs.setCellNumFieldReading(False)
3148 self.assertEqual(mrs.getCode(),47)
3149 mrs.setCellNumFieldReading(True)
3150 self.assertEqual(mrs.getCode(),63)
3151 mrs.setNodeNumFieldReading(False)
3152 self.assertEqual(mrs.getCode(),31)
3153 mrs.setNodeNumFieldReading(True)
3154 self.assertEqual(mrs.getCode(),63)
3157 def testPartialReadOfMeshes(self):
3158 fname="Pyfile70.med"
3159 # building a mesh containing 4 tri3 + 5 quad4
3160 tri=MEDCouplingUMesh("tri",2)
3161 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3162 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3163 tris=[tri.deepCpy() for i in xrange(4)]
3164 for i,elt in enumerate(tris): elt.translate([i,0])
3165 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3166 quad=MEDCouplingUMesh("quad",2)
3167 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3168 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3169 quads=[quad.deepCpy() for i in xrange(5)]
3170 for i,elt in enumerate(quads): elt.translate([5+i,0])
3171 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3172 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3173 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3174 m1=m.buildDescendingConnectivity()[0]
3175 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3177 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3178 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3179 mm.setGroupsAtLevel(0,[grp0,grp1])
3180 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3181 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3182 mm.setGroupsAtLevel(-1,[grp2,grp3])
3183 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3184 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3185 mm.setGroupsAtLevel(1,[grp4,grp5])
3186 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3187 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3188 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3192 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3193 b4_ref_heap_mem=mm.getHeapMemorySize()
3194 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3195 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3196 ref_heap_mem=mm.getHeapMemorySize()
3197 # check the gain of memory using 1GTUMesh instead of UMesh
3198 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
3200 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3201 self.assertEqual(len(mm.getGroupsNames()),0)
3202 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3203 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3204 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3205 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3206 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3207 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3208 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3209 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3210 delta1=ref_heap_mem-mm.getHeapMemorySize()
3211 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3213 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3214 self.assertEqual(len(mm.getGroupsNames()),6)
3215 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3216 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3217 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3218 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3219 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3220 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3221 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3222 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3223 delta2=ref_heap_mem-mm.getHeapMemorySize()
3224 self.assertTrue(delta2<delta1)
3225 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3227 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3228 self.assertEqual(len(mm.getGroupsNames()),6)
3229 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3230 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3231 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3232 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3233 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3234 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3235 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3236 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3237 delta3=ref_heap_mem-mm.getHeapMemorySize()
3238 self.assertTrue(delta3<delta2)
3239 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3241 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3242 self.assertEqual(len(mm.getGroupsNames()),6)
3243 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3244 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3245 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3246 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3247 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3248 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3249 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3250 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3251 delta4=ref_heap_mem-mm.getHeapMemorySize()
3252 self.assertTrue(delta4<delta3)
3253 self.assertTrue(delta4>=32*4*2)
3255 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3256 self.assertEqual(len(mm.getGroupsNames()),6)
3257 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3258 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3259 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3260 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3261 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3262 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3263 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3264 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3265 delta5=ref_heap_mem-mm.getHeapMemorySize()
3266 self.assertTrue(delta5<delta4)
3267 self.assertEqual(delta5,0)
3270 # this test checks that setFieldProfile perform a check of the array length
3271 # compared to the profile length. This test also checks that mesh attribute of field
3272 # is not used by setFieldProfile (because across this test mesh is equal to None)
3273 def testCheckCompatibilityPfl1(self):
3274 # building a mesh containing 4 tri3 + 5 quad4
3275 tri=MEDCouplingUMesh("tri",2)
3276 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3277 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3278 tris=[tri.deepCpy() for i in xrange(4)]
3279 for i,elt in enumerate(tris): elt.translate([i,0])
3280 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3281 quad=MEDCouplingUMesh("quad",2)
3282 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3283 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3284 quads=[quad.deepCpy() for i in xrange(5)]
3285 for i,elt in enumerate(quads): elt.translate([5+i,0])
3286 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3287 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3288 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3289 m1=m.buildDescendingConnectivity()[0]
3290 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3292 f1ts=MEDFileField1TS()
3293 f=MEDCouplingFieldDouble(ON_NODES)
3294 vals=DataArrayDouble(7) ; vals.iota(1000)
3296 f.setName("anonymous") # f has no mesh it is not a bug
3297 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3298 f1ts.setFieldProfile(f,mm,0,pfl)
3300 f1ts=MEDFileField1TS()
3301 f=MEDCouplingFieldDouble(ON_NODES)
3302 vals=DataArrayDouble(8) ; vals.iota(1000)
3304 f.setName("anonymous") # f has no mesh it is not a bug
3305 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3306 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3308 f1ts=MEDFileField1TS()
3309 f=MEDCouplingFieldDouble(ON_CELLS)
3310 vals=DataArrayDouble(7) ; vals.iota(1000)
3312 f.setName("anonymous") # f has no mesh it is not a bug
3313 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3314 f1ts.setFieldProfile(f,mm,0,pfl)
3315 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3317 f1ts=MEDFileField1TS()
3318 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3319 vals=DataArrayDouble(27) ; vals.iota(1000)
3321 f.setName("anonymous") # f has no mesh it is not a bug
3322 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3324 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])
3325 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3326 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])
3328 f1ts.setFieldProfile(f,mm,0,pfl)
3329 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3330 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3331 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3332 vals=DataArrayDouble(27) ; vals.iota(1000)
3333 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3335 f1ts=MEDFileField1TS()
3336 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3337 vals=DataArrayDouble(25) ; vals.iota(1000)
3339 f.setName("anonymous") # f has no mesh it is not a bug
3340 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3341 f1ts.setFieldProfile(f,mm,0,pfl)
3342 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3343 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3345 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3346 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3348 f1ts=MEDFileField1TS()
3349 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3350 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3352 f1ts.setFieldProfile(f,mm,0,pfl)
3355 def testWRMeshWithNoCells(self):
3356 fname="Pyfile71.med"
3357 a=DataArrayDouble(4) ; a.iota()
3358 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3359 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3361 m.setMeshAtLevel(0,m00)
3362 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3363 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3367 m=MEDFileMesh.New(fname)
3368 self.assertEqual((),m.getNonEmptyLevels())
3369 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))
3370 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3371 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3374 def testWRQPolyg1(self):
3375 fname="Pyfile72.med"
3376 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3377 m.insertNextCell([0,2,1,3])
3378 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3380 ms=[m.deepCpy() for i in xrange(4)]
3381 for i,elt in enumerate(ms):
3382 elt.translate([float(i)*1.5,0.])
3384 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3385 m0.convertAllToPoly()
3387 ms=[m.deepCpy() for i in xrange(5)]
3388 for i,elt in enumerate(ms):
3389 elt.translate([float(i)*1.5,1.5])
3391 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3392 m1.convertAllToPoly()
3393 m1.convertLinearCellsToQuadratic()
3395 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3398 mm.setMeshAtLevel(0,m)
3399 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3400 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3401 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3402 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3407 mm_read=MEDFileUMesh(fname)
3408 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3409 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3410 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3411 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3413 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3415 arr0=DataArrayDouble(9) ; arr0.iota()
3416 arr1=DataArrayDouble(9) ; arr1.iota(100)
3417 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3418 f.setArray(arr) ; f.checkCoherency()
3420 ff=MEDFileField1TS()
3421 ff.setFieldNoProfileSBT(f)
3424 ff_read=MEDFileField1TS(fname)
3425 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3426 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3429 def testLoadIfNecessaryOnFromScratchFields0(self):
3431 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3433 fname="Pyfile77.med"
3434 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3435 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3437 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3438 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3439 m.finishInsertingCells()
3441 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3442 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3446 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3447 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3449 f0.setName("myELNOField")
3450 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3451 f0.setArray(arrs[0])
3452 ff0.appendFieldNoProfileSBT(f0)
3455 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3456 f0.setArray(arrs[1])
3457 ff0.appendFieldNoProfileSBT(f0)
3460 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3461 f0.setArray(arrs[2])
3462 ff0.appendFieldNoProfileSBT(f0)
3465 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3466 f0.setArray(arrs[3])
3467 ff0.appendFieldNoProfileSBT(f0)
3469 for i,arr in enumerate(arrs):
3470 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3471 fs[0][i].loadArraysIfNecessary()
3472 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3474 fs.loadArraysIfNecessary()
3475 for i,arr in enumerate(arrs):
3476 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3478 fs[0].loadArraysIfNecessary()
3479 for i,arr in enumerate(arrs):
3480 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3484 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3485 """ 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.
3487 fname="Pyfile78.med"
3488 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)
3489 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3490 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3492 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
3493 m0.insertNextCell(NORM_TETRA4,elt)
3495 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
3496 m0.insertNextCell(NORM_PYRA5,elt)
3498 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
3499 m0.insertNextCell(NORM_PENTA6,elt)
3501 m0.checkCoherency2()
3502 m1=MEDCouplingUMesh(); m1.setName("mesh")
3503 m1.setMeshDimension(2);
3504 m1.allocateCells(5);
3505 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3506 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3507 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3508 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3509 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3510 m1.setCoords(coords);
3511 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3513 m3.insertNextCell(NORM_POINT1,[2])
3514 m3.insertNextCell(NORM_POINT1,[3])
3515 m3.insertNextCell(NORM_POINT1,[4])
3516 m3.insertNextCell(NORM_POINT1,[5])
3519 mm.setMeshAtLevel(0,m0)
3520 mm.setMeshAtLevel(-1,m1)
3521 mm.setMeshAtLevel(-3,m3)
3523 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3524 mm=MEDFileMesh.New(fname)
3526 fmts=MEDFileFieldMultiTS()
3527 f1ts=MEDFileField1TS()
3528 for lev in mm.getNonEmptyLevels():
3529 for gt in mm.getGeoTypesAtLevel(lev):
3530 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3531 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3532 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3533 f.setArray(arr) ; f.setName("f0")
3534 f1ts.setFieldNoProfileSBT(f)
3537 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3538 for lev in [0,-1,-3]:
3539 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3541 fmts.pushBackTimeStep(f1ts)
3545 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3546 fs=MEDFileFields(fname)
3547 self.assertEqual(len(fs),1)
3548 self.assertEqual(len(fs[0]),1)
3550 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),'','')])])
3551 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))
3554 def testMEDFileUMeshSetName(self):
3555 """ 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.
3556 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3558 fname="Pyfile79.med"
3559 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3561 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3562 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)
3563 m0.allocateCells(5);
3564 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3565 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3566 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3567 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3568 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3569 m0.setCoords(coords);
3570 mm.setMeshAtLevel(0,m0)
3571 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3573 m2.insertNextCell(NORM_POINT1,[2])
3574 m2.insertNextCell(NORM_POINT1,[3])
3575 m2.insertNextCell(NORM_POINT1,[4])
3576 m2.insertNextCell(NORM_POINT1,[5])
3577 mm.setMeshAtLevel(-2,m2)
3578 self.assertEqual(mm.getName(),"")
3579 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3580 mm.forceComputationOfParts()
3581 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3583 self.assertEqual(mm.getName(),"abc")
3584 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3585 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3586 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3587 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")
3590 def testMEDFileFieldsUnloadArraysWithoutDataLoss1(self):
3591 fileName="Pyfile80.med"
3592 m=MEDCouplingCMesh() ; m.setName("cmesh")
3593 arr=DataArrayDouble(6) ; arr.iota()
3594 m.setCoords(arr,arr)
3595 nbCells=m.getNumberOfCells()
3596 self.assertEqual(25,nbCells)
3597 f=MEDCouplingFieldDouble(ON_CELLS)
3598 f.setName("FieldOnCell") ; f.setMesh(m)
3599 arr=DataArrayDouble(nbCells) ; arr.iota()
3603 fmts=MEDFileFieldMultiTS()
3605 for i in xrange(nbCells):
3606 t=(float(i)+0.1,i+1,-i-2)
3608 arr2=DataArrayDouble(nbCells)
3609 perm=DataArrayInt(nbCells) ; perm.iota(i) ; perm%=nbCells
3612 f1ts=MEDFileField1TS()
3613 f1ts.setFieldNoProfileSBT(f)
3614 fmts.pushBackTimeStep(f1ts)
3616 fmts.unloadArraysWithoutDataLoss()
3617 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))
3618 fs=MEDFileFields() ; fs.pushField(fmts)
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))
3620 fs.unloadArraysWithoutDataLoss()
3621 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))
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 f1ts.unloadArraysWithoutDataLoss()
3625 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))
3626 mm.write(fileName,2)
3627 fs.write(fileName,0)
3628 del m,fmts,mm,f,f1ts
3630 mm=MEDFileMesh.New(fileName)
3631 fmts=MEDFileFieldMultiTS(fileName)
3632 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))
3633 fmts.unloadArraysWithoutDataLoss()
3634 self.assertTrue(not fmts[0].getUndergroundDataArray().isAllocated())
3635 fmts.loadArraysIfNecessary()
3636 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))
3638 fs=MEDFileFields(fileName)
3639 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))
3640 fs.unloadArraysWithoutDataLoss()
3641 self.assertTrue(not fs[0][0].getUndergroundDataArray().isAllocated())
3642 fs.loadArraysIfNecessary()
3643 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))
3645 f1ts=MEDFileField1TS(fileName)
3646 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))
3647 f1ts.unloadArraysWithoutDataLoss()
3648 self.assertTrue(not f1ts.getUndergroundDataArray().isAllocated())
3649 f1ts.loadArraysIfNecessary()
3650 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))
3653 def testMEDFileUMeshLoadPart1(self):
3654 """ 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
3655 memory of the returned instance.
3657 fileName="Pyfile81.med"
3658 arr=DataArrayDouble(6) ; arr.iota()
3659 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3660 m=m.buildUnstructured()
3662 m.changeSpaceDimension(3,0.)
3663 infos=["aa [b]","cc [de]","gg [klm]"]
3664 m.getCoords().setInfoOnComponents(infos)
3667 mm.setMeshAtLevel(0,m)
3668 m1=MEDCouplingCMesh() ; m1.setCoords(arr) ; m1.setName("Mesh")
3669 m1=m1.buildUnstructured() ; m1.setCoords(m.getCoords())
3670 mm.setMeshAtLevel(-1,m1)
3671 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])
3672 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])
3673 namesCellL0=DataArrayAsciiChar(25,16)
3674 namesCellL0[:]=["Cell#%.3d "%(i) for i in xrange(25)]
3675 renumM1=DataArrayInt([3,4,0,2,1])
3676 famFieldM1=DataArrayInt([-3,-4,0,-2,-1])
3677 mm.setRenumFieldArr(0,renum0)
3678 mm.setFamilyFieldArr(0,famField0)
3679 mm.setNameFieldAtLevel(0,namesCellL0)
3680 mm.setRenumFieldArr(-1,renumM1)
3681 mm.setFamilyFieldArr(-1,famFieldM1)
3682 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])
3683 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])
3684 namesNodes=DataArrayAsciiChar(36,16)
3685 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(36)]
3686 mm.setRenumFieldArr(1,renum1)
3687 mm.setFamilyFieldArr(1,famField1)
3688 mm.setNameFieldAtLevel(1,namesNodes)
3689 mm.setFamilyId("Fam7",77)
3690 mm.setFamilyId("Fam8",88)
3691 mm.setGroupsOnFamily("Fam7",["Grp0","Grp1"])
3692 mm.setGroupsOnFamily("Fam8",["Grp1","Grp2"])
3693 mm.write(fileName,2)
3695 mm0=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[0,10,1])
3696 self.assertEqual(mm0.getAllGeoTypes(),[NORM_QUAD4])
3697 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])))
3698 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)
3699 self.assertTrue(mm0.getCoords().isEqual(coo,1e-12))
3700 self.assertTrue(mm0.getFamilyFieldAtLevel(0).isEqual(famField0[:10]))
3701 self.assertTrue(mm0.getNumberFieldAtLevel(0).isEqual(renum0[:10]))
3702 self.assertTrue(mm0.getNameFieldAtLevel(0).isEqual(namesCellL0[:10]))
3703 self.assertTrue(mm0.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3704 self.assertTrue(mm0.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3705 self.assertTrue(mm0.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3707 mm1=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_QUAD4],[11,25,1])
3708 self.assertEqual(mm1.getAllGeoTypes(),[NORM_QUAD4])
3709 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])))
3710 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)
3711 self.assertTrue(mm1.getCoords().isEqual(coo,1e-12))
3712 self.assertTrue(mm1.getFamilyFieldAtLevel(0).isEqual(famField0[11:]))
3713 self.assertTrue(mm1.getNumberFieldAtLevel(0).isEqual(renum0[11:]))
3714 self.assertTrue(mm1.getNameFieldAtLevel(0).isEqual(namesCellL0[11:]))
3715 self.assertTrue(mm1.getFamilyFieldAtLevel(1).isEqual(famField1[13:]))
3716 self.assertTrue(mm1.getNumberFieldAtLevel(1).isEqual(renum1[13:]))
3717 self.assertTrue(mm1.getNameFieldAtLevel(1).isEqual(namesNodes[13:]))
3719 mm2=MEDFileUMesh.LoadPartOf(fileName,"Mesh",[NORM_SEG2,NORM_QUAD4],[0,5,1,1,10,1])
3720 self.assertEqual(mm2.getAllGeoTypes(),[NORM_QUAD4,NORM_SEG2])
3721 self.assertTrue(mm2.getFamilyFieldAtLevel(0).isEqual(famField0[1:10]))
3722 self.assertTrue(mm2.getNumberFieldAtLevel(0).isEqual(renum0[1:10]))
3723 self.assertTrue(mm2.getNameFieldAtLevel(0).isEqual(namesCellL0[1:10]))
3724 self.assertTrue(mm2.getFamilyFieldAtLevel(-1).isEqual(famFieldM1))
3725 self.assertTrue(mm2.getNumberFieldAtLevel(-1).isEqual(renumM1))
3726 self.assertTrue(mm2.getNameFieldAtLevel(-1) is None)
3727 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])))
3728 self.assertTrue(mm2.getDirectUndergroundSingleGeoTypeMesh(NORM_SEG2).getNodalConnectivity().isEqual(DataArrayInt([0,1,1,2,2,3,3,4,4,5])))
3729 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)
3730 self.assertTrue(mm2.getCoords().isEqual(coo,1e-12))
3731 self.assertTrue(mm2.getFamilyFieldAtLevel(1).isEqual(famField1[:18]))
3732 self.assertTrue(mm2.getNumberFieldAtLevel(1).isEqual(renum1[:18]))
3733 self.assertTrue(mm2.getNameFieldAtLevel(1).isEqual(namesNodes[:18]))
3736 def testMEDFileFieldsLoadPart1(self):
3737 """This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
3739 fileName="Pyfile82.med"
3741 compos=["aa [kg]","bbb [m/s]"]
3742 arr=DataArrayDouble(6) ; arr.iota()
3743 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3744 m=m.buildUnstructured()
3746 m.changeSpaceDimension(3,0.)
3747 infos=["aa [b]","cc [de]","gg [klm]"]
3748 m.getCoords().setInfoOnComponents(infos)
3750 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3752 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3754 arr[:,1]=range(100,125)
3756 MEDLoader.WriteField(fileName,f,2)
3757 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3758 f.setName("FieldNode")
3759 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3760 arr[:,0]=range(200,236)
3761 arr[:,1]=range(300,336)
3764 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3767 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[0,6,1])
3769 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3770 self.assertEqual(fs[1][0].getFieldSplitedByType(),[(40,[(1,(0,14),'','')])])
3773 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[3,15,1])
3775 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3777 fs[0][0].loadArrays()
3778 arr=DataArrayDouble(12,2) ; arr[:,0]=range(3,15) ; arr[:,1]=range(103,115)
3779 arr.setInfoOnComponents(compos)
3780 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3781 fs[1][0].loadArrays()
3782 arr=DataArrayDouble(21,2) ; arr[:,0]=range(203,224) ; arr[:,1]=range(303,324)
3783 arr.setInfoOnComponents(compos)
3784 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3787 def testMEDFileWithoutCells1(self):
3788 fileName="Pyfile83.med"
3789 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
3790 coo.setInfoOnComponents(["aa [m]","bbb [s]","cccc [m/s]"])
3794 mm.write(fileName,2)
3796 mm=MEDFileMesh.New(fileName)
3797 self.assertEqual(mm.getName(),"mesh")
3798 self.assertTrue(mm.getCoords().isEqual(coo,1e-12))
3801 def testZipCoordsWithLoadPart1(self):
3802 """ Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
3804 fileName="Pyfile84.med"
3806 compos=["aa [kg]","bbb [m/s]"]
3807 arr=DataArrayDouble(6) ; arr.iota()
3808 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
3809 m=m.buildUnstructured()
3811 m.changeSpaceDimension(3,0.)
3812 infos=["aa [b]","cc [de]","gg [klm]"]
3813 m.getCoords().setInfoOnComponents(infos)
3815 f=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME) ; f.setMesh(m)
3817 arr=DataArrayDouble(25,2) ; arr.setInfoOnComponents(compos)
3819 arr[:,1]=range(100,125)
3821 MEDLoader.WriteField(fileName,f,2)
3822 f=MEDCouplingFieldDouble(ON_NODES,ONE_TIME) ; f.setMesh(m)
3823 f.setName("FieldNode")
3824 arr=DataArrayDouble(36,2) ; arr.setInfoOnComponents(compos)
3825 arr[:,0]=range(200,236)
3826 arr[:,1]=range(300,336)
3829 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fileName,f)
3832 mm=MEDFileUMesh.LoadPartOf(fileName,meshName,[NORM_QUAD4],[4,6,1])
3834 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3835 self.assertEqual(spd.getSlice(),slice(4,6,1))
3836 spd=mm.getPartDefAtLevel(1)
3837 self.assertEqual(spd.getSlice(),slice(4,14,1))
3838 self.assertTrue(spd.getNumberOfElems()==10 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3839 mm.zipCoords() # <- The important line is here !
3840 spd=mm.getPartDefAtLevel(0,NORM_QUAD4)
3841 self.assertEqual(spd.getSlice(),slice(4,6,1))
3842 spd=mm.getPartDefAtLevel(1)
3843 self.assertTrue(spd.getNumberOfElems()==8 and spd.getNumberOfElems()==mm.getNumberOfNodes())
3844 self.assertTrue(spd.toDAI().isEqual(DataArrayInt([4,5,6,7,10,11,12,13])))
3845 fs=MEDFileFields.LoadPartOf(fileName,False,ms)
3846 fs[0][0].loadArrays()
3847 arr=DataArrayDouble([(4,104),(5,105)])
3848 arr.setInfoOnComponents(compos)
3849 self.assertTrue(fs[0][0].getUndergroundDataArray().isEqual(arr,1e-12))
3850 fs[1][0].loadArrays()
3851 arr=DataArrayDouble([(204,304),(205,305),(206,306),(207,307),(210,310),(211,311),(212,312),(213,313)])
3852 arr.setInfoOnComponents(compos)
3853 self.assertTrue(fs[1][0].getUndergroundDataArray().isEqual(arr,1e-12))
3856 def testMEDFileCMeshSetGroupsAtLevel(self):
3857 """ Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
3859 m=MEDCouplingCMesh() ; m.setCoords(DataArrayDouble([0,1,2,3,4]),DataArrayDouble([0,1,2,3,4]))
3861 mm=MEDFileCMesh() ; mm.setMesh(m)
3862 grp=DataArrayInt([1,3,4,5,7]) ; grp.setName("MyAssembly")
3863 mm.setGroupsAtLevel(0,[grp])
3864 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-1,-2,-1,-2,-2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1])))
3867 def testMEDFileUMeshBuildExtrudedMesh1(self):
3868 """ New functionality of MEDFileUMesh.buildExtrudedMesh."""
3869 fileName="Pyfile85.med"
3872 meshName3DOut="Mesh3D"
3874 d1=DataArrayInt([0,4,20,24])
3875 d2=DataArrayInt([0,1,2,3,7,8,12,13,17,18,19,20])
3877 a=DataArrayDouble(6) ; a.iota()
3878 m=MEDCouplingCMesh() ; m.setCoords(a,a)
3879 m=m.buildUnstructured()
3880 d1c=d1.buildComplement(m.getNumberOfCells())
3881 m=m[d1c] ; m.zipCoords()
3882 m0=m[d2] ; m1=m[d2.buildComplement(m.getNumberOfCells())]
3884 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords([m0,m1])
3885 m.setName(meshName2D)
3886 mMinus1,a,b,c,d=m.buildDescendingConnectivity()
3887 e=d.deltaShiftIndex().getIdsEqual(1)
3890 mm.setMeshAtLevel(0,m) ; mm.setMeshAtLevel(-1,mMinus1)
3891 grp0=DataArrayInt([0,1,2,3,4,5,24,25,26]) ; grp0.setName("grp0")
3892 mm.setGroupsAtLevel(0,[grp0])
3893 grp1=e ; grp1.setName("grp1")
3894 mm.setGroupsAtLevel(-1,[grp1])
3895 mm.write(fileName,2)
3897 a=DataArrayDouble(3) ; a.iota()
3898 tmp=MEDCouplingCMesh() ; tmp.setCoords(a) ; tmp=tmp.buildUnstructured()
3899 tmp.setName(meshName1D)
3900 tmp.changeSpaceDimension(3)
3901 tmp.setCoords(tmp.getCoords()[:,[1,2,0]])
3903 mm1D.setMeshAtLevel(0,tmp)
3904 mm1D.write(fileName,0)
3906 mm2D=MEDFileMesh.New(fileName,meshName2D)
3907 mm1D=MEDFileMesh.New(fileName,meshName1D)
3908 m1D=mm1D.getMeshAtLevel(0)
3909 mm3D=mm2D.buildExtrudedMesh(m1D,0)
3911 self.assertEqual(mm3D.getName(),mm2D.getName())
3912 self.assertEqual(mm3D.getNumberOfCellsAtLevel(0),66)
3913 self.assertEqual(mm3D.getNumberOfCellsAtLevel(-1),194)
3914 self.assertEqual(mm3D.getGroupsNames(),('grp0','grp0_extruded','grp0_top','grp1','grp1_extruded','grp1_top'))
3915 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0"),(-1,))
3916 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_top"),(-1,))
3917 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp0_extruded"),(0,))
3918 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1"),(-2,))
3919 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_top"),(-2,))
3920 self.assertEqual(mm3D.getGrpNonEmptyLevels("grp1_extruded"),(-1,))
3921 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.)])
3922 self.assertTrue(mm3D.getCoords().isEqual(d,1e-12))
3923 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])
3924 self.assertTrue(mm3D[0].getNodalConnectivity().isEqual(d))
3925 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])
3926 self.assertTrue(mm3D[0].getNodalConnectivityIndex().isEqual(d))
3927 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])
3928 self.assertTrue(mm3D[-1].getNodalConnectivity().isEqual(d))
3929 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])
3930 self.assertTrue(mm3D[-1].getNodalConnectivityIndex().isEqual(d))
3931 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])
3932 self.assertTrue(mm3D[-2].getNodalConnectivity().isEqual(d))
3933 d=DataArrayInt(129) ; d.iota() ; d*=3
3934 self.assertTrue(mm3D[-2].getNodalConnectivityIndex().isEqual(d))
3936 self.assertEqual(mm3D.getGroupArr(-1,"grp0").getName(),"grp0")
3937 self.assertEqual(mm3D.getGroupArr(-2,"grp1").getName(),"grp1")
3938 self.assertTrue(mm3D.getGroupArr(-1,"grp0").isEqualWithoutConsideringStr(DataArrayInt([0,1,2,3,4,5,176,177,178])))
3939 self.assertTrue(mm3D.getGroupArr(-1,"grp0_top").isEqualWithoutConsideringStr(DataArrayInt([24,25,26,27,28,29,185,186,187])))
3940 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])))
3941 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])))
3942 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])))
3943 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])))
3944 mm3D.setName("MeshExtruded")
3945 mm3D.write(fileName,0)
3948 @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
3949 def testMEDFileUMeshPickeling1(self):
3951 outFileName="Pyfile86.med"
3952 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)
3953 c.setInfoOnComponents(["aa","bbb"])
3954 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
3955 m=MEDCouplingUMesh();
3956 m.setMeshDimension(2);
3958 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
3959 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
3960 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
3961 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
3962 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
3963 m.finishInsertingCells();
3966 m1=MEDCouplingUMesh.New();
3967 m1.setMeshDimension(1);
3968 m1.allocateCells(3);
3969 m1.insertNextCell(NORM_SEG2,2,[1,4])
3970 m1.insertNextCell(NORM_SEG2,2,[3,6])
3971 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
3972 m1.finishInsertingCells();
3975 m2=MEDCouplingUMesh.New();
3976 m2.setMeshDimension(0);
3977 m2.allocateCells(4);
3978 m2.insertNextCell(NORM_POINT1,1,[1])
3979 m2.insertNextCell(NORM_POINT1,1,[3])
3980 m2.insertNextCell(NORM_POINT1,1,[2])
3981 m2.insertNextCell(NORM_POINT1,1,[6])
3982 m2.finishInsertingCells();
3986 mm=MEDFileUMesh.New()
3987 self.assertTrue(mm.getUnivNameWrStatus())
3988 mm.setName("MyFirstMEDCouplingMEDmesh")
3989 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
3993 mm.setRenumFieldArr(0,DataArrayInt([32,41,50,56,7]))
3995 mm.setRenumFieldArr(-2,DataArrayInt([102,52,45,63]))
3996 # playing with groups
3997 g1_2=DataArrayInt.New()
3998 g1_2.setValues([1,3],2,1)
4000 g2_2=DataArrayInt.New()
4001 g2_2.setValues([1,2,3],3,1)
4003 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
4004 g1_1=DataArrayInt.New()
4005 g1_1.setValues([0,1,2],3,1)
4007 g2_1=DataArrayInt.New()
4008 g2_1.setValues([0,2],2,1)
4010 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
4011 g1_N=DataArrayInt.New()
4012 g1_N.setValues(range(8),8,1)
4014 g2_N=DataArrayInt.New()
4015 g2_N.setValues(range(9),9,1)
4017 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
4018 mm.createGroupOnAll(0,"GrpOnAllCell")
4019 # check content of mm
4020 t=mm.getGroupArr(0,"G1",False)
4021 self.assertTrue(g1_2.isEqual(t));
4022 t=mm.getGroupArr(0,"G2",False)
4023 self.assertTrue(g2_2.isEqual(t));
4024 t=mm.getGroupArr(-1,"G1",False)
4025 self.assertTrue(g1_1.isEqual(t));
4026 t=mm.getGroupArr(-1,"G2",False)
4027 self.assertTrue(g2_1.isEqual(t));
4028 t=mm.getGroupArr(1,"G1",False)
4029 self.assertTrue(g1_N.isEqual(t));
4030 t=mm.getGroupArr(1,"G2",False)
4031 self.assertTrue(g2_N.isEqual(t));
4032 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
4033 t=mm.getGroupArr(0,"GrpOnAllCell")
4035 st=cPickle.dumps(mm,cPickle.HIGHEST_PROTOCOL)
4036 mm2=cPickle.loads(st)
4037 self.assertTrue(mm.isEqual(mm2,1e-12)[0])
4040 def testMEDFileFieldsLoadSpecificEntities1(self):
4043 fileName="Pyfile87.med"
4047 m=MEDCouplingCMesh()
4048 arr=DataArrayDouble(nbNodes) ; arr.iota()
4050 m=m.buildUnstructured()
4053 fmts=MEDFileFieldMultiTS()
4054 for i in xrange(nbPdt):
4055 f=MEDCouplingFieldDouble(ON_NODES)
4057 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4059 f.setName(fieldName)
4060 f.setTime(float(i),i,0)
4061 fmts.appendFieldNoProfileSBT(f)
4064 mm=MEDFileUMesh() ; mm[0]=m
4065 fmts.write(fileName,2)
4066 mm.write(fileName,0)
4068 fs=MEDFileFields(fileName,False)
4069 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_NODES,NORM_ERROR)],False)
4070 fs.loadArraysIfNecessary()
4071 fs2.loadArraysIfNecessary()
4072 for i in xrange(nbPdt):
4073 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4075 m1=MEDCouplingCMesh() ; m1.setCoords(DataArrayDouble([0,1,2,3]),DataArrayDouble([0,1])) ; m1=m1.buildUnstructured() ; m1.simplexize(0)
4076 m2=MEDCouplingCMesh() ; m2.setCoords(DataArrayDouble([3,4,5]),DataArrayDouble([0,1])) ; m2=m2.buildUnstructured()
4077 m3=MEDCouplingUMesh.MergeUMeshes(m1,m2) ; m3.setName(meshName)
4078 fmts=MEDFileFieldMultiTS()
4079 for i in xrange(nbPdt):
4080 f=MEDCouplingFieldDouble(ON_CELLS)
4082 arr=DataArrayDouble(8) ; arr.iota() ; arr*=i
4084 f.setName(fieldName)
4085 f.setTime(float(i),i,0)
4086 fmts.appendFieldNoProfileSBT(f)
4088 mm=MEDFileUMesh() ; mm[0]=m3
4090 self.assertEqual(mm.getNonEmptyLevels(),())
4092 self.assertEqual(mm.getNonEmptyLevels(),(0,))
4093 fmts.write(fileName,2)
4094 fs=MEDFileFields(fileName,False)
4095 fs2=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3)],False)
4096 fs3=MEDFileFieldMultiTS.LoadSpecificEntities(fileName,fieldName,[(ON_CELLS,NORM_QUAD4)],False)
4097 fs4=MEDFileFields.LoadSpecificEntities(fileName,[(ON_CELLS,NORM_TRI3),(ON_CELLS,NORM_QUAD4)],False)
4098 fs.loadArraysIfNecessary()
4099 fs2.loadArraysIfNecessary()
4100 fs3.loadArraysIfNecessary()
4101 fs4.loadArraysIfNecessary()
4102 for i in xrange(nbPdt):
4103 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[:6].isEqual(fs2[fieldName][i].getUndergroundDataArray(),1e-12))
4104 self.assertTrue(fs[fieldName][i].getUndergroundDataArray()[6:8].isEqual(fs3[i].getUndergroundDataArray(),1e-12))
4105 self.assertTrue(fs[fieldName][i].getUndergroundDataArray().isEqual(fs4[fieldName][i].getUndergroundDataArray(),1e-12))
4109 def testMEDFileLotsOfTSRW1(self):
4112 fileName="Pyfile88.med"
4113 nbPdt=300 # <- perftest = 30000
4116 maxPdt=100 # <- optimum = 500
4117 m=MEDCouplingCMesh()
4118 arr=DataArrayDouble(nbNodes) ; arr.iota()
4120 m=m.buildUnstructured()
4123 nbOfField=nbPdt/maxPdt
4125 for j in xrange(nbOfField):
4126 fmts=MEDFileFieldMultiTS()
4127 s=DataArray.GetSlice(slice(0,nbPdt,1),j,nbOfField)
4128 for i in xrange(s.start,s.stop,s.step):
4129 f=MEDCouplingFieldDouble(ON_NODES)
4131 arr=DataArrayDouble(nbNodes) ; arr.iota() ; arr*=i
4133 f.setName("%s_%d"%(fieldName,j))
4134 f.setTime(float(i),i,0)
4135 fmts.appendFieldNoProfileSBT(f)
4140 mm=MEDFileUMesh() ; mm[0]=m
4141 fs.write(fileName,2)
4142 mm.write(fileName,0)
4144 def appendInDict(d,key,val):
4151 allFields=MEDLoader.GetAllFieldNames(fileName)
4153 pat=re.compile("([\d]+)([\s\S]+)$")
4154 for st in allFields:
4158 appendInDict(allFieldsDict,m.group(2)[::-1],m.group(1)[::-1])
4161 appendInDict(allFieldsDict,st,'')
4165 for k in allFieldsDict:
4166 if allFieldsDict[k]!=['']:
4167 allFieldsDict[k]=sorted(allFieldsDict[k],key=lambda x: int(x))
4170 for it in allFieldsDict[k]:
4171 fmts2.append(MEDFileFieldMultiTS.LoadSpecificEntities(fileName,k+it,[(ON_NODES,NORM_ERROR)]))
4176 for ii in xrange(nbIter):
4177 zeResu.pushBackTimeSteps(fmts2.pop())
4180 fs2.pushField(zeResu)
4182 self.assertEqual(fs2[0].getTimeSteps(),[(i,0,float(i)) for i in xrange(nbPdt)])
4185 def testMEDFileMeshRearrangeFamIds1(self):
4186 """ Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies."""
4187 fileName="Pyfile89.med"
4188 meshName='Maillage_2'
4190 coords=DataArrayDouble([(0.,0.,0.),(0.,0.,200.),(0.,200.,200.),(0.,200.,0.),(200.,0.,0.),(200.,0.,200.),(200.,200.,200.),(200.,200.,0.),(0.,0.,100.),(0.,100.,200.),(0.,200.,100.),(0.,100.,0.),(200.,0.,100.),(200.,100.,200.),(200.,200.,100.),(200.,100.,0.),(100.,0.,0.),(100.,0.,200.),(100.,200.,0.),(100.,200.,200.),(0.,116.87743909766768,83.12256090233232),(200.,116.87743909766768,83.12256090233232),(116.87743909766769,0.,116.87743909766769),(116.87743909766769,200.,116.87743909766769),(116.87743909766769,116.87743909766769,0.),(116.87743909766769,116.87743909766769,200.),(63.3851584383713,56.1391811199829,119.728314479261),(138.008709441123,116.039297556044,119.903790959468)])
4192 c0=DataArrayInt([14,1,26,9,8,14,17,26,1,8,14,27,26,17,22,14,26,16,20,8,14,8,0,16,11,14,16,20,11,24,14,25,20,26,27,14,22,26,24,27,14,26,16,22,24,14,8,26,22,17,14,20,9,25,26,14,19,20,25,23,14,23,6,27,25,14,19,23,10,20,14,27,22,21,24,14,27,21,14,18,14,26,9,25,17,14,13,27,25,17,14,27,18,24,21,14,22,21,15,12,14,27,20,24,18,14,23,25,27,20,14,13,27,6,25,14,23,27,6,14,14,15,16,22,12,14,27,17,13,22,14,22,27,21,13,14,24,16,22,15,14,24,18,7,21,14,12,4,15,16,14,22,12,5,13,14,8,26,16,22,14,13,27,21,14,14,20,18,10,3,14,14,27,18,23,14,14,27,6,13,14,21,22,13,12,14,25,26,17,27,14,19,9,25,20,14,26,24,20,16,14,22,24,15,21,14,9,26,1,17,14,23,27,18,20,14,20,11,18,3,14,14,18,21,7,14,19,2,9,10,14,19,23,25,6,14,18,23,20,10,14,20,26,8,9,14,22,13,5,17,14,24,11,18,20,14,21,15,7,24,14,19,20,10,9,14,20,26,27,24,14,16,8,11,20])
4193 c0i=DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275])
4194 m0=MEDCouplingUMesh(meshName,3) ; m0.setCoords(coords)
4195 m0.setConnectivity(c0,c0i)
4198 c1=DataArrayInt([3,8,20,11,3,8,9,20,3,9,2,10,3,20,9,10,3,0,8,11,3,9,8,1,3,20,10,3,3,11,20,3,3,15,21,12,3,5,12,13,3,21,13,12,3,15,12,4,3,14,6,13,3,14,13,21,3,7,14,21,3,7,21,15,3,5,22,12,3,4,12,16,3,17,1,8,3,16,8,0,3,5,17,22,3,12,22,16,3,22,17,8,3,16,22,8,3,10,2,19,3,7,18,14,3,14,23,6,3,3,10,18,3,23,19,6,3,18,23,14,3,10,19,23,3,10,23,18,3,3,18,11,3,7,24,18,3,15,4,16,3,11,16,0,3,7,15,24,3,18,24,11,3,24,15,16,3,11,24,16,3,9,19,2,3,19,25,6,3,17,5,13,3,1,17,9,3,25,13,6,3,9,25,19,3,17,13,25,3,17,25,9])
4199 c1i=DataArrayInt([0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192])
4200 m1=MEDCouplingUMesh(meshName,2) ; m1.setCoords(coords)
4201 m1.setConnectivity(c1,c1i)
4204 c2=DataArrayInt([0,8,8,1,1,9,9,2,3,10,10,2,0,11,11,3,4,12,12,5,5,13,13,6,7,14,14,6,4,15,15,7,0,16,16,4,1,17,17,5,3,18,18,7,2,19,19,6])
4205 m2=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
4206 m2.setNodalConnectivity(c2) ; m2.setCoords(coords)
4207 mm[-2]=m2.buildUnstructured()
4209 ref0=DataArrayInt(55) ; ref0[:]=0
4210 mm.setFamilyFieldArr(0,ref0)
4211 mm.setFamilyFieldArr(1,DataArrayInt([0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]))
4212 ref1=DataArrayInt([0,0,0,0,0,0,0,0,-6,-6,-6,-6,-6,-6,-6,-6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
4213 mm.setFamilyFieldArr(-1,ref1)
4214 ref2=DataArrayInt([0,0,-7,-7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
4215 mm.setFamilyFieldArr(-2,ref2)
4217 for f,fid in (('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2)):
4218 mm.setFamilyId(f,fid)
4219 for grp,fams in [('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',))]:
4220 mm.setFamiliesOnGroup(grp,fams)
4221 mm.write(fileName,2)
4223 mm=MEDFileMesh.New(fileName)
4224 grp=mm.getGroup(-1,"Groupe_1")
4225 dai=grp.computeFetchedNodeIds()
4228 mm.rearrangeFamilies() # <- the aim of the test
4229 self.assertTrue(dai.isEqual(mm.getGroupArr(1,"TOTO")))
4230 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(ref0))
4231 self.assertTrue(mm.getFamilyFieldAtLevel(-1).isEqual(ref1))
4232 self.assertTrue(mm.getFamilyFieldAtLevel(-2).isEqual(ref2))
4233 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([0,0,2,0,9,9,9,9,0,0,0,0,9,9,9,9,0,0,0,0,0,9,0,0,0,0,0,0])))
4234 allGrps=[('Groupe_1',('FAM_-6_Groupe_1',)),('Groupe_2',('FAM_-7_Groupe_2',)),('Groupe_3',('FAM_2_Groupe_3',)),('TOTO',('Family_9',))]
4235 allFams=[('FAMILLE_ZERO',0),('FAM_-6_Groupe_1',-6),('FAM_-7_Groupe_2',-7),('FAM_2_Groupe_3',2),('Family_9',9)]
4236 self.assertEqual(list(mm.getGroupsNames()),[elt[0] for elt in allGrps])
4237 for elt,fams in allGrps:
4238 self.assertEqual(mm.getFamiliesOnGroup(elt),fams)
4239 self.assertEqual(list(mm.getFamiliesNames()),[elt[0] for elt in allFams])
4240 for elt,eltId in allFams:
4241 self.assertEqual(mm.getFamilyId(elt),eltId)
4244 def testNonRegrCMeshSetFieldPfl1(self):
4245 """ Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile."""
4246 ff=MEDFileField1TS()
4249 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4253 field=MEDCouplingFieldDouble(ON_CELLS)
4255 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4256 field.setName("Field")
4257 field.checkCoherency()
4258 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU") #<- false profile because defined on all cells !
4259 ff.setFieldProfile(field,mm,0,pfl) # <- bug was revealed here !
4260 self.assertEqual(ff.getPfls(),())
4261 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4262 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4263 del ff,mm,field,field2,pfl
4264 # same with unstructured mesh
4265 ff=MEDFileField1TS()
4268 m=MEDCouplingCMesh() ; arr=DataArrayDouble(5) ; arr.iota()
4271 m=m.buildUnstructured()
4273 field=MEDCouplingFieldDouble(ON_CELLS)
4275 field.setArray(DataArrayDouble([1.2,2.3,3.4,4.5]))
4276 field.setName("Field")
4277 field.checkCoherency()
4278 pfl=DataArrayInt([0,1,2,3]) ; pfl.setName("TUTU")
4279 ff.setFieldProfile(field,mm,0,pfl)
4280 self.assertEqual(ff.getPfls(),())
4281 field2=ff.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
4282 self.assertTrue(field.isEqual(field2,1e-12,1e-12))
4285 def testMEDFileUMeshLinearToQuadraticAndRev1(self):
4287 fileName="Pyfile90.med"
4288 fileName2="Pyfile91.med"
4289 arr=DataArrayDouble(5) ; arr.iota()
4290 m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
4291 m=m.buildUnstructured()
4292 d=DataArrayInt([3,7,11,15])
4295 m2=m[d.buildComplement(m.getNumberOfCells())]
4296 m=MEDCouplingUMesh.MergeUMeshesOnSameCoords(m1,m2)
4297 m.changeSpaceDimension(3,0.)
4298 arr=DataArrayDouble(3) ; arr.iota()
4299 m1D=MEDCouplingCMesh() ; m1D.setCoords(arr) ; m1D=m1D.buildUnstructured() ; m1D.changeSpaceDimension(3,0.)
4300 m1D.setCoords(m1D.getCoords()[:,[1,2,0]])
4301 delta=m.getNumberOfNodes()*(m1D.getNumberOfNodes()-1)
4302 m3D=m.buildExtrudedMesh(m1D,0)
4303 m3D.sortCellsInMEDFileFrmt()
4304 m3D.setName(meshName)
4305 m2D=m ; m2D.setCoords(m3D.getCoords()) ; m2D.shiftNodeNumbersInConn(delta) ; m2D.setName(meshName) ; m2D.checkCoherency2()
4306 m1D=m2D.computeSkin() ; m1D.setName(meshName)
4309 mm[0]=m3D ; mm[-1]=m2D ; mm[-2]=m1D
4310 grpEdge0=DataArrayInt([1,2,3,5]) ; grpEdge0.setName("East")
4311 grpEdge1=DataArrayInt([0,1]) ; grpEdge1.setName("Corner1")
4312 grpFaceSouth=DataArrayInt([0,1,8,9,10]) ; grpFaceSouth.setName("SouthFace")
4313 grpFaceNorth=DataArrayInt([6,7,17,18,19]) ; grpFaceNorth.setName("NorthFace")
4314 diagFace=DataArrayInt([0,1,13,15,17]) ; diagFace.setName("DiagFace")
4315 vol1=DataArrayInt([20,21,23,24]) ; vol1.setName("vol1")
4316 vol2=DataArrayInt([2,3,4,5,21,24]) ; vol2.setName("vol2")
4317 mm.setGroupsAtLevel(0,[vol1,vol2])
4318 mm.setGroupsAtLevel(-1,[grpFaceSouth,grpFaceNorth,diagFace])
4319 mm.setGroupsAtLevel(-2,[grpEdge0,grpEdge1])
4321 mmOut1=mm.linearToQuadratic(0,0.)
4322 mmOut1.write(fileName2,2)
4323 mmOut2=mmOut1.quadraticToLinear(0.)
4324 self.assertTrue(mm.isEqual(mmOut2,1e-12)[0])
4327 def testMEDFileMeshAddGroup1(self):
4328 m=MEDCouplingCMesh()
4329 arrX=DataArrayDouble(9) ; arrX.iota()
4330 arrY=DataArrayDouble(4) ; arrY.iota()
4331 m.setCoords(arrX,arrY)
4335 grp0=DataArrayInt([3,5,6,21,22]) ; grp0.setName("grp0")
4337 grp1=DataArrayInt([3,4,5,8,18,19,22]) ; grp1.setName("grp1")
4339 grp2=DataArrayInt([0,1,2,10,11]) ; grp2.setName("grp2")
4341 grp3=DataArrayInt([23]) ; grp3.setName("grp3")
4343 for grp in [grp0,grp1,grp2,grp3]:
4344 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4345 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grp2','grp3'))
4347 for grp in [grp0,grp1,grp2,grp3]:
4348 grpNode=grp.deepCpy() ; grpNode+=delta ; grpNode.setName("%s_node"%grp.getName())
4349 mm.addGroup(1,grpNode)
4350 self.assertEqual(mm.getGroupsNames(),('grp0','grp0_node','grp1','grp1_node','grp2','grp2_node','grp3','grp3_node'))
4351 for grp in [grp0,grp1,grp2,grp3]:
4352 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4353 for grp in [grp0,grp1,grp2,grp3]:
4354 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4355 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4356 mm.normalizeFamIdsMEDFile()
4357 for grp in [grp0,grp1,grp2,grp3]:
4358 self.assertTrue(mm.getGroupArr(0,grp.getName()).isEqual(grp))
4359 for grp in [grp0,grp1,grp2,grp3]:
4360 grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
4361 self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
4365 def testMEDFileJoint1(self):
4366 fileName="Pyfile92.med"
4367 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4368 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4372 mm.setDescription("un maillage")
4373 mm.write(fileName,2)
4374 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4375 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4376 one_step_joint=MEDFileJointOneStep()
4377 one_step_joint.pushCorrespondence(cell_correspond)
4378 one_step_joint.pushCorrespondence(node_correspond)
4379 one_joint=MEDFileJoint()
4380 one_joint.pushStep(one_step_joint)
4381 one_joint.setLocalMeshName("maa1")
4382 one_joint.setRemoteMeshName("maa1")
4383 one_joint.setDescription("joint_description")
4384 one_joint.setJointName("joint_1")
4385 one_joint.setDomainNumber(1)
4386 self.assertEqual( one_joint.getLocalMeshName(), "maa1")
4387 self.assertEqual( one_joint.getRemoteMeshName(), "maa1")
4388 self.assertEqual( one_joint.getDescription(), "joint_description")
4389 self.assertEqual( one_joint.getJointName(), "joint_1")
4390 self.assertEqual( one_joint.getDomainNumber(), 1)
4391 joints=MEDFileJoints()
4392 joints.pushJoint(one_joint);
4393 joints.write(fileName,0)
4395 jointsR=MEDFileJoints(fileName,mm.getName())
4396 self.assertEqual( jointsR.getNumberOfJoints(), 1 )
4397 jR = jointsR.getJointAtPos(0)
4398 self.assertTrue( jR.isEqual( one_joint ))
4399 self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
4400 self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
4401 jointsR.destroyJointAtPos(0)
4404 def testMEDFileJoint2(self):
4405 fileNameWr="Pyfile93.med"
4406 coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
4407 coo.setInfoOnComponents(["x [cm]","y [cm]","z [cm]"])
4411 mm.setDescription("un maillage")
4412 node_correspond=MEDFileJointCorrespondence(DataArrayInt([13,14,15,16]))
4413 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([17,18]),NORM_TETRA4,NORM_PENTA6)
4414 one_step_joint=MEDFileJointOneStep()
4415 two_step_joint=MEDFileJointOneStep()
4416 one_joint=MEDFileJoint()
4417 two_joint=MEDFileJoint()
4418 one_step_joint.pushCorrespondence(node_correspond)
4419 one_joint.pushStep(one_step_joint)
4420 two_step_joint.pushCorrespondence(cell_correspond)
4421 two_step_joint.pushCorrespondence(node_correspond)
4422 two_joint.pushStep(two_step_joint)
4423 one_joint.setLocalMeshName("maa1")
4424 one_joint.setRemoteMeshName("maa1")
4425 one_joint.setDescription("joint_description_1")
4426 one_joint.setJointName("joint_1")
4427 one_joint.setDomainNumber(1)
4428 two_joint.setLocalMeshName("maa1")
4429 two_joint.setRemoteMeshName("maa1")
4430 two_joint.setDescription("joint_description_2")
4431 two_joint.setJointName("joint_2")
4432 two_joint.setDomainNumber(2)
4433 joints=MEDFileJoints()
4434 joints.pushJoint(one_joint)
4435 joints.pushJoint(two_joint)
4436 mm.setJoints( joints )
4437 mm.write(fileNameWr,2)
4439 mm=MEDFileMesh.New(fileNameWr)
4440 self.assertEqual( mm.getNumberOfJoints(), 2)
4441 jointsR = mm.getJoints();
4442 self.assertEqual( jointsR.getMeshName(), mm.getName() )
4443 self.assertEqual( len( jointsR ), 2 )
4444 jointR1 = jointsR[0]
4445 jointR2 = jointsR[1]
4446 self.assertFalse( jointR1 is None )
4447 self.assertFalse( jointR2 is None )
4448 self.assertTrue( jointR1.isEqual( one_joint ))
4449 self.assertTrue( jointR2.isEqual( two_joint ))
4452 def testMEDFileJoint1(self):
4453 node_correspond=MEDFileJointCorrespondence(DataArrayInt([1,2,3,4,5,6,7,8]))
4454 cell_correspond=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_TRI3)
4455 cell_correspon2=MEDFileJointCorrespondence(DataArrayInt([9,10,11]),NORM_TRI3,NORM_TRI3)
4456 cell_correspon3=MEDFileJointCorrespondence(DataArrayInt([9,10,11,12]),NORM_TRI3,NORM_QUAD4)
4457 joint1st_1=MEDFileJointOneStep()
4458 joint1st_1.pushCorrespondence(cell_correspond)
4459 joint1st_1.pushCorrespondence(node_correspond)
4460 joint1st_2=MEDFileJointOneStep()
4461 joint1st_2.pushCorrespondence(cell_correspond)
4462 joint1st_2.pushCorrespondence(node_correspond)
4463 joint1st_3=MEDFileJointOneStep()
4464 joint1st_3.pushCorrespondence(node_correspond)
4465 joint1st_3.pushCorrespondence(cell_correspond)
4466 joint1st_4=MEDFileJointOneStep()
4467 joint1st_4.pushCorrespondence(cell_correspond)
4468 joint1st_5=MEDFileJointOneStep()
4469 joint1st_5.pushCorrespondence(cell_correspon2)
4470 joint1st_6=MEDFileJointOneStep()
4471 joint1st_6.pushCorrespondence(cell_correspon3)
4472 self.assertTrue( joint1st_1.isEqual( joint1st_2 ))
4473 self.assertTrue( joint1st_1.isEqual( joint1st_3 ))
4474 self.assertFalse( joint1st_1.isEqual( joint1st_4 ))
4475 self.assertFalse( joint1st_4.isEqual( joint1st_5 ))
4476 self.assertFalse( joint1st_4.isEqual( joint1st_6 ))
4477 one_joint=MEDFileJoint()
4478 one_joint.pushStep(joint1st_1)
4479 one_joint.setLocalMeshName("maa1")
4480 one_joint.setRemoteMeshName("maa2")
4481 one_joint.setDescription("joint_description")
4482 one_joint.setJointName("joint_1")
4483 one_joint.setDomainNumber(1)
4484 self.assertEqual( "maa1", one_joint.getLocalMeshName())
4485 self.assertEqual( "maa2", one_joint.getRemoteMeshName())
4486 self.assertEqual( "joint_description", one_joint.getDescription())
4487 self.assertEqual( 1, one_joint.getDomainNumber())
4488 self.assertEqual( "joint_1", one_joint.getJointName())
4491 @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
4492 def testMEDFileSafeCall0(self):
4493 """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
4494 fname="Pyfile94.med"
4495 errfname="Pyfile94.err"
4496 class StdOutRedirect(object):
4497 def __init__(self,fileName):
4500 self.stdoutOld=os.dup(2)
4501 self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
4502 fd2=os.dup2(self.fdOfSinkFile,2)
4503 self.origPyVal=sys.stderr
4504 class FlushFile(object):
4505 def __init__(self,f):
4511 return self.f.flush()
4513 return self.f.isatty()
4514 sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
4517 sys.stderr=self.origPyVal
4518 #os.fsync(self.fdOfSinkFile)
4520 os.dup2(self.stdoutOld,2)
4521 os.close(self.stdoutOld)
4523 # first clean file if needed
4524 if os.path.exists(fname):
4527 # second : build a file from scratch
4528 m=MEDCouplingCMesh()
4529 arr=DataArrayDouble(11) ; arr.iota()
4530 m.setCoords(arr,arr)
4535 # third : change permissions to remove write access on created file
4536 os.chmod(fname,0444)
4537 # four : try to append data on file -> check that it raises Exception
4538 f=MEDCouplingFieldDouble(ON_CELLS)
4541 f.setArray(DataArrayDouble(100))
4542 f.getArray()[:]=100.
4544 f1ts=MEDFileField1TS()
4545 f1ts.setFieldNoProfileSBT(f)
4547 tmp=StdOutRedirect(errfname)
4548 self.assertRaises(InterpKernelException,f1ts.write,fname,0) # it should raise !
4551 if os.path.exists(errfname):