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