1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013 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.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (CEA/DEN)
22 from MEDLoader import *
24 from math import pi,e,sqrt
25 from MEDLoaderDataForTest import MEDLoaderDataForTest
27 class MEDLoaderTest(unittest.TestCase):
28 def testMEDMesh1(self):
29 fileName="Pyfile18.med"
30 mname="ExampleOfMultiDimW"
31 medmesh=MEDFileMesh.New(fileName,mname)
32 self.assertRaises(InterpKernelException,MEDFileMesh.New,fileName,"")
33 self.assertEqual((0,-1),medmesh.getNonEmptyLevels())
34 m1_0=medmesh.getLevel0Mesh(True)
35 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
36 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
37 m2_0=medmesh.getLevelM1Mesh(True)
38 m2_1=MEDLoader.ReadUMeshFromFile(fileName,mname,-1)
39 self.assertTrue(m2_0.isEqual(m2_1,1e-12));
42 def testMEDMesh2(self):
43 fileName="Pyfile10.med"
45 outFileName="MEDFileMesh1.med"
46 medmesh=MEDFileUMesh.New(fileName,mname)
47 self.assertEqual((0,),medmesh.getNonEmptyLevels())
48 m1_0=medmesh.getLevel0Mesh(True)
49 m1_1=MEDLoader.ReadUMeshFromFile(fileName,mname,0)
50 self.assertTrue(m1_0.isEqual(m1_1,1e-12));
51 g1_0=medmesh.getGroup(0,"mesh2",True)
52 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh2"]);
53 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
54 g1_0=medmesh.getGroup(0,"mesh3",True)
55 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3"]);
56 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
57 g1_0=medmesh.getGroups(0,["mesh3","mesh2"])
58 g1_1=MEDLoader.ReadUMeshFromGroups(fileName,mname,0,["mesh3","mesh2"]);
59 g1_1.setName(g1_0.getName())
60 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
61 g1_0=medmesh.getFamily(0,"Family_-3",True)
62 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3"]);
63 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
64 g1_0=medmesh.getFamilies(0,["Family_-3","Family_-5"],True)
65 g1_1=MEDLoader.ReadUMeshFromFamilies(fileName,mname,0,["Family_-3","Family_-5"]);
66 g1_1.setName(g1_0.getName())
67 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
68 self.assertTrue(g1_0.isEqual(g1_1,1e-12));
69 medmesh.write(outFileName,2);
70 self.assertEqual([1,2,4,13,15],medmesh.getGroupArr(0,"mesh2",True).getValues());
71 self.assertEqual([1,2,15],medmesh.getFamilyArr(0,"Family_-3",True).getValues());
72 self.assertEqual([1,2,4,13,15],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"],True).getValues());
73 self.assertEqual([18,1,2,3,4,13,14,15],medmesh.getGroupsArr(0,["mesh2","mesh4","mesh3"],True).getValues());
74 famn=medmesh.getFamilyNameGivenId(0)
75 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,True);
77 self.assertEqual([2,3,5,14,16],medmesh.getGroupArr(0,"mesh2").getValues());
78 self.assertEqual([2,3,16],medmesh.getFamilyArr(0,"Family_-3").getValues());
79 self.assertEqual([2,3,5,14,16],medmesh.getFamiliesArr(0,["Family_-5","Family_-3"]).getValues());
80 self.assertEqual([0,2,3,4,5,14,15,16],medmesh.getGroupsArr(0,["mesh2","mesh3","mesh4"],False).getValues());
81 self.assertRaises(InterpKernelException,medmesh.getNodeFamilyArr,famn,False);
84 # this tests emulates MEDMEM ( Except that it works ! ) The permutation are NOT taken into account
85 def testMEDMesh3(self):
86 outFileName="MEDFileMesh3.med"
87 c=DataArrayDouble.New()
88 coords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ];
89 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
90 c.setValues(coords,9,2)
91 m=MEDCouplingUMesh.New();
92 m.setMeshDimension(2);
94 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
95 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
96 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
97 m.insertNextCell(NORM_POLYGON,4,targetConn[10:14])
98 m.insertNextCell(NORM_POLYGON,4,targetConn[14:18])
99 m.finishInsertingCells();
102 m1=MEDCouplingUMesh.New();
103 m1.setMeshDimension(1);
105 m1.insertNextCell(NORM_SEG2,2,[1,4])
106 m1.insertNextCell(NORM_SEG2,2,[3,6])
107 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
108 m1.finishInsertingCells();
111 m2=MEDCouplingUMesh.New();
112 m2.setMeshDimension(0);
114 m2.insertNextCell(NORM_POINT1,1,[1])
115 m2.insertNextCell(NORM_POINT1,1,[3])
116 m2.insertNextCell(NORM_POINT1,1,[2])
117 m2.insertNextCell(NORM_POINT1,1,[6])
118 m2.finishInsertingCells();
122 mm=MEDFileUMesh.New()
123 self.assertTrue(mm.getUnivNameWrStatus())
124 mm.setName("MyFirstMEDCouplingMEDmesh")
125 mm.setDescription("IHopeToConvinceLastMEDMEMUsers")
127 mm.setMeshAtLevel(-1,m1);
128 mm.setMeshAtLevel(0,m);
129 mm.setMeshAtLevel(-2,m2);
130 # playing with groups
131 g1_2=DataArrayInt.New()
132 g1_2.setValues([1,3],2,1)
134 g2_2=DataArrayInt.New()
135 g2_2.setValues([1,2,3],3,1)
137 mm.setGroupsAtLevel(0,[g1_2,g2_2],False)
138 g1_1=DataArrayInt.New()
139 g1_1.setValues([0,1,2],3,1)
141 g2_1=DataArrayInt.New()
142 g2_1.setValues([0,2],2,1)
144 mm.setGroupsAtLevel(-1,[g1_1,g2_1],False)
145 g1_N=DataArrayInt.New()
146 g1_N.setValues(range(8),8,1)
148 g2_N=DataArrayInt.New()
149 g2_N.setValues(range(9),9,1)
151 mm.setGroupsAtLevel(1,[g1_N,g2_N],False)
152 mm.createGroupOnAll(0,"GrpOnAllCell")
153 # check content of mm
154 t=mm.getGroupArr(0,"G1",False)
155 self.assertTrue(g1_2.isEqual(t));
156 t=mm.getGroupArr(0,"G2",False)
157 self.assertTrue(g2_2.isEqual(t));
158 t=mm.getGroupArr(-1,"G1",False)
159 self.assertTrue(g1_1.isEqual(t));
160 t=mm.getGroupArr(-1,"G2",False)
161 self.assertTrue(g2_1.isEqual(t));
162 t=mm.getGroupArr(1,"G1",False)
163 self.assertTrue(g1_N.isEqual(t));
164 t=mm.getGroupArr(1,"G2",False)
165 self.assertTrue(g2_N.isEqual(t));
166 self.assertTrue(mm.existsGroup("GrpOnAllCell"));
167 t=mm.getGroupArr(0,"GrpOnAllCell")
168 self.assertTrue(t.getValues()==range(5))
171 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0]) ; del mm
172 mmCpy.write(outFileName,2);
174 mm=MEDFileMesh.New(outFileName)
176 self.assertEqual([NORM_TRI3,NORM_QUAD4,NORM_POLYGON],mm.getGeoTypesAtLevel(0))
177 self.assertEqual([NORM_SEG2,NORM_SEG3],mm.getGeoTypesAtLevel(-1))
178 self.assertEqual([NORM_POINT1],mm.getGeoTypesAtLevel(-2))
179 mm0=mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POLYGON)
180 self.assertTrue(isinstance(mm0,MEDCoupling1DGTUMesh))
181 self.assertTrue(mm0.getNodalConnectivity().isEqual(DataArrayInt([6,7,4,3,7,8,5,4])))
182 self.assertTrue(mm0.getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,8])))
183 lmm=mm.getDirectUndergroundSingleGeoTypeMeshes(0)
184 self.assertEqual(3,len(lmm))
185 self.assertTrue(isinstance(lmm[0],MEDCoupling1SGTUMesh))
186 self.assertTrue(isinstance(lmm[1],MEDCoupling1SGTUMesh))
187 self.assertTrue(isinstance(lmm[2],MEDCoupling1DGTUMesh))
189 self.assertTrue(mm.getUnivNameWrStatus())
190 self.assertTrue(isinstance(mm.getUnivName(),str))
191 self.assertTrue(len(mm.getUnivName())!=0)
192 mbis=mm.getMeshAtLevel(0)
193 m.setName(mm.getName()) ; m.setDescription(mm.getDescription())
194 self.assertTrue(m.isEqual(mbis,1e-12));
196 self.assertEqual(([[(3, 2), (4, 1), (5, 8)], [(1, 2), (2, 1)], [(0, 4)]], 2, 2, 9),MEDLoader.GetUMeshGlobalInfo(outFileName,"MyFirstMEDCouplingMEDmesh"))
199 # this test is the testMEDMesh3 except that permutation is dealed here
200 def testMEDMesh4(self):
201 outFileName="MEDFileMesh4.med"
202 c=DataArrayDouble.New()
203 coords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ];
204 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
205 c.setValues(coords,9,2)
206 c.setInfoOnComponent(0,"abcdef [km]")
207 c.setInfoOnComponent(1,"ghij [MW]")
208 m=MEDCouplingUMesh.New();
209 m.setMeshDimension(2);
211 m.insertNextCell(NORM_QUAD4,4,targetConn[0:4])
212 m.insertNextCell(NORM_TRI3,3,targetConn[4:7])
213 m.insertNextCell(NORM_TRI3,3,targetConn[7:10])
214 m.insertNextCell(NORM_QUAD4,4,targetConn[10:14])
215 m.insertNextCell(NORM_QUAD4,4,targetConn[14:18])
216 m.finishInsertingCells();
219 m1=MEDCouplingUMesh.New();
220 m1.setMeshDimension(1);
222 m1.insertNextCell(NORM_SEG2,2,[1,4])
223 m1.insertNextCell(NORM_SEG3,3,[2,8,5])
224 m1.insertNextCell(NORM_SEG2,2,[3,6])
225 m1.finishInsertingCells();
228 m2=MEDCouplingUMesh.New();
229 m2.setMeshDimension(0);
231 m2.insertNextCell(NORM_POINT1,1,[1])
232 m2.insertNextCell(NORM_POINT1,1,[3])
233 m2.insertNextCell(NORM_POINT1,1,[2])
234 m2.insertNextCell(NORM_POINT1,1,[6])
235 m2.finishInsertingCells();
239 mm=MEDFileUMesh.New()
240 mm.setName("My2ndMEDCouplingMEDmesh")
241 mm.setDescription("ThisIsImpossibleToDoWithMEDMEM")
243 renumNode=DataArrayInt.New()
244 renumNode.setValues([10,11,12,13,14,15,16,17,18],9,1)
245 mm.setRenumFieldArr(1,renumNode)
246 mm.setMeshAtLevel(-1,m1,True);
247 mm.setMeshAtLevel(0,m,True);
248 mm.setMeshAtLevel(-2,m2,True);
249 mm.removeMeshAtLevel(-2)
250 mm.setMeshAtLevel(-2,m2,True);
251 # playing with groups
252 g1_2=DataArrayInt.New()
253 g1_2.setValues([2,3],2,1)
255 g2_2=DataArrayInt.New()
256 g2_2.setValues([2,0,3],3,1)
258 mm.setGroupsAtLevel(0,[g1_2,g2_2],True)
259 g1_1=DataArrayInt.New()
260 g1_1.setValues([0,2,1],3,1)
262 g2_1=DataArrayInt.New()
263 g2_1.setValues([0,2],2,1)
265 mm.setGroupsAtLevel(-1,[g1_1,g2_1],True)
266 g1_N=DataArrayInt.New()
267 g1_N.setValues([10,11,12,13,14,15,16,17],8,1)
269 g2_N=DataArrayInt.New()
270 g2_N.setValues([10,11,12,13,14,15,16,17,18],9,1)
272 mm.setGroupsAtLevel(1,[g1_N,g2_N],True)
273 # check content of mm
274 t=mm.getGroupArr(0,"G1",True)
275 self.assertTrue(g1_2.isEqual(t));
276 t=mm.getGroupArr(0,"G2",True)
277 self.assertTrue(g2_2.isEqual(t));
278 t=mm.getGroupArr(-1,"G1",True)
279 self.assertTrue(g1_1.isEqual(t));
280 t=mm.getGroupArr(-1,"G2",True)
281 self.assertTrue(g2_1.isEqual(t));
282 self.assertTrue(not mm.existsGroup("GrpOnAllCell"));
284 mm.write(outFileName,2);
285 mm2=MEDFileMesh.New(outFileName)
286 res=mm.isEqual(mm2,1e-12)
287 self.assertTrue(res[0])
288 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
289 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
290 mm2.keepFamIdsOnlyOnLevs([3],[-1])
291 for lev in mm.getGrpNonEmptyLevelsExt("G2"):
292 self.assertEqual(mm.getGroupArr(lev,"G2").getValues(),mm2.getGroupArr(lev,"G2").getValues())
294 l=list(mm2.getFamiliesOnGroup("G2")) ; l.sort()
295 self.assertEqual(['Family_-3','Family_-4','Family_-7','Family_10','Family_11'],l)
297 self.assertEqual([-7,-7,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
298 mm2.getFamilyFieldAtLevel(-1).setIJ(1,0,-8)
299 self.assertEqual([-7,-8,-6],mm2.getFamilyFieldAtLevel(-1).getValues())
300 self.assertTrue(not mm2.existsFamily("Family_-8"))
301 mm2.createGroupOnAll(-1,"GrpOnAllFace")
302 self.assertTrue(mm2.existsFamily("Family_-8"))
303 self.assertEqual(range(3),mm2.getGroupArr(-1,"GrpOnAllFace").getValues())
306 #testing persistence of retrieved arrays
307 def testMEDMesh5(self):
308 fileName="Pyfile18.med"
309 mname="ExampleOfMultiDimW"
310 medmesh=MEDFileUMesh.New(fileName,mname)
311 m1_0=medmesh.getLevel0Mesh(True)
312 da1=medmesh.getFamilyFieldAtLevel(0)
314 self.assertEqual(20,m1_0.getNumberOfCells())
315 self.assertEqual(20,da1.getNumberOfTuples())
318 def testMEDMesh6(self):
319 outFileName="MEDFileMesh5.med"
322 m1=MEDCouplingCMesh.New();
323 da=DataArrayDouble.New()
324 da.setValues([0.,1.,2.],3,1)
325 da.setInfoOnComponent(0,"XX [mm]")
327 da=DataArrayDouble.New()
328 da.setValues([0.,1.2],2,1)
329 da.setInfoOnComponent(0,"YY [km]")
331 da=DataArrayDouble.New()
332 da.setValues([0.,1.3],2,1)
333 da.setInfoOnComponent(0,"ZZ [um]")
336 m.setName("myFirstCartMesh")
337 m.setDescription("mmmmpppppppp")
340 da=DataArrayInt.New()
341 da.setValues([0,0,1,0,1,2,4,3,0,1,2,2],12,1)
342 m.setFamilyFieldArr(1,da)
343 m.setFamilyId("family1",1)
344 da=m.getFamilyArr(1,"family1")
346 self.assertEqual(expected1,da.getValues())
347 self.assertTrue(m.getUnivNameWrStatus())
348 m.write(outFileName,2);
349 mm=MEDFileMesh.New(outFileName)
350 self.assertTrue(isinstance(mm,MEDFileCMesh))
351 self.assertTrue(isinstance(mm.getUnivName(),str))
352 self.assertTrue(len(mm.getUnivName())!=0)
353 self.assertTrue(m.isEqual(mm,1e-12)[0])
354 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
357 m1.setTime(tt[2],tt[0],tt[1])
358 m1.setName(m.getName())
359 m1.setTimeUnit(m.getTimeUnit())
360 m1.setDescription(m.getDescription())
361 self.assertTrue(m2.isEqual(m1,1e-12));
364 def testMEDMesh7(self):
365 fileName="Pyfile24.med"
366 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
368 m.setCoords(m2.getCoords())
369 m.setMeshAtLevel(0,m2)
370 m.setMeshAtLevel(-1,m1)
371 m.setMeshAtLevel(-2,m0)
372 m.setFamilyFieldArr(0,f2)
373 m.setFamilyFieldArr(-1,f1)
374 m.setFamilyFieldArr(-2,f0)
375 m.setFamilyFieldArr(1,p)
376 m.setRenumFieldArr(0,n2)
377 m.setRenumFieldArr(-1,n1)
378 m.setRenumFieldArr(-2,n0)
380 for i in xrange(nbOfFams):
381 m.addFamily(fns[i],fids[i])
384 for i in xrange(nbOfGrps):
385 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
387 m.setName(m2.getName())
388 m.setDescription(m2.getDescription())
390 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
391 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
392 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
393 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
394 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
395 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
396 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
397 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
398 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
401 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
404 def funcToTestDelItem(self,ff):
408 #emulation of pointe.med file.
409 def testMEDField1(self):
410 mm=MEDFileMesh.New("Pyfile17.med")
411 mm.write("Pyfile17_bis.med",2)
412 ff=MEDFileFieldMultiTS("Pyfile17.med")
413 tsExpected=[[1,2],[3,4],[5,6]]
414 self.assertEqual(3,len(ff))
415 for pos,f1ts in enumerate(ff):
416 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
417 self.assertEqual(type(f1ts),MEDFileField1TS)
419 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
420 self.assertEqual([3,4],ff[1].getTime()[:-1])
421 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
422 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
423 ff.write("Pyfile17_bis.med",0)
425 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
426 self.assertEqual([(1,2),(3,4),(5,6)],ts)
427 self.funcToTestDelItem(ff)
428 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
429 self.assertEqual([(1,2)],ts)
433 def testMEDField2(self):
434 mm=MEDFileMesh.New("Pyfile19.med")
435 mm.write("Pyfile19_bis.med",2)
436 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
437 ff.write("Pyfile19_bis.med",0)
438 self.assertEqual([('tyty','mm'),('uiop','MW')],MEDLoader.GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
442 def testMEDField3(self):
443 mm=MEDFileMesh.New("Pyfile13.med")
444 mm.write("Pyfile13_bis.med",2)
445 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
446 ff.write("Pyfile13_bis.med",0)
447 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
448 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
449 f2=MEDLoader.ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
450 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
451 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
452 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
453 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
454 ff4=MEDFileField1TS.New("Pyfile13.med")
455 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
456 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
460 def testMEDField4(self):
461 mm=MEDFileMesh.New("Pyfile14.med")
462 mm.write("Pyfile14_bis.med",2)
463 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
464 ff.write("Pyfile14_bis.med",0)
465 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
466 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
467 f2=MEDLoader.ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
468 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
471 # MEDField get/set on pointe.med
472 def testMEDField5(self):
473 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
474 f=ff.getFieldAtLevel(ON_CELLS,0)
475 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
476 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
477 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
478 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
479 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
480 # no with renumbering
481 f=ff.getFieldAtLevel(ON_CELLS,0,1)
482 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
483 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
484 f=ff.getFieldAtLevel(ON_CELLS,0,3)
485 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
486 f=ff.getFieldAtLevel(ON_CELLS,0,2)
487 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
488 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
489 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
492 # MEDField get/set on profiles nodes
493 def testMEDField6(self):
494 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
495 its=ff.getIterations()
496 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
497 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
498 f2=MEDLoader.ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
499 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
500 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
501 its=ff.getIterations()
502 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
503 f2=MEDLoader.ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
504 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
505 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
506 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
509 # MEDField get/set on profiles cells
510 def testMEDField7(self):
511 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
512 its=ff.getIterations()
513 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
514 f2=MEDLoader.ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
515 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
518 #first test of assignation. No profile and types sorted by type.
519 def testMEDField8(self):
521 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
523 mm1=MEDFileUMesh.New()
524 mm1.setCoords(m1.getCoords())
525 mm1.setMeshAtLevel(0,m1)
526 mm1.setName(m1.getName())
528 ff1=MEDFileField1TS.New()
529 ff1.setFieldNoProfileSBT(f1)
531 f2=MEDLoader.ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
532 itt,orr,ti=ff1.getTime()
533 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
534 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
536 itt,orr,ti=ff1.getTime()
537 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
538 da,infos=ff1.getUndergroundDataArrayExt()
539 f2.getArray().setName(da.getName())#da has the same name than f2
540 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
541 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
544 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
546 mm1=MEDFileUMesh.New()
547 mm1.setCoords(m1.getCoords())
548 mm1.setMeshAtLevel(0,m1)
549 mm1.setName(m1.getName())
551 ff1=MEDFileField1TS.New()
552 ff1.setFieldNoProfileSBT(f1)
554 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
556 f2=MEDLoader.ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
557 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
558 f1.getArray().setIJ(0,0,nv)
559 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
562 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
564 mm1=MEDFileUMesh.New()
565 mm1.setCoords(m1.getCoords())
566 mm1.setMeshAtLevel(0,m1)
567 mm1.setName(m1.getName())
569 ff1=MEDFileField1TS.New()
570 ff1.setFieldNoProfileSBT(f1)
572 f2=MEDLoader.ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
573 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
574 da,infos=ff1.getUndergroundDataArrayExt()
575 f2.getArray().setName(da.getName())#da has the same name than f2
576 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
577 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
580 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
581 f1InvalidCpy=f1.deepCpy()
582 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
583 f1InvalidCpy2=f1.deepCpy()
584 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
586 mm1=MEDFileUMesh.New()
587 mm1.setCoords(m1.getCoords())
588 mm1.setMeshAtLevel(0,m1)
589 mm1.setName(m1.getName())
591 ff1=MEDFileField1TS.New()
592 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
593 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
594 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
595 ff1.setFieldNoProfileSBT(f1)
597 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
598 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
599 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
600 sbt=ff2.getFieldSplitedByType2()
601 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
602 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
603 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
604 self.assertEqual(6,loc1.getNumberOfPointsInCells())
605 self.assertEqual(3,loc1.getNumberOfGaussPoints())
606 self.assertEqual(2,loc1.getDimension())
607 da,infos=ff2.getUndergroundDataArrayExt()
608 f2.getArray().setName(da.getName())#da has the same name than f2
609 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
610 self.assertEqual(53,da.getNumberOfTuples())
611 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)
615 def testMEDFileData1(self):
619 m1=MEDLoaderDataForTest.build1DMesh_1()
620 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
621 mmm1=MEDFileMeshMultiTS.New() ;
622 mmm1.setOneTimeStep(mm1)
623 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
624 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
625 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
626 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
628 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
629 self.assertEqual(name,mmm.getName())
630 self.assertEqual(type(mmm),MEDFileUMesh)
632 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
634 ff1=MEDFileFieldMultiTS.New()
635 ff21=MEDFileFieldMultiTS.New()
636 ff22=MEDFileFieldMultiTS.New()
637 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
638 f1.getArray().setInfoOnComponent(0,"power [kW]")
639 ff1.appendFieldNoProfileSBT(f1)
640 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
641 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
642 ff21.appendFieldNoProfileSBT(f21)
643 f22=f21.deepCpy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
644 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
645 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
646 ff22.appendFieldNoProfileSBT(f22)
647 fs=MEDFileFields.New()
648 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
649 for name,fmts in zip(["f1","f21","f22"],fs):
650 self.assertEqual(name,fmts.getName())
654 fname2="Pyfile29_2.med"
657 d2=MEDFileData.New(fname2)
658 self.assertEqual(2,d2.getNumberOfMeshes())
659 self.assertEqual(3,d2.getNumberOfFields())
660 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
661 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
662 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
663 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
664 self.assertTrue(m1.isEqual(m1bis,1e-12))
665 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
666 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
667 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
668 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
669 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
672 def testMEDField9(self):
673 # first test field profile WR. Full type but with some type missing
675 m1=MEDLoaderDataForTest.build2DMesh_3()
676 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
678 ff1=MEDFileField1TS.New()
679 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
680 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
681 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.
682 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
684 ff1.setFieldProfile(f1,mm1,0,da)
685 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
689 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
690 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
691 self.assertTrue(vals.isEqual(d,1e-14))
693 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
694 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
695 ff2.deepCpyGlobs(ff3)
696 sbt=ff2.getFieldSplitedByType2()
697 self.assertEqual(3,sbt[0][0])#TRI3
698 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
699 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
700 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
701 self.assertEqual(4,sbt[1][0])#QUAD4
702 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
703 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
704 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
705 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
706 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
707 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
708 self.assertTrue(vals.isEqual(d,1e-14))
711 def testMEDField10(self):
713 m1=MEDLoaderDataForTest.build2DMesh_1()
714 m1.renumberCells([0,1,4,2,3,5],False)
715 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
717 ff1=MEDFileFieldMultiTS.New()
718 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
719 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
720 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.
721 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
723 ff1.appendFieldProfile(f1,mm1,0,da)
724 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
725 ff1.appendFieldProfile(f1,mm1,0,da)
729 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
730 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
731 self.assertTrue(vals.isEqual(e,1e-14))
732 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
733 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
734 self.assertTrue(vals.isEqual(d,1e-14))
736 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
737 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
738 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
739 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
740 self.assertTrue(vals.isEqual(e,1e-14))
741 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
742 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
743 self.assertTrue(vals.isEqual(d,1e-14))
746 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
747 def testMEDField11(self):
749 m1=MEDLoaderDataForTest.build2DMesh_1()
750 m1.renumberCells([0,1,4,2,3,5],False)
751 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
753 ff1=MEDFileField1TS.New()
754 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
755 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
756 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.
757 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
759 ff1.setFieldProfile(f1,mm1,0,da)
760 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
763 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
764 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
765 self.assertTrue(vals.isEqual(d,1e-14))
767 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
768 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
769 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
770 self.assertTrue(vals.isEqual(d,1e-14))
773 def testMEDField12(self):
775 m1=MEDLoaderDataForTest.build2DMesh_1()
776 m1.renumberCells([0,1,4,2,3,5],False)
777 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
779 ff1=MEDFileFieldMultiTS.New()
780 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
781 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
782 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.
783 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
785 ff1.appendFieldProfile(f1,mm1,0,da)
786 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
787 ff1.appendFieldProfile(f1,mm1,0,da)
790 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
791 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
792 self.assertTrue(vals.isEqual(e,1e-14))
793 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
794 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
795 self.assertTrue(vals.isEqual(d,1e-14))
797 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
798 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
799 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
800 self.assertTrue(vals.isEqual(e,1e-14))
801 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
802 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
803 self.assertTrue(vals.isEqual(d,1e-14))
806 def testMEDField13(self):
808 m1=MEDLoaderDataForTest.build2DMesh_1()
809 m1.renumberCells([0,1,4,2,3,5],False)
811 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
812 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
814 ff1=MEDFileField1TS.New()
815 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
816 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
817 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.
818 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
820 ff1.setFieldProfile(f1,mm1,0,da)
823 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
824 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
825 self.assertTrue(vals.isEqual(d,1e-14))
827 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
828 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
829 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
830 self.assertTrue(vals.isEqual(d,1e-14))
833 def testMEDField14(self):
835 m1=MEDLoaderDataForTest.build2DMesh_1()
836 m1.renumberCells([0,1,4,2,3,5],False)
838 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
839 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
841 ff1=MEDFileFieldMultiTS.New()
842 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
843 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
844 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.
845 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
847 ff1.appendFieldProfile(f1,mm1,0,da)
848 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
849 ff1.appendFieldProfile(f1,mm1,0,da)
852 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
853 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
854 self.assertTrue(vals.isEqual(d,1e-14))
855 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
856 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
857 self.assertTrue(vals.isEqual(e,1e-14))
858 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
860 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
861 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
862 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
863 self.assertTrue(vals.isEqual(d,1e-14))
864 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
865 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
866 self.assertTrue(vals.isEqual(e,1e-14))
868 # 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.
869 # 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
870 # 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 !
871 def testMEDField15(self):
873 m0=MEDLoaderDataForTest.build2DMesh_1()
874 m0.renumberCells([0,1,4,2,3,5],False)
876 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
877 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
878 ff1=MEDFileField1TS.New()
879 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
880 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
881 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.
882 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
884 ff1.setFieldProfile(f1,mm1,0,da)
885 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
888 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
889 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
890 self.assertTrue(p1.isIdentity())
891 self.assertEqual(5,p1.getNumberOfTuples())
892 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
894 # Test for getFieldAtTopLevel method
895 def testMEDField16(self):
897 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
899 mm1=MEDFileUMesh.New()
900 mm1.setCoords(m1.getCoords())
901 mm1.setMeshAtLevel(0,m1)
902 mm1.setName(m1.getName())
903 ff1=MEDFileField1TS.New()
904 ff1.setFieldNoProfileSBT(f1)
905 m2=m1.buildDescendingConnectivity()[0]
906 m2.sortCellsInMEDFileFrmt()
907 m2.setName(m1.getName())
908 mm1.setMeshAtLevel(-1,m2)
910 f2=m2.getMeasureField(True)
911 dd=DataArrayDouble.New()
912 dd.alloc(f2.getArray().getNumberOfTuples(),3)
913 dd[:,0]=f2.getArray()
914 dd[:,1]=2*f2.getArray()
915 dd[:,2]=3*f2.getArray()
916 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
918 f2.copyTinyStringsFrom(f1)
919 f2.copyTinyAttrFrom(f1)
920 ff1.setFieldNoProfileSBT(f2)
922 # Reading Pyfile37.med
923 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
924 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
925 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
926 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
927 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
928 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
929 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
933 ff1=MEDFileField1TS.New()
934 ff1.setFieldNoProfileSBT(f2)
936 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
937 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
938 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
941 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
942 def testMEDField17(self):
944 m1=MEDLoaderDataForTest.build2DMesh_1()
945 m1.renumberCells([0,1,4,2,3,5],False)
946 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
948 ffs=MEDFileFields.New()
949 ff1=MEDFileFieldMultiTS.New()
950 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
951 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
952 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.
953 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
955 ff1.appendFieldProfile(f1,mm1,0,da)
956 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
957 ff1.appendFieldProfile(f1,mm1,0,da)
959 ffs.setFieldAtPos(0,ff1)
963 ffsr=MEDFileFields.New(fname)
964 ff3=ffsr.getFieldAtPos(0)
965 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
966 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
969 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
970 def testMEDField18(self):
972 m1=MEDLoaderDataForTest.build2DMesh_1()
973 m1.renumberCells([0,1,4,2,3,5],False)
974 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
976 ffs=MEDFileFields.New()
977 ff1=MEDFileFieldMultiTS.New()
978 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
979 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
980 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.
981 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
983 ff1.appendFieldProfile(f1,mm1,0,da)
984 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
985 ff1.appendFieldProfile(f1,mm1,0,da)
989 ffsr=MEDFileFields.New(fname)
990 ff3=ffsr.getFieldAtPos(0)
991 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
992 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
995 def testMEDFieldBug1(self):
997 d=MEDFileData.New(fname)
998 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1001 def testMEDMesh8(self):
1002 m=MEDLoaderDataForTest.build1DMesh_1()
1003 m.convertQuadraticCellsToLinear()
1004 mm=MEDFileUMesh.New()
1005 mm.setMeshAtLevel(0,m)
1006 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1007 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1008 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1009 mm.setGroupsAtLevel(0,[g1,g2],False)
1010 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1011 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1012 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1013 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1014 mm.assignFamilyNameWithGroupName()
1015 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1016 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1017 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1018 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1020 mm=MEDFileUMesh.New()
1021 mm.setMeshAtLevel(0,m)
1022 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1023 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1024 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1025 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1026 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1027 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1028 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1029 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1030 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1031 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1032 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1033 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1034 mm.changeFamilyId(5,6)
1035 g=mm.getGroupArr(0,"g3")
1036 self.assertTrue(g.isEqual(g3));
1037 g=mm.getGroupArr(0,"g2")
1038 self.assertTrue(g.isEqual(g2));
1039 g=mm.getGroupArr(0,"g1")
1040 self.assertTrue(g.isEqual(g1));
1043 # bug detected by gauthier
1044 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1045 fname="Pyfile41.med"
1046 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1048 mm1=MEDFileUMesh.New()
1049 mm1.setCoords(m1.getCoords())
1050 mm1.setMeshAtLevel(0,m1)
1052 ff1=MEDFileField1TS.New()
1053 ff1.setFieldNoProfileSBT(f1)
1055 # writing mesh1 and field1, now creation of mesh2 and field2
1058 m2.translate([0.5,0.6,0.7])
1059 m2.setName("3DSurfMesh_2")
1060 f2.getArray()[:]*=2.
1061 f2.setName("VectorFieldOnCells2")
1062 mm2=MEDFileUMesh.New()
1063 mm2.setCoords(m2.getCoords())
1064 mm2.setMeshAtLevel(0,m2)
1066 ff2=MEDFileField1TS.New()
1067 ff2.setFieldNoProfileSBT(f2)
1070 f3=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1071 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1072 f4=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1073 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1076 def testMEDLoaderMultiLevelCellField1(self):
1077 fname="Pyfile42.med"
1078 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1079 m=MEDFileUMesh.New()
1080 m.setCoords(m2.getCoords())
1081 m.setMeshAtLevel(0,m2)
1082 m.setMeshAtLevel(-1,m1)
1083 m.setMeshAtLevel(-2,m0)
1087 compNames1=["comp1","comp2","comp3"]
1088 ff1=MEDFileField1TS.New()
1089 da2=DataArrayDouble.New()
1090 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1092 da2.rearrange(len(compNames1))
1093 da2.setInfoOnComponents(compNames1)
1094 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkCoherency()
1095 ff1.setFieldNoProfileSBT(f2)
1096 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1097 da0=DataArrayDouble.New()
1098 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1100 da0.rearrange(len(compNames1))
1101 da0.setInfoOnComponents(compNames1)
1102 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1103 ff1.setFieldNoProfileSBT(f0)
1104 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1105 da1=DataArrayDouble.New()
1106 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1108 da1.rearrange(len(compNames1))
1109 da1.setInfoOnComponents(compNames1)
1110 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1111 ff1.setFieldNoProfileSBT(f1)
1112 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1117 compNames2=["comp11","comp22"]
1118 ff2=MEDFileField1TS.New()
1119 da0=DataArrayDouble.New()
1120 da0.alloc(m0.getNumberOfCells()*2,1)
1123 da0.setInfoOnComponents(compNames2)
1124 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1125 ff2.setFieldNoProfileSBT(f0)
1126 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1127 da1=DataArrayDouble.New()
1128 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1130 da1.rearrange(len(compNames2))
1131 da1.setInfoOnComponents(compNames2)
1132 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1133 ff2.setFieldNoProfileSBT(f1)
1134 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1138 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1139 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1140 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1141 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1142 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1143 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1146 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1147 fname="Pyfile43.med"
1148 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1149 m=MEDFileUMesh.New()
1150 m.setMeshAtLevel(0,m2)
1151 m.setMeshAtLevel(-1,m1)
1152 m.setMeshAtLevel(-2,m0)
1153 f=MEDFileField1TS.New()
1154 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1155 ff.setName("NodeFieldPfl")
1156 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1158 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1159 f.setFieldProfile(ff,m,-2,pfl)
1160 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1161 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1162 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1163 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1164 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1165 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1166 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1167 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1168 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1169 expected1=[1.,10.,100.,2.,20.,200.]
1170 nodeCoordsWithValue1=[10.,2.5,0.]
1171 nodeCoordsWithValue2=[10.,3.75,0.]
1173 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1174 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1177 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1181 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1182 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1183 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1184 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1185 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1186 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1187 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1188 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1189 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1191 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1196 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1197 f=MEDFileField1TS.New()
1198 f.setFieldProfile(ff,m,-2,pfl)
1199 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1200 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1201 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1202 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1203 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1204 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1205 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1206 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1207 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1208 expected2=[2.,20.,200.,1.,10.,100.]
1210 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1211 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1214 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1217 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1218 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1219 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1220 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1221 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1222 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1223 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1224 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1225 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1227 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1231 def testDuplicateNodesOnM1Group1(self):
1232 fname="Pyfile44.med"
1233 m=MEDCouplingCMesh.New()
1234 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1235 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1236 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1237 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1238 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1239 m2.setName(m.getName())
1240 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1241 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1242 mm=MEDFileUMesh.New()
1243 mm.setMeshAtLevel(0,m)
1244 mm.setMeshAtLevel(-1,m2)
1245 mm.setGroupsAtLevel(-1,[grp,grp2])
1246 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1247 mm.setGroupsAtLevel(1,[grpNode])
1248 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1249 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1250 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1252 self.assertEqual(30,mm.getNumberOfNodes())
1253 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1254 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1256 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1257 self.assertEqual([15,16,17],nodes.getValues());
1258 self.assertEqual([7,8,9],cells.getValues());
1259 self.assertEqual([12,13,14],cells2.getValues());
1260 self.assertEqual(33,mm.getNumberOfNodes())
1261 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1262 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1263 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1264 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1265 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
1266 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1267 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
1268 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1269 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])
1270 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1271 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1273 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1274 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1275 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1276 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1277 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1281 def testDuplicateNodesOnM1Group2(self):
1282 fname="Pyfile45.med"
1283 m=MEDCouplingCMesh.New()
1284 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1285 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1286 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1287 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1288 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1289 m2.setName(m.getName())
1290 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1291 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1292 mm=MEDFileUMesh.New()
1293 mm.setMeshAtLevel(0,m)
1294 mm.setMeshAtLevel(-1,m2)
1295 mm.setGroupsAtLevel(-1,[grp,grp2])
1296 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1297 mm.setGroupsAtLevel(1,[grpNode])
1298 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1299 ref1=[4,9,8,14,15,4,10,9,15,16]
1300 ref2=[4,9,8,14,30,4,10,9,30,16]
1302 self.assertEqual(30,mm.getNumberOfNodes())
1303 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1304 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1306 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1307 self.assertEqual([15],nodes.getValues());
1308 self.assertEqual([7,8],cells.getValues());
1309 self.assertEqual([12,13],cells2.getValues());
1310 self.assertEqual(31,mm.getNumberOfNodes())
1311 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1312 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1313 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1314 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1315 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
1316 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1317 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
1318 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1319 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])
1320 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1321 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1323 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1324 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1325 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1326 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1327 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1331 def testBasicConstructors(self):
1332 fname="Pyfile18.med"
1333 m=MEDFileMesh.New(fname)
1334 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1335 m=MEDFileMesh.New(fname)
1336 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1337 m=MEDFileUMesh(fname)
1340 m=MEDFileCMesh("MEDFileMesh5.med")
1341 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1343 m=MEDFileMeshMultiTS()
1344 m=MEDFileMeshMultiTS(fname)
1345 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1347 m=MEDFileMeshes(fname)
1349 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1350 m=MEDFileFieldMultiTS()
1351 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1353 m=MEDFileFields(fname)
1355 m=MEDFileData(fname)
1357 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1358 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1359 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1360 m=MEDCouplingCMesh()
1361 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1362 m=MEDCouplingFieldTemplate(ON_NODES)
1363 m=MEDCouplingMultiFields([])
1364 m=MEDCouplingFieldOverTime([])
1367 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1368 def testBugSemiPartialField(self):
1369 fname="Pyfile46.med"
1370 m=MEDLoaderDataForTest.build2DMesh_3()
1371 m=m[:10] ; m.setName("mesh")
1372 f=m.getMeasureField(ON_CELLS)
1373 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1375 f.setName("SemiPartialField")
1377 f1=f[:6] ; f1.getMesh().setName(m.getName())
1378 f2=f[6:] ; f2.getMesh().setName(m.getName())
1380 mm=MEDFileUMesh.New()
1381 mm.setMeshAtLevel(0,m)
1382 ff=MEDFileField1TS.New()
1383 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1387 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1388 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1389 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1391 fread.checkCoherency()
1392 fread2.checkCoherency()
1393 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1394 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1397 def testUnPolyze1(self):
1398 fname="Pyfile47.med"
1399 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1400 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]
1401 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1402 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]]))
1404 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1405 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1406 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1407 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1408 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1409 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1410 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1411 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1413 mm.setRenumFieldArr(0,None)
1414 mm.setFamilyFieldArr(-1,None)
1417 def testUnPolyze2(self):
1418 fname="Pyfile48.med"
1419 mfd=MEDFileData.New()
1420 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1421 meshes=MEDFileMeshes.New()
1423 mfd.setMeshes(meshes)
1424 fields=MEDFileFields.New()
1425 mfd.setFields(fields)
1426 ff=MEDFileFieldMultiTS.New()
1427 fields.pushField(ff)
1429 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1430 f0_0.setTime(9.5,3,4)
1431 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1433 f0_0.setMesh(mm.getMeshAtLevel(0))
1434 ff.appendFieldNoProfileSBT(f0_0)
1435 ff0=ff.getTimeStepAtPos(0)
1436 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1437 f0_1.setTime(9.5,3,4)
1438 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1439 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1440 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1442 ff0.setFieldProfile(f0_1,mm,0,pfl)
1443 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1444 f0_2.setTime(9.5,3,4)
1445 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1446 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
1447 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1449 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1450 mfd.getFields().shallowCpyGlobs(ff0)
1452 mfd.unPolyzeMeshes()
1454 fmts=mfd.getFields()[0]
1455 self.assertEqual(fmts.getNumberOfTS(),1)
1456 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1457 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1458 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))])
1459 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1460 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1461 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1462 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1463 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1464 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1465 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1466 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))
1467 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1468 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1469 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1470 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1471 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1472 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])
1473 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1474 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1475 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1476 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])
1477 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1482 def testGaussWriteOnPfl1(self):
1483 fname="Pyfile49.med"
1484 fname2="Pyfile50.med"
1485 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1486 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1487 mQ8.allocateCells(1)
1488 mQ8.insertNextCell(NORM_QUAD8,range(8))
1489 mQ8.finishInsertingCells()
1490 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1491 mQ4.allocateCells(1)
1492 mQ4.insertNextCell(NORM_QUAD4,range(4))
1493 mQ4.finishInsertingCells()
1494 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1495 mT3.allocateCells(1)
1496 mT3.insertNextCell(NORM_TRI3,range(3))
1497 mT3.finishInsertingCells()
1499 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.]]
1500 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1501 ms[:]=(elt.deepCpy() for elt in ms)
1502 for m,t in zip(ms,tr):
1503 d=m.getCoords() ; d+= t
1505 m=MEDCouplingUMesh.MergeUMeshes(ms)
1507 m2=m[:13] ; m2.setName(m.getName())
1508 ### 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.
1509 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1510 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1513 da=DataArrayDouble(34) ; da.iota(3.)
1515 f.setName("fieldCellOnPflWithoutPfl")
1516 fInvalid=f.deepCpy()
1517 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])
1518 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])
1519 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])
1521 fInvalid2=fInvalid.deepCpy()
1522 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1525 mm.setMeshAtLevel(0,m)
1528 f1ts=MEDFileField1TS.New()
1529 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1530 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1531 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1532 f1ts.setFieldProfile(f,mm,0,pfl)
1535 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1536 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1537 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1538 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1539 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1540 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1541 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1542 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1544 dataRead=MEDFileData.New(fname)
1545 mRead=dataRead.getMeshes()[0]
1546 f1tsRead=dataRead.getFields()[0][0]
1547 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1548 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1549 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1550 f2_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1551 f2_bis.checkCoherency()
1552 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1554 MEDLoader.WriteField(fname2,f,True)
1555 f2_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1556 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1557 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1558 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1559 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1560 m2=m[pfl] ; m2.setName(m.getName())
1563 da=DataArrayDouble(35) ; da.iota(3.)
1565 f.setName("fieldCellOnPflWithoutPfl2")
1566 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1567 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])
1568 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])
1572 mm.setMeshAtLevel(0,m)
1574 f1ts=MEDFileField1TS.New()
1575 f1ts.setFieldProfile(f,mm,0,pfl)
1576 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1577 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1578 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1579 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1581 dataRead=MEDFileData.New(fname)
1582 mRead=dataRead.getMeshes()[0]
1583 f1tsRead=dataRead.getFields()[0][0]
1584 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1585 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1586 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1587 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1588 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1589 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1590 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1592 MEDLoader.WriteField(fname2,f,True)
1593 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1594 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1595 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1596 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1597 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1600 da=DataArrayDouble(60) ; da.iota(3.)
1602 f.setName("fieldCellWithoutPfl")
1603 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])
1604 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])
1605 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])
1606 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])
1607 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])
1610 mm.setMeshAtLevel(0,m)
1611 f1ts=MEDFileField1TS.New()
1612 f1ts.setFieldNoProfileSBT(f)
1613 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1614 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1615 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1616 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1617 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1621 dataRead=MEDFileData.New(fname)
1622 mRead=dataRead.getMeshes()[0]
1623 f1tsRead=dataRead.getFields()[0][0]
1624 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1625 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1626 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1627 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1628 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1629 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1631 MEDLoader.WriteField(fname2,f,True)
1632 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1633 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1634 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1637 # Testing profile on nodes when the profile is identity but not on all nodes.
1638 def testMEDFieldPflOnNode1(self):
1639 fname="Pyfile51.med"
1640 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)
1641 m0=MEDCouplingUMesh("Mesh",2)
1643 m0.insertNextCell(NORM_TRI3,[1,4,2])
1644 m0.insertNextCell(NORM_TRI3,[4,5,2])
1645 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1646 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1647 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1648 m0.finishInsertingCells()
1650 m1=MEDCouplingUMesh(m0.getName(),1)
1652 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1654 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1656 m1.finishInsertingCells()
1660 m.setMeshAtLevel(0,m0)
1661 m.setMeshAtLevel(-1,m1)
1663 dt=3 ; it=2 ; tim=4.5
1664 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1665 fieldNode0.setName("fieldNode0")
1666 fieldNode0.setTime(tim,dt,it)
1667 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1668 arr=DataArrayDouble([10,11,12,13,14])
1669 fieldNode0.setArray(arr)
1670 f0=MEDFileField1TS()
1671 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1672 m.write(fname,2) ; f0.write(fname,0)
1673 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1674 fieldNode1.setName("fieldNode1")
1675 fieldNode1.setTime(tim,dt,it)
1676 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1677 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1678 fieldNode1.setArray(arr1)
1679 f1=MEDFileField1TS()
1680 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1683 ## Reading from file
1684 m=MEDFileMesh.New(fname)
1685 m0=m.getMeshAtLevel(0)
1686 m00=m0.deepCpy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1687 fieldNode0.setMesh(m00)
1688 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1689 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1690 ff0_1.checkCoherency()
1691 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1692 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1693 ff0_2.checkCoherency()
1694 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1695 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1696 ff0_3.checkCoherency()
1697 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1698 ff0_4=MEDLoader.ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1699 ff0_4.checkCoherency()
1700 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1701 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1702 m1=m.getMeshAtLevel(-1)
1703 m10=m1.deepCpy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1704 fieldNode1.setMesh(m10)
1705 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1706 ff1_1.checkCoherency()
1707 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1708 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1709 ff1_2.checkCoherency()
1710 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1711 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1712 ff1_3.checkCoherency()
1713 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1714 ff1_4=MEDLoader.ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1715 ff1_4.checkCoherency()
1716 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1717 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]
1718 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]
1719 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]
1720 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1721 arr_r.setName(fieldNode1.getArray().getName())
1722 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1723 pfl1_r.setName(pfl1.getName())
1724 self.assertTrue(pfl1_r.isEqual(pfl1))
1727 # Testing profile on nodes when the profile is identity but not on all nodes.
1728 def testMEDFieldPflOnCell1(self):
1729 fname="Pyfile52.med"
1730 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)
1731 m0=MEDCouplingUMesh("Mesh",2)
1733 m0.insertNextCell(NORM_TRI3,[1,4,2])
1734 m0.insertNextCell(NORM_TRI3,[4,5,2])
1735 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1736 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1737 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1738 m0.finishInsertingCells()
1740 m1=MEDCouplingUMesh(m0.getName(),1)
1742 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1744 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1746 m1.finishInsertingCells()
1750 m.setMeshAtLevel(0,m0)
1751 m.setMeshAtLevel(-1,m1)
1753 dt=3 ; it=2 ; tim=4.5
1754 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1755 fieldCell0.setName("fieldCell0")
1756 fieldCell0.setTime(tim,dt,it)
1757 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1758 arr=DataArrayDouble([10,11,12])
1759 fieldCell0.setArray(arr)
1760 f0=MEDFileField1TS()
1761 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1762 m.write(fname,2) ; f0.write(fname,0)
1763 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1764 fieldCell1.setName("fieldCell1")
1765 fieldCell1.setTime(tim,dt,it)
1766 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1767 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1768 fieldCell1.setArray(arr1)
1769 f1=MEDFileField1TS()
1770 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1773 ## Reading from file
1774 m=MEDFileMesh.New(fname)
1775 m0=m.getMeshAtLevel(0)
1776 m00=m0.deepCpy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1777 fieldCell0.setMesh(m00)
1778 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1779 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1780 ff0_1.checkCoherency()
1781 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1782 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1783 ff0_2.checkCoherency()
1784 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1785 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1786 ff0_3.checkCoherency()
1787 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1788 ff0_4=MEDLoader.ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1789 ff0_4.checkCoherency()
1790 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1791 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1792 m1=m.getMeshAtLevel(-1)
1793 m10=m1.deepCpy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1794 fieldCell1.setMesh(m10)
1795 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1796 ff1_1.checkCoherency()
1797 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1798 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1799 ff1_2.checkCoherency()
1800 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1801 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1802 ff1_3.checkCoherency()
1803 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1804 ff1_4=MEDLoader.ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1805 ff1_4.checkCoherency()
1806 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1807 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]
1808 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]
1809 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]
1810 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1811 arr_r.setName(fieldCell1.getArray().getName())
1812 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1813 pfl1_r.setName(pfl1.getName())
1814 self.assertTrue(pfl1_r.isEqual(pfl1))
1817 def testMEDFileUMeshZipCoords1(self):
1819 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1820 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])
1821 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1822 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1823 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1824 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1825 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1826 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1827 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1828 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1829 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1830 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1832 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1833 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1834 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1835 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1836 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1837 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1838 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1839 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1840 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
1843 def testMEDUMeshAddNodeGroup1(self):
1844 fname="Pyfile53.med"
1846 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1847 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])
1848 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1849 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1850 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1851 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1852 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1855 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
1856 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
1857 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1858 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1859 mm.setFamilyId("MyFam",2)
1860 mm.setFamilyId("MyOtherFam",3)
1861 mm.setFamilyId("MyOther-1",-1)
1862 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1863 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1865 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1866 mm.addNodeGroup(daTest)
1867 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1868 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1869 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1870 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1872 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1873 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1874 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1875 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1876 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1877 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1879 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
1880 da=DataArrayInt([3,12]) ; da.setName("grp0")
1881 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1883 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1885 mm=MEDFileMesh.New(fname)
1886 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1887 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1888 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1889 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1891 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1892 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1893 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1894 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1895 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1896 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1898 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
1899 da=DataArrayInt([3,12]) ; da.setName("grp0")
1900 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1902 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1905 def testMEDUMeshAddGroup1(self):
1906 fname="Pyfile54.med"
1908 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1909 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
1911 m0.insertNextCell(NORM_TRI3,[1,2,1])
1914 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
1917 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
1919 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1920 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1921 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1922 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1923 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1926 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
1927 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
1928 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1929 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1930 mm.setFamilyId("MyFam",2)
1931 mm.setFamilyId("MyOtherFam",3)
1932 mm.setFamilyId("MyOther-1",-1)
1933 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1934 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1936 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1937 mm.addGroup(0,daTest)
1938 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1939 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1940 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1941 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1943 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1944 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1945 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1946 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1947 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1948 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1950 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
1951 da=DataArrayInt([3,12]) ; da.setName("grp0")
1952 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1954 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1956 mm=MEDFileMesh.New(fname)
1957 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1958 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1959 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1960 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1962 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1963 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1964 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1965 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1966 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1967 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1969 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
1970 da=DataArrayInt([3,12]) ; da.setName("grp0")
1971 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1973 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1976 def testHeapMem1(self):
1977 a=DataArrayInt() ; aa=a.getHeapMemorySize()
1979 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
1981 m=MEDCouplingCMesh()
1982 arr=DataArrayDouble(10,1) ; arr.iota(0)
1983 m.setCoords(arr,arr)
1984 m=m.buildUnstructured()
1986 f=m.getMeasureField(ON_CELLS)
1987 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
1988 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
1991 mm.setMeshAtLevel(0,m)
1992 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100+10*strMulFac))
1993 ff=MEDFileField1TS()
1994 ff.setFieldNoProfileSBT(f)
1995 self.assertIn(ff.getHeapMemorySize(),xrange(711-40,711+21+(4+1)*strMulFac))
1997 fff=MEDFileFieldMultiTS()
1998 fff.appendFieldNoProfileSBT(f)
1999 self.assertIn(fff.getHeapMemorySize(),xrange(743-50,743+30+(6+2)*strMulFac))
2001 fff.appendFieldNoProfileSBT(f)
2002 self.assertIn(fff.getHeapMemorySize(),xrange(1462-90,1462+50+(10+1)*strMulFac))
2003 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(711-40,711+20+(4+1)*strMulFac))
2006 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2007 fff.appendFieldProfile(f2,mm,0,pfl)
2008 self.assertIn(fff.getHeapMemorySize(),xrange(2178-130,2178+100+(10+2)*strMulFac))
2009 self.assertIn(fff.getProfile("pfl_NORM_QUAD4").getHeapMemorySize(),xrange(215-10,215+10+2*strMulFac))
2010 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(700-50,700+30+4*strMulFac))
2013 def testCurveLinearMesh1(self):
2014 fname="Pyfile55.med"
2015 mesh=MEDCouplingCurveLinearMesh();
2016 mesh.setTime(2.3,4,5);
2017 mesh.setTimeUnit("us");
2018 mesh.setName("Example of Cuve linear mesh");
2019 mesh.setDescription("buildCLMesh");
2020 a1=DataArrayDouble(3*20,1);
2021 a1.iota(7.) ; a1.rearrange(3);
2023 mesh.setNodeGridStructure([4,5]);
2024 mesh.checkCoherency();
2026 m=MEDFileCurveLinearMesh()
2028 d=DataArrayInt(20) ; d.iota(4)
2029 m.setFamilyFieldArr(1,d)
2030 d3=DataArrayInt(20) ; d3.iota(400)
2031 m.setRenumFieldArr(1,d3)
2032 d2=DataArrayInt(12) ; d2.iota(40)
2033 m.setFamilyFieldArr(0,d2)
2034 d4=DataArrayInt(21) ; d4.iota(4000)
2035 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2037 m.setRenumFieldArr(1,d4)
2040 m1=MEDFileCurveLinearMesh(fname)
2042 self.assertTrue(mm.isEqual(mesh,1e-12))
2044 m1=MEDFileMesh.New(fname)
2045 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2046 self.assertTrue(isinstance(m1.getUnivName(),str))
2047 self.assertTrue(len(m1.getUnivName())!=0)
2048 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2051 def testParameters1(self):
2052 fname="Pyfile56.med"
2053 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2054 mm=MEDFileCMesh() ; mm.setMesh(m)
2055 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2057 p=MEDFileParameters()
2058 data.setParams(p) ; data.setMeshes(ms)
2059 pts=MEDFileParameterMultiTS()
2060 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2061 pts.appendValue(1,2,3.4,567.89)
2062 pts.appendValue(2,3,5.6,999.123)
2063 pts2=pts.deepCpy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2064 p.pushParam(pts) ; p.pushParam(pts2)
2066 p2=MEDFileParameters(fname)
2067 self.assertTrue(p.isEqual(p2,1e-14)[0])
2068 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2072 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2073 pts2.eraseTimeStepIds([0])
2074 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2076 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2077 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2078 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2079 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2080 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2082 self.assertTrue(p.isEqual(p2,1e-14)[0])
2083 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2084 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2085 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2086 self.assertEqual(p.getParamsNames(),('A','B'))
2087 ptsr=MEDFileParameterMultiTS(fname,"B")
2088 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2089 ptsr=MEDFileParameterMultiTS(fname)
2090 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2091 p1tsr=MEDFileParameterDouble1TS(fname)
2092 self.assertEqual(p1tsr.getName(),"A")
2093 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2094 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2095 self.assertEqual(p1tsr.getName(),"B")
2096 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2097 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2098 self.assertEqual(p1tsr.getName(),"B")
2099 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2100 data2=MEDFileData(fname)
2101 self.assertEqual(2,data2.getNumberOfParams())
2102 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2105 def testNamesOnCellAndNodesInMeshes1(self):
2106 fname="Pyfile58.med"
2107 fname2="Pyfile59.med"
2108 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2109 m1=m.buildDescendingConnectivity()[0]
2110 m1.sortCellsInMEDFileFrmt()
2113 mm.setMeshAtLevel(0,m)
2114 mm.setMeshAtLevel(-1,m1)
2115 namesCellL0=DataArrayAsciiChar(6,16)
2116 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2117 mm.setNameFieldAtLevel(0,namesCellL0)
2118 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.substr(2)])
2119 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2120 mm.setNameFieldAtLevel(-1,namesCellL1)
2121 namesNodes=namesCellL1.substr(4,16)
2122 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2123 mm.setNameFieldAtLevel(1,namesNodes)
2126 mmr=MEDFileMesh.New(fname)
2127 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2128 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2129 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2130 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2131 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2132 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2133 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2134 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2136 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2137 # remove names on nodes
2138 mmCpy.setNameFieldAtLevel(1,None)
2139 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2140 mm.setNameFieldAtLevel(1,None)
2141 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2142 mm.setNameFieldAtLevel(-1,None)
2144 mmr=MEDFileMesh.New(fname)
2145 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2146 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2147 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2149 c=MEDCouplingCMesh()
2150 arr=DataArrayDouble([0.,1.1,2.3])
2151 c.setCoords(arr,arr)
2155 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2156 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2158 ccr=MEDFileMesh.New(fname2)
2159 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2160 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2161 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2162 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2163 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2164 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2165 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2167 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2170 def testToExportInExamples1(self):
2171 m=MEDCouplingCMesh()
2172 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2173 m.setCoords(arr,arr)
2174 m=m.buildUnstructured() ; m.setName("mesh")
2175 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2176 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2179 mm.setMeshAtLevel(0,m)
2180 mm.setMeshAtLevel(-1,m2)
2181 mm.setGroupsAtLevel(0,[grp1,grp2])
2182 mm.write("example.med",2)
2184 m0=mm.getMeshAtLevel(0)
2185 m1=mm.getMeshAtLevel(-1)
2186 grp1=mm.getGroupArr(0,"grp1")
2187 grp2=mm.getGroupArr(0,"grp2")
2189 whichGrp=DataArrayInt(m0.getNumberOfCells())
2190 whichGrp.fillWithValue(-1)
2191 for grpId,grp in enumerate(grps):
2194 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2195 e,f=a.areCellsIncludedIn(m1,2)
2197 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2198 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2199 c2.transformWithIndArr(whichGrp)
2200 splitOfM1=len(grps)*[None]
2201 for grpId,grp in enumerate(grps):
2202 tmp=c2.getIdsEqual(grpId)
2203 splitOfM1[grpId]=tmp
2205 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2206 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2209 def testBugCorrection1(self):
2212 self.assertEqual(fs[0],None)
2213 self.assertEqual(3,len(fs))
2216 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2217 f1Name="Pyfile60.med"
2218 f2Name="Pyfile61.med"
2219 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2221 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2223 # reading and compare
2224 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2225 for mn in d1.getMeshes().getMeshesNames():
2226 m1=d1.getMeshes()[mn]
2227 m2=d2.getMeshes()[mn]
2228 for lev in m1.getNonEmptyLevels():
2229 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2230 for grpName in grpsNames:
2231 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2235 for fieldn in d1.getFields().getFieldsNames():
2236 f1=d1.getFields()[fieldn]
2237 f2=d2.getFields()[fieldn]
2238 for it,order,tim in f1.getTimeSteps():
2241 if len(f1t.getPflsReallyUsed())!=0:
2243 for lev in f1t.getNonEmptyLevels()[1]:
2244 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2245 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2246 self.assertTrue(pfl1.isEqual(pfl2))
2247 self.assertTrue(arr1.isEqual(arr2,1e-10))
2252 for lev in f1t.getNonEmptyLevels()[1]:
2253 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2254 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2255 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2262 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2263 m=MEDCouplingCMesh()
2264 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2265 m.setCoords(arr,arr,arr)
2266 m=m.buildUnstructured()
2267 m2=m.buildDescendingConnectivity()[0]
2269 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2270 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2271 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2272 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2273 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2274 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2276 mm.setMeshAtLevel(0,m)
2277 mm.setGroupsAtLevel(0,[g1,g2])
2278 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2279 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2280 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2281 mm.normalizeFamIdsMEDFile()
2282 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2283 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2284 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2285 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2286 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2287 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2288 for g in mm.getGroupsOnSpecifiedLev(0):
2289 for f in mm.getFamiliesIdsOnGroup(g):
2290 self.assertTrue(f<0)
2295 mm.setMeshAtLevel(0,m)
2296 mm.setMeshAtLevel(-1,m2)
2297 mm.setGroupsAtLevel(0,[g1,g2])
2298 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2299 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2300 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2301 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2302 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2303 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2304 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2305 mm.normalizeFamIdsMEDFile()
2306 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2307 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2308 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2309 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2310 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2311 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2312 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2313 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2314 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2315 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2316 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2317 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2319 for g in mm.getGroupsOnSpecifiedLev(lev):
2320 for f in mm.getFamiliesIdsOnGroup(g):
2321 self.assertTrue(f<0)
2327 mm.setMeshAtLevel(0,m)
2328 mm.setMeshAtLevel(-1,m2)
2329 mm.setGroupsAtLevel(0,[g1,g2])
2330 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2331 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2332 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2333 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2334 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2335 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2336 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2337 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2338 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2339 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2340 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2341 mm.normalizeFamIdsMEDFile()
2342 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2343 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2344 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2345 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2346 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2347 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2348 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2349 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2350 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2351 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2352 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2353 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2354 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2355 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2356 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2357 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2358 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2359 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2361 for g in mm.getGroupsOnSpecifiedLev(lev):
2362 for f in mm.getFamiliesIdsOnGroup(g):
2363 self.assertTrue(f<0)
2367 for g in mm.getGroupsOnSpecifiedLev(1):
2368 for f in mm.getFamiliesIdsOnGroup(g):
2369 self.assertTrue(f>0)
2374 def testNonRegressionMantis22212ChangeGrpName(self):
2375 fileName="Pyfile62.med"
2376 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2377 m=MEDFileUMesh.New()
2378 m.setCoords(m2.getCoords())
2379 m.setMeshAtLevel(0,m2)
2380 m.setMeshAtLevel(-1,m1)
2381 m.setMeshAtLevel(-2,m0)
2382 m.setFamilyFieldArr(0,f2)
2383 m.setFamilyFieldArr(-1,f1)
2384 m.setFamilyFieldArr(-2,f0)
2385 m.setFamilyFieldArr(1,p)
2387 for i in xrange(nbOfFams):
2388 m.addFamily(fns[i],fids[i])
2391 for i in xrange(nbOfGrps):
2392 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2394 m.setName(m2.getName())
2395 m.setDescription(m2.getDescription())
2398 mm0=MEDFileMesh.New(fileName)
2399 mm1=MEDFileMesh.New(fileName)
2400 groupNamesIni=MEDLoader.GetMeshGroupsNames(fileName,"ma")
2401 for name in groupNamesIni:
2402 mm1.changeGroupName(name,name+'N')
2404 mm1.write(fileName,2)
2407 mm2=MEDFileMesh.New(fileName)
2408 for name in groupNamesIni:
2409 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2410 arr0=mm0.getGroupArr(lev,name)
2411 arr2=mm2.getGroupArr(lev,name+'N')
2412 arr0.setName(name+'N')
2413 self.assertTrue(arr0.isEqual(arr2))
2418 def testInt32InMEDFileFieldStar1(self):
2419 fname="Pyfile63.med"
2420 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2421 arr=f1.getArray().convertToIntArr()
2424 mm1=MEDFileUMesh.New()
2425 mm1.setCoords(m1.getCoords())
2426 mm1.setMeshAtLevel(0,m1)
2427 mm1.setName(m1.getName())
2429 ff1=MEDFileIntField1TS()
2430 ff1.setFieldNoProfileSBT(f1,arr)
2431 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2432 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2433 self.assertTrue(b.isEqual(arr))
2434 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2436 ff2=MEDFileAnyTypeField1TS.New(fname)
2437 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2438 self.assertEqual(ff2.getTime(),[0,1,2.0])
2439 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2440 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2441 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2442 self.assertTrue(b.isEqual(arr))
2443 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2445 c=ff2.getUndergroundDataArray() ; c*=2
2446 ff2.write(fname,0) # 2 time steps in
2447 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2448 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2449 self.assertEqual(len(ffs1),2)
2450 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2451 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2452 self.assertTrue(b.isEqual(arr))
2453 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2454 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2455 self.assertTrue(b.isEqual(arr))
2456 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2457 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2458 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2459 self.assertTrue(b.isEqual(2*arr))
2461 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2462 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2464 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2467 self.assertTrue(bc.isEqual(3*arr))
2468 nf1=MEDCouplingFieldDouble(ON_NODES)
2469 nf1.setTime(9.,10,-1)
2470 nf1.setMesh(f1.getMesh())
2471 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2472 nf1.setName("VectorFieldOnNodes")
2473 nff1=MEDFileIntField1TS.New()
2474 nff1.setFieldNoProfileSBT(nf1,narr)
2475 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2476 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2479 nf2=MEDCouplingFieldDouble(ON_NODES)
2480 nf2.setTime(19.,20,-11)
2481 nf2.setMesh(f1.getMesh())
2482 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2483 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2484 nff2=MEDFileIntField1TS.New()
2485 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2486 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2487 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2488 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2489 self.assertTrue(b.isEqual(npfl))
2490 self.assertTrue(a.isEqual(narr2))
2492 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2493 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2494 self.assertTrue(b.isEqual(npfl))
2495 self.assertTrue(a.isEqual(narr2))
2497 nf3=MEDCouplingFieldDouble(ON_NODES)
2498 nf3.setName("VectorFieldOnNodesDouble")
2499 nf3.setTime(29.,30,-21)
2500 nf3.setMesh(f1.getMesh())
2501 nf3.setArray(f1.getMesh().getCoords())
2502 nff3=MEDFileField1TS.New()
2503 nff3.setFieldNoProfileSBT(nf3)
2505 fs=MEDFileFields(fname)
2506 self.assertEqual(len(fs),4)
2507 ffs=[it for it in fs]
2508 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2509 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2510 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2511 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2513 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2514 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2515 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2516 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2517 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2519 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2520 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2521 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2522 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2523 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2524 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2525 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2526 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2528 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2529 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2530 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2531 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2534 def testMEDFileFields1(self):
2535 fname="Pyfile64.med"
2536 f1=MEDCouplingFieldDouble(ON_NODES)
2537 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2538 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2539 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2541 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2543 f1.setName("Field1")
2544 ff1=MEDFileField1TS.New()
2545 ff1.setFieldNoProfileSBT(f1)
2546 self.assertEqual(ff1.getDtUnit(),"us")
2548 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2549 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2551 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2552 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2553 ff1s.setName("Field2")
2555 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2556 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2557 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2558 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2559 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2560 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2561 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2562 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2565 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2566 def testMEDFileFields2(self):
2567 fname="Pyfile65.med"
2568 # to check that all is initialize
2569 MEDFileField1TS().__str__()
2570 MEDFileFieldMultiTS().__str__()
2571 # building a mesh containing 4 tri3 + 5 quad4
2572 tri=MEDCouplingUMesh("tri",2)
2573 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2574 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2575 tris=[tri.deepCpy() for i in xrange(4)]
2576 for i,elt in enumerate(tris): elt.translate([i,0])
2577 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2578 quad=MEDCouplingUMesh("quad",2)
2579 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2580 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2581 quads=[quad.deepCpy() for i in xrange(5)]
2582 for i,elt in enumerate(quads): elt.translate([5+i,0])
2583 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2584 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2585 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2587 fmts0_0=MEDFileFieldMultiTS()
2588 fmts0_1=MEDFileFieldMultiTS()
2590 for i in xrange(10):
2591 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2592 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2593 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2594 f.setTime(float(i+1)+0.1,i+1,-i-1)
2595 fmts0_0.appendFieldNoProfileSBT(f)
2596 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2597 self.assertEqual(fmts0_1.getName(),name1)
2598 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2599 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2601 # components names have been modified to generate errors
2602 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2603 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2604 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2605 f1ts.setInfo(['aa [bb]','eee [dd]'])
2606 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2608 # add a mismatch of nb of compos
2610 fmts0_2=fmts0_0.deepCpy()
2611 fmts0_3=fmts0_0.deepCpy()
2612 fmts0_4=fmts0_0.deepCpy()
2613 fmts0_5=fmts0_0.shallowCpy()
2614 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)
2616 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2617 del fmts0_3[[1.1,(6,-6),9]]
2618 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2619 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2620 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2621 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2622 fmts0_7=fmts0_4[::-3]
2623 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2624 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2627 fs0.pushField(fmts0_0)
2628 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2629 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2630 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2631 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2633 fs0=MEDFileFields(fname)
2634 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2635 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2636 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2637 del fs1[["2ndField",3]]
2638 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2639 fs2=fs0[[0,"4thField"]]
2640 self.assertTrue(isinstance(fs2,MEDFileFields))
2641 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2643 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2646 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2647 def testMEDFileFields3(self):
2648 fname="Pyfile66.med"
2649 # building a mesh containing 4 tri3 + 5 quad4
2650 tri=MEDCouplingUMesh("tri",2)
2651 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2652 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2653 tris=[tri.deepCpy() for i in xrange(4)]
2654 for i,elt in enumerate(tris): elt.translate([i,0])
2655 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2656 quad=MEDCouplingUMesh("quad",2)
2657 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2658 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2659 quads=[quad.deepCpy() for i in xrange(5)]
2660 for i,elt in enumerate(quads): elt.translate([5+i,0])
2661 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2662 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2663 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2665 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2667 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2668 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2669 fmts0_0=MEDFileFieldMultiTS()
2670 fmts0_1=MEDFileFieldMultiTS()
2672 for i in xrange(10):
2673 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2674 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2675 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2676 f.setTime(float(i+1)+0.1,i+1,-i-1)
2677 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2678 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2679 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2680 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2683 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2684 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2685 fmts0_0.zipPflsNames()
2686 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2687 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2688 fmts0_2=fmts0_0.deepCpy()
2689 fmts0_3=fmts0_0.deepCpy()
2690 fmts0_4=fmts0_0.deepCpy()
2692 fs0.pushField(fmts0_0)
2693 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2694 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2695 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2696 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2698 fmts0_5=MEDFileFieldMultiTS()
2700 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2701 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2702 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2703 f.setTime(float(i+1)+0.1,i+1,-i-1)
2704 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2706 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2707 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2708 fs0.checkGlobsCoherency()
2712 def testSplitComponents1(self):
2713 fname="Pyfile67.med"
2714 # building a mesh containing 4 tri3 + 5 quad4
2715 tri=MEDCouplingUMesh("tri",2)
2716 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2717 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2718 tris=[tri.deepCpy() for i in xrange(4)]
2719 for i,elt in enumerate(tris): elt.translate([i,0])
2720 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2721 quad=MEDCouplingUMesh("quad",2)
2722 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2723 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2724 quads=[quad.deepCpy() for i in xrange(5)]
2725 for i,elt in enumerate(quads): elt.translate([5+i,0])
2726 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2727 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2728 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2730 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2732 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2733 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2735 fmts0_1=MEDFileFieldMultiTS()
2737 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2738 for i in xrange(10):
2740 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2741 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2742 f.setTime(float(i+1)+0.1,i+1,-i-1)
2743 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2744 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2746 fs.pushField(fmts0_1)
2747 self.assertEqual(1,len(fs))
2748 l=fmts0_1.splitComponents()
2749 self.assertEqual(3,len(l))
2750 for elt in l: self.assertEqual(10,len(elt))
2751 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2753 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2756 self.assertEqual(4,len(fs))
2757 for elt in fs: self.assertEqual(10,len(elt))
2758 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2759 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2761 fs.write(fname,0) ; del fs
2763 fs1=MEDFileFields(fname)
2764 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2765 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2766 self.assertEqual(4,len(fs1))
2767 for i in xrange(10):
2768 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2769 f1ts=fs1[fieldName][i]
2770 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2771 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2772 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2774 f1ts=fs1["1stField"][i]
2775 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2776 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2777 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2781 def testMEDFileFieldConvertTo1(self):
2782 fname="Pyfile68.med"
2783 # building a mesh containing 4 tri3 + 5 quad4
2784 tri=MEDCouplingUMesh("tri",2)
2785 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2786 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2787 tris=[tri.deepCpy() for i in xrange(4)]
2788 for i,elt in enumerate(tris): elt.translate([i,0])
2789 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2790 quad=MEDCouplingUMesh("quad",2)
2791 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2792 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2793 quads=[quad.deepCpy() for i in xrange(5)]
2794 for i,elt in enumerate(quads): elt.translate([5+i,0])
2795 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2796 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2797 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2798 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2800 ff0=MEDFileField1TS()
2801 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")
2803 ff0.setFieldNoProfileSBT(f0)
2805 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2806 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2808 ff0i=ff0.convertToInt()
2809 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2810 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2812 ff1=ff0i.convertToDouble()
2813 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2814 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2816 del arr,f0,ff0,ff1,ff0i,fspExp
2817 ff0=MEDFileField1TS()
2818 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")
2820 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2821 ff0.setFieldProfile(f0,mm,0,pfl)
2822 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2823 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2825 ff0i=ff0.convertToInt()
2826 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2827 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2828 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2830 ff1=ff0i.convertToDouble()
2831 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2832 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2833 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2835 ff0=MEDFileFieldMultiTS()
2836 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)
2838 ff0.appendFieldProfile(f0,mm,0,pfl)
2839 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)
2841 ff0.appendFieldProfile(f0,mm,0,pfl)
2842 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)
2844 ff0.appendFieldProfile(f0,mm,0,pfl)
2845 ff1=ff0.convertToInt()
2846 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2847 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2848 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2849 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2850 arr=ff1.getUndergroundDataArray(dt,it)
2851 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2853 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2858 ff1=ff1.convertToDouble()
2859 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
2860 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2861 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2862 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2863 arr=ff1.getUndergroundDataArray(dt,it)
2864 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
2866 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2868 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
2869 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2870 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2871 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2872 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
2873 arr=ff1.getUndergroundDataArray(dt,it)
2874 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2876 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
2879 def testMEDFileFieldPartialLoading(self):
2880 fname="Pyfile69.med"
2882 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2884 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2885 # building a mesh containing 30 tri3 + 40 quad4
2886 tri=MEDCouplingUMesh("tri",2)
2887 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2888 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2889 tris=[tri.deepCpy() for i in xrange(30)]
2890 for i,elt in enumerate(tris): elt.translate([i,0])
2891 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2892 quad=MEDCouplingUMesh("quad",2)
2893 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2894 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2895 quads=[quad.deepCpy() for i in xrange(40)]
2896 for i,elt in enumerate(quads): elt.translate([40+i,0])
2897 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2898 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2899 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2900 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2902 ff0=MEDFileField1TS()
2903 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")
2905 ff0.setFieldNoProfileSBT(f0)
2908 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
2909 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2911 ff0=MEDFileField1TS()
2912 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")
2914 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2915 ff0.setFieldProfile(f0,mm,0,pfl)
2916 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
2917 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2920 ff0=MEDFileField1TS(fname,False)
2921 self.assertEqual(ff0.getName(),"FieldCell")
2922 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
2923 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
2924 heap_memory_ref=ff0.getHeapMemorySize()
2925 self.assertIn(heap_memory_ref,xrange(100,210+2*strMulFac))
2927 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
2928 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2929 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
2931 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
2932 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
2933 heap_memory_ref=ff0.getHeapMemorySize()
2934 self.assertIn(heap_memory_ref,xrange(150,260+6*strMulFac))
2936 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
2937 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2938 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2940 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2941 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2942 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2943 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2945 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2946 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2947 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2948 ff0.loadArraysIfNecessary() ##
2949 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
2950 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2951 heap_memory_ref=ff0.getHeapMemorySize()
2952 self.assertIn(heap_memory_ref,xrange(1000,1120+2*strMulFac))
2954 hmd=ff0.getHeapMemorySize()-heap_memory_ref
2955 self.assertEqual(hmd,-800) # -50*8*2
2957 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
2959 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
2960 heap_memory_ref=ff0.getHeapMemorySize()
2961 self.assertIn(heap_memory_ref,xrange(150,260+6*strMulFac))
2963 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2964 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2966 fieldName="FieldCellMultiTS"
2967 ff0=MEDFileFieldMultiTS()
2968 for t in xrange(20):
2969 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)
2970 f0.setTime(float(t)+0.1,t,100+t)
2972 ff0.appendFieldNoProfileSBT(f0)
2976 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
2977 heap_memory_ref=ff0.getHeapMemorySize()
2978 self.assertIn(heap_memory_ref,xrange(2000,3000+(80+26)*strMulFac))
2980 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
2983 ffs=MEDFileFields(fname,False)
2984 heap_memory_ref=ffs.getHeapMemorySize()
2985 self.assertIn(heap_memory_ref,xrange(2400,3500+(80+50)*strMulFac))
2987 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
2990 def testMEDFileMeshReadSelector1(self):
2991 mrs=MEDFileMeshReadSelector()
2992 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
2993 mrs.__str__() ; mrs.__repr__()
2995 mrs=MEDFileMeshReadSelector(0)
2996 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())
2997 mrs=MEDFileMeshReadSelector(1)
2998 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
2999 mrs=MEDFileMeshReadSelector(2)
3000 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3001 mrs=MEDFileMeshReadSelector(3)
3002 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3003 mrs=MEDFileMeshReadSelector(4)
3004 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3005 mrs=MEDFileMeshReadSelector(5)
3006 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3007 mrs=MEDFileMeshReadSelector(6)
3008 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3009 mrs=MEDFileMeshReadSelector(7)
3010 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3011 mrs=MEDFileMeshReadSelector(8)
3012 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3013 mrs=MEDFileMeshReadSelector(9)
3014 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3015 mrs=MEDFileMeshReadSelector(10)
3016 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3017 mrs=MEDFileMeshReadSelector(11)
3018 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3019 mrs=MEDFileMeshReadSelector(12)
3020 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3021 mrs=MEDFileMeshReadSelector(13)
3022 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3023 mrs=MEDFileMeshReadSelector(14)
3024 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3025 mrs=MEDFileMeshReadSelector(15)
3026 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3027 mrs=MEDFileMeshReadSelector(16)
3028 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3029 mrs=MEDFileMeshReadSelector(17)
3030 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3031 mrs=MEDFileMeshReadSelector(18)
3032 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3033 mrs=MEDFileMeshReadSelector(19)
3034 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3035 mrs=MEDFileMeshReadSelector(20)
3036 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3037 mrs=MEDFileMeshReadSelector(21)
3038 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3039 mrs=MEDFileMeshReadSelector(22)
3040 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3041 mrs=MEDFileMeshReadSelector(23)
3042 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3043 mrs=MEDFileMeshReadSelector(24)
3044 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3045 mrs=MEDFileMeshReadSelector(25)
3046 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3047 mrs=MEDFileMeshReadSelector(26)
3048 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3049 mrs=MEDFileMeshReadSelector(27)
3050 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3051 mrs=MEDFileMeshReadSelector(28)
3052 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3053 mrs=MEDFileMeshReadSelector(29)
3054 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3055 mrs=MEDFileMeshReadSelector(30)
3056 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3057 mrs=MEDFileMeshReadSelector(31)
3058 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3059 mrs=MEDFileMeshReadSelector(32)
3060 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3061 mrs=MEDFileMeshReadSelector(33)
3062 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3063 mrs=MEDFileMeshReadSelector(34)
3064 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3065 mrs=MEDFileMeshReadSelector(35)
3066 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3067 mrs=MEDFileMeshReadSelector(36)
3068 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3069 mrs=MEDFileMeshReadSelector(37)
3070 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3071 mrs=MEDFileMeshReadSelector(38)
3072 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3073 mrs=MEDFileMeshReadSelector(39)
3074 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3075 mrs=MEDFileMeshReadSelector(40)
3076 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3077 mrs=MEDFileMeshReadSelector(41)
3078 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3079 mrs=MEDFileMeshReadSelector(42)
3080 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3081 mrs=MEDFileMeshReadSelector(43)
3082 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3083 mrs=MEDFileMeshReadSelector(44)
3084 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3085 mrs=MEDFileMeshReadSelector(45)
3086 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3087 mrs=MEDFileMeshReadSelector(46)
3088 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3089 mrs=MEDFileMeshReadSelector(47)
3090 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3091 mrs=MEDFileMeshReadSelector(48)
3092 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3093 mrs=MEDFileMeshReadSelector(49)
3094 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3095 mrs=MEDFileMeshReadSelector(50)
3096 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3097 mrs=MEDFileMeshReadSelector(51)
3098 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3099 mrs=MEDFileMeshReadSelector(52)
3100 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3101 mrs=MEDFileMeshReadSelector(53)
3102 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3103 mrs=MEDFileMeshReadSelector(54)
3104 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3105 mrs=MEDFileMeshReadSelector(55)
3106 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3107 mrs=MEDFileMeshReadSelector(56)
3108 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3109 mrs=MEDFileMeshReadSelector(57)
3110 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3111 mrs=MEDFileMeshReadSelector(58)
3112 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3113 mrs=MEDFileMeshReadSelector(59)
3114 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3115 mrs=MEDFileMeshReadSelector(60)
3116 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3117 mrs=MEDFileMeshReadSelector(61)
3118 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3119 mrs=MEDFileMeshReadSelector(62)
3120 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3121 mrs=MEDFileMeshReadSelector(63)
3122 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3124 mrs=MEDFileMeshReadSelector(63)
3125 mrs.setCellFamilyFieldReading(False)
3126 self.assertEqual(mrs.getCode(),62)
3127 mrs.setCellFamilyFieldReading(True)
3128 self.assertEqual(mrs.getCode(),63)
3129 mrs.setNodeFamilyFieldReading(False)
3130 self.assertEqual(mrs.getCode(),61)
3131 mrs.setNodeFamilyFieldReading(True)
3132 self.assertEqual(mrs.getCode(),63)
3133 mrs.setCellNameFieldReading(False)
3134 self.assertEqual(mrs.getCode(),59)
3135 mrs.setCellNameFieldReading(True)
3136 self.assertEqual(mrs.getCode(),63)
3137 mrs.setNodeNameFieldReading(False)
3138 self.assertEqual(mrs.getCode(),55)
3139 mrs.setNodeNameFieldReading(True)
3140 self.assertEqual(mrs.getCode(),63)
3141 mrs.setCellNumFieldReading(False)
3142 self.assertEqual(mrs.getCode(),47)
3143 mrs.setCellNumFieldReading(True)
3144 self.assertEqual(mrs.getCode(),63)
3145 mrs.setNodeNumFieldReading(False)
3146 self.assertEqual(mrs.getCode(),31)
3147 mrs.setNodeNumFieldReading(True)
3148 self.assertEqual(mrs.getCode(),63)
3151 def testPartialReadOfMeshes(self):
3152 fname="Pyfile70.med"
3153 # building a mesh containing 4 tri3 + 5 quad4
3154 tri=MEDCouplingUMesh("tri",2)
3155 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3156 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3157 tris=[tri.deepCpy() for i in xrange(4)]
3158 for i,elt in enumerate(tris): elt.translate([i,0])
3159 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3160 quad=MEDCouplingUMesh("quad",2)
3161 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3162 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3163 quads=[quad.deepCpy() for i in xrange(5)]
3164 for i,elt in enumerate(quads): elt.translate([5+i,0])
3165 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3166 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3167 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3168 m1=m.buildDescendingConnectivity()[0]
3169 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3171 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3172 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3173 mm.setGroupsAtLevel(0,[grp0,grp1])
3174 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3175 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3176 mm.setGroupsAtLevel(-1,[grp2,grp3])
3177 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3178 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3179 mm.setGroupsAtLevel(1,[grp4,grp5])
3180 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3181 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3182 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3186 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3187 b4_ref_heap_mem=mm.getHeapMemorySize()
3188 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3189 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3190 ref_heap_mem=mm.getHeapMemorySize()
3191 # check the gain of memory using 1GTUMesh instead of UMesh
3192 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
3194 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3195 self.assertEqual(len(mm.getGroupsNames()),0)
3196 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3197 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3198 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3199 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3200 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3201 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3202 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3203 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3204 delta1=ref_heap_mem-mm.getHeapMemorySize()
3205 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3207 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3208 self.assertEqual(len(mm.getGroupsNames()),6)
3209 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3210 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3211 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3212 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3213 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3214 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3215 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3216 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3217 delta2=ref_heap_mem-mm.getHeapMemorySize()
3218 self.assertTrue(delta2<delta1)
3219 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3221 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3222 self.assertEqual(len(mm.getGroupsNames()),6)
3223 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3224 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3225 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3226 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3227 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3228 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3229 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3230 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3231 delta3=ref_heap_mem-mm.getHeapMemorySize()
3232 self.assertTrue(delta3<delta2)
3233 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3235 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3236 self.assertEqual(len(mm.getGroupsNames()),6)
3237 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3238 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3239 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3240 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3241 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3242 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3243 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3244 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3245 delta4=ref_heap_mem-mm.getHeapMemorySize()
3246 self.assertTrue(delta4<delta3)
3247 self.assertTrue(delta4>=32*4*2)
3249 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3250 self.assertEqual(len(mm.getGroupsNames()),6)
3251 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3252 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3253 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3254 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3255 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3256 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3257 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3258 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3259 delta5=ref_heap_mem-mm.getHeapMemorySize()
3260 self.assertTrue(delta5<delta4)
3261 self.assertEqual(delta5,0)
3264 # this test checks that setFieldProfile perform a check of the array length
3265 # compared to the profile length. This test also checks that mesh attribute of field
3266 # is not used by setFieldProfile (because across this test mesh is equal to None)
3267 def testCheckCompatibilityPfl1(self):
3268 # building a mesh containing 4 tri3 + 5 quad4
3269 tri=MEDCouplingUMesh("tri",2)
3270 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3271 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3272 tris=[tri.deepCpy() for i in xrange(4)]
3273 for i,elt in enumerate(tris): elt.translate([i,0])
3274 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3275 quad=MEDCouplingUMesh("quad",2)
3276 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3277 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3278 quads=[quad.deepCpy() for i in xrange(5)]
3279 for i,elt in enumerate(quads): elt.translate([5+i,0])
3280 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3281 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3282 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3283 m1=m.buildDescendingConnectivity()[0]
3284 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3286 f1ts=MEDFileField1TS()
3287 f=MEDCouplingFieldDouble(ON_NODES)
3288 vals=DataArrayDouble(7) ; vals.iota(1000)
3290 f.setName("anonymous") # f has no mesh it is not a bug
3291 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3292 f1ts.setFieldProfile(f,mm,0,pfl)
3294 f1ts=MEDFileField1TS()
3295 f=MEDCouplingFieldDouble(ON_NODES)
3296 vals=DataArrayDouble(8) ; vals.iota(1000)
3298 f.setName("anonymous") # f has no mesh it is not a bug
3299 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3300 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3302 f1ts=MEDFileField1TS()
3303 f=MEDCouplingFieldDouble(ON_CELLS)
3304 vals=DataArrayDouble(7) ; vals.iota(1000)
3306 f.setName("anonymous") # f has no mesh it is not a bug
3307 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3308 f1ts.setFieldProfile(f,mm,0,pfl)
3309 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3311 f1ts=MEDFileField1TS()
3312 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3313 vals=DataArrayDouble(27) ; vals.iota(1000)
3315 f.setName("anonymous") # f has no mesh it is not a bug
3316 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3318 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])
3319 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3320 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])
3322 f1ts.setFieldProfile(f,mm,0,pfl)
3323 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3324 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3325 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3326 vals=DataArrayDouble(27) ; vals.iota(1000)
3327 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3329 f1ts=MEDFileField1TS()
3330 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3331 vals=DataArrayDouble(25) ; vals.iota(1000)
3333 f.setName("anonymous") # f has no mesh it is not a bug
3334 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3335 f1ts.setFieldProfile(f,mm,0,pfl)
3336 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3337 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3339 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3340 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3342 f1ts=MEDFileField1TS()
3343 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3344 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3346 f1ts.setFieldProfile(f,mm,0,pfl)
3349 def testWRMeshWithNoCells(self):
3350 fname="Pyfile71.med"
3351 a=DataArrayDouble(4) ; a.iota()
3352 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3353 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3355 m.setMeshAtLevel(0,m00)
3356 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3357 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3361 m=MEDFileMesh.New(fname)
3362 self.assertEqual((),m.getNonEmptyLevels())
3363 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))
3364 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3365 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3368 #@unittest.skipUnless(False,"requires Vadim's green light")
3369 def testWRQPolyg1(self):
3370 fname="Pyfile72.med"
3371 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3372 m.insertNextCell([0,2,1,3])
3373 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3375 ms=[m.deepCpy() for i in xrange(4)]
3376 for i,elt in enumerate(ms):
3377 elt.translate([float(i)*1.5,0.])
3379 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3380 m0.convertAllToPoly()
3382 ms=[m.deepCpy() for i in xrange(5)]
3383 for i,elt in enumerate(ms):
3384 elt.translate([float(i)*1.5,1.5])
3386 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3387 m1.convertAllToPoly()
3388 m1.convertLinearCellsToQuadratic()
3390 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3393 mm.setMeshAtLevel(0,m)
3394 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3395 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3396 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3397 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3402 mm_read=MEDFileUMesh(fname)
3403 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3404 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3405 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3406 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3408 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3410 arr0=DataArrayDouble(9) ; arr0.iota()
3411 arr1=DataArrayDouble(9) ; arr1.iota(100)
3412 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3413 f.setArray(arr) ; f.checkCoherency()
3415 ff=MEDFileField1TS()
3416 ff.setFieldNoProfileSBT(f)
3419 ff_read=MEDFileField1TS(fname)
3420 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3421 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))