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) ; del fam
55 num=DataArrayInt(9) ; num.iota(100) ; mm.setRenumFieldArr(0,num)
56 num=DataArrayInt(32) ; num.iota(120) ; mm.setRenumFieldArr(-1,num) ; del num
59 fs=MEDFileFieldMultiTS()
63 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
64 fCell0.setName(fieldName) ; fCell0.setMesh(m)
65 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
66 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
67 fCell0.checkCoherency()
68 f.setFieldNoProfileSBT(fCell0)
69 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
70 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
71 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
72 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
73 fCell1.checkCoherency()
74 f.setFieldNoProfileSBT(fCell1)
75 fs.pushBackTimeStep(f)
79 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
80 fCell0.setName(fieldName) ; fCell0.setMesh(m)
81 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
82 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
83 fCell0.checkCoherency()
84 f.setFieldNoProfileSBT(fCell0)
86 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
87 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
88 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
89 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
90 fCell1.checkCoherency()
91 f.setFieldNoProfileSBT(fCell1)
92 fs.pushBackTimeStep(f)
96 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
97 fCell0.setName(fieldName) ; fCell0.setMesh(m)
98 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
99 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
100 fCell0.checkCoherency()
101 f.setFieldNoProfileSBT(fCell0)
103 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
104 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
105 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
106 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
107 fCell1.checkCoherency()
108 f.setFieldNoProfileSBT(fCell1)
109 fs.pushBackTimeStep(f)
114 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
115 fCell0.setName(fieldName) ; fCell0.setMesh(m)
116 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
117 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
118 fCell0.checkCoherency()
119 f.setFieldNoProfileSBT(fCell0)
121 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
122 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
123 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
124 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
125 fCell1.checkCoherency()
126 f.setFieldNoProfileSBT(fCell1)
128 fs.pushBackTimeStep(f)
133 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
134 fCell0.setName(fieldName) ; fCell0.setMesh(m)
135 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
136 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
137 fCell0.checkCoherency()
138 f.setFieldNoProfileSBT(fCell0)
140 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
141 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
142 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
143 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
144 fCell1.checkCoherency()
145 f.setFieldNoProfileSBT(fCell1)
146 fs.pushBackTimeStep(f)
149 a0Exp=mm.getCoords().deepCpy()
150 del m,m1,mm,fs,f,fCell0,fCell1
151 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
152 ms=MEDFileMeshes(fname)
153 fields=MEDFileFields(fname,False) # False is important to not read the values
154 refMem=fields.getHeapMemorySize()
155 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
156 allFMTSLeavesToDisplay=[]
157 for fields in fields_per_mesh:
158 allFMTSLeavesToDisplay2=[]
160 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
162 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
164 self.assertEqual(len(allFMTSLeavesToDisplay),1)
165 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
166 for fmts in allFMTSLeavesToDisplay[0]:
167 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
169 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
170 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
171 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
172 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
174 mst=MEDFileMeshStruct.New(ms[0])
175 fcscp=allFMTSLeavesPerCommonSupport[0][1]
176 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
178 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
179 for i in xrange(1,5):
180 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
182 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
183 self.assertTrue(not ncc)
184 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
185 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])))
186 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])))
187 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])))
188 self.assertTrue(a4 is None)
189 self.assertTrue(a5 is None)
190 a6,a7=mml2.retrieveFamilyIdsOnCells()
191 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])))
192 self.assertTrue(not a7)
193 a8,a9=mml2.retrieveNumberIdsOnCells()
194 self.assertTrue(a8.isEqual(DataArrayInt([120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,100,101,102,103,104,105,106,107,108])))
195 self.assertTrue(not a9)
197 fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst)
198 fields[0][i].loadArraysIfNecessary()
199 tmpMem=fields.getHeapMemorySize()
200 self.assertTrue(tmpMem-refMem>=41*2*8)
202 v=mml.buildDataArray(fsst,fields,fields[0][i].getUndergroundDataArray())
203 self.assertEqual(v.getHiddenCppPointer(),fields[0][i].getUndergroundDataArray().getHiddenCppPointer())
204 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
205 self.assertTrue(v.isEqual(vExp,1e-12))
211 One time serie of one field with cell and node discretization in the same field with no profiles.
212 Here as there is no profile only one VTK support is requested.
214 fname="ForMEDReader2.med"
215 # building a mesh containing 4 tri3 + 5 quad4
216 tri=MEDCouplingUMesh("tri",2)
217 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
218 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
219 tris=[tri.deepCpy() for i in xrange(4)]
220 for i,elt in enumerate(tris): elt.translate([i,0])
221 tris=MEDCouplingUMesh.MergeUMeshes(tris)
222 quad=MEDCouplingUMesh("quad",2)
223 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
224 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
225 quads=[quad.deepCpy() for i in xrange(5)]
226 for i,elt in enumerate(quads): elt.translate([5+i,0])
227 quads=MEDCouplingUMesh.MergeUMeshes(quads)
228 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
229 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
230 m1=m.buildDescendingConnectivity()[0]
231 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
234 fs=MEDFileFieldMultiTS()
238 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
239 fCell0.setName(fieldName) ; fCell0.setMesh(m)
240 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
241 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
242 fCell0.checkCoherency()
243 f.setFieldNoProfileSBT(fCell0)
244 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
245 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
246 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
247 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
248 fCell1.checkCoherency()
249 f.setFieldNoProfileSBT(fCell1)
251 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
252 fNode.setName(fieldName) ; fNode.setMesh(m1)
253 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2)
254 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
255 fNode.checkCoherency()
256 f.setFieldNoProfileSBT(fNode)
257 fs.pushBackTimeStep(f)
261 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
262 fCell0.setName(fieldName) ; fCell0.setMesh(m)
263 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
264 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
265 fCell0.checkCoherency()
266 f.setFieldNoProfileSBT(fCell0)
268 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
269 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
270 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
271 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
272 fCell1.checkCoherency()
273 f.setFieldNoProfileSBT(fCell1)
275 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
276 fNode.setName(fieldName) ; fNode.setMesh(m1)
277 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
278 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
279 fNode.checkCoherency()
280 f.setFieldNoProfileSBT(fNode)
281 fs.pushBackTimeStep(f)
285 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
286 fNode.setName(fieldName) ; fNode.setMesh(m1)
287 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2)
288 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
289 fNode.checkCoherency()
290 f.setFieldNoProfileSBT(fNode)
292 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
293 fCell0.setName(fieldName) ; fCell0.setMesh(m)
294 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
295 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
296 fCell0.checkCoherency()
297 f.setFieldNoProfileSBT(fCell0)
299 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
300 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
301 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
302 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
303 fCell1.checkCoherency()
304 f.setFieldNoProfileSBT(fCell1)
305 fs.pushBackTimeStep(f)
310 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
311 fCell0.setName(fieldName) ; fCell0.setMesh(m)
312 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
313 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
314 fCell0.checkCoherency()
315 f.setFieldNoProfileSBT(fCell0)
317 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
318 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
319 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
320 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
321 fCell1.checkCoherency()
322 f.setFieldNoProfileSBT(fCell1)
324 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
325 fNode.setName(fieldName) ; fNode.setMesh(m1)
326 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
327 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
328 fNode.checkCoherency()
329 f.setFieldNoProfileSBT(fNode)
331 fs.pushBackTimeStep(f)
336 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
337 fCell0.setName(fieldName) ; fCell0.setMesh(m)
338 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
339 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
340 fCell0.checkCoherency()
341 f.setFieldNoProfileSBT(fCell0)
343 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
344 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
345 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
346 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
347 fCell1.checkCoherency()
348 f.setFieldNoProfileSBT(fCell1)
350 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
351 fNode.setName(fieldName) ; fNode.setMesh(m1)
352 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2)
353 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
354 fNode.checkCoherency()
355 f.setFieldNoProfileSBT(fNode)
357 fs.pushBackTimeStep(f)
360 a0Exp=mm.getCoords().deepCpy()
361 del m,m1,mm,fs,f,fCell0,fCell1
362 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
363 ms=MEDFileMeshes(fname)
364 fields=MEDFileFields(fname,False)
365 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
366 allFMTSLeavesToDisplay=[]
367 for fields in fields_per_mesh:
368 allFMTSLeavesToDisplay2=[]
370 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
372 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
374 self.assertEqual(len(allFMTSLeavesToDisplay),1)
375 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
376 for fmts in allFMTSLeavesToDisplay[0]:
377 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
379 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
380 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
381 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
382 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
383 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
384 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
386 mst=MEDFileMeshStruct.New(ms[0])
387 fcscp=allFMTSLeavesPerCommonSupport[0][1]
388 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
390 assert isinstance(mml2,MEDUMeshMultiLev)
391 for i in xrange(1,5):
392 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
394 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
395 self.assertTrue(not ncc)
396 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
397 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])))
398 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])))
399 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])))
400 self.assertTrue(a4 is None)
401 self.assertTrue(a5 is None)
404 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
405 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
406 f.loadArraysIfNecessary()
407 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
408 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
409 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
410 self.assertTrue(v.isEqual(vExp,1e-12))
413 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
414 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
415 f.loadArraysIfNecessary()
416 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
417 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
418 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
419 self.assertTrue(v.isEqual(vExp,1e-12))
424 """ 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.
425 So two time step series on the same field. No profile here neither on cells nor on nodes.
427 fname="ForMEDReader3.med"
428 # building a mesh containing 4 tri3 + 5 quad4
429 tri=MEDCouplingUMesh("tri",2)
430 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
431 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
432 tris=[tri.deepCpy() for i in xrange(4)]
433 for i,elt in enumerate(tris): elt.translate([i,0])
434 tris=MEDCouplingUMesh.MergeUMeshes(tris)
435 quad=MEDCouplingUMesh("quad",2)
436 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
437 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
438 quads=[quad.deepCpy() for i in xrange(5)]
439 for i,elt in enumerate(quads): elt.translate([5+i,0])
440 quads=MEDCouplingUMesh.MergeUMeshes(quads)
441 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
442 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
443 m1=m.buildDescendingConnectivity()[0]
444 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
447 fs=MEDFileFieldMultiTS()
448 ##### Time step 0 on cells
451 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
452 fCell0.setName(fieldName) ; fCell0.setMesh(m)
453 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
454 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
455 fCell0.checkCoherency()
456 f.setFieldNoProfileSBT(fCell0)
457 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
458 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
459 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
460 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
461 fCell1.checkCoherency()
462 f.setFieldNoProfileSBT(fCell1)
463 fs.pushBackTimeStep(f)
464 ##### Time step 1 on nodes
467 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
468 fNode.setName(fieldName) ; fNode.setMesh(m1)
469 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
470 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
471 fNode.checkCoherency()
472 f.setFieldNoProfileSBT(fNode)
473 fs.pushBackTimeStep(f)
474 ##### Time step 2 on cells
477 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
478 fCell0.setName(fieldName) ; fCell0.setMesh(m)
479 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
480 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
481 fCell0.checkCoherency()
482 f.setFieldNoProfileSBT(fCell0)
484 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
485 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
486 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
487 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
488 fCell1.checkCoherency()
489 f.setFieldNoProfileSBT(fCell1)
490 fs.pushBackTimeStep(f)
491 ##### Time step 3 on nodes
494 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
495 fNode.setName(fieldName) ; fNode.setMesh(m1)
496 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
497 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
498 fNode.checkCoherency()
499 f.setFieldNoProfileSBT(fNode)
500 fs.pushBackTimeStep(f)
504 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
505 fCell0.setName(fieldName) ; fCell0.setMesh(m)
506 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
507 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
508 fCell0.checkCoherency()
509 f.setFieldNoProfileSBT(fCell0)
511 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
512 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
513 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
514 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
515 fCell1.checkCoherency()
516 f.setFieldNoProfileSBT(fCell1)
518 fs.pushBackTimeStep(f)
521 a0Exp=mm.getCoords().deepCpy()
522 del m,m1,mm,fs,f,fCell0,fCell1
523 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
524 ms=MEDFileMeshes(fname)
525 fields=MEDFileFields(fname,False)
526 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
527 allFMTSLeavesToDisplay=[]
528 for fields in fields_per_mesh:
529 allFMTSLeavesToDisplay2=[]
531 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
533 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
535 self.assertEqual(len(allFMTSLeavesToDisplay),1)
536 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
537 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
538 self.assertEqual(len(allFMTSLeavesPerTimeSeries),2) # two time series here : one for the cells, the second one for the nodes
539 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
540 self.assertEqual(len(allFMTSLeavesPerTimeSeries[1]),1)
541 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
542 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
543 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
545 mst=MEDFileMeshStruct.New(ms[0])
546 fcscp=allFMTSLeavesPerCommonSupport[0][1] # start with the cells
547 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
549 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
550 for i in xrange(1,3):
551 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
553 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
554 self.assertTrue(not ncc)
555 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
556 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])))
557 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])))
558 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])))
563 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
564 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
565 f.loadArraysIfNecessary()
566 self.assertEqual(f.getName(),"zeField")
567 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
568 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
569 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
570 self.assertTrue(v.isEqual(vExp,1e-12))
573 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[1],ms[ms.getMeshesNames()[0]])
574 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
575 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
576 fcscp=allFMTSLeavesPerCommonSupport[0][1]
577 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
579 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
580 for i in xrange(1,2):
581 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
583 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
584 self.assertTrue(not ncc)
585 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
586 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
587 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32])))
588 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])))
589 self.assertTrue(a4 is None)
590 self.assertTrue(a5 is None)
592 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
593 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
594 f.loadArraysIfNecessary()
595 self.assertEqual(f.getName(),"zeField")
596 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
597 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
598 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
599 self.assertTrue(v.isEqual(vExp,1e-12))
604 """ This test defines 3 fields on nodes on the same mesh. All of these fields have no profile.
606 fname="ForMEDReader4.med"
607 # building a mesh containing 4 tri3 + 5 quad4
608 tri=MEDCouplingUMesh("tri",2)
609 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
610 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
611 tris=[tri.deepCpy() for i in xrange(4)]
612 for i,elt in enumerate(tris): elt.translate([i,0])
613 tris=MEDCouplingUMesh.MergeUMeshes(tris)
614 quad=MEDCouplingUMesh("quad",2)
615 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
616 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
617 quads=[quad.deepCpy() for i in xrange(5)]
618 for i,elt in enumerate(quads): elt.translate([5+i,0])
619 quads=MEDCouplingUMesh.MergeUMeshes(quads)
620 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
621 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
622 mm=MEDFileUMesh() ; mm.setMeshes([m])
624 fieldName1="zeField1"
625 fieldName2="zeField2"
626 fieldName3="zeField3"
627 fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
631 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
632 fNode.setName(fieldName1) ; fNode.setMesh(m)
633 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
634 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
635 fNode.checkCoherency()
636 f.setFieldNoProfileSBT(fNode)
637 fs1.pushBackTimeStep(f)
640 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
641 fNode.setName(fieldName2) ; fNode.setMesh(m)
642 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
643 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
644 fNode.checkCoherency()
645 f.setFieldNoProfileSBT(fNode)
646 fs2.pushBackTimeStep(f)
649 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
650 fNode.setName(fieldName3) ; fNode.setMesh(m)
651 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
652 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
653 fNode.checkCoherency()
654 f.setFieldNoProfileSBT(fNode)
655 fs3.pushBackTimeStep(f)
659 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
660 fNode.setName(fieldName1) ; fNode.setMesh(m)
661 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
662 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
663 fNode.checkCoherency()
664 f.setFieldNoProfileSBT(fNode)
665 fs1.pushBackTimeStep(f)
668 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
669 fNode.setName(fieldName2) ; fNode.setMesh(m)
670 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
671 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
672 fNode.checkCoherency()
673 f.setFieldNoProfileSBT(fNode)
674 fs2.pushBackTimeStep(f)
677 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
678 fNode.setName(fieldName3) ; fNode.setMesh(m)
679 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
680 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
681 fNode.checkCoherency()
682 f.setFieldNoProfileSBT(fNode)
683 fs3.pushBackTimeStep(f)
687 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
688 fNode.setName(fieldName1) ; fNode.setMesh(m)
689 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
690 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
691 fNode.checkCoherency()
692 f.setFieldNoProfileSBT(fNode)
693 fs1.pushBackTimeStep(f)
696 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
697 fNode.setName(fieldName2) ; fNode.setMesh(m)
698 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
699 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
700 fNode.checkCoherency()
701 f.setFieldNoProfileSBT(fNode)
702 fs2.pushBackTimeStep(f)
705 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
706 fNode.setName(fieldName3) ; fNode.setMesh(m)
707 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
708 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
709 fNode.checkCoherency()
710 f.setFieldNoProfileSBT(fNode)
711 fs3.pushBackTimeStep(f)
715 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
716 fNode.setName(fieldName1) ; fNode.setMesh(m)
717 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
718 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
719 fNode.checkCoherency()
720 f.setFieldNoProfileSBT(fNode)
721 fs1.pushBackTimeStep(f)
724 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
725 fNode.setName(fieldName2) ; fNode.setMesh(m)
726 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
727 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
728 fNode.checkCoherency()
729 f.setFieldNoProfileSBT(fNode)
730 fs2.pushBackTimeStep(f)
733 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
734 fNode.setName(fieldName3) ; fNode.setMesh(m)
735 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
736 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
737 fNode.checkCoherency()
738 f.setFieldNoProfileSBT(fNode)
739 fs3.pushBackTimeStep(f)
743 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
744 fNode.setName(fieldName1) ; fNode.setMesh(m)
745 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
746 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
747 fNode.checkCoherency()
748 f.setFieldNoProfileSBT(fNode)
749 fs1.pushBackTimeStep(f)
752 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
753 fNode.setName(fieldName2) ; fNode.setMesh(m)
754 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
755 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
756 fNode.checkCoherency()
757 f.setFieldNoProfileSBT(fNode)
758 fs2.pushBackTimeStep(f)
761 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
762 fNode.setName(fieldName3) ; fNode.setMesh(m)
763 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
764 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
765 fNode.checkCoherency()
766 f.setFieldNoProfileSBT(fNode)
767 fs3.pushBackTimeStep(f)
770 fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
771 a0Exp=mm.getCoords().deepCpy()
772 del m,mm,fs1,fs2,fs3,f,fNode
773 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
774 ms=MEDFileMeshes(fname)
775 fields=MEDFileFields(fname,False)
776 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
777 allFMTSLeavesToDisplay=[]
778 for fields in fields_per_mesh:
779 allFMTSLeavesToDisplay2=[]
781 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
783 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
785 self.assertEqual(len(allFMTSLeavesToDisplay),1)
786 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
787 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
788 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
789 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
790 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
791 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
792 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
794 mst=MEDFileMeshStruct.New(ms[0])
795 fcscp=allFMTSLeavesPerCommonSupport[0][1]
796 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
797 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
798 fcscp=allFMTSLeavesPerCommonSupport[0][1]
799 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
801 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
802 for i in xrange(1,5):
803 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
805 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
806 self.assertTrue(not ncc)
807 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
808 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
809 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32])))
810 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])))
811 self.assertTrue(a4 is None)
812 self.assertTrue(a5 is None)
813 # test all the time steps of the 1/1 time step serie, on field 1
815 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
816 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
817 f.loadArraysIfNecessary()
818 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
819 self.assertEqual(f.getName(),fieldName1)
820 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
821 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
822 self.assertTrue(v.isEqual(vExp,1e-12))
824 # test all the time steps of the 1/1 time step serie, on field 2
826 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
827 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
828 f.loadArraysIfNecessary()
829 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
830 self.assertEqual(f.getName(),fieldName2)
831 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
832 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
833 self.assertTrue(v.isEqual(vExp,1e-12))
835 # test all the time steps of the 1/1 time step serie, on field 3
837 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
838 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
839 f.loadArraysIfNecessary()
840 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
841 self.assertEqual(f.getName(),fieldName3)
842 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
843 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
844 self.assertTrue(v.isEqual(vExp,1e-12))
849 """ 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
850 mesh lies on a different mesh.
852 fname="ForMEDReader5.med"
853 # building a mesh containing 6 tri3 + 5 quad4
854 m=MEDCouplingUMesh("mesh",2)
855 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]"])
858 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])
859 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
860 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])
861 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
862 mm=MEDFileUMesh() ; mm.setMeshes([m])
863 fam=DataArrayInt(11) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
864 num=DataArrayInt(11) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
866 fieldName1="zeField1" ; pfl1=DataArrayInt([0,1,2,3,4,5]) ; pfl1.setName("pfl1") # on cells
867 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,13,14]) ; pfl2.setName("pfl2") # on nodes
868 fieldName3="zeField3" ; pfl3=DataArrayInt([0,1,2,3,4,5,9,10]) ; pfl3.setName("pfl3") # on cells but different support
869 fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
873 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
874 fNode.setName(fieldName1)
875 arr=DataArrayDouble(2*6) ; arr.iota(0+1000*i) ; arr.rearrange(2)
876 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
877 f.setFieldProfile(fNode,mm,0,pfl1)
878 fs1.pushBackTimeStep(f)
881 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
882 fNode.setName(fieldName2)
883 arr=DataArrayDouble(2*8) ; arr.iota(100+1000*i) ; arr.rearrange(2)
884 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
885 f.setFieldProfile(fNode,mm,0,pfl2)
886 fs2.pushBackTimeStep(f)
889 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
890 fNode.setName(fieldName3)
891 arr=DataArrayDouble(2*8) ; arr.iota(200+1000*i) ; arr.rearrange(2)
892 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
893 f.setFieldProfile(fNode,mm,0,pfl3)
894 fs3.pushBackTimeStep(f)
897 fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
898 a0Exp=mm.getCoords().deepCpy()
899 del m,mm,fs1,fs2,fs3,f,fNode
900 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
901 ms=MEDFileMeshes(fname)
902 fields=MEDFileFields(fname,False)
903 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
904 allFMTSLeavesToDisplay=[]
905 for fields in fields_per_mesh:
906 allFMTSLeavesToDisplay2=[]
908 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
910 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
912 self.assertEqual(len(allFMTSLeavesToDisplay),1)
913 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
914 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
915 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
916 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
917 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
918 ms[0].getDirectUndergroundSingleGeoTypeMeshes(0)
919 self.assertEqual(len(allFMTSLeavesPerCommonSupport),2) # 2 support here
920 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
921 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
923 mst=MEDFileMeshStruct.New(ms[0])
924 fcscp=allFMTSLeavesPerCommonSupport[0][1]
925 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
927 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
928 for i in xrange(1,5):
929 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
931 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
932 self.assertTrue(not ncc)
933 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
934 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5])))
935 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18])))
936 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])))
939 a6,a7=mml2.retrieveFamilyIdsOnCells()
940 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5])))
941 self.assertTrue(not a7)
942 a8,a9=mml2.retrieveNumberIdsOnCells()
943 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105])))
944 self.assertTrue(not a9)
947 fieldNames=[fieldName1,fieldName2]
950 f=allFMTSLeavesPerCommonSupport[0][0][j][i]
951 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
952 f.loadArraysIfNecessary()
953 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
954 self.assertEqual(f.getName(),fieldNames[j])
955 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
956 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])
957 self.assertTrue(v.isEqual(vExp,1e-12))
960 # Let's go for the 2nd support
961 fcscp=allFMTSLeavesPerCommonSupport[1][1]
962 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
964 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
965 for i in xrange(1,5):
966 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
968 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
969 self.assertTrue(not ncc)
970 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
971 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9])))
972 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26])))
973 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])))
974 self.assertTrue(a4 is None)
975 self.assertTrue(a5 is None)
976 a6,a7=mml2.retrieveFamilyIdsOnCells()
977 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,9,10])))
978 self.assertTrue(not a7)
979 a8,a9=mml2.retrieveNumberIdsOnCells()
980 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,109,110])))
981 self.assertTrue(not a9)
983 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
984 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
985 f.loadArraysIfNecessary()
986 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
987 self.assertEqual(f.getName(),"zeField3")
988 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
989 vExp=DataArrayDouble(8*2) ; vExp.iota(200+1000*i) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]'%m,'Com2_2 [s^2]'%m])
990 self.assertTrue(v.isEqual(vExp,1e-12))
995 """ This test plays with cartesian mesh and profiles. When a sub cartesian mesh can also be considered as a cartesian mesh it is done.
997 fname="ForMEDReader6.med"
998 m=MEDCouplingCMesh("mesh")
999 coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
1000 coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
1001 m.setCoords(coordsX,coordsY)
1002 mm=MEDFileCMesh() ; mm.setMesh(m)
1003 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
1004 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
1006 fieldName0="zeField0" ; # on cells
1007 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1008 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1009 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1010 fieldName4="zeField4" ;# on nodes
1011 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1015 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1016 fNode.setName(fieldName0) ; fNode.setMesh(m)
1017 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1018 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1019 f.setFieldNoProfileSBT(fNode)
1020 fs0.pushBackTimeStep(f)
1023 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1024 fNode.setName(fieldName1)
1025 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1026 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1027 f.setFieldProfile(fNode,mm,0,pfl1)
1028 self.assertEqual(pfl1.getName(),"pfl1")
1029 fs1.pushBackTimeStep(f)
1032 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1033 fNode.setName(fieldName2)
1034 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1035 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1036 f.setFieldProfile(fNode,mm,0,pfl2)
1037 self.assertEqual(pfl2.getName(),"pfl2")
1038 fs2.pushBackTimeStep(f)
1041 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1042 fNode.setName(fieldName3)
1043 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1044 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1045 f.setFieldProfile(fNode,mm,0,pfl3)
1046 self.assertEqual(pfl3.getName(),"pfl3")
1047 fs3.pushBackTimeStep(f)
1050 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1051 fNode.setName(fieldName4) ; fNode.setMesh(m)
1052 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1053 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1054 f.setFieldNoProfileSBT(fNode)
1055 fs4.pushBackTimeStep(f)
1058 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1059 del m,mm,fs1,fs2,fs3,f,fNode
1060 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1061 ms=MEDFileMeshes(fname)
1062 fields=MEDFileFields(fname,False)
1063 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1064 allFMTSLeavesToDisplay=[]
1065 for fields in fields_per_mesh:
1066 allFMTSLeavesToDisplay2=[]
1068 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1070 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1072 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1073 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1074 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1075 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1076 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1077 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1078 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1079 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1080 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1081 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1083 mst=MEDFileMeshStruct.New(ms[0])
1085 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1086 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1088 a,b=mml2.buildVTUArrays()
1089 self.assertTrue(a.isEqual(coordsX,1e-12))
1090 self.assertTrue(b.isEqual(coordsY,1e-12))
1091 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
1092 for i in xrange(1,5):
1093 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1095 a6,a7=mml2.retrieveFamilyIdsOnCells()
1096 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1097 self.assertTrue(a7) # True because no copy
1098 a8,a9=mml2.retrieveNumberIdsOnCells()
1099 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1100 self.assertTrue(a9) # True because no copy
1102 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1103 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1104 f.loadArraysIfNecessary()
1105 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1106 self.assertEqual(f.getName(),fieldName0)
1107 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1108 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1109 self.assertTrue(v.isEqual(vExp,1e-12))
1111 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1112 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1113 f.loadArraysIfNecessary()
1114 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1115 self.assertEqual(f.getName(),fieldName4)
1116 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1117 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1118 self.assertTrue(v.isEqual(vExp,1e-12))
1121 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1122 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1124 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1125 a,b=mml2.buildVTUArrays()
1126 self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
1127 self.assertTrue(b.isEqual(coordsY,1e-12))
1128 a6,a7=mml2.retrieveFamilyIdsOnCells()
1129 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1130 self.assertTrue(not a7) # False because copy
1131 a8,a9=mml2.retrieveNumberIdsOnCells()
1132 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1133 self.assertTrue(not a9) # False because copy
1134 for i in xrange(1,5):
1135 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1138 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1139 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1140 f.loadArraysIfNecessary()
1141 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1142 self.assertEqual(f.getName(),fieldName1)
1143 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1144 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1145 self.assertTrue(v.isEqual(vExp,1e-12))
1147 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1148 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1149 f.loadArraysIfNecessary()
1150 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1151 self.assertEqual(f.getName(),fieldName2)
1152 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1153 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1154 self.assertTrue(v.isEqual(vExp,1e-12))
1157 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1158 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1160 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1161 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1162 self.assertTrue(not ncc)
1163 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)
1164 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1165 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1166 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1167 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16])))
1168 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])))
1169 self.assertTrue(a4 is None)
1170 self.assertTrue(a5 is None)
1171 a6,a7=mml2.retrieveFamilyIdsOnCells()
1172 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1173 self.assertTrue(not a7) # False because copy
1174 a8,a9=mml2.retrieveNumberIdsOnCells()
1175 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1176 self.assertTrue(not a9) # False because copy
1178 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1179 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1180 f.loadArraysIfNecessary()
1181 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1182 self.assertEqual(f.getName(),fieldName3)
1183 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1184 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1185 self.assertTrue(v.isEqual(vExp,1e-12))
1190 """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
1191 This test is very similar to the test6.
1193 fname="ForMEDReader7.med"
1194 m=MEDCouplingCurveLinearMesh("mesh") ; m.setNodeGridStructure([5,3])
1195 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)
1196 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1198 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
1199 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
1200 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
1202 fieldName0="zeField0" ; # on cells
1203 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1204 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1205 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1206 fieldName4="zeField4" ;# on nodes
1207 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1211 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1212 fNode.setName(fieldName0) ; fNode.setMesh(m)
1213 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1214 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1215 f.setFieldNoProfileSBT(fNode)
1216 fs0.pushBackTimeStep(f)
1219 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1220 fNode.setName(fieldName1)
1221 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1222 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1223 f.setFieldProfile(fNode,mm,0,pfl1)
1224 self.assertEqual(pfl1.getName(),"pfl1")
1225 fs1.pushBackTimeStep(f)
1228 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1229 fNode.setName(fieldName2)
1230 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1231 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1232 f.setFieldProfile(fNode,mm,0,pfl2)
1233 self.assertEqual(pfl2.getName(),"pfl2")
1234 fs2.pushBackTimeStep(f)
1237 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1238 fNode.setName(fieldName3)
1239 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1240 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1241 f.setFieldProfile(fNode,mm,0,pfl3)
1242 self.assertEqual(pfl3.getName(),"pfl3")
1243 fs3.pushBackTimeStep(f)
1246 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1247 fNode.setName(fieldName4) ; fNode.setMesh(m)
1248 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1249 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1250 f.setFieldNoProfileSBT(fNode)
1251 fs4.pushBackTimeStep(f)
1254 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1255 del m,mm,fs1,fs2,fs3,f,fNode
1256 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1257 ms=MEDFileMeshes(fname)
1258 fields=MEDFileFields(fname,False)
1259 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1260 allFMTSLeavesToDisplay=[]
1261 for fields in fields_per_mesh:
1262 allFMTSLeavesToDisplay2=[]
1264 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1266 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1268 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1269 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1270 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1271 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1272 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1273 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1274 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1275 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1276 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1277 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1279 mst=MEDFileMeshStruct.New(ms[0])
1281 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1282 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1284 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
1285 a,b=mml2.buildVTUArrays()
1286 self.assertTrue(a.isEqual(a0Exp,1e-12))
1287 self.assertEqual(b,[5,3])
1288 a6,a7=mml2.retrieveFamilyIdsOnCells()
1289 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1290 self.assertTrue(a7) # True because no copy
1291 a8,a9=mml2.retrieveNumberIdsOnCells()
1292 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1293 self.assertTrue(a9) # True because no copy
1294 for i in xrange(1,5):
1295 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1298 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1299 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1300 f.loadArraysIfNecessary()
1301 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1302 self.assertEqual(f.getName(),fieldName0)
1303 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1304 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1305 self.assertTrue(v.isEqual(vExp,1e-12))
1307 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1308 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1309 f.loadArraysIfNecessary()
1310 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1311 self.assertEqual(f.getName(),fieldName4)
1312 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1313 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1314 self.assertTrue(v.isEqual(vExp,1e-12))
1317 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1318 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1320 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1321 a,b=mml2.buildVTUArrays()
1322 self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
1323 self.assertEqual(b,[3,3])
1324 a6,a7=mml2.retrieveFamilyIdsOnCells()
1325 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1326 self.assertTrue(not a7) # False because copy
1327 a8,a9=mml2.retrieveNumberIdsOnCells()
1328 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1329 self.assertTrue(not a9) # False because copy
1330 for i in xrange(1,5):
1331 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1334 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1335 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1336 f.loadArraysIfNecessary()
1337 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1338 self.assertEqual(f.getName(),fieldName1)
1339 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1340 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1341 self.assertTrue(v.isEqual(vExp,1e-12))
1343 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1344 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1345 f.loadArraysIfNecessary()
1346 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1347 self.assertEqual(f.getName(),fieldName2)
1348 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1349 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1350 self.assertTrue(v.isEqual(vExp,1e-12))
1353 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1354 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1356 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1357 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1358 self.assertTrue(not ncc)
1359 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)
1360 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1361 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1362 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1363 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16])))
1364 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])))
1365 self.assertTrue(a4 is None)
1366 self.assertTrue(a5 is None)
1367 a6,a7=mml2.retrieveFamilyIdsOnCells()
1368 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1369 self.assertTrue(not a7) # False because copy
1370 a8,a9=mml2.retrieveNumberIdsOnCells()
1371 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1372 self.assertTrue(not a9) # False because copy
1374 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1375 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1376 f.loadArraysIfNecessary()
1377 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1378 self.assertEqual(f.getName(),fieldName3)
1379 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1380 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1381 self.assertTrue(v.isEqual(vExp,1e-12))
1386 """ This test plays with with gauss fields with no profiles.
1388 fname="ForMEDReader8.med"
1389 # building a mesh containing 6 tri3 + 5 quad4
1390 m=MEDCouplingUMesh("mesh",2)
1391 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]"])
1394 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])
1395 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1396 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])
1397 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1398 mm=MEDFileUMesh() ; mm.setMeshes([m])
1400 fieldName0="zeField0"
1401 fieldName1="zeField1"
1402 fieldName2="zeField2"
1403 fieldName3="zeField3"
1404 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1407 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1408 fNode.setName(fieldName0) ; fNode.setMesh(m)
1409 arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1410 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1411 f.setFieldNoProfileSBT(fNode)
1412 fs0.pushBackTimeStep(f)
1415 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1416 fNode.setName(fieldName1) ; fNode.setMesh(m)
1417 arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1418 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1419 f.setFieldNoProfileSBT(fNode)
1420 fs1.pushBackTimeStep(f)
1423 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1424 fNode.setName(fieldName2) ; fNode.setMesh(m)
1425 fNode.setGaussLocalizationOnCells([0,1,2,3],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1426 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])
1427 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])
1428 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])
1429 arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1430 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1431 f.setFieldNoProfileSBT(fNode)
1432 fs2.pushBackTimeStep(f)
1435 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1436 fNode.setName(fieldName3) ; fNode.setMesh(m)
1437 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1438 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1439 f.setFieldNoProfileSBT(fNode)
1440 fs3.pushBackTimeStep(f)
1445 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1446 a0Exp=mm.getCoords().deepCpy()
1447 del m,mm,fs1,fs2,fs3,f,fNode
1448 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1449 ms=MEDFileMeshes(fname)
1450 fields=MEDFileFields(fname,False)
1451 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1452 allFMTSLeavesToDisplay=[]
1453 for fields in fields_per_mesh:
1454 allFMTSLeavesToDisplay2=[]
1456 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1458 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1460 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1461 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1462 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1463 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1464 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1465 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1466 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1467 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1469 mst=MEDFileMeshStruct.New(ms[0])
1471 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1472 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1474 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1475 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1476 self.assertTrue(not ncc)
1477 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1478 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9])))
1479 self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26,30,34,38])))
1480 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])))
1481 self.assertTrue(a4 is None)
1482 self.assertTrue(a5 is None)
1483 for i in xrange(1,5):
1484 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1487 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1488 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1489 f.loadArraysIfNecessary()
1490 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1491 self.assertEqual(f.getName(),fieldName0)
1492 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1493 vExp=DataArrayDouble(38*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1494 self.assertTrue(v.isEqual(vExp,1e-12))
1496 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1497 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1498 f.loadArraysIfNecessary()
1499 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1500 self.assertEqual(f.getName(),fieldName1)
1501 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1502 vExp=DataArrayDouble(11*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1503 self.assertTrue(v.isEqual(vExp,1e-12))
1505 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1506 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1507 f.loadArraysIfNecessary()
1508 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1509 self.assertEqual(f.getName(),fieldName2)
1510 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1511 vExp=DataArrayDouble(44*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1512 self.assertTrue(v.isEqual(vExp,1e-12))
1514 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1515 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1516 f.loadArraysIfNecessary()
1517 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1518 self.assertEqual(f.getName(),fieldName3)
1519 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1520 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1521 self.assertTrue(v.isEqual(vExp,1e-12))
1527 """ This test plays with with gauss fields with profiles.
1529 fname="ForMEDReader9.med"
1530 # building a mesh containing 6 tri3 + 5 quad4
1531 m=MEDCouplingUMesh("mesh",2)
1532 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]"])
1535 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])
1536 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1537 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])
1538 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1539 mm=MEDFileUMesh() ; mm.setMeshes([m])
1541 fieldName0="zeField0"
1542 fieldName1="zeField1"
1543 fieldName2="zeField2"
1544 fieldName3="zeField3"
1545 pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
1546 pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
1547 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1550 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1551 fNode.setName(fieldName0)
1552 arr=DataArrayDouble(2*18) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1553 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1554 f.setFieldProfile(fNode,mm,0,pfl1)
1555 fs0.pushBackTimeStep(f)
1558 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1559 fNode.setName(fieldName1)
1560 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1561 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1562 f.setFieldProfile(fNode,mm,0,pfl1)
1563 fs1.pushBackTimeStep(f)
1566 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1567 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1568 fNode.setGaussLocalizationOnCells([0],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1569 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])
1570 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])
1571 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])
1572 arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1573 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1574 f.setFieldProfile(fNode,mm,0,pfl1)
1575 fs2.pushBackTimeStep(f)
1578 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1579 fNode.setName(fieldName3)
1580 arr=DataArrayDouble(2*9) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1581 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1582 f.setFieldProfile(fNode,mm,0,pfl2)
1583 fs3.pushBackTimeStep(f)
1588 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1589 a0Exp=mm.getCoords().deepCpy()
1590 del m,mm,fs1,fs2,fs3,f,fNode
1591 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1592 ms=MEDFileMeshes(fname)
1593 fields=MEDFileFields(fname,False)
1594 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1595 allFMTSLeavesToDisplay=[]
1596 for fields in fields_per_mesh:
1597 allFMTSLeavesToDisplay2=[]
1599 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1601 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1603 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1604 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1605 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1606 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1607 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1608 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1609 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1610 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1612 mst=MEDFileMeshStruct.New(ms[0])
1614 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1615 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1617 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1618 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1619 self.assertTrue(not ncc)
1620 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
1621 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1622 self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18])))
1623 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])))
1624 self.assertTrue(a4 is None)
1625 self.assertTrue(a5 is None)
1626 for i in xrange(1,5):
1627 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1630 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1631 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1632 f.loadArraysIfNecessary()
1633 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1634 self.assertEqual(f.getName(),fieldName0)
1635 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1636 vExp=DataArrayDouble(18*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1637 self.assertTrue(v.isEqual(vExp,1e-12))
1639 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1640 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1641 f.loadArraysIfNecessary()
1642 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1643 self.assertEqual(f.getName(),fieldName1)
1644 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1645 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1646 self.assertTrue(v.isEqual(vExp,1e-12))
1648 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1649 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1650 f.loadArraysIfNecessary()
1651 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1652 self.assertEqual(f.getName(),fieldName2)
1653 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1654 vExp=DataArrayDouble(22*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1655 self.assertTrue(v.isEqual(vExp,1e-12))
1657 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1658 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1659 f.loadArraysIfNecessary()
1660 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1661 self.assertEqual(f.getName(),fieldName3)
1662 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1663 vExp=DataArrayDouble(9*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1664 self.assertTrue(v.isEqual(vExp,1e-12))
1669 """ This test plays with fields only on nodes containing profiles.
1671 fname="ForMEDReader10.med"
1672 # building a mesh containing 6 tri3 + 5 quad4
1673 m=MEDCouplingUMesh("mesh",2)
1674 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]"])
1677 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])
1678 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1679 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])
1680 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1681 mm=MEDFileUMesh() ; mm.setMeshes([m])
1683 fieldName0="zeField0"
1684 fieldName1="zeField1"
1685 fieldName2="zeField2"
1686 pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
1687 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
1690 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1691 fNode.setName(fieldName0)
1692 arr=DataArrayDouble(2*9) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1693 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1694 f.setFieldProfile(fNode,mm,0,pfl1)
1695 fs0.pushBackTimeStep(f)
1698 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1699 fNode.setName(fieldName1)
1700 arr=DataArrayDouble(2*9) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1701 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1702 f.setFieldProfile(fNode,mm,0,pfl1)
1703 fs1.pushBackTimeStep(f)
1706 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1707 fNode.setName(fieldName2)
1708 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1709 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1710 f.setFieldProfile(fNode,mm,0,pfl1)
1711 fs2.pushBackTimeStep(f)
1716 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
1717 a0Exp=mm.getCoords().deepCpy()
1718 del m,mm,fs1,fs2,f,fNode
1719 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1720 ms=MEDFileMeshes(fname)
1721 fields=MEDFileFields(fname,False)
1722 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1723 allFMTSLeavesToDisplay=[]
1724 for fields in fields_per_mesh:
1725 allFMTSLeavesToDisplay2=[]
1727 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1729 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1731 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1732 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
1733 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1734 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1735 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
1736 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1737 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1738 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
1740 mst=MEDFileMeshStruct.New(ms[0])
1742 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1743 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1745 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1746 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1747 self.assertTrue(not ncc)
1748 self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12))
1749 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1750 self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18])))
1751 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])))
1752 self.assertTrue(a4 is None)
1753 self.assertTrue(a5 is None)
1754 for i in xrange(1,5):
1755 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1758 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1759 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1760 f.loadArraysIfNecessary()
1761 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1762 self.assertEqual(f.getName(),fieldName0)
1763 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1764 vExp=DataArrayDouble(9*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1765 self.assertTrue(v.isEqual(vExp,1e-12))
1767 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1768 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1769 f.loadArraysIfNecessary()
1770 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1771 self.assertEqual(f.getName(),fieldName1)
1772 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1773 vExp=DataArrayDouble(9*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1774 self.assertTrue(v.isEqual(vExp,1e-12))
1776 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1777 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1778 f.loadArraysIfNecessary()
1779 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1780 self.assertEqual(f.getName(),fieldName2)
1781 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1782 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1783 self.assertTrue(v.isEqual(vExp,1e-12))
1788 """ 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 !
1789 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.
1791 fname="ForMEDReader11.med"
1792 m=MEDCouplingCMesh("mesh")
1793 arr=DataArrayDouble(5) ; arr.iota()
1794 m.setCoords(arr,arr)
1795 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1796 mm=MEDFileUMesh() ; mm.setMeshes([m])
1798 fieldName0="zeField0"
1799 fs0=MEDFileFieldMultiTS()
1802 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1803 fNode.setName(fieldName0) ; fNode.setMesh(m)
1804 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])
1805 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])
1806 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])
1807 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])
1808 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1809 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1810 f.setFieldNoProfileSBT(fNode)
1811 fs0.pushBackTimeStep(f)
1815 a0Exp=mm.getCoords().deepCpy()
1816 del m,mm,fs0,f,fNode
1817 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1818 ms=MEDFileMeshes(fname)
1819 fields=MEDFileFields(fname,False)
1820 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1821 allFMTSLeavesToDisplay=[]
1822 for fields in fields_per_mesh:
1823 allFMTSLeavesToDisplay2=[]
1825 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1827 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1829 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1830 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
1831 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1832 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 1 field is defined on the same time steps
1833 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
1834 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1835 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1836 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
1838 mst=MEDFileMeshStruct.New(ms[0])
1840 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1841 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1843 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1844 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1845 self.assertTrue(not ncc)
1846 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1847 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1848 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64])))
1849 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]]
1850 self.assertTrue(a4 is None)
1851 self.assertTrue(a5 is None)
1852 for i in xrange(1,5):
1853 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1856 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1857 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1858 f.loadArraysIfNecessary()
1859 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1860 self.assertEqual(f.getName(),fieldName0)
1861 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1862 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]'])
1864 self.assertTrue(v.isEqual(vExp,1e-12))
1869 """ This test is the second ultimate test for the profiles with gauss points.
1870 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.
1872 fname="ForMEDReader12.med"
1873 m=MEDCouplingCMesh("mesh")
1874 arr=DataArrayDouble(5) ; arr.iota()
1875 m.setCoords(arr,arr)
1876 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1877 mm=MEDFileUMesh() ; mm.setMeshes([m])
1879 fieldName0="zeField0"
1880 fieldName1="zeField1"
1881 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
1884 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1885 fNode.setName(fieldName0) ; fNode.setMesh(m)
1886 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])
1887 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])
1888 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])
1889 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])
1890 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1891 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1892 f.setFieldNoProfileSBT(fNode)
1893 fs0.pushBackTimeStep(f)
1896 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1897 fNode.setName(fieldName1) ; fNode.setMesh(m)
1898 arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1899 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1900 f.setFieldNoProfileSBT(fNode)
1901 fs1.pushBackTimeStep(f)
1904 fs0.write(fname,0) ; fs1.write(fname,0)
1905 a0Exp=mm.getCoords().deepCpy()
1906 del m,mm,fs0,fs1,f,fNode
1907 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1908 ms=MEDFileMeshes(fname)
1909 fields=MEDFileFields(fname,False)
1910 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1911 allFMTSLeavesToDisplay=[]
1912 for fields in fields_per_mesh:
1913 allFMTSLeavesToDisplay2=[]
1915 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1917 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1919 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1920 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
1921 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1922 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1923 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
1924 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1925 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1926 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1928 mst=MEDFileMeshStruct.New(ms[0])
1930 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1931 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1933 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1934 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1935 self.assertTrue(not ncc)
1936 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1937 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1938 self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64])))
1939 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
1940 self.assertTrue(a4 is None)
1941 self.assertTrue(a5 is None)
1942 for i in xrange(1,5):
1943 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1946 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1947 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1948 f.loadArraysIfNecessary()
1949 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1950 self.assertEqual(f.getName(),fieldName0)
1951 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1952 vExp=DataArrayDouble(65*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1953 self.assertTrue(v.isEqual(vExp,1e-12))
1955 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1956 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1957 f.loadArraysIfNecessary()
1958 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1959 self.assertEqual(f.getName(),fieldName1)
1960 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1961 vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1962 self.assertTrue(v.isEqual(vExp,1e-12))
1966 """ Testing polyhedrons mixed with hexa8"""
1967 fname="ForMEDReader13.med"
1968 m=MEDCouplingUMesh("mesh",3)
1970 m.insertNextCell(NORM_HEXA8,[1,0,6,7,13,12,18,19]) ; m.insertNextCell(NORM_HEXA8,[2,1,7,8,14,13,19,20])
1971 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])
1972 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])
1973 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])
1974 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]"])
1976 mm=MEDFileUMesh() ; mm.setMeshes([m])
1977 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1978 fieldName0="zeField0"
1979 fieldName1="zeField1"
1980 fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
1981 fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
1984 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1985 fNode.setName(fieldName0) ; fNode.setMesh(m)
1986 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1987 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1988 f.setFieldNoProfileSBT(fNode)
1989 fs0.pushBackTimeStep(f)
1992 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1993 fNode.setName(fieldName1) ; fNode.setMesh(m)
1994 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1995 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1996 f.setFieldNoProfileSBT(fNode)
1997 fs1.pushBackTimeStep(f)
2000 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2001 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
2002 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
2003 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
2004 f.setFieldProfile(fNode,mm,0,pfl1)
2005 fs2.pushBackTimeStep(f)
2008 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2009 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
2010 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
2011 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
2012 f.setFieldProfile(fNode,mm,0,pfl2)
2013 fs3.pushBackTimeStep(f)
2016 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
2017 a0Exp=mm.getCoords().deepCpy()
2019 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2020 ms=MEDFileMeshes(fname)
2021 fields=MEDFileFields(fname,False)
2022 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2023 allFMTSLeavesToDisplay=[]
2024 for fields in fields_per_mesh:
2025 allFMTSLeavesToDisplay2=[]
2027 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2029 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2031 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2032 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
2033 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2034 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2035 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2036 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2037 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
2038 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2039 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
2040 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
2042 mst=MEDFileMeshStruct.New(ms[0])
2044 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2045 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2047 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2048 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2049 self.assertTrue(ncc)
2050 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2051 self.assertTrue(a1.isEqual(DataArrayByte([12,12,42,42,42])))
2052 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24,32,40])))
2053 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])))
2054 self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
2055 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])))
2056 for i in xrange(1,5):
2057 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2061 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2062 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2063 f.loadArraysIfNecessary()
2064 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2065 self.assertEqual(f.getName(),fieldName0)
2066 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2067 vExp=DataArrayDouble(5*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2068 self.assertTrue(v.isEqual(vExp,1e-12))
2070 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2071 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2072 f.loadArraysIfNecessary()
2073 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2074 self.assertEqual(f.getName(),fieldName1)
2075 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2076 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2077 self.assertTrue(v.isEqual(vExp,1e-12))
2080 fcscp=allFMTSLeavesPerCommonSupport[1][1]
2081 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2083 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2084 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2085 self.assertTrue(ncc)
2086 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2087 self.assertTrue(a1.isEqual(DataArrayByte([42,42])))
2088 self.assertTrue(a2.isEqual(DataArrayInt([8,16])))
2089 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
2090 self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
2091 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])))
2092 for i in xrange(1,5):
2093 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2097 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
2098 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2099 f.loadArraysIfNecessary()
2100 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2101 self.assertEqual(f.getName(),fieldName2)
2102 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2103 vExp=DataArrayDouble(2*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
2104 self.assertTrue(v.isEqual(vExp,1e-12))
2107 fcscp=allFMTSLeavesPerCommonSupport[2][1]
2108 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2110 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2111 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2112 self.assertTrue(ncc)
2113 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2114 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2115 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24])))
2116 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])))
2117 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2118 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])))
2119 for i in xrange(1,5):
2120 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2124 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
2125 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2126 f.loadArraysIfNecessary()
2127 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2128 self.assertEqual(f.getName(),fieldName3)
2129 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2130 vExp=DataArrayDouble(3*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
2131 self.assertTrue(v.isEqual(vExp,1e-12))
2136 """ Testing only polyhedrons"""
2137 fname="ForMEDReader14.med"
2138 m=MEDCouplingUMesh("mesh",3)
2140 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])
2141 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])
2142 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])
2143 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]"])
2145 mm=MEDFileUMesh() ; mm.setMeshes([m])
2146 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
2147 fieldName0="zeField0"
2148 fieldName1="zeField1"
2151 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2152 fNode.setName(fieldName0) ; fNode.setMesh(m)
2153 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2154 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
2155 f.setFieldNoProfileSBT(fNode)
2156 fs0.pushBackTimeStep(f)
2159 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2160 fNode.setName(fieldName1) ; fNode.setMesh(m)
2161 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2162 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2163 f.setFieldNoProfileSBT(fNode)
2164 fs1.pushBackTimeStep(f)
2167 fs0.write(fname,0) ; fs1.write(fname,0)
2168 a0Exp=mm.getCoords().deepCpy()
2170 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2171 ms=MEDFileMeshes(fname)
2172 fields=MEDFileFields(fname,False)
2173 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2174 allFMTSLeavesToDisplay=[]
2175 for fields in fields_per_mesh:
2176 allFMTSLeavesToDisplay2=[]
2178 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2180 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2182 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2183 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2184 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2185 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2186 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2187 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2188 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2189 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2191 mst=MEDFileMeshStruct.New(ms[0])
2193 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2194 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2196 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2197 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2198 self.assertTrue(ncc)
2199 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2200 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2201 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24])))
2202 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])))
2203 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2204 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])))
2205 for i in xrange(1,5):
2206 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2208 a6,a7=mml2.retrieveFamilyIdsOnCells()
2209 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
2211 a8,a9=mml2.retrieveNumberIdsOnCells()
2212 self.assertTrue(a8 is None)
2215 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2216 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2217 f.loadArraysIfNecessary()
2218 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2219 self.assertEqual(f.getName(),fieldName0)
2220 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2221 vExp=DataArrayDouble(3*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2222 self.assertTrue(v.isEqual(vExp,1e-12))
2224 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2225 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2226 f.loadArraysIfNecessary()
2227 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2228 self.assertEqual(f.getName(),fieldName1)
2229 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2230 vExp=DataArrayDouble(3*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2231 self.assertTrue(v.isEqual(vExp,1e-12))
2237 "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !)
2238 and a field "zeField" lying on a single geometric type for Cell discr and node part.
2239 Test that can appear the most simple but it hides a big issue of MEDReader
2240 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.
2242 fname="ForMEDReader15.med"
2243 m0=MEDCouplingCMesh()
2244 arr=DataArrayDouble(3) ; arr.iota(0)
2245 m0.setCoords(arr,arr,arr)
2247 m0=m0.buildUnstructured()
2250 fCell=MEDCouplingFieldDouble(ON_CELLS)
2251 fCell.setName(fieldName)
2254 fNode=MEDCouplingFieldDouble(ON_NODES)
2255 fNode.setName(fieldName)
2259 mm.setMeshAtLevel(0,m0)
2260 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
2261 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
2263 ffs=MEDFileFieldMultiTS()
2266 f1ts=MEDFileField1TS()
2267 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2270 fCell.checkCoherency()
2271 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2275 fNode.checkCoherency()
2276 f1ts.setFieldNoProfileSBT(fCell)
2277 f1ts.setFieldNoProfileSBT(fNode)
2278 ffs.pushBackTimeStep(f1ts)
2280 t=(2.1,1,0) ; off=100.
2281 f1ts=MEDFileField1TS()
2282 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2285 fCell.checkCoherency()
2286 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2290 fNode.checkCoherency()
2291 f1ts.setFieldNoProfileSBT(fCell)
2292 f1ts.setFieldNoProfileSBT(fNode)
2293 ffs.pushBackTimeStep(f1ts)
2295 t=(3.2,2,0) ; off=200.
2296 f1ts=MEDFileField1TS()
2297 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2300 fCell.checkCoherency()
2301 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2305 fNode.checkCoherency()
2306 f1ts.setFieldNoProfileSBT(fCell)
2307 f1ts.setFieldNoProfileSBT(fNode)
2308 ffs.pushBackTimeStep(f1ts)
2310 t=(4.3,3,1) ; off=300.
2311 f1ts=MEDFileField1TS()
2312 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2315 fCell.checkCoherency()
2316 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2320 fNode.checkCoherency()
2321 f1ts.setFieldNoProfileSBT(fCell)
2322 f1ts.setFieldNoProfileSBT(fNode)
2323 ffs.pushBackTimeStep(f1ts)
2327 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2328 ms=MEDFileMeshes(fname)
2329 fields=MEDFileFields(fname,False)
2330 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2331 allFMTSLeavesToDisplay=[]
2332 for fields in fields_per_mesh:
2333 allFMTSLeavesToDisplay2=[]
2335 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2337 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2339 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2340 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2341 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2342 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2343 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2344 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2345 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2346 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2348 mst=MEDFileMeshStruct.New(ms[0])
2350 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2351 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2353 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2354 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2355 self.assertTrue(ncc)
2356 self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,0.,0.,1.,1.,0.,1.,2.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,0.,2.,1.,1.,2.,1.,2.,2.,1.,0.,0.,2.,1.,0.,2.,2.,0.,2.,0.,1.,2.,1.,1.,2.,2.,1.,2.,0.,2.,2.,1.,2.,2.,2.,2.,2.0],27,3),1e-12))
2357 self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12])))
2358 self.assertTrue(a2.isEqual(DataArrayInt([8,16,24,32,40,48,56,64])))
2359 self.assertTrue(a3.isEqual(DataArrayInt([8,1,0,3,4,10,9,12,13,8,2,1,4,5,11,10,13,14,8,4,3,6,7,13,12,15,16,8,5,4,7,8,14,13,16,17,8,10,9,12,13,19,18,21,22,8,11,10,13,14,20,19,22,23,8,13,12,15,16,22,21,24,25,8,14,13,16,17,23,22,25,26])))
2360 self.assertTrue(a4 is None)
2361 self.assertTrue(a5 is None)
2362 a6,a7=mml2.retrieveFamilyIdsOnCells()
2363 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
2364 self.assertTrue(a7) # no copy here
2365 a8,a9=mml2.retrieveNumberIdsOnCells()
2366 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
2367 self.assertTrue(a9) # no copy here