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([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,100,104,108,112,117,122,127,132])))
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([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,100,104,108,112,117,122,127,132])))
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([0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,100,104,108,112,117,122,127,132])))
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([0,4,8,12,16,21,26,31,36])))
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([0,4,8,12,16,21,26,31,36])))
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([0,4,8,12,16,20])))
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([0,4,8,12,16,20,24,29])))
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
1005 num=DataArrayInt(15) ; num.iota(200) ; mm.setRenumFieldArr(1,num) ; del num
1007 fieldName0="zeField0" ; # on cells
1008 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1009 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1010 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1011 fieldName4="zeField4" ;# on nodes
1012 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1016 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1017 fNode.setName(fieldName0) ; fNode.setMesh(m)
1018 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1019 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1020 f.setFieldNoProfileSBT(fNode)
1021 fs0.pushBackTimeStep(f)
1024 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1025 fNode.setName(fieldName1)
1026 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1027 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1028 f.setFieldProfile(fNode,mm,0,pfl1)
1029 self.assertEqual(pfl1.getName(),"pfl1")
1030 fs1.pushBackTimeStep(f)
1033 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1034 fNode.setName(fieldName2)
1035 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1036 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1037 f.setFieldProfile(fNode,mm,0,pfl2)
1038 self.assertEqual(pfl2.getName(),"pfl2")
1039 fs2.pushBackTimeStep(f)
1042 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1043 fNode.setName(fieldName3)
1044 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1045 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1046 f.setFieldProfile(fNode,mm,0,pfl3)
1047 self.assertEqual(pfl3.getName(),"pfl3")
1048 fs3.pushBackTimeStep(f)
1051 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1052 fNode.setName(fieldName4) ; fNode.setMesh(m)
1053 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1054 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1055 f.setFieldNoProfileSBT(fNode)
1056 fs4.pushBackTimeStep(f)
1059 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1060 del m,mm,fs1,fs2,fs3,f,fNode
1061 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1062 ms=MEDFileMeshes(fname)
1063 fields=MEDFileFields(fname,False)
1064 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1065 allFMTSLeavesToDisplay=[]
1066 for fields in fields_per_mesh:
1067 allFMTSLeavesToDisplay2=[]
1069 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1071 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1073 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1074 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1075 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1076 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1077 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1078 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1079 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1080 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1081 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1082 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1084 mst=MEDFileMeshStruct.New(ms[0])
1086 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1087 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1089 a,b=mml2.buildVTUArrays()
1090 self.assertTrue(a.isEqual(coordsX,1e-12))
1091 self.assertTrue(b.isEqual(coordsY,1e-12))
1092 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
1093 for i in xrange(1,5):
1094 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1096 a6,a7=mml2.retrieveFamilyIdsOnCells()
1097 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1098 self.assertTrue(a7) # True because no copy
1099 a8,a9=mml2.retrieveNumberIdsOnCells()
1100 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1101 self.assertTrue(a9) # True because no copy
1102 a10,a11=mml2.retrieveNumberIdsOnNodes()
1103 self.assertTrue(a10.isEqual(DataArrayInt([200,201,202,203,204,205,206,207,208,209,210,211,212,213,214])))
1104 self.assertTrue(a11) # True because no copy
1106 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1107 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1108 f.loadArraysIfNecessary()
1109 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1110 self.assertEqual(f.getName(),fieldName0)
1111 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1112 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1113 self.assertTrue(v.isEqual(vExp,1e-12))
1115 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1116 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1117 f.loadArraysIfNecessary()
1118 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1119 self.assertEqual(f.getName(),fieldName4)
1120 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1121 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1122 self.assertTrue(v.isEqual(vExp,1e-12))
1125 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1126 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1128 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1129 a,b=mml2.buildVTUArrays()
1130 self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
1131 self.assertTrue(b.isEqual(coordsY,1e-12))
1132 a6,a7=mml2.retrieveFamilyIdsOnCells()
1133 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1134 self.assertTrue(not a7) # False because copy
1135 a8,a9=mml2.retrieveNumberIdsOnCells()
1136 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1137 self.assertTrue(not a9) # False because copy
1138 a10,a11=mml2.retrieveNumberIdsOnNodes()
1139 self.assertTrue(a10.isEqual(DataArrayInt([202,203,204,207,208,209,212,213,214])))
1140 self.assertTrue(not a11) # False because copy
1141 for i in xrange(1,5):
1142 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1145 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1146 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1147 f.loadArraysIfNecessary()
1148 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1149 self.assertEqual(f.getName(),fieldName1)
1150 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1151 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1152 self.assertTrue(v.isEqual(vExp,1e-12))
1154 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1155 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1156 f.loadArraysIfNecessary()
1157 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1158 self.assertEqual(f.getName(),fieldName2)
1159 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1160 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1161 self.assertTrue(v.isEqual(vExp,1e-12))
1164 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1165 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1167 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1168 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1169 self.assertTrue(not ncc)
1170 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)
1171 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1172 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1173 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1174 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15])))
1175 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])))
1176 self.assertTrue(a4 is None)
1177 self.assertTrue(a5 is None)
1178 a6,a7=mml2.retrieveFamilyIdsOnCells()
1179 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1180 self.assertTrue(not a7) # False because copy
1181 a8,a9=mml2.retrieveNumberIdsOnCells()
1182 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1183 self.assertTrue(not a9) # False because copy
1185 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1186 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1187 f.loadArraysIfNecessary()
1188 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1189 self.assertEqual(f.getName(),fieldName3)
1190 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1191 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1192 self.assertTrue(v.isEqual(vExp,1e-12))
1197 """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
1198 This test is very similar to the test6.
1200 fname="ForMEDReader7.med"
1201 m=MEDCouplingCurveLinearMesh("mesh") ; m.setNodeGridStructure([5,3])
1202 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)
1203 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1205 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
1206 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
1207 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
1209 fieldName0="zeField0" ; # on cells
1210 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1211 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1212 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1213 fieldName4="zeField4" ;# on nodes
1214 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1218 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1219 fNode.setName(fieldName0) ; fNode.setMesh(m)
1220 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1221 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1222 f.setFieldNoProfileSBT(fNode)
1223 fs0.pushBackTimeStep(f)
1226 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1227 fNode.setName(fieldName1)
1228 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1229 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1230 f.setFieldProfile(fNode,mm,0,pfl1)
1231 self.assertEqual(pfl1.getName(),"pfl1")
1232 fs1.pushBackTimeStep(f)
1235 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1236 fNode.setName(fieldName2)
1237 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1238 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1239 f.setFieldProfile(fNode,mm,0,pfl2)
1240 self.assertEqual(pfl2.getName(),"pfl2")
1241 fs2.pushBackTimeStep(f)
1244 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1245 fNode.setName(fieldName3)
1246 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1247 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1248 f.setFieldProfile(fNode,mm,0,pfl3)
1249 self.assertEqual(pfl3.getName(),"pfl3")
1250 fs3.pushBackTimeStep(f)
1253 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1254 fNode.setName(fieldName4) ; fNode.setMesh(m)
1255 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1256 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1257 f.setFieldNoProfileSBT(fNode)
1258 fs4.pushBackTimeStep(f)
1261 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1262 del m,mm,fs1,fs2,fs3,f,fNode
1263 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1264 ms=MEDFileMeshes(fname)
1265 fields=MEDFileFields(fname,False)
1266 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1267 allFMTSLeavesToDisplay=[]
1268 for fields in fields_per_mesh:
1269 allFMTSLeavesToDisplay2=[]
1271 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1273 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1275 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1276 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1277 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1278 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1279 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1280 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1281 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1282 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1283 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1284 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1286 mst=MEDFileMeshStruct.New(ms[0])
1288 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1289 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1291 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
1292 a,b=mml2.buildVTUArrays()
1293 self.assertTrue(a.isEqual(a0Exp,1e-12))
1294 self.assertEqual(b,[5,3])
1295 a6,a7=mml2.retrieveFamilyIdsOnCells()
1296 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1297 self.assertTrue(a7) # True because no copy
1298 a8,a9=mml2.retrieveNumberIdsOnCells()
1299 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1300 self.assertTrue(a9) # True because no copy
1301 for i in xrange(1,5):
1302 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1305 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1306 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1307 f.loadArraysIfNecessary()
1308 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1309 self.assertEqual(f.getName(),fieldName0)
1310 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1311 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1312 self.assertTrue(v.isEqual(vExp,1e-12))
1314 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1315 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1316 f.loadArraysIfNecessary()
1317 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1318 self.assertEqual(f.getName(),fieldName4)
1319 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1320 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1321 self.assertTrue(v.isEqual(vExp,1e-12))
1324 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1325 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1327 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1328 a,b=mml2.buildVTUArrays()
1329 self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
1330 self.assertEqual(b,[3,3])
1331 a6,a7=mml2.retrieveFamilyIdsOnCells()
1332 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1333 self.assertTrue(not a7) # False because copy
1334 a8,a9=mml2.retrieveNumberIdsOnCells()
1335 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1336 self.assertTrue(not a9) # False because copy
1337 for i in xrange(1,5):
1338 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1341 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1342 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1343 f.loadArraysIfNecessary()
1344 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1345 self.assertEqual(f.getName(),fieldName1)
1346 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1347 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1348 self.assertTrue(v.isEqual(vExp,1e-12))
1350 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1351 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1352 f.loadArraysIfNecessary()
1353 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1354 self.assertEqual(f.getName(),fieldName2)
1355 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1356 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1357 self.assertTrue(v.isEqual(vExp,1e-12))
1360 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1361 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1363 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1364 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1365 self.assertTrue(not ncc)
1366 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)
1367 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1368 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1369 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1370 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15])))
1371 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])))
1372 self.assertTrue(a4 is None)
1373 self.assertTrue(a5 is None)
1374 a6,a7=mml2.retrieveFamilyIdsOnCells()
1375 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1376 self.assertTrue(not a7) # False because copy
1377 a8,a9=mml2.retrieveNumberIdsOnCells()
1378 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1379 self.assertTrue(not a9) # False because copy
1381 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1382 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1383 f.loadArraysIfNecessary()
1384 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1385 self.assertEqual(f.getName(),fieldName3)
1386 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1387 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1388 self.assertTrue(v.isEqual(vExp,1e-12))
1393 """ This test plays with with gauss fields with no profiles.
1395 fname="ForMEDReader8.med"
1396 # building a mesh containing 6 tri3 + 5 quad4
1397 m=MEDCouplingUMesh("mesh",2)
1398 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]"])
1401 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])
1402 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1403 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])
1404 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1405 mm=MEDFileUMesh() ; mm.setMeshes([m])
1407 fieldName0="zeField0"
1408 fieldName1="zeField1"
1409 fieldName2="zeField2"
1410 fieldName3="zeField3"
1411 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1414 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1415 fNode.setName(fieldName0) ; fNode.setMesh(m)
1416 arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1417 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1418 f.setFieldNoProfileSBT(fNode)
1419 fs0.pushBackTimeStep(f)
1422 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1423 fNode.setName(fieldName1) ; fNode.setMesh(m)
1424 arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1425 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1426 f.setFieldNoProfileSBT(fNode)
1427 fs1.pushBackTimeStep(f)
1430 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1431 fNode.setName(fieldName2) ; fNode.setMesh(m)
1432 fNode.setGaussLocalizationOnCells([0,1,2,3],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1433 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])
1434 fNode.setGaussLocalizationOnCells([6,7,8],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1435 fNode.setGaussLocalizationOnCells([9,10],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1436 arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1437 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1438 f.setFieldNoProfileSBT(fNode)
1439 fs2.pushBackTimeStep(f)
1442 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1443 fNode.setName(fieldName3) ; fNode.setMesh(m)
1444 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1445 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1446 f.setFieldNoProfileSBT(fNode)
1447 fs3.pushBackTimeStep(f)
1452 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1453 a0Exp=mm.getCoords().deepCpy()
1454 del m,mm,fs1,fs2,fs3,f,fNode
1455 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1456 ms=MEDFileMeshes(fname)
1457 fields=MEDFileFields(fname,False)
1458 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1459 allFMTSLeavesToDisplay=[]
1460 for fields in fields_per_mesh:
1461 allFMTSLeavesToDisplay2=[]
1463 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1465 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1467 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1468 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1469 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1470 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1471 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1472 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1473 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1474 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1476 mst=MEDFileMeshStruct.New(ms[0])
1478 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1479 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1481 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1482 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1483 self.assertTrue(not ncc)
1484 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1485 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9])))
1486 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,20,24,29,34,39,44])))
1487 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])))
1488 self.assertTrue(a4 is None)
1489 self.assertTrue(a5 is None)
1490 for i in xrange(1,5):
1491 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1494 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1495 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1496 f.loadArraysIfNecessary()
1497 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1498 self.assertEqual(f.getName(),fieldName0)
1499 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1500 vExp=DataArrayDouble(38*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1501 self.assertTrue(v.isEqual(vExp,1e-12))
1503 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1504 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1505 f.loadArraysIfNecessary()
1506 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1507 self.assertEqual(f.getName(),fieldName1)
1508 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1509 vExp=DataArrayDouble(11*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1510 self.assertTrue(v.isEqual(vExp,1e-12))
1512 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1513 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1514 f.loadArraysIfNecessary()
1515 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1516 self.assertEqual(f.getName(),fieldName2)
1517 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1518 vExp=DataArrayDouble(44*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1519 self.assertTrue(v.isEqual(vExp,1e-12))
1521 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1522 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1523 f.loadArraysIfNecessary()
1524 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1525 self.assertEqual(f.getName(),fieldName3)
1526 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1527 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1528 self.assertTrue(v.isEqual(vExp,1e-12))
1534 """ This test plays with with gauss fields with profiles.
1536 fname="ForMEDReader9.med"
1537 # building a mesh containing 6 tri3 + 5 quad4
1538 m=MEDCouplingUMesh("mesh",2)
1539 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]"])
1542 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])
1543 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1544 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])
1545 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1546 mm=MEDFileUMesh() ; mm.setMeshes([m])
1548 fieldName0="zeField0"
1549 fieldName1="zeField1"
1550 fieldName2="zeField2"
1551 fieldName3="zeField3"
1552 pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
1553 pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
1554 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1557 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1558 fNode.setName(fieldName0)
1559 arr=DataArrayDouble(2*18) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1560 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1561 f.setFieldProfile(fNode,mm,0,pfl1)
1562 fs0.pushBackTimeStep(f)
1565 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1566 fNode.setName(fieldName1)
1567 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1568 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1569 f.setFieldProfile(fNode,mm,0,pfl1)
1570 fs1.pushBackTimeStep(f)
1573 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1574 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1575 fNode.setGaussLocalizationOnCells([0],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1576 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])
1577 fNode.setGaussLocalizationOnCells([2,3],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1578 fNode.setGaussLocalizationOnCells([4],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1579 arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1580 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1581 f.setFieldProfile(fNode,mm,0,pfl1)
1582 fs2.pushBackTimeStep(f)
1585 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1586 fNode.setName(fieldName3)
1587 arr=DataArrayDouble(2*9) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1588 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1589 f.setFieldProfile(fNode,mm,0,pfl2)
1590 fs3.pushBackTimeStep(f)
1595 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1596 a0Exp=mm.getCoords().deepCpy()
1597 del m,mm,fs1,fs2,fs3,f,fNode
1598 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1599 ms=MEDFileMeshes(fname)
1600 fields=MEDFileFields(fname,False)
1601 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1602 allFMTSLeavesToDisplay=[]
1603 for fields in fields_per_mesh:
1604 allFMTSLeavesToDisplay2=[]
1606 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1608 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1610 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1611 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1612 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1613 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1614 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1615 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1616 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1617 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1619 mst=MEDFileMeshStruct.New(ms[0])
1621 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1622 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1624 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1625 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1626 self.assertTrue(not ncc)
1627 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
1628 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1629 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18])))
1630 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])))
1631 self.assertTrue(a4 is None)
1632 self.assertTrue(a5 is None)
1633 for i in xrange(1,5):
1634 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1637 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1638 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1639 f.loadArraysIfNecessary()
1640 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1641 self.assertEqual(f.getName(),fieldName0)
1642 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1643 vExp=DataArrayDouble(18*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1644 self.assertTrue(v.isEqual(vExp,1e-12))
1646 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1647 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1648 f.loadArraysIfNecessary()
1649 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1650 self.assertEqual(f.getName(),fieldName1)
1651 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1652 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1653 self.assertTrue(v.isEqual(vExp,1e-12))
1655 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1656 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1657 f.loadArraysIfNecessary()
1658 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1659 self.assertEqual(f.getName(),fieldName2)
1660 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1661 vExp=DataArrayDouble(22*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1662 self.assertTrue(v.isEqual(vExp,1e-12))
1664 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1665 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1666 f.loadArraysIfNecessary()
1667 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1668 self.assertEqual(f.getName(),fieldName3)
1669 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1670 vExp=DataArrayDouble(9*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1671 self.assertTrue(v.isEqual(vExp,1e-12))
1676 """ This test plays with fields only on nodes containing profiles.
1678 fname="ForMEDReader10.med"
1679 # building a mesh containing 6 tri3 + 5 quad4
1680 m=MEDCouplingUMesh("mesh",2)
1681 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]"])
1684 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])
1685 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1686 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])
1687 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1688 mm=MEDFileUMesh() ; mm.setMeshes([m])
1690 fieldName0="zeField0"
1691 fieldName1="zeField1"
1692 fieldName2="zeField2"
1693 pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
1694 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
1697 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1698 fNode.setName(fieldName0)
1699 arr=DataArrayDouble(2*9) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1700 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1701 f.setFieldProfile(fNode,mm,0,pfl1)
1702 fs0.pushBackTimeStep(f)
1705 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1706 fNode.setName(fieldName1)
1707 arr=DataArrayDouble(2*9) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1708 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1709 f.setFieldProfile(fNode,mm,0,pfl1)
1710 fs1.pushBackTimeStep(f)
1713 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1714 fNode.setName(fieldName2)
1715 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1716 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1717 f.setFieldProfile(fNode,mm,0,pfl1)
1718 fs2.pushBackTimeStep(f)
1723 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
1724 a0Exp=mm.getCoords().deepCpy()
1725 del m,mm,fs1,fs2,f,fNode
1726 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1727 ms=MEDFileMeshes(fname)
1728 fields=MEDFileFields(fname,False)
1729 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1730 allFMTSLeavesToDisplay=[]
1731 for fields in fields_per_mesh:
1732 allFMTSLeavesToDisplay2=[]
1734 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1736 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1738 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1739 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
1740 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1741 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1742 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
1743 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1744 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1745 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
1747 mst=MEDFileMeshStruct.New(ms[0])
1749 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1750 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1752 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1753 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1754 self.assertTrue(not ncc)
1755 self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12))
1756 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1757 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18])))
1758 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])))
1759 self.assertTrue(a4 is None)
1760 self.assertTrue(a5 is None)
1761 for i in xrange(1,5):
1762 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1765 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1766 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1767 f.loadArraysIfNecessary()
1768 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1769 self.assertEqual(f.getName(),fieldName0)
1770 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1771 vExp=DataArrayDouble(9*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1772 self.assertTrue(v.isEqual(vExp,1e-12))
1774 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1775 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1776 f.loadArraysIfNecessary()
1777 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1778 self.assertEqual(f.getName(),fieldName1)
1779 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1780 vExp=DataArrayDouble(9*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1781 self.assertTrue(v.isEqual(vExp,1e-12))
1783 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1784 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1785 f.loadArraysIfNecessary()
1786 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1787 self.assertEqual(f.getName(),fieldName2)
1788 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1789 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1790 self.assertTrue(v.isEqual(vExp,1e-12))
1795 """ 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 !
1796 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.
1798 fname="ForMEDReader11.med"
1799 m=MEDCouplingCMesh("mesh")
1800 arr=DataArrayDouble(5) ; arr.iota()
1801 m.setCoords(arr,arr)
1802 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1803 mm=MEDFileUMesh() ; mm.setMeshes([m])
1805 fieldName0="zeField0"
1806 fs0=MEDFileFieldMultiTS()
1809 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1810 fNode.setName(fieldName0) ; fNode.setMesh(m)
1811 fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1812 fNode.setGaussLocalizationOnCells([1,5,8,9],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1813 fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1814 fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1815 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1816 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1817 f.setFieldNoProfileSBT(fNode)
1818 fs0.pushBackTimeStep(f)
1822 a0Exp=mm.getCoords().deepCpy()
1823 del m,mm,fs0,f,fNode
1824 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1825 ms=MEDFileMeshes(fname)
1826 fields=MEDFileFields(fname,False)
1827 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1828 allFMTSLeavesToDisplay=[]
1829 for fields in fields_per_mesh:
1830 allFMTSLeavesToDisplay2=[]
1832 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1834 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1836 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1837 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
1838 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1839 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 1 field is defined on the same time steps
1840 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
1841 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1842 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1843 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
1845 mst=MEDFileMeshStruct.New(ms[0])
1847 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1848 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1850 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1851 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1852 self.assertTrue(not ncc)
1853 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1854 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1855 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
1856 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]]
1857 self.assertTrue(a4 is None)
1858 self.assertTrue(a5 is None)
1859 for i in xrange(1,5):
1860 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1863 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1864 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1865 f.loadArraysIfNecessary()
1866 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1867 self.assertEqual(f.getName(),fieldName0)
1868 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1869 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]'])
1871 self.assertTrue(v.isEqual(vExp,1e-12))
1876 """ This test is the second ultimate test for the profiles with gauss points.
1877 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.
1879 fname="ForMEDReader12.med"
1880 m=MEDCouplingCMesh("mesh")
1881 arr=DataArrayDouble(5) ; arr.iota()
1882 m.setCoords(arr,arr)
1883 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1884 mm=MEDFileUMesh() ; mm.setMeshes([m])
1886 fieldName0="zeField0"
1887 fieldName1="zeField1"
1888 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
1891 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1892 fNode.setName(fieldName0) ; fNode.setMesh(m)
1893 fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1894 fNode.setGaussLocalizationOnCells([1,5,8,9],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1895 fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1896 fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,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])
1897 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1898 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1899 f.setFieldNoProfileSBT(fNode)
1900 fs0.pushBackTimeStep(f)
1903 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1904 fNode.setName(fieldName1) ; fNode.setMesh(m)
1905 arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1906 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1907 f.setFieldNoProfileSBT(fNode)
1908 fs1.pushBackTimeStep(f)
1911 fs0.write(fname,0) ; fs1.write(fname,0)
1912 a0Exp=mm.getCoords().deepCpy()
1913 del m,mm,fs0,fs1,f,fNode
1914 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1915 ms=MEDFileMeshes(fname)
1916 fields=MEDFileFields(fname,False)
1917 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1918 allFMTSLeavesToDisplay=[]
1919 for fields in fields_per_mesh:
1920 allFMTSLeavesToDisplay2=[]
1922 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1924 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1926 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1927 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
1928 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1929 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1930 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
1931 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1932 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1933 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1935 mst=MEDFileMeshStruct.New(ms[0])
1937 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1938 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1940 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1941 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1942 self.assertTrue(not ncc)
1943 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1944 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1945 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
1946 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
1947 self.assertTrue(a4 is None)
1948 self.assertTrue(a5 is None)
1949 for i in xrange(1,5):
1950 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1953 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1954 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1955 f.loadArraysIfNecessary()
1956 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1957 self.assertEqual(f.getName(),fieldName0)
1958 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1959 vExp=DataArrayDouble(65*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1960 self.assertTrue(v.isEqual(vExp,1e-12))
1962 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1963 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1964 f.loadArraysIfNecessary()
1965 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1966 self.assertEqual(f.getName(),fieldName1)
1967 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1968 vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1969 self.assertTrue(v.isEqual(vExp,1e-12))
1973 """ Testing polyhedrons mixed with hexa8"""
1974 fname="ForMEDReader13.med"
1975 m=MEDCouplingUMesh("mesh",3)
1977 m.insertNextCell(NORM_HEXA8,[1,0,6,7,13,12,18,19]) ; m.insertNextCell(NORM_HEXA8,[2,1,7,8,14,13,19,20])
1978 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])
1979 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])
1980 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])
1981 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]"])
1983 mm=MEDFileUMesh() ; mm.setMeshes([m])
1984 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1985 fieldName0="zeField0"
1986 fieldName1="zeField1"
1987 fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
1988 fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
1991 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1992 fNode.setName(fieldName0) ; fNode.setMesh(m)
1993 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1994 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1995 f.setFieldNoProfileSBT(fNode)
1996 fs0.pushBackTimeStep(f)
1999 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2000 fNode.setName(fieldName1) ; fNode.setMesh(m)
2001 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2002 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2003 f.setFieldNoProfileSBT(fNode)
2004 fs1.pushBackTimeStep(f)
2007 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2008 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
2009 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
2010 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
2011 f.setFieldProfile(fNode,mm,0,pfl1)
2012 fs2.pushBackTimeStep(f)
2015 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2016 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
2017 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
2018 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
2019 f.setFieldProfile(fNode,mm,0,pfl2)
2020 fs3.pushBackTimeStep(f)
2023 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
2024 a0Exp=mm.getCoords().deepCpy()
2026 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2027 ms=MEDFileMeshes(fname)
2028 fields=MEDFileFields(fname,False)
2029 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2030 allFMTSLeavesToDisplay=[]
2031 for fields in fields_per_mesh:
2032 allFMTSLeavesToDisplay2=[]
2034 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2036 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2038 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2039 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
2040 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2041 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2042 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2043 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2044 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
2045 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2046 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
2047 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
2049 mst=MEDFileMeshStruct.New(ms[0])
2051 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2052 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2054 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2055 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2056 self.assertTrue(ncc)
2057 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2058 self.assertTrue(a1.isEqual(DataArrayByte([12,12,42,42,42])))
2059 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36])))
2060 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])))
2061 self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
2062 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])))
2063 for i in xrange(1,5):
2064 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2068 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2069 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2070 f.loadArraysIfNecessary()
2071 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2072 self.assertEqual(f.getName(),fieldName0)
2073 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2074 vExp=DataArrayDouble(5*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2075 self.assertTrue(v.isEqual(vExp,1e-12))
2077 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2078 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2079 f.loadArraysIfNecessary()
2080 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2081 self.assertEqual(f.getName(),fieldName1)
2082 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2083 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2084 self.assertTrue(v.isEqual(vExp,1e-12))
2087 fcscp=allFMTSLeavesPerCommonSupport[1][1]
2088 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2090 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2091 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2092 self.assertTrue(ncc)
2093 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2094 self.assertTrue(a1.isEqual(DataArrayByte([42,42])))
2095 self.assertTrue(a2.isEqual(DataArrayInt([0,9])))
2096 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
2097 self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
2098 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])))
2099 for i in xrange(1,5):
2100 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2104 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
2105 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2106 f.loadArraysIfNecessary()
2107 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2108 self.assertEqual(f.getName(),fieldName2)
2109 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2110 vExp=DataArrayDouble(2*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
2111 self.assertTrue(v.isEqual(vExp,1e-12))
2114 fcscp=allFMTSLeavesPerCommonSupport[2][1]
2115 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2117 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2118 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2119 self.assertTrue(ncc)
2120 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2121 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2122 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18])))
2123 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])))
2124 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2125 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])))
2126 for i in xrange(1,5):
2127 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2131 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
2132 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2133 f.loadArraysIfNecessary()
2134 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2135 self.assertEqual(f.getName(),fieldName3)
2136 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2137 vExp=DataArrayDouble(3*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
2138 self.assertTrue(v.isEqual(vExp,1e-12))
2143 """ Testing only polyhedrons"""
2144 fname="ForMEDReader14.med"
2145 m=MEDCouplingUMesh("mesh",3)
2147 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])
2148 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])
2149 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])
2150 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]"])
2152 mm=MEDFileUMesh() ; mm.setMeshes([m])
2153 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
2154 fieldName0="zeField0"
2155 fieldName1="zeField1"
2158 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2159 fNode.setName(fieldName0) ; fNode.setMesh(m)
2160 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2161 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
2162 f.setFieldNoProfileSBT(fNode)
2163 fs0.pushBackTimeStep(f)
2166 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2167 fNode.setName(fieldName1) ; fNode.setMesh(m)
2168 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2169 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2170 f.setFieldNoProfileSBT(fNode)
2171 fs1.pushBackTimeStep(f)
2174 fs0.write(fname,0) ; fs1.write(fname,0)
2175 a0Exp=mm.getCoords().deepCpy()
2177 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2178 ms=MEDFileMeshes(fname)
2179 fields=MEDFileFields(fname,False)
2180 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2181 allFMTSLeavesToDisplay=[]
2182 for fields in fields_per_mesh:
2183 allFMTSLeavesToDisplay2=[]
2185 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2187 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2189 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2190 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2191 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2192 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2193 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2194 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2195 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2196 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2198 mst=MEDFileMeshStruct.New(ms[0])
2200 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2201 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2203 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2204 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2205 self.assertTrue(ncc)
2206 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2207 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2208 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18])))
2209 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])))
2210 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2211 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])))
2212 for i in xrange(1,5):
2213 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2215 a6,a7=mml2.retrieveFamilyIdsOnCells()
2216 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
2218 a8,a9=mml2.retrieveNumberIdsOnCells()
2219 self.assertTrue(a8 is None)
2222 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2223 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2224 f.loadArraysIfNecessary()
2225 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2226 self.assertEqual(f.getName(),fieldName0)
2227 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2228 vExp=DataArrayDouble(3*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2229 self.assertTrue(v.isEqual(vExp,1e-12))
2231 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2232 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2233 f.loadArraysIfNecessary()
2234 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2235 self.assertEqual(f.getName(),fieldName1)
2236 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2237 vExp=DataArrayDouble(3*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2238 self.assertTrue(v.isEqual(vExp,1e-12))
2244 "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !)
2245 and a field "zeField" lying on a single geometric type for Cell discr and node part.
2246 Test that can appear the most simple but it hides a big issue of MEDReader
2247 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.
2249 fname="ForMEDReader15.med"
2250 m0=MEDCouplingCMesh()
2251 arr=DataArrayDouble(3) ; arr.iota(0)
2252 m0.setCoords(arr,arr,arr)
2254 m0=m0.buildUnstructured()
2257 fCell=MEDCouplingFieldDouble(ON_CELLS)
2258 fCell.setName(fieldName)
2261 fNode=MEDCouplingFieldDouble(ON_NODES)
2262 fNode.setName(fieldName)
2266 mm.setMeshAtLevel(0,m0)
2267 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
2268 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
2270 ffs=MEDFileFieldMultiTS()
2273 f1ts=MEDFileField1TS()
2274 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2277 fCell.checkCoherency()
2278 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2282 fNode.checkCoherency()
2283 f1ts.setFieldNoProfileSBT(fCell)
2284 f1ts.setFieldNoProfileSBT(fNode)
2285 ffs.pushBackTimeStep(f1ts)
2287 t=(2.1,1,0) ; off=100.
2288 f1ts=MEDFileField1TS()
2289 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2292 fCell.checkCoherency()
2293 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2297 fNode.checkCoherency()
2298 f1ts.setFieldNoProfileSBT(fCell)
2299 f1ts.setFieldNoProfileSBT(fNode)
2300 ffs.pushBackTimeStep(f1ts)
2302 t=(3.2,2,0) ; off=200.
2303 f1ts=MEDFileField1TS()
2304 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2307 fCell.checkCoherency()
2308 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2312 fNode.checkCoherency()
2313 f1ts.setFieldNoProfileSBT(fCell)
2314 f1ts.setFieldNoProfileSBT(fNode)
2315 ffs.pushBackTimeStep(f1ts)
2317 t=(4.3,3,1) ; off=300.
2318 f1ts=MEDFileField1TS()
2319 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2322 fCell.checkCoherency()
2323 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2327 fNode.checkCoherency()
2328 f1ts.setFieldNoProfileSBT(fCell)
2329 f1ts.setFieldNoProfileSBT(fNode)
2330 ffs.pushBackTimeStep(f1ts)
2334 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2335 ms=MEDFileMeshes(fname)
2336 fields=MEDFileFields(fname,False)
2337 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2338 allFMTSLeavesToDisplay=[]
2339 for fields in fields_per_mesh:
2340 allFMTSLeavesToDisplay2=[]
2342 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2344 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2346 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2347 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2348 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2349 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2350 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2351 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2352 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2353 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2355 mst=MEDFileMeshStruct.New(ms[0])
2357 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2358 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2360 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2361 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2362 self.assertTrue(ncc)
2363 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))
2364 self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12])))
2365 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36,45,54,63])))
2366 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])))
2367 self.assertTrue(a4 is None)
2368 self.assertTrue(a5 is None)
2369 a6,a7=mml2.retrieveFamilyIdsOnCells()
2370 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
2371 self.assertTrue(a7) # no copy here
2372 a8,a9=mml2.retrieveNumberIdsOnCells()
2373 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
2374 self.assertTrue(a9) # no copy here
2378 """ Here 2 meshes "mesh1" and "mesh2" and 4 fields (no profiles here) :
2379 - "zeField1_0" (CELLS) and "zeField2_0" (NODES) on "mesh1"
2380 - "zeField3_1" (CELLS) and "zeField4_1" (NODES) on "mesh2"
2381 time steps series are the same for the whole 4 fields
2383 fname="ForMEDReader16.med"
2384 m0=MEDCouplingCMesh()
2385 arr=DataArrayDouble(3) ; arr.iota(0)
2386 m0.setCoords(arr,arr,arr)
2388 m0=m0.buildUnstructured()
2390 fCell1=MEDCouplingFieldDouble(ON_CELLS)
2391 fCell1.setName("zeField1_0")
2394 fNode1=MEDCouplingFieldDouble(ON_NODES)
2395 fNode1.setName("zeField2_0")
2400 mm1.setMeshAtLevel(0,m0)
2401 fam=DataArrayInt([0,1,0,1,2,3,2,3]); mm1.setFamilyFieldArr(0,fam) ; del fam
2402 num=DataArrayInt(8) ; num.iota(100) ; mm1.setRenumFieldArr(0,num) ; del num
2403 mm1.setFamilyId("FAMILLE_ZERO",0) ; mm1.setFamilyId("Family1_1",1) ; mm1.setFamilyId("Family1_2",2) ; mm1.setFamilyId("Family1_3",3) ; mm1.setFamilyId("Family1_4",4)
2404 mm1.setFamiliesIdsOnGroup("Grp1_1",[0,1]) ; mm1.setFamiliesIdsOnGroup("Grp1_2",[2,3])
2405 mms.pushMesh(mm1) ; del mm1
2407 m1=m0.deepCpy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2")
2409 fCell2=MEDCouplingFieldDouble(ON_CELLS)
2410 fCell2.setName("zeField3_1")
2413 fNode2=MEDCouplingFieldDouble(ON_NODES)
2414 fNode2.setName("zeField4_1")
2418 mm2.setMeshAtLevel(0,m1)
2419 fam=DataArrayInt([0,1,0,1,2,3,2,3]); mm2.setFamilyFieldArr(0,fam) ; del fam
2420 num=DataArrayInt(8) ; num.iota(200) ; mm2.setRenumFieldArr(0,num) ; del num
2421 mm2.setFamilyId("FAMILLE_ZERO",0) ; mm2.setFamilyId("Family2_1",1) ; mm2.setFamilyId("Family2_2",2) ; mm2.setFamilyId("Family2_3",3) ; mm2.setFamilyId("Family2_4",4)
2422 mm2.setFamiliesIdsOnGroup("Grp2_1",[0,1]) ; mm2.setFamiliesIdsOnGroup("Grp2_2",[2,3]) ; mm2.setFamiliesIdsOnGroup("Grp2_3",[1,2,3])
2423 mms.pushMesh(mm2) ; del mm2
2424 ffs1_1=MEDFileFieldMultiTS()
2425 ffs1_2=MEDFileFieldMultiTS()
2426 ffs2_1=MEDFileFieldMultiTS()
2427 ffs2_2=MEDFileFieldMultiTS()
2429 for elt in ffs1_1,ffs1_2,ffs2_1,ffs2_2:
2434 f1ts1=MEDFileField1TS()
2435 f1ts2=MEDFileField1TS()
2436 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2439 fCell1.checkCoherency()
2440 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2444 fNode1.checkCoherency()
2445 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2446 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2448 f1ts1=MEDFileField1TS()
2449 f1ts2=MEDFileField1TS()
2450 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2453 fCell2.checkCoherency()
2454 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2458 fNode2.checkCoherency()
2459 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2460 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2462 t=(2.1,1,0) ; off=100.
2463 f1ts1=MEDFileField1TS()
2464 f1ts2=MEDFileField1TS()
2465 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2468 fCell1.checkCoherency()
2469 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2473 fNode1.checkCoherency()
2474 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2475 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2477 f1ts1=MEDFileField1TS()
2478 f1ts2=MEDFileField1TS()
2479 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2482 fCell2.checkCoherency()
2483 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2487 fNode2.checkCoherency()
2488 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2489 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2491 t=(3.1,2,0) ; off=200.
2492 f1ts1=MEDFileField1TS()
2493 f1ts2=MEDFileField1TS()
2494 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2497 fCell1.checkCoherency()
2498 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2502 fNode1.checkCoherency()
2503 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2504 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2506 f1ts1=MEDFileField1TS()
2507 f1ts2=MEDFileField1TS()
2508 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2511 fCell2.checkCoherency()
2512 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2516 fNode2.checkCoherency()
2517 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2518 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2520 mms.write(fname,2) ; mts.write(fname,0)
2521 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2522 ms=MEDFileMeshes(fname)
2523 fields=MEDFileFields(fname,False)
2524 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2525 allFMTSLeavesToDisplay=[]
2526 for fields in fields_per_mesh:
2527 allFMTSLeavesToDisplay2=[]
2529 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2531 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2533 self.assertEqual(len(allFMTSLeavesToDisplay),2)
2534 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2535 self.assertEqual(len(allFMTSLeavesToDisplay[1]),2)
2536 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2537 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2538 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2539 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2540 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2541 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
2542 allFMTSLeavesPerCommonSupport2=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2543 self.assertEqual(len(allFMTSLeavesPerCommonSupport2),1)
2544 self.assertEqual(len(allFMTSLeavesPerCommonSupport2[0][0]),2)
2548 """ First test on GAUSS_NE (Elno). Here no Profiles.
2551 fname="ForMEDReader17.med"
2552 fieldName1="MyFirstElno"
2553 fieldName2="ACellField"
2554 fieldName3="ANodeField"
2555 coo=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.],6,2)
2556 m=MEDCouplingUMesh("mesh",2)
2559 m.insertNextCell(NORM_QUAD4,[0,3,4,1])
2560 m.insertNextCell(NORM_QUAD4,[1,4,5,2])
2564 f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
2565 f.setArray(DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]))
2566 f.setName(fieldName1)
2568 MEDLoader.WriteField(fname,f,True)
2569 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2570 f2.setArray(DataArrayDouble([7.,11.],2,1))
2571 f2.setName(fieldName2)
2572 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2573 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2574 f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
2575 f3.setName(fieldName3)
2576 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2579 f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
2580 f.setArray(DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.]))
2581 f.setName(fieldName1)
2583 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f)
2584 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2585 f2.setArray(DataArrayDouble([11.,7.],2,1))
2586 f2.setName(fieldName2)
2587 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2588 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2589 f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
2590 f3.setName(fieldName3)
2591 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2592 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2593 ms=MEDFileMeshes(fname)
2594 fields=MEDFileFields(fname,False)
2595 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2596 allFMTSLeavesToDisplay=[]
2597 for fields in fields_per_mesh:
2598 allFMTSLeavesToDisplay2=[]
2600 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2602 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2604 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2605 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2606 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2607 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2608 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2609 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2610 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2611 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2613 mst=MEDFileMeshStruct.New(ms[0])
2615 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2616 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2618 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2619 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2620 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2621 self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.],6,3),1e-12))
2622 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2623 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2624 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2625 self.assertTrue(a4 is None)
2626 self.assertTrue(a5 is None)
2627 a6,a7=mml2.retrieveFamilyIdsOnCells()
2628 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2629 self.assertTrue(a7) # no copy here
2630 a8,a9=mml2.retrieveNumberIdsOnCells()
2631 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2632 self.assertTrue(a9) # no copy here
2633 for i in xrange(1,2):
2634 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2636 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2637 vExp1=[DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]),DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.])]
2639 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2640 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2641 f.loadArraysIfNecessary()
2642 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2643 self.assertEqual(f.getName(),fieldName2)
2644 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2645 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2647 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2648 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2649 f.loadArraysIfNecessary()
2650 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2651 self.assertEqual(f.getName(),fieldName1)
2652 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2653 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2658 """ First test on GAUSS_PT. Here no Profiles. 2 times steps.
2660 fname="ForMEDReader18.med"
2661 fieldName1="MyFirstGauss"
2662 fieldName2="ACellField"
2663 fieldName3="ANodeField"
2664 coo=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.],6,2)
2665 m=MEDCouplingUMesh("mesh",2)
2668 m.insertNextCell(NORM_QUAD4,[0,3,4,1])
2669 m.insertNextCell(NORM_QUAD4,[1,4,5,2])
2673 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
2674 f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
2675 f.setArray(DataArrayDouble([3.,5.,4.,6.])) ; f.getArray().setInfoOnComponents(["Smth"])
2676 f.setName(fieldName1)
2678 MEDLoader.WriteField(fname,f,True)
2679 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2680 f2.setArray(DataArrayDouble([7.,11.],2,1))
2681 f2.setName(fieldName2)
2682 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2683 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2684 f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
2685 f3.setName(fieldName3)
2686 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2689 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
2690 f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
2691 f.setArray(DataArrayDouble([5.,3.,6.,4.])) ; f.getArray().setInfoOnComponents(["Smth"])
2692 f.setName(fieldName1)
2694 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f)
2695 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2696 f2.setArray(DataArrayDouble([11.,7.],2,1))
2697 f2.setName(fieldName2)
2698 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2699 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2700 f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
2701 f3.setName(fieldName3)
2702 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2703 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2704 ms=MEDFileMeshes(fname)
2705 fields=MEDFileFields(fname,False)
2706 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2707 allFMTSLeavesToDisplay=[]
2708 for fields in fields_per_mesh:
2709 allFMTSLeavesToDisplay2=[]
2711 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2713 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2715 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2716 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2717 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2718 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2719 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2720 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2721 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2722 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2724 mst=MEDFileMeshStruct.New(ms[0])
2726 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2727 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2729 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2730 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2731 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2732 self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.],6,3),1e-12))
2733 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2734 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2735 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2736 self.assertTrue(a4 is None)
2737 self.assertTrue(a5 is None)
2738 a6,a7=mml2.retrieveFamilyIdsOnCells()
2739 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2740 self.assertTrue(a7) # no copy here
2741 a8,a9=mml2.retrieveNumberIdsOnCells()
2742 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2743 self.assertTrue(a9) # no copy here
2744 for i in xrange(1,2):
2745 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2747 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2748 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2750 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2751 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2752 f.loadArraysIfNecessary()
2753 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2754 self.assertEqual(f.getName(),fieldName2)
2755 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2756 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2758 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2759 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2760 f.loadArraysIfNecessary()
2761 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2762 self.assertEqual(f.getName(),fieldName1)
2763 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2764 vExp1[i].setInfoOnComponents(["Smth"])
2765 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2767 ## Now same exercise but with a different load strategy. All is load directly.
2768 ms=MEDFileMeshes(fname)
2769 fields=MEDFileFields(fname) # here all is read, the SauvReader (or other Reader) is emulated
2770 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2771 allFMTSLeavesToDisplay=[]
2772 for fields in fields_per_mesh:
2773 allFMTSLeavesToDisplay2=[]
2775 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2777 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2779 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2780 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2781 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2782 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2783 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2784 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2785 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2786 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2788 mst=MEDFileMeshStruct.New(ms[0])
2790 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2791 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2793 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2794 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2795 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2796 self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.],6,3),1e-12))
2797 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2798 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2799 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2800 self.assertTrue(a4 is None)
2801 self.assertTrue(a5 is None)
2802 a6,a7=mml2.retrieveFamilyIdsOnCells()
2803 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2804 self.assertTrue(a7) # no copy here
2805 a8,a9=mml2.retrieveNumberIdsOnCells()
2806 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2807 self.assertTrue(a9) # no copy here
2808 for i in xrange(1,2):
2809 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2811 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2812 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2814 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2815 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2816 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2817 self.assertEqual(f.getName(),fieldName2)
2818 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2819 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2821 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2822 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2823 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2824 self.assertEqual(f.getName(),fieldName1)
2825 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2826 vExp1[i].setInfoOnComponents(["Smth"])
2827 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2833 This test is a simple non profile CELL field but lying on cells of dimension -1 (not 0 as "usual").
2835 fname="ForMEDReader19.med"
2836 fieldName="ACellFieldOnDimM1"
2837 coo=DataArrayDouble(3) ; coo.iota()
2838 m=MEDCouplingCMesh() ; m.setCoords(coo,coo,coo) ; m.setName("mesh")
2839 m0=m.buildUnstructured() ; del m
2843 mm.setMeshAtLevel(0,m0)
2844 mm.setMeshAtLevel(-1,m1)
2845 ff=MEDFileFieldMultiTS()
2848 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2849 f.setName(fieldName)
2850 arr=DataArrayDouble(24) ; arr.iota() ; arr.setInfoOnComponents(["AStr"])
2853 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2854 ff.pushBackTimeStep(f1ts)
2857 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2858 f.setName(fieldName)
2859 arr=DataArrayDouble(24) ; arr.iota() ; arr.reverse() ; arr.setInfoOnComponents(["AStr"])
2862 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2863 ff.pushBackTimeStep(f1ts)
2867 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2868 ms=MEDFileMeshes(fname)
2869 fields=MEDFileFields(fname,False)
2870 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2871 allFMTSLeavesToDisplay=[]
2872 for fields in fields_per_mesh:
2873 allFMTSLeavesToDisplay2=[]
2875 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2877 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2879 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2880 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
2881 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2882 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2883 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
2884 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2885 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2886 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
2888 mst=MEDFileMeshStruct.New(ms[0])
2890 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2891 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2893 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2894 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2895 self.assertTrue(ncc)
2896 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.],27,3),1e-12))
2897 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
2898 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115])))
2899 self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,3,4,4,1,10,9,0,4,0,9,12,3,4,2,1,4,5,4,2,11,10,1,4,5,14,11,2,4,4,3,6,7,4,3,12,15,6,4,6,15,16,7,4,5,4,7,8,4,7,16,17,8,4,8,17,14,5,4,19,22,21,18,4,10,19,18,9,4,9,18,21,12,4,20,23,22,19,4,11,20,19,10,4,14,23,20,11,4,22,25,24,21,4,12,21,24,15,4,15,24,25,16,4,23,26,25,22,4,16,25,26,17,4,17,26,23,14])))
2900 self.assertTrue(a4 is None)
2901 self.assertTrue(a5 is None)
2902 a6,a7=mml2.retrieveFamilyIdsOnCells()
2903 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])))
2904 self.assertTrue(a7) # no copy here
2905 a8,a9=mml2.retrieveNumberIdsOnCells()
2906 self.assertTrue(a8 is None)
2907 self.assertTrue(a9) # no copy here
2908 a10,a11=mml2.retrieveFamilyIdsOnNodes()
2909 self.assertTrue(not a10)
2910 self.assertTrue(a11) # no copy here
2911 a12,a13=mml2.retrieveNumberIdsOnNodes()
2912 self.assertTrue(not a12)
2913 self.assertTrue(a13) # no copy here
2914 for i in xrange(1,2):
2915 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2918 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2919 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2920 f.loadArraysIfNecessary()
2921 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2922 self.assertEqual(f.getName(),fieldName)
2923 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2924 vExp=DataArrayDouble(24) ; vExp.iota()
2925 if i==1: vExp.reverse()
2926 vExp.setInfoOnComponents(["AStr"])
2927 self.assertTrue(v.isEqual(vExp,1e-12))
2932 """ This test works with groups/families on cells AND on nodes. Here 4 fields each on same time steps (2).
2933 1 field on CELLS without profile, 1 field on CELLS with profile, 1 field on NODES without profile, 1 field on NODES with profile.
2934 All of these 4 fields lies on a single mesh "mesh". The 2 fields on profile lies on a same support.
2935 One drawback of this test : no multi geom type. Coming soon !
2937 fname="ForMEDReader20.med"
2938 fieldName0="ANodeField"
2939 fieldName1="ACellField"
2940 fieldName2="ANodeFieldPfl"
2941 fieldName3="ACellFieldPfl"
2942 pfl2=DataArrayInt([5,6,7,10,11,12,15,16,17,20,21,22]) ; pfl2.setName("pfl2")
2943 pfl3=DataArrayInt([4,5,8,9,12,13]) ; pfl3.setName("pfl3")
2945 arr=DataArrayDouble(5) ; arr.iota()
2946 m=MEDCouplingCMesh("mesh") ; m.setCoords(arr,arr)
2947 m=m.buildUnstructured()
2949 mm.setMeshAtLevel(0,m)
2951 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
2952 fmts0.setDtUnit("s")
2953 fmts1=MEDFileFieldMultiTS() ; fs.pushField(fmts1)
2954 fmts1.setDtUnit("s")
2955 fmts2=MEDFileFieldMultiTS() ; fs.pushField(fmts2)
2956 fmts2.setDtUnit("s")
2957 fmts3=MEDFileFieldMultiTS() ; fs.pushField(fmts3)
2958 fmts3.setDtUnit("s")
2961 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
2962 f0.setName(fieldName0) ; f0.setTime(*t)
2963 da=m.getCoords().magnitude() ; da.setInfoOnComponents(["zeInfo"])
2966 f1ts=MEDFileField1TS()
2967 f1ts.setFieldNoProfileSBT(f0)
2968 fmts0.pushBackTimeStep(f1ts)
2970 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
2971 f1.setName(fieldName1) ; f1.setTime(*t)
2972 da=m.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["zeInfoCell"])
2975 f1ts=MEDFileField1TS()
2976 f1ts.setFieldNoProfileSBT(f1)
2977 fmts1.pushBackTimeStep(f1ts)
2979 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
2980 f2.setName(fieldName2) ; f2.setTime(*t)
2981 da=m.getCoords().magnitude()[pfl2] ; da.setInfoOnComponents(["zzzz"])
2984 f1ts=MEDFileField1TS()
2985 f1ts.setFieldProfile(f2,mm,0,pfl2)
2986 fmts2.pushBackTimeStep(f1ts)
2988 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
2989 f3.setName(fieldName3) ; f3.setTime(*t)
2990 da=mTmp.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["abcdefg"])
2993 f1ts=MEDFileField1TS()
2994 f1ts.setFieldProfile(f3,mm,0,pfl3)
2995 fmts3.pushBackTimeStep(f1ts)
2998 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
2999 f0.setName(fieldName0) ; f0.setTime(*t)
3000 da=m.getCoords().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3003 f1ts=MEDFileField1TS()
3004 f1ts.setFieldNoProfileSBT(f0)
3005 fmts0.pushBackTimeStep(f1ts)
3007 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
3008 f1.setName(fieldName1) ; f1.setTime(*t)
3009 da=m.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"])
3012 f1ts=MEDFileField1TS()
3013 f1ts.setFieldNoProfileSBT(f1)
3014 fmts1.pushBackTimeStep(f1ts)
3016 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
3017 f2.setName(fieldName2) ; f2.setTime(*t)
3018 da=m.getCoords().magnitude()[pfl2] ; da.reverse() ; da.setInfoOnComponents(["zzzz"])
3021 f1ts=MEDFileField1TS()
3022 f1ts.setFieldProfile(f2,mm,0,pfl2)
3023 fmts2.pushBackTimeStep(f1ts)
3025 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
3026 f3.setName(fieldName3) ; f3.setTime(*t)
3027 da=mTmp.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"])
3030 f1ts=MEDFileField1TS()
3031 f1ts.setFieldProfile(f3,mm,0,pfl3)
3032 fmts3.pushBackTimeStep(f1ts)
3034 grp1=DataArrayInt([6,7,8,11,12,13,16,17,18]) ; grp1.setName("grp1")
3035 grp2=DataArrayInt([10,11,15,16,20,21]) ; grp2.setName("grp2")
3036 mm.setGroupsAtLevel(1,[grp1,grp2])
3037 grp3=DataArrayInt([4,5,6]) ; grp3.setName("grp3")
3038 grp4=DataArrayInt([8,9,10]) ; grp4.setName("grp4")
3039 mm.setGroupsAtLevel(0,[grp3,grp4])
3040 d=DataArrayInt(25) ; d.iota() ; d*=10 ; mm.setRenumFieldArr(1,d)
3041 d=DataArrayInt(16) ; d.iota() ; d*=11 ; mm.setRenumFieldArr(0,d)
3043 fs.appendGlobs(fmts2,1e-12)
3044 fs.appendGlobs(fmts3,1e-12)
3046 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3047 ms=MEDFileMeshes(fname)
3048 fields=MEDFileFields(fname,False)
3049 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3050 allFMTSLeavesToDisplay=[]
3051 for fields in fields_per_mesh:
3052 allFMTSLeavesToDisplay2=[]
3054 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3056 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3058 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3059 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
3060 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3061 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3062 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
3063 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3064 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3065 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
3066 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)
3068 mst=MEDFileMeshStruct.New(ms[0])
3070 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3071 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3073 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3074 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3075 self.assertTrue(not ncc)
3076 self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,3.,0.,0.,4.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.,3.,1.,0.,4.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,3.,2.,0.,4.,2.,0.,0.,3.,0.,1.,3.,0.,2.,3.,0.,3.,3.,0.,4.,3.,0.,0.,4.,0.,1.,4.,0.,2.,4.,0.,3.,4.,0.,4.,4.,0.],25,3),1e-12))
3077 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
3078 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
3079 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])))
3080 self.assertTrue(a4 is None)
3081 self.assertTrue(a5 is None)
3082 a6,a7=mml2.retrieveFamilyIdsOnCells()
3083 self.assertTrue(a6.isEqual(DataArrayInt([-5,-5,-5,-5,-6,-6,-6,-5,-7,-7,-7,-5,-5,-5,-5,-5])))
3084 self.assertTrue(a7) # no copy here
3085 a8,a9=mml2.retrieveNumberIdsOnCells()
3086 self.assertTrue(a8.isEqual(DataArrayInt([0,11,22,33,44,55,66,77,88,99,110,121,132,143,154,165])))
3087 self.assertTrue(a9) # no copy here
3088 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3089 self.assertTrue(a10.isEqual(DataArrayInt([1,1,1,1,1,1,2,2,2,1,3,4,2,2,1,3,4,2,2,1,3,3,1,1,1])))
3090 self.assertTrue(a11) # no copy here
3091 a12,a13=mml2.retrieveNumberIdsOnNodes()
3092 self.assertTrue(a12.isEqual(DataArrayInt([0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240])))
3093 self.assertTrue(a13) # no copy here
3094 for i in xrange(1,2):
3095 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
3098 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
3099 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3100 f.loadArraysIfNecessary()
3101 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3102 self.assertEqual(f.getName(),fieldName1)
3103 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3104 vExp=DataArrayDouble([0.7071067811865476,1.5811388300841898,2.5495097567963922,3.5355339059327378,1.5811388300841898,2.1213203435596424,2.9154759474226504,3.8078865529319543,2.5495097567963922,2.9154759474226504,3.5355339059327378,4.301162633521313,3.5355339059327378,3.8078865529319543,4.301162633521313,4.949747468305833])
3105 if i==1: vExp.reverse()
3106 vExp.setInfoOnComponents(["zeInfoCell"])
3107 self.assertTrue(v.isEqual(vExp,1e-12))
3109 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
3110 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3111 f.loadArraysIfNecessary()
3112 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3113 self.assertEqual(f.getName(),fieldName0)
3114 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3115 vExp=DataArrayDouble([0.,1.,2.,3.,4.,1.,1.4142135623730951,2.23606797749979,3.1622776601683795,4.123105625617661,2.,2.23606797749979,2.8284271247461903,3.605551275463989,4.47213595499958,3.,3.1622776601683795,3.605551275463989,4.242640687119285,5.,4.,4.123105625617661,4.47213595499958,5.,5.656854249492381])
3116 if i==1: vExp.reverse()
3117 vExp.setInfoOnComponents(["zeInfo"])
3118 self.assertTrue(v.isEqual(vExp,1e-12))
3120 ### Testing the 2nd support
3121 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3122 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3124 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3125 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3126 self.assertTrue(not ncc)
3127 self.assertTrue(not ncc)
3128 self.assertTrue(a0.isEqual(DataArrayDouble([0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,0.,3.,0.,1.,3.,0.,2.,3.,0.,0.,4.,0.,1.,4.,0.,2.,4.,0.],12,3),1e-12))
3129 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9])))
3130 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25])))
3131 self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,3,4,4,2,1,4,5,4,4,3,6,7,4,5,4,7,8,4,7,6,9,10,4,8,7,10,11])))
3132 self.assertTrue(a4 is None)
3133 self.assertTrue(a5 is None)
3134 a6,a7=mml2.retrieveFamilyIdsOnCells()
3135 self.assertTrue(a6.isEqual(DataArrayInt([-6,-6,-7,-7,-5,-5])))
3136 self.assertTrue(not a7) # copy here
3137 a8,a9=mml2.retrieveNumberIdsOnCells()
3138 self.assertTrue(a8.isEqual(DataArrayInt([44,55,88,99,132,143])))
3139 self.assertTrue(not a9) # copy here
3140 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3141 self.assertTrue(a10.isEqual(DataArrayInt([1,2,2,3,4,2,3,4,2,3,3,1])))
3142 self.assertTrue(not a11) # copy here
3143 a12,a13=mml2.retrieveNumberIdsOnNodes()
3144 self.assertTrue(a12.isEqual(DataArrayInt([50,60,70,100,110,120,150,160,170,200,210,220])))
3145 self.assertTrue(not a13) # copy here
3147 f=allFMTSLeavesPerCommonSupport1[1][0][0][i]
3148 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3149 f.loadArraysIfNecessary()
3150 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3151 self.assertEqual(f.getName(),fieldName3)
3152 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3153 vExp=DataArrayDouble([1.5811388300842,2.1213203435596,2.5495097567964,2.9154759474227,3.5355339059327,3.807886552932])
3154 if i==1: vExp.reverse()
3155 vExp.setInfoOnComponents(["abcdefg"])
3156 self.assertTrue(v.isEqual(vExp,1e-12))
3158 f=allFMTSLeavesPerCommonSupport1[1][0][1][i]
3159 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3160 f.loadArraysIfNecessary()
3161 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3162 self.assertEqual(f.getName(),fieldName2)
3163 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3164 vExp=DataArrayDouble([1.,1.4142135623731,2.2360679774998,2.,2.2360679774998,2.8284271247462,3.,3.1622776601684,3.605551275464,4.,4.1231056256177,4.4721359549996])
3165 if i==1: vExp.reverse()
3166 vExp.setInfoOnComponents(["zzzz"])
3167 self.assertTrue(v.isEqual(vExp,1e-12))
3172 """ Here the created MED file contains only a mesh. The aim here is to test capability of MEDReader to support no fields.
3173 This test checks nothing but write a MED file to be used by MEDReader tests.
3175 fname="ForMEDReader21.med"
3178 m0=MEDCouplingCMesh("mesh") ; arr=DataArrayDouble(5) ; arr.iota() ; m0.setCoords(arr,arr) ; m0=m0.buildUnstructured()
3179 mm.setMeshAtLevel(0,m0)
3180 grp0=DataArrayInt([5,6,9,10]) ; grp0.setName("Inside2D")
3181 grp1=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15]) ; grp1.setName("Border2D")
3182 grp2=DataArrayInt([2,3,6,7]) ; grp2.setName("LowerRight2D")
3183 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3185 m1=MEDCouplingUMesh(m0.getName(),1) ; m1.setCoords(m0.getCoords()) ; m1.allocateCells()
3186 for elt in [[0,1],[1,2],[2,3],[3,4],[4,9],[9,14],[14,19],[19,24],[24,23],[23,22],[22,21],[21,20],[20,15],[15,10],[10,5],[5,0],[2,7],[7,12],[12,17],[17,22],
3187 [10,11],[11,12],[12,13],[13,14]]:
3188 m1.insertNextCell(NORM_SEG2,elt)
3190 mm.setMeshAtLevel(-1,m1)
3191 grp4=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) ; grp4.setName("Border1D")
3192 grp5=DataArrayInt([16,17,18,19,20,21,22,23]) ; grp5.setName("Inside1D")
3193 grp6=DataArrayInt([18,19,22,23]) ; grp6.setName("UpperRight1D")
3194 mm.setGroupsAtLevel(-1,[grp4,grp5,grp6])
3196 grp7=DataArrayInt([1,2,3,6,7,8,11,12,13,16,17,18,21,22,23]) ; grp7.setName("InsideYNode")
3197 grp8=DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; grp8.setName("InsideXNode")
3198 mm.setGroupsAtLevel(1,[grp7,grp8])