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.assertEqual([NORM_HEXA8],mm.getGeoTypesAtLevel(0))
351 self.assertTrue(isinstance(mm,MEDFileCMesh))
352 self.assertTrue(isinstance(mm.getUnivName(),str))
353 self.assertTrue(len(mm.getUnivName())!=0)
354 self.assertTrue(m.isEqual(mm,1e-12)[0])
355 self.assertEqual(expected1,mm.getFamilyArr(1,"family1").getValues())
358 m1.setTime(tt[2],tt[0],tt[1])
359 m1.setName(m.getName())
360 m1.setTimeUnit(m.getTimeUnit())
361 m1.setDescription(m.getDescription())
362 self.assertTrue(m2.isEqual(m1,1e-12));
365 def testMEDMesh7(self):
366 fileName="Pyfile24.med"
367 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
369 m.setCoords(m2.getCoords())
370 m.setMeshAtLevel(0,m2)
371 m.setMeshAtLevel(-1,m1)
372 m.setMeshAtLevel(-2,m0)
373 m.setFamilyFieldArr(0,f2)
374 m.setFamilyFieldArr(-1,f1)
375 m.setFamilyFieldArr(-2,f0)
376 m.setFamilyFieldArr(1,p)
377 m.setRenumFieldArr(0,n2)
378 m.setRenumFieldArr(-1,n1)
379 m.setRenumFieldArr(-2,n0)
381 for i in xrange(nbOfFams):
382 m.addFamily(fns[i],fids[i])
385 for i in xrange(nbOfGrps):
386 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
388 m.setName(m2.getName())
389 m.setDescription(m2.getDescription())
391 self.assertEqual((-1,),m.getGrpNonEmptyLevels("A2A4"))
392 self.assertEqual((),m.getGrpNonEmptyLevels("A1"))
393 self.assertEqual((-2,),m.getGrpNonEmptyLevels("AP2"))
394 self.assertEqual((-1,-2),m.getGrpsNonEmptyLevels(["A2A4","AP2"]))
395 self.assertEqual((-1,),m.getFamNonEmptyLevels('A4A3____________________________'))
396 self.assertEqual((0,),m.getFamNonEmptyLevels('MESH____DALT3___DALLE___________'))
397 self.assertEqual((0,-1,),m.getFamsNonEmptyLevels(['MESH____DALT3___DALLE___________','A4A3____________________________']))
398 self.assertEqual(('A1A2','A2A4','A3A1','A3C5','A4A3','B1C1','B2B4','B3B1','B4C3','C1C4','C2B2','C3C2','C4B3','C5A4'),m.getGroupsOnSpecifiedLev(-1))
399 self.assertEqual(('DALLE','DALQ1','DALQ2','DALT3','MESH'),m.getGroupsOnSpecifiedLev(0))
402 self.assertRaises(InterpKernelException,MEDFileField1TS,fileName)#throw because no field in file fileName
405 def funcToTestDelItem(self,ff):
409 #emulation of pointe.med file.
410 def testMEDField1(self):
411 mm=MEDFileMesh.New("Pyfile17.med")
412 mm.write("Pyfile17_bis.med",2)
413 ff=MEDFileFieldMultiTS("Pyfile17.med")
414 tsExpected=[[1,2],[3,4],[5,6]]
415 self.assertEqual(3,len(ff))
416 for pos,f1ts in enumerate(ff):
417 self.assertEqual(tsExpected[pos],f1ts.getTime()[:2])
418 self.assertEqual(type(f1ts),MEDFileField1TS)
420 self.assertEqual("MeasureOfMesh_Extruded",ff.getName())
421 self.assertEqual([3,4],ff[1].getTime()[:-1])
422 self.assertEqual([3,4],ff[3,4].getTime()[:-1])
423 self.assertEqual([3,4],ff[0.01].getTime()[:-1])
424 ff.write("Pyfile17_bis.med",0)
426 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
427 self.assertEqual([(1,2),(3,4),(5,6)],ts)
428 self.funcToTestDelItem(ff)
429 ts=ff.getTimeSteps() ; ts=[elt[:-1] for elt in ts]
430 self.assertEqual([(1,2)],ts)
434 def testMEDField2(self):
435 mm=MEDFileMesh.New("Pyfile19.med")
436 mm.write("Pyfile19_bis.med",2)
437 ff=MEDFileFieldMultiTS.New("Pyfile19.med")
438 ff.write("Pyfile19_bis.med",0)
439 self.assertEqual([('tyty','mm'),('uiop','MW')],MEDLoader.GetComponentsNamesOfField("Pyfile19_bis.med","VFieldOnNodes"))
443 def testMEDField3(self):
444 mm=MEDFileMesh.New("Pyfile13.med")
445 mm.write("Pyfile13_bis.med",2)
446 ff=MEDFileFieldMultiTS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
447 ff.write("Pyfile13_bis.med",0)
448 ff=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint",1,5)
449 f=ff.getFieldAtLevel(ON_GAUSS_PT,0)
450 f2=MEDLoader.ReadFieldGauss("Pyfile13.med",'2DMesh_2',0,'MyFirstFieldOnGaussPoint',1,5)
451 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
452 ff3=MEDFileField1TS.New("Pyfile13.med","MyFirstFieldOnGaussPoint")
453 f3=ff3.getFieldAtLevel(ON_GAUSS_PT,0)
454 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
455 ff4=MEDFileField1TS.New("Pyfile13.med")
456 f4=ff4.getFieldAtLevel(ON_GAUSS_PT,0)
457 self.assertTrue(f.isEqual(f4,1e-12,1e-12))
461 def testMEDField4(self):
462 mm=MEDFileMesh.New("Pyfile14.med")
463 mm.write("Pyfile14_bis.med",2)
464 ff=MEDFileFieldMultiTS.New("Pyfile14.med","MyFieldOnGaussNE")
465 ff.write("Pyfile14_bis.med",0)
466 ff=MEDFileField1TS.New("Pyfile14.med","MyFieldOnGaussNE",1,5)
467 f=ff.getFieldAtLevel(ON_GAUSS_NE,0)
468 f2=MEDLoader.ReadFieldGaussNE("Pyfile14.med",'2DMesh_2',0,"MyFieldOnGaussNE",1,5)
469 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
472 # MEDField get/set on pointe.med
473 def testMEDField5(self):
474 ff=MEDFileField1TS.New("Pyfile17.med","MeasureOfMesh_Extruded",1,2)
475 f=ff.getFieldAtLevel(ON_CELLS,0)
476 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
477 self.assertTrue(f.getMesh().getCoords().isEqual(f2.getMesh().getCoords(),1e-12))
478 f.getMesh().tryToShareSameCoords(f2.getMesh(),1e-12)
479 f.changeUnderlyingMesh(f2.getMesh(),22,1e-12)
480 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
481 # no with renumbering
482 f=ff.getFieldAtLevel(ON_CELLS,0,1)
483 f2=MEDLoader.ReadFieldCell("Pyfile17.med","Extruded",0,"MeasureOfMesh_Extruded",1,2)
484 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
485 f=ff.getFieldAtLevel(ON_CELLS,0,3)
486 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
487 f=ff.getFieldAtLevel(ON_CELLS,0,2)
488 self.assertTrue(not f.isEqual(f2,1e-12,1e-12))
489 f.changeUnderlyingMesh(f2.getMesh(),12,1e-12)
490 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
493 # MEDField get/set on profiles nodes
494 def testMEDField6(self):
495 ff=MEDFileFieldMultiTS.New("Pyfile7.med","VectorFieldOnNodes")
496 its=ff.getIterations()
497 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
498 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
499 f2=MEDLoader.ReadFieldNode("Pyfile7.med",'3DSurfMesh_1',0,"VectorFieldOnNodes",its[0][0],its[0][1])
500 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
501 ff=MEDFileFieldMultiTS.New("Pyfile19.med","VFieldOnNodes")
502 its=ff.getIterations()
503 f=ff.getFieldAtLevel(ON_NODES,its[0][0],its[0][1],0)
504 f2=MEDLoader.ReadFieldNode("Pyfile19.med",'2DMesh_1',0,"VFieldOnNodes",its[0][0],its[0][1])
505 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
506 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_CELLS,its[0][0],its[0][1],0)# request on cell and it is not on cells
507 self.assertRaises(InterpKernelException,ff.getFieldAtLevel,ON_NODES,its[0][0],its[0][1],0,1)#request renumber following mesh : it is on profile !
510 # MEDField get/set on profiles cells
511 def testMEDField7(self):
512 ff=MEDFileFieldMultiTS.New("Pyfile12.med","VectorFieldOnCells")
513 its=ff.getIterations()
514 f=ff.getFieldAtLevel(ON_CELLS,its[0][0],its[0][1],0)
515 f2=MEDLoader.ReadFieldCell("Pyfile12.med",'3DMesh_1',0,"VectorFieldOnCells",its[0][0],its[0][1])
516 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
519 #first test of assignation. No profile and types sorted by type.
520 def testMEDField8(self):
522 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
524 mm1=MEDFileUMesh.New()
525 mm1.setCoords(m1.getCoords())
526 mm1.setMeshAtLevel(0,m1)
527 mm1.setName(m1.getName())
529 ff1=MEDFileField1TS.New()
530 ff1.setFieldNoProfileSBT(f1)
532 f2=MEDLoader.ReadFieldCell(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2]);
533 itt,orr,ti=ff1.getTime()
534 self.assertEqual(0,itt); self.assertEqual(1,orr); self.assertAlmostEqual(2.,ti,14);
535 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
537 itt,orr,ti=ff1.getTime()
538 self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
539 da,infos=ff1.getUndergroundDataArrayExt()
540 f2.getArray().setName(da.getName())#da has the same name than f2
541 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
542 self.assertEqual([((3, 0), (0, 2)), ((4, 0), (2, 4)), ((6, 0), (4, 5)), ((5, 0), (5, 6))],infos)
545 f1=MEDLoaderDataForTest.buildVecFieldOnNodes_1();
547 mm1=MEDFileUMesh.New()
548 mm1.setCoords(m1.getCoords())
549 mm1.setMeshAtLevel(0,m1)
550 mm1.setName(m1.getName())
552 ff1=MEDFileField1TS.New()
553 ff1.setFieldNoProfileSBT(f1)
555 da=ff1.getUndergroundDataArray().setIJ(0,0,nv)
557 f2=MEDLoader.ReadFieldNode(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
558 self.assertTrue(not f1.isEqual(f2,1e-12,1e-12))
559 f1.getArray().setIJ(0,0,nv)
560 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
563 f1=MEDLoaderDataForTest.buildVecFieldOnGaussNE_1();
565 mm1=MEDFileUMesh.New()
566 mm1.setCoords(m1.getCoords())
567 mm1.setMeshAtLevel(0,m1)
568 mm1.setName(m1.getName())
570 ff1=MEDFileField1TS.New()
571 ff1.setFieldNoProfileSBT(f1)
573 f2=MEDLoader.ReadFieldGaussNE(fname,f1.getMesh().getName(),0,f1.getName(),f1.getTime()[1],f1.getTime()[2])
574 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
575 da,infos=ff1.getUndergroundDataArrayExt()
576 f2.getArray().setName(da.getName())#da has the same name than f2
577 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
578 self.assertEqual([((3, 0), (0, 6)), ((4, 0), (6, 14)), ((6, 0), (14, 20))],infos)
581 f1=MEDLoaderDataForTest.buildVecFieldOnGauss_2_Simpler();
582 f1InvalidCpy=f1.deepCpy()
583 f1InvalidCpy.setDiscretization(MEDCouplingFieldDiscretizationGauss())
584 f1InvalidCpy2=f1.deepCpy()
585 f1InvalidCpy2.setDiscretization(MEDCouplingFieldDiscretizationGauss())
587 mm1=MEDFileUMesh.New()
588 mm1.setCoords(m1.getCoords())
589 mm1.setMeshAtLevel(0,m1)
590 mm1.setName(m1.getName())
592 ff1=MEDFileField1TS.New()
593 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy) # fails because no Gauss localization per cell set !*
594 f1InvalidCpy2.getDiscretization().setArrayOfDiscIds(f1.getDiscretization().getArrayOfDiscIds()) # fails because no Gauss localization set whereas gauss locid per cell given !
595 self.assertRaises(InterpKernelException,ff1.setFieldNoProfileSBT,f1InvalidCpy2)
596 ff1.setFieldNoProfileSBT(f1)
598 ff2=MEDFileField1TS.New(fname,f1.getName(),f1.getTime()[1],f1.getTime()[2])
599 f2=ff2.getFieldAtLevel(ON_GAUSS_PT,0)
600 self.assertTrue(f1.isEqual(f2,1e-12,1e-12))
601 sbt=ff2.getFieldSplitedByType2()
602 loc1=ff2.getLocalization("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5")
603 self.assertEqual("Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5",loc1.getName())
604 self.assertEqual((-1, 1,-1,-1,1,-1,-1,0,0,-1,0,0),loc1.getRefCoords())
605 self.assertEqual(6,loc1.getNumberOfPointsInCells())
606 self.assertEqual(3,loc1.getNumberOfGaussPoints())
607 self.assertEqual(2,loc1.getDimension())
608 da,infos=ff2.getUndergroundDataArrayExt()
609 f2.getArray().setName(da.getName())#da has the same name than f2
610 self.assertTrue(da.isEqual(f2.getArray(),1e-12))
611 self.assertEqual(53,da.getNumberOfTuples())
612 self.assertEqual([((3, 0), (0, 18)), ((3, 1), (18, 30)), ((3, 2), (30, 36)), ((4, 0), (36, 42)), ((4, 1), (42, 44)), ((6, 0), (44, 53))],infos)
616 def testMEDFileData1(self):
620 m1=MEDLoaderDataForTest.build1DMesh_1()
621 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
622 mmm1=MEDFileMeshMultiTS.New() ;
623 mmm1.setOneTimeStep(mm1)
624 m2=MEDLoaderDataForTest.build2DCurveMesh_1()
625 mm2=MEDFileUMesh.New() ; mm2.setCoords(m2.getCoords()) ; mm2.setMeshAtLevel(0,m2) ; mm2.setName(m2.getName())
626 mmm2=MEDFileMeshMultiTS.New() ; mmm2.setOneTimeStep(mm2)
627 ms=MEDFileMeshes.New(); ms.setMeshAtPos(0,mm1) ; ms.setMeshAtPos(1,mm2)
629 for name,mmm in zip(["1DMesh_1","2DCurveMesh_1"],ms):
630 self.assertEqual(name,mmm.getName())
631 self.assertEqual(type(mmm),MEDFileUMesh)
633 self.assertEqual(('1DMesh_1', '2DCurveMesh_1'),d.getMeshes().getMeshesNames())
635 ff1=MEDFileFieldMultiTS.New()
636 ff21=MEDFileFieldMultiTS.New()
637 ff22=MEDFileFieldMultiTS.New()
638 f1=m1.getMeasureField(True) ; f1.setName("f1") ; f1=f1.buildNewTimeReprFromThis(ONE_TIME,False)
639 f1.getArray().setInfoOnComponent(0,"power [kW]")
640 ff1.appendFieldNoProfileSBT(f1)
641 f21=m2.getMeasureField(True) ; f21.setName("f21") ; f21=f21.buildNewTimeReprFromThis(ONE_TIME,False)
642 f21.getArray().setInfoOnComponent(0,"sta [mm]") ;
643 ff21.appendFieldNoProfileSBT(f21)
644 f22=f21.deepCpy() ; f22.setName("f22") ; f22=f22.buildNewTimeReprFromThis(ONE_TIME,False) ;
645 f22.applyFunc(2,"3*x*IVec+2*x*JVec")
646 f22.getArray().setInfoOnComponent(0,"distance [km]") ; f22.getArray().setInfoOnComponent(1,"displacement [cm]")
647 ff22.appendFieldNoProfileSBT(f22)
648 fs=MEDFileFields.New()
649 fs.pushField(ff1) ; fs.pushField(ff21) ; fs.pushField(ff22)
650 for name,fmts in zip(["f1","f21","f22"],fs):
651 self.assertEqual(name,fmts.getName())
655 fname2="Pyfile29_2.med"
658 d2=MEDFileData.New(fname2)
659 self.assertEqual(2,d2.getNumberOfMeshes())
660 self.assertEqual(3,d2.getNumberOfFields())
661 self.assertTrue(isinstance(d2.getMeshes().getMeshAtPos(0),MEDFileUMesh))
662 self.assertTrue(isinstance(d2.getMeshes()[0],MEDFileUMesh))
663 self.assertTrue(isinstance(d2.getMeshes()['2DCurveMesh_1'],MEDFileUMesh))
664 m1bis=d2.getMeshes().getMeshAtPos(0).getMeshAtLevel(0)
665 self.assertTrue(m1.isEqual(m1bis,1e-12))
666 self.assertEqual(('f1', 'f21', 'f22'),d2.getFields().getFieldsNames())
667 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldAtPos(2).getTimeSteps())
668 self.assertEqual([(-1,-1,0.0)],d2.getFields()[2].getTimeSteps())
669 self.assertEqual([(-1,-1,0.0)],d2.getFields().getFieldWithName("f21").getTimeSteps())
670 self.assertEqual([(-1,-1,0.0)],d2.getFields()["f21"].getTimeSteps())
673 def testMEDField9(self):
674 # first test field profile WR. Full type but with some type missing
676 m1=MEDLoaderDataForTest.build2DMesh_3()
677 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
679 ff1=MEDFileField1TS.New()
680 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F1")
681 d=DataArrayDouble.New() ; d.alloc(2*9,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
682 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
683 da=DataArrayInt.New(); da.alloc(9,1) ; da.iota(0) ; da.setName("sup1")
685 ff1.setFieldProfile(f1,mm1,0,da)
686 ff1.changePflsNames([(["sup1_NORM_QUAD4"],"ForV650")])
690 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
691 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))# profiles names cannot be contracted in pfl array name
692 self.assertTrue(vals.isEqual(d,1e-14))
694 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
695 ff3=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
696 ff2.deepCpyGlobs(ff3)
697 sbt=ff2.getFieldSplitedByType2()
698 self.assertEqual(3,sbt[0][0])#TRI3
699 self.assertEqual(0,sbt[0][1][0][0])#CELL For TRI3
700 self.assertEqual("",sbt[0][1][0][2])#no profile For TRI3
701 self.assertEqual([7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],sbt[0][1][0][1].getValues())# values for TRI3
702 self.assertEqual(4,sbt[1][0])#QUAD4
703 self.assertEqual(0,sbt[1][1][0][0])#CELL For QUAD4
704 self.assertEqual("ForV650",sbt[1][1][0][2])# profile For QUAD4
705 self.assertEqual([19, 20, 21, 22, 23, 24],sbt[1][1][0][1].getValues())# values for QUAD4
706 self.assertEqual([0],ff2.getTypesOfFieldAvailable())
707 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,0,mm1) ; vals.setName("")
708 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
709 self.assertTrue(vals.isEqual(d,1e-14))
712 def testMEDField10(self):
714 m1=MEDLoaderDataForTest.build2DMesh_1()
715 m1.renumberCells([0,1,4,2,3,5],False)
716 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
718 ff1=MEDFileFieldMultiTS.New()
719 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
720 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
721 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
722 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
724 ff1.appendFieldProfile(f1,mm1,0,da)
725 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
726 ff1.appendFieldProfile(f1,mm1,0,da)
730 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
731 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
732 self.assertTrue(vals.isEqual(e,1e-14))
733 vals,pfl=ff1.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
734 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
735 self.assertTrue(vals.isEqual(d,1e-14))
737 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
738 self.assertEqual([(-1,-1,0.0), (1,2,1.2)],ff2.getTimeSteps())
739 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,1,2,0,mm1) ; vals.setName("")
740 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
741 self.assertTrue(vals.isEqual(e,1e-14))
742 vals,pfl=ff2.getFieldWithProfile(ON_CELLS,-1,-1,0,mm1) ; vals.setName("")
743 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
744 self.assertTrue(vals.isEqual(d,1e-14))
747 # idem testMEDField9 method except that here testing profile on nodes and not on cells.
748 def testMEDField11(self):
750 m1=MEDLoaderDataForTest.build2DMesh_1()
751 m1.renumberCells([0,1,4,2,3,5],False)
752 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
754 ff1=MEDFileField1TS.New()
755 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
756 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
757 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
758 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
760 ff1.setFieldProfile(f1,mm1,0,da)
761 self.assertEqual(ff1.getNonEmptyLevels(),(-1, []))
764 vals,pfl=ff1.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
765 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
766 self.assertTrue(vals.isEqual(d,1e-14))
768 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
769 vals,pfl=ff2.getFieldWithProfile(ON_NODES,0,mm1) ; vals.setName("")
770 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
771 self.assertTrue(vals.isEqual(d,1e-14))
774 def testMEDField12(self):
776 m1=MEDLoaderDataForTest.build2DMesh_1()
777 m1.renumberCells([0,1,4,2,3,5],False)
778 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
780 ff1=MEDFileFieldMultiTS.New()
781 f1=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f1.setName("F1Node")
782 d=DataArrayDouble.New() ; d.alloc(2*6,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
783 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
784 da=DataArrayInt.New(); da.setValues([1,2,4,5,7,8],6,1) ; da.setName("sup1Node")
786 ff1.appendFieldProfile(f1,mm1,0,da)
787 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
788 ff1.appendFieldProfile(f1,mm1,0,da)
791 vals,pfl=ff1.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
792 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
793 self.assertTrue(vals.isEqual(e,1e-14))
794 vals,pfl=ff1.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
795 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
796 self.assertTrue(vals.isEqual(d,1e-14))
798 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
799 vals,pfl=ff2.getFieldWithProfile(ON_NODES,1,2,0,mm1) ; vals.setName("")
800 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
801 self.assertTrue(vals.isEqual(e,1e-14))
802 vals,pfl=ff2.getFieldWithProfile(ON_NODES,-1,-1,0,mm1) ; vals.setName("")
803 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
804 self.assertTrue(vals.isEqual(d,1e-14))
807 def testMEDField13(self):
809 m1=MEDLoaderDataForTest.build2DMesh_1()
810 m1.renumberCells([0,1,4,2,3,5],False)
812 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
813 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
815 ff1=MEDFileField1TS.New()
816 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F3Node")
817 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
818 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
819 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
821 ff1.setFieldProfile(f1,mm1,0,da)
824 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
825 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
826 self.assertTrue(vals.isEqual(d,1e-14))
828 ff2=MEDFileField1TS.New(fname,f1.getName(),-1,-1)
829 vals,pfl=ff2.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; vals.setName("")
830 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
831 self.assertTrue(vals.isEqual(d,1e-14))
834 def testMEDField14(self):
836 m1=MEDLoaderDataForTest.build2DMesh_1()
837 m1.renumberCells([0,1,4,2,3,5],False)
839 m1=m1.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) # suppression of last cell that is a polygon
840 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
842 ff1=MEDFileFieldMultiTS.New()
843 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
844 d=DataArrayDouble.New() ; d.alloc(2*11,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
845 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
846 da=DataArrayInt.New(); da.setValues([0,2,3],3,1) ; da.setName("sup1NodeElt")
848 ff1.appendFieldProfile(f1,mm1,0,da)
849 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
850 ff1.appendFieldProfile(f1,mm1,0,da)
853 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
854 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
855 self.assertTrue(vals.isEqual(d,1e-14))
856 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
857 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
858 self.assertTrue(vals.isEqual(e,1e-14))
859 self.assertEqual([[3],[3]],ff1.getTypesOfFieldAvailable())
861 ff2=MEDFileFieldMultiTS.New(fname,f1.getName())
862 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,-1,-1,0,mm1) ; vals.setName("")
863 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
864 self.assertTrue(vals.isEqual(d,1e-14))
865 vals,pfl=ff1.getFieldWithProfile(ON_GAUSS_NE,1,2,0,mm1) ; vals.setName("")
866 self.assertTrue(pfl.isEqualWithoutConsideringStr(da))
867 self.assertTrue(vals.isEqual(e,1e-14))
869 # Tricky test of the case of in a MED file containing a Field on GAUSS_NE is lying on a profile that is reality represents all the geom entities of a level.
870 # By default when using setFieldProfile method such profile is not created because it is not useful ! So here a trick is used to force MEDLoader to do that
871 # for the necessity of the test ! The idea is too create artificially a mesh having one more fictious cell per type and to roll back right after !
872 def testMEDField15(self):
874 m0=MEDLoaderDataForTest.build2DMesh_1()
875 m0.renumberCells([0,1,4,2,3,5],False)
877 m1=m0.buildPartOfMySelf([0,1,1,2,3,3,4,4],True) ; m1.setName(tmp) # suppression of last cell that is a polygon and creation of one more cell per type
878 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ;
879 ff1=MEDFileField1TS.New()
880 f1=MEDCouplingFieldDouble.New(ON_GAUSS_NE,ONE_TIME) ; f1.setName("F4Node")
881 d=DataArrayDouble.New() ; d.alloc(2*20,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
882 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
883 da=DataArrayInt.New(); da.setValues([0,1,3,4,6],5,1) ; da.setName("sup1NodeElt")
885 ff1.setFieldProfile(f1,mm1,0,da)
886 m1=m0.buildPartOfMySelf(range(5),True) ; m1.setName(tmp) ; mm1.setMeshAtLevel(0,m1) ;
889 f1=ff1.getFieldOnMeshAtLevel(ON_GAUSS_NE,m1,0)
890 f2,p1=ff1.getFieldWithProfile(ON_GAUSS_NE,0,mm1) ; f2.setName("")
891 self.assertTrue(p1.isIdentity())
892 self.assertEqual(5,p1.getNumberOfTuples())
893 self.assertTrue(f1.getArray().isEqual(f2,1e-12))
895 # Test for getFieldAtTopLevel method
896 def testMEDField16(self):
898 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
900 mm1=MEDFileUMesh.New()
901 mm1.setCoords(m1.getCoords())
902 mm1.setMeshAtLevel(0,m1)
903 mm1.setName(m1.getName())
904 ff1=MEDFileField1TS.New()
905 ff1.setFieldNoProfileSBT(f1)
906 m2=m1.buildDescendingConnectivity()[0]
907 m2.sortCellsInMEDFileFrmt()
908 m2.setName(m1.getName())
909 mm1.setMeshAtLevel(-1,m2)
911 f2=m2.getMeasureField(True)
912 dd=DataArrayDouble.New()
913 dd.alloc(f2.getArray().getNumberOfTuples(),3)
914 dd[:,0]=f2.getArray()
915 dd[:,1]=2*f2.getArray()
916 dd[:,2]=3*f2.getArray()
917 f2=f2.buildNewTimeReprFromThis(ONE_TIME,False)
919 f2.copyTinyStringsFrom(f1)
920 f2.copyTinyAttrFrom(f1)
921 ff1.setFieldNoProfileSBT(f2)
923 # Reading Pyfile37.med
924 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
925 f1bis=ff2.getFieldAtLevel(ON_CELLS,0)
926 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
927 f1bis=ff2.getFieldAtLevel(ON_CELLS,-1)
928 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
929 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
930 self.assertTrue(f1.isEqual(f1bis,1e-12,1e-12))
934 ff1=MEDFileField1TS.New()
935 ff1.setFieldNoProfileSBT(f2)
937 ff2=MEDFileField1TS.New(fname,f2.getName(),0,1)
938 f1bis=ff2.getFieldAtTopLevel(ON_CELLS)
939 self.assertTrue(f2.isEqual(f1bis,1e-12,1e-12))
942 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
943 def testMEDField17(self):
945 m1=MEDLoaderDataForTest.build2DMesh_1()
946 m1.renumberCells([0,1,4,2,3,5],False)
947 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
949 ffs=MEDFileFields.New()
950 ff1=MEDFileFieldMultiTS.New()
951 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
952 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
953 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
954 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
956 ff1.appendFieldProfile(f1,mm1,0,da)
957 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
958 ff1.appendFieldProfile(f1,mm1,0,da)
960 ffs.setFieldAtPos(0,ff1)
964 ffsr=MEDFileFields.New(fname)
965 ff3=ffsr.getFieldAtPos(0)
966 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
967 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
970 # Non regression test to check that globals are correctly appended on MEDFileFields::setFieldAtPos
971 def testMEDField18(self):
973 m1=MEDLoaderDataForTest.build2DMesh_1()
974 m1.renumberCells([0,1,4,2,3,5],False)
975 mm1=MEDFileUMesh.New() ; mm1.setCoords(m1.getCoords()) ; mm1.setMeshAtLevel(0,m1) ; mm1.setName(m1.getName())
977 ffs=MEDFileFields.New()
978 ff1=MEDFileFieldMultiTS.New()
979 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName("F2")
980 d=DataArrayDouble.New() ; d.alloc(2*4,1) ; d.iota(7.); d.rearrange(2); d.setInfoOnComponent(0,"sigX [MPa]") ; d.setInfoOnComponent(1,"sigY [GPa]")
981 f1.setArray(d) # note that f1 is NOT defined fully (no mesh !). It is not a bug of test it is too test that MEDFileField1TS.appendFieldProfile is NOT sensible of that.
982 da=DataArrayInt.New(); da.setValues([0,1,2,4],4,1) ; da.setName("sup2")
984 ff1.appendFieldProfile(f1,mm1,0,da)
985 f1.setTime(1.2,1,2) ; e=d.applyFunc("2*x") ; e.copyStringInfoFrom(d) ; f1.setArray(e) ;
986 ff1.appendFieldProfile(f1,mm1,0,da)
990 ffsr=MEDFileFields.New(fname)
991 ff3=ffsr.getFieldAtPos(0)
992 f4=ff3.getFieldAtTopLevel(ON_CELLS,1,2)
993 self.assertTrue(f4.getArray().isEqual(f1.getArray(),1e-12))
996 def testMEDFieldBug1(self):
998 d=MEDFileData.New(fname)
999 self.assertEqual(('Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1','Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0','Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2'),d.getFields().getFieldAtPos(0).getLocs())
1002 def testMEDMesh8(self):
1003 m=MEDLoaderDataForTest.build1DMesh_1()
1004 m.convertQuadraticCellsToLinear()
1005 mm=MEDFileUMesh.New()
1006 mm.setMeshAtLevel(0,m)
1007 g1=DataArrayInt.New() ; g1.setValues([0,2],2,1) ; g1.setName("g1")
1008 g2=DataArrayInt.New() ; g2.setValues([1,3],2,1) ; g2.setName("g2")
1009 g3=DataArrayInt.New() ; g3.setValues([1,2,3],3,1) ; g3.setName("g3")
1010 mm.setGroupsAtLevel(0,[g1,g2],False)
1011 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1012 self.assertEqual(('Family_-2','Family_-3'),mm.getFamiliesNames())
1013 self.assertEqual(('Family_-2',),mm.getFamiliesOnGroup('g1'))
1014 self.assertEqual(('Family_-3',),mm.getFamiliesOnGroup('g2'))
1015 mm.assignFamilyNameWithGroupName()
1016 self.assertEqual(('g1','g2'),mm.getGroupsNames())
1017 self.assertEqual(('g1','g2'),mm.getFamiliesNames())
1018 self.assertEqual(('g1',),mm.getFamiliesOnGroup('g1'))
1019 self.assertEqual(('g2',),mm.getFamiliesOnGroup('g2'))
1021 mm=MEDFileUMesh.New()
1022 mm.setMeshAtLevel(0,m)
1023 mm.setGroupsAtLevel(0,[g1,g2,g3],False)
1024 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1025 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1026 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1027 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1028 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1029 mm.assignFamilyNameWithGroupName() # here it does nothing because no such group-family bijection found
1030 self.assertEqual(('g1','g2','g3'),mm.getGroupsNames())
1031 self.assertEqual(('Family_-2', 'Family_-4', 'Family_-5'),mm.getFamiliesNames())
1032 self.assertEqual(('Family_-2', 'Family_-4'),mm.getFamiliesOnGroup('g1'))
1033 self.assertEqual(('Family_-5',),mm.getFamiliesOnGroup('g2'))
1034 self.assertEqual(('Family_-4','Family_-5',),mm.getFamiliesOnGroup('g3'))
1035 mm.changeFamilyId(5,6)
1036 g=mm.getGroupArr(0,"g3")
1037 self.assertTrue(g.isEqual(g3));
1038 g=mm.getGroupArr(0,"g2")
1039 self.assertTrue(g.isEqual(g2));
1040 g=mm.getGroupArr(0,"g1")
1041 self.assertTrue(g.isEqual(g1));
1044 # bug detected by gauthier
1045 def testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile(self):
1046 fname="Pyfile41.med"
1047 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
1049 mm1=MEDFileUMesh.New()
1050 mm1.setCoords(m1.getCoords())
1051 mm1.setMeshAtLevel(0,m1)
1053 ff1=MEDFileField1TS.New()
1054 ff1.setFieldNoProfileSBT(f1)
1056 # writing mesh1 and field1, now creation of mesh2 and field2
1059 m2.translate([0.5,0.6,0.7])
1060 m2.setName("3DSurfMesh_2")
1061 f2.getArray()[:]*=2.
1062 f2.setName("VectorFieldOnCells2")
1063 mm2=MEDFileUMesh.New()
1064 mm2.setCoords(m2.getCoords())
1065 mm2.setMeshAtLevel(0,m2)
1067 ff2=MEDFileField1TS.New()
1068 ff2.setFieldNoProfileSBT(f2)
1071 f3=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_1",0,"VectorFieldOnCells",0,1)
1072 self.assertTrue(f3.isEqual(f1,1e-12,1e-12))
1073 f4=MEDLoader.ReadFieldCell(fname,"3DSurfMesh_2",0,"VectorFieldOnCells2",0,1)
1074 self.assertTrue(f4.isEqual(f2,1e-12,1e-12))
1077 def testMEDLoaderMultiLevelCellField1(self):
1078 fname="Pyfile42.med"
1079 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1080 m=MEDFileUMesh.New()
1081 m.setCoords(m2.getCoords())
1082 m.setMeshAtLevel(0,m2)
1083 m.setMeshAtLevel(-1,m1)
1084 m.setMeshAtLevel(-2,m0)
1088 compNames1=["comp1","comp2","comp3"]
1089 ff1=MEDFileField1TS.New()
1090 da2=DataArrayDouble.New()
1091 da2.alloc(m2.getNumberOfCells()*len(compNames1),1)
1093 da2.rearrange(len(compNames1))
1094 da2.setInfoOnComponents(compNames1)
1095 f2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f2.setName(FieldName1) ; f2.setArray(da2) ; f2.setMesh(m2) ; f2.checkCoherency()
1096 ff1.setFieldNoProfileSBT(f2)
1097 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0]))
1098 da0=DataArrayDouble.New()
1099 da0.alloc(m0.getNumberOfCells()*len(compNames1),1)
1101 da0.rearrange(len(compNames1))
1102 da0.setInfoOnComponents(compNames1)
1103 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName1) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1104 ff1.setFieldNoProfileSBT(f0)
1105 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-2]))
1106 da1=DataArrayDouble.New()
1107 da1.alloc(m1.getNumberOfCells()*len(compNames1),1)
1109 da1.rearrange(len(compNames1))
1110 da1.setInfoOnComponents(compNames1)
1111 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName1) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1112 ff1.setFieldNoProfileSBT(f1)
1113 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1118 compNames2=["comp11","comp22"]
1119 ff2=MEDFileField1TS.New()
1120 da0=DataArrayDouble.New()
1121 da0.alloc(m0.getNumberOfCells()*2,1)
1124 da0.setInfoOnComponents(compNames2)
1125 f0=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0.setName(FieldName2) ; f0.setArray(da0) ; f0.setMesh(m0) ; f0.checkCoherency()
1126 ff2.setFieldNoProfileSBT(f0)
1127 self.assertEqual(ff2.getNonEmptyLevels(),(0, [0]))
1128 da1=DataArrayDouble.New()
1129 da1.alloc(m1.getNumberOfCells()*len(compNames2),1)
1131 da1.rearrange(len(compNames2))
1132 da1.setInfoOnComponents(compNames2)
1133 f1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f1.setName(FieldName2) ; f1.setArray(da1) ; f1.setMesh(m1) ; f1.checkCoherency()
1134 ff2.setFieldNoProfileSBT(f1)
1135 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1139 ff1=MEDFileField1TS.New(fname,FieldName1,-1,-1)
1140 self.assertEqual(ff1.getNonEmptyLevels(),(2, [0,-1,-2]))
1141 self.assertEqual(ff1.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')]), (3, [(0, (84, 148), '', '')]), (4, [(0, (148, 212), '', '')])])
1142 ff2=MEDFileField1TS.New(fname,FieldName2,-1,-1)
1143 self.assertEqual(ff2.getNonEmptyLevels(),(1, [0,-1]))
1144 self.assertEqual(ff2.getFieldSplitedByType(),[(0, [(0, (0, 4), '', '')]), (1, [(0, (4, 84), '', '')])])
1147 def testFieldOnPflRetrieveOnMdimRelMax1(self):
1148 fname="Pyfile43.med"
1149 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
1150 m=MEDFileUMesh.New()
1151 m.setMeshAtLevel(0,m2)
1152 m.setMeshAtLevel(-1,m1)
1153 m.setMeshAtLevel(-2,m0)
1154 f=MEDFileField1TS.New()
1155 ff=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME)
1156 ff.setName("NodeFieldPfl")
1157 arr=DataArrayDouble.New() ; arr.setValues([1.,10.,100.,2.,20.,200.],2,3)
1159 pfl=DataArrayInt.New() ; pfl.setValues([2,3],2,1) ; pfl.setName("PflNode")
1160 f.setFieldProfile(ff,m,-2,pfl)
1161 tes0=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1162 self.assertEqual(ON_NODES,tes0.getTypeOfField())
1163 self.assertEqual(1,tes0.getMesh().getMeshDimension())
1164 self.assertEqual(1,tes0.getMesh().getNumberOfCells())
1165 self.assertEqual(2,tes0.getMesh().getNumberOfNodes())
1166 self.assertEqual([1,0,1],tes0.getMesh().getNodalConnectivity().getValues())
1167 self.assertEqual([0,3],tes0.getMesh().getNodalConnectivityIndex().getValues())
1168 self.assertEqual(2,tes0.getArray().getNumberOfTuples())
1169 self.assertEqual(3,tes0.getArray().getNumberOfComponents())
1170 expected1=[1.,10.,100.,2.,20.,200.]
1171 nodeCoordsWithValue1=[10.,2.5,0.]
1172 nodeCoordsWithValue2=[10.,3.75,0.]
1174 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes0.getMesh().getCoordinatesOfNode(0)[i],13);
1175 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes0.getMesh().getCoordinatesOfNode(1)[i],13);
1178 self.assertAlmostEqual(expected1[i],tes0.getArray().getIJ(0,i),13);
1182 tes1=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1183 self.assertEqual(ON_CELLS,tes1.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1184 self.assertEqual(0,tes1.getMesh().getMeshDimension())
1185 self.assertEqual(2,tes1.getMesh().getNumberOfCells())
1186 self.assertEqual(135,tes1.getMesh().getNumberOfNodes())
1187 self.assertEqual([0,2,0,3],tes1.getMesh().getNodalConnectivity().getValues())
1188 self.assertEqual([0,2,4],tes1.getMesh().getNodalConnectivityIndex().getValues())
1189 self.assertEqual(2,tes1.getArray().getNumberOfTuples())
1190 self.assertEqual(3,tes1.getArray().getNumberOfComponents())
1192 self.assertAlmostEqual(expected1[i],tes1.getArray().getIJ(0,i),13);
1197 pfl=DataArrayInt.New() ; pfl.setValues([3,2],2,1) ; pfl.setName("PflNode")
1198 f=MEDFileField1TS.New()
1199 f.setFieldProfile(ff,m,-2,pfl)
1200 tes2=f.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1201 self.assertEqual(ON_NODES,tes2.getTypeOfField())
1202 self.assertEqual(1,tes2.getMesh().getMeshDimension())
1203 self.assertEqual(1,tes2.getMesh().getNumberOfCells())
1204 self.assertEqual(2,tes2.getMesh().getNumberOfNodes())
1205 self.assertEqual([1,0,1],tes2.getMesh().getNodalConnectivity().getValues())
1206 self.assertEqual([0,3],tes2.getMesh().getNodalConnectivityIndex().getValues())
1207 self.assertEqual(2,tes2.getArray().getNumberOfTuples())
1208 self.assertEqual(3,tes2.getArray().getNumberOfComponents())
1209 expected2=[2.,20.,200.,1.,10.,100.]
1211 self.assertAlmostEqual(nodeCoordsWithValue1[i],tes2.getMesh().getCoordinatesOfNode(0)[i],13);
1212 self.assertAlmostEqual(nodeCoordsWithValue2[i],tes2.getMesh().getCoordinatesOfNode(1)[i],13);
1215 self.assertAlmostEqual(expected2[i],tes2.getArray().getIJ(0,i),13);#compare tes2 and tes3
1218 tes3=f.getFieldOnMeshAtLevel(ON_NODES,1,m)
1219 self.assertEqual(ON_CELLS,tes3.getTypeOfField())# it is not a bug even if ON_NODES has been sepecified
1220 self.assertEqual(0,tes3.getMesh().getMeshDimension())
1221 self.assertEqual(2,tes3.getMesh().getNumberOfCells())
1222 self.assertEqual(135,tes3.getMesh().getNumberOfNodes())
1223 self.assertEqual([0,3,0,2],tes3.getMesh().getNodalConnectivity().getValues())
1224 self.assertEqual([0,2,4],tes3.getMesh().getNodalConnectivityIndex().getValues())
1225 self.assertEqual(2,tes3.getArray().getNumberOfTuples())
1226 self.assertEqual(3,tes3.getArray().getNumberOfComponents())
1228 self.assertAlmostEqual(expected1[i],tes3.getArray().getIJ(0,i),13);
1232 def testDuplicateNodesOnM1Group1(self):
1233 fname="Pyfile44.med"
1234 m=MEDCouplingCMesh.New()
1235 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1236 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1237 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1238 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1239 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1240 m2.setName(m.getName())
1241 grp=DataArrayInt.New([4,6,8]) ; grp.setName("Grp")
1242 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1243 mm=MEDFileUMesh.New()
1244 mm.setMeshAtLevel(0,m)
1245 mm.setMeshAtLevel(-1,m2)
1246 mm.setGroupsAtLevel(-1,[grp,grp2])
1247 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1248 mm.setGroupsAtLevel(1,[grpNode])
1249 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1250 ref1=[4,9,8,14,15,4,10,9,15,16,4,11,10,16,17]
1251 ref2=[4,9,8,14,30,4,10,9,30,31,4,11,10,31,32]
1253 self.assertEqual(30,mm.getNumberOfNodes())
1254 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1255 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())
1257 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1258 self.assertEqual([15,16,17],nodes.getValues());
1259 self.assertEqual([7,8,9],cells.getValues());
1260 self.assertEqual([12,13,14],cells2.getValues());
1261 self.assertEqual(33,mm.getNumberOfNodes())
1262 self.assertEqual([4,6,8],mm.getGroupArr(-1,"Grp").getValues())
1263 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1264 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1265 self.assertEqual([17,18,19],mm.getGroupArr(-1,"Grp_dup").getValues())
1266 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())#cells 7,8,9 and 12,13,14 are lying on "Grp" but only 7,8 and 9 are renumbered
1267 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8,9]].getNodalConnectivity().getValues())#
1268 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),2,1e-12);# Grp_dup and Grp are not equal considering connectivity only
1269 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1270 refValues=DataArrayDouble.New([1.21,1.32,1.43,1.54,1.65,1.32,1.44,1.56,1.68,1.8,1.43,1.56,1.69,1.82,1.95,1.54,1.68,1.82,1.96,2.1])
1271 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1272 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1274 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1275 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1276 refValues2=refValues[:] ; refValues2[7:10]=[1.365,1.26,1.35]
1277 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1278 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1282 def testDuplicateNodesOnM1Group2(self):
1283 fname="Pyfile45.med"
1284 m=MEDCouplingCMesh.New()
1285 m.setCoordsAt(0,DataArrayDouble.New([0.,1.1,2.3,3.6,5.,6.5]))
1286 m.setCoordsAt(1,DataArrayDouble.New([0.,1.1,2.3,3.6,5.]))
1287 m=m.buildUnstructured() ; m.setName("AnthonyDuplicate")
1288 m.getCoords().setInfoOnComponents(["X [km]","Z [mm]"])
1289 m2=m.buildDescendingConnectivity()[0][[8,11,14,20,21,22,23,24,25,26,31,32,33,34,35,36,37]]
1290 m2.setName(m.getName())
1291 grp=DataArrayInt.New([4,6]) ; grp.setName("Grp")
1292 grp2=DataArrayInt.New([9,16]) ; grp2.setName("Grp2")
1293 mm=MEDFileUMesh.New()
1294 mm.setMeshAtLevel(0,m)
1295 mm.setMeshAtLevel(-1,m2)
1296 mm.setGroupsAtLevel(-1,[grp,grp2])
1297 grpNode=DataArrayInt.New([4,21,23]) ; grpNode.setName("GrpNode")
1298 mm.setGroupsAtLevel(1,[grpNode])
1299 ref0=[4,15,14,20,21,4,16,15,21,22,4,17,16,22,23]
1300 ref1=[4,9,8,14,15,4,10,9,15,16]
1301 ref2=[4,9,8,14,30,4,10,9,30,16]
1303 self.assertEqual(30,mm.getNumberOfNodes())
1304 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())
1305 self.assertEqual(ref1,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())
1307 nodes,cells,cells2=mm.duplicateNodesOnM1Group("Grp")
1308 self.assertEqual([15],nodes.getValues());
1309 self.assertEqual([7,8],cells.getValues());
1310 self.assertEqual([12,13],cells2.getValues());
1311 self.assertEqual(31,mm.getNumberOfNodes())
1312 self.assertEqual([4,6],mm.getGroupArr(-1,"Grp").getValues())
1313 self.assertEqual([9,16],mm.getGroupArr(-1,"Grp2").getValues())
1314 self.assertEqual([4,21,23],mm.getGroupArr(1,"GrpNode").getValues())
1315 self.assertEqual([17,18],mm.getGroupArr(-1,"Grp_dup").getValues())
1316 self.assertEqual(ref0,mm.getMeshAtLevel(0)[[12,13,14]].getNodalConnectivity().getValues())#cells 7,8,9 and 12,13,14 are lying on "Grp" but only 7,8 and 9 are renumbered
1317 self.assertEqual(ref2,mm.getMeshAtLevel(0)[[7,8]].getNodalConnectivity().getValues())#
1318 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),2,1e-12);# Grp_dup and Grp are not equal considering connectivity only
1319 mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith(mm.getGroup(-1,"Grp"),12,1e-12)# Grp_dup and Grp are equal considering connectivity and coordinates
1320 refValues=DataArrayDouble.New([1.21,1.32,1.43,1.54,1.65,1.32,1.44,1.56,1.68,1.8,1.43,1.56,1.69,1.82,1.95,1.54,1.68,1.82,1.96,2.1])
1321 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues) ; delta.abs()
1322 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1324 mm.getCoords()[-len(nodes):]+=[0.,-0.3]
1325 self.assertRaises(InterpKernelException,mm.getGroup(-1,"Grp_dup").checkGeoEquivalWith,mm.getGroup(-1,"Grp"),12,1e-12);
1326 refValues2=refValues[:] ; refValues2[7:9]=[1.365,1.47]
1327 valsToTest=mm.getMeshAtLevel(0).getMeasureField(True).getArray() ; delta=(valsToTest-refValues2) ; delta.abs()
1328 self.assertTrue(delta.getMaxValue()[0]<1e-12)
1332 def testBasicConstructors(self):
1333 fname="Pyfile18.med"
1334 m=MEDFileMesh.New(fname)
1335 m=MEDFileMesh.New(fname,"ExampleOfMultiDimW",-1,-1)
1336 m=MEDFileMesh.New(fname)
1337 m=MEDFileUMesh(fname,"ExampleOfMultiDimW",-1,-1)
1338 m=MEDFileUMesh(fname)
1341 m=MEDFileCMesh("MEDFileMesh5.med")
1342 m=MEDFileCMesh("MEDFileMesh5.med","myFirstCartMesh",-1,-1)
1344 m=MEDFileMeshMultiTS()
1345 m=MEDFileMeshMultiTS(fname)
1346 m=MEDFileMeshMultiTS(fname,"ExampleOfMultiDimW")
1348 m=MEDFileMeshes(fname)
1350 m=MEDFileField1TS(fname,"FieldOnFacesShuffle",2,7)
1351 m=MEDFileFieldMultiTS()
1352 m=MEDFileFieldMultiTS(fname,"FieldOnFacesShuffle")
1354 m=MEDFileFields(fname)
1356 m=MEDFileData(fname)
1358 m=DataArrayInt() ; m=DataArrayInt(5,2) ; m=DataArrayInt([6,5,4,3,2,1],3,2)
1359 m=DataArrayDouble() ; m=DataArrayDouble(5,2) ; m=DataArrayDouble([6,5,4,3,2,1],3,2)
1360 m=MEDCouplingUMesh("jjj",2) ; m=MEDCouplingUMesh()
1361 m=MEDCouplingCMesh()
1362 m=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1363 m=MEDCouplingFieldTemplate(ON_NODES)
1364 m=MEDCouplingMultiFields([])
1365 m=MEDCouplingFieldOverTime([])
1368 # This is a non regression test. When a field lies partially on a mesh but fully on one of its geometric type.
1369 def testBugSemiPartialField(self):
1370 fname="Pyfile46.med"
1371 m=MEDLoaderDataForTest.build2DMesh_3()
1372 m=m[:10] ; m.setName("mesh")
1373 f=m.getMeasureField(ON_CELLS)
1374 f=f.buildNewTimeReprFromThis(ONE_TIME,False)
1376 f.setName("SemiPartialField")
1378 f1=f[:6] ; f1.getMesh().setName(m.getName())
1379 f2=f[6:] ; f2.getMesh().setName(m.getName())
1381 mm=MEDFileUMesh.New()
1382 mm.setMeshAtLevel(0,m)
1383 ff=MEDFileField1TS.New()
1384 ff.setFieldProfile(f1,mm,0,DataArrayInt.Range(0,6,1)) # no name on profile -> normally it is an error but in this special case
1388 ff2=MEDFileField1TS.New(fname,f.getName(),f.getTime()[1],f.getTime()[2])
1389 fread=ff2.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
1390 fread2=ff2.getFieldAtLevel(ON_CELLS,0)
1392 fread.checkCoherency()
1393 fread2.checkCoherency()
1394 self.assertTrue(fread.isEqual(f1,1e-12,1e-12))
1395 self.assertTrue(fread2.isEqual(f1,1e-12,1e-12))
1398 def testUnPolyze1(self):
1399 fname="Pyfile47.med"
1400 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1401 ref=[13,14,14,12,12,12,12,12,12,12,12,13,12,14,14,13,15,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12]
1402 self.assertEqual(ref,mm.getFamilyFieldAtLevel(1).getValues())
1403 self.assertEqual(mm.unPolyze()[:3],(True,[[3,2,0],[4,3,2],[5,4,5],[14,2,9],[16,3,11],[31,2,14]],[[3,3,0],[4,3,3],[5,3,6],[14,3,9],[16,3,12],[18,1,15]]))
1405 self.assertEqual(mm.getGroupArr(0,"grp0_L0").getValues(),[0,1,2,6])
1406 self.assertEqual(mm.getGroupArr(0,"grp1_L0").getValues(),[1,3,4,5,6])
1407 self.assertEqual(mm.getGroupArr(-1,"grp0_LM1").getValues(),[1,2,3,4,5])
1408 self.assertEqual(mm.getGroupArr(-1,"grp1_LM1").getValues(),[3,4,5,6])
1409 self.assertEqual(mm.getGroupArr(-1,"grp2_LM1").getValues(),[2,6,7,8])
1410 self.assertEqual(mm.getGroupArr(1,"grp0_Node").getValues(),[0,11,15,16])
1411 self.assertEqual(mm.getGroupArr(1,"grp1_Node").getValues(),[1,2,13,14,16])
1412 self.assertEqual(mm.getFamilyFieldAtLevel(1).getValues(),ref)
1414 mm.setRenumFieldArr(0,None)
1415 mm.setFamilyFieldArr(-1,None)
1418 def testUnPolyze2(self):
1419 fname="Pyfile48.med"
1420 mfd=MEDFileData.New()
1421 mm=MEDLoaderDataForTest.buildMLMeshUnPolyze(self)
1422 meshes=MEDFileMeshes.New()
1424 mfd.setMeshes(meshes)
1425 fields=MEDFileFields.New()
1426 mfd.setFields(fields)
1427 ff=MEDFileFieldMultiTS.New()
1428 fields.pushField(ff)
1430 f0_0=MEDCouplingFieldDouble.New(ON_NODES,ONE_TIME) ; f0_0.setName("f0")
1431 f0_0.setTime(9.5,3,4)
1432 da=DataArrayDouble.New(38*2) ; da.iota(6.) ; da.rearrange(2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1434 f0_0.setMesh(mm.getMeshAtLevel(0))
1435 ff.appendFieldNoProfileSBT(f0_0)
1436 ff0=ff.getTimeStepAtPos(0)
1437 f0_1=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_1.setName("f0")
1438 f0_1.setTime(9.5,3,4)
1439 pfl=DataArrayInt.New([1,4,5,6]) ; pfl.setName("pfltest")
1440 f0_1.setMesh(mm.getMeshAtLevel(0)[pfl])
1441 da=DataArrayDouble.New([1401.,101401.,1602.,101602.,3100.,103100.,3101.,103101.],4,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])
1443 ff0.setFieldProfile(f0_1,mm,0,pfl)
1444 f0_2=MEDCouplingFieldDouble.New(ON_CELLS,ONE_TIME) ; f0_2.setName("f0")#provoquer error
1445 f0_2.setTime(9.5,3,4)
1446 pfl2=DataArrayInt.New([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfltestM1")
1447 da=DataArrayDouble.New([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.],8,2) ; da.setInfoOnComponents(["Power [MW]","Density [kg/m^3]"])#provoquer error
1448 f0_2.setMesh(mm.getMeshAtLevel(-1)[pfl2])
1450 ff0.setFieldProfile(f0_2,mm,-1,pfl2)
1451 mfd.getFields().shallowCpyGlobs(ff0)
1453 mfd.unPolyzeMeshes()
1455 fmts=mfd.getFields()[0]
1456 self.assertEqual(fmts.getNumberOfTS(),1)
1457 self.assertEqual(fmts.getTimeSteps(),[(3,4,9.5)])
1458 arr,entry=fmts.getUndergroundDataArrayExt(3,4)
1459 self.assertEqual(entry,[((3,0),(38,40)),((4,0),(40,43)),((5,0),(43,46)),((14,0),(46,48)),((16,0),(48,49)),((18,0),(49,50)),((40,0),(0,38))])
1460 self.assertTrue(arr[38:40].isEqualWithoutConsideringStr(DataArrayDouble([300.0,100300.0,301.0,100301.0],2,2),1e-8))
1461 self.assertTrue(arr[40:43].isEqualWithoutConsideringStr(DataArrayDouble([400.0,100400.0,401.0,100401.0,402.0,100402.0],3,2),1e-8))
1462 self.assertTrue(arr[43:46].isEqualWithoutConsideringStr(DataArrayDouble([3200.0,103200.0,3201.0,103201.0,3203.0,103203.0],3,2),1e-8))
1463 self.assertTrue(arr[46:48].isEqualWithoutConsideringStr(DataArrayDouble([1401.0,101401.0,3100.0,103100.0],2,2),1e-8))
1464 self.assertTrue(arr[48:49].isEqualWithoutConsideringStr(DataArrayDouble([1602.0,101602.0],1,2),1e-8))
1465 self.assertTrue(arr[49:50].isEqualWithoutConsideringStr(DataArrayDouble([3101.0,103101.0],1,2),1e-8))
1466 self.assertEqual(('NewPfl_0','NewPfl_1','NewPfl_2'),fmts.getPflsReallyUsed())
1467 self.assertEqual([(3,[(0,(38,40),'NewPfl_0','')]),(4,[(0,(40,43),'','')]),(5,[(0,(43,46),'','')]),(14,[(0,(46,48),'NewPfl_1','')]),(16,[(0,(48,49),'NewPfl_2','')]),(18,[(0,(49,50),'','')]),(40,[(1,(0,38),'','')])],fmts.getFieldSplitedByType(3,4))
1468 self.assertEqual(fmts.getProfile("NewPfl_0").getValues(),[0,1])
1469 self.assertEqual(fmts.getProfile("NewPfl_1").getValues(),[1,2])
1470 self.assertEqual(fmts.getProfile("NewPfl_2").getValues(),[2])
1471 ftest0=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,0,mfd.getMeshes()[0])
1472 self.assertTrue(ftest0.getArray().isEqualWithoutConsideringStr(DataArrayDouble([1401.,101401.,3100.,103100.,1602.,101602.,3101.,103101.],4,2),1e-8))
1473 self.assertEqual(ftest0.getMesh().getNodalConnectivity().getValues(),[14,4,5,6,7,14,26,27,28,29,16,20,21,22,23,24,25,18,30,31,32,33,34,35,36,37])
1474 self.assertEqual(ftest0.getMesh().getNodalConnectivityIndex().getValues(),[0,5,10,17,26])
1475 ftest1=fmts.getFieldOnMeshAtLevel(ON_CELLS,3,4,-1,mfd.getMeshes()[0])
1476 self.assertTrue(ftest1.getArray().isEqualWithoutConsideringStr(DataArrayDouble([300.,100300.,301.,100301.,400.,100400.,401.,100401.,402.,100402.,3200.,103200.,3201.,103201.,3203.,103203.]),1e-8))
1477 self.assertEqual(ftest1.getMesh().getNodalConnectivity().getValues(),[3,0,1,2,3,3,4,5,4,6,7,8,9,4,10,11,12,13,4,14,15,16,17,5,18,19,20,21,22,5,23,24,25,26,27,5,31,32,33,34,35,36,37])
1478 self.assertEqual(ftest1.getMesh().getNodalConnectivityIndex().getValues(),[0,4,8,13,18,23,29,35,43])
1483 def testGaussWriteOnPfl1(self):
1484 fname="Pyfile49.med"
1485 fname2="Pyfile50.med"
1486 coords=DataArrayDouble([0.,0.,0.,1.,1.,1.,1.,0.,0.,0.5,0.5,1.,1.,0.5,0.5,0.],8,2)
1487 mQ8=MEDCouplingUMesh("",2) ; mQ8.setCoords(coords)
1488 mQ8.allocateCells(1)
1489 mQ8.insertNextCell(NORM_QUAD8,range(8))
1490 mQ8.finishInsertingCells()
1491 mQ4=MEDCouplingUMesh("",2) ; mQ4.setCoords(coords)
1492 mQ4.allocateCells(1)
1493 mQ4.insertNextCell(NORM_QUAD4,range(4))
1494 mQ4.finishInsertingCells()
1495 mT3=MEDCouplingUMesh("",2) ; mT3.setCoords(coords)
1496 mT3.allocateCells(1)
1497 mT3.insertNextCell(NORM_TRI3,range(3))
1498 mT3.finishInsertingCells()
1500 tr=[[0.,4.],[2.,4.],[4.,4.],[6.,4.],[8.,4.],[10.,4.],[12.,4.],[14.,4.],[16.,4.],[18.,4.],[20.,4.],[0.,0.],[2.,0.], [0.,2.],[2.,2.],[4.,2.],[6.,2.],[8.,2.],[10.,2.],[12.,2.]]
1501 ms=11*[mT3]+2*[mQ4]+7*[mQ8]
1502 ms[:]=(elt.deepCpy() for elt in ms)
1503 for m,t in zip(ms,tr):
1504 d=m.getCoords() ; d+= t
1506 m=MEDCouplingUMesh.MergeUMeshes(ms)
1508 m2=m[:13] ; m2.setName(m.getName())
1509 ### Use case 1 : Pfl on all tri3 and on all quad4. If we were on CELLS or GAUSS_NE no pfl were needed. But here 2 discs in tri3.
1510 ### So here 2 pfls will be created (pfl_TRI3_loc_0 and pfl_TRI3_loc_1)
1511 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1514 da=DataArrayDouble(34) ; da.iota(3.)
1516 f.setName("fieldCellOnPflWithoutPfl")
1517 fInvalid=f.deepCpy()
1518 f.setGaussLocalizationOnCells([0,1,2,3,4,5,6,7,8],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1519 f.setGaussLocalizationOnCells([9,10],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.07,0.13])
1520 f.setGaussLocalizationOnCells([11,12],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8],[0.8,0.07,0.1,0.01,0.02])
1522 fInvalid2=fInvalid.deepCpy()
1523 fInvalid2.getDiscretization().setArrayOfDiscIds(f.getDiscretization().getArrayOfDiscIds())
1526 mm.setMeshAtLevel(0,m)
1529 f1ts=MEDFileField1TS.New()
1530 pfl=DataArrayInt(range(13)) ; pfl.setName("pfl")
1531 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid,mm,0,pfl) # fails because no Gauss localization per cell set !
1532 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,fInvalid2,mm,0,pfl) # fails because no Gauss localization set whereas gauss locid per cell given !
1533 f1ts.setFieldProfile(f,mm,0,pfl)
1536 self.assertEqual(f1ts.getPfls(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1537 self.assertEqual(f1ts.getPflsReallyUsed(),('pfl_NORM_TRI3_loc_0', 'pfl_NORM_TRI3_loc_1'))
1538 da1=DataArrayInt([0,1,2,3,4,5,6,7,8]) ; da1.setName("pfl_NORM_TRI3_loc_0")
1539 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_0").isEqual(da1))
1540 da1=DataArrayInt([9,10]) ; da1.setName("pfl_NORM_TRI3_loc_1")
1541 self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3_loc_1").isEqual(da1))
1542 self.assertEqual(f1ts.getLocs(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1543 self.assertEqual(f1ts.getLocsReallyUsed(),('Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0', 'Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1', 'Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2'))
1545 dataRead=MEDFileData.New(fname)
1546 mRead=dataRead.getMeshes()[0]
1547 f1tsRead=dataRead.getFields()[0][0]
1548 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1549 f2=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1550 self.assertTrue(f.isEqual(f2,1e-12,1e-12))
1551 f2_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1552 f2_bis.checkCoherency()
1553 self.assertTrue(f.isEqual(f2_bis,1e-12,1e-12))
1555 MEDLoader.WriteField(fname2,f,True)
1556 f2_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1557 self.assertTrue(f.isEqual(f2_ter,1e-12,1e-12))
1558 ## Use case 2 : Pfl on part tri3 with 2 disc and on part quad8 with 1 disc
1559 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1560 pfl=DataArrayInt([1,2,5,6,8,9,15,16,17,18]) ; pfl.setName("pfl2")
1561 m2=m[pfl] ; m2.setName(m.getName())
1564 da=DataArrayDouble(35) ; da.iota(3.)
1566 f.setName("fieldCellOnPflWithoutPfl2")
1567 f.setGaussLocalizationOnCells([0,1,3],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1568 f.setGaussLocalizationOnCells([2,4,5],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.07,0.13])
1569 f.setGaussLocalizationOnCells([6,7,8,9],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8],[0.8,0.07,0.1,0.01,0.02])
1573 mm.setMeshAtLevel(0,m)
1575 f1ts=MEDFileField1TS.New()
1576 f1ts.setFieldProfile(f,mm,0,pfl)
1577 self.assertEqual(f1ts.getPfls(),('pfl2_NORM_TRI3_loc_0','pfl2_NORM_TRI3_loc_1','pfl2_NORM_QUAD8_loc_2'))
1578 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_0").getValues(),[1,2,6])
1579 self.assertEqual(f1ts.getProfile("pfl2_NORM_TRI3_loc_1").getValues(),[5,8,9])
1580 self.assertEqual(f1ts.getProfile("pfl2_NORM_QUAD8_loc_2").getValues(),[2,3,4,5])
1582 dataRead=MEDFileData.New(fname)
1583 mRead=dataRead.getMeshes()[0]
1584 f1tsRead=dataRead.getFields()[0][0]
1585 f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1586 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1587 f3.renumberCells([0,1,3,2,4,5,6,7,8,9])
1588 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1589 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1590 f3_bis.renumberCells([0,1,3,2,4,5,6,7,8,9])
1591 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1593 MEDLoader.WriteField(fname2,f,True)
1594 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1595 f3_ter.renumberCells([0,1,3,2,4,5,6,7,8,9])
1596 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1597 ## Use case 3 : no pfl but creation of pfls due to gauss pts
1598 f=MEDCouplingFieldDouble.New(ON_GAUSS_PT,ONE_TIME)
1601 da=DataArrayDouble(60) ; da.iota(3.)
1603 f.setName("fieldCellWithoutPfl")
1604 f.setGaussLocalizationOnCells([0,1,2,3,4,5,6,7,8],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7],[0.8,0.2])
1605 f.setGaussLocalizationOnCells([9,10],[0.,0.,1.,0.,1.,1.],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.07,0.13])
1606 f.setGaussLocalizationOnCells([11,12],[0.,0.,1.,0.,1.,1.,0.,1.],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8,0.8,0.8],[0.8,0.07,0.1,0.01,0.02])
1607 f.setGaussLocalizationOnCells([13,14,15,17,18],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.8,0.8,0.8,0.8],[0.8,0.1,0.03,0.07])
1608 f.setGaussLocalizationOnCells([16,19],[0.,0.,1.,0.,1.,1.,0.,1.,0.5,0.,1.,0.5,0.5,1.,0.,0.5],[0.3,0.3,0.7,0.7,0.8,0.8],[0.8,0.1,0.1])
1611 mm.setMeshAtLevel(0,m)
1612 f1ts=MEDFileField1TS.New()
1613 f1ts.setFieldNoProfileSBT(f)
1614 self.assertEqual(f1ts.getPfls(),('Pfl_fieldCellWithoutPfl_NORM_TRI3_0','Pfl_fieldCellWithoutPfl_NORM_TRI3_1','Pfl_fieldCellWithoutPfl_NORM_QUAD8_3','Pfl_fieldCellWithoutPfl_NORM_QUAD8_4'))
1615 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_0").getValues(),[0,1,2,3,4,5,6,7,8])
1616 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_TRI3_1").getValues(),[9,10])
1617 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_3").getValues(),[0,1,2,4,5])
1618 self.assertEqual(f1ts.getProfile("Pfl_fieldCellWithoutPfl_NORM_QUAD8_4").getValues(),[3,6])
1622 dataRead=MEDFileData.New(fname)
1623 mRead=dataRead.getMeshes()[0]
1624 f1tsRead=dataRead.getFields()[0][0]
1625 f3=f1tsRead.getFieldOnMeshAtLevel(ON_GAUSS_PT,0,mRead)
1626 f3.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1627 self.assertTrue(f.isEqual(f3,1e-12,1e-12))
1628 f3_bis=MEDLoader.ReadFieldGauss(fname,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1629 f3_bis.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1630 self.assertTrue(f.isEqual(f3_bis,1e-12,1e-12))
1632 MEDLoader.WriteField(fname2,f,True)
1633 f3_ter=MEDLoader.ReadFieldGauss(fname2,m.getName(),0,f.getName(),f.getTime()[1],f.getTime()[2])
1634 f3_ter.renumberCells([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,16,19])
1635 self.assertTrue(f.isEqual(f3_ter,1e-12,1e-12))
1638 # Testing profile on nodes when the profile is identity but not on all nodes.
1639 def testMEDFieldPflOnNode1(self):
1640 fname="Pyfile51.med"
1641 coo=DataArrayDouble([0.,0.,0.5,0.,1.,0.,0.,0.5,0.5,0.5,1.,0.5,0.,1.,0.5,1.,1.,1.],9,2)
1642 m0=MEDCouplingUMesh("Mesh",2)
1644 m0.insertNextCell(NORM_TRI3,[1,4,2])
1645 m0.insertNextCell(NORM_TRI3,[4,5,2])
1646 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1647 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1648 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1649 m0.finishInsertingCells()
1651 m1=MEDCouplingUMesh(m0.getName(),1)
1653 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1655 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1657 m1.finishInsertingCells()
1661 m.setMeshAtLevel(0,m0)
1662 m.setMeshAtLevel(-1,m1)
1664 dt=3 ; it=2 ; tim=4.5
1665 fieldNode0=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1666 fieldNode0.setName("fieldNode0")
1667 fieldNode0.setTime(tim,dt,it)
1668 pfl0=DataArrayInt([0,1,2,3,4]) ; pfl0.setName("PflIdentity0") # important to keep like that
1669 arr=DataArrayDouble([10,11,12,13,14])
1670 fieldNode0.setArray(arr)
1671 f0=MEDFileField1TS()
1672 f0.setFieldProfile(fieldNode0,m,0,pfl0)
1673 m.write(fname,2) ; f0.write(fname,0)
1674 fieldNode1=MEDCouplingFieldDouble(ON_NODES,ONE_TIME)
1675 fieldNode1.setName("fieldNode1")
1676 fieldNode1.setTime(tim,dt,it)
1677 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1678 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1679 fieldNode1.setArray(arr1)
1680 f1=MEDFileField1TS()
1681 f1.setFieldProfile(fieldNode1,m,-1,pfl1)
1684 ## Reading from file
1685 m=MEDFileMesh.New(fname)
1686 m0=m.getMeshAtLevel(0)
1687 m00=m0.deepCpy() ; m00=m00[[0,2]] ; m00.setName(m.getName()) ; m00.zipCoords()
1688 fieldNode0.setMesh(m00)
1689 f0=MEDFileField1TS.New(fname,fieldNode0.getName(),dt,it)
1690 ff0_1=f0.getFieldOnMeshAtLevel(ON_NODES,m0)
1691 ff0_1.checkCoherency()
1692 self.assertTrue(ff0_1.isEqual(fieldNode0,1e-12,1e-12))
1693 ff0_2=f0.getFieldAtLevel(ON_NODES,0)
1694 ff0_2.checkCoherency()
1695 self.assertTrue(ff0_2.isEqual(fieldNode0,1e-12,1e-12))
1696 ff0_3=f0.getFieldOnMeshAtLevel(ON_NODES,0,m)
1697 ff0_3.checkCoherency()
1698 self.assertTrue(ff0_3.isEqual(fieldNode0,1e-12,1e-12))
1699 ff0_4=MEDLoader.ReadFieldNode(fname,m.getName(),0,fieldNode0.getName(),dt,it)
1700 ff0_4.checkCoherency()
1701 self.assertTrue(ff0_4.isEqual(fieldNode0,1e-12,1e-12))
1702 f1=MEDFileField1TS.New(fname,fieldNode1.getName(),dt,it)
1703 m1=m.getMeshAtLevel(-1)
1704 m10=m1.deepCpy() ; m10=m10[[0,1,2,3,4,5,6,7]] ; m10.setName(m.getName()) ; m10.zipCoords()
1705 fieldNode1.setMesh(m10)
1706 ff1_1=f1.getFieldOnMeshAtLevel(ON_NODES,m1)
1707 ff1_1.checkCoherency()
1708 self.assertTrue(ff1_1.isEqual(fieldNode1,1e-12,1e-12))
1709 ff1_2=f1.getFieldAtLevel(ON_NODES,-1)
1710 ff1_2.checkCoherency()
1711 self.assertTrue(ff1_2.isEqual(fieldNode1,1e-12,1e-12))
1712 ff1_3=f1.getFieldOnMeshAtLevel(ON_NODES,-1,m)
1713 ff1_3.checkCoherency()
1714 self.assertTrue(ff1_3.isEqual(fieldNode1,1e-12,1e-12))
1715 ff1_4=MEDLoader.ReadFieldNode(fname,m.getName(),-1,fieldNode1.getName(),dt,it)
1716 ff1_4.checkCoherency()
1717 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1718 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_NODES,m0) # error because impossible to build a sub mesh at level 0 lying on nodes [0,1,2,3,4,5,6]
1719 self.assertRaises(InterpKernelException,f1.getFieldAtLevel,ON_NODES,0) # error because impossible to build a sub mesh at level 0 lying on nodes [0,1,2,3,4,5,6]
1720 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_NODES,0,m) # error because impossible to build a sub mesh at level 0 lying on nodes [0,1,2,3,4,5,6]
1721 arr_r,pfl1_r=f1.getFieldWithProfile(ON_NODES,-1,m)
1722 arr_r.setName(fieldNode1.getArray().getName())
1723 self.assertTrue(arr_r.isEqual(fieldNode1.getArray(),1e-12))
1724 pfl1_r.setName(pfl1.getName())
1725 self.assertTrue(pfl1_r.isEqual(pfl1))
1728 # Testing profile on nodes when the profile is identity but not on all nodes.
1729 def testMEDFieldPflOnCell1(self):
1730 fname="Pyfile52.med"
1731 coo=DataArrayDouble([0.,0.,0.5,0.,1.,0.,0.,0.5,0.5,0.5,1.,0.5,0.,1.,0.5,1.,1.,1.],9,2)
1732 m0=MEDCouplingUMesh("Mesh",2)
1734 m0.insertNextCell(NORM_TRI3,[1,4,2])
1735 m0.insertNextCell(NORM_TRI3,[4,5,2])
1736 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
1737 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
1738 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
1739 m0.finishInsertingCells()
1741 m1=MEDCouplingUMesh(m0.getName(),1)
1743 conn1=[0,1,0,3,3,4,4,1,5,4,2,4,1,2,3,6,5,8]
1745 m1.insertNextCell(NORM_SEG2,conn1[2*i:2*i+2])
1747 m1.finishInsertingCells()
1751 m.setMeshAtLevel(0,m0)
1752 m.setMeshAtLevel(-1,m1)
1754 dt=3 ; it=2 ; tim=4.5
1755 fieldCell0=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1756 fieldCell0.setName("fieldCell0")
1757 fieldCell0.setTime(tim,dt,it)
1758 pfl0=DataArrayInt([0,1,2]) ; pfl0.setName("PflIdentity0") # important to keep like that
1759 arr=DataArrayDouble([10,11,12])
1760 fieldCell0.setArray(arr)
1761 f0=MEDFileField1TS()
1762 f0.setFieldProfile(fieldCell0,m,0,pfl0)
1763 m.write(fname,2) ; f0.write(fname,0)
1764 fieldCell1=MEDCouplingFieldDouble(ON_CELLS,ONE_TIME)
1765 fieldCell1.setName("fieldCell1")
1766 fieldCell1.setTime(tim,dt,it)
1767 pfl1=DataArrayInt([0,1,2,3,4,5,6]) ; pfl1.setName("PflIdentity1")
1768 arr1=DataArrayDouble([20,21,22,23,24,25,26])
1769 fieldCell1.setArray(arr1)
1770 f1=MEDFileField1TS()
1771 f1.setFieldProfile(fieldCell1,m,-1,pfl1)
1774 ## Reading from file
1775 m=MEDFileMesh.New(fname)
1776 m0=m.getMeshAtLevel(0)
1777 m00=m0.deepCpy() ; m00=m00[pfl0] ; m00.setName(m.getName())
1778 fieldCell0.setMesh(m00)
1779 f0=MEDFileField1TS.New(fname,fieldCell0.getName(),dt,it)
1780 ff0_1=f0.getFieldOnMeshAtLevel(ON_CELLS,m0)
1781 ff0_1.checkCoherency()
1782 self.assertTrue(ff0_1.isEqual(fieldCell0,1e-12,1e-12))
1783 ff0_2=f0.getFieldAtLevel(ON_CELLS,0)
1784 ff0_2.checkCoherency()
1785 self.assertTrue(ff0_2.isEqual(fieldCell0,1e-12,1e-12))
1786 ff0_3=f0.getFieldOnMeshAtLevel(ON_CELLS,0,m)
1787 ff0_3.checkCoherency()
1788 self.assertTrue(ff0_3.isEqual(fieldCell0,1e-12,1e-12))
1789 ff0_4=MEDLoader.ReadFieldCell(fname,m.getName(),0,fieldCell0.getName(),dt,it)
1790 ff0_4.checkCoherency()
1791 self.assertTrue(ff0_4.isEqual(fieldCell0,1e-12,1e-12))
1792 f1=MEDFileField1TS.New(fname,fieldCell1.getName(),dt,it)
1793 m1=m.getMeshAtLevel(-1)
1794 m10=m1.deepCpy() ; m10=m10[pfl1] ; m10.setName(m.getName())
1795 fieldCell1.setMesh(m10)
1796 ff1_1=f1.getFieldOnMeshAtLevel(ON_CELLS,m1)
1797 ff1_1.checkCoherency()
1798 self.assertTrue(ff1_1.isEqual(fieldCell1,1e-12,1e-12))
1799 ff1_2=f1.getFieldAtLevel(ON_CELLS,-1)
1800 ff1_2.checkCoherency()
1801 self.assertTrue(ff1_2.isEqual(fieldCell1,1e-12,1e-12))
1802 ff1_3=f1.getFieldOnMeshAtLevel(ON_CELLS,-1,m)
1803 ff1_3.checkCoherency()
1804 self.assertTrue(ff1_3.isEqual(fieldCell1,1e-12,1e-12))
1805 ff1_4=MEDLoader.ReadFieldCell(fname,m.getName(),-1,fieldCell1.getName(),dt,it)
1806 ff1_4.checkCoherency()
1807 self.assertTrue(ff1_4.getMesh().isEqual(m10,1e-12))
1808 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_CELLS,m0) # error because impossible to build a sub mesh at level 0 lying on cells [0,1,2,3,4,5,6]
1809 self.assertRaises(InterpKernelException,f1.getFieldAtLevel,ON_CELLS,0) # error because impossible to build a sub mesh at level 0 lying on cells [0,1,2,3,4,5,6]
1810 self.assertRaises(InterpKernelException,f1.getFieldOnMeshAtLevel,ON_CELLS,0,m) # error because impossible to build a sub mesh at level 0 lying on cells [0,1,2,3,4,5,6]
1811 arr_r,pfl1_r=f1.getFieldWithProfile(ON_CELLS,-1,m)
1812 arr_r.setName(fieldCell1.getArray().getName())
1813 self.assertTrue(arr_r.isEqual(fieldCell1.getArray(),1e-12))
1814 pfl1_r.setName(pfl1.getName())
1815 self.assertTrue(pfl1_r.isEqual(pfl1))
1818 def testMEDFileUMeshZipCoords1(self):
1820 coo=DataArrayDouble(30) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1821 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0) ; m0.insertNextCell(NORM_TRI3,[1,2,3]) ; m0.insertNextCell(NORM_QUAD4,[2,4,3,4]) ; m0.insertNextCell(NORM_POLYGON,[1,6,6,6,2])
1822 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1823 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1824 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1825 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1826 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1827 numCoo=DataArrayInt(10) ; numCoo.iota(3) ; m.setRenumFieldArr(1,numCoo)
1828 famCoo=DataArrayInt(10) ; famCoo.iota(4) ; m.setFamilyFieldArr(1,famCoo)
1829 da=DataArrayInt([20,30,40]) ; m.setRenumFieldArr(0,da) ; da=DataArrayInt([200,300,400]) ; m.setFamilyFieldArr(0,da)
1830 da=DataArrayInt([50,60]) ; m.setRenumFieldArr(-1,da) ; da=DataArrayInt([500,600]) ; m.setFamilyFieldArr(-1,da)
1831 da=DataArrayInt([70,80,90]) ; m.setRenumFieldArr(-2,da) ; da=DataArrayInt([700,800,900]) ; m.setFamilyFieldArr(-2,da)
1833 self.assertTrue(o2n.isEqual(DataArrayInt([-1,0,1,2,3,-1,4,5,6,-1])))
1834 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt([4,5,6,7,9,10,11])))
1835 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([5,6,7,8,10,11,12])))
1836 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivity().isEqual(DataArrayInt([3,0,1,2,4,1,3,2,3,5,0,4,4,4,1])))
1837 self.assertTrue(m.getMeshAtLevel(0).getNodalConnectivityIndex().isEqual(DataArrayInt([0,4,9,15])))
1838 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivity().isEqual(DataArrayInt([1,0,4,1,5,2])))
1839 self.assertTrue(m.getMeshAtLevel(-1).getNodalConnectivityIndex().isEqual(DataArrayInt([0,3,6])))
1840 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivity().isEqual(DataArrayInt([0,1,0,4,0,6])))
1841 self.assertTrue(m.getMeshAtLevel(-2).getNodalConnectivityIndex().isEqual(DataArrayInt([0,2,4,6])))
1844 def testMEDUMeshAddNodeGroup1(self):
1845 fname="Pyfile53.med"
1847 coo=DataArrayDouble(39) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1848 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0) ; m0.insertNextCell(NORM_TRI3,[1,2,3]) ; m0.insertNextCell(NORM_QUAD4,[2,4,3,4]) ; m0.insertNextCell(NORM_POLYGON,[1,6,6,6,2])
1849 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1850 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1851 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1852 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1853 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1856 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(1,famCoo)
1857 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(0,da0)
1858 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1859 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1860 mm.setFamilyId("MyFam",2)
1861 mm.setFamilyId("MyOtherFam",3)
1862 mm.setFamilyId("MyOther-1",-1)
1863 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1864 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1866 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1867 mm.addNodeGroup(daTest)
1868 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1869 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1870 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1871 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1873 self.assertEqual(mm.getFamiliesNames(),('Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1874 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1875 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1876 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1877 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1878 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1880 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_8'))
1881 da=DataArrayInt([3,12]) ; da.setName("grp0")
1882 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1884 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1886 mm=MEDFileMesh.New(fname)
1887 self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
1888 self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
1889 for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
1890 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1892 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_4','Family_5','Family_7','Family_8','MyFam','MyOther-1','MyOtherFam'))
1893 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1894 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1895 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1896 for famName,famId in [('Family_4',4),('Family_5',5),('Family_7',7),('Family_8',8)]:
1897 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1899 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_8','MyOtherFam'))
1900 da=DataArrayInt([3,12]) ; da.setName("grp0")
1901 self.assertTrue(mm.getGroupArr(1,"grp0").isEqual(da))
1903 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1906 def testMEDUMeshAddGroup1(self):
1907 fname="Pyfile54.med"
1909 coo=DataArrayDouble(9) ; coo.iota(1.) ; coo.rearrange(3) ; coo.setInfoOnComponents(["aaa [b]","cc [dd]", "e [fff]"])
1910 m0=MEDCouplingUMesh("toto",2) ; m0.allocateCells(0)
1912 m0.insertNextCell(NORM_TRI3,[1,2,1])
1915 m0.insertNextCell(NORM_QUAD4,[1,1,2,0])
1918 m0.insertNextCell(NORM_POLYGON,[0,0,1,1,2,2])
1920 m1=MEDCouplingUMesh("toto",1) ; m1.allocateCells(0) ; m1.insertNextCell(NORM_SEG2,[1,6]) ; m1.insertNextCell(NORM_SEG2,[7,3])
1921 m2=MEDCouplingUMesh("toto",0) ; m2.allocateCells(0) ; m2.insertNextCell(NORM_POINT1,[2]) ; m2.insertNextCell(NORM_POINT1,[6]) ; m2.insertNextCell(NORM_POINT1,[8])
1922 m0.setCoords(coo) ; m.setMeshAtLevel(0,m0)
1923 m1.setCoords(coo) ; m.setMeshAtLevel(-1,m1)
1924 m2.setCoords(coo) ; m.setMeshAtLevel(-2,m2)
1927 famCoo=DataArrayInt([0,2,0,3,2,0,-1,0,0,0,0,-1,3]) ; mm.setFamilyFieldArr(0,famCoo)
1928 da0=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(1,da0)
1929 da1=DataArrayInt([0,3]) ; mm.setFamilyFieldArr(-1,da1)
1930 da2=DataArrayInt([0,0,0]) ; mm.setFamilyFieldArr(-2,da2)
1931 mm.setFamilyId("MyFam",2)
1932 mm.setFamilyId("MyOtherFam",3)
1933 mm.setFamilyId("MyOther-1",-1)
1934 mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
1935 mm.setFamiliesOnGroup("grpA",["MyOther-1"])
1937 daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
1938 mm.addGroup(0,daTest)
1939 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1940 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1941 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1942 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1944 self.assertEqual(mm.getFamiliesNames(),('Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1945 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1946 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1947 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1948 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1949 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1951 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('MyOtherFam','Family_-8'))
1952 da=DataArrayInt([3,12]) ; da.setName("grp0")
1953 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1955 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1957 mm=MEDFileMesh.New(fname)
1958 self.assertTrue(mm.getGroupArr(0,daTest.getName()).isEqual(daTest))
1959 self.assertTrue(mm.getFamilyFieldAtLevel(0).isEqual(DataArrayInt([-6,2,-6,-8,2,-6,-5,-6,-6,-7,-7,-4,-8])))
1960 for lev,arr in [(1,da0),(-1,da1),(-2,da2)]:
1961 self.assertTrue(mm.getFamilyFieldAtLevel(lev).isEqual(arr))
1963 self.assertEqual(mm.getFamiliesNames(),('FAMILLE_ZERO','Family_-4','Family_-5','Family_-7','Family_-8','MyFam','MyOther-1','MyOtherFam'))
1964 self.assertEqual(mm.getGroupsNames(),('grp0','grp1','grpA'))
1965 self.assertEqual(mm.getFamilyNameGivenId(3),'MyOtherFam')
1966 self.assertEqual(mm.getFamilyNameGivenId(2),'MyFam')
1967 for famName,famId in [('Family_-4',-4),('Family_-5',-5),('Family_-7',-7),('Family_-8',-8)]:
1968 self.assertEqual(mm.getFamilyNameGivenId(famId),famName)
1970 self.assertEqual(mm.getFamiliesOnGroup("grp0"),('Family_-8','MyOtherFam'))
1971 da=DataArrayInt([3,12]) ; da.setName("grp0")
1972 self.assertTrue(mm.getGroupArr(0,"grp0").isEqual(da))
1974 self.assertTrue(mm.getGroupArr(-1,"grp0").isEqual(da))
1977 def testHeapMem1(self):
1978 a=DataArrayInt() ; aa=a.getHeapMemorySize()
1980 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
1982 m=MEDCouplingCMesh()
1983 arr=DataArrayDouble(10,1) ; arr.iota(0)
1984 m.setCoords(arr,arr)
1985 m=m.buildUnstructured()
1987 f=m.getMeasureField(ON_CELLS)
1988 self.assertIn(m.getHeapMemorySize(),xrange(3552-100,3552+100+4*strMulFac))
1989 self.assertIn(f.getHeapMemorySize(),xrange(4215-100,4215+100+8*strMulFac))
1992 mm.setMeshAtLevel(0,m)
1993 self.assertIn(mm.getHeapMemorySize(),xrange(3889-100,3889+100+10*strMulFac))
1994 ff=MEDFileField1TS()
1995 ff.setFieldNoProfileSBT(f)
1996 self.assertIn(ff.getHeapMemorySize(),xrange(711-40,711+21+(4+1)*strMulFac))
1998 fff=MEDFileFieldMultiTS()
1999 fff.appendFieldNoProfileSBT(f)
2000 self.assertIn(fff.getHeapMemorySize(),xrange(743-50,743+30+(6+2)*strMulFac))
2002 fff.appendFieldNoProfileSBT(f)
2003 self.assertIn(fff.getHeapMemorySize(),xrange(1462-90,1462+50+(10+1)*strMulFac))
2004 self.assertIn(fff[0,-1].getHeapMemorySize(),xrange(711-40,711+20+(4+1)*strMulFac))
2007 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2008 fff.appendFieldProfile(f2,mm,0,pfl)
2009 self.assertIn(fff.getHeapMemorySize(),xrange(2178-130,2178+100+(10+2)*strMulFac))
2010 self.assertIn(fff.getProfile("pfl_NORM_QUAD4").getHeapMemorySize(),xrange(215-10,215+10+2*strMulFac))
2011 self.assertIn(fff[1,-1].getHeapMemorySize(),xrange(700-50,700+30+4*strMulFac))
2014 def testCurveLinearMesh1(self):
2015 fname="Pyfile55.med"
2016 mesh=MEDCouplingCurveLinearMesh();
2017 mesh.setTime(2.3,4,5);
2018 mesh.setTimeUnit("us");
2019 mesh.setName("Example of Cuve linear mesh");
2020 mesh.setDescription("buildCLMesh");
2021 a1=DataArrayDouble(3*20,1);
2022 a1.iota(7.) ; a1.rearrange(3);
2024 mesh.setNodeGridStructure([4,5]);
2025 mesh.checkCoherency();
2027 m=MEDFileCurveLinearMesh()
2029 d=DataArrayInt(20) ; d.iota(4)
2030 m.setFamilyFieldArr(1,d)
2031 d3=DataArrayInt(20) ; d3.iota(400)
2032 m.setRenumFieldArr(1,d3)
2033 d2=DataArrayInt(12) ; d2.iota(40)
2034 m.setFamilyFieldArr(0,d2)
2035 d4=DataArrayInt(21) ; d4.iota(4000)
2036 self.assertRaises(InterpKernelException,m.setRenumFieldArr,1,d4)
2038 m.setRenumFieldArr(1,d4)
2041 m1=MEDFileCurveLinearMesh(fname)
2043 self.assertTrue(mm.isEqual(mesh,1e-12))
2045 m1=MEDFileMesh.New(fname)
2046 self.assertTrue(isinstance(m1,MEDFileCurveLinearMesh))
2047 self.assertTrue(isinstance(m1.getUnivName(),str))
2048 self.assertTrue(len(m1.getUnivName())!=0)
2049 self.assertTrue(m1.getMesh().isEqual(mesh,1e-12))
2052 def testParameters1(self):
2053 fname="Pyfile56.med"
2054 m=MEDCouplingCMesh() ; arr=DataArrayDouble([0.,1.2,3.5]) ; m.setCoords(arr,arr) ; m.setName("mesh")
2055 mm=MEDFileCMesh() ; mm.setMesh(m)
2056 ms=MEDFileMeshes() ; ms.pushMesh(mm)
2058 p=MEDFileParameters()
2059 data.setParams(p) ; data.setMeshes(ms)
2060 pts=MEDFileParameterMultiTS()
2061 pts.setName("A") ; pts.setDescription("An example of parameter") ; pts.setTimeUnit("ms")
2062 pts.appendValue(1,2,3.4,567.89)
2063 pts.appendValue(2,3,5.6,999.123)
2064 pts2=pts.deepCpy() ; pts2.setName("B") ; pts2.setDescription("A second example")
2065 p.pushParam(pts) ; p.pushParam(pts2)
2067 p2=MEDFileParameters(fname)
2068 self.assertTrue(p.isEqual(p2,1e-14)[0])
2069 self.assertAlmostEqual(p[1][1,2].getValue(),567.89,13)
2073 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2074 pts2.eraseTimeStepIds([0])
2075 self.assertTrue(not pts3.isEqual(pts2,1e-14)[0])
2077 self.assertTrue(pts3.isEqual(pts2,1e-14)[0])
2078 self.assertRaises(InterpKernelException,p[1].__getitem__,(1,2))
2079 self.assertRaises(InterpKernelException,p["B"].__getitem__,(1,2))
2080 self.assertAlmostEqual(p[0][1,2].getValue(),567.89,13)
2081 self.assertAlmostEqual(p["A"][1,2].getValue(),567.89,13)
2083 self.assertTrue(p.isEqual(p2,1e-14)[0])
2084 self.assertTrue(p2["B"].isEqual(pts,1e-14)[0])
2085 self.assertTrue(not p2["B"].isEqual(pts2,1e-14)[0])
2086 self.assertAlmostEqual(p2[0][1,2].getValue(),567.89,13)
2087 self.assertEqual(p.getParamsNames(),('A','B'))
2088 ptsr=MEDFileParameterMultiTS(fname,"B")
2089 self.assertTrue(ptsr.isEqual(pts4,1e-14)[0])
2090 ptsr=MEDFileParameterMultiTS(fname)
2091 self.assertTrue(ptsr.isEqual(pts,1e-14)[0])
2092 p1tsr=MEDFileParameterDouble1TS(fname)
2093 self.assertEqual(p1tsr.getName(),"A")
2094 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2095 p1tsr=MEDFileParameterDouble1TS(fname,"B")
2096 self.assertEqual(p1tsr.getName(),"B")
2097 self.assertAlmostEqual(p1tsr.getValue(),567.89,13)
2098 p1tsr=MEDFileParameterDouble1TS(fname,"B",2,3)
2099 self.assertEqual(p1tsr.getName(),"B")
2100 self.assertAlmostEqual(p1tsr.getValue(),999.123,13)
2101 data2=MEDFileData(fname)
2102 self.assertEqual(2,data2.getNumberOfParams())
2103 self.assertAlmostEqual(data2.getParams()["B"][1,2].getValue(),567.89,13)
2106 def testNamesOnCellAndNodesInMeshes1(self):
2107 fname="Pyfile58.med"
2108 fname2="Pyfile59.med"
2109 m=MEDLoaderDataForTest.build3DSurfMesh_1()
2110 m1=m.buildDescendingConnectivity()[0]
2111 m1.sortCellsInMEDFileFrmt()
2114 mm.setMeshAtLevel(0,m)
2115 mm.setMeshAtLevel(-1,m1)
2116 namesCellL0=DataArrayAsciiChar(6,16)
2117 namesCellL0[:]=["CellL0#%.3d "%(i) for i in xrange(6)]
2118 mm.setNameFieldAtLevel(0,namesCellL0)
2119 namesCellL1=DataArrayAsciiChar.Aggregate([namesCellL0,namesCellL0,namesCellL0.substr(2)])
2120 namesCellL1[:]=["CellLM1#%.3d "%(i) for i in xrange(16)]
2121 mm.setNameFieldAtLevel(-1,namesCellL1)
2122 namesNodes=namesCellL1.substr(4,16)
2123 namesNodes[:]=["Node#%.3d "%(i) for i in xrange(12)]
2124 mm.setNameFieldAtLevel(1,namesNodes)
2127 mmr=MEDFileMesh.New(fname)
2128 self.assertTrue(mm.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2129 self.assertTrue(mm.getNameFieldAtLevel(-1).isEqual(DataArrayAsciiChar(["CellLM1#%.3d "%(i) for i in xrange(16)])))
2130 self.assertTrue(mm.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(12)])))
2131 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2132 mmr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2133 self.assertTrue(not mm.isEqual(mmr,1e-12)[0])
2134 mmr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2135 self.assertTrue(mm.isEqual(mmr,1e-12)[0])
2137 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2138 # remove names on nodes
2139 mmCpy.setNameFieldAtLevel(1,None)
2140 self.assertTrue(not mm.isEqual(mmCpy,1e-12)[0])
2141 mm.setNameFieldAtLevel(1,None)
2142 self.assertTrue(mm.isEqual(mmCpy,1e-12)[0])
2143 mm.setNameFieldAtLevel(-1,None)
2145 mmr=MEDFileMesh.New(fname)
2146 self.assertEqual(mmr.getNameFieldAtLevel(1),None)
2147 self.assertTrue(mmr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["CellL0#%.3d "%(i) for i in xrange(6)])))
2148 self.assertEqual(mmr.getNameFieldAtLevel(-1),None)
2150 c=MEDCouplingCMesh()
2151 arr=DataArrayDouble([0.,1.1,2.3])
2152 c.setCoords(arr,arr)
2156 cc.setNameFieldAtLevel(0,DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)]))
2157 cc.setNameFieldAtLevel(1,DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)]))
2159 ccr=MEDFileMesh.New(fname2)
2160 self.assertTrue(ccr.getNameFieldAtLevel(0).isEqual(DataArrayAsciiChar(["Cell#%.3d "%(i) for i in xrange(4)])))
2161 self.assertTrue(ccr.getNameFieldAtLevel(1).isEqual(DataArrayAsciiChar(["Node#%.3d "%(i) for i in xrange(9)])))
2162 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2163 ccr.getNameFieldAtLevel(1).setIJ(0,0,'M')
2164 self.assertTrue(not cc.isEqual(ccr,1e-12)[0])
2165 ccr.getNameFieldAtLevel(1).setIJ(0,0,'N')
2166 self.assertTrue(cc.isEqual(ccr,1e-12)[0])
2168 self.assertTrue(cc.isEqual(ccCpy,1e-12)[0])
2171 def testToExportInExamples1(self):
2172 m=MEDCouplingCMesh()
2173 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2174 m.setCoords(arr,arr)
2175 m=m.buildUnstructured() ; m.setName("mesh")
2176 grp1=DataArrayInt([0,1,2,4,5,6,8,9,10,12,13,14]) ; grp1.setName("grp1")
2177 grp2=DataArrayInt([3,7,11,15]) ; grp2.setName("grp2")
2180 mm.setMeshAtLevel(0,m)
2181 mm.setMeshAtLevel(-1,m2)
2182 mm.setGroupsAtLevel(0,[grp1,grp2])
2183 mm.write("example.med",2)
2185 m0=mm.getMeshAtLevel(0)
2186 m1=mm.getMeshAtLevel(-1)
2187 grp1=mm.getGroupArr(0,"grp1")
2188 grp2=mm.getGroupArr(0,"grp2")
2190 whichGrp=DataArrayInt(m0.getNumberOfCells())
2191 whichGrp.fillWithValue(-1)
2192 for grpId,grp in enumerate(grps):
2195 a,b,bI,c,cI=m0.buildDescendingConnectivity()
2196 e,f=a.areCellsIncludedIn(m1,2)
2198 c2,c2I=MEDCouplingUMesh.ExtractFromIndexedArrays(f,c,cI)
2199 self.assertTrue(c2I.deltaShiftIndex().isUniform(1))
2200 c2.transformWithIndArr(whichGrp)
2201 splitOfM1=len(grps)*[None]
2202 for grpId,grp in enumerate(grps):
2203 tmp=c2.getIdsEqual(grpId)
2204 splitOfM1[grpId]=tmp
2206 splitOfM1[0].isEqual(DataArrayInt([0,1,2,3,6,8,10,11,12,13]))
2207 splitOfM1[1].isEqual(DataArrayInt([4,5,7,9,14,15]))
2210 def testBugCorrection1(self):
2213 self.assertEqual(fs[0],None)
2214 self.assertEqual(3,len(fs))
2217 def testCompareMEDFilesContainingOnlyFieldsOnCell1(self):
2218 f1Name="Pyfile60.med"
2219 f2Name="Pyfile61.med"
2220 d1=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2222 d2=MEDLoaderDataForTest.buildACompleteMEDDataStructureWithFieldsOnCells_1()
2224 # reading and compare
2225 d1=MEDFileData(f1Name) ; d2=MEDFileData(f2Name)
2226 for mn in d1.getMeshes().getMeshesNames():
2227 m1=d1.getMeshes()[mn]
2228 m2=d2.getMeshes()[mn]
2229 for lev in m1.getNonEmptyLevels():
2230 grpsNames=m1.getGroupsOnSpecifiedLev(lev)
2231 for grpName in grpsNames:
2232 self.assertTrue(m1.getGroupArr(lev,grpName).isEqual(m2.getGroupArr(lev,grpName))) # compare groups
2236 for fieldn in d1.getFields().getFieldsNames():
2237 f1=d1.getFields()[fieldn]
2238 f2=d2.getFields()[fieldn]
2239 for it,order,tim in f1.getTimeSteps():
2242 if len(f1t.getPflsReallyUsed())!=0:
2244 for lev in f1t.getNonEmptyLevels()[1]:
2245 arr1,pfl1=f1t.getFieldWithProfile(ON_CELLS,lev,m1)
2246 arr2,pfl2=f2t.getFieldWithProfile(ON_CELLS,lev,m2)
2247 self.assertTrue(pfl1.isEqual(pfl2))
2248 self.assertTrue(arr1.isEqual(arr2,1e-10))
2253 for lev in f1t.getNonEmptyLevels()[1]:
2254 f1mc=f1t.getFieldOnMeshAtLevel(ON_CELLS,lev,m1)
2255 f2mc=f2t.getFieldOnMeshAtLevel(ON_CELLS,lev,m2)
2256 self.assertTrue(f1mc.isEqual(f2mc,1e-10,1e-10))
2263 def testNonRegBugNormalizeFamIdsMEDFile1(self):
2264 m=MEDCouplingCMesh()
2265 arr=DataArrayDouble([0.,1.,2.,3.,4.])
2266 m.setCoords(arr,arr,arr)
2267 m=m.buildUnstructured()
2268 m2=m.buildDescendingConnectivity()[0]
2270 g1=DataArrayInt([0,1,2,3]) ; g1.setName("g1")
2271 g2=DataArrayInt([2,3,5,6]) ; g2.setName("g2")
2272 g1Face=DataArrayInt([20,21,22,23]) ; g1Face.setName("g1Face")
2273 g2Face=DataArrayInt([22,23,25,26]) ; g2Face.setName("g2Face")
2274 g1Node=DataArrayInt([10,11,12,13]) ; g1Node.setName("g1Node")
2275 g2Node=DataArrayInt([12,13,15,16]) ; g2Node.setName("g2Node")
2277 mm.setMeshAtLevel(0,m)
2278 mm.setGroupsAtLevel(0,[g1,g2])
2279 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2280 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2281 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2282 mm.normalizeFamIdsMEDFile()
2283 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2284 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2285 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2286 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2287 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2288 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2289 for g in mm.getGroupsOnSpecifiedLev(0):
2290 for f in mm.getFamiliesIdsOnGroup(g):
2291 self.assertTrue(f<0)
2296 mm.setMeshAtLevel(0,m)
2297 mm.setMeshAtLevel(-1,m2)
2298 mm.setGroupsAtLevel(0,[g1,g2])
2299 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2300 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2301 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2302 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2303 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2304 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2305 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2306 mm.normalizeFamIdsMEDFile()
2307 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2308 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2309 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2310 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2311 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2312 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2313 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2314 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2315 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2316 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2317 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2318 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2320 for g in mm.getGroupsOnSpecifiedLev(lev):
2321 for f in mm.getFamiliesIdsOnGroup(g):
2322 self.assertTrue(f<0)
2328 mm.setMeshAtLevel(0,m)
2329 mm.setMeshAtLevel(-1,m2)
2330 mm.setGroupsAtLevel(0,[g1,g2])
2331 mm.setGroupsAtLevel(-1,[g1Face,g2Face])
2332 mm.setGroupsAtLevel(1,[g1Node,g2Node])
2333 s1=set(mm.getFamiliesOnGroup("g1")) ; s2=set(mm.getFamiliesOnGroup("g2"))
2334 s3=set(mm.getFamiliesOnGroup("g1Face")) ; s4=set(mm.getFamiliesOnGroup("g2Face"))
2335 s5=set(mm.getFamiliesOnGroup("g1Node")) ; s6=set(mm.getFamiliesOnGroup("g2Node"))
2336 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2337 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2338 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2339 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2340 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2341 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2342 mm.normalizeFamIdsMEDFile()
2343 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1"),(0,))
2344 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2"),(0,))
2345 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Face"),(-1,))
2346 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Face"),(-1,))
2347 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g1Node"),(1,))
2348 self.assertEqual(mm.getGrpNonEmptyLevelsExt("g2Node"),(1,))
2349 self.assertTrue(mm.getGroupArr(0,"g1").isEqual(g1))
2350 self.assertTrue(mm.getGroupArr(0,"g2").isEqual(g2))
2351 self.assertTrue(mm.getGroupArr(-1,"g1Face").isEqual(g1Face))
2352 self.assertTrue(mm.getGroupArr(-1,"g2Face").isEqual(g2Face))
2353 self.assertTrue(mm.getGroupArr(1,"g1Node").isEqual(g1Node))
2354 self.assertTrue(mm.getGroupArr(1,"g2Node").isEqual(g2Node))
2355 self.assertEqual(s1,set(mm.getFamiliesOnGroup("g1")))
2356 self.assertEqual(s2,set(mm.getFamiliesOnGroup("g2")))
2357 self.assertEqual(s3,set(mm.getFamiliesOnGroup("g1Face")))
2358 self.assertEqual(s4,set(mm.getFamiliesOnGroup("g2Face")))
2359 self.assertEqual(s5,set(mm.getFamiliesOnGroup("g1Node")))
2360 self.assertEqual(s6,set(mm.getFamiliesOnGroup("g2Node")))
2362 for g in mm.getGroupsOnSpecifiedLev(lev):
2363 for f in mm.getFamiliesIdsOnGroup(g):
2364 self.assertTrue(f<0)
2368 for g in mm.getGroupsOnSpecifiedLev(1):
2369 for f in mm.getFamiliesIdsOnGroup(g):
2370 self.assertTrue(f>0)
2375 def testNonRegressionMantis22212ChangeGrpName(self):
2376 fileName="Pyfile62.med"
2377 m2,m1,m0,f2,f1,f0,p,n2,n1,n0,fns,fids,grpns,famIdsPerGrp=MEDLoaderDataForTest.buildMultiLevelMesh_1()
2378 m=MEDFileUMesh.New()
2379 m.setCoords(m2.getCoords())
2380 m.setMeshAtLevel(0,m2)
2381 m.setMeshAtLevel(-1,m1)
2382 m.setMeshAtLevel(-2,m0)
2383 m.setFamilyFieldArr(0,f2)
2384 m.setFamilyFieldArr(-1,f1)
2385 m.setFamilyFieldArr(-2,f0)
2386 m.setFamilyFieldArr(1,p)
2388 for i in xrange(nbOfFams):
2389 m.addFamily(fns[i],fids[i])
2392 for i in xrange(nbOfGrps):
2393 m.setFamiliesIdsOnGroup(grpns[i],famIdsPerGrp[i])
2395 m.setName(m2.getName())
2396 m.setDescription(m2.getDescription())
2399 mm0=MEDFileMesh.New(fileName)
2400 mm1=MEDFileMesh.New(fileName)
2401 groupNamesIni=MEDLoader.GetMeshGroupsNames(fileName,"ma")
2402 for name in groupNamesIni:
2403 mm1.changeGroupName(name,name+'N')
2405 mm1.write(fileName,2)
2408 mm2=MEDFileMesh.New(fileName)
2409 for name in groupNamesIni:
2410 for lev in mm0.getGrpNonEmptyLevelsExt(name):
2411 arr0=mm0.getGroupArr(lev,name)
2412 arr2=mm2.getGroupArr(lev,name+'N')
2413 arr0.setName(name+'N')
2414 self.assertTrue(arr0.isEqual(arr2))
2419 def testInt32InMEDFileFieldStar1(self):
2420 fname="Pyfile63.med"
2421 f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
2422 arr=f1.getArray().convertToIntArr()
2425 mm1=MEDFileUMesh.New()
2426 mm1.setCoords(m1.getCoords())
2427 mm1.setMeshAtLevel(0,m1)
2428 mm1.setName(m1.getName())
2430 ff1=MEDFileIntField1TS()
2431 ff1.setFieldNoProfileSBT(f1,arr)
2432 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2433 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2434 self.assertTrue(b.isEqual(arr))
2435 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2437 ff2=MEDFileAnyTypeField1TS.New(fname)
2438 self.assertEqual(ff2.getName(),"VectorFieldOnCells")
2439 self.assertEqual(ff2.getTime(),[0,1,2.0])
2440 self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
2441 a,b=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2442 self.assertEqual(b.getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2443 self.assertTrue(b.isEqual(arr))
2444 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2446 c=ff2.getUndergroundDataArray() ; c*=2
2447 ff2.write(fname,0) # 2 time steps in
2448 ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
2449 self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
2450 self.assertEqual(len(ffs1),2)
2451 self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
2452 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2453 self.assertTrue(b.isEqual(arr))
2454 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2455 a,b=ffs1[2.].getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2456 self.assertTrue(b.isEqual(arr))
2457 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2458 it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
2459 a,b=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2460 self.assertTrue(b.isEqual(2*arr))
2462 self.assertTrue(a.isEqual(f1,1e-12,1e-12))
2463 bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
2465 a,b=it.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
2468 self.assertTrue(bc.isEqual(3*arr))
2469 nf1=MEDCouplingFieldDouble(ON_NODES)
2470 nf1.setTime(9.,10,-1)
2471 nf1.setMesh(f1.getMesh())
2472 narr=DataArrayInt(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=range(12) ; narr[:,1]=2*narr[:,0]
2473 nf1.setName("VectorFieldOnNodes")
2474 nff1=MEDFileIntField1TS.New()
2475 nff1.setFieldNoProfileSBT(nf1,narr)
2476 self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
2477 self.assertEqual(nff1.getTime(),[10,-1,9.0])
2480 nf2=MEDCouplingFieldDouble(ON_NODES)
2481 nf2.setTime(19.,20,-11)
2482 nf2.setMesh(f1.getMesh())
2483 narr2=DataArrayInt(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=range(8) ; narr2[:,0]+=10 ; narr2[:,1]=3*narr2[:,0]
2484 nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName())
2485 nff2=MEDFileIntField1TS.New()
2486 npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
2487 nff2.setFieldProfile(nf2,narr2,mm1,0,npfl)
2488 nff2.getFieldWithProfile(ON_NODES,0,mm1)
2489 a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2490 self.assertTrue(b.isEqual(npfl))
2491 self.assertTrue(a.isEqual(narr2))
2493 nff2bis=MEDFileIntField1TS(fname,"VectorFieldOnNodesPfl")
2494 a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
2495 self.assertTrue(b.isEqual(npfl))
2496 self.assertTrue(a.isEqual(narr2))
2498 nf3=MEDCouplingFieldDouble(ON_NODES)
2499 nf3.setName("VectorFieldOnNodesDouble")
2500 nf3.setTime(29.,30,-21)
2501 nf3.setMesh(f1.getMesh())
2502 nf3.setArray(f1.getMesh().getCoords())
2503 nff3=MEDFileField1TS.New()
2504 nff3.setFieldNoProfileSBT(nf3)
2506 fs=MEDFileFields(fname)
2507 self.assertEqual(len(fs),4)
2508 ffs=[it for it in fs]
2509 self.assertTrue(isinstance(ffs[0],MEDFileIntFieldMultiTS))
2510 self.assertTrue(isinstance(ffs[1],MEDFileIntFieldMultiTS))
2511 self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
2512 self.assertTrue(isinstance(ffs[3],MEDFileIntFieldMultiTS))
2514 self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(arr))
2515 self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*arr))
2516 self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2))
2517 self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr))
2518 self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2520 nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
2521 self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
2522 self.assertRaises(InterpKernelException,MEDFileIntFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
2523 self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
2524 MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
2525 self.assertRaises(InterpKernelException,MEDFileIntField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
2526 MEDFileIntField1TS.New(fname,"VectorFieldOnNodes",10,-1)
2527 self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
2529 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
2530 self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2531 self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
2532 self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
2535 def testMEDFileFields1(self):
2536 fname="Pyfile64.med"
2537 f1=MEDCouplingFieldDouble(ON_NODES)
2538 f1.setTime(0.001,0,-1) ; f1.setTimeUnit("us")
2539 c=DataArrayDouble(12) ; c.iota(); m=MEDCouplingCMesh() ; m.setCoordsAt(0,c) ; m.setName("mesh")
2540 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.write(fname,2)
2542 arr=DataArrayDouble(12,2) ; arr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; arr[:,0]=range(12) ; arr[:,1]=2*arr[:,0]
2544 f1.setName("Field1")
2545 ff1=MEDFileField1TS.New()
2546 ff1.setFieldNoProfileSBT(f1)
2547 self.assertEqual(ff1.getDtUnit(),"us")
2549 f1.setTime(1.001,1,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2550 f1.setTime(2.001,2,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2552 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2553 ff1s=MEDFileFieldMultiTS(fname,"Field1")
2554 ff1s.setName("Field2")
2556 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],False))
2557 f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2558 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1)],True))
2559 self.assertEqual(MEDFileFields(fname).partOfThisLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(1,-1)],False))
2560 self.assertEqual(MEDFileFields(fname).partOfThisNotLyingOnSpecifiedTimeSteps([(1,-1)]).getCommonIterations(),([(0,-1),(2,-1)],True))
2561 f1.setName("Field2") ; f1.setTime(3.001,3,-1) ; ff1=MEDFileField1TS.New() ; ff1.setFieldNoProfileSBT(f1) ; ff1.write(fname,0)
2562 self.assertEqual(MEDFileFields(fname).getCommonIterations(),([(0,-1),(1,-1),(2,-1),(3,-1)],False))
2563 self.assertEqual(MEDFileFields(fname)[1].getDtUnit(),"us")
2566 # Multi time steps and multi fields management without Globals (profiles, locs) aspects
2567 def testMEDFileFields2(self):
2568 fname="Pyfile65.med"
2569 # to check that all is initialize
2570 MEDFileField1TS().__str__()
2571 MEDFileFieldMultiTS().__str__()
2572 # building a mesh containing 4 tri3 + 5 quad4
2573 tri=MEDCouplingUMesh("tri",2)
2574 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2575 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2576 tris=[tri.deepCpy() for i in xrange(4)]
2577 for i,elt in enumerate(tris): elt.translate([i,0])
2578 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2579 quad=MEDCouplingUMesh("quad",2)
2580 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2581 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2582 quads=[quad.deepCpy() for i in xrange(5)]
2583 for i,elt in enumerate(quads): elt.translate([5+i,0])
2584 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2585 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2586 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2588 fmts0_0=MEDFileFieldMultiTS()
2589 fmts0_1=MEDFileFieldMultiTS()
2591 for i in xrange(10):
2592 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2593 d=DataArrayDouble(18) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2594 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2595 f.setTime(float(i+1)+0.1,i+1,-i-1)
2596 fmts0_0.appendFieldNoProfileSBT(f)
2597 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f) ; fmts0_1.pushBackTimeStep(f1ts)
2598 self.assertEqual(fmts0_1.getName(),name1)
2599 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2600 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2602 # components names have been modified to generate errors
2603 d.setInfoOnComponents(['aa [bb]','eee [dd]'])
2604 self.assertRaises(InterpKernelException,fmts0_0.appendFieldNoProfileSBT,f)
2605 self.assertRaises(InterpKernelException,f1ts.setInfo,['aa [bb]'])#throw because mismatch of number of components
2606 f1ts.setInfo(['aa [bb]','eee [dd]'])
2607 self.assertRaises(InterpKernelException,fmts0_1.pushBackTimeStep,f1ts)
2609 # add a mismatch of nb of compos
2611 fmts0_2=fmts0_0.deepCpy()
2612 fmts0_3=fmts0_0.deepCpy()
2613 fmts0_4=fmts0_0.deepCpy()
2614 fmts0_5=fmts0_0.shallowCpy()
2615 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)
2617 self.assertTrue(len(fmts0_2)==5 and fmts0_2.getIterations()==[(2,-2),(4,-4),(6,-6),(8,-8),(10,-10)])
2618 del fmts0_3[[1.1,(6,-6),9]]
2619 self.assertTrue(len(fmts0_3)==7 and fmts0_3.getIterations()==[(2,-2),(3,-3),(4,-4),(5,-5),(7,-7),(8,-8),(9,-9)])
2620 fmts0_6=fmts0_4[[1.1,(6,-6),8]]
2621 self.assertTrue(isinstance(fmts0_6,MEDFileFieldMultiTS))
2622 self.assertTrue(len(fmts0_6)==3 and fmts0_6.getIterations()==[(1,-1),(6,-6),(9,-9)])
2623 fmts0_7=fmts0_4[::-3]
2624 self.assertTrue(isinstance(fmts0_7,MEDFileFieldMultiTS))
2625 self.assertTrue(len(fmts0_7)==4 and fmts0_7.getIterations()==[(10,-10),(7,-7),(4,-4),(1,-1)])
2628 fs0.pushField(fmts0_0)
2629 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2630 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2631 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2632 self.assertTrue(len(fs0)==4 and fs0.getFieldsNames()==('1stField','2ndField','3rdField','4thField'))
2634 fs0=MEDFileFields(fname)
2635 self.assertEqual(fs0.getCommonIterations(),([(2,-2),(4,-4),(8,-8)],True))
2636 fs1=fs0.partOfThisLyingOnSpecifiedTimeSteps(fs0.getCommonIterations()[0])
2637 self.assertTrue(fs1.getFieldsNames()==('1stField','2ndField','3rdField','4thField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2638 del fs1[["2ndField",3]]
2639 self.assertTrue(fs1.getFieldsNames()==('1stField','3rdField') and fs1.getCommonIterations()==([(2,-2),(4,-4),(8,-8)],False))
2640 fs2=fs0[[0,"4thField"]]
2641 self.assertTrue(isinstance(fs2,MEDFileFields))
2642 self.assertEqual(fs2.getFieldsNames(),('1stField','4thField'))
2644 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,0)
2647 # Multi time steps and multi fields management with Globals (profiles, locs) aspects
2648 def testMEDFileFields3(self):
2649 fname="Pyfile66.med"
2650 # building a mesh containing 4 tri3 + 5 quad4
2651 tri=MEDCouplingUMesh("tri",2)
2652 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2653 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2654 tris=[tri.deepCpy() for i in xrange(4)]
2655 for i,elt in enumerate(tris): elt.translate([i,0])
2656 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2657 quad=MEDCouplingUMesh("quad",2)
2658 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2659 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2660 quads=[quad.deepCpy() for i in xrange(5)]
2661 for i,elt in enumerate(quads): elt.translate([5+i,0])
2662 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2663 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2664 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2666 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2668 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2669 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2670 fmts0_0=MEDFileFieldMultiTS()
2671 fmts0_1=MEDFileFieldMultiTS()
2673 for i in xrange(10):
2674 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2675 d=DataArrayDouble(14) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2676 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2677 f.setTime(float(i+1)+0.1,i+1,-i-1)
2678 fmts0_0.appendFieldProfile(f,mm,0,pfl)
2679 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2680 self.assertEqual(fmts0_0.getInfo(),('aa [bb]','ccc [ddd]'))
2681 self.assertEqual(fmts0_1.getInfo(),('aa [bb]','ccc [ddd]'))
2684 self.assertEqual(fmts0_0.getPfls(),10*('pfl_NORM_QUAD4',))
2685 self.assertEqual(fmts0_1.getPfls(),('pfl_NORM_QUAD4',))
2686 fmts0_0.zipPflsNames()
2687 self.assertEqual(fmts0_0.getPfls(),('pfl_NORM_QUAD4',))
2688 self.assertTrue(fmts0_1.getProfile("pfl_NORM_QUAD4").isEqual(fmts0_0.getProfile("pfl_NORM_QUAD4")))
2689 fmts0_2=fmts0_0.deepCpy()
2690 fmts0_3=fmts0_0.deepCpy()
2691 fmts0_4=fmts0_0.deepCpy()
2693 fs0.pushField(fmts0_0)
2694 fmts0_2.setName("2ndField") ; fs0.pushField(fmts0_2)
2695 fmts0_3.setName("3rdField") ; fs0.pushField(fmts0_3)
2696 fmts0_4.setName("4thField") ; fs0.pushField(fmts0_4)
2697 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4',))
2699 fmts0_5=MEDFileFieldMultiTS()
2701 infos1=["aa [bb]","ccc [ddd]"] ; name1="1stField"
2702 d=DataArrayDouble(16) ; d.iota(i*10) ; d.rearrange(2) ; d.setInfoOnComponents(infos1)
2703 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2704 f.setTime(float(i+1)+0.1,i+1,-i-1)
2705 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl2) ; fmts0_5.pushBackTimeStep(f1ts)
2707 fmts0_5.setName("5thField") ; fs0.pushField(fmts0_5)
2708 self.assertEqual(fs0.getPfls(),('pfl_NORM_QUAD4','pfl2_NORM_QUAD4'))
2709 fs0.checkGlobsCoherency()
2713 def testSplitComponents1(self):
2714 fname="Pyfile67.med"
2715 # building a mesh containing 4 tri3 + 5 quad4
2716 tri=MEDCouplingUMesh("tri",2)
2717 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2718 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2719 tris=[tri.deepCpy() for i in xrange(4)]
2720 for i,elt in enumerate(tris): elt.translate([i,0])
2721 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2722 quad=MEDCouplingUMesh("quad",2)
2723 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2724 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2725 quads=[quad.deepCpy() for i in xrange(5)]
2726 for i,elt in enumerate(quads): elt.translate([5+i,0])
2727 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2728 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2729 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2731 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2733 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
2734 pfl2=DataArrayInt([0,1,2,3,4,5,6,8]) ; pfl2.setName("pfl2")
2736 fmts0_1=MEDFileFieldMultiTS()
2738 infos1=['aa [bb]','ccc [ddd]',"ZZZZ [MW*s]"]
2739 for i in xrange(10):
2741 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2742 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name1) ; f.setArray(d) ; f.setMesh(m)
2743 f.setTime(float(i+1)+0.1,i+1,-i-1)
2744 f1ts=MEDFileField1TS() ; f1ts.setFieldProfile(f,mm,0,pfl) ; fmts0_1.pushBackTimeStep(f1ts)
2745 self.assertEqual(fmts0_1.getInfo(),tuple(infos1))
2747 fs.pushField(fmts0_1)
2748 self.assertEqual(1,len(fs))
2749 l=fmts0_1.splitComponents()
2750 self.assertEqual(3,len(l))
2751 for elt in l: self.assertEqual(10,len(elt))
2752 for elt in l: self.assertTrue(isinstance(elt,MEDFileFieldMultiTS))
2754 elt.setName("%s_%s"%(elt.getName(),DataArray.GetVarNameFromInfo(elt.getInfo()[0])))
2757 self.assertEqual(4,len(fs))
2758 for elt in fs: self.assertEqual(10,len(elt))
2759 self.assertEqual(fs.getPfls(),('pfl_NORM_QUAD4',))
2760 self.assertEqual(fs.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2762 fs.write(fname,0) ; del fs
2764 fs1=MEDFileFields(fname)
2765 self.assertEqual(fs1.getPfls(),('pfl_NORM_QUAD4',))
2766 self.assertEqual(fs1.getPflsReallyUsed(),('pfl_NORM_QUAD4',))
2767 self.assertEqual(4,len(fs1))
2768 for i in xrange(10):
2769 for j,fieldName in enumerate(['1stField_aa','1stField_ccc','1stField_ZZZZ']):
2770 f1ts=fs1[fieldName][i]
2771 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2772 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d=d[:,j] ; d.setInfoOnComponent(0,infos1[j])
2773 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2775 f1ts=fs1["1stField"][i]
2776 f=f1ts.getFieldOnMeshAtLevel(ON_CELLS,0,mm)
2777 d=DataArrayDouble(21) ; d.iota(i*10) ; d.rearrange(3) ; d.setInfoOnComponents(infos1)
2778 self.assertTrue(d.isEqual(f.getArray(),1e-13))
2782 def testMEDFileFieldConvertTo1(self):
2783 fname="Pyfile68.med"
2784 # building a mesh containing 4 tri3 + 5 quad4
2785 tri=MEDCouplingUMesh("tri",2)
2786 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2787 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2788 tris=[tri.deepCpy() for i in xrange(4)]
2789 for i,elt in enumerate(tris): elt.translate([i,0])
2790 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2791 quad=MEDCouplingUMesh("quad",2)
2792 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2793 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2794 quads=[quad.deepCpy() for i in xrange(5)]
2795 for i,elt in enumerate(quads): elt.translate([5+i,0])
2796 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2797 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2798 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2799 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
2801 ff0=MEDFileField1TS()
2802 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")
2804 ff0.setFieldNoProfileSBT(f0)
2806 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,9),'','')])]
2807 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2809 ff0i=ff0.convertToInt()
2810 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2811 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2813 ff1=ff0i.convertToDouble()
2814 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2815 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2817 del arr,f0,ff0,ff1,ff0i,fspExp
2818 ff0=MEDFileField1TS()
2819 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")
2821 pfl=DataArrayInt.Range(0,7,1) ; pfl.setName("pfl")
2822 ff0.setFieldProfile(f0,mm,0,pfl)
2823 fspExp=[(3,[(0,(0,4),'','')]),(4,[(0,(4,7),'pfl_NORM_QUAD4','')])]
2824 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2826 ff0i=ff0.convertToInt()
2827 self.assertTrue(isinstance(ff0i,MEDFileIntField1TS))
2828 self.assertEqual(ff0i.getFieldSplitedByType(),fspExp)
2829 self.assertTrue(arr.convertToIntArr().isEqual(ff0i.getUndergroundDataArray()))
2831 ff1=ff0i.convertToDouble()
2832 self.assertTrue(isinstance(ff1,MEDFileField1TS))
2833 self.assertTrue(ff1.getUndergroundDataArray().isEqual(ff0.getUndergroundDataArray(),1e-13))
2834 self.assertEqual(ff1.getFieldSplitedByType(),fspExp)
2836 ff0=MEDFileFieldMultiTS()
2837 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)
2839 ff0.appendFieldProfile(f0,mm,0,pfl)
2840 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)
2842 ff0.appendFieldProfile(f0,mm,0,pfl)
2843 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)
2845 ff0.appendFieldProfile(f0,mm,0,pfl)
2846 ff1=ff0.convertToInt()
2847 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2848 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2849 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2850 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2851 arr=ff1.getUndergroundDataArray(dt,it)
2852 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2854 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2859 ff1=ff1.convertToDouble()
2860 self.assertTrue(isinstance(ff1,MEDFileFieldMultiTS))
2861 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2862 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2863 self.assertEqual(ff1.getFieldSplitedByType(dt,it),fspExp)
2864 arr=ff1.getUndergroundDataArray(dt,it)
2865 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1).convertToDblArr(),1e-14)
2867 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4', 'pfl_NORM_QUAD4', 'pfl_NORM_QUAD4'))
2869 ff1=MEDFileAnyTypeFieldMultiTS.New(fname,"FieldCellMTime")
2870 self.assertTrue(isinstance(ff1,MEDFileIntFieldMultiTS))
2871 self.assertEqual(ff1.getTimeSteps(),[(0,10,0.1),(1,11,1.1),(2,12,2.1)])
2872 for delt,(dt,it,t) in zip([0,100,200],ff1.getTimeSteps()):
2873 self.assertTrue(ff1.getFieldSplitedByType(dt,it),fspExp)
2874 arr=ff1.getUndergroundDataArray(dt,it)
2875 arr.isEqualWithoutConsideringStr(DataArrayInt.Range(delt,delt+7,1))
2877 self.assertEqual(ff1.getPfls(),('pfl_NORM_QUAD4',))
2880 def testMEDFileFieldPartialLoading(self):
2881 fname="Pyfile69.med"
2883 a=DataArrayInt() ; aa=a.getHeapMemorySize()
2885 strMulFac=a.getHeapMemorySize()-aa ; del a ; del aa
2886 # building a mesh containing 30 tri3 + 40 quad4
2887 tri=MEDCouplingUMesh("tri",2)
2888 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
2889 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
2890 tris=[tri.deepCpy() for i in xrange(30)]
2891 for i,elt in enumerate(tris): elt.translate([i,0])
2892 tris=MEDCouplingUMesh.MergeUMeshes(tris)
2893 quad=MEDCouplingUMesh("quad",2)
2894 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
2895 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
2896 quads=[quad.deepCpy() for i in xrange(40)]
2897 for i,elt in enumerate(quads): elt.translate([40+i,0])
2898 quads=MEDCouplingUMesh.MergeUMeshes(quads)
2899 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
2900 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
2901 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m) ; mm.write(fname,2)
2903 ff0=MEDFileField1TS()
2904 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")
2906 ff0.setFieldNoProfileSBT(f0)
2909 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,70),'','')])]
2910 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2912 ff0=MEDFileField1TS()
2913 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")
2915 pfl=DataArrayInt.Range(0,50,1) ; pfl.setName("pfl")
2916 ff0.setFieldProfile(f0,mm,0,pfl)
2917 fspExp=[(3,[(0,(0,30),'','')]),(4,[(0,(30,50),'pfl_NORM_QUAD4','')])]
2918 self.assertEqual(ff0.getFieldSplitedByType(),fspExp)
2921 ff0=MEDFileField1TS(fname,False)
2922 self.assertEqual(ff0.getName(),"FieldCell")
2923 self.assertTrue(not ff0.getUndergroundDataArray().isAllocated())
2924 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),['X [km]','YY [mm]'])
2925 heap_memory_ref=ff0.getHeapMemorySize()
2926 self.assertIn(heap_memory_ref,xrange(100,210+2*strMulFac))
2928 arr=DataArrayDouble(140) ; arr.iota() ; arr.rearrange(2)
2929 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2930 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,70*8*2)
2932 ff0=MEDFileField1TS(fname,"FieldCellPfl",False)
2933 self.assertEqual(ff0.getUndergroundDataArray().getInfoOnComponents(),["XX [pm]","YYY [hm]"])
2934 heap_memory_ref=ff0.getHeapMemorySize()
2935 self.assertIn(heap_memory_ref,xrange(150,260+6*strMulFac))
2937 arr=DataArrayDouble(100) ; arr.iota() ; arr.rearrange(2)
2938 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2939 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2941 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2942 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2943 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2944 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2946 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2947 ff0.getUndergroundDataArray().setIJ(30,1,5.5)
2948 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2949 ff0.loadArraysIfNecessary() ##
2950 self.assertEqual(ff0.getUndergroundDataArray().getIJ(30,1),5.5)
2951 self.assertTrue(not ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2952 heap_memory_ref=ff0.getHeapMemorySize()
2953 self.assertIn(heap_memory_ref,xrange(1000,1120+2*strMulFac))
2955 hmd=ff0.getHeapMemorySize()-heap_memory_ref
2956 self.assertEqual(hmd,-800) # -50*8*2
2958 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,0)
2960 ff0=MEDFileField1TS(fname,"FieldCellPfl",-1,-1,False)
2961 heap_memory_ref=ff0.getHeapMemorySize()
2962 self.assertIn(heap_memory_ref,xrange(150,260+6*strMulFac))
2964 self.assertTrue(ff0.getUndergroundDataArray().isEqualWithoutConsideringStr(arr,1e-14))
2965 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,50*8*2)
2967 fieldName="FieldCellMultiTS"
2968 ff0=MEDFileFieldMultiTS()
2969 for t in xrange(20):
2970 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)
2971 f0.setTime(float(t)+0.1,t,100+t)
2973 ff0.appendFieldNoProfileSBT(f0)
2977 ff0=MEDFileAnyTypeFieldMultiTS.New(fname,fieldName,False)
2978 heap_memory_ref=ff0.getHeapMemorySize()
2979 self.assertIn(heap_memory_ref,xrange(2000,3000+(80+26)*strMulFac))
2981 self.assertEqual(ff0.getHeapMemorySize()-heap_memory_ref,20*70*8*2)
2984 ffs=MEDFileFields(fname,False)
2985 heap_memory_ref=ffs.getHeapMemorySize()
2986 self.assertIn(heap_memory_ref,xrange(2400,3500+(80+50)*strMulFac))
2988 self.assertEqual(ffs.getHeapMemorySize()-heap_memory_ref,20*70*8*2+70*8*2+50*8*2)
2991 def testMEDFileMeshReadSelector1(self):
2992 mrs=MEDFileMeshReadSelector()
2993 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
2994 mrs.__str__() ; mrs.__repr__()
2996 mrs=MEDFileMeshReadSelector(0)
2997 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())
2998 mrs=MEDFileMeshReadSelector(1)
2999 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3000 mrs=MEDFileMeshReadSelector(2)
3001 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3002 mrs=MEDFileMeshReadSelector(3)
3003 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3004 mrs=MEDFileMeshReadSelector(4)
3005 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3006 mrs=MEDFileMeshReadSelector(5)
3007 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3008 mrs=MEDFileMeshReadSelector(6)
3009 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3010 mrs=MEDFileMeshReadSelector(7)
3011 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3012 mrs=MEDFileMeshReadSelector(8)
3013 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3014 mrs=MEDFileMeshReadSelector(9)
3015 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3016 mrs=MEDFileMeshReadSelector(10)
3017 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3018 mrs=MEDFileMeshReadSelector(11)
3019 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3020 mrs=MEDFileMeshReadSelector(12)
3021 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3022 mrs=MEDFileMeshReadSelector(13)
3023 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3024 mrs=MEDFileMeshReadSelector(14)
3025 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3026 mrs=MEDFileMeshReadSelector(15)
3027 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3028 mrs=MEDFileMeshReadSelector(16)
3029 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3030 mrs=MEDFileMeshReadSelector(17)
3031 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3032 mrs=MEDFileMeshReadSelector(18)
3033 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3034 mrs=MEDFileMeshReadSelector(19)
3035 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3036 mrs=MEDFileMeshReadSelector(20)
3037 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3038 mrs=MEDFileMeshReadSelector(21)
3039 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3040 mrs=MEDFileMeshReadSelector(22)
3041 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3042 mrs=MEDFileMeshReadSelector(23)
3043 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3044 mrs=MEDFileMeshReadSelector(24)
3045 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3046 mrs=MEDFileMeshReadSelector(25)
3047 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3048 mrs=MEDFileMeshReadSelector(26)
3049 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3050 mrs=MEDFileMeshReadSelector(27)
3051 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3052 mrs=MEDFileMeshReadSelector(28)
3053 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3054 mrs=MEDFileMeshReadSelector(29)
3055 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3056 mrs=MEDFileMeshReadSelector(30)
3057 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3058 mrs=MEDFileMeshReadSelector(31)
3059 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and not mrs.isNodeNumFieldReading())
3060 mrs=MEDFileMeshReadSelector(32)
3061 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3062 mrs=MEDFileMeshReadSelector(33)
3063 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3064 mrs=MEDFileMeshReadSelector(34)
3065 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3066 mrs=MEDFileMeshReadSelector(35)
3067 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3068 mrs=MEDFileMeshReadSelector(36)
3069 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3070 mrs=MEDFileMeshReadSelector(37)
3071 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3072 mrs=MEDFileMeshReadSelector(38)
3073 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3074 mrs=MEDFileMeshReadSelector(39)
3075 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3076 mrs=MEDFileMeshReadSelector(40)
3077 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3078 mrs=MEDFileMeshReadSelector(41)
3079 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3080 mrs=MEDFileMeshReadSelector(42)
3081 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3082 mrs=MEDFileMeshReadSelector(43)
3083 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3084 mrs=MEDFileMeshReadSelector(44)
3085 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3086 mrs=MEDFileMeshReadSelector(45)
3087 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3088 mrs=MEDFileMeshReadSelector(46)
3089 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3090 mrs=MEDFileMeshReadSelector(47)
3091 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and not mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3092 mrs=MEDFileMeshReadSelector(48)
3093 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3094 mrs=MEDFileMeshReadSelector(49)
3095 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3096 mrs=MEDFileMeshReadSelector(50)
3097 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3098 mrs=MEDFileMeshReadSelector(51)
3099 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3100 mrs=MEDFileMeshReadSelector(52)
3101 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3102 mrs=MEDFileMeshReadSelector(53)
3103 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3104 mrs=MEDFileMeshReadSelector(54)
3105 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3106 mrs=MEDFileMeshReadSelector(55)
3107 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and not mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3108 mrs=MEDFileMeshReadSelector(56)
3109 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3110 mrs=MEDFileMeshReadSelector(57)
3111 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3112 mrs=MEDFileMeshReadSelector(58)
3113 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3114 mrs=MEDFileMeshReadSelector(59)
3115 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and not mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3116 mrs=MEDFileMeshReadSelector(60)
3117 self.assertTrue(not mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3118 mrs=MEDFileMeshReadSelector(61)
3119 self.assertTrue(mrs.isCellFamilyFieldReading() and not mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3120 mrs=MEDFileMeshReadSelector(62)
3121 self.assertTrue(not mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3122 mrs=MEDFileMeshReadSelector(63)
3123 self.assertTrue(mrs.isCellFamilyFieldReading() and mrs.isNodeFamilyFieldReading() and mrs.isCellNameFieldReading() and mrs.isNodeNameFieldReading() and mrs.isCellNumFieldReading() and mrs.isNodeNumFieldReading())
3125 mrs=MEDFileMeshReadSelector(63)
3126 mrs.setCellFamilyFieldReading(False)
3127 self.assertEqual(mrs.getCode(),62)
3128 mrs.setCellFamilyFieldReading(True)
3129 self.assertEqual(mrs.getCode(),63)
3130 mrs.setNodeFamilyFieldReading(False)
3131 self.assertEqual(mrs.getCode(),61)
3132 mrs.setNodeFamilyFieldReading(True)
3133 self.assertEqual(mrs.getCode(),63)
3134 mrs.setCellNameFieldReading(False)
3135 self.assertEqual(mrs.getCode(),59)
3136 mrs.setCellNameFieldReading(True)
3137 self.assertEqual(mrs.getCode(),63)
3138 mrs.setNodeNameFieldReading(False)
3139 self.assertEqual(mrs.getCode(),55)
3140 mrs.setNodeNameFieldReading(True)
3141 self.assertEqual(mrs.getCode(),63)
3142 mrs.setCellNumFieldReading(False)
3143 self.assertEqual(mrs.getCode(),47)
3144 mrs.setCellNumFieldReading(True)
3145 self.assertEqual(mrs.getCode(),63)
3146 mrs.setNodeNumFieldReading(False)
3147 self.assertEqual(mrs.getCode(),31)
3148 mrs.setNodeNumFieldReading(True)
3149 self.assertEqual(mrs.getCode(),63)
3152 def testPartialReadOfMeshes(self):
3153 fname="Pyfile70.med"
3154 # building a mesh containing 4 tri3 + 5 quad4
3155 tri=MEDCouplingUMesh("tri",2)
3156 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3157 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3158 tris=[tri.deepCpy() for i in xrange(4)]
3159 for i,elt in enumerate(tris): elt.translate([i,0])
3160 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3161 quad=MEDCouplingUMesh("quad",2)
3162 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3163 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3164 quads=[quad.deepCpy() for i in xrange(5)]
3165 for i,elt in enumerate(quads): elt.translate([5+i,0])
3166 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3167 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3168 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3169 m1=m.buildDescendingConnectivity()[0]
3170 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3172 grp0=DataArrayInt([1,2,3,5,6]) ; grp0.setName("grp0")
3173 grp1=DataArrayInt([1,2,3,5,7,8]) ; grp1.setName("grp1")
3174 mm.setGroupsAtLevel(0,[grp0,grp1])
3175 grp2=DataArrayInt.Range(0,32,2) ; grp2.setName("grp2")
3176 grp3=DataArrayInt.Range(1,32,7) ; grp3.setName("grp3")
3177 mm.setGroupsAtLevel(-1,[grp2,grp3])
3178 grp4=DataArrayInt.Range(0,32,2) ; grp4.setName("grp4")
3179 grp5=DataArrayInt.Range(1,32,7) ; grp5.setName("grp5")
3180 mm.setGroupsAtLevel(1,[grp4,grp5])
3181 mm.setRenumFieldArr(0,DataArrayInt.Range(2,11,1))
3182 mm.setRenumFieldArr(-1,DataArrayInt.Range(3,35,1))
3183 mm.setRenumFieldArr(1,DataArrayInt.Range(4,36,1))
3187 mm=MEDFileMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector())
3188 b4_ref_heap_mem=mm.getHeapMemorySize()
3189 mm.getMeshAtLevel(0)## please let this line : force to move 1GTUMesh -> UMesh
3190 mm.getMeshAtLevel(-1)## please let this line : force to move 1GTUMesh -> UMesh
3191 ref_heap_mem=mm.getHeapMemorySize()
3192 # check the gain of memory using 1GTUMesh instead of UMesh
3193 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
3195 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(0))
3196 self.assertEqual(len(mm.getGroupsNames()),0)
3197 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3198 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3199 self.assertTrue(mm.getFamilyFieldAtLevel(0) is None)
3200 self.assertTrue(mm.getFamilyFieldAtLevel(-1) is None)
3201 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3202 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3203 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3204 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3205 delta1=ref_heap_mem-mm.getHeapMemorySize()
3206 self.assertTrue(delta1>=4*(32+9)*3+32*4*3)
3208 mm=MEDFileMesh.New(fname,MEDFileMeshReadSelector(1))
3209 self.assertEqual(len(mm.getGroupsNames()),6)
3210 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3211 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3212 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3213 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3214 self.assertTrue(mm.getFamilyFieldAtLevel(1) is None)
3215 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3216 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3217 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3218 delta2=ref_heap_mem-mm.getHeapMemorySize()
3219 self.assertTrue(delta2<delta1)
3220 self.assertTrue(delta2>=4*(32+9)*1+32*4*3)
3222 mm=MEDFileUMesh(fname,MEDFileMeshReadSelector(3))
3223 self.assertEqual(len(mm.getGroupsNames()),6)
3224 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3225 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3226 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3227 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3228 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3229 self.assertTrue(mm.getNumberFieldAtLevel(0) is None)
3230 self.assertTrue(mm.getNumberFieldAtLevel(-1) is None)
3231 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3232 delta3=ref_heap_mem-mm.getHeapMemorySize()
3233 self.assertTrue(delta3<delta2)
3234 self.assertTrue(delta3>=4*(32+9)*1+32*4*1)
3236 mm=MEDFileUMesh(fname,"mesh",-1,-1,MEDFileMeshReadSelector(19))
3237 self.assertEqual(len(mm.getGroupsNames()),6)
3238 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3239 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3240 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3241 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3242 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3243 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3244 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3245 self.assertTrue(mm.getNumberFieldAtLevel(1) is None)
3246 delta4=ref_heap_mem-mm.getHeapMemorySize()
3247 self.assertTrue(delta4<delta3)
3248 self.assertTrue(delta4>=32*4*2)
3250 mm=MEDFileUMesh.New(fname,"mesh",-1,-1,MEDFileMeshReadSelector(51))
3251 self.assertEqual(len(mm.getGroupsNames()),6)
3252 self.assertTrue(mm.getMeshAtLevel(0).isEqual(m,1e-13))
3253 self.assertTrue(mm.getMeshAtLevel(-1).isEqual(m1,1e-13))
3254 self.assertTrue(mm.getFamilyFieldAtLevel(0)!=None)
3255 self.assertTrue(mm.getFamilyFieldAtLevel(-1)!=None)
3256 self.assertTrue(mm.getFamilyFieldAtLevel(1)!=None)
3257 self.assertTrue(mm.getNumberFieldAtLevel(0)!=None)
3258 self.assertTrue(mm.getNumberFieldAtLevel(-1)!=None)
3259 self.assertTrue(mm.getNumberFieldAtLevel(1)!=None)
3260 delta5=ref_heap_mem-mm.getHeapMemorySize()
3261 self.assertTrue(delta5<delta4)
3262 self.assertEqual(delta5,0)
3265 # this test checks that setFieldProfile perform a check of the array length
3266 # compared to the profile length. This test also checks that mesh attribute of field
3267 # is not used by setFieldProfile (because across this test mesh is equal to None)
3268 def testCheckCompatibilityPfl1(self):
3269 # building a mesh containing 4 tri3 + 5 quad4
3270 tri=MEDCouplingUMesh("tri",2)
3271 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
3272 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
3273 tris=[tri.deepCpy() for i in xrange(4)]
3274 for i,elt in enumerate(tris): elt.translate([i,0])
3275 tris=MEDCouplingUMesh.MergeUMeshes(tris)
3276 quad=MEDCouplingUMesh("quad",2)
3277 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
3278 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
3279 quads=[quad.deepCpy() for i in xrange(5)]
3280 for i,elt in enumerate(quads): elt.translate([5+i,0])
3281 quads=MEDCouplingUMesh.MergeUMeshes(quads)
3282 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
3283 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
3284 m1=m.buildDescendingConnectivity()[0]
3285 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
3287 f1ts=MEDFileField1TS()
3288 f=MEDCouplingFieldDouble(ON_NODES)
3289 vals=DataArrayDouble(7) ; vals.iota(1000)
3291 f.setName("anonymous") # f has no mesh it is not a bug
3292 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3293 f1ts.setFieldProfile(f,mm,0,pfl)
3295 f1ts=MEDFileField1TS()
3296 f=MEDCouplingFieldDouble(ON_NODES)
3297 vals=DataArrayDouble(8) ; vals.iota(1000)
3299 f.setName("anonymous") # f has no mesh it is not a bug
3300 pfl=DataArrayInt([0,1,2,3,4,5,6]) ; pfl.setName("pfl")
3301 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3303 f1ts=MEDFileField1TS()
3304 f=MEDCouplingFieldDouble(ON_CELLS)
3305 vals=DataArrayDouble(7) ; vals.iota(1000)
3307 f.setName("anonymous") # f has no mesh it is not a bug
3308 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3309 f1ts.setFieldProfile(f,mm,0,pfl)
3310 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3312 f1ts=MEDFileField1TS()
3313 f=MEDCouplingFieldDouble(ON_GAUSS_PT)
3314 vals=DataArrayDouble(27) ; vals.iota(1000)
3316 f.setName("anonymous") # f has no mesh it is not a bug
3317 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3319 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])
3320 f.setGaussLocalizationOnCells([2],[0.,0.,1.,0.,1.,1.],[0.3,0.3],[1.])
3321 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])
3323 f1ts.setFieldProfile(f,mm,0,pfl)
3324 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3325 vals=DataArrayDouble(26) ; vals.iota(1040) ; f.setArray(vals)
3326 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3327 vals=DataArrayDouble(27) ; vals.iota(1000)
3328 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3330 f1ts=MEDFileField1TS()
3331 f=MEDCouplingFieldDouble(ON_GAUSS_NE)
3332 vals=DataArrayDouble(25) ; vals.iota(1000)
3334 f.setName("anonymous") # f has no mesh it is not a bug
3335 pfl=DataArrayInt([1,2,3,5,6,7,8]) ; pfl.setName("pfl")
3336 f1ts.setFieldProfile(f,mm,0,pfl)
3337 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3338 vals2=DataArrayDouble(26) ; vals2.iota(1050)
3340 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3341 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(vals,1e-10))
3343 f1ts=MEDFileField1TS()
3344 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3345 self.assertRaises(InterpKernelException,f1ts.setFieldProfile,f,mm,0,pfl)
3347 f1ts.setFieldProfile(f,mm,0,pfl)
3350 def testWRMeshWithNoCells(self):
3351 fname="Pyfile71.med"
3352 a=DataArrayDouble(4) ; a.iota()
3353 c=MEDCouplingCMesh() ; c.setCoords(a,a) ; m0=c.buildUnstructured()
3354 m00=MEDCouplingUMesh("mesh",1) ; m00.setCoords(m0.getCoords()) ; m00.allocateCells(0)
3356 m.setMeshAtLevel(0,m00)
3357 m.setRenumFieldArr(1,DataArrayInt(range(10,26)))
3358 m.setFamilyFieldArr(1,DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3]))
3362 m=MEDFileMesh.New(fname)
3363 self.assertEqual((),m.getNonEmptyLevels())
3364 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))
3365 self.assertTrue(m.getNumberFieldAtLevel(1).isEqual(DataArrayInt(range(10,26))))
3366 self.assertTrue(m.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,0,-1,-3,-3,-3])))
3369 #@unittest.skipUnless(False,"requires Vadim's green light")
3370 def testWRQPolyg1(self):
3371 fname="Pyfile72.med"
3372 m=MEDCoupling1SGTUMesh("mesh",NORM_QUAD4) ; m.allocateCells()
3373 m.insertNextCell([0,2,1,3])
3374 m.setCoords(DataArrayDouble([0.,0.,1.,1.,1.,0.,0.,1.],4,2))
3376 ms=[m.deepCpy() for i in xrange(4)]
3377 for i,elt in enumerate(ms):
3378 elt.translate([float(i)*1.5,0.])
3380 m0=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3381 m0.convertAllToPoly()
3383 ms=[m.deepCpy() for i in xrange(5)]
3384 for i,elt in enumerate(ms):
3385 elt.translate([float(i)*1.5,1.5])
3387 m1=MEDCoupling1SGTUMesh.Merge1SGTUMeshes(ms).buildUnstructured()
3388 m1.convertAllToPoly()
3389 m1.convertLinearCellsToQuadratic()
3391 m=MEDCouplingUMesh.MergeUMeshes(m0,m1)
3394 mm.setMeshAtLevel(0,m)
3395 grp0=DataArrayInt([0,2,3]) ; grp0.setName("grp0")
3396 grp1=DataArrayInt([4,6,7]) ; grp1.setName("grp1")
3397 grp2=DataArrayInt([0,1,2,4,5,6]) ; grp2.setName("grp2")
3398 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3403 mm_read=MEDFileUMesh(fname)
3404 self.assertTrue(mm_read.getGroupArr(0,"grp0").isEqual(grp0))
3405 self.assertTrue(mm_read.getGroupArr(0,"grp1").isEqual(grp1))
3406 self.assertTrue(mm_read.getGroupArr(0,"grp2").isEqual(grp2))
3407 self.assertTrue(mm_read.getMeshAtLevel(0).isEqual(m,1e-12))
3409 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName("MyFirstField")
3411 arr0=DataArrayDouble(9) ; arr0.iota()
3412 arr1=DataArrayDouble(9) ; arr1.iota(100)
3413 arr=DataArrayDouble.Meld(arr0,arr1) ; arr.setInfoOnComponents(["mm [kg]","sds [m]"])
3414 f.setArray(arr) ; f.checkCoherency()
3416 ff=MEDFileField1TS()
3417 ff.setFieldNoProfileSBT(f)
3420 ff_read=MEDFileField1TS(fname)
3421 f_read=ff_read.getFieldOnMeshAtLevel(ON_CELLS,0,mm_read)
3422 self.assertTrue(f_read.isEqual(f,1e-12,1e-12))
3425 def testLoadIfNecessaryOnFromScratchFields0(self):
3427 This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
3429 fname="Pyfile77.med"
3430 coords=DataArrayDouble([(0,0,0),(2,1,0),(1,0,0),(1,1,0),(2,0,0),(0,1,0)])
3431 m=MEDCouplingUMesh("mesh",2) ; m.setCoords(coords)
3433 m.insertNextCell(NORM_QUAD4,[0,5,3,2])
3434 m.insertNextCell(NORM_QUAD4,[4,2,3,1])
3435 m.finishInsertingCells()
3437 mm=MEDFileUMesh() ; mm.setMeshAtLevel(0,m)
3438 ms=MEDFileMeshes() ; ms.pushMesh(mm)
3442 ff0=MEDFileFieldMultiTS() ; fs.pushField(ff0)
3443 f0=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f0.setMesh(m) ; f0.setTimeUnit("ms")
3445 f0.setName("myELNOField")
3446 arrs[0]=DataArrayDouble([7,5,3,1,5,3,1,7]) ; arrs[0].setInfoOnComponent(0,"Comp0")
3447 f0.setArray(arrs[0])
3448 ff0.appendFieldNoProfileSBT(f0)
3451 arrs[1]=DataArrayDouble([1,7,5,3,7,5,3,1]) ; arrs[1].setInfoOnComponent(0,"Comp0")
3452 f0.setArray(arrs[1])
3453 ff0.appendFieldNoProfileSBT(f0)
3456 arrs[2]=DataArrayDouble([3,1,7,5,1,7,5,3]) ; arrs[2].setInfoOnComponent(0,"Comp0")
3457 f0.setArray(arrs[2])
3458 ff0.appendFieldNoProfileSBT(f0)
3461 arrs[3]=DataArrayDouble([5,3,1,7,3,1,7,5]) ; arrs[3].setInfoOnComponent(0,"Comp0")
3462 f0.setArray(arrs[3])
3463 ff0.appendFieldNoProfileSBT(f0)
3465 for i,arr in enumerate(arrs):
3466 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3467 fs[0][i].loadArraysIfNecessary()
3468 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3470 fs.loadArraysIfNecessary()
3471 for i,arr in enumerate(arrs):
3472 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3474 fs[0].loadArraysIfNecessary()
3475 for i,arr in enumerate(arrs):
3476 self.assertTrue(fs[0][i].getUndergroundDataArray().isEqual(arr,1e-12))
3480 def testField1TSSetFieldNoProfileSBTPerGeoTypes(self):
3481 """ This test is very important, because the same mechanism is used by the MEDReader to generate a field on all the mesh without any processing and memory.
3483 fname="Pyfile78.med"
3484 coords=DataArrayDouble([-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0. ],9,3)
3485 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3486 m0=MEDCouplingUMesh("mesh",3) ; m0.setCoords(coords)
3488 for elt in [[0,1,2,3],[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7],[5,6,7,8]]:#6
3489 m0.insertNextCell(NORM_TETRA4,elt)
3491 for elt in [[0,1,2,3,4],[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8]]:#5
3492 m0.insertNextCell(NORM_PYRA5,elt)
3494 for elt in [[0,1,2,3,4,5],[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,6,7,8]]:#4
3495 m0.insertNextCell(NORM_PENTA6,elt)
3497 m0.checkCoherency2()
3498 m1=MEDCouplingUMesh(); m1.setName("mesh")
3499 m1.setMeshDimension(2);
3500 m1.allocateCells(5);
3501 m1.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3502 m1.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3503 m1.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3504 m1.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3505 m1.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3506 m1.setCoords(coords);
3507 m3=MEDCouplingUMesh("mesh",0) ; m3.setCoords(coords)
3509 m3.insertNextCell(NORM_POINT1,[2])
3510 m3.insertNextCell(NORM_POINT1,[3])
3511 m3.insertNextCell(NORM_POINT1,[4])
3512 m3.insertNextCell(NORM_POINT1,[5])
3515 mm.setMeshAtLevel(0,m0)
3516 mm.setMeshAtLevel(-1,m1)
3517 mm.setMeshAtLevel(-3,m3)
3519 #### The file is written only with one mesh and no fields. Let's put a field on it geo types per geo types.
3520 mm=MEDFileMesh.New(fname)
3522 fmts=MEDFileFieldMultiTS()
3523 f1ts=MEDFileField1TS()
3524 for lev in mm.getNonEmptyLevels():
3525 for gt in mm.getGeoTypesAtLevel(lev):
3526 p0=mm.getDirectUndergroundSingleGeoTypeMesh(gt)
3527 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(p0)
3528 arr=DataArrayDouble(f.getNumberOfTuplesExpected()) ; arr.iota()
3529 f.setArray(arr) ; f.setName("f0")
3530 f1ts.setFieldNoProfileSBT(f)
3533 self.assertEqual(mm.getNonEmptyLevels(),(0,-1,-3))
3534 for lev in [0,-1,-3]:
3535 mm.getDirectUndergroundSingleGeoTypeMeshes(lev) # please let this line, it is for the test to emulate that
3537 fmts.pushBackTimeStep(f1ts)
3541 #### The file contains now one mesh and one cell field with all cells wathever their level ang type fetched.
3542 fs=MEDFileFields(fname)
3543 self.assertEqual(len(fs),1)
3544 self.assertEqual(len(fs[0]),1)
3546 self.assertEqual(f1ts.getFieldSplitedByType(),[(0,[(0,(0,4),'','')]),(3,[(0,(4,6),'','')]),(4,[(0,(6,9),'','')]),(14,[(0,(9,15),'','')]),(15,[(0,(15,20),'','')]),(16,[(0,(20,24),'','')])])
3547 self.assertTrue(f1ts.getUndergroundDataArray().isEqual(DataArrayDouble([0,1,2,3,0,1,0,1,2,0,1,2,3,4,5,0,1,2,3,4,0,1,2,3]),1e-12))
3550 def testMEDFileUMeshSetName(self):
3551 """ This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the convertion is performed in memory and a preparation is done then.
3552 This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
3554 fname="Pyfile79.med"
3555 targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4];
3557 m0=MEDCouplingUMesh() ; m0.setMeshDimension(2) # important no name here.
3558 coords=DataArrayDouble([-0.3,-0.3,0., 0.2,-0.3,0., 0.7,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.7,0.2,0., -0.3,0.7,0., 0.2,0.7,0., 0.7,0.7,0. ],9,3)
3559 m0.allocateCells(5);
3560 m0.insertNextCell(NORM_TRI3,3,targetConn[4:7]);
3561 m0.insertNextCell(NORM_TRI3,3,targetConn[7:10]);
3562 m0.insertNextCell(NORM_QUAD4,4,targetConn[0:4]);
3563 m0.insertNextCell(NORM_QUAD4,4,targetConn[10:14]);
3564 m0.insertNextCell(NORM_QUAD4,4,targetConn[14:18]);
3565 m0.setCoords(coords);
3566 mm.setMeshAtLevel(0,m0)
3567 m2=MEDCouplingUMesh() ; m2.setMeshDimension(0) ; m2.setCoords(coords) # important no name here.
3569 m2.insertNextCell(NORM_POINT1,[2])
3570 m2.insertNextCell(NORM_POINT1,[3])
3571 m2.insertNextCell(NORM_POINT1,[4])
3572 m2.insertNextCell(NORM_POINT1,[5])
3573 mm.setMeshAtLevel(-2,m2)
3574 self.assertEqual(mm.getName(),"")
3575 self.assertEqual(mm.getMeshAtLevel(0).getName(),"")
3576 mm.forceComputationOfParts()
3577 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"")
3579 self.assertEqual(mm.getName(),"abc")
3580 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_TRI3).getName(),"abc")
3581 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_QUAD4).getName(),"abc")
3582 self.assertEqual(mm.getDirectUndergroundSingleGeoTypeMesh(NORM_POINT1).getName(),"abc")
3583 self.assertEqual(mm.getMeshAtLevel(0).getName(),"abc")