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,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])))
587 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,21,26,31,36,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125,128,131,134])))
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,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])))
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),c=mml2.buildVTUArrays()
1090 self.assertTrue(c)# c is True here because the returned array is directly those coming from internal structure
1091 self.assertTrue(a.isEqual(coordsX,1e-12))
1092 self.assertTrue(b.isEqual(coordsY,1e-12))
1093 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
1094 for i in xrange(1,5):
1095 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1097 a6,a7=mml2.retrieveFamilyIdsOnCells()
1098 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1099 self.assertTrue(a7) # True because no copy
1100 a8,a9=mml2.retrieveNumberIdsOnCells()
1101 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1102 self.assertTrue(a9) # True because no copy
1103 a10,a11=mml2.retrieveNumberIdsOnNodes()
1104 self.assertTrue(a10.isEqual(DataArrayInt([200,201,202,203,204,205,206,207,208,209,210,211,212,213,214])))
1105 self.assertTrue(a11) # True because no copy
1107 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1108 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1109 f.loadArraysIfNecessary()
1110 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1111 self.assertEqual(f.getName(),fieldName0)
1112 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1113 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1114 self.assertTrue(v.isEqual(vExp,1e-12))
1116 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1117 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1118 f.loadArraysIfNecessary()
1119 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1120 self.assertEqual(f.getName(),fieldName4)
1121 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1122 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1123 self.assertTrue(v.isEqual(vExp,1e-12))
1126 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1127 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1129 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1130 (a,b),c=mml2.buildVTUArrays()
1131 self.assertTrue(not c)# c is False because this a sub support specialy built for buildVTUArrays
1132 self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
1133 self.assertTrue(b.isEqual(coordsY,1e-12))
1134 a6,a7=mml2.retrieveFamilyIdsOnCells()
1135 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1136 self.assertTrue(not a7) # False because copy
1137 a8,a9=mml2.retrieveNumberIdsOnCells()
1138 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1139 self.assertTrue(not a9) # False because copy
1140 a10,a11=mml2.retrieveNumberIdsOnNodes()
1141 self.assertTrue(a10.isEqual(DataArrayInt([202,203,204,207,208,209,212,213,214])))
1142 self.assertTrue(not a11) # False because copy
1143 for i in xrange(1,5):
1144 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1147 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1148 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1149 f.loadArraysIfNecessary()
1150 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1151 self.assertEqual(f.getName(),fieldName1)
1152 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1153 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1154 self.assertTrue(v.isEqual(vExp,1e-12))
1156 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1157 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1158 f.loadArraysIfNecessary()
1159 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1160 self.assertEqual(f.getName(),fieldName2)
1161 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1162 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1163 self.assertTrue(v.isEqual(vExp,1e-12))
1166 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1167 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1169 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1170 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1171 self.assertTrue(not ncc)
1172 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)
1173 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1174 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1175 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1176 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15])))
1177 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])))
1178 self.assertTrue(a4 is None)
1179 self.assertTrue(a5 is None)
1180 a6,a7=mml2.retrieveFamilyIdsOnCells()
1181 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1182 self.assertTrue(not a7) # False because copy
1183 a8,a9=mml2.retrieveNumberIdsOnCells()
1184 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1185 self.assertTrue(not a9) # False because copy
1187 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1188 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1189 f.loadArraysIfNecessary()
1190 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1191 self.assertEqual(f.getName(),fieldName3)
1192 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1193 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1194 self.assertTrue(v.isEqual(vExp,1e-12))
1199 """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
1200 This test is very similar to the test6.
1202 fname="ForMEDReader7.med"
1203 m=MEDCouplingCurveLinearMesh("mesh") ; m.setNodeGridStructure([5,3])
1204 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)
1205 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1207 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
1208 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
1209 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
1211 fieldName0="zeField0" ; # on cells
1212 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1213 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1214 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1215 fieldName4="zeField4" ;# on nodes
1216 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1220 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1221 fNode.setName(fieldName0) ; fNode.setMesh(m)
1222 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1223 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1224 f.setFieldNoProfileSBT(fNode)
1225 fs0.pushBackTimeStep(f)
1228 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1229 fNode.setName(fieldName1)
1230 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1231 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1232 f.setFieldProfile(fNode,mm,0,pfl1)
1233 self.assertEqual(pfl1.getName(),"pfl1")
1234 fs1.pushBackTimeStep(f)
1237 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1238 fNode.setName(fieldName2)
1239 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1240 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1241 f.setFieldProfile(fNode,mm,0,pfl2)
1242 self.assertEqual(pfl2.getName(),"pfl2")
1243 fs2.pushBackTimeStep(f)
1246 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1247 fNode.setName(fieldName3)
1248 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1249 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1250 f.setFieldProfile(fNode,mm,0,pfl3)
1251 self.assertEqual(pfl3.getName(),"pfl3")
1252 fs3.pushBackTimeStep(f)
1255 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1256 fNode.setName(fieldName4) ; fNode.setMesh(m)
1257 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1258 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1259 f.setFieldNoProfileSBT(fNode)
1260 fs4.pushBackTimeStep(f)
1263 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1264 del m,mm,fs1,fs2,fs3,f,fNode
1265 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1266 ms=MEDFileMeshes(fname)
1267 fields=MEDFileFields(fname,False)
1268 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1269 allFMTSLeavesToDisplay=[]
1270 for fields in fields_per_mesh:
1271 allFMTSLeavesToDisplay2=[]
1273 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1275 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1277 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1278 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1279 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1280 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1281 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1282 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1283 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1284 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1285 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1286 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1288 mst=MEDFileMeshStruct.New(ms[0])
1290 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1291 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1293 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
1294 a,b,c=mml2.buildVTUArrays()
1295 self.assertTrue(c)#True here because a is directly coming from internal data without copy
1296 self.assertTrue(a.isEqual(a0Exp,1e-12))
1297 self.assertEqual(b,[5,3])
1298 a6,a7=mml2.retrieveFamilyIdsOnCells()
1299 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1300 self.assertTrue(a7) # True because no copy
1301 a8,a9=mml2.retrieveNumberIdsOnCells()
1302 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1303 self.assertTrue(a9) # True because no copy
1304 for i in xrange(1,5):
1305 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1308 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1309 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1310 f.loadArraysIfNecessary()
1311 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1312 self.assertEqual(f.getName(),fieldName0)
1313 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1314 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1315 self.assertTrue(v.isEqual(vExp,1e-12))
1317 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1318 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1319 f.loadArraysIfNecessary()
1320 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1321 self.assertEqual(f.getName(),fieldName4)
1322 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1323 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1324 self.assertTrue(v.isEqual(vExp,1e-12))
1327 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1328 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1330 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1331 a,b,c=mml2.buildVTUArrays()
1332 self.assertTrue(not c)#False here because a is the result of a computation not the internal strucutre
1333 self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
1334 self.assertEqual(b,[3,3])
1335 a6,a7=mml2.retrieveFamilyIdsOnCells()
1336 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1337 self.assertTrue(not a7) # False because copy
1338 a8,a9=mml2.retrieveNumberIdsOnCells()
1339 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1340 self.assertTrue(not a9) # False because copy
1341 for i in xrange(1,5):
1342 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1345 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1346 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1347 f.loadArraysIfNecessary()
1348 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1349 self.assertEqual(f.getName(),fieldName1)
1350 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1351 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1352 self.assertTrue(v.isEqual(vExp,1e-12))
1354 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1355 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1356 f.loadArraysIfNecessary()
1357 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1358 self.assertEqual(f.getName(),fieldName2)
1359 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1360 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1361 self.assertTrue(v.isEqual(vExp,1e-12))
1364 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1365 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1367 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1368 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1369 self.assertTrue(not ncc)
1370 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)
1371 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1372 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1373 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1374 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15])))
1375 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])))
1376 self.assertTrue(a4 is None)
1377 self.assertTrue(a5 is None)
1378 a6,a7=mml2.retrieveFamilyIdsOnCells()
1379 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1380 self.assertTrue(not a7) # False because copy
1381 a8,a9=mml2.retrieveNumberIdsOnCells()
1382 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1383 self.assertTrue(not a9) # False because copy
1385 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1386 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1387 f.loadArraysIfNecessary()
1388 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1389 self.assertEqual(f.getName(),fieldName3)
1390 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1391 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1392 self.assertTrue(v.isEqual(vExp,1e-12))
1397 """ This test plays with with gauss fields with no profiles.
1399 fname="ForMEDReader8.med"
1400 # building a mesh containing 6 tri3 + 5 quad4
1401 m=MEDCouplingUMesh("mesh",2)
1402 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]"])
1405 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])
1406 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1407 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])
1408 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1409 mm=MEDFileUMesh() ; mm.setMeshes([m])
1411 fieldName0="zeField0"
1412 fieldName1="zeField1"
1413 fieldName2="zeField2"
1414 fieldName3="zeField3"
1415 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1418 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1419 fNode.setName(fieldName0) ; fNode.setMesh(m)
1420 arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1421 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1422 f.setFieldNoProfileSBT(fNode)
1423 fs0.pushBackTimeStep(f)
1426 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1427 fNode.setName(fieldName1) ; fNode.setMesh(m)
1428 arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1429 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1430 f.setFieldNoProfileSBT(fNode)
1431 fs1.pushBackTimeStep(f)
1434 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1435 fNode.setName(fieldName2) ; fNode.setMesh(m)
1436 fNode.setGaussLocalizationOnCells([0,1,2,3],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1437 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])
1438 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])
1439 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])
1440 arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1441 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1442 f.setFieldNoProfileSBT(fNode)
1443 fs2.pushBackTimeStep(f)
1446 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1447 fNode.setName(fieldName3) ; fNode.setMesh(m)
1448 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1449 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1450 f.setFieldNoProfileSBT(fNode)
1451 fs3.pushBackTimeStep(f)
1456 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1457 a0Exp=mm.getCoords().deepCpy()
1458 del m,mm,fs1,fs2,fs3,f,fNode
1459 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1460 ms=MEDFileMeshes(fname)
1461 fields=MEDFileFields(fname,False)
1462 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1463 allFMTSLeavesToDisplay=[]
1464 for fields in fields_per_mesh:
1465 allFMTSLeavesToDisplay2=[]
1467 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1469 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1471 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1472 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1473 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1474 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1475 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1476 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1477 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1478 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1480 mst=MEDFileMeshStruct.New(ms[0])
1482 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1483 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1485 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1486 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1487 self.assertTrue(not ncc)
1488 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1489 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9])))
1490 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,20,24,29,34,39,44])))
1491 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])))
1492 self.assertTrue(a4 is None)
1493 self.assertTrue(a5 is None)
1494 for i in xrange(1,5):
1495 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1498 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1499 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1500 f.loadArraysIfNecessary()
1501 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1502 self.assertEqual(f.getName(),fieldName0)
1503 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1504 vExp=DataArrayDouble(38*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1505 self.assertTrue(v.isEqual(vExp,1e-12))
1507 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1508 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1509 f.loadArraysIfNecessary()
1510 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1511 self.assertEqual(f.getName(),fieldName1)
1512 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1513 vExp=DataArrayDouble(11*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1514 self.assertTrue(v.isEqual(vExp,1e-12))
1516 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1517 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1518 f.loadArraysIfNecessary()
1519 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1520 self.assertEqual(f.getName(),fieldName2)
1521 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1522 vExp=DataArrayDouble(44*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1523 self.assertTrue(v.isEqual(vExp,1e-12))
1525 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1526 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1527 f.loadArraysIfNecessary()
1528 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1529 self.assertEqual(f.getName(),fieldName3)
1530 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1531 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1532 self.assertTrue(v.isEqual(vExp,1e-12))
1538 """ This test plays with with gauss fields with profiles.
1540 fname="ForMEDReader9.med"
1541 # building a mesh containing 6 tri3 + 5 quad4
1542 m=MEDCouplingUMesh("mesh",2)
1543 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]"])
1546 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])
1547 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1548 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])
1549 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1550 mm=MEDFileUMesh() ; mm.setMeshes([m])
1552 fieldName0="zeField0"
1553 fieldName1="zeField1"
1554 fieldName2="zeField2"
1555 fieldName3="zeField3"
1556 pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
1557 pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
1558 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1561 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1562 fNode.setName(fieldName0)
1563 arr=DataArrayDouble(2*18) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1564 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1565 f.setFieldProfile(fNode,mm,0,pfl1)
1566 fs0.pushBackTimeStep(f)
1569 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1570 fNode.setName(fieldName1)
1571 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1572 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1573 f.setFieldProfile(fNode,mm,0,pfl1)
1574 fs1.pushBackTimeStep(f)
1577 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1578 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1579 fNode.setGaussLocalizationOnCells([0],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1580 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])
1581 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])
1582 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])
1583 arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1584 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1585 f.setFieldProfile(fNode,mm,0,pfl1)
1586 fs2.pushBackTimeStep(f)
1589 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1590 fNode.setName(fieldName3)
1591 arr=DataArrayDouble(2*9) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1592 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1593 f.setFieldProfile(fNode,mm,0,pfl2)
1594 fs3.pushBackTimeStep(f)
1599 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1600 a0Exp=mm.getCoords().deepCpy()
1601 del m,mm,fs1,fs2,fs3,f,fNode
1602 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1603 ms=MEDFileMeshes(fname)
1604 fields=MEDFileFields(fname,False)
1605 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1606 allFMTSLeavesToDisplay=[]
1607 for fields in fields_per_mesh:
1608 allFMTSLeavesToDisplay2=[]
1610 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1612 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1614 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1615 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1616 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1617 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1618 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1619 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1620 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1621 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1623 mst=MEDFileMeshStruct.New(ms[0])
1625 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1626 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1628 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1629 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1630 self.assertTrue(not ncc)
1631 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
1632 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1633 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18])))
1634 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])))
1635 self.assertTrue(a4 is None)
1636 self.assertTrue(a5 is None)
1637 for i in xrange(1,5):
1638 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1641 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1642 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1643 f.loadArraysIfNecessary()
1644 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1645 self.assertEqual(f.getName(),fieldName0)
1646 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1647 vExp=DataArrayDouble(18*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1648 self.assertTrue(v.isEqual(vExp,1e-12))
1650 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1651 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1652 f.loadArraysIfNecessary()
1653 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1654 self.assertEqual(f.getName(),fieldName1)
1655 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1656 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1657 self.assertTrue(v.isEqual(vExp,1e-12))
1659 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1660 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1661 f.loadArraysIfNecessary()
1662 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1663 self.assertEqual(f.getName(),fieldName2)
1664 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1665 vExp=DataArrayDouble(22*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1666 self.assertTrue(v.isEqual(vExp,1e-12))
1668 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1669 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1670 f.loadArraysIfNecessary()
1671 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1672 self.assertEqual(f.getName(),fieldName3)
1673 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1674 vExp=DataArrayDouble(9*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1675 self.assertTrue(v.isEqual(vExp,1e-12))
1680 """ This test plays with fields only on nodes containing profiles.
1682 fname="ForMEDReader10.med"
1683 # building a mesh containing 6 tri3 + 5 quad4
1684 m=MEDCouplingUMesh("mesh",2)
1685 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]"])
1688 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])
1689 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1690 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])
1691 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1692 mm=MEDFileUMesh() ; mm.setMeshes([m])
1694 fieldName0="zeField0"
1695 fieldName1="zeField1"
1696 fieldName2="zeField2"
1697 pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
1698 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
1701 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1702 fNode.setName(fieldName0)
1703 arr=DataArrayDouble(2*9) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1704 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1705 f.setFieldProfile(fNode,mm,0,pfl1)
1706 fs0.pushBackTimeStep(f)
1709 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1710 fNode.setName(fieldName1)
1711 arr=DataArrayDouble(2*9) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1712 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1713 f.setFieldProfile(fNode,mm,0,pfl1)
1714 fs1.pushBackTimeStep(f)
1717 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1718 fNode.setName(fieldName2)
1719 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1720 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1721 f.setFieldProfile(fNode,mm,0,pfl1)
1722 fs2.pushBackTimeStep(f)
1727 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
1728 a0Exp=mm.getCoords().deepCpy()
1729 del m,mm,fs1,fs2,f,fNode
1730 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1731 ms=MEDFileMeshes(fname)
1732 fields=MEDFileFields(fname,False)
1733 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1734 allFMTSLeavesToDisplay=[]
1735 for fields in fields_per_mesh:
1736 allFMTSLeavesToDisplay2=[]
1738 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1740 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1742 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1743 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
1744 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1745 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1746 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
1747 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1748 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1749 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
1751 mst=MEDFileMeshStruct.New(ms[0])
1753 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1754 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1756 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1757 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1758 self.assertTrue(not ncc)
1759 self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12))
1760 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1761 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18])))
1762 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])))
1763 self.assertTrue(a4 is None)
1764 self.assertTrue(a5 is None)
1765 for i in xrange(1,5):
1766 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1769 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1770 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1771 f.loadArraysIfNecessary()
1772 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1773 self.assertEqual(f.getName(),fieldName0)
1774 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1775 vExp=DataArrayDouble(9*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1776 self.assertTrue(v.isEqual(vExp,1e-12))
1778 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1779 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1780 f.loadArraysIfNecessary()
1781 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1782 self.assertEqual(f.getName(),fieldName1)
1783 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1784 vExp=DataArrayDouble(9*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1785 self.assertTrue(v.isEqual(vExp,1e-12))
1787 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1788 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1789 f.loadArraysIfNecessary()
1790 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1791 self.assertEqual(f.getName(),fieldName2)
1792 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1793 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1794 self.assertTrue(v.isEqual(vExp,1e-12))
1799 """ 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 !
1800 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.
1802 fname="ForMEDReader11.med"
1803 m=MEDCouplingCMesh("mesh")
1804 arr=DataArrayDouble(5) ; arr.iota()
1805 m.setCoords(arr,arr)
1806 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1807 mm=MEDFileUMesh() ; mm.setMeshes([m])
1809 fieldName0="zeField0"
1810 fs0=MEDFileFieldMultiTS()
1813 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1814 fNode.setName(fieldName0) ; fNode.setMesh(m)
1815 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])
1816 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])
1817 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])
1818 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])
1819 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1820 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1821 f.setFieldNoProfileSBT(fNode)
1822 fs0.pushBackTimeStep(f)
1826 a0Exp=mm.getCoords().deepCpy()
1827 del m,mm,fs0,f,fNode
1828 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1829 ms=MEDFileMeshes(fname)
1830 fields=MEDFileFields(fname,False)
1831 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1832 allFMTSLeavesToDisplay=[]
1833 for fields in fields_per_mesh:
1834 allFMTSLeavesToDisplay2=[]
1836 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1838 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1840 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1841 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
1842 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1843 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 1 field is defined on the same time steps
1844 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
1845 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1846 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1847 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
1849 mst=MEDFileMeshStruct.New(ms[0])
1851 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1852 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1854 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1855 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1856 self.assertTrue(not ncc)
1857 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1858 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1859 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
1860 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]]
1861 self.assertTrue(a4 is None)
1862 self.assertTrue(a5 is None)
1863 for i in xrange(1,5):
1864 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1867 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1868 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1869 f.loadArraysIfNecessary()
1870 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1871 self.assertEqual(f.getName(),fieldName0)
1872 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1873 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]'])
1875 self.assertTrue(v.isEqual(vExp,1e-12))
1880 """ This test is the second ultimate test for the profiles with gauss points.
1881 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.
1883 fname="ForMEDReader12.med"
1884 m=MEDCouplingCMesh("mesh")
1885 arr=DataArrayDouble(5) ; arr.iota()
1886 m.setCoords(arr,arr)
1887 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1888 mm=MEDFileUMesh() ; mm.setMeshes([m])
1890 fieldName0="zeField0"
1891 fieldName1="zeField1"
1892 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
1895 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1896 fNode.setName(fieldName0) ; fNode.setMesh(m)
1897 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])
1898 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])
1899 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])
1900 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])
1901 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1902 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1903 f.setFieldNoProfileSBT(fNode)
1904 fs0.pushBackTimeStep(f)
1907 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1908 fNode.setName(fieldName1) ; fNode.setMesh(m)
1909 arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1910 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1911 f.setFieldNoProfileSBT(fNode)
1912 fs1.pushBackTimeStep(f)
1915 fs0.write(fname,0) ; fs1.write(fname,0)
1916 a0Exp=mm.getCoords().deepCpy()
1917 del m,mm,fs0,fs1,f,fNode
1918 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1919 ms=MEDFileMeshes(fname)
1920 fields=MEDFileFields(fname,False)
1921 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1922 allFMTSLeavesToDisplay=[]
1923 for fields in fields_per_mesh:
1924 allFMTSLeavesToDisplay2=[]
1926 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1928 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1930 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1931 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
1932 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1933 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1934 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
1935 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1936 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1937 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1939 mst=MEDFileMeshStruct.New(ms[0])
1941 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1942 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1944 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1945 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1946 self.assertTrue(not ncc)
1947 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1948 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1949 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
1950 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
1951 self.assertTrue(a4 is None)
1952 self.assertTrue(a5 is None)
1953 for i in xrange(1,5):
1954 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1957 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1958 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1959 f.loadArraysIfNecessary()
1960 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1961 self.assertEqual(f.getName(),fieldName0)
1962 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1963 vExp=DataArrayDouble(65*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1964 self.assertTrue(v.isEqual(vExp,1e-12))
1966 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1967 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1968 f.loadArraysIfNecessary()
1969 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1970 self.assertEqual(f.getName(),fieldName1)
1971 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1972 vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1973 self.assertTrue(v.isEqual(vExp,1e-12))
1977 """ Testing polyhedrons mixed with hexa8"""
1978 fname="ForMEDReader13.med"
1979 m=MEDCouplingUMesh("mesh",3)
1981 m.insertNextCell(NORM_HEXA8,[1,0,6,7,13,12,18,19]) ; m.insertNextCell(NORM_HEXA8,[2,1,7,8,14,13,19,20])
1982 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])
1983 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])
1984 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])
1985 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]"])
1987 mm=MEDFileUMesh() ; mm.setMeshes([m])
1988 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1989 fieldName0="zeField0"
1990 fieldName1="zeField1"
1991 fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
1992 fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
1995 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1996 fNode.setName(fieldName0) ; fNode.setMesh(m)
1997 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1998 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1999 f.setFieldNoProfileSBT(fNode)
2000 fs0.pushBackTimeStep(f)
2003 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2004 fNode.setName(fieldName1) ; fNode.setMesh(m)
2005 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2006 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2007 f.setFieldNoProfileSBT(fNode)
2008 fs1.pushBackTimeStep(f)
2011 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2012 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
2013 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
2014 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
2015 f.setFieldProfile(fNode,mm,0,pfl1)
2016 fs2.pushBackTimeStep(f)
2019 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2020 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
2021 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
2022 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
2023 f.setFieldProfile(fNode,mm,0,pfl2)
2024 fs3.pushBackTimeStep(f)
2027 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
2028 a0Exp=mm.getCoords().deepCpy()
2030 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2031 ms=MEDFileMeshes(fname)
2032 fields=MEDFileFields(fname,False)
2033 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2034 allFMTSLeavesToDisplay=[]
2035 for fields in fields_per_mesh:
2036 allFMTSLeavesToDisplay2=[]
2038 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2040 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2042 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2043 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
2044 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2045 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2046 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2047 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2048 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
2049 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2050 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
2051 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
2053 mst=MEDFileMeshStruct.New(ms[0])
2055 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2056 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2058 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2059 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2060 self.assertTrue(ncc)
2061 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2062 self.assertTrue(a1.isEqual(DataArrayByte([12,12,42,42,42])))
2063 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36])))
2064 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])))
2065 self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
2066 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])))
2067 for i in xrange(1,5):
2068 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2072 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2073 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2074 f.loadArraysIfNecessary()
2075 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2076 self.assertEqual(f.getName(),fieldName0)
2077 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2078 vExp=DataArrayDouble(5*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2079 self.assertTrue(v.isEqual(vExp,1e-12))
2081 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2082 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2083 f.loadArraysIfNecessary()
2084 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2085 self.assertEqual(f.getName(),fieldName1)
2086 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2087 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2088 self.assertTrue(v.isEqual(vExp,1e-12))
2091 fcscp=allFMTSLeavesPerCommonSupport[1][1]
2092 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2094 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2095 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2096 self.assertTrue(ncc)
2097 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2098 self.assertTrue(a1.isEqual(DataArrayByte([42,42])))
2099 self.assertTrue(a2.isEqual(DataArrayInt([0,9])))
2100 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
2101 self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
2102 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])))
2103 for i in xrange(1,5):
2104 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2108 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
2109 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2110 f.loadArraysIfNecessary()
2111 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2112 self.assertEqual(f.getName(),fieldName2)
2113 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2114 vExp=DataArrayDouble(2*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
2115 self.assertTrue(v.isEqual(vExp,1e-12))
2118 fcscp=allFMTSLeavesPerCommonSupport[2][1]
2119 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2121 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2122 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2123 self.assertTrue(ncc)
2124 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2125 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2126 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18])))
2127 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])))
2128 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2129 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])))
2130 for i in xrange(1,5):
2131 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2135 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
2136 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2137 f.loadArraysIfNecessary()
2138 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2139 self.assertEqual(f.getName(),fieldName3)
2140 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2141 vExp=DataArrayDouble(3*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
2142 self.assertTrue(v.isEqual(vExp,1e-12))
2147 """ Testing only polyhedrons"""
2148 fname="ForMEDReader14.med"
2149 m=MEDCouplingUMesh("mesh",3)
2151 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])
2152 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])
2153 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])
2154 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]"])
2156 mm=MEDFileUMesh() ; mm.setMeshes([m])
2157 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
2158 fieldName0="zeField0"
2159 fieldName1="zeField1"
2162 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2163 fNode.setName(fieldName0) ; fNode.setMesh(m)
2164 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2165 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
2166 f.setFieldNoProfileSBT(fNode)
2167 fs0.pushBackTimeStep(f)
2170 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2171 fNode.setName(fieldName1) ; fNode.setMesh(m)
2172 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2173 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2174 f.setFieldNoProfileSBT(fNode)
2175 fs1.pushBackTimeStep(f)
2178 fs0.write(fname,0) ; fs1.write(fname,0)
2179 a0Exp=mm.getCoords().deepCpy()
2181 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2182 ms=MEDFileMeshes(fname)
2183 fields=MEDFileFields(fname,False)
2184 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2185 allFMTSLeavesToDisplay=[]
2186 for fields in fields_per_mesh:
2187 allFMTSLeavesToDisplay2=[]
2189 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2191 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2193 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2194 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2195 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2196 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2197 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2198 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2199 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2200 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2202 mst=MEDFileMeshStruct.New(ms[0])
2204 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2205 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2207 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2208 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2209 self.assertTrue(ncc)
2210 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2211 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2212 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18])))
2213 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])))
2214 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2215 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])))
2216 for i in xrange(1,5):
2217 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2219 a6,a7=mml2.retrieveFamilyIdsOnCells()
2220 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
2222 a8,a9=mml2.retrieveNumberIdsOnCells()
2223 self.assertTrue(a8 is None)
2226 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2227 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2228 f.loadArraysIfNecessary()
2229 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2230 self.assertEqual(f.getName(),fieldName0)
2231 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2232 vExp=DataArrayDouble(3*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2233 self.assertTrue(v.isEqual(vExp,1e-12))
2235 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2236 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2237 f.loadArraysIfNecessary()
2238 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2239 self.assertEqual(f.getName(),fieldName1)
2240 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2241 vExp=DataArrayDouble(3*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2242 self.assertTrue(v.isEqual(vExp,1e-12))
2248 "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !)
2249 and a field "zeField" lying on a single geometric type for Cell discr and node part.
2250 Test that can appear the most simple but it hides a big issue of MEDReader
2251 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.
2253 fname="ForMEDReader15.med"
2254 m0=MEDCouplingCMesh()
2255 arr=DataArrayDouble(3) ; arr.iota(0)
2256 m0.setCoords(arr,arr,arr)
2258 m0=m0.buildUnstructured()
2261 fCell=MEDCouplingFieldDouble(ON_CELLS)
2262 fCell.setName(fieldName)
2265 fNode=MEDCouplingFieldDouble(ON_NODES)
2266 fNode.setName(fieldName)
2270 mm.setMeshAtLevel(0,m0)
2271 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
2272 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
2274 ffs=MEDFileFieldMultiTS()
2277 f1ts=MEDFileField1TS()
2278 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2281 fCell.checkCoherency()
2282 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2286 fNode.checkCoherency()
2287 f1ts.setFieldNoProfileSBT(fCell)
2288 f1ts.setFieldNoProfileSBT(fNode)
2289 ffs.pushBackTimeStep(f1ts)
2291 t=(2.1,1,0) ; off=100.
2292 f1ts=MEDFileField1TS()
2293 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2296 fCell.checkCoherency()
2297 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2301 fNode.checkCoherency()
2302 f1ts.setFieldNoProfileSBT(fCell)
2303 f1ts.setFieldNoProfileSBT(fNode)
2304 ffs.pushBackTimeStep(f1ts)
2306 t=(3.2,2,0) ; off=200.
2307 f1ts=MEDFileField1TS()
2308 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2311 fCell.checkCoherency()
2312 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2316 fNode.checkCoherency()
2317 f1ts.setFieldNoProfileSBT(fCell)
2318 f1ts.setFieldNoProfileSBT(fNode)
2319 ffs.pushBackTimeStep(f1ts)
2321 t=(4.3,3,1) ; off=300.
2322 f1ts=MEDFileField1TS()
2323 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2326 fCell.checkCoherency()
2327 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2331 fNode.checkCoherency()
2332 f1ts.setFieldNoProfileSBT(fCell)
2333 f1ts.setFieldNoProfileSBT(fNode)
2334 ffs.pushBackTimeStep(f1ts)
2338 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2339 ms=MEDFileMeshes(fname)
2340 fields=MEDFileFields(fname,False)
2341 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2342 allFMTSLeavesToDisplay=[]
2343 for fields in fields_per_mesh:
2344 allFMTSLeavesToDisplay2=[]
2346 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2348 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2350 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2351 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2352 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2353 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2354 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2355 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2356 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2357 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2359 mst=MEDFileMeshStruct.New(ms[0])
2361 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2362 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2364 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2365 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2366 self.assertTrue(ncc)
2367 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))
2368 self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12])))
2369 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36,45,54,63])))
2370 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])))
2371 self.assertTrue(a4 is None)
2372 self.assertTrue(a5 is None)
2373 a6,a7=mml2.retrieveFamilyIdsOnCells()
2374 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
2375 self.assertTrue(a7) # no copy here
2376 a8,a9=mml2.retrieveNumberIdsOnCells()
2377 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
2378 self.assertTrue(a9) # no copy here
2382 """ Here 2 meshes "mesh1" and "mesh2" and 4 fields (no profiles here) :
2383 - "zeField1_0" (CELLS) and "zeField2_0" (NODES) on "mesh1"
2384 - "zeField3_1" (CELLS) and "zeField4_1" (NODES) on "mesh2"
2385 time steps series are the same for the whole 4 fields
2387 fname="ForMEDReader16.med"
2388 m0=MEDCouplingCMesh()
2389 arr=DataArrayDouble(3) ; arr.iota(0)
2390 m0.setCoords(arr,arr,arr)
2392 m0=m0.buildUnstructured()
2394 fCell1=MEDCouplingFieldDouble(ON_CELLS)
2395 fCell1.setName("zeField1_0")
2398 fNode1=MEDCouplingFieldDouble(ON_NODES)
2399 fNode1.setName("zeField2_0")
2404 mm1.setMeshAtLevel(0,m0)
2405 fam=DataArrayInt([0,1,0,1,2,3,2,3]); mm1.setFamilyFieldArr(0,fam) ; del fam
2406 num=DataArrayInt(8) ; num.iota(100) ; mm1.setRenumFieldArr(0,num) ; del num
2407 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)
2408 mm1.setFamiliesIdsOnGroup("Grp1_1",[0,1]) ; mm1.setFamiliesIdsOnGroup("Grp1_2",[2,3])
2409 mms.pushMesh(mm1) ; del mm1
2411 m1=m0.deepCpy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2")
2413 fCell2=MEDCouplingFieldDouble(ON_CELLS)
2414 fCell2.setName("zeField3_1")
2417 fNode2=MEDCouplingFieldDouble(ON_NODES)
2418 fNode2.setName("zeField4_1")
2422 mm2.setMeshAtLevel(0,m1)
2423 fam=DataArrayInt([0,1,0,1,2,3,2,3]); mm2.setFamilyFieldArr(0,fam) ; del fam
2424 num=DataArrayInt(8) ; num.iota(200) ; mm2.setRenumFieldArr(0,num) ; del num
2425 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)
2426 mm2.setFamiliesIdsOnGroup("Grp2_1",[0,1]) ; mm2.setFamiliesIdsOnGroup("Grp2_2",[2,3]) ; mm2.setFamiliesIdsOnGroup("Grp2_3",[1,2,3])
2427 mms.pushMesh(mm2) ; del mm2
2428 ffs1_1=MEDFileFieldMultiTS()
2429 ffs1_2=MEDFileFieldMultiTS()
2430 ffs2_1=MEDFileFieldMultiTS()
2431 ffs2_2=MEDFileFieldMultiTS()
2433 for elt in ffs1_1,ffs1_2,ffs2_1,ffs2_2:
2438 f1ts1=MEDFileField1TS()
2439 f1ts2=MEDFileField1TS()
2440 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2443 fCell1.checkCoherency()
2444 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2448 fNode1.checkCoherency()
2449 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2450 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2452 f1ts1=MEDFileField1TS()
2453 f1ts2=MEDFileField1TS()
2454 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2457 fCell2.checkCoherency()
2458 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2462 fNode2.checkCoherency()
2463 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2464 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2466 t=(2.1,1,0) ; off=100.
2467 f1ts1=MEDFileField1TS()
2468 f1ts2=MEDFileField1TS()
2469 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2472 fCell1.checkCoherency()
2473 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2477 fNode1.checkCoherency()
2478 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2479 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2481 f1ts1=MEDFileField1TS()
2482 f1ts2=MEDFileField1TS()
2483 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2486 fCell2.checkCoherency()
2487 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2491 fNode2.checkCoherency()
2492 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2493 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2495 t=(3.1,2,0) ; off=200.
2496 f1ts1=MEDFileField1TS()
2497 f1ts2=MEDFileField1TS()
2498 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2501 fCell1.checkCoherency()
2502 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2506 fNode1.checkCoherency()
2507 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2508 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2510 f1ts1=MEDFileField1TS()
2511 f1ts2=MEDFileField1TS()
2512 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2515 fCell2.checkCoherency()
2516 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2520 fNode2.checkCoherency()
2521 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2522 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2524 mms.write(fname,2) ; mts.write(fname,0)
2525 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2526 ms=MEDFileMeshes(fname)
2527 fields=MEDFileFields(fname,False)
2528 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2529 allFMTSLeavesToDisplay=[]
2530 for fields in fields_per_mesh:
2531 allFMTSLeavesToDisplay2=[]
2533 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2535 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2537 self.assertEqual(len(allFMTSLeavesToDisplay),2)
2538 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2539 self.assertEqual(len(allFMTSLeavesToDisplay[1]),2)
2540 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2541 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2542 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2543 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2544 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2545 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
2546 allFMTSLeavesPerCommonSupport2=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2547 self.assertEqual(len(allFMTSLeavesPerCommonSupport2),1)
2548 self.assertEqual(len(allFMTSLeavesPerCommonSupport2[0][0]),2)
2552 """ First test on GAUSS_NE (Elno). Here no Profiles.
2555 fname="ForMEDReader17.med"
2556 fieldName1="MyFirstElno"
2557 fieldName2="ACellField"
2558 fieldName3="ANodeField"
2559 coo=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.],6,2)
2560 m=MEDCouplingUMesh("mesh",2)
2563 m.insertNextCell(NORM_QUAD4,[0,3,4,1])
2564 m.insertNextCell(NORM_QUAD4,[1,4,5,2])
2568 f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
2569 f.setArray(DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]))
2570 f.setName(fieldName1)
2572 MEDLoader.WriteField(fname,f,True)
2573 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2574 f2.setArray(DataArrayDouble([7.,11.],2,1))
2575 f2.setName(fieldName2)
2576 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2577 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2578 f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
2579 f3.setName(fieldName3)
2580 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2583 f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
2584 f.setArray(DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.]))
2585 f.setName(fieldName1)
2587 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f)
2588 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2589 f2.setArray(DataArrayDouble([11.,7.],2,1))
2590 f2.setName(fieldName2)
2591 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2592 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2593 f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
2594 f3.setName(fieldName3)
2595 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2596 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2597 ms=MEDFileMeshes(fname)
2598 fields=MEDFileFields(fname,False)
2599 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2600 allFMTSLeavesToDisplay=[]
2601 for fields in fields_per_mesh:
2602 allFMTSLeavesToDisplay2=[]
2604 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2606 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2608 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2609 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2610 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2611 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2612 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2613 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2614 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2615 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2617 mst=MEDFileMeshStruct.New(ms[0])
2619 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2620 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2622 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2623 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2624 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2625 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))
2626 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2627 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2628 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2629 self.assertTrue(a4 is None)
2630 self.assertTrue(a5 is None)
2631 a6,a7=mml2.retrieveFamilyIdsOnCells()
2632 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2633 self.assertTrue(a7) # no copy here
2634 a8,a9=mml2.retrieveNumberIdsOnCells()
2635 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2636 self.assertTrue(a9) # no copy here
2637 for i in xrange(1,2):
2638 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2640 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2641 vExp1=[DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]),DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.])]
2643 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2644 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2645 f.loadArraysIfNecessary()
2646 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2647 self.assertEqual(f.getName(),fieldName2)
2648 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2649 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2651 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2652 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2653 f.loadArraysIfNecessary()
2654 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2655 self.assertEqual(f.getName(),fieldName1)
2656 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2657 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2662 """ First test on GAUSS_PT. Here no Profiles. 2 times steps.
2664 fname="ForMEDReader18.med"
2665 fieldName1="MyFirstGauss"
2666 fieldName2="ACellField"
2667 fieldName3="ANodeField"
2668 coo=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.],6,2)
2669 m=MEDCouplingUMesh("mesh",2)
2672 m.insertNextCell(NORM_QUAD4,[0,3,4,1])
2673 m.insertNextCell(NORM_QUAD4,[1,4,5,2])
2677 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
2678 f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
2679 f.setArray(DataArrayDouble([3.,5.,4.,6.])) ; f.getArray().setInfoOnComponents(["Smth"])
2680 f.setName(fieldName1)
2682 MEDLoader.WriteField(fname,f,True)
2683 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2684 f2.setArray(DataArrayDouble([7.,11.],2,1))
2685 f2.setName(fieldName2)
2686 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2687 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2688 f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
2689 f3.setName(fieldName3)
2690 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2693 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
2694 f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
2695 f.setArray(DataArrayDouble([5.,3.,6.,4.])) ; f.getArray().setInfoOnComponents(["Smth"])
2696 f.setName(fieldName1)
2698 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f)
2699 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2700 f2.setArray(DataArrayDouble([11.,7.],2,1))
2701 f2.setName(fieldName2)
2702 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2703 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2704 f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
2705 f3.setName(fieldName3)
2706 MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2707 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2708 ms=MEDFileMeshes(fname)
2709 fields=MEDFileFields(fname,False)
2710 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2711 allFMTSLeavesToDisplay=[]
2712 for fields in fields_per_mesh:
2713 allFMTSLeavesToDisplay2=[]
2715 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2717 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2719 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2720 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2721 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2722 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2723 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2724 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2725 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2726 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2728 mst=MEDFileMeshStruct.New(ms[0])
2730 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2731 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2733 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2734 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2735 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2736 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))
2737 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2738 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2739 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2740 self.assertTrue(a4 is None)
2741 self.assertTrue(a5 is None)
2742 a6,a7=mml2.retrieveFamilyIdsOnCells()
2743 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2744 self.assertTrue(a7) # no copy here
2745 a8,a9=mml2.retrieveNumberIdsOnCells()
2746 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2747 self.assertTrue(a9) # no copy here
2748 for i in xrange(1,2):
2749 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2751 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2752 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2754 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2755 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2756 f.loadArraysIfNecessary()
2757 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2758 self.assertEqual(f.getName(),fieldName2)
2759 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2760 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2762 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2763 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2764 f.loadArraysIfNecessary()
2765 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2766 self.assertEqual(f.getName(),fieldName1)
2767 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2768 vExp1[i].setInfoOnComponents(["Smth"])
2769 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2771 ## Now same exercise but with a different load strategy. All is load directly.
2772 ms=MEDFileMeshes(fname)
2773 fields=MEDFileFields(fname) # here all is read, the SauvReader (or other Reader) is emulated
2774 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2775 allFMTSLeavesToDisplay=[]
2776 for fields in fields_per_mesh:
2777 allFMTSLeavesToDisplay2=[]
2779 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2781 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2783 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2784 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2785 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2786 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2787 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2788 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2789 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2790 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2792 mst=MEDFileMeshStruct.New(ms[0])
2794 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2795 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2797 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2798 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2799 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2800 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))
2801 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2802 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2803 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2804 self.assertTrue(a4 is None)
2805 self.assertTrue(a5 is None)
2806 a6,a7=mml2.retrieveFamilyIdsOnCells()
2807 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2808 self.assertTrue(a7) # no copy here
2809 a8,a9=mml2.retrieveNumberIdsOnCells()
2810 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2811 self.assertTrue(a9) # no copy here
2812 for i in xrange(1,2):
2813 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2815 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2816 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2818 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2819 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2820 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2821 self.assertEqual(f.getName(),fieldName2)
2822 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2823 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2825 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2826 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2827 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2828 self.assertEqual(f.getName(),fieldName1)
2829 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2830 vExp1[i].setInfoOnComponents(["Smth"])
2831 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2837 This test is a simple non profile CELL field but lying on cells of dimension -1 (not 0 as "usual").
2839 fname="ForMEDReader19.med"
2840 fieldName="ACellFieldOnDimM1"
2841 coo=DataArrayDouble(3) ; coo.iota()
2842 m=MEDCouplingCMesh() ; m.setCoords(coo,coo,coo) ; m.setName("mesh")
2843 m0=m.buildUnstructured() ; del m
2847 mm.setMeshAtLevel(0,m0)
2848 mm.setMeshAtLevel(-1,m1)
2849 ff=MEDFileFieldMultiTS()
2852 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2853 f.setName(fieldName)
2854 arr=DataArrayDouble(24) ; arr.iota() ; arr.setInfoOnComponents(["AStr"])
2857 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2858 ff.pushBackTimeStep(f1ts)
2861 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2862 f.setName(fieldName)
2863 arr=DataArrayDouble(24) ; arr.iota() ; arr.reverse() ; arr.setInfoOnComponents(["AStr"])
2866 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2867 ff.pushBackTimeStep(f1ts)
2871 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2872 ms=MEDFileMeshes(fname)
2873 fields=MEDFileFields(fname,False)
2874 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2875 allFMTSLeavesToDisplay=[]
2876 for fields in fields_per_mesh:
2877 allFMTSLeavesToDisplay2=[]
2879 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2881 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2883 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2884 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
2885 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2886 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2887 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
2888 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2889 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2890 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
2892 mst=MEDFileMeshStruct.New(ms[0])
2894 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2895 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2897 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2898 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2899 self.assertTrue(ncc)
2900 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))
2901 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])))
2902 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])))
2903 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])))
2904 self.assertTrue(a4 is None)
2905 self.assertTrue(a5 is None)
2906 a6,a7=mml2.retrieveFamilyIdsOnCells()
2907 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])))
2908 self.assertTrue(a7) # no copy here
2909 a8,a9=mml2.retrieveNumberIdsOnCells()
2910 self.assertTrue(a8 is None)
2911 self.assertTrue(a9) # no copy here
2912 a10,a11=mml2.retrieveFamilyIdsOnNodes()
2913 self.assertTrue(not a10)
2914 self.assertTrue(a11) # no copy here
2915 a12,a13=mml2.retrieveNumberIdsOnNodes()
2916 self.assertTrue(not a12)
2917 self.assertTrue(a13) # no copy here
2918 for i in xrange(1,2):
2919 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2922 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2923 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2924 f.loadArraysIfNecessary()
2925 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2926 self.assertEqual(f.getName(),fieldName)
2927 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2928 vExp=DataArrayDouble(24) ; vExp.iota()
2929 if i==1: vExp.reverse()
2930 vExp.setInfoOnComponents(["AStr"])
2931 self.assertTrue(v.isEqual(vExp,1e-12))
2936 """ This test works with groups/families on cells AND on nodes. Here 4 fields each on same time steps (2).
2937 1 field on CELLS without profile, 1 field on CELLS with profile, 1 field on NODES without profile, 1 field on NODES with profile.
2938 All of these 4 fields lies on a single mesh "mesh". The 2 fields on profile lies on a same support.
2939 One drawback of this test : no multi geom type. Coming soon !
2941 fname="ForMEDReader20.med"
2942 fieldName0="ANodeField"
2943 fieldName1="ACellField"
2944 fieldName2="ANodeFieldPfl"
2945 fieldName3="ACellFieldPfl"
2946 pfl2=DataArrayInt([5,6,7,10,11,12,15,16,17,20,21,22]) ; pfl2.setName("pfl2")
2947 pfl3=DataArrayInt([4,5,8,9,12,13]) ; pfl3.setName("pfl3")
2949 arr=DataArrayDouble(5) ; arr.iota()
2950 m=MEDCouplingCMesh("mesh") ; m.setCoords(arr,arr)
2951 m=m.buildUnstructured()
2953 mm.setMeshAtLevel(0,m)
2955 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
2956 fmts0.setDtUnit("s")
2957 fmts1=MEDFileFieldMultiTS() ; fs.pushField(fmts1)
2958 fmts1.setDtUnit("s")
2959 fmts2=MEDFileFieldMultiTS() ; fs.pushField(fmts2)
2960 fmts2.setDtUnit("s")
2961 fmts3=MEDFileFieldMultiTS() ; fs.pushField(fmts3)
2962 fmts3.setDtUnit("s")
2965 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
2966 f0.setName(fieldName0) ; f0.setTime(*t)
2967 da=m.getCoords().magnitude() ; da.setInfoOnComponents(["zeInfo"])
2970 f1ts=MEDFileField1TS()
2971 f1ts.setFieldNoProfileSBT(f0)
2972 fmts0.pushBackTimeStep(f1ts)
2974 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
2975 f1.setName(fieldName1) ; f1.setTime(*t)
2976 da=m.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["zeInfoCell"])
2979 f1ts=MEDFileField1TS()
2980 f1ts.setFieldNoProfileSBT(f1)
2981 fmts1.pushBackTimeStep(f1ts)
2983 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
2984 f2.setName(fieldName2) ; f2.setTime(*t)
2985 da=m.getCoords().magnitude()[pfl2] ; da.setInfoOnComponents(["zzzz"])
2988 f1ts=MEDFileField1TS()
2989 f1ts.setFieldProfile(f2,mm,0,pfl2)
2990 fmts2.pushBackTimeStep(f1ts)
2992 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
2993 f3.setName(fieldName3) ; f3.setTime(*t)
2994 da=mTmp.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["abcdefg"])
2997 f1ts=MEDFileField1TS()
2998 f1ts.setFieldProfile(f3,mm,0,pfl3)
2999 fmts3.pushBackTimeStep(f1ts)
3002 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
3003 f0.setName(fieldName0) ; f0.setTime(*t)
3004 da=m.getCoords().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3007 f1ts=MEDFileField1TS()
3008 f1ts.setFieldNoProfileSBT(f0)
3009 fmts0.pushBackTimeStep(f1ts)
3011 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
3012 f1.setName(fieldName1) ; f1.setTime(*t)
3013 da=m.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"])
3016 f1ts=MEDFileField1TS()
3017 f1ts.setFieldNoProfileSBT(f1)
3018 fmts1.pushBackTimeStep(f1ts)
3020 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
3021 f2.setName(fieldName2) ; f2.setTime(*t)
3022 da=m.getCoords().magnitude()[pfl2] ; da.reverse() ; da.setInfoOnComponents(["zzzz"])
3025 f1ts=MEDFileField1TS()
3026 f1ts.setFieldProfile(f2,mm,0,pfl2)
3027 fmts2.pushBackTimeStep(f1ts)
3029 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
3030 f3.setName(fieldName3) ; f3.setTime(*t)
3031 da=mTmp.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"])
3034 f1ts=MEDFileField1TS()
3035 f1ts.setFieldProfile(f3,mm,0,pfl3)
3036 fmts3.pushBackTimeStep(f1ts)
3038 grp1=DataArrayInt([6,7,8,11,12,13,16,17,18]) ; grp1.setName("grp1")
3039 grp2=DataArrayInt([10,11,15,16,20,21]) ; grp2.setName("grp2")
3040 mm.setGroupsAtLevel(1,[grp1,grp2])
3041 grp3=DataArrayInt([4,5,6]) ; grp3.setName("grp3")
3042 grp4=DataArrayInt([8,9,10]) ; grp4.setName("grp4")
3043 mm.setGroupsAtLevel(0,[grp3,grp4])
3044 d=DataArrayInt(25) ; d.iota() ; d*=10 ; mm.setRenumFieldArr(1,d)
3045 d=DataArrayInt(16) ; d.iota() ; d*=11 ; mm.setRenumFieldArr(0,d)
3047 fs.appendGlobs(fmts2,1e-12)
3048 fs.appendGlobs(fmts3,1e-12)
3050 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3051 ms=MEDFileMeshes(fname)
3052 fields=MEDFileFields(fname,False)
3053 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3054 allFMTSLeavesToDisplay=[]
3055 for fields in fields_per_mesh:
3056 allFMTSLeavesToDisplay2=[]
3058 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3060 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3062 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3063 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
3064 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3065 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3066 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
3067 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3068 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3069 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
3070 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)
3072 mst=MEDFileMeshStruct.New(ms[0])
3074 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3075 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3077 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3078 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3079 self.assertTrue(not ncc)
3080 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))
3081 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
3082 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
3083 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])))
3084 self.assertTrue(a4 is None)
3085 self.assertTrue(a5 is None)
3086 a6,a7=mml2.retrieveFamilyIdsOnCells()
3087 self.assertTrue(a6.isEqual(DataArrayInt([-5,-5,-5,-5,-6,-6,-6,-5,-7,-7,-7,-5,-5,-5,-5,-5])))
3088 self.assertTrue(a7) # no copy here
3089 a8,a9=mml2.retrieveNumberIdsOnCells()
3090 self.assertTrue(a8.isEqual(DataArrayInt([0,11,22,33,44,55,66,77,88,99,110,121,132,143,154,165])))
3091 self.assertTrue(a9) # no copy here
3092 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3093 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])))
3094 self.assertTrue(a11) # no copy here
3095 a12,a13=mml2.retrieveNumberIdsOnNodes()
3096 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])))
3097 self.assertTrue(a13) # no copy here
3098 for i in xrange(1,2):
3099 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
3102 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
3103 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3104 f.loadArraysIfNecessary()
3105 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3106 self.assertEqual(f.getName(),fieldName1)
3107 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3108 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])
3109 if i==1: vExp.reverse()
3110 vExp.setInfoOnComponents(["zeInfoCell"])
3111 self.assertTrue(v.isEqual(vExp,1e-12))
3113 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
3114 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3115 f.loadArraysIfNecessary()
3116 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3117 self.assertEqual(f.getName(),fieldName0)
3118 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3119 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])
3120 if i==1: vExp.reverse()
3121 vExp.setInfoOnComponents(["zeInfo"])
3122 self.assertTrue(v.isEqual(vExp,1e-12))
3124 ### Testing the 2nd support
3125 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3126 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3128 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3129 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3130 self.assertTrue(not ncc)
3131 self.assertTrue(not ncc)
3132 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))
3133 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9])))
3134 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25])))
3135 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])))
3136 self.assertTrue(a4 is None)
3137 self.assertTrue(a5 is None)
3138 a6,a7=mml2.retrieveFamilyIdsOnCells()
3139 self.assertTrue(a6.isEqual(DataArrayInt([-6,-6,-7,-7,-5,-5])))
3140 self.assertTrue(not a7) # copy here
3141 a8,a9=mml2.retrieveNumberIdsOnCells()
3142 self.assertTrue(a8.isEqual(DataArrayInt([44,55,88,99,132,143])))
3143 self.assertTrue(not a9) # copy here
3144 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3145 self.assertTrue(a10.isEqual(DataArrayInt([1,2,2,3,4,2,3,4,2,3,3,1])))
3146 self.assertTrue(not a11) # copy here
3147 a12,a13=mml2.retrieveNumberIdsOnNodes()
3148 self.assertTrue(a12.isEqual(DataArrayInt([50,60,70,100,110,120,150,160,170,200,210,220])))
3149 self.assertTrue(not a13) # copy here
3151 f=allFMTSLeavesPerCommonSupport1[1][0][0][i]
3152 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3153 f.loadArraysIfNecessary()
3154 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3155 self.assertEqual(f.getName(),fieldName3)
3156 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3157 vExp=DataArrayDouble([1.5811388300842,2.1213203435596,2.5495097567964,2.9154759474227,3.5355339059327,3.807886552932])
3158 if i==1: vExp.reverse()
3159 vExp.setInfoOnComponents(["abcdefg"])
3160 self.assertTrue(v.isEqual(vExp,1e-12))
3162 f=allFMTSLeavesPerCommonSupport1[1][0][1][i]
3163 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3164 f.loadArraysIfNecessary()
3165 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3166 self.assertEqual(f.getName(),fieldName2)
3167 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3168 vExp=DataArrayDouble([1.,1.4142135623731,2.2360679774998,2.,2.2360679774998,2.8284271247462,3.,3.1622776601684,3.605551275464,4.,4.1231056256177,4.4721359549996])
3169 if i==1: vExp.reverse()
3170 vExp.setInfoOnComponents(["zzzz"])
3171 self.assertTrue(v.isEqual(vExp,1e-12))
3176 """ Here the created MED file contains only a mesh. The aim here is to test capability of MEDReader to support no fields.
3177 This test checks nothing but write a MED file to be used by MEDReader tests.
3179 fname="ForMEDReader21.med"
3182 m0=MEDCouplingCMesh("mesh") ; arr=DataArrayDouble(5) ; arr.iota() ; m0.setCoords(arr,arr) ; m0=m0.buildUnstructured()
3183 mm.setMeshAtLevel(0,m0)
3184 grp0=DataArrayInt([5,6,9,10]) ; grp0.setName("Inside2D")
3185 grp1=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15]) ; grp1.setName("Border2D")
3186 grp2=DataArrayInt([2,3,6,7]) ; grp2.setName("LowerRight2D")
3187 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3189 m1=MEDCouplingUMesh(m0.getName(),1) ; m1.setCoords(m0.getCoords()) ; m1.allocateCells()
3190 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],
3191 [10,11],[11,12],[12,13],[13,14]]:
3192 m1.insertNextCell(NORM_SEG2,elt)
3194 mm.setMeshAtLevel(-1,m1)
3195 grp4=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) ; grp4.setName("Border1D")
3196 grp5=DataArrayInt([16,17,18,19,20,21,22,23]) ; grp5.setName("Inside1D")
3197 grp6=DataArrayInt([18,19,22,23]) ; grp6.setName("UpperRight1D")
3198 mm.setGroupsAtLevel(-1,[grp4,grp5,grp6])
3200 grp7=DataArrayInt([1,2,3,6,7,8,11,12,13,16,17,18,21,22,23]) ; grp7.setName("InsideYNode")
3201 grp8=DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; grp8.setName("InsideXNode")
3202 mm.setGroupsAtLevel(1,[grp7,grp8])
3208 """ Use case where a field on nodes (ANodeField) on a mesh defined both in meshdim 2 and meshdim 1.
3209 The only possible geometrical support that suits the field is those with meshdim equal to 1 (-1 in relative).
3211 fname="ForMEDReader22.med"
3212 fieldName0="ANodeField"
3214 coo=DataArrayDouble([(4.,3.),(7.,3.),(2.,5.),(6.,5.),(9.,5.),(4.,7.),(8.,7.),(3.,8.),(9.,8.)])
3215 m0=MEDCouplingUMesh("mesh",2) ; m0.setCoords(coo) ; m0.allocateCells() ; m0.insertNextCell(NORM_TRI3,[2,3,0]) ; m0.insertNextCell(NORM_TRI3,[3,1,0]) ; m0.insertNextCell(NORM_TRI3,[3,4,1])
3216 mm.setMeshAtLevel(0,m0)
3217 m1=MEDCouplingUMesh("mesh",1) ; m1.setCoords(coo) ; m1.allocateCells() ; m1.insertNextCell(NORM_SEG2,[2,0]) ; m1.insertNextCell(NORM_SEG2,[0,1]) ; m1.insertNextCell(NORM_SEG2,[1,4])
3218 m1.insertNextCell(NORM_SEG2,[3,5]) ; m1.insertNextCell(NORM_SEG2,[5,7]) ; m1.insertNextCell(NORM_SEG2,[3,6]) ; m1.insertNextCell(NORM_SEG2,[6,8])
3219 mm.setMeshAtLevel(-1,m1)
3221 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
3222 fmts0.setDtUnit("s")
3225 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1)
3226 f0.setName(fieldName0) ; f0.setTime(*t)
3227 da=DataArrayDouble(9) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
3230 f1ts=MEDFileField1TS()
3231 f1ts.setFieldNoProfileSBT(f0)
3232 fmts0.pushBackTimeStep(f1ts)
3235 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1)
3236 f0.setName(fieldName0) ; f0.setTime(*t)
3237 da=DataArrayDouble(9) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3240 f1ts=MEDFileField1TS()
3241 f1ts.setFieldNoProfileSBT(f0)
3242 fmts0.pushBackTimeStep(f1ts)
3246 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3247 ms=MEDFileMeshes(fname)
3248 fields=MEDFileFields(fname,False)
3249 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3250 allFMTSLeavesToDisplay=[]
3251 for fields in fields_per_mesh:
3252 allFMTSLeavesToDisplay2=[]
3254 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3256 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3258 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3259 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3260 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3261 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3262 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3263 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3264 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3265 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3267 mst=MEDFileMeshStruct.New(ms[0])
3269 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3270 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3272 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3273 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3274 self.assertTrue(not ncc)
3275 self.assertTrue(a0.isEqual(DataArrayDouble([(4.,3.,0.),(7.,3.,0.),(2.,5.,0.),(6.,5.,0.),(9.,5.,0.),(4.,7.,0.),(8.,7.,0.),(3.,8.,0.),(9.,8.,0.)]),1e-12))
3276 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,3,3,3,3,3,3,3])))
3277 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,15,18,21,24,27,30])))
3278 self.assertTrue(a3.isEqual(DataArrayInt([3,2,3,0,3,3,1,0,3,3,4,1,2,2,0,2,0,1,2,1,4,2,3,5,2,5,7,2,3,6,2,6,8])))
3279 self.assertTrue(a4 is None)
3280 self.assertTrue(a5 is None)
3281 a6,a7=mml2.retrieveFamilyIdsOnCells()
3282 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0])))
3283 self.assertTrue(not a7) # copy here
3284 a8,a9=mml2.retrieveNumberIdsOnCells()
3285 self.assertTrue(not a8)
3286 self.assertTrue(a9) # nocopy here
3287 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3288 self.assertTrue(not a10)
3289 self.assertTrue(a11) # no copy here
3290 a12,a13=mml2.retrieveNumberIdsOnNodes()
3291 self.assertTrue(not a12)
3292 self.assertTrue(a13) # no copy here
3294 f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3295 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3296 f.loadArraysIfNecessary()
3297 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3298 self.assertEqual(f.getName(),fieldName0)
3299 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3300 vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"])
3301 self.assertTrue(v.isEqual(vExp,1e-12))
3303 f=allFMTSLeavesPerCommonSupport1[0][0][0][1]
3304 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3305 f.loadArraysIfNecessary()
3306 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3307 self.assertEqual(f.getName(),fieldName0)
3308 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3309 vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
3310 self.assertTrue(v.isEqual(vExp,1e-12))
3314 """ Non regression test 2219 of modes. Idem than test22 except that here the node field is on profile.
3316 fname="ForMEDReader23.med"
3317 fieldName0="ANodeField"
3319 coo=DataArrayDouble([(4.,3.),(7.,3.),(2.,5.),(6.,5.),(9.,5.),(4.,7.),(8.,7.),(3.,8.),(9.,8.)])
3320 m0=MEDCouplingUMesh("mesh",2) ; m0.setCoords(coo) ; m0.allocateCells() ; m0.insertNextCell(NORM_TRI3,[2,3,0]) ; m0.insertNextCell(NORM_TRI3,[3,1,0]) ; m0.insertNextCell(NORM_TRI3,[3,4,1])
3321 mm.setMeshAtLevel(0,m0)
3322 m1=MEDCouplingUMesh("mesh",1) ; m1.setCoords(coo) ; m1.allocateCells() ; m1.insertNextCell(NORM_SEG2,[2,0]) ; m1.insertNextCell(NORM_SEG2,[0,1]) ; m1.insertNextCell(NORM_SEG2,[1,4])
3323 m1.insertNextCell(NORM_SEG2,[3,5]) ; m1.insertNextCell(NORM_SEG2,[5,7]) ; m1.insertNextCell(NORM_SEG2,[3,6]) ; m1.insertNextCell(NORM_SEG2,[6,8])
3324 mm.setMeshAtLevel(-1,m1)
3325 fmts0=MEDFileFieldMultiTS()
3326 fmts0.setDtUnit("s")
3328 pfl=DataArrayInt([0,1,2,4]) ; pfl.setName("pfl")
3329 pflCell=DataArrayInt([0,1,2]) ; m1Part=m1[pflCell] ; m1Part.zipCoords()
3332 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1Part)
3333 f0.setName(fieldName0) ; f0.setTime(*t)
3334 da=DataArrayDouble(4) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
3337 f1ts=MEDFileField1TS()
3338 f1ts.setFieldProfile(f0,mm,-1,pfl)
3339 fmts0.pushBackTimeStep(f1ts)
3342 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1Part)
3343 f0.setName(fieldName0) ; f0.setTime(*t)
3344 da=DataArrayDouble(4) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3347 f1ts=MEDFileField1TS()
3348 f1ts.setFieldProfile(f0,mm,-1,pfl)
3349 fmts0.pushBackTimeStep(f1ts)
3351 fmts0.write(fname,0)
3352 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3353 ms=MEDFileMeshes(fname)
3354 fields=MEDFileFields(fname,False)
3355 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3356 allFMTSLeavesToDisplay=[]
3357 for fields in fields_per_mesh:
3358 allFMTSLeavesToDisplay2=[]
3360 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3362 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3364 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3365 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3366 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3367 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3368 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3369 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3370 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3371 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3373 mst=MEDFileMeshStruct.New(ms[0])
3375 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3376 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3378 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3379 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3380 self.assertTrue(not ncc)
3381 self.assertTrue(a0.isEqual(DataArrayDouble([(4.,3.,0.),(7.,3.,0.),(2.,5.,0.),(9.,5.,0.)]),1e-12))
3382 self.assertTrue(a1.isEqual(DataArrayByte([3,3,3])))
3383 self.assertTrue(a2.isEqual(DataArrayInt([0,3,6])))
3384 self.assertTrue(a3.isEqual(DataArrayInt([2,2,0,2,0,1,2,1,3])))
3385 self.assertTrue(a4 is None)
3386 self.assertTrue(a5 is None)
3387 a6,a7=mml2.retrieveFamilyIdsOnCells()
3388 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
3389 self.assertTrue(not a7) # copy here
3390 a8,a9=mml2.retrieveNumberIdsOnCells()
3391 self.assertTrue(not a8)
3392 self.assertTrue(a9) # nocopy here
3393 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3394 self.assertTrue(not a10)
3395 self.assertTrue(a11) # no copy here
3396 a12,a13=mml2.retrieveNumberIdsOnNodes()
3397 self.assertTrue(not a12)
3398 self.assertTrue(a13) # no copy here
3400 f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3401 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3402 f.loadArraysIfNecessary()
3403 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3404 self.assertEqual(f.getName(),fieldName0)
3405 vExp=DataArrayDouble(4) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"])
3406 self.assertTrue(v.isEqual(vExp,1e-12))
3408 f=allFMTSLeavesPerCommonSupport1[0][0][0][1]
3409 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3410 f.loadArraysIfNecessary()
3411 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3412 self.assertEqual(f.getName(),fieldName0)
3413 vExp=DataArrayDouble(4) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
3414 self.assertTrue(v.isEqual(vExp,1e-12))
3418 """ Non regression test for cartesian mesh whose the 3rd direction has only one node. It a false 3D mesh.
3420 fname="ForMEDReader24.med"
3421 fieldName0="zeFieldNode"
3422 cmesh=MEDCouplingCMesh("mesh")
3423 arr0=DataArrayDouble([0.,1.1,2.2,3.3,4.4])
3424 arr1=DataArrayDouble([0.,1.4,2.3])
3425 arr2=DataArrayDouble([5.])
3426 cmesh.setCoords(arr0,arr1,arr2)
3427 fmts0=MEDFileFieldMultiTS()
3428 fmts0.setDtUnit("s")
3431 f=MEDCouplingFieldDouble(ON_NODES) ; f.setName(fieldName0)
3433 arr=DataArrayDouble(15) ; arr.setInfoOnComponents(["tutu"]) ; arr.iota()
3436 f1ts=MEDFileField1TS()
3437 f1ts.setFieldNoProfileSBT(f)
3438 fmts0.pushBackTimeStep(f1ts)
3441 arr=DataArrayDouble(15) ; arr.setInfoOnComponents(["tutu"]) ; arr.iota()
3445 f1ts=MEDFileField1TS()
3446 f1ts.setFieldNoProfileSBT(f)
3447 fmts0.pushBackTimeStep(f1ts)
3449 mm=MEDFileCMesh() ; mm.setMesh(cmesh)
3451 fmts0.write(fname,0)
3452 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3453 ms=MEDFileMeshes(fname)
3454 fields=MEDFileFields(fname,False)
3455 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3456 allFMTSLeavesToDisplay=[]
3457 for fields in fields_per_mesh:
3458 allFMTSLeavesToDisplay2=[]
3460 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3462 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3464 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3465 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3466 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3467 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3468 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3469 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3470 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
3471 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
3473 mst=MEDFileMeshStruct.New(ms[0])
3475 fcscp=allFMTSLeavesPerCommonSupport[0][1]
3476 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3478 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
3479 (a,b,c),d=mml2.buildVTUArrays()
3480 self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
3481 self.assertTrue(a.isEqual(arr0,1e-12))
3482 self.assertTrue(b.isEqual(arr1,1e-12))
3483 self.assertTrue(c.isEqual(arr2,1e-12))
3485 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
3486 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3487 f.loadArraysIfNecessary()
3488 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3489 self.assertEqual(f.getName(),fieldName0)
3490 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3491 vExp=DataArrayDouble(15) ; vExp.iota(0) ; vExp.setInfoOnComponents(["tutu"])
3495 self.assertTrue(v.isEqual(vExp,1e-12))
3500 """ A tricky test that reproduces an invalid behaviour
3501 Here a same field is defined both on CELLS and GAUSS_PT, with a profile for each.
3502 The problem appears on array computation when performing CELLS then GAUSS_PT and CELLS again.
3504 fname="ForMEDReader25.med"
3506 coords=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.,0.,2.,1.,2.,2.,2.,0.,3.,1.,3.,2.,3.,1.,4.,1.,5.,1.,6.],15,2)
3507 m0=MEDCouplingUMesh("mesh",2) ; m0.setCoords(coords)
3509 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
3510 m0.insertNextCell(NORM_QUAD4,[1,4,5,2])
3511 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
3512 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
3513 m0.insertNextCell(NORM_QUAD4,[6,9,10,7])
3514 m0.insertNextCell(NORM_QUAD4,[7,10,11,8])
3515 m.setMeshAtLevel(0,m0)
3516 m1=MEDCouplingUMesh("mesh",1) ; m1.setCoords(coords)
3518 m1.insertNextCell(NORM_SEG2,[10,12])
3519 m1.insertNextCell(NORM_SEG2,[12,13])
3520 m1.insertNextCell(NORM_SEG2,[13,14])
3521 m.setMeshAtLevel(-1,m1)
3522 m.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6]))
3523 m.setFamilyFieldArr(-1,DataArrayInt([-7,-8,-9]))
3524 m.setFamilyFieldArr(1,DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))
3525 m.setRenumFieldArr(0,DataArrayInt([101,102,103,104,105,106]))
3526 m.setRenumFieldArr(-1,DataArrayInt([107,108,109]))
3527 m.setRenumFieldArr(1,DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217]))
3529 fmts=MEDFileFieldMultiTS()
3535 f1ts=MEDFileField1TS()
3536 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name0)
3537 arr=DataArrayDouble([(-1,-11),(-2,-22)]) ; arr.setInfoOnComponents(info0)
3539 pfl0=DataArrayInt([0,1]) ; pfl0.setName(pflName0)
3540 f1ts.setFieldProfile(f,m,-1,pfl0)
3542 f2=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f2.setName(name0)
3543 arr=DataArrayDouble(15) ; arr.iota(1)
3544 arr=DataArrayDouble.Meld(arr,arr+10) ; arr.setInfoOnComponents(info0)
3546 pfl1=DataArrayInt([1,3,5]) ; pfl1.setName(pflName1)
3547 tmp=m0[pfl1] ; f2.setMesh(tmp)
3548 f2.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.,0.],[0.1,0.1,0.1,0.1,0.6])
3550 f1ts.setFieldProfile(f2,m,0,pfl1)
3551 fmts.pushBackTimeStep(f1ts)
3555 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3556 ms=MEDFileMeshes(fname)
3557 fields=MEDFileFields(fname,False) # false is absolutely necessary for the test
3558 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3559 allFMTSLeavesToDisplay=[]
3560 for fields in fields_per_mesh:
3561 allFMTSLeavesToDisplay2=[]
3563 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3565 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3567 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3568 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
3569 ### here the test is important !!! Pointers must be different !
3570 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3571 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3572 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3573 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
3574 ### here the test is important !!! Pointers must be different !
3575 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3576 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3577 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3578 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3579 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3580 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
3582 mst=MEDFileMeshStruct.New(ms[0])
3583 # emulate first click
3584 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3585 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3587 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3588 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3589 self.assertTrue(not ncc) # copy here because 2D -> 3D
3590 expCoords=coords.changeNbOfComponents(3,0.)
3591 self.assertTrue(a0.isEqual(expCoords,1e-12))
3592 self.assertTrue(a1.isEqual(DataArrayByte([3,3])))
3593 self.assertTrue(a2.isEqual(DataArrayInt([0,3])))
3594 self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
3595 self.assertTrue(a4 is None)
3596 self.assertTrue(a5 is None)
3597 a6,a7=mml2.retrieveFamilyIdsOnCells()
3598 self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
3599 self.assertTrue(not a7) # copy here because profile on cells
3600 a8,a9=mml2.retrieveNumberIdsOnCells()
3601 self.assertTrue(a8.isEqual(DataArrayInt([107,108])))
3602 self.assertTrue(not a9) # copy here because profile on cells
3603 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3604 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3605 self.assertTrue(a11) # no copy here
3606 a12,a13=mml2.retrieveNumberIdsOnNodes()
3607 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3608 self.assertTrue(a13) # no copy here
3609 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3610 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3611 fff0.loadArraysIfNecessary()
3612 self.assertEqual([ON_CELLS],fff0.getTypesOfFieldAvailable())
3613 v=mml.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3614 self.assertEqual(fff0.getName(),name0)
3615 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3616 vExp=DataArrayDouble([(-1,-11),(-2,-22)]) ; vExp.setInfoOnComponents(info0)
3617 self.assertTrue(v.isEqual(vExp,1e-12))
3619 # emulate second click
3620 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3621 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3623 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3624 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3625 self.assertTrue(not ncc) # copy here because 2D -> 3D
3626 expCoords=coords.changeNbOfComponents(3,0.)
3627 self.assertTrue(a0.isEqual(expCoords,1e-12))
3628 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9])))
3629 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10])))
3630 self.assertTrue(a3.isEqual(DataArrayInt([4,1,4,5,2,4,4,7,8,5,4,7,10,11,8])))
3631 self.assertTrue(a4 is None)
3632 self.assertTrue(a5 is None)
3633 a6,a7=mml2.retrieveFamilyIdsOnCells()
3634 self.assertTrue(a6.isEqual(DataArrayInt([-2,-4,-6])))
3635 self.assertTrue(not a7) # copy here because profile on cells
3636 a8,a9=mml2.retrieveNumberIdsOnCells()
3637 self.assertTrue(a8.isEqual(DataArrayInt([102,104,106])))
3638 self.assertTrue(not a9) # copy here because profile on cells
3639 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3640 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3641 self.assertTrue(a11) # no copy here
3642 a12,a13=mml2.retrieveNumberIdsOnNodes()
3643 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3644 self.assertTrue(a13) # no copy here
3645 fff1=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3646 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3647 fff1.loadArraysIfNecessary()
3648 self.assertEqual([ON_GAUSS_PT],fff1.getTypesOfFieldAvailable())
3649 v=mml.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3650 self.assertEqual(fff1.getName(),name0)
3651 self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
3652 vExp=DataArrayDouble([1.,11.,2.,12.,3.,13.,4.,14.,5.,15.,6.,16.,7.,17.,8.,18.,9.,19.,10.,20.,11.,21.,12.,22.,13.,23.,14.,24.,15.,25.],15,2) ; vExp.setInfoOnComponents(info0)
3653 self.assertTrue(v.isEqual(vExp,1e-12))
3654 # emulate third click
3655 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3656 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3658 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3659 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3660 self.assertTrue(not ncc) # copy here because 2D -> 3D
3661 expCoords=coords.changeNbOfComponents(3,0.)
3662 self.assertTrue(a0.isEqual(expCoords,1e-12))
3663 self.assertTrue(a1.isEqual(DataArrayByte([3,3])))
3664 self.assertTrue(a2.isEqual(DataArrayInt([0,3])))
3665 self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
3666 self.assertTrue(a4 is None)
3667 self.assertTrue(a5 is None)
3668 a6,a7=mml2.retrieveFamilyIdsOnCells()
3669 self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
3670 self.assertTrue(not a7) # copy here because profile on cells
3671 a8,a9=mml2.retrieveNumberIdsOnCells()
3672 self.assertTrue(a8.isEqual(DataArrayInt([107,108])))
3673 self.assertTrue(not a9) # copy here because profile on cells
3674 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3675 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3676 self.assertTrue(a11) # no copy here
3677 a12,a13=mml2.retrieveNumberIdsOnNodes()
3678 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3679 self.assertTrue(a13) # no copy here
3680 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3681 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3682 fff0.loadArraysIfNecessary()
3683 self.assertEqual([ON_CELLS],fff0.getTypesOfFieldAvailable())
3684 v=mml.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3685 self.assertEqual(fff0.getName(),name0)
3686 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3687 vExp=DataArrayDouble([(-1,-11),(-2,-22)]) ; vExp.setInfoOnComponents(info0)
3688 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3693 """ Test focused on field on nodes (here f0Node and f1Node) lying on a profile of nodes that do not match perfectly a sub set of cells of its underlying mesh. See bug EDF 2405 and 2177.
3694 For this type of fields the support will contain only vertices.
3696 fname="ForMEDReader26.med"
3697 coords=DataArrayDouble([(0.,0.,0.),(1.,0.,0.),(2.,0.,0.),(3.,0.,0.),(0.,1.,0.),(1.,1.,0.),(2.,1.,0.),(3.,1.,0.),(0.,2.,0.),(1.,2.,0.),(2.,2.,0.),(3.,2.,0.),(0.,3.,0.),(1.,3.,0.),(2.,3.,0.),(3.,3.,0.)])
3698 m0=MEDCouplingUMesh("mesh",2)
3700 for elt in [[2,6,3],[6,7,3],[9,6,5],[9,10,6]]:
3701 m0.insertNextCell(NORM_TRI3,elt)
3703 for elt in [[0,4,5,1],[1,5,6,2],[4,8,9,5],[6,10,11,7],[8,12,13,9],[9,13,14,10],[10,14,15,11]]:
3704 m0.insertNextCell(NORM_QUAD4,elt)
3706 m0.setCoords(coords)
3709 mm.setMeshAtLevel(0,m0)
3710 mm.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]))
3711 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3713 f1ts0Node=MEDFileField1TS()
3714 f1ts1Node=MEDFileField1TS()
3715 f1ts2Cell=MEDFileField1TS()
3716 f1ts3Cell=MEDFileField1TS()
3717 f1ts4Cell=MEDFileField1TS()
3718 f1ts5Node=MEDFileField1TS()
3720 pfl0=DataArrayInt([4,5,6,8,9,12]) ; pfl0.setName("pfl0")
3721 pfl1=DataArrayInt([0,1,4,5,7,10]) ; pfl1.setName("pfl1")
3722 pfl2=DataArrayInt([0,1,2,3,4,5,6,7,10,11,14,15]) ; pfl2.setName("pfl2")
3724 f0Node=MEDCouplingFieldDouble(ON_NODES) ; f0Node.setName("f0Node")
3725 arr0=DataArrayDouble(6) ; arr0.iota()
3726 f0Node.setArray(arr0)
3727 f1ts0Node.setFieldProfile(f0Node,mm,0,pfl0)
3729 f1Node=MEDCouplingFieldDouble(ON_NODES) ; f1Node.setName("f1Node")
3730 arr1=DataArrayDouble(6) ; arr1.iota() ; arr1.reverse()
3731 f1Node.setArray(arr1)
3732 f1ts1Node.setFieldProfile(f1Node,mm,0,pfl0)
3734 f2Cell=MEDCouplingFieldDouble(ON_CELLS) ; f2Cell.setName("f2Cell")
3735 arr2=DataArrayDouble([2,3,0,1,4,5])
3736 f2Cell.setArray(arr2)
3737 f1ts2Cell.setFieldProfile(f2Cell,mm,0,pfl1)
3739 f3Cell=MEDCouplingFieldDouble(ON_CELLS) ; f3Cell.setName("f3Cell")
3740 arr3=DataArrayDouble([5,4,3,2,1,0])
3741 f3Cell.setArray(arr3)
3742 f1ts3Cell.setFieldProfile(f3Cell,mm,0,pfl1)
3744 f4Cell=MEDCouplingFieldDouble(ON_CELLS) ; f4Cell.setName("f4Cell")
3745 arr4=DataArrayDouble([2,2,0,1,1,0])
3746 f4Cell.setArray(arr4)
3747 f1ts4Cell.setFieldProfile(f4Cell,mm,0,pfl1)
3749 f5Node=MEDCouplingFieldDouble(ON_NODES) ; f5Node.setName("f5Node")
3750 arr5=DataArrayDouble([0,1,2,3,10,11,13,2,11,1,10,0])
3751 f5Node.setArray(arr5)
3752 f1ts5Node.setFieldProfile(f5Node,mm,0,pfl2)
3755 for f in [f1ts0Node,f1ts1Node,f1ts2Cell,f1ts3Cell,f1ts4Cell,f1ts5Node]:
3756 fmts=MEDFileFieldMultiTS()
3757 fmts.pushBackTimeStep(f)
3762 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3763 ms=MEDFileMeshes(fname)
3764 fields=MEDFileFields(fname,False)
3765 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3766 allFMTSLeavesToDisplay=[]
3767 for fields in fields_per_mesh:
3768 allFMTSLeavesToDisplay2=[]
3770 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3772 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3774 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3775 self.assertEqual(len(allFMTSLeavesToDisplay[0]),6)
3776 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3777 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3778 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),6)
3779 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3780 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3781 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),4)
3782 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)# <- the smart one is here
3784 mst=MEDFileMeshStruct.New(ms[0])
3786 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3787 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3789 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3790 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3791 self.assertTrue(not ncc)
3792 self.assertTrue(a0.isEqual(DataArrayDouble([0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,0.,3.,0.],6,3),1e-12))
3793 self.assertTrue(a1.isEqual(DataArrayByte([5,9,1])))
3794 self.assertTrue(a2.isEqual(DataArrayInt([0,4,9])))
3795 self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,5])))
3796 self.assertTrue(a4 is None)
3797 self.assertTrue(a5 is None)
3798 a6,a7=mml2.retrieveFamilyIdsOnCells()
3799 self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,13])))
3800 self.assertTrue(not a7) # copy here because profile on cells
3801 a8,a9=mml2.retrieveNumberIdsOnCells()
3802 self.assertTrue(a8 is None)
3803 self.assertTrue(a9) # no copy here because no number field
3804 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3805 self.assertTrue(a10.isEqual(DataArrayInt([5,6,7,9,10,13])))
3806 self.assertTrue(not a11) # copy here
3807 a12,a13=mml2.retrieveNumberIdsOnNodes()
3808 self.assertTrue(a12 is None)
3809 self.assertTrue(a13) # no copy here because no number field
3811 fff0=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3812 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3813 fff0.loadArraysIfNecessary()
3814 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3815 self.assertEqual(fff0.getName(),"f0Node")
3816 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3817 vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
3818 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3820 fff1=allFMTSLeavesPerCommonSupport1[1][0][1][0]
3821 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3822 fff1.loadArraysIfNecessary()
3823 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3824 self.assertEqual(fff1.getName(),"f1Node")
3825 self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
3826 vExp=DataArrayDouble([5.,4.,3.,2.,1.,0.])
3827 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3831 """ This test defines 2 fields f0 and f1 on nodes lying on an unstructured mesh with no cells.
3832 f0 is a field on all nodes. f1 is a partial field on nodes.
3834 fname="ForMEDReader27.med"
3835 coords=DataArrayDouble([(0.,0.,0.),(1.,0.,0.),(2.,0.,0.),(3.,0.,0.),(0.,1.,0.),(1.,1.,0.),(2.,1.,0.),(3.,1.,0.),(0.,2.,0.),(1.,2.,0.),(2.,2.,0.),(3.,2.,0.),(0.,3.,0.),(1.,3.,0.),(2.,3.,0.),(3.,3.,0.)])
3836 m0=MEDCouplingUMesh("mesh",2)
3838 m0.setCoords(coords)
3841 mm.setMeshAtLevel(0,m0)
3842 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3844 f1ts0=MEDFileField1TS()
3845 f1ts1=MEDFileField1TS()
3847 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m0) ; f0.setName("f0NoPfl")
3848 arr0=DataArrayDouble([0.,1.,2.,3.,1.,1.5,2.2,3.1,2.,2.2,3.,3.1,3.,3.1,3.5,4.])
3851 f1ts0.setFieldNoProfileSBT(f0)
3852 self.assertEqual(f1ts0.getMeshName(),"mesh")
3854 pfl1=DataArrayInt([0,1,2,3,4,5,6,8,9,12]) ; pfl1.setName("pfl1")
3855 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setName("f1Pfl")
3856 arr1=DataArrayDouble([3.,2.,1.,0.,2.,1.5,0.,1.,0.,0.2])
3858 f1ts1.setFieldProfile(f1,mm,0,pfl1)
3859 self.assertEqual(f1ts1.getMeshName(),"mesh")
3862 fmts0=MEDFileFieldMultiTS()
3863 fmts0.pushBackTimeStep(f1ts0)
3864 fmts1=MEDFileFieldMultiTS()
3865 fmts1.pushBackTimeStep(f1ts1)
3866 fs.pushField(fmts0) ; fs.pushField(fmts1)
3867 self.assertEqual(fs[0].getMeshName(),"mesh")
3868 self.assertEqual(fs[1].getMeshName(),"mesh")
3871 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3872 ms=MEDFileMeshes(fname)
3873 fields=MEDFileFields(fname,False)
3874 self.assertEqual(fields[0].getMeshName(),"mesh")
3875 self.assertEqual(fields[1].getMeshName(),"mesh")
3876 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3877 self.assertEqual(fields_per_mesh[0][0].getMeshName(),"mesh")
3878 self.assertEqual(fields_per_mesh[0][1].getMeshName(),"mesh")
3879 allFMTSLeavesToDisplay=[]
3880 for fields in fields_per_mesh:
3881 allFMTSLeavesToDisplay2=[]
3883 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3885 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3887 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3888 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
3889 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3890 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3891 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
3892 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3893 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3894 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3895 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
3897 mst=MEDFileMeshStruct.New(ms[0])
3899 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3900 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3902 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3903 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3904 self.assertTrue(ncc)
3905 self.assertTrue(a0.isEqual(DataArrayDouble([(0.,0.,0.),(1.,0.,0.),(2.,0.,0.),(3.,0.,0.),(0.,1.,0.),(1.,1.,0.),(2.,1.,0.),(3.,1.,0.),(0.,2.,0.),(1.,2.,0.),(2.,2.,0.),(3.,2.,0.),(0.,3.,0.),(1.,3.,0.),(2.,3.,0.),(3.,3.,0.)]),1e-12))
3906 self.assertTrue(a1.isEqual(DataArrayByte([])))
3907 self.assertTrue(a2.isEqual(DataArrayInt([])))
3908 self.assertTrue(a3.isEqual(DataArrayInt([])))
3909 self.assertTrue(a4 is None)
3910 self.assertTrue(a5 is None)
3912 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3913 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3914 fff0.loadArraysIfNecessary()
3915 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3916 self.assertEqual(fff0.getName(),"f0NoPfl")
3917 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3918 vExp=DataArrayDouble([0.,1.,2.,3.,1.,1.5,2.2,3.1,2.,2.2,3.,3.1,3.,3.1,3.5,4])
3919 self.assertTrue(v.isEqual(vExp,1e-12))
3921 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3922 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3924 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3925 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3926 self.assertTrue(not ncc)
3927 self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(3,0,0),(0,1,0),(1,1,0),(2,1,0),(0,2,0),(1,2,0),(0,3,0)]),1e-12))
3928 self.assertTrue(a1.isEqual(DataArrayByte([])))
3929 self.assertTrue(a2.isEqual(DataArrayInt([])))
3930 self.assertTrue(a3.isEqual(DataArrayInt([])))
3931 self.assertTrue(a4 is None)
3932 self.assertTrue(a5 is None)
3933 fff1=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3934 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3935 fff1.loadArraysIfNecessary()
3936 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3937 self.assertEqual(fff1.getName(),"f1Pfl")
3938 self.assertNotEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer()) # pointers are not equal because Profile
3939 vExp=DataArrayDouble([3.,2.,1.,0.,2.,1.5,0.,1.,0.,0.2])
3940 self.assertTrue(v.isEqual(vExp,1e-12))
3944 """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh whith cells including NORM_POINT1.
3945 Both f0 and f1 are on NODES and f2 and f3 are on cells. f1 and f2 share the same support.
3946 f0 is on a nodal support that is not matchable with any cells (including NORM_POINT1)
3947 This test is a more aggressive version of test26.
3949 fname="ForMEDReader28.med"
3950 coords=DataArrayDouble([(0.,0.,0.),(1.,0.,0.),(2.,0.,0.),(3.,0.,0.),(0.,1.,0.),(1.,1.,0.),(2.,1.,0.),(3.,1.,0.),(0.,2.,0.),(1.,2.,0.),(2.,2.,0.),(3.,2.,0.),(0.,3.,0.),(1.,3.,0.),(2.,3.,0.),(3.,3.,0.)])
3951 m0=MEDCouplingUMesh("mesh",2)
3953 for elt in [[2,6,3],[6,7,3],[9,6,5],[9,10,6]]:
3954 m0.insertNextCell(NORM_TRI3,elt)
3956 for elt in [[0,4,5,1],[1,5,6,2],[4,8,9,5],[6,10,11,7],[8,12,13,9],[9,13,14,10],[10,14,15,11]]:
3957 m0.insertNextCell(NORM_QUAD4,elt)
3959 m0.setCoords(coords)
3960 m2=MEDCouplingUMesh("mesh",0) ; m2.setCoords(coords)
3962 for elt in [[8],[13]]:
3963 m2.insertNextCell(NORM_POINT1,elt)
3967 mm.setMeshAtLevel(0,m0)
3968 mm.setMeshAtLevel(-2,m2)
3969 mm.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]))
3970 mm.setFamilyFieldArr(-2,DataArrayInt([-12,-13]))
3971 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3973 f1ts0Node=MEDFileField1TS()
3974 f1ts1Node=MEDFileField1TS()
3975 f1ts2Cell=MEDFileField1TS()
3976 f1ts3Cell=MEDFileField1TS()
3978 pfl0=DataArrayInt([4,5,6,8,9,12]) ; pfl0.setName("pfl0")
3979 pfl1=DataArrayInt([0,1,4,5,7,10]) ; pfl1.setName("pfl1")
3980 pfl2=DataArrayInt([0,1,2,3,4,5,6,7,10,11,14,15]) ; pfl2.setName("pfl2")
3982 f0Node=MEDCouplingFieldDouble(ON_NODES) ; f0Node.setName("f0Node")
3983 arr0=DataArrayDouble(6) ; arr0.iota()
3984 f0Node.setArray(arr0)
3985 f1ts0Node.setFieldProfile(f0Node,mm,0,pfl0)
3987 f1Node=MEDCouplingFieldDouble(ON_NODES) ; f1Node.setName("f1Node")
3988 arr1=DataArrayDouble(12) ; arr1.iota() ; arr1.reverse()
3989 f1Node.setArray(arr1)
3990 f1ts1Node.setFieldProfile(f1Node,mm,0,pfl2)
3992 f2Cell=MEDCouplingFieldDouble(ON_CELLS) ; f2Cell.setName("f2Cell")
3993 arr2=DataArrayDouble([2,3,0,1,4,5])
3994 f2Cell.setArray(arr2)
3995 f1ts2Cell.setFieldProfile(f2Cell,mm,0,pfl1)
3997 f3Cell=MEDCouplingFieldDouble(ON_CELLS) ; f3Cell.setName("f3Cell")
3998 arr3=DataArrayDouble([5,4,3,2,1,0]) ; f3Cell.setArray(arr3)
3999 f1ts3Cell.setFieldProfile(f3Cell,mm,0,pfl1)
4001 arr3=DataArrayDouble([-1.1,-3.1]) ; f3Cell.setArray(arr3)
4002 f1ts3Cell.setFieldNoProfileSBT(f3Cell)
4005 for f in [f1ts0Node,f1ts1Node,f1ts2Cell,f1ts3Cell]:
4006 fmts=MEDFileFieldMultiTS()
4007 fmts.pushBackTimeStep(f)
4012 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4013 ms=MEDFileMeshes(fname)
4014 fields=MEDFileFields(fname,False)
4015 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4016 allFMTSLeavesToDisplay=[]
4017 for fields in fields_per_mesh:
4018 allFMTSLeavesToDisplay2=[]
4020 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
4022 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4024 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4025 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
4026 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4027 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4028 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
4029 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4030 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),3)
4031 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
4032 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
4033 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[2][0]),1)
4035 mst=MEDFileMeshStruct.New(ms[0])
4037 fcscp=allFMTSLeavesPerCommonSupport1[2][1]
4038 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4040 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4041 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4042 self.assertTrue(not ncc)
4043 self.assertTrue(a0.isEqual(DataArrayDouble([0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,0.,3.,0.],6,3),1e-12))
4044 self.assertTrue(a1.isEqual(DataArrayByte([5,9,1,1])))
4045 self.assertTrue(a2.isEqual(DataArrayInt([0,4,9,11])))
4046 self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,3,1,5])))
4047 self.assertTrue(a4 is None)
4048 self.assertTrue(a5 is None)
4049 a6,a7=mml2.retrieveFamilyIdsOnCells()
4050 self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,-12,13])))
4051 self.assertTrue(not a7) # copy here because profile on cells
4052 a8,a9=mml2.retrieveNumberIdsOnCells()
4053 self.assertTrue(a8 is None)
4054 self.assertTrue(a9) # no copy here because no number field
4055 a10,a11=mml2.retrieveFamilyIdsOnNodes()
4056 self.assertTrue(a10.isEqual(DataArrayInt([5,6,7,9,10,13])))
4057 self.assertTrue(not a11) # copy here
4058 a12,a13=mml2.retrieveNumberIdsOnNodes()
4059 self.assertTrue(a12 is None)
4060 self.assertTrue(a13) # no copy here because no number field
4062 fff0=allFMTSLeavesPerCommonSupport1[2][0][0][0]
4063 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
4064 fff0.loadArraysIfNecessary()
4065 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
4066 self.assertEqual(fff0.getName(),"f0Node")
4067 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4068 vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
4069 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
4071 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4072 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4074 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4075 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4076 self.assertTrue(not ncc)
4077 self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(2,0,0),(3,0,0),(0,1,0),(1,1,0),(2,1,0),(3,1,0),(2,2,0),(3,2,0),(2,3,0),(3,3,0)]),1e-12))
4078 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9,9])))
4079 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18,23])))
4080 self.assertTrue(a3.isEqual(DataArrayInt([3,2,6,3,3,6,7,3,4,0,4,5,1,4,1,5,6,2,4,6,8,9,7,4,8,10,11,9])))
4081 self.assertTrue(a4 is None)
4082 self.assertTrue(a5 is None)
4083 fff1=allFMTSLeavesPerCommonSupport1[0][0][0][0]
4084 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
4085 fff1.loadArraysIfNecessary()
4086 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
4087 self.assertEqual(fff1.getName(),"f2Cell")
4088 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4089 vExp=DataArrayDouble([2,3,0,1,4,5])
4090 self.assertTrue(v.isEqual(vExp,1e-12))
4091 fff2=allFMTSLeavesPerCommonSupport1[0][0][1][0]
4092 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff2,mst)
4093 fff2.loadArraysIfNecessary()
4094 v=mml2.buildDataArray(fsst,fields,fff2.getUndergroundDataArray())
4095 self.assertEqual(fff2.getName(),"f1Node")
4096 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4097 vExp=DataArrayDouble([11,10,9,8,7,6,5,4,3,2,1,0])
4098 self.assertTrue(v.isEqual(vExp,1e-12))
4100 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
4101 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4103 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4104 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4105 self.assertTrue(ncc)# here all the 16 nodes are taken
4106 self.assertTrue(a0.isEqual(DataArrayDouble([(0.,0.,0.),(1.,0.,0.),(2.,0.,0.),(3.,0.,0.),(0.,1.,0.),(1.,1.,0.),(2.,1.,0.),(3.,1.,0.),(0.,2.,0.),(1.,2.,0.),(2.,2.,0.),(3.,2.,0.),(0.,3.,0.),(1.,3.,0.),(2.,3.,0.),(3.,3.,0.)]),1e-12))
4107 self.assertTrue(a1.isEqual(DataArrayByte([1,1,5,5,9,9,9,9])))
4108 self.assertTrue(a2.isEqual(DataArrayInt([0,2,4,8,12,17,22,27])))
4109 self.assertTrue(a3.isEqual(DataArrayInt([1,8,1,13,3,2,6,3,3,6,7,3,4,0,4,5,1,4,1,5,6,2,4,6,10,11,7,4,10,14,15,11])))
4110 self.assertTrue(a4 is None)
4111 self.assertTrue(a5 is None)
4112 fff3=allFMTSLeavesPerCommonSupport1[1][0][0][0]
4113 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff3,mst)
4114 fff3.loadArraysIfNecessary()
4115 v=mml2.buildDataArray(fsst,fields,fff3.getUndergroundDataArray())
4116 self.assertEqual(fff3.getName(),"f3Cell")
4117 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4118 vExp=DataArrayDouble([-1.1,-3.1,5,4,3,2,1,0])
4119 self.assertTrue(v.isEqual(vExp,1e-12))