1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013 CEA/DEN, EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 # Author : Anthony Geay (CEA/DEN)
22 from MEDLoader import *
24 from math import pi,e,sqrt
26 class MEDLoaderTest4(unittest.TestCase):
28 Test series to emulate the future MEDReader plugin for PARAVIS.
32 This test is the most simple one. One time serie of one field with only cell fields with no profiles.
33 The only "difficulty" is that the cell field is lying on different levels (2D and 1D) to maximize the compatibility with ParaVIS.
35 fname="ForMEDReader1.med"
36 # building a mesh containing 4 tri3 + 5 quad4
37 tri=MEDCouplingUMesh("tri",2)
38 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
39 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
40 tris=[tri.deepCpy() for i in xrange(4)]
41 for i,elt in enumerate(tris): elt.translate([i,0])
42 tris=MEDCouplingUMesh.MergeUMeshes(tris)
43 quad=MEDCouplingUMesh("quad",2)
44 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
45 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
46 quads=[quad.deepCpy() for i in xrange(5)]
47 for i,elt in enumerate(quads): elt.translate([5+i,0])
48 quads=MEDCouplingUMesh.MergeUMeshes(quads)
49 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
50 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
51 m1=m.buildDescendingConnectivity()[0]
52 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
53 fam=DataArrayInt(9) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam)
54 fam=DataArrayInt(32) ; fam.iota(20) ; mm.setFamilyFieldArr(-1,fam)
57 fs=MEDFileFieldMultiTS()
61 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
62 fCell0.setName(fieldName) ; fCell0.setMesh(m)
63 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
64 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
65 fCell0.checkCoherency()
66 f.setFieldNoProfileSBT(fCell0)
67 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
68 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
69 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
70 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
71 fCell1.checkCoherency()
72 f.setFieldNoProfileSBT(fCell1)
73 fs.pushBackTimeStep(f)
77 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
78 fCell0.setName(fieldName) ; fCell0.setMesh(m)
79 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
80 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
81 fCell0.checkCoherency()
82 f.setFieldNoProfileSBT(fCell0)
84 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
85 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
86 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
87 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
88 fCell1.checkCoherency()
89 f.setFieldNoProfileSBT(fCell1)
90 fs.pushBackTimeStep(f)
94 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
95 fCell0.setName(fieldName) ; fCell0.setMesh(m)
96 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
97 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
98 fCell0.checkCoherency()
99 f.setFieldNoProfileSBT(fCell0)
101 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
102 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
103 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
104 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
105 fCell1.checkCoherency()
106 f.setFieldNoProfileSBT(fCell1)
107 fs.pushBackTimeStep(f)
112 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
113 fCell0.setName(fieldName) ; fCell0.setMesh(m)
114 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
115 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
116 fCell0.checkCoherency()
117 f.setFieldNoProfileSBT(fCell0)
119 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
120 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
121 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
122 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
123 fCell1.checkCoherency()
124 f.setFieldNoProfileSBT(fCell1)
126 fs.pushBackTimeStep(f)
131 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
132 fCell0.setName(fieldName) ; fCell0.setMesh(m)
133 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
134 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
135 fCell0.checkCoherency()
136 f.setFieldNoProfileSBT(fCell0)
138 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
139 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
140 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
141 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
142 fCell1.checkCoherency()
143 f.setFieldNoProfileSBT(fCell1)
144 fs.pushBackTimeStep(f)
147 a0Exp=mm.getCoords().deepCpy()
148 del m,m1,mm,fs,f,fCell0,fCell1
149 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
150 ms=MEDFileMeshes(fname)
151 fields=MEDFileFields(fname,False) # False is important to not read the values
152 refMem=fields.getHeapMemorySize()
153 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
154 allFMTSLeavesToDisplay=[]
155 for fields in fields_per_mesh:
156 allFMTSLeavesToDisplay2=[]
158 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
160 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
162 self.assertEqual(len(allFMTSLeavesToDisplay),1)
163 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
164 for fmts in allFMTSLeavesToDisplay[0]:
165 self.assertEqual(fmts.getTimeSteps(),[(0,0,0.),(1,0,1.),(2,0,2.),(3,0,3.),(4,0,4.)]) # All discretizations have the same time series
167 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
168 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
169 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
170 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
172 mst=MEDFileMeshStruct.New(ms[0])
173 fcscp=allFMTSLeavesPerCommonSupport[0][1]
174 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
176 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
177 for i in xrange(1,5):
178 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
180 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
181 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
182 self.assertTrue(a1.isEqual(DataArrayByte([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,9,9,9,9,9])))
183 self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96])))
184 self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31])))
185 self.assertTrue(a4 is None)
186 self.assertTrue(a5 is None)
187 a6,a7=mml2.retrieveFamilyIdsOnCells()
188 self.assertTrue(a6.isEqual(DataArrayInt([20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,0,1,2,3,4,5,6,7,8])))
189 self.assertTrue(not a7)
191 fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst)
192 fields[0][i].loadArraysIfNecessary()
193 tmpMem=fields.getHeapMemorySize()
194 self.assertTrue(tmpMem-refMem>=41*2*8)
196 v=mml.buildDataArray(fsst,fields,fields[0][i].getUndergroundDataArray())
197 self.assertEqual(v.getHiddenCppPointer(),fields[0][i].getUndergroundDataArray().getHiddenCppPointer())
198 vExp=DataArrayDouble([200.,201.,202.,203.,204.,205.,206.,207.,208.,209.,210.,211.,212.,213.,214.,215.,216.,217.,218.,219.,220.,221.,222.,223.,224.,225.,226.,227.,228.,229.,230.,231.,232.,233.,234.,235.,236.,237.,238.,239.,240.,241.,242.,243.,244.,245.,246.,247.,248.,249.,250.,251.,252.,253.,254.,255.,256.,257.,258.,259.,260.,261.,262.,263.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,111.,112.,113.,114.,115.,116.,117.],41,2) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp+=i*1000
199 self.assertTrue(v.isEqual(vExp,1e-12))
205 One time serie of one field with cell and node discretization in the same field with no profiles.
206 Here as there is no profile only one VTK support is requested.
208 fname="ForMEDReader2.med"
209 # building a mesh containing 4 tri3 + 5 quad4
210 tri=MEDCouplingUMesh("tri",2)
211 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
212 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
213 tris=[tri.deepCpy() for i in xrange(4)]
214 for i,elt in enumerate(tris): elt.translate([i,0])
215 tris=MEDCouplingUMesh.MergeUMeshes(tris)
216 quad=MEDCouplingUMesh("quad",2)
217 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
218 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
219 quads=[quad.deepCpy() for i in xrange(5)]
220 for i,elt in enumerate(quads): elt.translate([5+i,0])
221 quads=MEDCouplingUMesh.MergeUMeshes(quads)
222 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
223 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
224 m1=m.buildDescendingConnectivity()[0]
225 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
228 fs=MEDFileFieldMultiTS()
232 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
233 fCell0.setName(fieldName) ; fCell0.setMesh(m)
234 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
235 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
236 fCell0.checkCoherency()
237 f.setFieldNoProfileSBT(fCell0)
238 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
239 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
240 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
241 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
242 fCell1.checkCoherency()
243 f.setFieldNoProfileSBT(fCell1)
245 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
246 fNode.setName(fieldName) ; fNode.setMesh(m1)
247 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2)
248 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
249 fNode.checkCoherency()
250 f.setFieldNoProfileSBT(fNode)
251 fs.pushBackTimeStep(f)
255 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
256 fCell0.setName(fieldName) ; fCell0.setMesh(m)
257 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
258 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
259 fCell0.checkCoherency()
260 f.setFieldNoProfileSBT(fCell0)
262 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
263 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
264 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
265 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
266 fCell1.checkCoherency()
267 f.setFieldNoProfileSBT(fCell1)
269 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
270 fNode.setName(fieldName) ; fNode.setMesh(m1)
271 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
272 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
273 fNode.checkCoherency()
274 f.setFieldNoProfileSBT(fNode)
275 fs.pushBackTimeStep(f)
279 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
280 fNode.setName(fieldName) ; fNode.setMesh(m1)
281 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2)
282 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
283 fNode.checkCoherency()
284 f.setFieldNoProfileSBT(fNode)
286 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
287 fCell0.setName(fieldName) ; fCell0.setMesh(m)
288 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
289 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
290 fCell0.checkCoherency()
291 f.setFieldNoProfileSBT(fCell0)
293 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
294 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
295 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
296 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
297 fCell1.checkCoherency()
298 f.setFieldNoProfileSBT(fCell1)
299 fs.pushBackTimeStep(f)
304 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
305 fCell0.setName(fieldName) ; fCell0.setMesh(m)
306 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
307 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
308 fCell0.checkCoherency()
309 f.setFieldNoProfileSBT(fCell0)
311 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
312 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
313 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
314 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
315 fCell1.checkCoherency()
316 f.setFieldNoProfileSBT(fCell1)
318 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
319 fNode.setName(fieldName) ; fNode.setMesh(m1)
320 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
321 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
322 fNode.checkCoherency()
323 f.setFieldNoProfileSBT(fNode)
325 fs.pushBackTimeStep(f)
330 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
331 fCell0.setName(fieldName) ; fCell0.setMesh(m)
332 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
333 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
334 fCell0.checkCoherency()
335 f.setFieldNoProfileSBT(fCell0)
337 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
338 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
339 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
340 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
341 fCell1.checkCoherency()
342 f.setFieldNoProfileSBT(fCell1)
344 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
345 fNode.setName(fieldName) ; fNode.setMesh(m1)
346 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2)
347 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
348 fNode.checkCoherency()
349 f.setFieldNoProfileSBT(fNode)
351 fs.pushBackTimeStep(f)
354 a0Exp=mm.getCoords().deepCpy()
355 del m,m1,mm,fs,f,fCell0,fCell1
356 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
357 ms=MEDFileMeshes(fname)
358 fields=MEDFileFields(fname,False)
359 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
360 allFMTSLeavesToDisplay=[]
361 for fields in fields_per_mesh:
362 allFMTSLeavesToDisplay2=[]
364 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
366 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
368 self.assertEqual(len(allFMTSLeavesToDisplay),1)
369 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
370 for fmts in allFMTSLeavesToDisplay[0]:
371 self.assertEqual(fmts.getTimeSteps(),[(0,0,0.),(1,0,1.),(2,0,2.),(3,0,3.),(4,0,4.)]) # All discretizations have the same time series
373 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
374 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
375 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
376 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
377 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
378 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
380 mst=MEDFileMeshStruct.New(ms[0])
381 fcscp=allFMTSLeavesPerCommonSupport[0][1]
382 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
384 assert isinstance(mml2,MEDUMeshMultiLev)
385 for i in xrange(1,5):
386 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
388 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
389 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
390 self.assertTrue(a1.isEqual(DataArrayByte([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,9,9,9,9,9])))
391 self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96])))
392 self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31])))
393 self.assertTrue(a4 is None)
394 self.assertTrue(a5 is None)
397 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
398 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
399 f.loadArraysIfNecessary()
400 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
401 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
402 vExp=DataArrayDouble([200.,201.,202.,203.,204.,205.,206.,207.,208.,209.,210.,211.,212.,213.,214.,215.,216.,217.,218.,219.,220.,221.,222.,223.,224.,225.,226.,227.,228.,229.,230.,231.,232.,233.,234.,235.,236.,237.,238.,239.,240.,241.,242.,243.,244.,245.,246.,247.,248.,249.,250.,251.,252.,253.,254.,255.,256.,257.,258.,259.,260.,261.,262.,263.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,111.,112.,113.,114.,115.,116.,117.],41,2) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp+=i*1000
403 self.assertTrue(v.isEqual(vExp,1e-12))
406 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
407 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
408 f.loadArraysIfNecessary()
409 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
410 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
411 vExp=DataArrayDouble([300.,301.,302.,303.,304.,305.,306.,307.,308.,309.,310.,311.,312.,313.,314.,315.,316.,317.,318.,319.,320.,321.,322.,323.,324.,325.,326.,327.,328.,329.,330.,331.,332.,333.,334.,335.,336.,337.,338.,339.,340.,341.,342.,343.,344.,345.,346.,347.,348.,349.,350.,351.,352.,353.,354.,355.,356.,357.,358.,359.,360.,361.,362.,363.],32,2) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp+=i*1000
412 self.assertTrue(v.isEqual(vExp,1e-12))
417 """ This test is more advanced a same field is defined on CELLS for time steps 0, 2 and 4, and on NODES for time steps 1 and 3.
418 So two time step series on the same field. No profile here neither on cells nor on nodes.
420 fname="ForMEDReader3.med"
421 # building a mesh containing 4 tri3 + 5 quad4
422 tri=MEDCouplingUMesh("tri",2)
423 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
424 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
425 tris=[tri.deepCpy() for i in xrange(4)]
426 for i,elt in enumerate(tris): elt.translate([i,0])
427 tris=MEDCouplingUMesh.MergeUMeshes(tris)
428 quad=MEDCouplingUMesh("quad",2)
429 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
430 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
431 quads=[quad.deepCpy() for i in xrange(5)]
432 for i,elt in enumerate(quads): elt.translate([5+i,0])
433 quads=MEDCouplingUMesh.MergeUMeshes(quads)
434 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
435 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
436 m1=m.buildDescendingConnectivity()[0]
437 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
440 fs=MEDFileFieldMultiTS()
441 ##### Time step 0 on cells
444 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
445 fCell0.setName(fieldName) ; fCell0.setMesh(m)
446 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
447 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
448 fCell0.checkCoherency()
449 f.setFieldNoProfileSBT(fCell0)
450 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
451 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
452 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
453 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
454 fCell1.checkCoherency()
455 f.setFieldNoProfileSBT(fCell1)
456 fs.pushBackTimeStep(f)
457 ##### Time step 1 on nodes
460 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
461 fNode.setName(fieldName) ; fNode.setMesh(m1)
462 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
463 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
464 fNode.checkCoherency()
465 f.setFieldNoProfileSBT(fNode)
466 fs.pushBackTimeStep(f)
467 ##### Time step 2 on cells
470 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
471 fCell0.setName(fieldName) ; fCell0.setMesh(m)
472 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
473 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
474 fCell0.checkCoherency()
475 f.setFieldNoProfileSBT(fCell0)
477 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
478 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
479 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
480 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
481 fCell1.checkCoherency()
482 f.setFieldNoProfileSBT(fCell1)
483 fs.pushBackTimeStep(f)
484 ##### Time step 3 on nodes
487 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
488 fNode.setName(fieldName) ; fNode.setMesh(m1)
489 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
490 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
491 fNode.checkCoherency()
492 f.setFieldNoProfileSBT(fNode)
493 fs.pushBackTimeStep(f)
497 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
498 fCell0.setName(fieldName) ; fCell0.setMesh(m)
499 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
500 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
501 fCell0.checkCoherency()
502 f.setFieldNoProfileSBT(fCell0)
504 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
505 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
506 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
507 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
508 fCell1.checkCoherency()
509 f.setFieldNoProfileSBT(fCell1)
511 fs.pushBackTimeStep(f)
514 a0Exp=mm.getCoords().deepCpy()
515 del m,m1,mm,fs,f,fCell0,fCell1
516 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
517 ms=MEDFileMeshes(fname)
518 fields=MEDFileFields(fname,False)
519 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
520 allFMTSLeavesToDisplay=[]
521 for fields in fields_per_mesh:
522 allFMTSLeavesToDisplay2=[]
524 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
526 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
528 self.assertEqual(len(allFMTSLeavesToDisplay),1)
529 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
530 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
531 self.assertEqual(len(allFMTSLeavesPerTimeSeries),2) # two time series here : one for the cells, the second one for the nodes
532 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
533 self.assertEqual(len(allFMTSLeavesPerTimeSeries[1]),1)
534 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
535 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
536 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
538 mst=MEDFileMeshStruct.New(ms[0])
539 fcscp=allFMTSLeavesPerCommonSupport[0][1] # start with the cells
540 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
542 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
543 for i in xrange(1,3):
544 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
546 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
547 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
548 self.assertTrue(a1.isEqual(DataArrayByte([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,9,9,9,9,9])))
549 self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96])))
550 self.assertTrue(a3.isEqual(DataArrayInt([2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28,3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31])))
555 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
556 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
557 f.loadArraysIfNecessary()
558 self.assertEqual(f.getName(),"zeField")
559 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
560 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
561 vExp=DataArrayDouble([200.,201.,202.,203.,204.,205.,206.,207.,208.,209.,210.,211.,212.,213.,214.,215.,216.,217.,218.,219.,220.,221.,222.,223.,224.,225.,226.,227.,228.,229.,230.,231.,232.,233.,234.,235.,236.,237.,238.,239.,240.,241.,242.,243.,244.,245.,246.,247.,248.,249.,250.,251.,252.,253.,254.,255.,256.,257.,258.,259.,260.,261.,262.,263.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,111.,112.,113.,114.,115.,116.,117.],41,2) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp+=i*2000
562 self.assertTrue(v.isEqual(vExp,1e-12))
565 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[1],ms[ms.getMeshesNames()[0]])
566 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
567 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
568 fcscp=allFMTSLeavesPerCommonSupport[0][1]
569 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
571 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
572 for i in xrange(1,2):
573 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
575 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
576 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
577 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
578 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32])))
579 self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31])))
580 self.assertTrue(a4 is None)
581 self.assertTrue(a5 is None)
583 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
584 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
585 f.loadArraysIfNecessary()
586 self.assertEqual(f.getName(),"zeField")
587 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
588 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
589 vExp=DataArrayDouble([300.,301.,302.,303.,304.,305.,306.,307.,308.,309.,310.,311.,312.,313.,314.,315.,316.,317.,318.,319.,320.,321.,322.,323.,324.,325.,326.,327.,328.,329.,330.,331.,332.,333.,334.,335.,336.,337.,338.,339.,340.,341.,342.,343.,344.,345.,346.,347.,348.,349.,350.,351.,352.,353.,354.,355.,356.,357.,358.,359.,360.,361.,362.,363.],32,2) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp.setInfoOnComponents(['Comp1 [m]','Com2 [s^2]']) ; vExp+=i*2000+1000
590 self.assertTrue(v.isEqual(vExp,1e-12))
595 """ This test defines 3 fields on nodes on the same mesh. All of these fields have no profile.
597 fname="ForMEDReader4.med"
598 # building a mesh containing 4 tri3 + 5 quad4
599 tri=MEDCouplingUMesh("tri",2)
600 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
601 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
602 tris=[tri.deepCpy() for i in xrange(4)]
603 for i,elt in enumerate(tris): elt.translate([i,0])
604 tris=MEDCouplingUMesh.MergeUMeshes(tris)
605 quad=MEDCouplingUMesh("quad",2)
606 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
607 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
608 quads=[quad.deepCpy() for i in xrange(5)]
609 for i,elt in enumerate(quads): elt.translate([5+i,0])
610 quads=MEDCouplingUMesh.MergeUMeshes(quads)
611 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
612 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
613 mm=MEDFileUMesh() ; mm.setMeshes([m])
615 fieldName1="zeField1"
616 fieldName2="zeField2"
617 fieldName3="zeField3"
618 fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
622 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
623 fNode.setName(fieldName1) ; fNode.setMesh(m)
624 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
625 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
626 fNode.checkCoherency()
627 f.setFieldNoProfileSBT(fNode)
628 fs1.pushBackTimeStep(f)
631 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
632 fNode.setName(fieldName2) ; fNode.setMesh(m)
633 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
634 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
635 fNode.checkCoherency()
636 f.setFieldNoProfileSBT(fNode)
637 fs2.pushBackTimeStep(f)
640 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
641 fNode.setName(fieldName3) ; fNode.setMesh(m)
642 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
643 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
644 fNode.checkCoherency()
645 f.setFieldNoProfileSBT(fNode)
646 fs3.pushBackTimeStep(f)
650 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
651 fNode.setName(fieldName1) ; fNode.setMesh(m)
652 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
653 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
654 fNode.checkCoherency()
655 f.setFieldNoProfileSBT(fNode)
656 fs1.pushBackTimeStep(f)
659 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
660 fNode.setName(fieldName2) ; fNode.setMesh(m)
661 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
662 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
663 fNode.checkCoherency()
664 f.setFieldNoProfileSBT(fNode)
665 fs2.pushBackTimeStep(f)
668 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
669 fNode.setName(fieldName3) ; fNode.setMesh(m)
670 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
671 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
672 fNode.checkCoherency()
673 f.setFieldNoProfileSBT(fNode)
674 fs3.pushBackTimeStep(f)
678 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
679 fNode.setName(fieldName1) ; fNode.setMesh(m)
680 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
681 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
682 fNode.checkCoherency()
683 f.setFieldNoProfileSBT(fNode)
684 fs1.pushBackTimeStep(f)
687 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
688 fNode.setName(fieldName2) ; fNode.setMesh(m)
689 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
690 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
691 fNode.checkCoherency()
692 f.setFieldNoProfileSBT(fNode)
693 fs2.pushBackTimeStep(f)
696 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
697 fNode.setName(fieldName3) ; fNode.setMesh(m)
698 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
699 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
700 fNode.checkCoherency()
701 f.setFieldNoProfileSBT(fNode)
702 fs3.pushBackTimeStep(f)
706 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
707 fNode.setName(fieldName1) ; fNode.setMesh(m)
708 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
709 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
710 fNode.checkCoherency()
711 f.setFieldNoProfileSBT(fNode)
712 fs1.pushBackTimeStep(f)
715 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
716 fNode.setName(fieldName2) ; fNode.setMesh(m)
717 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
718 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
719 fNode.checkCoherency()
720 f.setFieldNoProfileSBT(fNode)
721 fs2.pushBackTimeStep(f)
724 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
725 fNode.setName(fieldName3) ; fNode.setMesh(m)
726 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
727 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
728 fNode.checkCoherency()
729 f.setFieldNoProfileSBT(fNode)
730 fs3.pushBackTimeStep(f)
734 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
735 fNode.setName(fieldName1) ; fNode.setMesh(m)
736 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
737 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
738 fNode.checkCoherency()
739 f.setFieldNoProfileSBT(fNode)
740 fs1.pushBackTimeStep(f)
743 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
744 fNode.setName(fieldName2) ; fNode.setMesh(m)
745 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
746 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
747 fNode.checkCoherency()
748 f.setFieldNoProfileSBT(fNode)
749 fs2.pushBackTimeStep(f)
752 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
753 fNode.setName(fieldName3) ; fNode.setMesh(m)
754 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
755 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
756 fNode.checkCoherency()
757 f.setFieldNoProfileSBT(fNode)
758 fs3.pushBackTimeStep(f)
761 fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
762 a0Exp=mm.getCoords().deepCpy()
763 del m,mm,fs1,fs2,fs3,f,fNode
764 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
765 ms=MEDFileMeshes(fname)
766 fields=MEDFileFields(fname,False)
767 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
768 allFMTSLeavesToDisplay=[]
769 for fields in fields_per_mesh:
770 allFMTSLeavesToDisplay2=[]
772 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
774 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
776 self.assertEqual(len(allFMTSLeavesToDisplay),1)
777 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
778 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
779 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
780 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
781 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
782 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
783 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
785 mst=MEDFileMeshStruct.New(ms[0])
786 fcscp=allFMTSLeavesPerCommonSupport[0][1]
787 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
788 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
789 fcscp=allFMTSLeavesPerCommonSupport[0][1]
790 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
792 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
793 for i in xrange(1,5):
794 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
796 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
797 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
798 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
799 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32])))
800 self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31])))
801 self.assertTrue(a4 is None)
802 self.assertTrue(a5 is None)
803 # test all the time steps of the 1/1 time step serie, on field 1
805 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
806 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
807 f.loadArraysIfNecessary()
808 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
809 self.assertEqual(f.getName(),fieldName1)
810 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
811 vExp=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.,25.,26.,27.,28.,29.,30.,31.,32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,46.,47.,48.,49.,50.,51.,52.,53.,54.,55.,56.,57.,58.,59.,60.,61.,62.,63.],32,2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]']) ; vExp+=i*1000
812 self.assertTrue(v.isEqual(vExp,1e-12))
814 # test all the time steps of the 1/1 time step serie, on field 2
816 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
817 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
818 f.loadArraysIfNecessary()
819 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
820 self.assertEqual(f.getName(),fieldName2)
821 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
822 vExp=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.,25.,26.,27.,28.,29.,30.,31.,32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,46.,47.,48.,49.,50.,51.,52.,53.,54.,55.,56.,57.,58.,59.,60.,61.,62.,63.],32,2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]']) ; vExp+=i*1000+100
823 self.assertTrue(v.isEqual(vExp,1e-12))
825 # test all the time steps of the 1/1 time step serie, on field 3
827 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
828 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
829 f.loadArraysIfNecessary()
830 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
831 self.assertEqual(f.getName(),fieldName3)
832 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
833 vExp=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.,25.,26.,27.,28.,29.,30.,31.,32.,33.,34.,35.,36.,37.,38.,39.,40.,41.,42.,43.,44.,45.,46.,47.,48.,49.,50.,51.,52.,53.,54.,55.,56.,57.,58.,59.,60.,61.,62.,63.],32,2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]']) ; vExp+=i*1000+200
834 self.assertTrue(v.isEqual(vExp,1e-12))
839 """ This test plays with profiles both cell profiles and node profiles. Two first fields (resp on cells and on nodes) lie on the same mesh support whereas the third
840 mesh lies on a different mesh.
842 fname="ForMEDReader5.med"
843 # building a mesh containing 6 tri3 + 5 quad4
844 m=MEDCouplingUMesh("mesh",2)
845 coords=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(3,1),(4,1),(0,2),(1,2),(2,2),(3,2),(4,2)]) ; coords.setInfoOnComponents(["XX [m]","YYY [km]"])
848 m.insertNextCell(NORM_TRI3,[2,7,3]) ; m.insertNextCell(NORM_TRI3,[7,8,3]) ; m.insertNextCell(NORM_TRI3,[3,8,4]) ; m.insertNextCell(NORM_TRI3,[8,9,4])
849 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
850 m.insertNextCell(NORM_QUAD4,[0,5,6,1]) ; m.insertNextCell(NORM_QUAD4,[1,6,7,2]) ; m.insertNextCell(NORM_QUAD4,[5,10,11,6]) ; m.insertNextCell(NORM_QUAD4,[6,11,12,7])
851 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
852 mm=MEDFileUMesh() ; mm.setMeshes([m])
854 fieldName1="zeField1" ; pfl1=DataArrayInt([0,1,2,3,4,5]) ; pfl1.setName("pfl1") # on cells
855 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,13,14]) ; pfl2.setName("pfl2") # on nodes
856 fieldName3="zeField3" ; pfl3=DataArrayInt([0,1,2,3,4,5,9,10]) ; pfl3.setName("pfl3") # on cells but different support
857 fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
861 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
862 fNode.setName(fieldName1)
863 arr=DataArrayDouble(2*6) ; arr.iota(0+1000*i) ; arr.rearrange(2)
864 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
865 f.setFieldProfile(fNode,mm,0,pfl1)
866 fs1.pushBackTimeStep(f)
869 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
870 fNode.setName(fieldName2)
871 arr=DataArrayDouble(2*8) ; arr.iota(100+1000*i) ; arr.rearrange(2)
872 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
873 f.setFieldProfile(fNode,mm,0,pfl2)
874 fs2.pushBackTimeStep(f)
877 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
878 fNode.setName(fieldName3)
879 arr=DataArrayDouble(2*8) ; arr.iota(200+1000*i) ; arr.rearrange(2)
880 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
881 f.setFieldProfile(fNode,mm,0,pfl3)
882 fs3.pushBackTimeStep(f)
885 fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
886 a0Exp=mm.getCoords().deepCpy()
887 del m,mm,fs1,fs2,fs3,f,fNode
888 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
889 ms=MEDFileMeshes(fname)
890 fields=MEDFileFields(fname,False)
891 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
892 allFMTSLeavesToDisplay=[]
893 for fields in fields_per_mesh:
894 allFMTSLeavesToDisplay2=[]
896 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
898 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
900 self.assertEqual(len(allFMTSLeavesToDisplay),1)
901 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
902 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
903 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
904 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
905 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
906 ms[0].getDirectUndergroundSingleGeoTypeMeshes(0)
907 self.assertEqual(len(allFMTSLeavesPerCommonSupport),2) # 2 support here
908 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
909 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
911 mst=MEDFileMeshStruct.New(ms[0])
912 fcscp=allFMTSLeavesPerCommonSupport[0][1]
913 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
915 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
916 for i in xrange(1,5):
917 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
919 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
920 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
921 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5])))
922 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18])))
923 self.assertTrue(a3.isEqual(DataArrayInt([3,0,3,1,3,3,4,1,3,1,4,2,3,4,5,2,3,6,5,4,3,6,7,5])))
928 fieldNames=[fieldName1,fieldName2]
931 f=allFMTSLeavesPerCommonSupport[0][0][j][i]
932 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
933 f.loadArraysIfNecessary()
934 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
935 self.assertEqual(f.getName(),fieldNames[j])
936 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
937 vExp=DataArrayDouble(nbOfT[j]*2) ; vExp.iota(j*100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_%(i)i [m]'%m,'Com2_%(i)i [s^2]'%m])
938 self.assertTrue(v.isEqual(vExp,1e-12))
941 # Let's go for the 2nd support
942 fcscp=allFMTSLeavesPerCommonSupport[1][1]
943 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
945 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
946 for i in xrange(1,5):
947 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
949 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
950 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
951 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9])))
952 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26])))
953 self.assertTrue(a3.isEqual(DataArrayInt([3,2,7,3,3,7,8,3,3,3,8,4,3,8,9,4,3,13,9,8,3,13,14,9,4,6,11,12,7,4,12,13,8,7])))
954 self.assertTrue(a4 is None)
955 self.assertTrue(a5 is None)
957 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
958 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
959 f.loadArraysIfNecessary()
960 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
961 self.assertEqual(f.getName(),"zeField3")
962 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
963 vExp=DataArrayDouble(8*2) ; vExp.iota(200+1000*i) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]'%m,'Com2_2 [s^2]'%m])
964 self.assertTrue(v.isEqual(vExp,1e-12))
969 """ This test plays with cartesian mesh and profiles. When a sub cartesian mesh can also be considered as a cartesian mesh it is done.
971 fname="ForMEDReader6.med"
972 m=MEDCouplingCMesh("mesh")
973 coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
974 coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
975 m.setCoords(coordsX,coordsY)
976 mm=MEDFileCMesh() ; mm.setMesh(m)
978 fieldName0="zeField0" ; # on cells
979 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
980 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
981 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
982 fieldName4="zeField4" ;# on nodes
983 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
987 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
988 fNode.setName(fieldName0) ; fNode.setMesh(m)
989 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
990 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
991 f.setFieldNoProfileSBT(fNode)
992 fs0.pushBackTimeStep(f)
995 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
996 fNode.setName(fieldName1)
997 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
998 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
999 f.setFieldProfile(fNode,mm,0,pfl1)
1000 self.assertEqual(pfl1.getName(),"pfl1")
1001 fs1.pushBackTimeStep(f)
1004 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1005 fNode.setName(fieldName2)
1006 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1007 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1008 f.setFieldProfile(fNode,mm,0,pfl2)
1009 self.assertEqual(pfl2.getName(),"pfl2")
1010 fs2.pushBackTimeStep(f)
1013 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1014 fNode.setName(fieldName3)
1015 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1016 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1017 f.setFieldProfile(fNode,mm,0,pfl3)
1018 self.assertEqual(pfl3.getName(),"pfl3")
1019 fs3.pushBackTimeStep(f)
1022 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1023 fNode.setName(fieldName4) ; fNode.setMesh(m)
1024 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1025 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1026 f.setFieldNoProfileSBT(fNode)
1027 fs4.pushBackTimeStep(f)
1030 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1031 del m,mm,fs1,fs2,fs3,f,fNode
1032 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1033 ms=MEDFileMeshes(fname)
1034 fields=MEDFileFields(fname,False)
1035 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1036 allFMTSLeavesToDisplay=[]
1037 for fields in fields_per_mesh:
1038 allFMTSLeavesToDisplay2=[]
1040 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1042 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1044 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1045 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1046 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1047 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1048 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1049 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1050 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1051 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1052 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1053 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1055 mst=MEDFileMeshStruct.New(ms[0])
1057 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1058 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1060 a,b=mml2.buildVTUArrays()
1061 self.assertTrue(a.isEqual(coordsX,1e-12))
1062 self.assertTrue(b.isEqual(coordsY,1e-12))
1063 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
1064 for i in xrange(1,5):
1065 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1068 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1069 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1070 f.loadArraysIfNecessary()
1071 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1072 self.assertEqual(f.getName(),fieldName0)
1073 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1074 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1075 self.assertTrue(v.isEqual(vExp,1e-12))
1077 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1078 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1079 f.loadArraysIfNecessary()
1080 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1081 self.assertEqual(f.getName(),fieldName4)
1082 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1083 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1084 self.assertTrue(v.isEqual(vExp,1e-12))
1087 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1088 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1090 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1091 a,b=mml2.buildVTUArrays()
1092 self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
1093 self.assertTrue(b.isEqual(coordsY,1e-12))
1094 for i in xrange(1,5):
1095 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1098 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1099 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1100 f.loadArraysIfNecessary()
1101 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1102 self.assertEqual(f.getName(),fieldName1)
1103 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1104 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1105 self.assertTrue(v.isEqual(vExp,1e-12))
1107 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1108 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1109 f.loadArraysIfNecessary()
1110 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1111 self.assertEqual(f.getName(),fieldName2)
1112 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1113 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1114 self.assertTrue(v.isEqual(vExp,1e-12))
1117 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1118 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1120 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1121 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1122 a0Exp=DataArrayDouble([0.,0.,1.1,0.,2.2,0.,3.3,0.,4.4,0.,0.,1.7,1.1,1.7,2.2,1.7,3.3,1.7,4.4,1.7,0.,3.4,1.1,3.4,2.2,3.4,3.3,3.4,4.4,3.4],15,2)
1123 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1124 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1125 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1126 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16])))
1127 self.assertTrue(a3.isEqual(DataArrayInt([4,3,2,7,8,4,4,3,8,9,4,7,6,11,12,4,9,8,13,14])))
1128 self.assertTrue(a4 is None)
1129 self.assertTrue(a5 is None)
1131 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1132 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1133 f.loadArraysIfNecessary()
1134 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1135 self.assertEqual(f.getName(),fieldName3)
1136 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1137 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1138 self.assertTrue(v.isEqual(vExp,1e-12))
1143 """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
1144 This test is very similar to the test6.
1146 fname="ForMEDReader7.med"
1147 m=MEDCouplingCurveLinearMesh("mesh") ; m.setNodeGridStructure([5,3])
1148 a0Exp=DataArrayDouble([0.,0.,1.1,0.,2.2,0.,3.3,0.,4.4,0.,0.,1.7,1.1,1.7,2.2,1.7,3.3,1.7,4.4,1.7,0.,3.4,1.1,3.4,2.2,3.4,3.3,3.4,4.4,3.4],15,2)
1149 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1151 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
1153 fieldName0="zeField0" ; # on cells
1154 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1155 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1156 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1157 fieldName4="zeField4" ;# on nodes
1158 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1162 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1163 fNode.setName(fieldName0) ; fNode.setMesh(m)
1164 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1165 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1166 f.setFieldNoProfileSBT(fNode)
1167 fs0.pushBackTimeStep(f)
1170 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1171 fNode.setName(fieldName1)
1172 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1173 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1174 f.setFieldProfile(fNode,mm,0,pfl1)
1175 self.assertEqual(pfl1.getName(),"pfl1")
1176 fs1.pushBackTimeStep(f)
1179 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1180 fNode.setName(fieldName2)
1181 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1182 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1183 f.setFieldProfile(fNode,mm,0,pfl2)
1184 self.assertEqual(pfl2.getName(),"pfl2")
1185 fs2.pushBackTimeStep(f)
1188 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1189 fNode.setName(fieldName3)
1190 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1191 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1192 f.setFieldProfile(fNode,mm,0,pfl3)
1193 self.assertEqual(pfl3.getName(),"pfl3")
1194 fs3.pushBackTimeStep(f)
1197 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1198 fNode.setName(fieldName4) ; fNode.setMesh(m)
1199 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1200 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1201 f.setFieldNoProfileSBT(fNode)
1202 fs4.pushBackTimeStep(f)
1205 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1206 del m,mm,fs1,fs2,fs3,f,fNode
1207 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1208 ms=MEDFileMeshes(fname)
1209 fields=MEDFileFields(fname,False)
1210 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1211 allFMTSLeavesToDisplay=[]
1212 for fields in fields_per_mesh:
1213 allFMTSLeavesToDisplay2=[]
1215 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1217 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1219 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1220 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1221 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1222 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1223 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1224 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1225 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1226 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1227 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1228 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1230 mst=MEDFileMeshStruct.New(ms[0])
1232 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1233 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1235 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
1236 a,b=mml2.buildVTUArrays()
1237 self.assertTrue(a.isEqual(a0Exp,1e-12))
1238 self.assertEqual(b,[5,3])
1239 for i in xrange(1,5):
1240 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1243 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1244 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1245 f.loadArraysIfNecessary()
1246 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1247 self.assertEqual(f.getName(),fieldName0)
1248 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1249 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1250 self.assertTrue(v.isEqual(vExp,1e-12))
1252 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1253 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1254 f.loadArraysIfNecessary()
1255 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1256 self.assertEqual(f.getName(),fieldName4)
1257 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1258 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1259 self.assertTrue(v.isEqual(vExp,1e-12))
1262 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1263 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1265 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1266 a,b=mml2.buildVTUArrays()
1267 self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
1268 self.assertEqual(b,[3,3])
1269 for i in xrange(1,5):
1270 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1273 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1274 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1275 f.loadArraysIfNecessary()
1276 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1277 self.assertEqual(f.getName(),fieldName1)
1278 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1279 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1280 self.assertTrue(v.isEqual(vExp,1e-12))
1282 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1283 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1284 f.loadArraysIfNecessary()
1285 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1286 self.assertEqual(f.getName(),fieldName2)
1287 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1288 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1289 self.assertTrue(v.isEqual(vExp,1e-12))
1292 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1293 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1295 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1296 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1297 a0Exp=DataArrayDouble([0.,0.,1.1,0.,2.2,0.,3.3,0.,4.4,0.,0.,1.7,1.1,1.7,2.2,1.7,3.3,1.7,4.4,1.7,0.,3.4,1.1,3.4,2.2,3.4,3.3,3.4,4.4,3.4],15,2)
1298 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1299 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1300 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1301 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16])))
1302 self.assertTrue(a3.isEqual(DataArrayInt([4,3,2,7,8,4,4,3,8,9,4,7,6,11,12,4,9,8,13,14])))
1303 self.assertTrue(a4 is None)
1304 self.assertTrue(a5 is None)
1306 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1307 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1308 f.loadArraysIfNecessary()
1309 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1310 self.assertEqual(f.getName(),fieldName3)
1311 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1312 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1313 self.assertTrue(v.isEqual(vExp,1e-12))
1318 """ This test plays with with gauss fields with no profiles.
1320 fname="ForMEDReader8.med"
1321 # building a mesh containing 6 tri3 + 5 quad4
1322 m=MEDCouplingUMesh("mesh",2)
1323 coords=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(3,1),(4,1),(0,2),(1,2),(2,2),(3,2),(4,2)]) ; coords.setInfoOnComponents(["XX [m]","YYY [km]"])
1326 m.insertNextCell(NORM_TRI3,[2,7,3]) ; m.insertNextCell(NORM_TRI3,[7,8,3]) ; m.insertNextCell(NORM_TRI3,[3,8,4]) ; m.insertNextCell(NORM_TRI3,[8,9,4])
1327 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1328 m.insertNextCell(NORM_QUAD4,[0,5,6,1]) ; m.insertNextCell(NORM_QUAD4,[1,6,7,2]) ; m.insertNextCell(NORM_QUAD4,[5,10,11,6]) ; m.insertNextCell(NORM_QUAD4,[6,11,12,7])
1329 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1330 mm=MEDFileUMesh() ; mm.setMeshes([m])
1332 fieldName0="zeField0"
1333 fieldName1="zeField1"
1334 fieldName2="zeField2"
1335 fieldName3="zeField3"
1336 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1339 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1340 fNode.setName(fieldName0) ; fNode.setMesh(m)
1341 arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1342 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1343 f.setFieldNoProfileSBT(fNode)
1344 fs0.pushBackTimeStep(f)
1347 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1348 fNode.setName(fieldName1) ; fNode.setMesh(m)
1349 arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1350 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1351 f.setFieldNoProfileSBT(fNode)
1352 fs1.pushBackTimeStep(f)
1355 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1356 fNode.setName(fieldName2) ; fNode.setMesh(m)
1357 fNode.setGaussLocalizationOnCells([0,1,2,3],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1358 fNode.setGaussLocalizationOnCells([4,5],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
1359 fNode.setGaussLocalizationOnCells([6,7,8],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1360 fNode.setGaussLocalizationOnCells([9,10],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1361 arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1362 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1363 f.setFieldNoProfileSBT(fNode)
1364 fs2.pushBackTimeStep(f)
1367 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1368 fNode.setName(fieldName3) ; fNode.setMesh(m)
1369 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1370 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1371 f.setFieldNoProfileSBT(fNode)
1372 fs3.pushBackTimeStep(f)
1377 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1378 a0Exp=mm.getCoords().deepCpy()
1379 del m,mm,fs1,fs2,fs3,f,fNode
1380 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1381 ms=MEDFileMeshes(fname)
1382 fields=MEDFileFields(fname,False)
1383 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1384 allFMTSLeavesToDisplay=[]
1385 for fields in fields_per_mesh:
1386 allFMTSLeavesToDisplay2=[]
1388 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1390 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1392 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1393 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1394 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1395 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1396 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1397 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1398 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1399 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1401 mst=MEDFileMeshStruct.New(ms[0])
1403 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1404 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1406 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1407 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1408 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1409 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9])))
1410 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26,30,34,38])))
1411 self.assertTrue(a3.isEqual(DataArrayInt([3,2,7,3,3,7,8,3,3,3,8,4,3,8,9,4,3,13,9,8,3,13,14,9,4,0,5,6,1,4,1,6,7,2,4,5,10,11,6,4,6,11,12,7,4,12,13,8,7])))
1412 self.assertTrue(a4 is None)
1413 self.assertTrue(a5 is None)
1414 for i in xrange(1,5):
1415 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1418 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1419 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1420 f.loadArraysIfNecessary()
1421 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1422 self.assertEqual(f.getName(),fieldName0)
1423 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1424 vExp=DataArrayDouble(38*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1425 self.assertTrue(v.isEqual(vExp,1e-12))
1427 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1428 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1429 f.loadArraysIfNecessary()
1430 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1431 self.assertEqual(f.getName(),fieldName1)
1432 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1433 vExp=DataArrayDouble(11*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1434 self.assertTrue(v.isEqual(vExp,1e-12))
1436 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1437 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1438 f.loadArraysIfNecessary()
1439 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1440 self.assertEqual(f.getName(),fieldName2)
1441 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1442 vExp=DataArrayDouble(44*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1443 self.assertTrue(v.isEqual(vExp,1e-12))
1445 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1446 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1447 f.loadArraysIfNecessary()
1448 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1449 self.assertEqual(f.getName(),fieldName3)
1450 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1451 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1452 self.assertTrue(v.isEqual(vExp,1e-12))
1458 """ This test plays with with gauss fields with profiles.
1460 fname="ForMEDReader9.med"
1461 # building a mesh containing 6 tri3 + 5 quad4
1462 m=MEDCouplingUMesh("mesh",2)
1463 coords=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(3,1),(4,1),(0,2),(1,2),(2,2),(3,2),(4,2)]) ; coords.setInfoOnComponents(["XX [m]","YYY [km]"])
1466 m.insertNextCell(NORM_TRI3,[2,7,3]) ; m.insertNextCell(NORM_TRI3,[7,8,3]) ; m.insertNextCell(NORM_TRI3,[3,8,4]) ; m.insertNextCell(NORM_TRI3,[8,9,4])
1467 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1468 m.insertNextCell(NORM_QUAD4,[0,5,6,1]) ; m.insertNextCell(NORM_QUAD4,[1,6,7,2]) ; m.insertNextCell(NORM_QUAD4,[5,10,11,6]) ; m.insertNextCell(NORM_QUAD4,[6,11,12,7])
1469 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1470 mm=MEDFileUMesh() ; mm.setMeshes([m])
1472 fieldName0="zeField0"
1473 fieldName1="zeField1"
1474 fieldName2="zeField2"
1475 fieldName3="zeField3"
1476 pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
1477 pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
1478 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1481 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1482 fNode.setName(fieldName0)
1483 arr=DataArrayDouble(2*18) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1484 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1485 f.setFieldProfile(fNode,mm,0,pfl1)
1486 fs0.pushBackTimeStep(f)
1489 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1490 fNode.setName(fieldName1)
1491 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1492 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1493 f.setFieldProfile(fNode,mm,0,pfl1)
1494 fs1.pushBackTimeStep(f)
1497 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1498 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1499 fNode.setGaussLocalizationOnCells([0],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1500 fNode.setGaussLocalizationOnCells([1],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
1501 fNode.setGaussLocalizationOnCells([2,3],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1502 fNode.setGaussLocalizationOnCells([4],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1503 arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1504 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1505 f.setFieldProfile(fNode,mm,0,pfl1)
1506 fs2.pushBackTimeStep(f)
1509 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1510 fNode.setName(fieldName3)
1511 arr=DataArrayDouble(2*9) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1512 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1513 f.setFieldProfile(fNode,mm,0,pfl2)
1514 fs3.pushBackTimeStep(f)
1519 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1520 a0Exp=mm.getCoords().deepCpy()
1521 del m,mm,fs1,fs2,fs3,f,fNode
1522 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1523 ms=MEDFileMeshes(fname)
1524 fields=MEDFileFields(fname,False)
1525 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1526 allFMTSLeavesToDisplay=[]
1527 for fields in fields_per_mesh:
1528 allFMTSLeavesToDisplay2=[]
1530 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1532 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1534 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1535 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1536 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1537 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1538 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1539 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1540 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1541 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1543 mst=MEDFileMeshStruct.New(ms[0])
1545 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1546 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1548 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1549 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1550 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
1551 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1552 self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18])))
1553 self.assertTrue(a3.isEqual(DataArrayInt([3,1,4,2,3,4,5,2,4,0,3,4,1,4,3,6,7,4,4,7,8,5,4])))
1554 self.assertTrue(a4 is None)
1555 self.assertTrue(a5 is None)
1556 for i in xrange(1,5):
1557 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1560 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1561 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1562 f.loadArraysIfNecessary()
1563 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1564 self.assertEqual(f.getName(),fieldName0)
1565 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1566 vExp=DataArrayDouble(18*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1567 self.assertTrue(v.isEqual(vExp,1e-12))
1569 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1570 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1571 f.loadArraysIfNecessary()
1572 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1573 self.assertEqual(f.getName(),fieldName1)
1574 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1575 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1576 self.assertTrue(v.isEqual(vExp,1e-12))
1578 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1579 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1580 f.loadArraysIfNecessary()
1581 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1582 self.assertEqual(f.getName(),fieldName2)
1583 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1584 vExp=DataArrayDouble(22*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1585 self.assertTrue(v.isEqual(vExp,1e-12))
1587 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1588 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1589 f.loadArraysIfNecessary()
1590 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1591 self.assertEqual(f.getName(),fieldName3)
1592 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1593 vExp=DataArrayDouble(9*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1594 self.assertTrue(v.isEqual(vExp,1e-12))
1599 """ This test plays with fields only on nodes containing profiles.
1601 fname="ForMEDReader10.med"
1602 # building a mesh containing 6 tri3 + 5 quad4
1603 m=MEDCouplingUMesh("mesh",2)
1604 coords=DataArrayDouble([(0,0),(1,0),(2,0),(3,0),(4,0),(0,1),(1,1),(2,1),(3,1),(4,1),(0,2),(1,2),(2,2),(3,2),(4,2)]) ; coords.setInfoOnComponents(["XX [m]","YYY [km]"])
1607 m.insertNextCell(NORM_TRI3,[2,7,3]) ; m.insertNextCell(NORM_TRI3,[7,8,3]) ; m.insertNextCell(NORM_TRI3,[3,8,4]) ; m.insertNextCell(NORM_TRI3,[8,9,4])
1608 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1609 m.insertNextCell(NORM_QUAD4,[0,5,6,1]) ; m.insertNextCell(NORM_QUAD4,[1,6,7,2]) ; m.insertNextCell(NORM_QUAD4,[5,10,11,6]) ; m.insertNextCell(NORM_QUAD4,[6,11,12,7])
1610 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1611 mm=MEDFileUMesh() ; mm.setMeshes([m])
1613 fieldName0="zeField0"
1614 fieldName1="zeField1"
1615 fieldName2="zeField2"
1616 pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
1617 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
1620 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1621 fNode.setName(fieldName0)
1622 arr=DataArrayDouble(2*9) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1623 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1624 f.setFieldProfile(fNode,mm,0,pfl1)
1625 fs0.pushBackTimeStep(f)
1628 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1629 fNode.setName(fieldName1)
1630 arr=DataArrayDouble(2*9) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1631 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1632 f.setFieldProfile(fNode,mm,0,pfl1)
1633 fs1.pushBackTimeStep(f)
1636 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1637 fNode.setName(fieldName2)
1638 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1639 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1640 f.setFieldProfile(fNode,mm,0,pfl1)
1641 fs2.pushBackTimeStep(f)
1646 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
1647 a0Exp=mm.getCoords().deepCpy()
1648 del m,mm,fs1,fs2,f,fNode
1649 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1650 ms=MEDFileMeshes(fname)
1651 fields=MEDFileFields(fname,False)
1652 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1653 allFMTSLeavesToDisplay=[]
1654 for fields in fields_per_mesh:
1655 allFMTSLeavesToDisplay2=[]
1657 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1659 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1661 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1662 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
1663 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1664 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1665 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
1666 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1667 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1668 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
1670 mst=MEDFileMeshStruct.New(ms[0])
1672 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1673 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1675 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1676 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1677 self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12))
1678 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1679 self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18])))
1680 self.assertTrue(a3.isEqual(DataArrayInt([3,1,4,2,3,4,5,2,4,0,3,4,1,4,3,6,7,4,4,7,8,5,4])))
1681 self.assertTrue(a4 is None)
1682 self.assertTrue(a5 is None)
1683 for i in xrange(1,5):
1684 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1687 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1688 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1689 f.loadArraysIfNecessary()
1690 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1691 self.assertEqual(f.getName(),fieldName0)
1692 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1693 vExp=DataArrayDouble(9*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1694 self.assertTrue(v.isEqual(vExp,1e-12))
1696 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1697 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1698 f.loadArraysIfNecessary()
1699 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1700 self.assertEqual(f.getName(),fieldName1)
1701 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1702 vExp=DataArrayDouble(9*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1703 self.assertTrue(v.isEqual(vExp,1e-12))
1705 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1706 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1707 f.loadArraysIfNecessary()
1708 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1709 self.assertEqual(f.getName(),fieldName2)
1710 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1711 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1712 self.assertTrue(v.isEqual(vExp,1e-12))
1717 """ This test is the ultimate test for the profiles with gauss points. It tests that even if there is non contiguous parts in definition of gauss points, it works !
1718 WARNING here, as no other discretizations exists, the priority is given to the field -> the mesh is renumbered to accelerate the build of array of field.
1720 fname="ForMEDReader11.med"
1721 m=MEDCouplingCMesh("mesh")
1722 arr=DataArrayDouble(5) ; arr.iota()
1723 m.setCoords(arr,arr)
1724 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1725 mm=MEDFileUMesh() ; mm.setMeshes([m])
1727 fieldName0="zeField0"
1728 fs0=MEDFileFieldMultiTS()
1731 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1732 fNode.setName(fieldName0) ; fNode.setMesh(m)
1733 fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1734 fNode.setGaussLocalizationOnCells([1,5,8,9],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
1735 fNode.setGaussLocalizationOnCells([6,10,13],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1736 fNode.setGaussLocalizationOnCells([11,12,14],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1737 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1738 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1739 f.setFieldNoProfileSBT(fNode)
1740 fs0.pushBackTimeStep(f)
1744 a0Exp=mm.getCoords().deepCpy()
1745 del m,mm,fs0,f,fNode
1746 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1747 ms=MEDFileMeshes(fname)
1748 fields=MEDFileFields(fname,False)
1749 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1750 allFMTSLeavesToDisplay=[]
1751 for fields in fields_per_mesh:
1752 allFMTSLeavesToDisplay2=[]
1754 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1756 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1758 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1759 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
1760 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1761 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 1 field is defined on the same time steps
1762 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
1763 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1764 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1765 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
1767 mst=MEDFileMeshStruct.New(ms[0])
1769 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1770 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1772 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1773 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1774 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1775 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1776 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64])))
1777 self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,9,8,13,14,4,19,18,23,24,4,2,1,6,7,4,7,6,11,12,4,11,10,15,16,4,12,11,16,17,4,8,7,12,13,4,13,12,17,18,4,17,16,21,22,4,14,13,18,19,4,16,15,20,21,4,18,17,22,23]))) # <- here the mesh is renumbered : the mesh is equal to m[[0,2,3,4,7,15, 1,5,8,9, 6,10,13, 11,12,14]]
1778 self.assertTrue(a4 is None)
1779 self.assertTrue(a5 is None)
1780 for i in xrange(1,5):
1781 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1784 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1785 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1786 f.loadArraysIfNecessary()
1787 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1788 self.assertEqual(f.getName(),fieldName0)
1789 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1790 vExp=DataArrayDouble([0.,1.,2.,3.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,44.,45.,46.,47.,126.,127.,128.,129.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,26.,27.,28.,29.,30.,31.,32.,33.,34.,35.,48.,49.,50.,51.,52.,53.,54.,55.,56.,57.,58.,59.,60.,61.,62.,63.,64.,65.,66.,67.,36.,37.,38.,39.,40.,41.,42.,43.,68.,69.,70.,71.,72.,73.,74.,75.,104.,105.,106.,107.,108.,109.,110.,111.,76.,77.,78.,79.,80.,81.,82.,83.,84.,85.,86.,87.,88.,89.,90.,91.,92.,93.,94.,95.,96.,97.,98.,99.,100.,101.,102.,103.,112.,113.,114.,115.,116.,117.,118.,119.,120.,121.,122.,123.,124.,125.],65,2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1792 self.assertTrue(v.isEqual(vExp,1e-12))
1797 """ This test is the second ultimate test for the profiles with gauss points.
1798 This test is close to test11 but here a 2nd field on cells without profile. So here the mesh is expected to be the same than m.
1800 fname="ForMEDReader12.med"
1801 m=MEDCouplingCMesh("mesh")
1802 arr=DataArrayDouble(5) ; arr.iota()
1803 m.setCoords(arr,arr)
1804 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1805 mm=MEDFileUMesh() ; mm.setMeshes([m])
1807 fieldName0="zeField0"
1808 fieldName1="zeField1"
1809 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
1812 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1813 fNode.setName(fieldName0) ; fNode.setMesh(m)
1814 fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1815 fNode.setGaussLocalizationOnCells([1,5,8,9],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
1816 fNode.setGaussLocalizationOnCells([6,10,13],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1817 fNode.setGaussLocalizationOnCells([11,12,14],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1818 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1819 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1820 f.setFieldNoProfileSBT(fNode)
1821 fs0.pushBackTimeStep(f)
1824 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1825 fNode.setName(fieldName1) ; fNode.setMesh(m)
1826 arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1827 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1828 f.setFieldNoProfileSBT(fNode)
1829 fs1.pushBackTimeStep(f)
1832 fs0.write(fname,0) ; fs1.write(fname,0)
1833 a0Exp=mm.getCoords().deepCpy()
1834 del m,mm,fs0,fs1,f,fNode
1835 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1836 ms=MEDFileMeshes(fname)
1837 fields=MEDFileFields(fname,False)
1838 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1839 allFMTSLeavesToDisplay=[]
1840 for fields in fields_per_mesh:
1841 allFMTSLeavesToDisplay2=[]
1843 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1845 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1847 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1848 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
1849 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1850 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1851 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
1852 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1853 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1854 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1856 mst=MEDFileMeshStruct.New(ms[0])
1858 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1859 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1861 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1862 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1863 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1864 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1865 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64])))
1866 self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,5,6,4,2,1,6,7,4,3,2,7,8,4,4,3,8,9,4,6,5,10,11,4,7,6,11,12,4,8,7,12,13,4,9,8,13,14,4,11,10,15,16,4,12,11,16,17,4,13,12,17,18,4,14,13,18,19,4,16,15,20,21,4,17,16,21,22,4,18,17,22,23,4,19,18,23,24]))) # <- here the mesh is NOT renumbered : the mesh is equal to m
1867 self.assertTrue(a4 is None)
1868 self.assertTrue(a5 is None)
1869 for i in xrange(1,5):
1870 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1873 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1874 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1875 f.loadArraysIfNecessary()
1876 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1877 self.assertEqual(f.getName(),fieldName0)
1878 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1879 vExp=DataArrayDouble(65*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1880 self.assertTrue(v.isEqual(vExp,1e-12))
1882 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1883 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1884 f.loadArraysIfNecessary()
1885 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1886 self.assertEqual(f.getName(),fieldName1)
1887 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1888 vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1889 self.assertTrue(v.isEqual(vExp,1e-12))
1893 """ Testing polyhedrons mixed with hexa8"""
1894 fname="ForMEDReader13.med"
1895 m=MEDCouplingUMesh("mesh",3)
1897 m.insertNextCell(NORM_HEXA8,[1,0,6,7,13,12,18,19]) ; m.insertNextCell(NORM_HEXA8,[2,1,7,8,14,13,19,20])
1898 m.insertNextCell(NORM_POLYHED,[3,2,8,9,-1,15,21,20,14,-1,3,15,14,2,-1,2,14,20,8,-1,8,20,21,9,-1,9,21,15,3])
1899 m.insertNextCell(NORM_POLYHED,[4,3,9,10,-1,16,22,21,15,-1,4,16,15,3,-1,3,15,21,9,-1,9,21,22,10,-1,10,22,16,4])
1900 m.insertNextCell(NORM_POLYHED,[5,4,10,11,-1,17,23,22,16,-1,5,17,16,4,-1,4,16,22,10,-1,10,22,23,11,-1,11,23,17,5])
1901 coords=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.,0.,1.,1.,0.,1.,2.,0.,1.,3.,0.,1.,4.,0.,1.,5.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,3.,1.,1.,4.,1.,1.,5.,1.,1.],24,3) ; coords.setInfoOnComponents(["XX [m]","YYY [km]","ZZZZ [Mm]"])
1903 mm=MEDFileUMesh() ; mm.setMeshes([m])
1904 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1905 fieldName0="zeField0"
1906 fieldName1="zeField1"
1907 fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
1908 fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
1911 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1912 fNode.setName(fieldName0) ; fNode.setMesh(m)
1913 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1914 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1915 f.setFieldNoProfileSBT(fNode)
1916 fs0.pushBackTimeStep(f)
1919 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1920 fNode.setName(fieldName1) ; fNode.setMesh(m)
1921 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1922 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1923 f.setFieldNoProfileSBT(fNode)
1924 fs1.pushBackTimeStep(f)
1927 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1928 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1929 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1930 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1931 f.setFieldProfile(fNode,mm,0,pfl1)
1932 fs2.pushBackTimeStep(f)
1935 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1936 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
1937 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1938 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1939 f.setFieldProfile(fNode,mm,0,pfl2)
1940 fs3.pushBackTimeStep(f)
1943 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1944 a0Exp=mm.getCoords().deepCpy()
1946 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1947 ms=MEDFileMeshes(fname)
1948 fields=MEDFileFields(fname,False)
1949 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1950 allFMTSLeavesToDisplay=[]
1951 for fields in fields_per_mesh:
1952 allFMTSLeavesToDisplay2=[]
1954 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1956 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1958 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1959 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1960 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1961 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1962 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1963 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1964 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1965 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1966 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
1967 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1969 mst=MEDFileMeshStruct.New(ms[0])
1971 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1972 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1974 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1975 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1976 self.assertTrue(a0.isEqual(a0Exp,1e-12))
1977 self.assertTrue(a1.isEqual(DataArrayByte([12,12,42,42,42])))
1978 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24,32,40])))
1979 self.assertTrue(a3.isEqual(DataArrayInt([8,1,0,6,7,13,12,18,19,8,2,1,7,8,14,13,19,20,8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22,8,4,5,10,11,16,17,22,23])))
1980 self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
1981 self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4,6,4,5,4,10,11,4,17,23,22,16,4,5,17,16,4,4,4,16,22,10,4,10,22,23,11,4,11,23,17,5])))
1982 for i in xrange(1,5):
1983 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1987 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1988 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1989 f.loadArraysIfNecessary()
1990 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1991 self.assertEqual(f.getName(),fieldName0)
1992 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1993 vExp=DataArrayDouble(5*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1994 self.assertTrue(v.isEqual(vExp,1e-12))
1996 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1997 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1998 f.loadArraysIfNecessary()
1999 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2000 self.assertEqual(f.getName(),fieldName1)
2001 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2002 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2003 self.assertTrue(v.isEqual(vExp,1e-12))
2006 fcscp=allFMTSLeavesPerCommonSupport[1][1]
2007 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2009 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2010 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2011 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2012 self.assertTrue(a1.isEqual(DataArrayByte([42,42])))
2013 self.assertTrue(a2.isEqual(DataArrayInt([8,16])))
2014 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
2015 self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
2016 self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4])))
2017 for i in xrange(1,5):
2018 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2022 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
2023 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2024 f.loadArraysIfNecessary()
2025 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2026 self.assertEqual(f.getName(),fieldName2)
2027 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2028 vExp=DataArrayDouble(2*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
2029 self.assertTrue(v.isEqual(vExp,1e-12))
2032 fcscp=allFMTSLeavesPerCommonSupport[2][1]
2033 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2035 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2036 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2037 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2038 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2039 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24])))
2040 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22,8,4,5,10,11,16,17,22,23])))
2041 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2042 self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4,6,4,5,4,10,11,4,17,23,22,16,4,5,17,16,4,4,4,16,22,10,4,10,22,23,11,4,11,23,17,5])))
2043 for i in xrange(1,5):
2044 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2048 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
2049 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2050 f.loadArraysIfNecessary()
2051 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2052 self.assertEqual(f.getName(),fieldName3)
2053 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2054 vExp=DataArrayDouble(3*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
2055 self.assertTrue(v.isEqual(vExp,1e-12))
2060 """ Testing only polyhedrons"""
2061 fname="ForMEDReader14.med"
2062 m=MEDCouplingUMesh("mesh",3)
2064 m.insertNextCell(NORM_POLYHED,[3,2,8,9,-1,15,21,20,14,-1,3,15,14,2,-1,2,14,20,8,-1,8,20,21,9,-1,9,21,15,3])
2065 m.insertNextCell(NORM_POLYHED,[4,3,9,10,-1,16,22,21,15,-1,4,16,15,3,-1,3,15,21,9,-1,9,21,22,10,-1,10,22,16,4])
2066 m.insertNextCell(NORM_POLYHED,[5,4,10,11,-1,17,23,22,16,-1,5,17,16,4,-1,4,16,22,10,-1,10,22,23,11,-1,11,23,17,5])
2067 coords=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.,0.,1.,1.,0.,1.,2.,0.,1.,3.,0.,1.,4.,0.,1.,5.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,3.,1.,1.,4.,1.,1.,5.,1.,1.],24,3) ; coords.setInfoOnComponents(["XX [m]","YYY [km]","ZZZZ [Mm]"])
2069 mm=MEDFileUMesh() ; mm.setMeshes([m])
2070 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
2071 fieldName0="zeField0"
2072 fieldName1="zeField1"
2075 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2076 fNode.setName(fieldName0) ; fNode.setMesh(m)
2077 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2078 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
2079 f.setFieldNoProfileSBT(fNode)
2080 fs0.pushBackTimeStep(f)
2083 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2084 fNode.setName(fieldName1) ; fNode.setMesh(m)
2085 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2086 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2087 f.setFieldNoProfileSBT(fNode)
2088 fs1.pushBackTimeStep(f)
2091 fs0.write(fname,0) ; fs1.write(fname,0)
2092 a0Exp=mm.getCoords().deepCpy()
2094 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2095 ms=MEDFileMeshes(fname)
2096 fields=MEDFileFields(fname,False)
2097 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2098 allFMTSLeavesToDisplay=[]
2099 for fields in fields_per_mesh:
2100 allFMTSLeavesToDisplay2=[]
2102 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2104 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2106 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2107 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2108 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2109 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2110 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2111 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2112 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2113 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2115 mst=MEDFileMeshStruct.New(ms[0])
2117 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2118 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2120 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2121 a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2122 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2123 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2124 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24])))
2125 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22,8,4,5,10,11,16,17,22,23])))
2126 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2127 self.assertTrue(a5.isEqual(DataArrayInt([6,4,3,2,8,9,4,15,21,20,14,4,3,15,14,2,4,2,14,20,8,4,8,20,21,9,4,9,21,15,3,6,4,4,3,9,10,4,16,22,21,15,4,4,16,15,3,4,3,15,21,9,4,9,21,22,10,4,10,22,16,4,6,4,5,4,10,11,4,17,23,22,16,4,5,17,16,4,4,4,16,22,10,4,10,22,23,11,4,11,23,17,5])))
2128 for i in xrange(1,5):
2129 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2133 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2134 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2135 f.loadArraysIfNecessary()
2136 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2137 self.assertEqual(f.getName(),fieldName0)
2138 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2139 vExp=DataArrayDouble(3*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2140 self.assertTrue(v.isEqual(vExp,1e-12))
2142 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2143 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2144 f.loadArraysIfNecessary()
2145 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2146 self.assertEqual(f.getName(),fieldName1)
2147 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2148 vExp=DataArrayDouble(3*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2149 self.assertTrue(v.isEqual(vExp,1e-12))
2155 "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !)
2156 and a field "zeField" lying on a single geometric type for Cell discr and node part.
2157 Test that can appear the most simple but it hides a big issue of MEDReader
2158 that copies are reduced at most. So it can leads to SIGSEGV if the memory management is not OK for int* and double * similar between VTK and MEDCoupling.
2160 fname="ForMEDReader15.med"
2161 m0=MEDCouplingCMesh()
2162 arr=DataArrayDouble(5) ; arr.iota(0)
2163 m0.setCoords(arr,arr,arr)
2165 m0=m0.buildUnstructured()
2168 fCell=MEDCouplingFieldDouble(ON_CELLS)
2169 fCell.setName(fieldName)
2172 fNode=MEDCouplingFieldDouble(ON_NODES)
2173 fNode.setName(fieldName)
2177 mm.setMeshAtLevel(0,m0)
2179 ffs=MEDFileFieldMultiTS()
2182 f1ts=MEDFileField1TS()
2183 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2186 fCell.checkCoherency()
2187 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2191 fNode.checkCoherency()
2192 f1ts.setFieldNoProfileSBT(fCell)
2193 f1ts.setFieldNoProfileSBT(fNode)
2194 ffs.pushBackTimeStep(f1ts)
2196 t=(2.1,1,0) ; off=100.
2197 f1ts=MEDFileField1TS()
2198 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2201 fCell.checkCoherency()
2202 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2206 fNode.checkCoherency()
2207 f1ts.setFieldNoProfileSBT(fCell)
2208 f1ts.setFieldNoProfileSBT(fNode)
2209 ffs.pushBackTimeStep(f1ts)
2211 t=(3.2,2,0) ; off=200.
2212 f1ts=MEDFileField1TS()
2213 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2216 fCell.checkCoherency()
2217 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2221 fNode.checkCoherency()
2222 f1ts.setFieldNoProfileSBT(fCell)
2223 f1ts.setFieldNoProfileSBT(fNode)
2224 ffs.pushBackTimeStep(f1ts)
2226 t=(4.3,3,1) ; off=300.
2227 f1ts=MEDFileField1TS()
2228 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2231 fCell.checkCoherency()
2232 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2236 fNode.checkCoherency()
2237 f1ts.setFieldNoProfileSBT(fCell)
2238 f1ts.setFieldNoProfileSBT(fNode)
2239 ffs.pushBackTimeStep(f1ts)
2243 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values