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 self.assertEqual([NORM_QUAD4],fcscp.getGeoTypesAt(0,ms[0]))
2732 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2734 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2735 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2736 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2737 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))
2738 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2739 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2740 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2741 self.assertTrue(a4 is None)
2742 self.assertTrue(a5 is None)
2743 a6,a7=mml2.retrieveFamilyIdsOnCells()
2744 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2745 self.assertTrue(a7) # no copy here
2746 a8,a9=mml2.retrieveNumberIdsOnCells()
2747 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2748 self.assertTrue(a9) # no copy here
2749 for i in xrange(1,2):
2750 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2752 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2753 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2755 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2756 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2757 f.loadArraysIfNecessary()
2758 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2759 self.assertEqual(f.getName(),fieldName2)
2760 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2761 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2763 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2764 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2765 f.loadArraysIfNecessary()
2766 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2767 self.assertEqual(f.getName(),fieldName1)
2768 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2769 vExp1[i].setInfoOnComponents(["Smth"])
2770 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2772 ## Now same exercise but with a different load strategy. All is load directly.
2773 ms=MEDFileMeshes(fname)
2774 fields=MEDFileFields(fname) # here all is read, the SauvReader (or other Reader) is emulated
2775 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2776 allFMTSLeavesToDisplay=[]
2777 for fields in fields_per_mesh:
2778 allFMTSLeavesToDisplay2=[]
2780 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2782 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2784 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2785 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2786 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2787 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2788 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2789 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2790 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2791 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2793 mst=MEDFileMeshStruct.New(ms[0])
2795 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2796 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2798 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2799 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2800 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2801 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))
2802 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2803 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2804 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2805 self.assertTrue(a4 is None)
2806 self.assertTrue(a5 is None)
2807 a6,a7=mml2.retrieveFamilyIdsOnCells()
2808 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2809 self.assertTrue(a7) # no copy here
2810 a8,a9=mml2.retrieveNumberIdsOnCells()
2811 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2812 self.assertTrue(a9) # no copy here
2813 for i in xrange(1,2):
2814 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2816 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2817 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2819 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2820 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2821 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2822 self.assertEqual(f.getName(),fieldName2)
2823 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2824 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2826 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2827 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2828 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2829 self.assertEqual(f.getName(),fieldName1)
2830 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2831 vExp1[i].setInfoOnComponents(["Smth"])
2832 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2838 This test is a simple non profile CELL field but lying on cells of dimension -1 (not 0 as "usual").
2840 fname="ForMEDReader19.med"
2841 fieldName="ACellFieldOnDimM1"
2842 coo=DataArrayDouble(3) ; coo.iota()
2843 m=MEDCouplingCMesh() ; m.setCoords(coo,coo,coo) ; m.setName("mesh")
2844 m0=m.buildUnstructured() ; del m
2848 mm.setMeshAtLevel(0,m0)
2849 mm.setMeshAtLevel(-1,m1)
2850 ff=MEDFileFieldMultiTS()
2853 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2854 f.setName(fieldName)
2855 arr=DataArrayDouble(24) ; arr.iota() ; arr.setInfoOnComponents(["AStr"])
2858 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2859 ff.pushBackTimeStep(f1ts)
2862 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2863 f.setName(fieldName)
2864 arr=DataArrayDouble(24) ; arr.iota() ; arr.reverse() ; arr.setInfoOnComponents(["AStr"])
2867 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2868 ff.pushBackTimeStep(f1ts)
2872 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2873 ms=MEDFileMeshes(fname)
2874 fields=MEDFileFields(fname,False)
2875 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2876 allFMTSLeavesToDisplay=[]
2877 for fields in fields_per_mesh:
2878 allFMTSLeavesToDisplay2=[]
2880 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2882 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2884 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2885 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
2886 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2887 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2888 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
2889 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2890 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2891 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
2893 mst=MEDFileMeshStruct.New(ms[0])
2895 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2896 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2898 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2899 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2900 self.assertTrue(ncc)
2901 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))
2902 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])))
2903 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])))
2904 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])))
2905 self.assertTrue(a4 is None)
2906 self.assertTrue(a5 is None)
2907 a6,a7=mml2.retrieveFamilyIdsOnCells()
2908 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])))
2909 self.assertTrue(a7) # no copy here
2910 a8,a9=mml2.retrieveNumberIdsOnCells()
2911 self.assertTrue(a8 is None)
2912 self.assertTrue(a9) # no copy here
2913 a10,a11=mml2.retrieveFamilyIdsOnNodes()
2914 self.assertTrue(not a10)
2915 self.assertTrue(a11) # no copy here
2916 a12,a13=mml2.retrieveNumberIdsOnNodes()
2917 self.assertTrue(not a12)
2918 self.assertTrue(a13) # no copy here
2919 for i in xrange(1,2):
2920 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2923 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2924 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2925 f.loadArraysIfNecessary()
2926 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2927 self.assertEqual(f.getName(),fieldName)
2928 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2929 vExp=DataArrayDouble(24) ; vExp.iota()
2930 if i==1: vExp.reverse()
2931 vExp.setInfoOnComponents(["AStr"])
2932 self.assertTrue(v.isEqual(vExp,1e-12))
2937 """ This test works with groups/families on cells AND on nodes. Here 4 fields each on same time steps (2).
2938 1 field on CELLS without profile, 1 field on CELLS with profile, 1 field on NODES without profile, 1 field on NODES with profile.
2939 All of these 4 fields lies on a single mesh "mesh". The 2 fields on profile lies on a same support.
2940 One drawback of this test : no multi geom type. Coming soon !
2942 fname="ForMEDReader20.med"
2943 fieldName0="ANodeField"
2944 fieldName1="ACellField"
2945 fieldName2="ANodeFieldPfl"
2946 fieldName3="ACellFieldPfl"
2947 pfl2=DataArrayInt([5,6,7,10,11,12,15,16,17,20,21,22]) ; pfl2.setName("pfl2")
2948 pfl3=DataArrayInt([4,5,8,9,12,13]) ; pfl3.setName("pfl3")
2950 arr=DataArrayDouble(5) ; arr.iota()
2951 m=MEDCouplingCMesh("mesh") ; m.setCoords(arr,arr)
2952 m=m.buildUnstructured()
2954 mm.setMeshAtLevel(0,m)
2956 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
2957 fmts0.setDtUnit("s")
2958 fmts1=MEDFileFieldMultiTS() ; fs.pushField(fmts1)
2959 fmts1.setDtUnit("s")
2960 fmts2=MEDFileFieldMultiTS() ; fs.pushField(fmts2)
2961 fmts2.setDtUnit("s")
2962 fmts3=MEDFileFieldMultiTS() ; fs.pushField(fmts3)
2963 fmts3.setDtUnit("s")
2966 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
2967 f0.setName(fieldName0) ; f0.setTime(*t)
2968 da=m.getCoords().magnitude() ; da.setInfoOnComponents(["zeInfo"])
2971 f1ts=MEDFileField1TS()
2972 f1ts.setFieldNoProfileSBT(f0)
2973 fmts0.pushBackTimeStep(f1ts)
2975 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
2976 f1.setName(fieldName1) ; f1.setTime(*t)
2977 da=m.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["zeInfoCell"])
2980 f1ts=MEDFileField1TS()
2981 f1ts.setFieldNoProfileSBT(f1)
2982 fmts1.pushBackTimeStep(f1ts)
2984 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
2985 f2.setName(fieldName2) ; f2.setTime(*t)
2986 da=m.getCoords().magnitude()[pfl2] ; da.setInfoOnComponents(["zzzz"])
2989 f1ts=MEDFileField1TS()
2990 f1ts.setFieldProfile(f2,mm,0,pfl2)
2991 fmts2.pushBackTimeStep(f1ts)
2993 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
2994 f3.setName(fieldName3) ; f3.setTime(*t)
2995 da=mTmp.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["abcdefg"])
2998 f1ts=MEDFileField1TS()
2999 f1ts.setFieldProfile(f3,mm,0,pfl3)
3000 fmts3.pushBackTimeStep(f1ts)
3003 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
3004 f0.setName(fieldName0) ; f0.setTime(*t)
3005 da=m.getCoords().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3008 f1ts=MEDFileField1TS()
3009 f1ts.setFieldNoProfileSBT(f0)
3010 fmts0.pushBackTimeStep(f1ts)
3012 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
3013 f1.setName(fieldName1) ; f1.setTime(*t)
3014 da=m.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"])
3017 f1ts=MEDFileField1TS()
3018 f1ts.setFieldNoProfileSBT(f1)
3019 fmts1.pushBackTimeStep(f1ts)
3021 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
3022 f2.setName(fieldName2) ; f2.setTime(*t)
3023 da=m.getCoords().magnitude()[pfl2] ; da.reverse() ; da.setInfoOnComponents(["zzzz"])
3026 f1ts=MEDFileField1TS()
3027 f1ts.setFieldProfile(f2,mm,0,pfl2)
3028 fmts2.pushBackTimeStep(f1ts)
3030 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
3031 f3.setName(fieldName3) ; f3.setTime(*t)
3032 da=mTmp.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"])
3035 f1ts=MEDFileField1TS()
3036 f1ts.setFieldProfile(f3,mm,0,pfl3)
3037 fmts3.pushBackTimeStep(f1ts)
3039 grp1=DataArrayInt([6,7,8,11,12,13,16,17,18]) ; grp1.setName("grp1")
3040 grp2=DataArrayInt([10,11,15,16,20,21]) ; grp2.setName("grp2")
3041 mm.setGroupsAtLevel(1,[grp1,grp2])
3042 grp3=DataArrayInt([4,5,6]) ; grp3.setName("grp3")
3043 grp4=DataArrayInt([8,9,10]) ; grp4.setName("grp4")
3044 mm.setGroupsAtLevel(0,[grp3,grp4])
3045 d=DataArrayInt(25) ; d.iota() ; d*=10 ; mm.setRenumFieldArr(1,d)
3046 d=DataArrayInt(16) ; d.iota() ; d*=11 ; mm.setRenumFieldArr(0,d)
3048 fs.appendGlobs(fmts2,1e-12)
3049 fs.appendGlobs(fmts3,1e-12)
3051 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3052 ms=MEDFileMeshes(fname)
3053 fields=MEDFileFields(fname,False)
3054 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3055 allFMTSLeavesToDisplay=[]
3056 for fields in fields_per_mesh:
3057 allFMTSLeavesToDisplay2=[]
3059 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3061 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3063 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3064 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
3065 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3066 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3067 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
3068 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3069 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3070 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
3071 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)
3073 mst=MEDFileMeshStruct.New(ms[0])
3075 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3076 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3078 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3079 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3080 self.assertTrue(not ncc)
3081 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))
3082 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
3083 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
3084 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])))
3085 self.assertTrue(a4 is None)
3086 self.assertTrue(a5 is None)
3087 a6,a7=mml2.retrieveFamilyIdsOnCells()
3088 self.assertTrue(a6.isEqual(DataArrayInt([-5,-5,-5,-5,-6,-6,-6,-5,-7,-7,-7,-5,-5,-5,-5,-5])))
3089 self.assertTrue(a7) # no copy here
3090 a8,a9=mml2.retrieveNumberIdsOnCells()
3091 self.assertTrue(a8.isEqual(DataArrayInt([0,11,22,33,44,55,66,77,88,99,110,121,132,143,154,165])))
3092 self.assertTrue(a9) # no copy here
3093 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3094 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])))
3095 self.assertTrue(a11) # no copy here
3096 a12,a13=mml2.retrieveNumberIdsOnNodes()
3097 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])))
3098 self.assertTrue(a13) # no copy here
3099 for i in xrange(1,2):
3100 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
3103 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
3104 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3105 f.loadArraysIfNecessary()
3106 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3107 self.assertEqual(f.getName(),fieldName1)
3108 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3109 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])
3110 if i==1: vExp.reverse()
3111 vExp.setInfoOnComponents(["zeInfoCell"])
3112 self.assertTrue(v.isEqual(vExp,1e-12))
3114 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
3115 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3116 f.loadArraysIfNecessary()
3117 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3118 self.assertEqual(f.getName(),fieldName0)
3119 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3120 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])
3121 if i==1: vExp.reverse()
3122 vExp.setInfoOnComponents(["zeInfo"])
3123 self.assertTrue(v.isEqual(vExp,1e-12))
3125 ### Testing the 2nd support
3126 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3127 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3129 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3130 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3131 self.assertTrue(not ncc)
3132 self.assertTrue(not ncc)
3133 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))
3134 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9])))
3135 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25])))
3136 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])))
3137 self.assertTrue(a4 is None)
3138 self.assertTrue(a5 is None)
3139 a6,a7=mml2.retrieveFamilyIdsOnCells()
3140 self.assertTrue(a6.isEqual(DataArrayInt([-6,-6,-7,-7,-5,-5])))
3141 self.assertTrue(not a7) # copy here
3142 a8,a9=mml2.retrieveNumberIdsOnCells()
3143 self.assertTrue(a8.isEqual(DataArrayInt([44,55,88,99,132,143])))
3144 self.assertTrue(not a9) # copy here
3145 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3146 self.assertTrue(a10.isEqual(DataArrayInt([1,2,2,3,4,2,3,4,2,3,3,1])))
3147 self.assertTrue(not a11) # copy here
3148 a12,a13=mml2.retrieveNumberIdsOnNodes()
3149 self.assertTrue(a12.isEqual(DataArrayInt([50,60,70,100,110,120,150,160,170,200,210,220])))
3150 self.assertTrue(not a13) # copy here
3152 f=allFMTSLeavesPerCommonSupport1[1][0][0][i]
3153 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3154 f.loadArraysIfNecessary()
3155 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3156 self.assertEqual(f.getName(),fieldName3)
3157 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3158 vExp=DataArrayDouble([1.5811388300842,2.1213203435596,2.5495097567964,2.9154759474227,3.5355339059327,3.807886552932])
3159 if i==1: vExp.reverse()
3160 vExp.setInfoOnComponents(["abcdefg"])
3161 self.assertTrue(v.isEqual(vExp,1e-12))
3163 f=allFMTSLeavesPerCommonSupport1[1][0][1][i]
3164 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3165 f.loadArraysIfNecessary()
3166 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3167 self.assertEqual(f.getName(),fieldName2)
3168 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3169 vExp=DataArrayDouble([1.,1.4142135623731,2.2360679774998,2.,2.2360679774998,2.8284271247462,3.,3.1622776601684,3.605551275464,4.,4.1231056256177,4.4721359549996])
3170 if i==1: vExp.reverse()
3171 vExp.setInfoOnComponents(["zzzz"])
3172 self.assertTrue(v.isEqual(vExp,1e-12))
3177 """ Here the created MED file contains only a mesh. The aim here is to test capability of MEDReader to support no fields.
3178 This test checks nothing but write a MED file to be used by MEDReader tests.
3180 fname="ForMEDReader21.med"
3183 m0=MEDCouplingCMesh("mesh") ; arr=DataArrayDouble(5) ; arr.iota() ; m0.setCoords(arr,arr) ; m0=m0.buildUnstructured()
3184 mm.setMeshAtLevel(0,m0)
3185 grp0=DataArrayInt([5,6,9,10]) ; grp0.setName("Inside2D")
3186 grp1=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15]) ; grp1.setName("Border2D")
3187 grp2=DataArrayInt([2,3,6,7]) ; grp2.setName("LowerRight2D")
3188 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3190 m1=MEDCouplingUMesh(m0.getName(),1) ; m1.setCoords(m0.getCoords()) ; m1.allocateCells()
3191 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],
3192 [10,11],[11,12],[12,13],[13,14]]:
3193 m1.insertNextCell(NORM_SEG2,elt)
3195 mm.setMeshAtLevel(-1,m1)
3196 grp4=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) ; grp4.setName("Border1D")
3197 grp5=DataArrayInt([16,17,18,19,20,21,22,23]) ; grp5.setName("Inside1D")
3198 grp6=DataArrayInt([18,19,22,23]) ; grp6.setName("UpperRight1D")
3199 mm.setGroupsAtLevel(-1,[grp4,grp5,grp6])
3201 grp7=DataArrayInt([1,2,3,6,7,8,11,12,13,16,17,18,21,22,23]) ; grp7.setName("InsideYNode")
3202 grp8=DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; grp8.setName("InsideXNode")
3203 mm.setGroupsAtLevel(1,[grp7,grp8])
3209 """ Use case where a field on nodes (ANodeField) on a mesh defined both in meshdim 2 and meshdim 1.
3210 The only possible geometrical support that suits the field is those with meshdim equal to 1 (-1 in relative).
3212 fname="ForMEDReader22.med"
3213 fieldName0="ANodeField"
3215 coo=DataArrayDouble([(4.,3.),(7.,3.),(2.,5.),(6.,5.),(9.,5.),(4.,7.),(8.,7.),(3.,8.),(9.,8.)])
3216 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])
3217 mm.setMeshAtLevel(0,m0)
3218 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])
3219 m1.insertNextCell(NORM_SEG2,[3,5]) ; m1.insertNextCell(NORM_SEG2,[5,7]) ; m1.insertNextCell(NORM_SEG2,[3,6]) ; m1.insertNextCell(NORM_SEG2,[6,8])
3220 mm.setMeshAtLevel(-1,m1)
3222 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
3223 fmts0.setDtUnit("s")
3226 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1)
3227 f0.setName(fieldName0) ; f0.setTime(*t)
3228 da=DataArrayDouble(9) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
3231 f1ts=MEDFileField1TS()
3232 f1ts.setFieldNoProfileSBT(f0)
3233 fmts0.pushBackTimeStep(f1ts)
3236 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1)
3237 f0.setName(fieldName0) ; f0.setTime(*t)
3238 da=DataArrayDouble(9) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3241 f1ts=MEDFileField1TS()
3242 f1ts.setFieldNoProfileSBT(f0)
3243 fmts0.pushBackTimeStep(f1ts)
3247 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3248 ms=MEDFileMeshes(fname)
3249 fields=MEDFileFields(fname,False)
3250 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3251 allFMTSLeavesToDisplay=[]
3252 for fields in fields_per_mesh:
3253 allFMTSLeavesToDisplay2=[]
3255 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3257 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3259 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3260 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3261 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3262 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3263 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3264 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3265 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3266 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3268 mst=MEDFileMeshStruct.New(ms[0])
3270 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3271 self.assertEqual([NORM_TRI3,NORM_SEG2],fcscp.getGeoTypesAt(0,ms[0]))#contains all cell types of underlying mesh because only nodes with no profiles
3272 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3274 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3275 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3276 self.assertTrue(not ncc)
3277 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))
3278 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,3,3,3,3,3,3,3])))
3279 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,15,18,21,24,27,30])))
3280 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])))
3281 self.assertTrue(a4 is None)
3282 self.assertTrue(a5 is None)
3283 a6,a7=mml2.retrieveFamilyIdsOnCells()
3284 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0])))
3285 self.assertTrue(not a7) # copy here
3286 a8,a9=mml2.retrieveNumberIdsOnCells()
3287 self.assertTrue(not a8)
3288 self.assertTrue(a9) # nocopy here
3289 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3290 self.assertTrue(not a10)
3291 self.assertTrue(a11) # no copy here
3292 a12,a13=mml2.retrieveNumberIdsOnNodes()
3293 self.assertTrue(not a12)
3294 self.assertTrue(a13) # no copy here
3296 f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3297 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3298 f.loadArraysIfNecessary()
3299 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3300 self.assertEqual(f.getName(),fieldName0)
3301 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3302 vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"])
3303 self.assertTrue(v.isEqual(vExp,1e-12))
3305 f=allFMTSLeavesPerCommonSupport1[0][0][0][1]
3306 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3307 f.loadArraysIfNecessary()
3308 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3309 self.assertEqual(f.getName(),fieldName0)
3310 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3311 vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
3312 self.assertTrue(v.isEqual(vExp,1e-12))
3316 """ Non regression test 2219 of modes. Idem than test22 except that here the node field is on profile.
3318 fname="ForMEDReader23.med"
3319 fieldName0="ANodeField"
3321 coo=DataArrayDouble([(4.,3.),(7.,3.),(2.,5.),(6.,5.),(9.,5.),(4.,7.),(8.,7.),(3.,8.),(9.,8.)])
3322 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])
3323 mm.setMeshAtLevel(0,m0)
3324 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])
3325 m1.insertNextCell(NORM_SEG2,[3,5]) ; m1.insertNextCell(NORM_SEG2,[5,7]) ; m1.insertNextCell(NORM_SEG2,[3,6]) ; m1.insertNextCell(NORM_SEG2,[6,8])
3326 mm.setMeshAtLevel(-1,m1)
3327 fmts0=MEDFileFieldMultiTS()
3328 fmts0.setDtUnit("s")
3330 pfl=DataArrayInt([0,1,2,4]) ; pfl.setName("pfl")
3331 pflCell=DataArrayInt([0,1,2]) ; m1Part=m1[pflCell] ; m1Part.zipCoords()
3334 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1Part)
3335 f0.setName(fieldName0) ; f0.setTime(*t)
3336 da=DataArrayDouble(4) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
3339 f1ts=MEDFileField1TS()
3340 f1ts.setFieldProfile(f0,mm,-1,pfl)
3341 fmts0.pushBackTimeStep(f1ts)
3344 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1Part)
3345 f0.setName(fieldName0) ; f0.setTime(*t)
3346 da=DataArrayDouble(4) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3349 f1ts=MEDFileField1TS()
3350 f1ts.setFieldProfile(f0,mm,-1,pfl)
3351 fmts0.pushBackTimeStep(f1ts)
3353 fmts0.write(fname,0)
3354 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3355 ms=MEDFileMeshes(fname)
3356 fields=MEDFileFields(fname,False)
3357 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3358 allFMTSLeavesToDisplay=[]
3359 for fields in fields_per_mesh:
3360 allFMTSLeavesToDisplay2=[]
3362 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3364 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3366 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3367 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3368 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3369 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3370 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3371 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3372 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3373 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3375 mst=MEDFileMeshStruct.New(ms[0])
3377 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3378 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3380 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3381 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3382 self.assertTrue(not ncc)
3383 self.assertTrue(a0.isEqual(DataArrayDouble([(4.,3.,0.),(7.,3.,0.),(2.,5.,0.),(9.,5.,0.)]),1e-12))
3384 self.assertTrue(a1.isEqual(DataArrayByte([3,3,3])))
3385 self.assertTrue(a2.isEqual(DataArrayInt([0,3,6])))
3386 self.assertTrue(a3.isEqual(DataArrayInt([2,2,0,2,0,1,2,1,3])))
3387 self.assertTrue(a4 is None)
3388 self.assertTrue(a5 is None)
3389 a6,a7=mml2.retrieveFamilyIdsOnCells()
3390 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
3391 self.assertTrue(not a7) # copy here
3392 a8,a9=mml2.retrieveNumberIdsOnCells()
3393 self.assertTrue(not a8)
3394 self.assertTrue(a9) # nocopy here
3395 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3396 self.assertTrue(not a10)
3397 self.assertTrue(a11) # no copy here
3398 a12,a13=mml2.retrieveNumberIdsOnNodes()
3399 self.assertTrue(not a12)
3400 self.assertTrue(a13) # no copy here
3402 f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3403 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3404 f.loadArraysIfNecessary()
3405 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3406 self.assertEqual(f.getName(),fieldName0)
3407 vExp=DataArrayDouble(4) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"])
3408 self.assertTrue(v.isEqual(vExp,1e-12))
3410 f=allFMTSLeavesPerCommonSupport1[0][0][0][1]
3411 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3412 f.loadArraysIfNecessary()
3413 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3414 self.assertEqual(f.getName(),fieldName0)
3415 vExp=DataArrayDouble(4) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
3416 self.assertTrue(v.isEqual(vExp,1e-12))
3420 """ Non regression test for cartesian mesh whose the 3rd direction has only one node. It a false 3D mesh.
3422 fname="ForMEDReader24.med"
3423 fieldName0="zeFieldNode"
3424 cmesh=MEDCouplingCMesh("mesh")
3425 arr0=DataArrayDouble([0.,1.1,2.2,3.3,4.4])
3426 arr1=DataArrayDouble([0.,1.4,2.3])
3427 arr2=DataArrayDouble([5.])
3428 cmesh.setCoords(arr0,arr1,arr2)
3429 fmts0=MEDFileFieldMultiTS()
3430 fmts0.setDtUnit("s")
3433 f=MEDCouplingFieldDouble(ON_NODES) ; f.setName(fieldName0)
3435 arr=DataArrayDouble(15) ; arr.setInfoOnComponents(["tutu"]) ; arr.iota()
3438 f1ts=MEDFileField1TS()
3439 f1ts.setFieldNoProfileSBT(f)
3440 fmts0.pushBackTimeStep(f1ts)
3443 arr=DataArrayDouble(15) ; arr.setInfoOnComponents(["tutu"]) ; arr.iota()
3447 f1ts=MEDFileField1TS()
3448 f1ts.setFieldNoProfileSBT(f)
3449 fmts0.pushBackTimeStep(f1ts)
3451 mm=MEDFileCMesh() ; mm.setMesh(cmesh)
3453 fmts0.write(fname,0)
3454 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3455 ms=MEDFileMeshes(fname)
3456 fields=MEDFileFields(fname,False)
3457 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3458 allFMTSLeavesToDisplay=[]
3459 for fields in fields_per_mesh:
3460 allFMTSLeavesToDisplay2=[]
3462 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3464 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3466 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3467 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3468 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3469 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3470 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3471 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3472 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
3473 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
3475 mst=MEDFileMeshStruct.New(ms[0])
3477 fcscp=allFMTSLeavesPerCommonSupport[0][1]
3478 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3480 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
3481 (a,b,c),d=mml2.buildVTUArrays()
3482 self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
3483 self.assertTrue(a.isEqual(arr0,1e-12))
3484 self.assertTrue(b.isEqual(arr1,1e-12))
3485 self.assertTrue(c.isEqual(arr2,1e-12))
3487 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
3488 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3489 f.loadArraysIfNecessary()
3490 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3491 self.assertEqual(f.getName(),fieldName0)
3492 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3493 vExp=DataArrayDouble(15) ; vExp.iota(0) ; vExp.setInfoOnComponents(["tutu"])
3497 self.assertTrue(v.isEqual(vExp,1e-12))
3502 """ A tricky test that reproduces an invalid behaviour
3503 Here a same field is defined both on CELLS and GAUSS_PT, with a profile for each.
3504 The problem appears on array computation when performing CELLS then GAUSS_PT and CELLS again.
3506 fname="ForMEDReader25.med"
3508 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)
3509 m0=MEDCouplingUMesh("mesh",2) ; m0.setCoords(coords)
3511 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
3512 m0.insertNextCell(NORM_QUAD4,[1,4,5,2])
3513 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
3514 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
3515 m0.insertNextCell(NORM_QUAD4,[6,9,10,7])
3516 m0.insertNextCell(NORM_QUAD4,[7,10,11,8])
3517 m.setMeshAtLevel(0,m0)
3518 m1=MEDCouplingUMesh("mesh",1) ; m1.setCoords(coords)
3520 m1.insertNextCell(NORM_SEG2,[10,12])
3521 m1.insertNextCell(NORM_SEG2,[12,13])
3522 m1.insertNextCell(NORM_SEG2,[13,14])
3523 m.setMeshAtLevel(-1,m1)
3524 m.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6]))
3525 m.setFamilyFieldArr(-1,DataArrayInt([-7,-8,-9]))
3526 m.setFamilyFieldArr(1,DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))
3527 m.setRenumFieldArr(0,DataArrayInt([101,102,103,104,105,106]))
3528 m.setRenumFieldArr(-1,DataArrayInt([107,108,109]))
3529 m.setRenumFieldArr(1,DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217]))
3531 fmts=MEDFileFieldMultiTS()
3537 f1ts=MEDFileField1TS()
3538 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name0)
3539 arr=DataArrayDouble([(-1,-11),(-2,-22)]) ; arr.setInfoOnComponents(info0)
3541 pfl0=DataArrayInt([0,1]) ; pfl0.setName(pflName0)
3542 f1ts.setFieldProfile(f,m,-1,pfl0)
3544 f2=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f2.setName(name0)
3545 arr=DataArrayDouble(15) ; arr.iota(1)
3546 arr=DataArrayDouble.Meld(arr,arr+10) ; arr.setInfoOnComponents(info0)
3548 pfl1=DataArrayInt([1,3,5]) ; pfl1.setName(pflName1)
3549 tmp=m0[pfl1] ; f2.setMesh(tmp)
3550 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])
3552 f1ts.setFieldProfile(f2,m,0,pfl1)
3553 fmts.pushBackTimeStep(f1ts)
3557 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3558 ms=MEDFileMeshes(fname)
3559 fields=MEDFileFields(fname,False) # false is absolutely necessary for the test
3560 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3561 allFMTSLeavesToDisplay=[]
3562 for fields in fields_per_mesh:
3563 allFMTSLeavesToDisplay2=[]
3565 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3567 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3569 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3570 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
3571 ### here the test is important !!! Pointers must be different !
3572 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3573 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3574 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3575 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
3576 ### here the test is important !!! Pointers must be different !
3577 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3578 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3579 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3580 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3581 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3582 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
3584 mst=MEDFileMeshStruct.New(ms[0])
3585 # emulate first click
3586 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3587 self.assertEqual([NORM_SEG2],fcscp.getGeoTypesAt(0,ms[0]))
3588 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3590 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3591 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3592 self.assertTrue(not ncc) # copy here because 2D -> 3D
3593 expCoords=coords.changeNbOfComponents(3,0.)
3594 self.assertTrue(a0.isEqual(expCoords,1e-12))
3595 self.assertTrue(a1.isEqual(DataArrayByte([3,3])))
3596 self.assertTrue(a2.isEqual(DataArrayInt([0,3])))
3597 self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
3598 self.assertTrue(a4 is None)
3599 self.assertTrue(a5 is None)
3600 a6,a7=mml2.retrieveFamilyIdsOnCells()
3601 self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
3602 self.assertTrue(not a7) # copy here because profile on cells
3603 a8,a9=mml2.retrieveNumberIdsOnCells()
3604 self.assertTrue(a8.isEqual(DataArrayInt([107,108])))
3605 self.assertTrue(not a9) # copy here because profile on cells
3606 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3607 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3608 self.assertTrue(a11) # no copy here
3609 a12,a13=mml2.retrieveNumberIdsOnNodes()
3610 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3611 self.assertTrue(a13) # no copy here
3612 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3613 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3614 fff0.loadArraysIfNecessary()
3615 self.assertEqual([ON_CELLS],fff0.getTypesOfFieldAvailable())
3616 v=mml.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3617 self.assertEqual(fff0.getName(),name0)
3618 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3619 vExp=DataArrayDouble([(-1,-11),(-2,-22)]) ; vExp.setInfoOnComponents(info0)
3620 self.assertTrue(v.isEqual(vExp,1e-12))
3622 # emulate second click
3623 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3624 self.assertEqual([NORM_QUAD4],fcscp.getGeoTypesAt(0,ms[0]))
3625 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3627 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3628 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3629 self.assertTrue(not ncc) # copy here because 2D -> 3D
3630 expCoords=coords.changeNbOfComponents(3,0.)
3631 self.assertTrue(a0.isEqual(expCoords,1e-12))
3632 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9])))
3633 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10])))
3634 self.assertTrue(a3.isEqual(DataArrayInt([4,1,4,5,2,4,4,7,8,5,4,7,10,11,8])))
3635 self.assertTrue(a4 is None)
3636 self.assertTrue(a5 is None)
3637 a6,a7=mml2.retrieveFamilyIdsOnCells()
3638 self.assertTrue(a6.isEqual(DataArrayInt([-2,-4,-6])))
3639 self.assertTrue(not a7) # copy here because profile on cells
3640 a8,a9=mml2.retrieveNumberIdsOnCells()
3641 self.assertTrue(a8.isEqual(DataArrayInt([102,104,106])))
3642 self.assertTrue(not a9) # copy here because profile on cells
3643 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3644 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3645 self.assertTrue(a11) # no copy here
3646 a12,a13=mml2.retrieveNumberIdsOnNodes()
3647 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3648 self.assertTrue(a13) # no copy here
3649 fff1=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3650 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3651 fff1.loadArraysIfNecessary()
3652 self.assertEqual([ON_GAUSS_PT],fff1.getTypesOfFieldAvailable())
3653 v=mml.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3654 self.assertEqual(fff1.getName(),name0)
3655 self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
3656 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)
3657 self.assertTrue(v.isEqual(vExp,1e-12))
3658 # emulate third click
3659 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3660 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3662 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3663 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3664 self.assertTrue(not ncc) # copy here because 2D -> 3D
3665 expCoords=coords.changeNbOfComponents(3,0.)
3666 self.assertTrue(a0.isEqual(expCoords,1e-12))
3667 self.assertTrue(a1.isEqual(DataArrayByte([3,3])))
3668 self.assertTrue(a2.isEqual(DataArrayInt([0,3])))
3669 self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
3670 self.assertTrue(a4 is None)
3671 self.assertTrue(a5 is None)
3672 a6,a7=mml2.retrieveFamilyIdsOnCells()
3673 self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
3674 self.assertTrue(not a7) # copy here because profile on cells
3675 a8,a9=mml2.retrieveNumberIdsOnCells()
3676 self.assertTrue(a8.isEqual(DataArrayInt([107,108])))
3677 self.assertTrue(not a9) # copy here because profile on cells
3678 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3679 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3680 self.assertTrue(a11) # no copy here
3681 a12,a13=mml2.retrieveNumberIdsOnNodes()
3682 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3683 self.assertTrue(a13) # no copy here
3684 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3685 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3686 fff0.loadArraysIfNecessary()
3687 self.assertEqual([ON_CELLS],fff0.getTypesOfFieldAvailable())
3688 v=mml.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3689 self.assertEqual(fff0.getName(),name0)
3690 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3691 vExp=DataArrayDouble([(-1,-11),(-2,-22)]) ; vExp.setInfoOnComponents(info0)
3692 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3697 """ 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.
3698 For this type of fields the support will contain only vertices.
3700 fname="ForMEDReader26.med"
3701 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.)])
3702 m0=MEDCouplingUMesh("mesh",2)
3704 for elt in [[2,6,3],[6,7,3],[9,6,5],[9,10,6]]:
3705 m0.insertNextCell(NORM_TRI3,elt)
3707 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]]:
3708 m0.insertNextCell(NORM_QUAD4,elt)
3710 m0.setCoords(coords)
3713 mm.setMeshAtLevel(0,m0)
3714 mm.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]))
3715 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3717 f1ts0Node=MEDFileField1TS()
3718 f1ts1Node=MEDFileField1TS()
3719 f1ts2Cell=MEDFileField1TS()
3720 f1ts3Cell=MEDFileField1TS()
3721 f1ts4Cell=MEDFileField1TS()
3722 f1ts5Node=MEDFileField1TS()
3724 pfl0=DataArrayInt([4,5,6,8,9,12]) ; pfl0.setName("pfl0")
3725 pfl1=DataArrayInt([0,1,4,5,7,10]) ; pfl1.setName("pfl1")
3726 pfl2=DataArrayInt([0,1,2,3,4,5,6,7,10,11,14,15]) ; pfl2.setName("pfl2")
3728 f0Node=MEDCouplingFieldDouble(ON_NODES) ; f0Node.setName("f0Node")
3729 arr0=DataArrayDouble(6) ; arr0.iota()
3730 f0Node.setArray(arr0)
3731 f1ts0Node.setFieldProfile(f0Node,mm,0,pfl0)
3733 f1Node=MEDCouplingFieldDouble(ON_NODES) ; f1Node.setName("f1Node")
3734 arr1=DataArrayDouble(6) ; arr1.iota() ; arr1.reverse()
3735 f1Node.setArray(arr1)
3736 f1ts1Node.setFieldProfile(f1Node,mm,0,pfl0)
3738 f2Cell=MEDCouplingFieldDouble(ON_CELLS) ; f2Cell.setName("f2Cell")
3739 arr2=DataArrayDouble([2,3,0,1,4,5])
3740 f2Cell.setArray(arr2)
3741 f1ts2Cell.setFieldProfile(f2Cell,mm,0,pfl1)
3743 f3Cell=MEDCouplingFieldDouble(ON_CELLS) ; f3Cell.setName("f3Cell")
3744 arr3=DataArrayDouble([5,4,3,2,1,0])
3745 f3Cell.setArray(arr3)
3746 f1ts3Cell.setFieldProfile(f3Cell,mm,0,pfl1)
3748 f4Cell=MEDCouplingFieldDouble(ON_CELLS) ; f4Cell.setName("f4Cell")
3749 arr4=DataArrayDouble([2,2,0,1,1,0])
3750 f4Cell.setArray(arr4)
3751 f1ts4Cell.setFieldProfile(f4Cell,mm,0,pfl1)
3753 f5Node=MEDCouplingFieldDouble(ON_NODES) ; f5Node.setName("f5Node")
3754 arr5=DataArrayDouble([0,1,2,3,10,11,13,2,11,1,10,0])
3755 f5Node.setArray(arr5)
3756 f1ts5Node.setFieldProfile(f5Node,mm,0,pfl2)
3759 for f in [f1ts0Node,f1ts1Node,f1ts2Cell,f1ts3Cell,f1ts4Cell,f1ts5Node]:
3760 fmts=MEDFileFieldMultiTS()
3761 fmts.pushBackTimeStep(f)
3766 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3767 ms=MEDFileMeshes(fname)
3768 fields=MEDFileFields(fname,False)
3769 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3770 allFMTSLeavesToDisplay=[]
3771 for fields in fields_per_mesh:
3772 allFMTSLeavesToDisplay2=[]
3774 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3776 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3778 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3779 self.assertEqual(len(allFMTSLeavesToDisplay[0]),6)
3780 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3781 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3782 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),6)
3783 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3784 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3785 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),4)
3786 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)# <- the smart one is here
3788 mst=MEDFileMeshStruct.New(ms[0])
3790 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3791 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3793 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3794 self.assertEqual([3,4,0],mml2.getGeoTypes())
3795 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3796 self.assertTrue(not ncc)
3797 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))
3798 self.assertTrue(a1.isEqual(DataArrayByte([5,9,1])))
3799 self.assertTrue(a2.isEqual(DataArrayInt([0,4,9])))
3800 self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,5])))
3801 self.assertTrue(a4 is None)
3802 self.assertTrue(a5 is None)
3803 a6,a7=mml2.retrieveFamilyIdsOnCells()
3804 self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,13])))
3805 self.assertTrue(not a7) # copy here because profile on cells
3806 a8,a9=mml2.retrieveNumberIdsOnCells()
3807 self.assertTrue(a8 is None)
3808 self.assertTrue(a9) # no copy here because no number field
3809 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3810 self.assertTrue(a10.isEqual(DataArrayInt([5,6,7,9,10,13])))
3811 self.assertTrue(not a11) # copy here
3812 a12,a13=mml2.retrieveNumberIdsOnNodes()
3813 self.assertTrue(a12 is None)
3814 self.assertTrue(a13) # no copy here because no number field
3816 fff0=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3817 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3818 fff0.loadArraysIfNecessary()
3819 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3820 self.assertEqual(fff0.getName(),"f0Node")
3821 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3822 vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
3823 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3825 fff1=allFMTSLeavesPerCommonSupport1[1][0][1][0]
3826 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3827 fff1.loadArraysIfNecessary()
3828 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3829 self.assertEqual(fff1.getName(),"f1Node")
3830 self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
3831 vExp=DataArrayDouble([5.,4.,3.,2.,1.,0.])
3832 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3836 """ This test defines 2 fields f0 and f1 on nodes lying on an unstructured mesh with no cells.
3837 f0 is a field on all nodes. f1 is a partial field on nodes.
3839 fname="ForMEDReader27.med"
3840 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.)])
3841 m0=MEDCouplingUMesh("mesh",2)
3843 m0.setCoords(coords)
3846 mm.setMeshAtLevel(0,m0)
3847 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3849 f1ts0=MEDFileField1TS()
3850 f1ts1=MEDFileField1TS()
3852 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m0) ; f0.setName("f0NoPfl")
3853 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.])
3856 f1ts0.setFieldNoProfileSBT(f0)
3857 self.assertEqual(f1ts0.getMeshName(),"mesh")
3859 pfl1=DataArrayInt([0,1,2,3,4,5,6,8,9,12]) ; pfl1.setName("pfl1")
3860 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setName("f1Pfl")
3861 arr1=DataArrayDouble([3.,2.,1.,0.,2.,1.5,0.,1.,0.,0.2])
3863 f1ts1.setFieldProfile(f1,mm,0,pfl1)
3864 self.assertEqual(f1ts1.getMeshName(),"mesh")
3867 fmts0=MEDFileFieldMultiTS()
3868 fmts0.pushBackTimeStep(f1ts0)
3869 fmts1=MEDFileFieldMultiTS()
3870 fmts1.pushBackTimeStep(f1ts1)
3871 fs.pushField(fmts0) ; fs.pushField(fmts1)
3872 self.assertEqual(fs[0].getMeshName(),"mesh")
3873 self.assertEqual(fs[1].getMeshName(),"mesh")
3876 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3877 ms=MEDFileMeshes(fname)
3878 fields=MEDFileFields(fname,False)
3879 self.assertEqual(fields[0].getMeshName(),"mesh")
3880 self.assertEqual(fields[1].getMeshName(),"mesh")
3881 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3882 self.assertEqual(fields_per_mesh[0][0].getMeshName(),"mesh")
3883 self.assertEqual(fields_per_mesh[0][1].getMeshName(),"mesh")
3884 allFMTSLeavesToDisplay=[]
3885 for fields in fields_per_mesh:
3886 allFMTSLeavesToDisplay2=[]
3888 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
3890 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3892 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3893 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
3894 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3895 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3896 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
3897 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3898 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3899 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3900 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
3902 mst=MEDFileMeshStruct.New(ms[0])
3904 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3905 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3907 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3908 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3909 self.assertTrue(ncc)
3910 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))
3911 self.assertTrue(a1.isEqual(DataArrayByte([])))
3912 self.assertTrue(a2.isEqual(DataArrayInt([])))
3913 self.assertTrue(a3.isEqual(DataArrayInt([])))
3914 self.assertTrue(a4 is None)
3915 self.assertTrue(a5 is None)
3917 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3918 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3919 fff0.loadArraysIfNecessary()
3920 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3921 self.assertEqual(fff0.getName(),"f0NoPfl")
3922 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3923 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])
3924 self.assertTrue(v.isEqual(vExp,1e-12))
3926 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3927 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3929 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3930 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3931 self.assertTrue(not ncc)
3932 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))
3933 self.assertTrue(a1.isEqual(DataArrayByte([])))
3934 self.assertTrue(a2.isEqual(DataArrayInt([])))
3935 self.assertTrue(a3.isEqual(DataArrayInt([])))
3936 self.assertTrue(a4 is None)
3937 self.assertTrue(a5 is None)
3938 fff1=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3939 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3940 fff1.loadArraysIfNecessary()
3941 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3942 self.assertEqual(fff1.getName(),"f1Pfl")
3943 self.assertNotEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer()) # pointers are not equal because Profile
3944 vExp=DataArrayDouble([3.,2.,1.,0.,2.,1.5,0.,1.,0.,0.2])
3945 self.assertTrue(v.isEqual(vExp,1e-12))
3949 """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh whith cells including NORM_POINT1.
3950 Both f0 and f1 are on NODES and f2 and f3 are on cells. f1 and f2 share the same support.
3951 f0 is on a nodal support that is not matchable with any cells (including NORM_POINT1)
3952 This test is a more aggressive version of test26.
3954 fname="ForMEDReader28.med"
3955 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.)])
3956 m0=MEDCouplingUMesh("mesh",2)
3958 for elt in [[2,6,3],[6,7,3],[9,6,5],[9,10,6]]:
3959 m0.insertNextCell(NORM_TRI3,elt)
3961 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]]:
3962 m0.insertNextCell(NORM_QUAD4,elt)
3964 m0.setCoords(coords)
3965 m2=MEDCouplingUMesh("mesh",0) ; m2.setCoords(coords)
3967 for elt in [[8],[13]]:
3968 m2.insertNextCell(NORM_POINT1,elt)
3972 mm.setMeshAtLevel(0,m0)
3973 mm.setMeshAtLevel(-2,m2)
3974 mm.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]))
3975 mm.setFamilyFieldArr(-2,DataArrayInt([-12,-13]))
3976 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3978 f1ts0Node=MEDFileField1TS()
3979 f1ts1Node=MEDFileField1TS()
3980 f1ts2Cell=MEDFileField1TS()
3981 f1ts3Cell=MEDFileField1TS()
3983 pfl0=DataArrayInt([4,5,6,8,9,12]) ; pfl0.setName("pfl0")
3984 pfl1=DataArrayInt([0,1,4,5,7,10]) ; pfl1.setName("pfl1")
3985 pfl2=DataArrayInt([0,1,2,3,4,5,6,7,10,11,14,15]) ; pfl2.setName("pfl2")
3987 f0Node=MEDCouplingFieldDouble(ON_NODES) ; f0Node.setName("f0Node")
3988 arr0=DataArrayDouble(6) ; arr0.iota()
3989 f0Node.setArray(arr0)
3990 f1ts0Node.setFieldProfile(f0Node,mm,0,pfl0)
3992 f1Node=MEDCouplingFieldDouble(ON_NODES) ; f1Node.setName("f1Node")
3993 arr1=DataArrayDouble(12) ; arr1.iota() ; arr1.reverse()
3994 f1Node.setArray(arr1)
3995 f1ts1Node.setFieldProfile(f1Node,mm,0,pfl2)
3997 f2Cell=MEDCouplingFieldDouble(ON_CELLS) ; f2Cell.setName("f2Cell")
3998 arr2=DataArrayDouble([2,3,0,1,4,5])
3999 f2Cell.setArray(arr2)
4000 f1ts2Cell.setFieldProfile(f2Cell,mm,0,pfl1)
4002 f3Cell=MEDCouplingFieldDouble(ON_CELLS) ; f3Cell.setName("f3Cell")
4003 arr3=DataArrayDouble([5,4,3,2,1,0]) ; f3Cell.setArray(arr3)
4004 f1ts3Cell.setFieldProfile(f3Cell,mm,0,pfl1)
4006 arr3=DataArrayDouble([-1.1,-3.1]) ; f3Cell.setArray(arr3)
4007 f1ts3Cell.setFieldNoProfileSBT(f3Cell)
4010 for f in [f1ts0Node,f1ts1Node,f1ts2Cell,f1ts3Cell]:
4011 fmts=MEDFileFieldMultiTS()
4012 fmts.pushBackTimeStep(f)
4017 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4018 ms=MEDFileMeshes(fname)
4019 fields=MEDFileFields(fname,False)
4020 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4021 allFMTSLeavesToDisplay=[]
4022 for fields in fields_per_mesh:
4023 allFMTSLeavesToDisplay2=[]
4025 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
4027 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4029 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4030 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
4031 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4032 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4033 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
4034 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4035 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),3)
4036 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
4037 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
4038 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[2][0]),1)
4040 mst=MEDFileMeshStruct.New(ms[0])
4042 fcscp=allFMTSLeavesPerCommonSupport1[2][1]
4043 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4045 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4046 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4047 self.assertTrue(not ncc)
4048 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))
4049 self.assertTrue(a1.isEqual(DataArrayByte([5,9,1,1])))
4050 self.assertTrue(a2.isEqual(DataArrayInt([0,4,9,11])))
4051 self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,3,1,5])))
4052 self.assertTrue(a4 is None)
4053 self.assertTrue(a5 is None)
4054 a6,a7=mml2.retrieveFamilyIdsOnCells()
4055 self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,-12,13])))
4056 self.assertTrue(not a7) # copy here because profile on cells
4057 a8,a9=mml2.retrieveNumberIdsOnCells()
4058 self.assertTrue(a8 is None)
4059 self.assertTrue(a9) # no copy here because no number field
4060 a10,a11=mml2.retrieveFamilyIdsOnNodes()
4061 self.assertTrue(a10.isEqual(DataArrayInt([5,6,7,9,10,13])))
4062 self.assertTrue(not a11) # copy here
4063 a12,a13=mml2.retrieveNumberIdsOnNodes()
4064 self.assertTrue(a12 is None)
4065 self.assertTrue(a13) # no copy here because no number field
4067 fff0=allFMTSLeavesPerCommonSupport1[2][0][0][0]
4068 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
4069 fff0.loadArraysIfNecessary()
4070 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
4071 self.assertEqual(fff0.getName(),"f0Node")
4072 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4073 vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
4074 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
4076 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4077 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4079 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4080 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4081 self.assertTrue(not ncc)
4082 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))
4083 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9,9])))
4084 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18,23])))
4085 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])))
4086 self.assertTrue(a4 is None)
4087 self.assertTrue(a5 is None)
4088 fff1=allFMTSLeavesPerCommonSupport1[0][0][0][0]
4089 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
4090 fff1.loadArraysIfNecessary()
4091 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
4092 self.assertEqual(fff1.getName(),"f2Cell")
4093 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4094 vExp=DataArrayDouble([2,3,0,1,4,5])
4095 self.assertTrue(v.isEqual(vExp,1e-12))
4096 fff2=allFMTSLeavesPerCommonSupport1[0][0][1][0]
4097 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff2,mst)
4098 fff2.loadArraysIfNecessary()
4099 v=mml2.buildDataArray(fsst,fields,fff2.getUndergroundDataArray())
4100 self.assertEqual(fff2.getName(),"f1Node")
4101 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4102 vExp=DataArrayDouble([11,10,9,8,7,6,5,4,3,2,1,0])
4103 self.assertTrue(v.isEqual(vExp,1e-12))
4105 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
4106 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4108 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4109 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4110 self.assertTrue(ncc)# here all the 16 nodes are taken
4111 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))
4112 self.assertTrue(a1.isEqual(DataArrayByte([1,1,5,5,9,9,9,9])))
4113 self.assertTrue(a2.isEqual(DataArrayInt([0,2,4,8,12,17,22,27])))
4114 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])))
4115 self.assertTrue(a4 is None)
4116 self.assertTrue(a5 is None)
4117 fff3=allFMTSLeavesPerCommonSupport1[1][0][0][0]
4118 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff3,mst)
4119 fff3.loadArraysIfNecessary()
4120 v=mml2.buildDataArray(fsst,fields,fff3.getUndergroundDataArray())
4121 self.assertEqual(fff3.getName(),"f3Cell")
4122 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4123 vExp=DataArrayDouble([-1.1,-3.1,5,4,3,2,1,0])
4124 self.assertTrue(v.isEqual(vExp,1e-12))