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])
55 fs=MEDFileFieldMultiTS()
59 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
60 fCell0.setName(fieldName) ; fCell0.setMesh(m)
61 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
62 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
63 fCell0.checkCoherency()
64 f.setFieldNoProfileSBT(fCell0)
65 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
66 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
67 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
68 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
69 fCell1.checkCoherency()
70 f.setFieldNoProfileSBT(fCell1)
71 fs.pushBackTimeStep(f)
75 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
76 fCell0.setName(fieldName) ; fCell0.setMesh(m)
77 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
78 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
79 fCell0.checkCoherency()
80 f.setFieldNoProfileSBT(fCell0)
82 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
83 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
84 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
85 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
86 fCell1.checkCoherency()
87 f.setFieldNoProfileSBT(fCell1)
88 fs.pushBackTimeStep(f)
92 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
93 fCell0.setName(fieldName) ; fCell0.setMesh(m)
94 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
95 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
96 fCell0.checkCoherency()
97 f.setFieldNoProfileSBT(fCell0)
99 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
100 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
101 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
102 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
103 fCell1.checkCoherency()
104 f.setFieldNoProfileSBT(fCell1)
105 fs.pushBackTimeStep(f)
110 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
111 fCell0.setName(fieldName) ; fCell0.setMesh(m)
112 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
113 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
114 fCell0.checkCoherency()
115 f.setFieldNoProfileSBT(fCell0)
117 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
118 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
119 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
120 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
121 fCell1.checkCoherency()
122 f.setFieldNoProfileSBT(fCell1)
124 fs.pushBackTimeStep(f)
129 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
130 fCell0.setName(fieldName) ; fCell0.setMesh(m)
131 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
132 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
133 fCell0.checkCoherency()
134 f.setFieldNoProfileSBT(fCell0)
136 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
137 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
138 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
139 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
140 fCell1.checkCoherency()
141 f.setFieldNoProfileSBT(fCell1)
142 fs.pushBackTimeStep(f)
145 a0Exp=mm.getCoords().deepCpy()
146 del m,m1,mm,fs,f,fCell0,fCell1
147 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
148 ms=MEDFileMeshes(fname)
149 fields=MEDFileFields(fname,False) # False is important to not read the values
150 refMem=fields.getHeapMemorySize()
151 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
152 allFMTSLeavesToDisplay=[]
153 for fields in fields_per_mesh:
154 allFMTSLeavesToDisplay2=[]
156 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
158 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
160 self.assertEqual(len(allFMTSLeavesToDisplay),1)
161 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
162 for fmts in allFMTSLeavesToDisplay[0]:
163 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
165 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
166 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
167 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
168 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
170 mst=MEDFileMeshStruct.New(ms[0])
171 fcscp=MEDFileFastCellSupportComparator.New(mst,allFMTSLeavesPerCommonSupport[0][0])
172 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
173 self.assertTrue(isinstance(mml,MEDUMeshMultiLev))
174 for i in xrange(1,5):
175 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
177 a0,a1,a2,a3,a4,a5=mml.buildVTUArrays()
178 self.assertTrue(a0.isEqual(a0Exp,1e-12))
179 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])))
180 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])))
181 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])))
182 self.assertTrue(a4 is None)
183 self.assertTrue(a5 is None)
185 fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst)
186 fields[0][i].loadArraysIfNecessary()
187 tmpMem=fields.getHeapMemorySize()
188 self.assertTrue(tmpMem-refMem>=41*2*8)
190 v=mml.buildDataArray(fsst,fields,fields[0][i].getUndergroundDataArray())
191 self.assertEqual(v.getHiddenCppPointer(),fields[0][i].getUndergroundDataArray().getHiddenCppPointer())
192 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
193 self.assertTrue(v.isEqual(vExp,1e-12))
199 One time serie of one field with cell and node discretization in the same field with no profiles.
200 Here as there is no profile only one VTK support is requested.
202 fname="ForMEDReader2.med"
203 # building a mesh containing 4 tri3 + 5 quad4
204 tri=MEDCouplingUMesh("tri",2)
205 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
206 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
207 tris=[tri.deepCpy() for i in xrange(4)]
208 for i,elt in enumerate(tris): elt.translate([i,0])
209 tris=MEDCouplingUMesh.MergeUMeshes(tris)
210 quad=MEDCouplingUMesh("quad",2)
211 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
212 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
213 quads=[quad.deepCpy() for i in xrange(5)]
214 for i,elt in enumerate(quads): elt.translate([5+i,0])
215 quads=MEDCouplingUMesh.MergeUMeshes(quads)
216 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
217 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
218 m1=m.buildDescendingConnectivity()[0]
219 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
222 fs=MEDFileFieldMultiTS()
226 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
227 fCell0.setName(fieldName) ; fCell0.setMesh(m)
228 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
229 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
230 fCell0.checkCoherency()
231 f.setFieldNoProfileSBT(fCell0)
232 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
233 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
234 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
235 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
236 fCell1.checkCoherency()
237 f.setFieldNoProfileSBT(fCell1)
239 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
240 fNode.setName(fieldName) ; fNode.setMesh(m1)
241 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2)
242 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
243 fNode.checkCoherency()
244 f.setFieldNoProfileSBT(fNode)
245 fs.pushBackTimeStep(f)
249 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
250 fCell0.setName(fieldName) ; fCell0.setMesh(m)
251 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
252 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
253 fCell0.checkCoherency()
254 f.setFieldNoProfileSBT(fCell0)
256 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
257 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
258 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
259 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
260 fCell1.checkCoherency()
261 f.setFieldNoProfileSBT(fCell1)
263 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
264 fNode.setName(fieldName) ; fNode.setMesh(m1)
265 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
266 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
267 fNode.checkCoherency()
268 f.setFieldNoProfileSBT(fNode)
269 fs.pushBackTimeStep(f)
273 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
274 fNode.setName(fieldName) ; fNode.setMesh(m1)
275 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2)
276 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
277 fNode.checkCoherency()
278 f.setFieldNoProfileSBT(fNode)
280 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
281 fCell0.setName(fieldName) ; fCell0.setMesh(m)
282 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
283 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
284 fCell0.checkCoherency()
285 f.setFieldNoProfileSBT(fCell0)
287 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
288 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
289 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
290 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
291 fCell1.checkCoherency()
292 f.setFieldNoProfileSBT(fCell1)
293 fs.pushBackTimeStep(f)
298 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
299 fCell0.setName(fieldName) ; fCell0.setMesh(m)
300 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
301 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
302 fCell0.checkCoherency()
303 f.setFieldNoProfileSBT(fCell0)
305 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
306 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
307 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
308 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
309 fCell1.checkCoherency()
310 f.setFieldNoProfileSBT(fCell1)
312 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
313 fNode.setName(fieldName) ; fNode.setMesh(m1)
314 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
315 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
316 fNode.checkCoherency()
317 f.setFieldNoProfileSBT(fNode)
319 fs.pushBackTimeStep(f)
324 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
325 fCell0.setName(fieldName) ; fCell0.setMesh(m)
326 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
327 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
328 fCell0.checkCoherency()
329 f.setFieldNoProfileSBT(fCell0)
331 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
332 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
333 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
334 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
335 fCell1.checkCoherency()
336 f.setFieldNoProfileSBT(fCell1)
338 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
339 fNode.setName(fieldName) ; fNode.setMesh(m1)
340 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2)
341 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
342 fNode.checkCoherency()
343 f.setFieldNoProfileSBT(fNode)
345 fs.pushBackTimeStep(f)
348 a0Exp=mm.getCoords().deepCpy()
349 del m,m1,mm,fs,f,fCell0,fCell1
350 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
351 ms=MEDFileMeshes(fname)
352 fields=MEDFileFields(fname,False)
353 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
354 allFMTSLeavesToDisplay=[]
355 for fields in fields_per_mesh:
356 allFMTSLeavesToDisplay2=[]
358 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
360 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
362 self.assertEqual(len(allFMTSLeavesToDisplay),1)
363 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
364 for fmts in allFMTSLeavesToDisplay[0]:
365 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
367 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
368 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
369 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
370 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
371 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
372 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0]),2)
374 mst=MEDFileMeshStruct.New(ms[0])
375 fcscp=MEDFileFastCellSupportComparator.New(mst,allFMTSLeavesPerCommonSupport[0][0])
376 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
377 assert isinstance(mml,MEDUMeshMultiLev)
378 for i in xrange(1,5):
379 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
381 a0,a1,a2,a3,a4,a5=mml.buildVTUArrays()
382 self.assertTrue(a0.isEqual(a0Exp,1e-12))
383 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])))
384 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])))
385 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])))
386 self.assertTrue(a4 is None)
387 self.assertTrue(a5 is None)
390 f=allFMTSLeavesPerCommonSupport[0][0][i]
391 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
392 f.loadArraysIfNecessary()
393 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
394 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
395 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
396 self.assertTrue(v.isEqual(vExp,1e-12))
399 f=allFMTSLeavesPerCommonSupport[0][1][i]
400 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
401 f.loadArraysIfNecessary()
402 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
403 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
404 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
405 self.assertTrue(v.isEqual(vExp,1e-12))