1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2021 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, or (at your option) any later version.
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 (EDF R&D)
22 from MEDLoader import *
24 from math import pi,e,sqrt
25 from MEDLoaderDataForTest import WriteInTmpDir
27 class MEDLoaderTest4(unittest.TestCase):
29 Test series to emulate the future MEDReader plugin for PARAVIS.
34 This test is the most simple one. One time serie of one field with only cell fields with no profiles.
35 The only "difficulty" is that the cell field is lying on different levels (2D and 1D) to maximize the compatibility with ParaVIS.
37 fname="ForMEDReader1.med"
38 # building a mesh containing 4 tri3 + 5 quad4
39 tri=MEDCouplingUMesh("tri",2)
40 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
41 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
42 tris = [tri.deepCopy() for i in range(4)]
43 for i,elt in enumerate(tris): elt.translate([i,0])
44 tris=MEDCouplingUMesh.MergeUMeshes(tris)
45 quad=MEDCouplingUMesh("quad",2)
46 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
47 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
48 quads = [quad.deepCopy() for i in range(5)]
49 for i,elt in enumerate(quads): elt.translate([5+i,0])
50 quads=MEDCouplingUMesh.MergeUMeshes(quads)
51 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
52 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
53 m1=m.buildDescendingConnectivity()[0]
54 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
55 fam=DataArrayInt(9) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam)
56 fam=DataArrayInt(32) ; fam.iota(20) ; mm.setFamilyFieldArr(-1,fam) ; del fam
57 num=DataArrayInt(9) ; num.iota(100) ; mm.setRenumFieldArr(0,num)
58 num=DataArrayInt(32) ; num.iota(120) ; mm.setRenumFieldArr(-1,num) ; del num
61 fs=MEDFileFieldMultiTS()
65 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
66 fCell0.setName(fieldName) ; fCell0.setMesh(m)
67 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
68 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
69 fCell0.checkConsistencyLight()
70 f.setFieldNoProfileSBT(fCell0)
71 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
72 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
73 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
74 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
75 fCell1.checkConsistencyLight()
76 f.setFieldNoProfileSBT(fCell1)
77 fs.pushBackTimeStep(f)
81 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
82 fCell0.setName(fieldName) ; fCell0.setMesh(m)
83 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
84 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
85 fCell0.checkConsistencyLight()
86 f.setFieldNoProfileSBT(fCell0)
88 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
89 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
90 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
91 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
92 fCell1.checkConsistencyLight()
93 f.setFieldNoProfileSBT(fCell1)
94 fs.pushBackTimeStep(f)
98 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
99 fCell0.setName(fieldName) ; fCell0.setMesh(m)
100 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
101 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
102 fCell0.checkConsistencyLight()
103 f.setFieldNoProfileSBT(fCell0)
105 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
106 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
107 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
108 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
109 fCell1.checkConsistencyLight()
110 f.setFieldNoProfileSBT(fCell1)
111 fs.pushBackTimeStep(f)
116 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
117 fCell0.setName(fieldName) ; fCell0.setMesh(m)
118 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
119 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
120 fCell0.checkConsistencyLight()
121 f.setFieldNoProfileSBT(fCell0)
123 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
124 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
125 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
126 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
127 fCell1.checkConsistencyLight()
128 f.setFieldNoProfileSBT(fCell1)
130 fs.pushBackTimeStep(f)
135 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
136 fCell0.setName(fieldName) ; fCell0.setMesh(m)
137 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
138 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
139 fCell0.checkConsistencyLight()
140 f.setFieldNoProfileSBT(fCell0)
142 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
143 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
144 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
145 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
146 fCell1.checkConsistencyLight()
147 f.setFieldNoProfileSBT(fCell1)
148 fs.pushBackTimeStep(f)
151 a0Exp=mm.getCoords().deepCopy()
152 del m,m1,mm,fs,f,fCell0,fCell1
153 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
154 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
155 fields=MEDFileFields(fname,False) # False is important to not read the values
156 fields.removeFieldsWithoutAnyTimeStep()
157 refMem=fields.getHeapMemorySize()
158 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
159 allFMTSLeavesToDisplay=[]
160 for fields in fields_per_mesh:
161 allFMTSLeavesToDisplay2=[]
163 tmp=fmts.splitDiscretizations()
165 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
167 allFMTSLeavesToDisplay2+=tmp
169 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
171 self.assertEqual(len(allFMTSLeavesToDisplay),1)
172 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
173 for fmts in allFMTSLeavesToDisplay[0]:
174 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
176 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
177 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
178 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
179 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
181 mst=MEDFileMeshStruct.New(ms[0])
182 fcscp=allFMTSLeavesPerCommonSupport[0][1]
183 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
185 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
186 for i in range(1, 5):
187 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
189 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
190 self.assertTrue(not ncc)
191 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
192 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])))
193 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])))
194 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])))
195 self.assertTrue(a4 is None)
196 self.assertTrue(a5 is None)
197 a6,a7=mml2.retrieveFamilyIdsOnCells()
198 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])))
199 self.assertTrue(not a7)
200 a8,a9=mml2.retrieveNumberIdsOnCells()
201 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])))
202 self.assertTrue(not a9)
203 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
205 fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst)
206 fields[0][i].loadArraysIfNecessary()
207 tmpMem=fields.getHeapMemorySize()
208 self.assertTrue(tmpMem-refMem>=41*2*8)
210 v=mml.buildDataArray(fsst,fields,fields[0][i].getUndergroundDataArray())
211 self.assertEqual(v.getHiddenCppPointer(),fields[0][i].getUndergroundDataArray().getHiddenCppPointer())
212 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
213 self.assertTrue(v.isEqual(vExp,1e-12))
220 One time serie of one field with cell and node discretization in the same field with no profiles.
221 Here as there is no profile only one VTK support is requested.
223 fname="ForMEDReader2.med"
224 # building a mesh containing 4 tri3 + 5 quad4
225 tri=MEDCouplingUMesh("tri",2)
226 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
227 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
228 tris = [tri.deepCopy() for i in range(4)]
229 for i,elt in enumerate(tris): elt.translate([i,0])
230 tris=MEDCouplingUMesh.MergeUMeshes(tris)
231 quad=MEDCouplingUMesh("quad",2)
232 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
233 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
234 quads = [quad.deepCopy() for i in range(5)]
235 for i,elt in enumerate(quads): elt.translate([5+i,0])
236 quads=MEDCouplingUMesh.MergeUMeshes(quads)
237 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
238 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
239 m1=m.buildDescendingConnectivity()[0]
240 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
243 fs=MEDFileFieldMultiTS()
247 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
248 fCell0.setName(fieldName) ; fCell0.setMesh(m)
249 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
250 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
251 fCell0.checkConsistencyLight()
252 f.setFieldNoProfileSBT(fCell0)
253 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
254 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
255 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
256 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
257 fCell1.checkConsistencyLight()
258 f.setFieldNoProfileSBT(fCell1)
260 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
261 fNode.setName(fieldName) ; fNode.setMesh(m1)
262 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2)
263 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
264 fNode.checkConsistencyLight()
265 f.setFieldNoProfileSBT(fNode)
266 fs.pushBackTimeStep(f)
270 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
271 fCell0.setName(fieldName) ; fCell0.setMesh(m)
272 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
273 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
274 fCell0.checkConsistencyLight()
275 f.setFieldNoProfileSBT(fCell0)
277 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
278 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
279 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
280 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
281 fCell1.checkConsistencyLight()
282 f.setFieldNoProfileSBT(fCell1)
284 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
285 fNode.setName(fieldName) ; fNode.setMesh(m1)
286 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
287 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
288 fNode.checkConsistencyLight()
289 f.setFieldNoProfileSBT(fNode)
290 fs.pushBackTimeStep(f)
294 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
295 fNode.setName(fieldName) ; fNode.setMesh(m1)
296 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2)
297 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
298 fNode.checkConsistencyLight()
299 f.setFieldNoProfileSBT(fNode)
301 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
302 fCell0.setName(fieldName) ; fCell0.setMesh(m)
303 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
304 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
305 fCell0.checkConsistencyLight()
306 f.setFieldNoProfileSBT(fCell0)
308 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
309 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
310 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
311 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
312 fCell1.checkConsistencyLight()
313 f.setFieldNoProfileSBT(fCell1)
314 fs.pushBackTimeStep(f)
319 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
320 fCell0.setName(fieldName) ; fCell0.setMesh(m)
321 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
322 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
323 fCell0.checkConsistencyLight()
324 f.setFieldNoProfileSBT(fCell0)
326 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
327 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
328 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
329 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
330 fCell1.checkConsistencyLight()
331 f.setFieldNoProfileSBT(fCell1)
333 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
334 fNode.setName(fieldName) ; fNode.setMesh(m1)
335 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
336 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
337 fNode.checkConsistencyLight()
338 f.setFieldNoProfileSBT(fNode)
340 fs.pushBackTimeStep(f)
345 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
346 fCell0.setName(fieldName) ; fCell0.setMesh(m)
347 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
348 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
349 fCell0.checkConsistencyLight()
350 f.setFieldNoProfileSBT(fCell0)
352 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
353 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
354 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
355 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
356 fCell1.checkConsistencyLight()
357 f.setFieldNoProfileSBT(fCell1)
359 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
360 fNode.setName(fieldName) ; fNode.setMesh(m1)
361 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2)
362 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
363 fNode.checkConsistencyLight()
364 f.setFieldNoProfileSBT(fNode)
366 fs.pushBackTimeStep(f)
369 a0Exp=mm.getCoords().deepCopy()
370 del m,m1,mm,fs,f,fCell0,fCell1
371 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
372 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
373 fields=MEDFileFields(fname,False)
374 fields.removeFieldsWithoutAnyTimeStep()
375 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
376 allFMTSLeavesToDisplay=[]
377 for fields in fields_per_mesh:
378 allFMTSLeavesToDisplay2=[]
380 tmp=fmts.splitDiscretizations()
382 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
384 allFMTSLeavesToDisplay2+=tmp
386 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
388 self.assertEqual(len(allFMTSLeavesToDisplay),1)
389 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
390 for fmts in allFMTSLeavesToDisplay[0]:
391 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
393 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
394 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
395 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
396 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
397 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
398 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
400 mst=MEDFileMeshStruct.New(ms[0])
401 fcscp=allFMTSLeavesPerCommonSupport[0][1]
402 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
404 assert isinstance(mml2,MEDUMeshMultiLev)
405 for i in range(1, 5):
406 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
408 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
409 self.assertTrue(not ncc)
410 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
411 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])))
412 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])))
413 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])))
414 self.assertTrue(a4 is None)
415 self.assertTrue(a5 is None)
416 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
419 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
420 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
421 f.loadArraysIfNecessary()
422 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
423 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
424 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
425 self.assertTrue(v.isEqual(vExp,1e-12))
428 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
429 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
430 f.loadArraysIfNecessary()
431 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
432 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
433 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
434 self.assertTrue(v.isEqual(vExp,1e-12))
440 """ 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.
441 So two time step series on the same field. No profile here neither on cells nor on nodes.
443 fname="ForMEDReader3.med"
444 # building a mesh containing 4 tri3 + 5 quad4
445 tri=MEDCouplingUMesh("tri",2)
446 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
447 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
448 tris = [tri.deepCopy() for i in range(4)]
449 for i,elt in enumerate(tris): elt.translate([i,0])
450 tris=MEDCouplingUMesh.MergeUMeshes(tris)
451 quad=MEDCouplingUMesh("quad",2)
452 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
453 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
454 quads = [quad.deepCopy() for i in range(5)]
455 for i,elt in enumerate(quads): elt.translate([5+i,0])
456 quads=MEDCouplingUMesh.MergeUMeshes(quads)
457 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
458 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
459 m1=m.buildDescendingConnectivity()[0]
460 mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
463 fs=MEDFileFieldMultiTS()
464 ##### Time step 0 on cells
467 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
468 fCell0.setName(fieldName) ; fCell0.setMesh(m)
469 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
470 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
471 fCell0.checkConsistencyLight()
472 f.setFieldNoProfileSBT(fCell0)
473 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
474 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
475 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
476 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
477 fCell1.checkConsistencyLight()
478 f.setFieldNoProfileSBT(fCell1)
479 fs.pushBackTimeStep(f)
480 ##### Time step 1 on nodes
483 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
484 fNode.setName(fieldName) ; fNode.setMesh(m1)
485 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
486 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
487 fNode.checkConsistencyLight()
488 f.setFieldNoProfileSBT(fNode)
489 fs.pushBackTimeStep(f)
490 ##### Time step 2 on cells
493 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
494 fCell0.setName(fieldName) ; fCell0.setMesh(m)
495 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
496 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
497 fCell0.checkConsistencyLight()
498 f.setFieldNoProfileSBT(fCell0)
500 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
501 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
502 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
503 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
504 fCell1.checkConsistencyLight()
505 f.setFieldNoProfileSBT(fCell1)
506 fs.pushBackTimeStep(f)
507 ##### Time step 3 on nodes
510 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
511 fNode.setName(fieldName) ; fNode.setMesh(m1)
512 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
513 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
514 fNode.checkConsistencyLight()
515 f.setFieldNoProfileSBT(fNode)
516 fs.pushBackTimeStep(f)
520 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
521 fCell0.setName(fieldName) ; fCell0.setMesh(m)
522 arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
523 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
524 fCell0.checkConsistencyLight()
525 f.setFieldNoProfileSBT(fCell0)
527 fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
528 fCell1.setName(fieldName) ; fCell1.setMesh(m1)
529 arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
530 fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
531 fCell1.checkConsistencyLight()
532 f.setFieldNoProfileSBT(fCell1)
534 fs.pushBackTimeStep(f)
537 a0Exp=mm.getCoords().deepCopy()
538 del m,m1,mm,fs,f,fCell0,fCell1
539 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
540 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
541 fields=MEDFileFields(fname,False)
542 fields.removeFieldsWithoutAnyTimeStep()
543 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
544 allFMTSLeavesToDisplay=[]
545 for fields in fields_per_mesh:
546 allFMTSLeavesToDisplay2=[]
548 tmp=fmts.splitDiscretizations()
550 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
552 allFMTSLeavesToDisplay2+=tmp
554 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
556 self.assertEqual(len(allFMTSLeavesToDisplay),1)
557 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
558 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
559 self.assertEqual(len(allFMTSLeavesPerTimeSeries),2) # two time series here : one for the cells, the second one for the nodes
560 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
561 self.assertEqual(len(allFMTSLeavesPerTimeSeries[1]),1)
562 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
563 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
564 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
566 mst=MEDFileMeshStruct.New(ms[0])
567 fcscp=allFMTSLeavesPerCommonSupport[0][1] # start with the cells
568 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
570 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
571 for i in range(1, 3):
572 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
574 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
575 self.assertTrue(not ncc)
576 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
577 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])))
578 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])))
579 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])))
582 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
585 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
586 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
587 f.loadArraysIfNecessary()
588 self.assertEqual(f.getName(),"zeField")
589 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
590 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
591 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
592 self.assertTrue(v.isEqual(vExp,1e-12))
595 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[1],ms[ms.getMeshesNames()[0]])
596 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
597 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
598 fcscp=allFMTSLeavesPerCommonSupport[0][1]
599 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
601 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
602 for i in range(1, 2):
603 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
605 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
606 self.assertTrue(not ncc)
607 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
608 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])))
609 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])))
610 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])))
611 self.assertTrue(a4 is None)
612 self.assertTrue(a5 is None)
613 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
615 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
616 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
617 f.loadArraysIfNecessary()
618 self.assertEqual(f.getName(),"zeField")
619 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
620 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
621 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
622 self.assertTrue(v.isEqual(vExp,1e-12))
628 """ This test defines 3 fields on nodes on the same mesh. All of these fields have no profile.
630 fname="ForMEDReader4.med"
631 # building a mesh containing 4 tri3 + 5 quad4
632 tri=MEDCouplingUMesh("tri",2)
633 tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
634 tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
635 tris = [tri.deepCopy() for i in range(4)]
636 for i,elt in enumerate(tris): elt.translate([i,0])
637 tris=MEDCouplingUMesh.MergeUMeshes(tris)
638 quad=MEDCouplingUMesh("quad",2)
639 quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
640 quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
641 quads = [quad.deepCopy() for i in range(5)]
642 for i,elt in enumerate(quads): elt.translate([5+i,0])
643 quads=MEDCouplingUMesh.MergeUMeshes(quads)
644 m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
645 m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
646 mm=MEDFileUMesh() ; mm.setMeshes([m])
648 fieldName1="zeField1"
649 fieldName2="zeField2"
650 fieldName3="zeField3"
651 fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
655 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
656 fNode.setName(fieldName1) ; fNode.setMesh(m)
657 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
658 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
659 fNode.checkConsistencyLight()
660 f.setFieldNoProfileSBT(fNode)
661 fs1.pushBackTimeStep(f)
664 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
665 fNode.setName(fieldName2) ; fNode.setMesh(m)
666 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
667 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
668 fNode.checkConsistencyLight()
669 f.setFieldNoProfileSBT(fNode)
670 fs2.pushBackTimeStep(f)
673 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
674 fNode.setName(fieldName3) ; fNode.setMesh(m)
675 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
676 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
677 fNode.checkConsistencyLight()
678 f.setFieldNoProfileSBT(fNode)
679 fs3.pushBackTimeStep(f)
683 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
684 fNode.setName(fieldName1) ; fNode.setMesh(m)
685 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
686 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
687 fNode.checkConsistencyLight()
688 f.setFieldNoProfileSBT(fNode)
689 fs1.pushBackTimeStep(f)
692 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
693 fNode.setName(fieldName2) ; fNode.setMesh(m)
694 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
695 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
696 fNode.checkConsistencyLight()
697 f.setFieldNoProfileSBT(fNode)
698 fs2.pushBackTimeStep(f)
701 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
702 fNode.setName(fieldName3) ; fNode.setMesh(m)
703 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
704 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
705 fNode.checkConsistencyLight()
706 f.setFieldNoProfileSBT(fNode)
707 fs3.pushBackTimeStep(f)
711 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
712 fNode.setName(fieldName1) ; fNode.setMesh(m)
713 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
714 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
715 fNode.checkConsistencyLight()
716 f.setFieldNoProfileSBT(fNode)
717 fs1.pushBackTimeStep(f)
720 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
721 fNode.setName(fieldName2) ; fNode.setMesh(m)
722 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
723 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
724 fNode.checkConsistencyLight()
725 f.setFieldNoProfileSBT(fNode)
726 fs2.pushBackTimeStep(f)
729 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
730 fNode.setName(fieldName3) ; fNode.setMesh(m)
731 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
732 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
733 fNode.checkConsistencyLight()
734 f.setFieldNoProfileSBT(fNode)
735 fs3.pushBackTimeStep(f)
739 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
740 fNode.setName(fieldName1) ; fNode.setMesh(m)
741 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
742 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
743 fNode.checkConsistencyLight()
744 f.setFieldNoProfileSBT(fNode)
745 fs1.pushBackTimeStep(f)
748 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
749 fNode.setName(fieldName2) ; fNode.setMesh(m)
750 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
751 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
752 fNode.checkConsistencyLight()
753 f.setFieldNoProfileSBT(fNode)
754 fs2.pushBackTimeStep(f)
757 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
758 fNode.setName(fieldName3) ; fNode.setMesh(m)
759 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
760 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
761 fNode.checkConsistencyLight()
762 f.setFieldNoProfileSBT(fNode)
763 fs3.pushBackTimeStep(f)
767 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
768 fNode.setName(fieldName1) ; fNode.setMesh(m)
769 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
770 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
771 fNode.checkConsistencyLight()
772 f.setFieldNoProfileSBT(fNode)
773 fs1.pushBackTimeStep(f)
776 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
777 fNode.setName(fieldName2) ; fNode.setMesh(m)
778 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
779 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
780 fNode.checkConsistencyLight()
781 f.setFieldNoProfileSBT(fNode)
782 fs2.pushBackTimeStep(f)
785 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
786 fNode.setName(fieldName3) ; fNode.setMesh(m)
787 arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
788 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
789 fNode.checkConsistencyLight()
790 f.setFieldNoProfileSBT(fNode)
791 fs3.pushBackTimeStep(f)
794 fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
795 a0Exp=mm.getCoords().deepCopy()
796 del m,mm,fs1,fs2,fs3,f,fNode
797 ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
798 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
799 fields=MEDFileFields(fname,False)
800 fields.removeFieldsWithoutAnyTimeStep()
801 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
802 allFMTSLeavesToDisplay=[]
803 for fields in fields_per_mesh:
804 allFMTSLeavesToDisplay2=[]
806 tmp=fmts.splitDiscretizations()
808 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
810 allFMTSLeavesToDisplay2+=tmp
812 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
814 self.assertEqual(len(allFMTSLeavesToDisplay),1)
815 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
816 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
817 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
818 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
819 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
820 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
821 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
823 mst=MEDFileMeshStruct.New(ms[0])
824 fcscp=allFMTSLeavesPerCommonSupport[0][1]
825 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
826 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
827 fcscp=allFMTSLeavesPerCommonSupport[0][1]
828 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
830 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
831 for i in range(1, 5):
832 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
834 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
835 self.assertTrue(not ncc)
836 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
837 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
838 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,21,26,31,36])))
839 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])))
840 self.assertTrue(a4 is None)
841 self.assertTrue(a5 is None)
842 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
843 # test all the time steps of the 1/1 time step serie, on field 1
845 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
846 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
847 f.loadArraysIfNecessary()
848 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
849 self.assertEqual(f.getName(),fieldName1)
850 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
851 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
852 self.assertTrue(v.isEqual(vExp,1e-12))
854 # test all the time steps of the 1/1 time step serie, on field 2
856 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
857 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
858 f.loadArraysIfNecessary()
859 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
860 self.assertEqual(f.getName(),fieldName2)
861 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
862 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
863 self.assertTrue(v.isEqual(vExp,1e-12))
865 # test all the time steps of the 1/1 time step serie, on field 3
867 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
868 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
869 f.loadArraysIfNecessary()
870 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
871 self.assertEqual(f.getName(),fieldName3)
872 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
873 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
874 self.assertTrue(v.isEqual(vExp,1e-12))
880 """ 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
881 mesh lies on a different mesh.
883 fname="ForMEDReader5.med"
884 # building a mesh containing 6 tri3 + 5 quad4
885 m=MEDCouplingUMesh("mesh",2)
886 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]"])
889 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])
890 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
891 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])
892 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
893 mm=MEDFileUMesh() ; mm.setMeshes([m])
894 fam=DataArrayInt(11) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
895 num=DataArrayInt(11) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
897 fieldName1="zeField1" ; pfl1=DataArrayInt([0,1,2,3,4,5]) ; pfl1.setName("pfl1") # on cells
898 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,13,14]) ; pfl2.setName("pfl2") # on nodes
899 fieldName3="zeField3" ; pfl3=DataArrayInt([0,1,2,3,4,5,9,10]) ; pfl3.setName("pfl3") # on cells but different support
900 fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
904 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
905 fNode.setName(fieldName1)
906 arr=DataArrayDouble(2*6) ; arr.iota(0+1000*i) ; arr.rearrange(2)
907 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
908 f.setFieldProfile(fNode,mm,0,pfl1)
909 fs1.pushBackTimeStep(f)
912 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
913 fNode.setName(fieldName2)
914 arr=DataArrayDouble(2*8) ; arr.iota(100+1000*i) ; arr.rearrange(2)
915 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
916 f.setFieldProfile(fNode,mm,0,pfl2)
917 fs2.pushBackTimeStep(f)
920 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
921 fNode.setName(fieldName3)
922 arr=DataArrayDouble(2*8) ; arr.iota(200+1000*i) ; arr.rearrange(2)
923 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
924 f.setFieldProfile(fNode,mm,0,pfl3)
925 fs3.pushBackTimeStep(f)
928 fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
929 a0Exp=mm.getCoords().deepCopy()
930 del m,mm,fs1,fs2,fs3,f,fNode
931 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
932 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
933 fields=MEDFileFields(fname,False)
934 fields.removeFieldsWithoutAnyTimeStep()
935 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
936 allFMTSLeavesToDisplay=[]
937 for fields in fields_per_mesh:
938 allFMTSLeavesToDisplay2=[]
940 tmp=fmts.splitDiscretizations()
942 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
944 allFMTSLeavesToDisplay2+=tmp
946 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
948 self.assertEqual(len(allFMTSLeavesToDisplay),1)
949 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
950 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
951 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
952 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
953 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
954 ms[0].getDirectUndergroundSingleGeoTypeMeshes(0)
955 self.assertEqual(len(allFMTSLeavesPerCommonSupport),2) # 2 support here
956 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
957 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
959 mst=MEDFileMeshStruct.New(ms[0])
960 fcscp=allFMTSLeavesPerCommonSupport[0][1]
961 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
963 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
964 for i in range(1, 5):
965 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
967 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
968 self.assertTrue(not ncc)
969 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
970 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5])))
971 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,20])))
972 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])))
975 a6,a7=mml2.retrieveFamilyIdsOnCells()
976 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5])))
977 self.assertTrue(not a7)
978 a8,a9=mml2.retrieveNumberIdsOnCells()
979 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105])))
980 self.assertTrue(not a9)
981 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
984 fieldNames=[fieldName1,fieldName2]
987 f=allFMTSLeavesPerCommonSupport[0][0][j][i]
988 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
989 f.loadArraysIfNecessary()
990 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
991 self.assertEqual(f.getName(),fieldNames[j])
992 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
993 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])
994 self.assertTrue(v.isEqual(vExp,1e-12))
997 # Let's go for the 2nd support
998 fcscp=allFMTSLeavesPerCommonSupport[1][1]
999 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1001 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1002 for i in range(1, 5):
1003 self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
1005 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1006 self.assertTrue(not ncc)
1007 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1008 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9])))
1009 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,20,24,29])))
1010 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])))
1011 self.assertTrue(a4 is None)
1012 self.assertTrue(a5 is None)
1013 a6,a7=mml2.retrieveFamilyIdsOnCells()
1014 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,9,10])))
1015 self.assertTrue(not a7)
1016 a8,a9=mml2.retrieveNumberIdsOnCells()
1017 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,109,110])))
1018 self.assertTrue(not a9)
1019 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1021 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1022 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1023 f.loadArraysIfNecessary()
1024 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1025 self.assertEqual(f.getName(),"zeField3")
1026 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1027 vExp=DataArrayDouble(8*2) ; vExp.iota(200+1000*i) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]'%m,'Com2_2 [s^2]'%m])
1028 self.assertTrue(v.isEqual(vExp,1e-12))
1034 """ This test plays with cartesian mesh and profiles. When a sub cartesian mesh can also be considered as a cartesian mesh it is done.
1036 fname="ForMEDReader6.med"
1037 m=MEDCouplingCMesh("mesh")
1038 coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
1039 coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
1040 m.setCoords(coordsX,coordsY)
1041 mm=MEDFileCMesh() ; mm.setMesh(m)
1042 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
1043 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
1044 num=DataArrayInt(15) ; num.iota(200) ; mm.setRenumFieldArr(1,num) ; del num
1046 fieldName0="zeField0" ; # on cells
1047 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1048 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1049 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1050 fieldName4="zeField4" ;# on nodes
1051 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1055 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1056 fNode.setName(fieldName0) ; fNode.setMesh(m)
1057 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1058 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
1059 f.setFieldNoProfileSBT(fNode)
1060 fs0.pushBackTimeStep(f)
1063 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1064 fNode.setName(fieldName1)
1065 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1066 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1067 f.setFieldProfile(fNode,mm,0,pfl1)
1068 self.assertEqual(pfl1.getName(),"pfl1")
1069 fs1.pushBackTimeStep(f)
1072 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1073 fNode.setName(fieldName2)
1074 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1075 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1076 f.setFieldProfile(fNode,mm,0,pfl2)
1077 self.assertEqual(pfl2.getName(),"pfl2")
1078 fs2.pushBackTimeStep(f)
1081 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1082 fNode.setName(fieldName3)
1083 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1084 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1085 f.setFieldProfile(fNode,mm,0,pfl3)
1086 self.assertEqual(pfl3.getName(),"pfl3")
1087 fs3.pushBackTimeStep(f)
1090 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1091 fNode.setName(fieldName4) ; fNode.setMesh(m)
1092 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1093 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkConsistencyLight()
1094 f.setFieldNoProfileSBT(fNode)
1095 fs4.pushBackTimeStep(f)
1098 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1099 del m,mm,fs1,fs2,fs3,f,fNode
1100 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1101 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
1102 fields=MEDFileFields(fname,False)
1103 fields.removeFieldsWithoutAnyTimeStep()
1104 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1105 allFMTSLeavesToDisplay=[]
1106 for fields in fields_per_mesh:
1107 allFMTSLeavesToDisplay2=[]
1109 tmp=fmts.splitDiscretizations()
1111 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
1113 allFMTSLeavesToDisplay2+=tmp
1115 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1117 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1118 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1119 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1120 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1121 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1122 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1123 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1124 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1125 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1126 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1128 mst=MEDFileMeshStruct.New(ms[0])
1130 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1131 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1133 (a,b),c=mml2.buildVTUArrays()
1134 self.assertTrue(c)# c is True here because the returned array is directly those coming from internal structure
1135 self.assertTrue(a.isEqual(coordsX,1e-12))
1136 self.assertTrue(b.isEqual(coordsY,1e-12))
1137 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
1138 for i in range(1, 5):
1139 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1141 a6,a7=mml2.retrieveFamilyIdsOnCells()
1142 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1143 self.assertTrue(a7) # True because no copy
1144 a8,a9=mml2.retrieveNumberIdsOnCells()
1145 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1146 self.assertTrue(a9) # True because no copy
1147 a10,a11=mml2.retrieveNumberIdsOnNodes()
1148 self.assertTrue(a10.isEqual(DataArrayInt([200,201,202,203,204,205,206,207,208,209,210,211,212,213,214])))
1149 self.assertTrue(a11) # True because no copy
1150 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1152 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1153 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1154 f.loadArraysIfNecessary()
1155 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1156 self.assertEqual(f.getName(),fieldName0)
1157 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1158 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1159 self.assertTrue(v.isEqual(vExp,1e-12))
1161 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1162 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1163 f.loadArraysIfNecessary()
1164 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1165 self.assertEqual(f.getName(),fieldName4)
1166 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1167 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1168 self.assertTrue(v.isEqual(vExp,1e-12))
1171 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1172 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1174 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1175 (a,b),c=mml2.buildVTUArrays()
1176 self.assertTrue(not c)# c is False because this a sub support specially built for buildVTUArrays
1177 self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
1178 self.assertTrue(b.isEqual(coordsY,1e-12))
1179 a6,a7=mml2.retrieveFamilyIdsOnCells()
1180 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1181 self.assertTrue(not a7) # False because copy
1182 a8,a9=mml2.retrieveNumberIdsOnCells()
1183 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1184 self.assertTrue(not a9) # False because copy
1185 a10,a11=mml2.retrieveNumberIdsOnNodes()
1186 self.assertTrue(a10.isEqual(DataArrayInt([202,203,204,207,208,209,212,213,214])))
1187 self.assertTrue(not a11) # False because copy
1188 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1189 for i in range(1, 5):
1190 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1193 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1194 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1195 f.loadArraysIfNecessary()
1196 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1197 self.assertEqual(f.getName(),fieldName1)
1198 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1199 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1200 self.assertTrue(v.isEqual(vExp,1e-12))
1202 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1203 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1204 f.loadArraysIfNecessary()
1205 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1206 self.assertEqual(f.getName(),fieldName2)
1207 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1208 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1209 self.assertTrue(v.isEqual(vExp,1e-12))
1212 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1213 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1215 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1216 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1217 self.assertTrue(not ncc)
1218 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)
1219 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1220 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1221 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1222 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15])))
1223 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])))
1224 self.assertTrue(a4 is None)
1225 self.assertTrue(a5 is None)
1226 a6,a7=mml2.retrieveFamilyIdsOnCells()
1227 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1228 self.assertTrue(not a7) # False because copy
1229 a8,a9=mml2.retrieveNumberIdsOnCells()
1230 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1231 self.assertTrue(not a9) # False because copy
1232 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1234 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1235 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1236 f.loadArraysIfNecessary()
1237 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1238 self.assertEqual(f.getName(),fieldName3)
1239 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1240 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1241 self.assertTrue(v.isEqual(vExp,1e-12))
1247 """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
1248 This test is very similar to the test6.
1250 fname="ForMEDReader7.med"
1251 m=MEDCouplingCurveLinearMesh("mesh") ; m.setNodeGridStructure([5,3])
1252 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)
1253 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1255 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
1256 self.assertEqual(mm.getSpaceDimension(), m.getSpaceDimension())
1257 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
1258 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
1260 fieldName0="zeField0" ; # on cells
1261 fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1262 fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1263 fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1264 fieldName4="zeField4" ;# on nodes
1265 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1269 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1270 fNode.setName(fieldName0) ; fNode.setMesh(m)
1271 arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1272 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
1273 f.setFieldNoProfileSBT(fNode)
1274 fs0.pushBackTimeStep(f)
1277 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1278 fNode.setName(fieldName1)
1279 arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1280 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1281 f.setFieldProfile(fNode,mm,0,pfl1)
1282 self.assertEqual(pfl1.getName(),"pfl1")
1283 fs1.pushBackTimeStep(f)
1286 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1287 fNode.setName(fieldName2)
1288 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1289 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1290 f.setFieldProfile(fNode,mm,0,pfl2)
1291 self.assertEqual(pfl2.getName(),"pfl2")
1292 fs2.pushBackTimeStep(f)
1295 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1296 fNode.setName(fieldName3)
1297 arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1298 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1299 f.setFieldProfile(fNode,mm,0,pfl3)
1300 self.assertEqual(pfl3.getName(),"pfl3")
1301 fs3.pushBackTimeStep(f)
1304 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1305 fNode.setName(fieldName4) ; fNode.setMesh(m)
1306 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1307 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkConsistencyLight()
1308 f.setFieldNoProfileSBT(fNode)
1309 fs4.pushBackTimeStep(f)
1312 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1313 del m,mm,fs1,fs2,fs3,f,fNode
1314 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1315 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
1316 fields=MEDFileFields(fname,False)
1317 fields.removeFieldsWithoutAnyTimeStep()
1318 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1319 allFMTSLeavesToDisplay=[]
1320 for fields in fields_per_mesh:
1321 allFMTSLeavesToDisplay2=[]
1323 tmp=fmts.splitDiscretizations()
1325 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
1327 allFMTSLeavesToDisplay2+=tmp
1329 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1331 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1332 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1333 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1334 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1335 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1336 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1337 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1338 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1339 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1340 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1342 mst=MEDFileMeshStruct.New(ms[0])
1344 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1345 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1347 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
1348 a,b,c=mml2.buildVTUArrays()
1349 self.assertTrue(c)#True here because a is directly coming from internal data without copy
1350 self.assertTrue(a.isEqual(a0Exp,1e-12))
1351 self.assertEqual(b,[5,3])
1352 a6,a7=mml2.retrieveFamilyIdsOnCells()
1353 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
1354 self.assertTrue(a7) # True because no copy
1355 a8,a9=mml2.retrieveNumberIdsOnCells()
1356 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
1357 self.assertTrue(a9) # True because no copy
1358 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1359 for i in range(1, 5):
1360 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1363 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1364 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1365 f.loadArraysIfNecessary()
1366 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1367 self.assertEqual(f.getName(),fieldName0)
1368 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1369 vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1370 self.assertTrue(v.isEqual(vExp,1e-12))
1372 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1373 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1374 f.loadArraysIfNecessary()
1375 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1376 self.assertEqual(f.getName(),fieldName4)
1377 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1378 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1379 self.assertTrue(v.isEqual(vExp,1e-12))
1382 fcscp=allFMTSLeavesPerCommonSupport[1][1]
1383 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1385 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1386 a,b,c=mml2.buildVTUArrays()
1387 self.assertTrue(not c)#False here because a is the result of a computation not the internal structure
1388 self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
1389 self.assertEqual(b,[3,3])
1390 a6,a7=mml2.retrieveFamilyIdsOnCells()
1391 self.assertTrue(a6.isEqual(DataArrayInt([2,3,6,7])))
1392 self.assertTrue(not a7) # False because copy
1393 a8,a9=mml2.retrieveNumberIdsOnCells()
1394 self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
1395 self.assertTrue(not a9) # False because copy
1396 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1397 for i in range(1, 5):
1398 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1401 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1402 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1403 f.loadArraysIfNecessary()
1404 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1405 self.assertEqual(f.getName(),fieldName1)
1406 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1407 vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1408 self.assertTrue(v.isEqual(vExp,1e-12))
1410 f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1411 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1412 f.loadArraysIfNecessary()
1413 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1414 self.assertEqual(f.getName(),fieldName2)
1415 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1416 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1417 self.assertTrue(v.isEqual(vExp,1e-12))
1420 fcscp=allFMTSLeavesPerCommonSupport[2][1]
1421 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1423 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1424 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1425 self.assertTrue(not ncc)
1426 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)
1427 a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1428 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1429 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1430 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15])))
1431 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])))
1432 self.assertTrue(a4 is None)
1433 self.assertTrue(a5 is None)
1434 a6,a7=mml2.retrieveFamilyIdsOnCells()
1435 self.assertTrue(a6.isEqual(DataArrayInt([2,3,5,7])))
1436 self.assertTrue(not a7) # False because copy
1437 a8,a9=mml2.retrieveNumberIdsOnCells()
1438 self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
1439 self.assertTrue(not a9) # False because copy
1440 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1442 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1443 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1444 f.loadArraysIfNecessary()
1445 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1446 self.assertEqual(f.getName(),fieldName3)
1447 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1448 vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1449 self.assertTrue(v.isEqual(vExp,1e-12))
1455 """ This test plays with with gauss fields with no profiles.
1457 fname="ForMEDReader8.med"
1458 # building a mesh containing 6 tri3 + 5 quad4
1459 m=MEDCouplingUMesh("mesh",2)
1460 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]"])
1463 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])
1464 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1465 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])
1466 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1467 mm=MEDFileUMesh() ; mm.setMeshes([m])
1469 fieldName0="zeField0"
1470 fieldName1="zeField1"
1471 fieldName2="zeField2"
1472 fieldName3="zeField3"
1473 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1476 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1477 fNode.setName(fieldName0) ; fNode.setMesh(m)
1478 arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1479 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
1480 f.setFieldNoProfileSBT(fNode)
1481 fs0.pushBackTimeStep(f)
1484 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1485 fNode.setName(fieldName1) ; fNode.setMesh(m)
1486 arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1487 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
1488 f.setFieldNoProfileSBT(fNode)
1489 fs1.pushBackTimeStep(f)
1492 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1493 fNode.setName(fieldName2) ; fNode.setMesh(m)
1494 fNode.setGaussLocalizationOnCells([0,1,2,3],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1495 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])
1496 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])
1497 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])
1498 arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1499 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight()
1500 f.setFieldNoProfileSBT(fNode)
1501 fs2.pushBackTimeStep(f)
1504 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1505 fNode.setName(fieldName3) ; fNode.setMesh(m)
1506 arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1507 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkConsistencyLight()
1508 f.setFieldNoProfileSBT(fNode)
1509 fs3.pushBackTimeStep(f)
1514 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1515 a0Exp=mm.getCoords().deepCopy()
1516 del m,mm,fs1,fs2,fs3,f,fNode
1517 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1518 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
1519 fields=MEDFileFields(fname,False)
1520 fields.removeFieldsWithoutAnyTimeStep()
1521 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1522 allFMTSLeavesToDisplay=[]
1523 for fields in fields_per_mesh:
1524 allFMTSLeavesToDisplay2=[]
1526 tmp=fmts.splitDiscretizations()
1528 # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
1530 allFMTSLeavesToDisplay2+=tmp
1532 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1534 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1535 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1536 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1537 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1538 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1539 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1540 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1541 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1543 mst=MEDFileMeshStruct.New(ms[0])
1545 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1546 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1548 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1549 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1550 self.assertTrue(not ncc)
1551 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1552 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9])))
1553 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,16,20,24,29,34,39,44])))
1554 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])))
1555 self.assertTrue(a4 is None)
1556 self.assertTrue(a5 is None)
1557 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1558 for i in range(1, 5):
1559 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1562 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1563 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1564 f.loadArraysIfNecessary()
1565 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1566 self.assertEqual(f.getName(),fieldName0)
1567 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1568 vExp=DataArrayDouble(38*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1569 self.assertTrue(v.isEqual(vExp,1e-12))
1571 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1572 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1573 f.loadArraysIfNecessary()
1574 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1575 self.assertEqual(f.getName(),fieldName1)
1576 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1577 vExp=DataArrayDouble(11*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1578 self.assertTrue(v.isEqual(vExp,1e-12))
1580 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1581 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1582 f.loadArraysIfNecessary()
1583 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1584 self.assertEqual(f.getName(),fieldName2)
1585 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1586 vExp=DataArrayDouble(44*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1587 self.assertTrue(v.isEqual(vExp,1e-12))
1589 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1590 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1591 f.loadArraysIfNecessary()
1592 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1593 self.assertEqual(f.getName(),fieldName3)
1594 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1595 vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1596 self.assertTrue(v.isEqual(vExp,1e-12))
1603 """ This test plays with with gauss fields with profiles.
1605 fname="ForMEDReader9.med"
1606 # building a mesh containing 6 tri3 + 5 quad4
1607 m=MEDCouplingUMesh("mesh",2)
1608 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]"])
1611 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])
1612 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1613 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])
1614 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1615 mm=MEDFileUMesh() ; mm.setMeshes([m])
1617 fieldName0="zeField0"
1618 fieldName1="zeField1"
1619 fieldName2="zeField2"
1620 fieldName3="zeField3"
1621 pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
1622 pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
1623 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1626 fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1627 fNode.setName(fieldName0)
1628 arr=DataArrayDouble(2*18) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1629 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1630 f.setFieldProfile(fNode,mm,0,pfl1)
1631 fs0.pushBackTimeStep(f)
1634 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1635 fNode.setName(fieldName1)
1636 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1637 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1638 f.setFieldProfile(fNode,mm,0,pfl1)
1639 fs1.pushBackTimeStep(f)
1642 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1643 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1644 fNode.setGaussLocalizationOnCells([0],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1645 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])
1646 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])
1647 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])
1648 arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1649 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight()
1650 f.setFieldProfile(fNode,mm,0,pfl1)
1651 fs2.pushBackTimeStep(f)
1654 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1655 fNode.setName(fieldName3)
1656 arr=DataArrayDouble(2*9) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1657 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1658 f.setFieldProfile(fNode,mm,0,pfl2)
1659 fs3.pushBackTimeStep(f)
1664 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1665 a0Exp=mm.getCoords().deepCopy()
1666 del m,mm,fs1,fs2,fs3,f,fNode
1667 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1668 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
1669 fields=MEDFileFields(fname,False)
1670 fields.removeFieldsWithoutAnyTimeStep()
1671 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1672 allFMTSLeavesToDisplay=[]
1673 for fields in fields_per_mesh:
1674 allFMTSLeavesToDisplay2=[]
1676 tmp=fmts.splitDiscretizations()
1678 # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
1680 allFMTSLeavesToDisplay2+=tmp
1682 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1684 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1685 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1686 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1687 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1688 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1689 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1690 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1691 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1693 mst=MEDFileMeshStruct.New(ms[0])
1695 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1696 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1698 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1699 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1700 self.assertTrue(not ncc)
1701 self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
1702 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1703 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18])))
1704 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])))
1705 self.assertTrue(a4 is None)
1706 self.assertTrue(a5 is None)
1707 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1708 for i in range(1, 5):
1709 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1712 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1713 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1714 f.loadArraysIfNecessary()
1715 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1716 self.assertEqual(f.getName(),fieldName0)
1717 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1718 vExp=DataArrayDouble(18*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1719 self.assertTrue(v.isEqual(vExp,1e-12))
1721 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1722 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1723 f.loadArraysIfNecessary()
1724 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1725 self.assertEqual(f.getName(),fieldName1)
1726 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1727 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1728 self.assertTrue(v.isEqual(vExp,1e-12))
1730 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1731 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1732 f.loadArraysIfNecessary()
1733 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1734 self.assertEqual(f.getName(),fieldName2)
1735 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1736 vExp=DataArrayDouble(22*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1737 self.assertTrue(v.isEqual(vExp,1e-12))
1739 f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1740 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1741 f.loadArraysIfNecessary()
1742 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1743 self.assertEqual(f.getName(),fieldName3)
1744 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1745 vExp=DataArrayDouble(9*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1746 self.assertTrue(v.isEqual(vExp,1e-12))
1752 """ This test plays with fields only on nodes containing profiles.
1754 fname="ForMEDReader10.med"
1755 # building a mesh containing 6 tri3 + 5 quad4
1756 m=MEDCouplingUMesh("mesh",2)
1757 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]"])
1760 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])
1761 m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1762 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])
1763 m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1764 mm=MEDFileUMesh() ; mm.setMeshes([m])
1766 fieldName0="zeField0"
1767 fieldName1="zeField1"
1768 fieldName2="zeField2"
1769 pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
1770 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
1773 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1774 fNode.setName(fieldName0)
1775 arr=DataArrayDouble(2*9) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1776 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1777 f.setFieldProfile(fNode,mm,0,pfl1)
1778 fs0.pushBackTimeStep(f)
1781 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1782 fNode.setName(fieldName1)
1783 arr=DataArrayDouble(2*9) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1784 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1785 f.setFieldProfile(fNode,mm,0,pfl1)
1786 fs1.pushBackTimeStep(f)
1789 fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1790 fNode.setName(fieldName2)
1791 arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1792 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1793 f.setFieldProfile(fNode,mm,0,pfl1)
1794 fs2.pushBackTimeStep(f)
1799 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
1800 a0Exp=mm.getCoords().deepCopy()
1801 del m,mm,fs1,fs2,f,fNode
1802 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1803 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
1804 fields=MEDFileFields(fname,False)
1805 fields.removeFieldsWithoutAnyTimeStep()
1806 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1807 allFMTSLeavesToDisplay=[]
1808 for fields in fields_per_mesh:
1809 allFMTSLeavesToDisplay2=[]
1811 tmp=fmts.splitDiscretizations()
1813 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
1815 allFMTSLeavesToDisplay2+=tmp
1817 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1819 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1820 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
1821 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1822 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1823 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
1824 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1825 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1826 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
1828 mst=MEDFileMeshStruct.New(ms[0])
1830 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1831 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1833 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1834 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1835 self.assertTrue(not ncc)
1836 self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12))
1837 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1838 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18])))
1839 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])))
1840 self.assertTrue(a4 is None)
1841 self.assertTrue(a5 is None)
1842 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1843 for i in range(1, 5):
1844 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1847 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1848 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1849 f.loadArraysIfNecessary()
1850 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1851 self.assertEqual(f.getName(),fieldName0)
1852 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1853 vExp=DataArrayDouble(9*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1854 self.assertTrue(v.isEqual(vExp,1e-12))
1856 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1857 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1858 f.loadArraysIfNecessary()
1859 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1860 self.assertEqual(f.getName(),fieldName1)
1861 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1862 vExp=DataArrayDouble(9*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1863 self.assertTrue(v.isEqual(vExp,1e-12))
1865 f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1866 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1867 f.loadArraysIfNecessary()
1868 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1869 self.assertEqual(f.getName(),fieldName2)
1870 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1871 vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1872 self.assertTrue(v.isEqual(vExp,1e-12))
1878 """ 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 !
1879 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.
1881 fname="ForMEDReader11.med"
1882 m=MEDCouplingCMesh("mesh")
1883 arr=DataArrayDouble(5) ; arr.iota()
1884 m.setCoords(arr,arr)
1885 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1886 mm=MEDFileUMesh() ; mm.setMeshes([m])
1888 fieldName0="zeField0"
1889 fs0=MEDFileFieldMultiTS()
1892 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1893 fNode.setName(fieldName0) ; fNode.setMesh(m)
1894 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])
1895 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])
1896 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])
1897 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])
1898 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1899 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
1900 f.setFieldNoProfileSBT(fNode)
1901 fs0.pushBackTimeStep(f)
1905 a0Exp=mm.getCoords().deepCopy()
1906 del m,mm,fs0,f,fNode
1907 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1908 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
1909 fields=MEDFileFields(fname,False)
1910 fields.removeFieldsWithoutAnyTimeStep()
1911 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1912 allFMTSLeavesToDisplay=[]
1913 for fields in fields_per_mesh:
1914 allFMTSLeavesToDisplay2=[]
1916 tmp=fmts.splitDiscretizations()
1918 # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
1920 allFMTSLeavesToDisplay2+=tmp
1922 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1924 self.assertEqual(len(allFMTSLeavesToDisplay),1)
1925 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
1926 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1927 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 1 field is defined on the same time steps
1928 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
1929 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1930 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1931 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
1933 mst=MEDFileMeshStruct.New(ms[0])
1935 fcscp=allFMTSLeavesPerCommonSupport[0][1]
1936 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1938 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1939 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1940 self.assertTrue(not ncc)
1941 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1942 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1943 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
1944 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]]
1945 self.assertTrue(a4 is None)
1946 self.assertTrue(a5 is None)
1947 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
1948 for i in range(1, 5):
1949 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1952 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1953 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1954 f.loadArraysIfNecessary()
1955 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1956 self.assertEqual(f.getName(),fieldName0)
1957 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1958 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]'])
1960 self.assertTrue(v.isEqual(vExp,1e-12))
1966 """ This test is the second ultimate test for the profiles with gauss points.
1967 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.
1969 fname="ForMEDReader12.med"
1970 m=MEDCouplingCMesh("mesh")
1971 arr=DataArrayDouble(5) ; arr.iota()
1972 m.setCoords(arr,arr)
1973 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1974 mm=MEDFileUMesh() ; mm.setMeshes([m])
1976 fieldName0="zeField0"
1977 fieldName1="zeField1"
1978 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
1981 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1982 fNode.setName(fieldName0) ; fNode.setMesh(m)
1983 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])
1984 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])
1985 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])
1986 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])
1987 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1988 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
1989 f.setFieldNoProfileSBT(fNode)
1990 fs0.pushBackTimeStep(f)
1993 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1994 fNode.setName(fieldName1) ; fNode.setMesh(m)
1995 arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1996 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
1997 f.setFieldNoProfileSBT(fNode)
1998 fs1.pushBackTimeStep(f)
2001 fs0.write(fname,0) ; fs1.write(fname,0)
2002 a0Exp=mm.getCoords().deepCopy()
2003 del m,mm,fs0,fs1,f,fNode
2004 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2005 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2006 fields=MEDFileFields(fname,False)
2007 fields.removeFieldsWithoutAnyTimeStep()
2008 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2009 allFMTSLeavesToDisplay=[]
2010 for fields in fields_per_mesh:
2011 allFMTSLeavesToDisplay2=[]
2013 tmp=fmts.splitDiscretizations()
2015 # self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2017 allFMTSLeavesToDisplay2+=tmp
2019 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2021 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2022 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2023 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2024 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2025 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2026 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2027 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2028 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2030 mst=MEDFileMeshStruct.New(ms[0])
2032 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2033 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2035 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2036 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2037 self.assertTrue(not ncc)
2038 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
2039 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
2040 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
2041 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
2042 self.assertTrue(a4 is None)
2043 self.assertTrue(a5 is None)
2044 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2045 for i in range(1, 5):
2046 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2049 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2050 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2051 f.loadArraysIfNecessary()
2052 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2053 self.assertEqual(f.getName(),fieldName0)
2054 #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
2055 vExp=DataArrayDouble(65*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2056 self.assertTrue(v.isEqual(vExp,1e-12))
2058 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2059 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2060 f.loadArraysIfNecessary()
2061 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2062 self.assertEqual(f.getName(),fieldName1)
2063 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
2064 vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2065 self.assertTrue(v.isEqual(vExp,1e-12))
2070 """ Testing polyhedrons mixed with hexa8"""
2071 fname="ForMEDReader13.med"
2072 m=MEDCouplingUMesh("mesh",3)
2074 m.insertNextCell(NORM_HEXA8,[1,0,6,7,13,12,18,19]) ; m.insertNextCell(NORM_HEXA8,[2,1,7,8,14,13,19,20])
2075 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])
2076 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])
2077 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])
2078 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]"])
2080 mm=MEDFileUMesh() ; mm.setMeshes([m])
2081 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
2082 fieldName0="zeField0"
2083 fieldName1="zeField1"
2084 fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
2085 fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
2088 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2089 fNode.setName(fieldName0) ; fNode.setMesh(m)
2090 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2091 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
2092 f.setFieldNoProfileSBT(fNode)
2093 fs0.pushBackTimeStep(f)
2096 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2097 fNode.setName(fieldName1) ; fNode.setMesh(m)
2098 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2099 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
2100 f.setFieldNoProfileSBT(fNode)
2101 fs1.pushBackTimeStep(f)
2104 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2105 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
2106 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
2107 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight()
2108 f.setFieldProfile(fNode,mm,0,pfl1)
2109 fs2.pushBackTimeStep(f)
2112 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2113 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
2114 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
2115 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkConsistencyLight()
2116 f.setFieldProfile(fNode,mm,0,pfl2)
2117 fs3.pushBackTimeStep(f)
2120 fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
2121 a0Exp=mm.getCoords().deepCopy()
2123 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2124 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2125 fields=MEDFileFields(fname,False)
2126 fields.removeFieldsWithoutAnyTimeStep()
2127 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2128 allFMTSLeavesToDisplay=[]
2129 for fields in fields_per_mesh:
2130 allFMTSLeavesToDisplay2=[]
2132 tmp=fmts.splitDiscretizations()
2134 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2136 allFMTSLeavesToDisplay2+=tmp
2138 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2140 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2141 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
2142 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2143 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2144 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2145 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2146 self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
2147 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2148 self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
2149 self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
2151 mst=MEDFileMeshStruct.New(ms[0])
2153 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2154 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2156 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2157 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2158 self.assertTrue(ncc)
2159 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2160 self.assertTrue(a1.isEqual(DataArrayByte([12,12,42,42,42])))
2161 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36])))
2162 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])))
2163 self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
2164 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])))
2165 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2166 for i in range(1, 5):
2167 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2171 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2172 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2173 f.loadArraysIfNecessary()
2174 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2175 self.assertEqual(f.getName(),fieldName0)
2176 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2177 vExp=DataArrayDouble(5*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2178 self.assertTrue(v.isEqual(vExp,1e-12))
2180 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2181 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2182 f.loadArraysIfNecessary()
2183 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2184 self.assertEqual(f.getName(),fieldName1)
2185 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2186 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2187 self.assertTrue(v.isEqual(vExp,1e-12))
2190 fcscp=allFMTSLeavesPerCommonSupport[1][1]
2191 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2193 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2194 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2195 self.assertTrue(ncc)
2196 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2197 self.assertTrue(a1.isEqual(DataArrayByte([42,42])))
2198 self.assertTrue(a2.isEqual(DataArrayInt([0,9])))
2199 self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
2200 self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
2201 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])))
2202 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2203 for i in range(1, 5):
2204 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2208 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
2209 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2210 f.loadArraysIfNecessary()
2211 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2212 self.assertEqual(f.getName(),fieldName2)
2213 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2214 vExp=DataArrayDouble(2*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
2215 self.assertTrue(v.isEqual(vExp,1e-12))
2218 fcscp=allFMTSLeavesPerCommonSupport[2][1]
2219 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2221 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2222 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2223 self.assertTrue(ncc)
2224 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2225 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2226 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18])))
2227 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])))
2228 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2229 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])))
2230 for i in range(1, 5):
2231 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2235 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
2236 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2237 f.loadArraysIfNecessary()
2238 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2239 self.assertEqual(f.getName(),fieldName3)
2240 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2241 vExp=DataArrayDouble(3*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
2242 self.assertTrue(v.isEqual(vExp,1e-12))
2248 """ Testing only polyhedrons"""
2249 fname="ForMEDReader14.med"
2250 m=MEDCouplingUMesh("mesh",3)
2252 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])
2253 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])
2254 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])
2255 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]"])
2257 mm=MEDFileUMesh() ; mm.setMeshes([m])
2258 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
2259 fieldName0="zeField0"
2260 fieldName1="zeField1"
2263 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2264 fNode.setName(fieldName0) ; fNode.setMesh(m)
2265 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2266 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
2267 f.setFieldNoProfileSBT(fNode)
2268 fs0.pushBackTimeStep(f)
2271 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2272 fNode.setName(fieldName1) ; fNode.setMesh(m)
2273 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2274 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
2275 f.setFieldNoProfileSBT(fNode)
2276 fs1.pushBackTimeStep(f)
2279 fs0.write(fname,0) ; fs1.write(fname,0)
2280 a0Exp=mm.getCoords().deepCopy()
2282 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2283 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2284 fields=MEDFileFields(fname,False)
2285 fields.removeFieldsWithoutAnyTimeStep()
2286 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2287 allFMTSLeavesToDisplay=[]
2288 for fields in fields_per_mesh:
2289 allFMTSLeavesToDisplay2=[]
2291 tmp=fmts.splitDiscretizations()
2293 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2295 allFMTSLeavesToDisplay2+=tmp
2297 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2299 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2300 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2301 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2302 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2303 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2304 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2305 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2306 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2308 mst=MEDFileMeshStruct.New(ms[0])
2310 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2311 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2313 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2314 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2315 self.assertTrue(ncc)
2316 self.assertTrue(a0.isEqual(a0Exp,1e-12))
2317 self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2318 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18])))
2319 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])))
2320 self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2321 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])))
2322 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2323 for i in range(1, 5):
2324 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2326 a6,a7=mml2.retrieveFamilyIdsOnCells()
2327 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
2329 a8,a9=mml2.retrieveNumberIdsOnCells()
2330 self.assertTrue(a8 is None)
2333 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2334 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2335 f.loadArraysIfNecessary()
2336 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2337 self.assertEqual(f.getName(),fieldName0)
2338 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2339 vExp=DataArrayDouble(3*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2340 self.assertTrue(v.isEqual(vExp,1e-12))
2342 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2343 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2344 f.loadArraysIfNecessary()
2345 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2346 self.assertEqual(f.getName(),fieldName1)
2347 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2348 vExp=DataArrayDouble(3*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2349 self.assertTrue(v.isEqual(vExp,1e-12))
2356 "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !)
2357 and a field "zeField" lying on a single geometric type for Cell discr and node part.
2358 Test that can appear the most simple but it hides a big issue of MEDReader
2359 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.
2361 fname="ForMEDReader15.med"
2362 m0=MEDCouplingCMesh()
2363 arr=DataArrayDouble(3) ; arr.iota(0)
2364 m0.setCoords(arr,arr,arr)
2366 m0=m0.buildUnstructured()
2369 fCell=MEDCouplingFieldDouble(ON_CELLS)
2370 fCell.setName(fieldName)
2373 fNode=MEDCouplingFieldDouble(ON_NODES)
2374 fNode.setName(fieldName)
2378 mm.setMeshAtLevel(0,m0)
2379 fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
2380 num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
2382 ffs=MEDFileFieldMultiTS()
2385 f1ts=MEDFileField1TS()
2386 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2389 fCell.checkConsistencyLight()
2390 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2394 fNode.checkConsistencyLight()
2395 f1ts.setFieldNoProfileSBT(fCell)
2396 f1ts.setFieldNoProfileSBT(fNode)
2397 ffs.pushBackTimeStep(f1ts)
2399 t=(2.1,1,0) ; off=100.
2400 f1ts=MEDFileField1TS()
2401 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2404 fCell.checkConsistencyLight()
2405 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2409 fNode.checkConsistencyLight()
2410 f1ts.setFieldNoProfileSBT(fCell)
2411 f1ts.setFieldNoProfileSBT(fNode)
2412 ffs.pushBackTimeStep(f1ts)
2414 t=(3.2,2,0) ; off=200.
2415 f1ts=MEDFileField1TS()
2416 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2419 fCell.checkConsistencyLight()
2420 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2424 fNode.checkConsistencyLight()
2425 f1ts.setFieldNoProfileSBT(fCell)
2426 f1ts.setFieldNoProfileSBT(fNode)
2427 ffs.pushBackTimeStep(f1ts)
2429 t=(4.3,3,1) ; off=300.
2430 f1ts=MEDFileField1TS()
2431 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2434 fCell.checkConsistencyLight()
2435 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2439 fNode.checkConsistencyLight()
2440 f1ts.setFieldNoProfileSBT(fCell)
2441 f1ts.setFieldNoProfileSBT(fNode)
2442 ffs.pushBackTimeStep(f1ts)
2446 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2447 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2448 fields=MEDFileFields(fname,False)
2449 fields.removeFieldsWithoutAnyTimeStep()
2450 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2451 allFMTSLeavesToDisplay=[]
2452 for fields in fields_per_mesh:
2453 allFMTSLeavesToDisplay2=[]
2455 tmp=fmts.splitDiscretizations()
2457 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2459 allFMTSLeavesToDisplay2+=tmp
2461 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2463 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2464 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2465 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2466 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2467 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2468 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2469 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2470 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2472 mst=MEDFileMeshStruct.New(ms[0])
2474 fcscp=allFMTSLeavesPerCommonSupport[0][1]
2475 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2477 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2478 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2479 self.assertTrue(ncc)
2480 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))
2481 self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12])))
2482 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36,45,54,63])))
2483 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])))
2484 self.assertTrue(a4 is None)
2485 self.assertTrue(a5 is None)
2486 a6,a7=mml2.retrieveFamilyIdsOnCells()
2487 self.assertTrue(a6.isEqual(DataArrayInt([0,1,2,3,4,5,6,7])))
2488 self.assertTrue(a7) # no copy here
2489 a8,a9=mml2.retrieveNumberIdsOnCells()
2490 self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
2491 self.assertTrue(a9) # no copy here
2492 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2497 """ Here 2 meshes "mesh1" and "mesh2" and 4 fields (no profiles here) :
2498 - "zeField1_0" (CELLS) and "zeField2_0" (NODES) on "mesh1"
2499 - "zeField3_1" (CELLS) and "zeField4_1" (NODES) on "mesh2"
2500 time steps series are the same for the whole 4 fields
2502 fname="ForMEDReader16.med"
2503 m0=MEDCouplingCMesh()
2504 arr=DataArrayDouble(3) ; arr.iota(0)
2505 m0.setCoords(arr,arr,arr)
2507 m0=m0.buildUnstructured()
2509 fCell1=MEDCouplingFieldDouble(ON_CELLS)
2510 fCell1.setName("zeField1_0")
2513 fNode1=MEDCouplingFieldDouble(ON_NODES)
2514 fNode1.setName("zeField2_0")
2519 mm1.setMeshAtLevel(0,m0)
2520 fam=DataArrayInt([0,1,0,1,2,3,2,3]); mm1.setFamilyFieldArr(0,fam) ; del fam
2521 num=DataArrayInt(8) ; num.iota(100) ; mm1.setRenumFieldArr(0,num) ; del num
2522 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)
2523 mm1.setFamiliesIdsOnGroup("Grp1_1",[0,1]) ; mm1.setFamiliesIdsOnGroup("Grp1_2",[2,3])
2524 mms.pushMesh(mm1) ; del mm1
2526 m1=m0.deepCopy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2")
2528 fCell2=MEDCouplingFieldDouble(ON_CELLS)
2529 fCell2.setName("zeField3_1")
2532 fNode2=MEDCouplingFieldDouble(ON_NODES)
2533 fNode2.setName("zeField4_1")
2537 mm2.setMeshAtLevel(0,m1)
2538 fam=DataArrayInt([0,1,0,1,2,3,2,3]); mm2.setFamilyFieldArr(0,fam) ; del fam
2539 num=DataArrayInt(8) ; num.iota(200) ; mm2.setRenumFieldArr(0,num) ; del num
2540 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)
2541 mm2.setFamiliesIdsOnGroup("Grp2_1",[0,1]) ; mm2.setFamiliesIdsOnGroup("Grp2_2",[2,3]) ; mm2.setFamiliesIdsOnGroup("Grp2_3",[1,2,3])
2542 mms.pushMesh(mm2) ; del mm2
2543 ffs1_1=MEDFileFieldMultiTS()
2544 ffs1_2=MEDFileFieldMultiTS()
2545 ffs2_1=MEDFileFieldMultiTS()
2546 ffs2_2=MEDFileFieldMultiTS()
2548 for elt in ffs1_1,ffs1_2,ffs2_1,ffs2_2:
2553 f1ts1=MEDFileField1TS()
2554 f1ts2=MEDFileField1TS()
2555 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2558 fCell1.checkConsistencyLight()
2559 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2563 fNode1.checkConsistencyLight()
2564 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2565 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2567 f1ts1=MEDFileField1TS()
2568 f1ts2=MEDFileField1TS()
2569 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2572 fCell2.checkConsistencyLight()
2573 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2577 fNode2.checkConsistencyLight()
2578 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2579 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2581 t=(2.1,1,0) ; off=100.
2582 f1ts1=MEDFileField1TS()
2583 f1ts2=MEDFileField1TS()
2584 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2587 fCell1.checkConsistencyLight()
2588 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2592 fNode1.checkConsistencyLight()
2593 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2594 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2596 f1ts1=MEDFileField1TS()
2597 f1ts2=MEDFileField1TS()
2598 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2601 fCell2.checkConsistencyLight()
2602 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2606 fNode2.checkConsistencyLight()
2607 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2608 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2610 t=(3.1,2,0) ; off=200.
2611 f1ts1=MEDFileField1TS()
2612 f1ts2=MEDFileField1TS()
2613 a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2616 fCell1.checkConsistencyLight()
2617 a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
2621 fNode1.checkConsistencyLight()
2622 f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
2623 f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
2625 f1ts1=MEDFileField1TS()
2626 f1ts2=MEDFileField1TS()
2627 a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
2630 fCell2.checkConsistencyLight()
2631 a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
2635 fNode2.checkConsistencyLight()
2636 f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
2637 f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
2639 mms.write(fname,2) ; mts.write(fname,0)
2640 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2641 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2642 fields=MEDFileFields(fname,False)
2643 fields.removeFieldsWithoutAnyTimeStep()
2644 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2645 allFMTSLeavesToDisplay=[]
2646 for fields in fields_per_mesh:
2647 allFMTSLeavesToDisplay2=[]
2649 tmp=fmts.splitDiscretizations()
2651 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2653 allFMTSLeavesToDisplay2+=tmp
2655 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2657 self.assertEqual(len(allFMTSLeavesToDisplay),2)
2658 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2659 self.assertEqual(len(allFMTSLeavesToDisplay[1]),2)
2660 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2661 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2662 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
2663 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2664 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2665 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
2666 allFMTSLeavesPerCommonSupport2=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2667 self.assertEqual(len(allFMTSLeavesPerCommonSupport2),1)
2668 self.assertEqual(len(allFMTSLeavesPerCommonSupport2[0][0]),2)
2673 """ First test on GAUSS_NE (Elno). Here no Profiles.
2676 fname="ForMEDReader17.med"
2677 fieldName1="MyFirstElno"
2678 fieldName2="ACellField"
2679 fieldName3="ANodeField"
2680 coo=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.],6,2)
2681 m=MEDCouplingUMesh("mesh",2)
2684 m.insertNextCell(NORM_QUAD4,[0,3,4,1])
2685 m.insertNextCell(NORM_QUAD4,[1,4,5,2])
2686 m.checkConsistency()
2689 f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
2690 f.setArray(DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]))
2691 f.setName(fieldName1)
2692 f.checkConsistencyLight()
2693 WriteField(fname,f,True)
2694 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2695 f2.setArray(DataArrayDouble([7.,11.],2,1))
2696 f2.setName(fieldName2)
2697 WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2698 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2699 f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
2700 f3.setName(fieldName3)
2701 WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2704 f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
2705 f.setArray(DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.]))
2706 f.setName(fieldName1)
2707 f.checkConsistencyLight()
2708 WriteFieldUsingAlreadyWrittenMesh(fname,f)
2709 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2710 f2.setArray(DataArrayDouble([11.,7.],2,1))
2711 f2.setName(fieldName2)
2712 WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2713 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2714 f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
2715 f3.setName(fieldName3)
2716 WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2717 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2718 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2719 fields=MEDFileFields(fname,False)
2720 fields.removeFieldsWithoutAnyTimeStep()
2721 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2722 allFMTSLeavesToDisplay=[]
2723 for fields in fields_per_mesh:
2724 allFMTSLeavesToDisplay2=[]
2726 tmp=fmts.splitDiscretizations()
2728 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2730 allFMTSLeavesToDisplay2+=tmp
2732 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2734 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2735 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2736 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2737 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2738 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2739 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2740 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2741 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2743 mst=MEDFileMeshStruct.New(ms[0])
2745 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2746 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2748 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2749 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2750 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2751 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))
2752 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2753 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2754 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2755 self.assertTrue(a4 is None)
2756 self.assertTrue(a5 is None)
2757 a6,a7=mml2.retrieveFamilyIdsOnCells()
2758 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2759 self.assertTrue(a7) # no copy here
2760 a8,a9=mml2.retrieveNumberIdsOnCells()
2761 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2762 self.assertTrue(a9) # no copy here
2763 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2764 for i in range(1, 2):
2765 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2767 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2768 vExp1=[DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]),DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.])]
2770 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2771 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2772 f.loadArraysIfNecessary()
2773 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2774 self.assertEqual(f.getName(),fieldName2)
2775 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2776 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2778 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2779 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2780 f.loadArraysIfNecessary()
2781 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2782 self.assertEqual(f.getName(),fieldName1)
2783 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2784 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2790 """ First test on GAUSS_PT. Here no Profiles. 2 times steps.
2792 fname="ForMEDReader18.med"
2793 fieldName1="MyFirstGauss"
2794 fieldName2="ACellField"
2795 fieldName3="ANodeField"
2796 coo=DataArrayDouble([0.,0.,1.,0.,2.,0.,0.,1.,1.,1.,2.,1.],6,2)
2797 m=MEDCouplingUMesh("mesh",2)
2800 m.insertNextCell(NORM_QUAD4,[0,3,4,1])
2801 m.insertNextCell(NORM_QUAD4,[1,4,5,2])
2802 m.checkConsistency()
2805 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
2806 f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
2807 f.setArray(DataArrayDouble([3.,5.,4.,6.])) ; f.getArray().setInfoOnComponents(["Smth"])
2808 f.setName(fieldName1)
2809 f.checkConsistencyLight()
2810 WriteField(fname,f,True)
2811 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2812 f2.setArray(DataArrayDouble([7.,11.],2,1))
2813 f2.setName(fieldName2)
2814 WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2815 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2816 f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
2817 f3.setName(fieldName3)
2818 WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2821 f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
2822 f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
2823 f.setArray(DataArrayDouble([5.,3.,6.,4.])) ; f.getArray().setInfoOnComponents(["Smth"])
2824 f.setName(fieldName1)
2825 f.checkConsistencyLight()
2826 WriteFieldUsingAlreadyWrittenMesh(fname,f)
2827 f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
2828 f2.setArray(DataArrayDouble([11.,7.],2,1))
2829 f2.setName(fieldName2)
2830 WriteFieldUsingAlreadyWrittenMesh(fname,f2)
2831 f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
2832 f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
2833 f3.setName(fieldName3)
2834 WriteFieldUsingAlreadyWrittenMesh(fname,f3)
2835 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2836 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2837 fields=MEDFileFields(fname,False)
2838 fields.removeFieldsWithoutAnyTimeStep()
2839 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2840 allFMTSLeavesToDisplay=[]
2841 for fields in fields_per_mesh:
2842 allFMTSLeavesToDisplay2=[]
2844 tmp=fmts.splitDiscretizations()
2846 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2848 allFMTSLeavesToDisplay2+=tmp
2850 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2852 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2853 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2854 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2855 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2856 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2857 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2858 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2859 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2861 mst=MEDFileMeshStruct.New(ms[0])
2863 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2864 self.assertEqual([NORM_QUAD4],fcscp.getGeoTypesAt(0,ms[0]))
2865 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2867 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2868 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2869 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2870 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))
2871 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2872 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2873 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2874 self.assertTrue(a4 is None)
2875 self.assertTrue(a5 is None)
2876 a6,a7=mml2.retrieveFamilyIdsOnCells()
2877 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2878 self.assertTrue(a7) # no copy here
2879 a8,a9=mml2.retrieveNumberIdsOnCells()
2880 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2881 self.assertTrue(a9) # no copy here
2882 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2883 for i in range(1, 2):
2884 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2886 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2887 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2889 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2890 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2891 f.loadArraysIfNecessary()
2892 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2893 self.assertEqual(f.getName(),fieldName2)
2894 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2895 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2897 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2898 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2899 f.loadArraysIfNecessary()
2900 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2901 self.assertEqual(f.getName(),fieldName1)
2902 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2903 vExp1[i].setInfoOnComponents(["Smth"])
2904 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2906 ## Now same exercise but with a different load strategy. All is load directly.
2907 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
2908 fields=MEDFileFields(fname) # here all is read, the SauvReader (or other Reader) is emulated
2909 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2910 allFMTSLeavesToDisplay=[]
2911 for fields in fields_per_mesh:
2912 allFMTSLeavesToDisplay2=[]
2914 tmp=fmts.splitDiscretizations()
2916 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
2918 allFMTSLeavesToDisplay2+=tmp
2920 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2922 self.assertEqual(len(allFMTSLeavesToDisplay),1)
2923 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
2924 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2925 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
2926 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
2927 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
2928 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
2929 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),3)
2931 mst=MEDFileMeshStruct.New(ms[0])
2933 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
2934 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2936 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2937 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2938 self.assertTrue(not ncc) # spaceDim 2 -> VTK wants 3D
2939 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))
2940 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
2941 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
2942 self.assertTrue(a3.isEqual(DataArrayInt([4,0,3,4,1,4,1,4,5,2])))
2943 self.assertTrue(a4 is None)
2944 self.assertTrue(a5 is None)
2945 a6,a7=mml2.retrieveFamilyIdsOnCells()
2946 self.assertTrue(a6.isEqual(DataArrayInt([0,0])))
2947 self.assertTrue(a7) # no copy here
2948 a8,a9=mml2.retrieveNumberIdsOnCells()
2949 self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
2950 self.assertTrue(a9) # no copy here
2951 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
2952 for i in range(1, 2):
2953 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2955 vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
2956 vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
2958 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
2959 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2960 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2961 self.assertEqual(f.getName(),fieldName2)
2962 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2963 self.assertTrue(v.isEqual(vExp0[i],1e-12))
2965 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
2966 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
2967 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2968 self.assertEqual(f.getName(),fieldName1)
2969 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2970 vExp1[i].setInfoOnComponents(["Smth"])
2971 self.assertTrue(v.isEqual(vExp1[i],1e-12))
2978 This test is a simple non profile CELL field but lying on cells of dimension -1 (not 0 as "usual").
2980 fname="ForMEDReader19.med"
2981 fieldName="ACellFieldOnDimM1"
2982 coo=DataArrayDouble(3) ; coo.iota()
2983 m=MEDCouplingCMesh() ; m.setCoords(coo,coo,coo) ; m.setName("mesh")
2984 m0=m.buildUnstructured() ; del m
2988 mm.setMeshAtLevel(0,m0)
2989 mm.setMeshAtLevel(-1,m1)
2990 ff=MEDFileFieldMultiTS()
2993 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
2994 f.setName(fieldName)
2995 arr=DataArrayDouble(24) ; arr.iota() ; arr.setInfoOnComponents(["AStr"])
2997 f.checkConsistencyLight()
2998 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
2999 ff.pushBackTimeStep(f1ts)
3002 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setTime(*t) ; f.setMesh(m1)
3003 f.setName(fieldName)
3004 arr=DataArrayDouble(24) ; arr.iota() ; arr.reverse() ; arr.setInfoOnComponents(["AStr"])
3006 f.checkConsistencyLight()
3007 f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
3008 ff.pushBackTimeStep(f1ts)
3012 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3013 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3014 fields=MEDFileFields(fname,False)
3015 fields.removeFieldsWithoutAnyTimeStep()
3016 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3017 allFMTSLeavesToDisplay=[]
3018 for fields in fields_per_mesh:
3019 allFMTSLeavesToDisplay2=[]
3021 tmp=fmts.splitDiscretizations()
3023 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3025 allFMTSLeavesToDisplay2+=tmp
3027 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3029 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3030 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3031 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3032 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3033 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3034 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3035 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3036 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3038 mst=MEDFileMeshStruct.New(ms[0])
3040 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3041 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3043 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3044 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3045 self.assertTrue(ncc)
3046 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))
3047 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])))
3048 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])))
3049 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])))
3050 self.assertTrue(a4 is None)
3051 self.assertTrue(a5 is None)
3052 a6,a7=mml2.retrieveFamilyIdsOnCells()
3053 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])))
3054 self.assertTrue(a7) # no copy here
3055 a8,a9=mml2.retrieveNumberIdsOnCells()
3056 self.assertTrue(a8 is None)
3057 self.assertTrue(a9) # no copy here
3058 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3059 self.assertTrue(not a10)
3060 self.assertTrue(a11) # no copy here
3061 a12,a13=mml2.retrieveNumberIdsOnNodes()
3062 self.assertTrue(not a12)
3063 self.assertTrue(a13) # no copy here
3064 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3065 for i in range(1, 2):
3066 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
3069 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
3070 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3071 f.loadArraysIfNecessary()
3072 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3073 self.assertEqual(f.getName(),fieldName)
3074 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3075 vExp=DataArrayDouble(24) ; vExp.iota()
3076 if i==1: vExp.reverse()
3077 vExp.setInfoOnComponents(["AStr"])
3078 self.assertTrue(v.isEqual(vExp,1e-12))
3084 """ This test works with groups/families on cells AND on nodes. Here 4 fields each on same time steps (2).
3085 1 field on CELLS without profile, 1 field on CELLS with profile, 1 field on NODES without profile, 1 field on NODES with profile.
3086 All of these 4 fields lies on a single mesh "mesh". The 2 fields on profile lies on a same support.
3087 One drawback of this test : no multi geom type. Coming soon !
3089 fname="ForMEDReader20.med"
3090 fieldName0="ANodeField"
3091 fieldName1="ACellField"
3092 fieldName2="ANodeFieldPfl"
3093 fieldName3="ACellFieldPfl"
3094 pfl2=DataArrayInt([5,6,7,10,11,12,15,16,17,20,21,22]) ; pfl2.setName("pfl2")
3095 pfl3=DataArrayInt([4,5,8,9,12,13]) ; pfl3.setName("pfl3")
3097 arr=DataArrayDouble(5) ; arr.iota()
3098 m=MEDCouplingCMesh("mesh") ; m.setCoords(arr,arr)
3099 m=m.buildUnstructured()
3101 mm.setMeshAtLevel(0,m)
3103 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
3104 fmts0.setDtUnit("s")
3105 fmts1=MEDFileFieldMultiTS() ; fs.pushField(fmts1)
3106 fmts1.setDtUnit("s")
3107 fmts2=MEDFileFieldMultiTS() ; fs.pushField(fmts2)
3108 fmts2.setDtUnit("s")
3109 fmts3=MEDFileFieldMultiTS() ; fs.pushField(fmts3)
3110 fmts3.setDtUnit("s")
3113 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
3114 f0.setName(fieldName0) ; f0.setTime(*t)
3115 da=m.getCoords().magnitude() ; da.setInfoOnComponents(["zeInfo"])
3117 f0.checkConsistencyLight()
3118 f1ts=MEDFileField1TS()
3119 f1ts.setFieldNoProfileSBT(f0)
3120 fmts0.pushBackTimeStep(f1ts)
3122 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
3123 f1.setName(fieldName1) ; f1.setTime(*t)
3124 da=m.computeCellCenterOfMass().magnitude() ; da.setInfoOnComponents(["zeInfoCell"])
3126 f1.checkConsistencyLight()
3127 f1ts=MEDFileField1TS()
3128 f1ts.setFieldNoProfileSBT(f1)
3129 fmts1.pushBackTimeStep(f1ts)
3131 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
3132 f2.setName(fieldName2) ; f2.setTime(*t)
3133 da=m.getCoords().magnitude()[pfl2] ; da.setInfoOnComponents(["zzzz"])
3135 f2.checkConsistencyLight()
3136 f1ts=MEDFileField1TS()
3137 f1ts.setFieldProfile(f2,mm,0,pfl2)
3138 fmts2.pushBackTimeStep(f1ts)
3140 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
3141 f3.setName(fieldName3) ; f3.setTime(*t)
3142 da=mTmp.computeCellCenterOfMass().magnitude() ; da.setInfoOnComponents(["abcdefg"])
3144 f3.checkConsistencyLight()
3145 f1ts=MEDFileField1TS()
3146 f1ts.setFieldProfile(f3,mm,0,pfl3)
3147 fmts3.pushBackTimeStep(f1ts)
3150 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m)
3151 f0.setName(fieldName0) ; f0.setTime(*t)
3152 da=m.getCoords().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3154 f0.checkConsistencyLight()
3155 f1ts=MEDFileField1TS()
3156 f1ts.setFieldNoProfileSBT(f0)
3157 fmts0.pushBackTimeStep(f1ts)
3159 f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
3160 f1.setName(fieldName1) ; f1.setTime(*t)
3161 da=m.computeCellCenterOfMass().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"])
3163 f1.checkConsistencyLight()
3164 f1ts=MEDFileField1TS()
3165 f1ts.setFieldNoProfileSBT(f1)
3166 fmts1.pushBackTimeStep(f1ts)
3168 f2=MEDCouplingFieldDouble(ON_NODES) ; mTmp=m[pfl3] ; mTmp.zipCoords() ; mTmp.setName(m.getName()) ; f2.setMesh(mTmp)
3169 f2.setName(fieldName2) ; f2.setTime(*t)
3170 da=m.getCoords().magnitude()[pfl2] ; da.reverse() ; da.setInfoOnComponents(["zzzz"])
3172 f2.checkConsistencyLight()
3173 f1ts=MEDFileField1TS()
3174 f1ts.setFieldProfile(f2,mm,0,pfl2)
3175 fmts2.pushBackTimeStep(f1ts)
3177 f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
3178 f3.setName(fieldName3) ; f3.setTime(*t)
3179 da=mTmp.computeCellCenterOfMass().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"])
3181 f3.checkConsistencyLight()
3182 f1ts=MEDFileField1TS()
3183 f1ts.setFieldProfile(f3,mm,0,pfl3)
3184 fmts3.pushBackTimeStep(f1ts)
3186 grp1=DataArrayInt([6,7,8,11,12,13,16,17,18]) ; grp1.setName("grp1")
3187 grp2=DataArrayInt([10,11,15,16,20,21]) ; grp2.setName("grp2")
3188 mm.setGroupsAtLevel(1,[grp1,grp2])
3189 grp3=DataArrayInt([4,5,6]) ; grp3.setName("grp3")
3190 grp4=DataArrayInt([8,9,10]) ; grp4.setName("grp4")
3191 mm.setGroupsAtLevel(0,[grp3,grp4])
3192 d=DataArrayInt(25) ; d.iota() ; d*=10 ; mm.setRenumFieldArr(1,d)
3193 d=DataArrayInt(16) ; d.iota() ; d*=11 ; mm.setRenumFieldArr(0,d)
3195 fs.appendGlobs(fmts2,1e-12)
3196 fs.appendGlobs(fmts3,1e-12)
3198 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3199 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3200 fields=MEDFileFields(fname,False)
3201 fields.removeFieldsWithoutAnyTimeStep()
3202 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3203 allFMTSLeavesToDisplay=[]
3204 for fields in fields_per_mesh:
3205 allFMTSLeavesToDisplay2=[]
3207 tmp=fmts.splitDiscretizations()
3209 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3211 allFMTSLeavesToDisplay2+=tmp
3213 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3215 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3216 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
3217 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3218 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3219 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
3220 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3221 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3222 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
3223 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)
3225 mst=MEDFileMeshStruct.New(ms[0])
3227 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3228 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3230 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3231 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3232 self.assertTrue(not ncc)
3233 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))
3234 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
3235 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
3236 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])))
3237 self.assertTrue(a4 is None)
3238 self.assertTrue(a5 is None)
3239 a6,a7=mml2.retrieveFamilyIdsOnCells()
3240 self.assertTrue(a6.isEqual(DataArrayInt([-5,-5,-5,-5,-6,-6,-6,-5,-7,-7,-7,-5,-5,-5,-5,-5])))
3241 self.assertTrue(a7) # no copy here
3242 a8,a9=mml2.retrieveNumberIdsOnCells()
3243 self.assertTrue(a8.isEqual(DataArrayInt([0,11,22,33,44,55,66,77,88,99,110,121,132,143,154,165])))
3244 self.assertTrue(a9) # no copy here
3245 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3246 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])))
3247 self.assertTrue(a11) # no copy here
3248 a12,a13=mml2.retrieveNumberIdsOnNodes()
3249 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])))
3250 self.assertTrue(a13) # no copy here
3251 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3252 for i in range(1, 2):
3253 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
3256 f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
3257 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3258 f.loadArraysIfNecessary()
3259 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3260 self.assertEqual(f.getName(),fieldName1)
3261 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3262 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])
3263 if i==1: vExp.reverse()
3264 vExp.setInfoOnComponents(["zeInfoCell"])
3265 self.assertTrue(v.isEqual(vExp,1e-12))
3267 f=allFMTSLeavesPerCommonSupport1[0][0][1][i]
3268 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3269 f.loadArraysIfNecessary()
3270 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3271 self.assertEqual(f.getName(),fieldName0)
3272 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3273 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])
3274 if i==1: vExp.reverse()
3275 vExp.setInfoOnComponents(["zeInfo"])
3276 self.assertTrue(v.isEqual(vExp,1e-12))
3278 ### Testing the 2nd support
3279 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3280 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3282 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3283 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3284 self.assertTrue(not ncc)
3285 self.assertTrue(not ncc)
3286 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))
3287 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9])))
3288 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25])))
3289 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])))
3290 self.assertTrue(a4 is None)
3291 self.assertTrue(a5 is None)
3292 a6,a7=mml2.retrieveFamilyIdsOnCells()
3293 self.assertTrue(a6.isEqual(DataArrayInt([-6,-6,-7,-7,-5,-5])))
3294 self.assertTrue(not a7) # copy here
3295 a8,a9=mml2.retrieveNumberIdsOnCells()
3296 self.assertTrue(a8.isEqual(DataArrayInt([44,55,88,99,132,143])))
3297 self.assertTrue(not a9) # copy here
3298 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3299 self.assertTrue(a10.isEqual(DataArrayInt([1,2,2,3,4,2,3,4,2,3,3,1])))
3300 self.assertTrue(not a11) # copy here
3301 a12,a13=mml2.retrieveNumberIdsOnNodes()
3302 self.assertTrue(a12.isEqual(DataArrayInt([50,60,70,100,110,120,150,160,170,200,210,220])))
3303 self.assertTrue(not a13) # copy here
3304 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3306 f=allFMTSLeavesPerCommonSupport1[1][0][0][i]
3307 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3308 f.loadArraysIfNecessary()
3309 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3310 self.assertEqual(f.getName(),fieldName3)
3311 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3312 vExp=DataArrayDouble([1.5811388300842,2.1213203435596,2.5495097567964,2.9154759474227,3.5355339059327,3.807886552932])
3313 if i==1: vExp.reverse()
3314 vExp.setInfoOnComponents(["abcdefg"])
3315 self.assertTrue(v.isEqual(vExp,1e-12))
3317 f=allFMTSLeavesPerCommonSupport1[1][0][1][i]
3318 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3319 f.loadArraysIfNecessary()
3320 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3321 self.assertEqual(f.getName(),fieldName2)
3322 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3323 vExp=DataArrayDouble([1.,1.4142135623731,2.2360679774998,2.,2.2360679774998,2.8284271247462,3.,3.1622776601684,3.605551275464,4.,4.1231056256177,4.4721359549996])
3324 if i==1: vExp.reverse()
3325 vExp.setInfoOnComponents(["zzzz"])
3326 self.assertTrue(v.isEqual(vExp,1e-12))
3332 """ Here the created MED file contains only a mesh. The aim here is to test capability of MEDReader to support no fields.
3333 This test checks nothing but write a MED file to be used by MEDReader tests.
3335 fname="ForMEDReader21.med"
3338 m0=MEDCouplingCMesh("mesh") ; arr=DataArrayDouble(5) ; arr.iota() ; m0.setCoords(arr,arr) ; m0=m0.buildUnstructured()
3339 mm.setMeshAtLevel(0,m0)
3340 grp0=DataArrayInt([5,6,9,10]) ; grp0.setName("Inside2D")
3341 grp1=DataArrayInt([0,1,2,3,4,7,8,11,12,13,14,15]) ; grp1.setName("Border2D")
3342 grp2=DataArrayInt([2,3,6,7]) ; grp2.setName("LowerRight2D")
3343 mm.setGroupsAtLevel(0,[grp0,grp1,grp2])
3345 m1=MEDCouplingUMesh(m0.getName(),1) ; m1.setCoords(m0.getCoords()) ; m1.allocateCells()
3346 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],
3347 [10,11],[11,12],[12,13],[13,14]]:
3348 m1.insertNextCell(NORM_SEG2,elt)
3350 mm.setMeshAtLevel(-1,m1)
3351 grp4=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) ; grp4.setName("Border1D")
3352 grp5=DataArrayInt([16,17,18,19,20,21,22,23]) ; grp5.setName("Inside1D")
3353 grp6=DataArrayInt([18,19,22,23]) ; grp6.setName("UpperRight1D")
3354 mm.setGroupsAtLevel(-1,[grp4,grp5,grp6])
3356 grp7=DataArrayInt([1,2,3,6,7,8,11,12,13,16,17,18,21,22,23]) ; grp7.setName("InsideYNode")
3357 grp8=DataArrayInt([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; grp8.setName("InsideXNode")
3358 mm.setGroupsAtLevel(1,[grp7,grp8])
3365 """ Use case where a field on nodes (ANodeField) on a mesh defined both in meshdim 2 and meshdim 1.
3366 The only possible geometrical support that suits the field is those with meshdim equal to 1 (-1 in relative).
3368 fname="ForMEDReader22.med"
3369 fieldName0="ANodeField"
3371 coo=DataArrayDouble([(4.,3.),(7.,3.),(2.,5.),(6.,5.),(9.,5.),(4.,7.),(8.,7.),(3.,8.),(9.,8.)])
3372 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])
3373 mm.setMeshAtLevel(0,m0)
3374 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])
3375 m1.insertNextCell(NORM_SEG2,[3,5]) ; m1.insertNextCell(NORM_SEG2,[5,7]) ; m1.insertNextCell(NORM_SEG2,[3,6]) ; m1.insertNextCell(NORM_SEG2,[6,8])
3376 mm.setMeshAtLevel(-1,m1)
3378 fmts0=MEDFileFieldMultiTS() ; fs.pushField(fmts0)
3379 fmts0.setDtUnit("s")
3382 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1)
3383 f0.setName(fieldName0) ; f0.setTime(*t)
3384 da=DataArrayDouble(9) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
3386 f0.checkConsistencyLight()
3387 f1ts=MEDFileField1TS()
3388 f1ts.setFieldNoProfileSBT(f0)
3389 fmts0.pushBackTimeStep(f1ts)
3392 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1)
3393 f0.setName(fieldName0) ; f0.setTime(*t)
3394 da=DataArrayDouble(9) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3396 f0.checkConsistencyLight()
3397 f1ts=MEDFileField1TS()
3398 f1ts.setFieldNoProfileSBT(f0)
3399 fmts0.pushBackTimeStep(f1ts)
3403 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3404 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3405 fields=MEDFileFields(fname,False)
3406 fields.removeFieldsWithoutAnyTimeStep()
3407 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3408 allFMTSLeavesToDisplay=[]
3409 for fields in fields_per_mesh:
3410 allFMTSLeavesToDisplay2=[]
3412 tmp=fmts.splitDiscretizations()
3414 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3416 allFMTSLeavesToDisplay2+=tmp
3418 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3420 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3421 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3422 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3423 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3424 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3425 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3426 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3427 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3429 mst=MEDFileMeshStruct.New(ms[0])
3431 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3432 self.assertEqual([NORM_TRI3,NORM_SEG2],fcscp.getGeoTypesAt(0,ms[0]))#contains all cell types of underlying mesh because only nodes with no profiles
3433 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3435 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3436 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3437 self.assertTrue(not ncc)
3438 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))
3439 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,3,3,3,3,3,3,3])))
3440 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,15,18,21,24,27,30])))
3441 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])))
3442 self.assertTrue(a4 is None)
3443 self.assertTrue(a5 is None)
3444 a6,a7=mml2.retrieveFamilyIdsOnCells()
3445 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0,0,0,0,0,0,0,0])))
3446 self.assertTrue(not a7) # copy here
3447 a8,a9=mml2.retrieveNumberIdsOnCells()
3448 self.assertTrue(not a8)
3449 self.assertTrue(a9) # nocopy here
3450 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3451 self.assertTrue(not a10)
3452 self.assertTrue(a11) # no copy here
3453 a12,a13=mml2.retrieveNumberIdsOnNodes()
3454 self.assertTrue(not a12)
3455 self.assertTrue(a13) # no copy here
3456 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3458 f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3459 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3460 f.loadArraysIfNecessary()
3461 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3462 self.assertEqual(f.getName(),fieldName0)
3463 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3464 vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"])
3465 self.assertTrue(v.isEqual(vExp,1e-12))
3467 f=allFMTSLeavesPerCommonSupport1[0][0][0][1]
3468 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3469 f.loadArraysIfNecessary()
3470 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3471 self.assertEqual(f.getName(),fieldName0)
3472 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3473 vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
3474 self.assertTrue(v.isEqual(vExp,1e-12))
3479 """ Non regression test 2219 of modes. Idem than test22 except that here the node field is on profile.
3481 fname="ForMEDReader23.med"
3482 fieldName0="ANodeField"
3484 coo=DataArrayDouble([(4.,3.),(7.,3.),(2.,5.),(6.,5.),(9.,5.),(4.,7.),(8.,7.),(3.,8.),(9.,8.)])
3485 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])
3486 mm.setMeshAtLevel(0,m0)
3487 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])
3488 m1.insertNextCell(NORM_SEG2,[3,5]) ; m1.insertNextCell(NORM_SEG2,[5,7]) ; m1.insertNextCell(NORM_SEG2,[3,6]) ; m1.insertNextCell(NORM_SEG2,[6,8])
3489 mm.setMeshAtLevel(-1,m1)
3490 fmts0=MEDFileFieldMultiTS()
3491 fmts0.setDtUnit("s")
3493 pfl=DataArrayInt([0,1,2,4]) ; pfl.setName("pfl")
3494 pflCell=DataArrayInt([0,1,2]) ; m1Part=m1[pflCell] ; m1Part.zipCoords()
3497 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1Part)
3498 f0.setName(fieldName0) ; f0.setTime(*t)
3499 da=DataArrayDouble(4) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
3501 f0.checkConsistencyLight()
3502 f1ts=MEDFileField1TS()
3503 f1ts.setFieldProfile(f0,mm,-1,pfl)
3504 fmts0.pushBackTimeStep(f1ts)
3507 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m1Part)
3508 f0.setName(fieldName0) ; f0.setTime(*t)
3509 da=DataArrayDouble(4) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
3511 f0.checkConsistencyLight()
3512 f1ts=MEDFileField1TS()
3513 f1ts.setFieldProfile(f0,mm,-1,pfl)
3514 fmts0.pushBackTimeStep(f1ts)
3516 fmts0.write(fname,0)
3517 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3518 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3519 fields=MEDFileFields(fname,False)
3520 fields.removeFieldsWithoutAnyTimeStep()
3521 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3522 allFMTSLeavesToDisplay=[]
3523 for fields in fields_per_mesh:
3524 allFMTSLeavesToDisplay2=[]
3526 tmp=fmts.splitDiscretizations()
3528 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3530 allFMTSLeavesToDisplay2+=tmp
3532 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3534 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3535 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3536 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3537 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3538 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3539 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3540 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
3541 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3543 mst=MEDFileMeshStruct.New(ms[0])
3545 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3546 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3548 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3549 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3550 self.assertTrue(not ncc)
3551 self.assertTrue(a0.isEqual(DataArrayDouble([(4.,3.,0.),(7.,3.,0.),(2.,5.,0.),(9.,5.,0.)]),1e-12))
3552 self.assertTrue(a1.isEqual(DataArrayByte([3,3,3])))
3553 self.assertTrue(a2.isEqual(DataArrayInt([0,3,6])))
3554 self.assertTrue(a3.isEqual(DataArrayInt([2,2,0,2,0,1,2,1,3])))
3555 self.assertTrue(a4 is None)
3556 self.assertTrue(a5 is None)
3557 a6,a7=mml2.retrieveFamilyIdsOnCells()
3558 self.assertTrue(a6.isEqual(DataArrayInt([0,0,0])))
3559 self.assertTrue(not a7) # copy here
3560 a8,a9=mml2.retrieveNumberIdsOnCells()
3561 self.assertTrue(not a8)
3562 self.assertTrue(a9) # nocopy here
3563 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3564 self.assertTrue(not a10)
3565 self.assertTrue(a11) # no copy here
3566 a12,a13=mml2.retrieveNumberIdsOnNodes()
3567 self.assertTrue(not a12)
3568 self.assertTrue(a13) # no copy here
3569 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3571 f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3572 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3573 f.loadArraysIfNecessary()
3574 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3575 self.assertEqual(f.getName(),fieldName0)
3576 vExp=DataArrayDouble(4) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"])
3577 self.assertTrue(v.isEqual(vExp,1e-12))
3579 f=allFMTSLeavesPerCommonSupport1[0][0][0][1]
3580 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3581 f.loadArraysIfNecessary()
3582 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3583 self.assertEqual(f.getName(),fieldName0)
3584 vExp=DataArrayDouble(4) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
3585 self.assertTrue(v.isEqual(vExp,1e-12))
3590 """ Non regression test for cartesian mesh whose the 3rd direction has only one node. It a false 3D mesh.
3592 fname="ForMEDReader24.med"
3593 fieldName0="zeFieldNode"
3594 cmesh=MEDCouplingCMesh("mesh")
3595 arr0=DataArrayDouble([0.,1.1,2.2,3.3,4.4])
3596 arr1=DataArrayDouble([0.,1.4,2.3])
3597 arr2=DataArrayDouble([5.])
3598 cmesh.setCoords(arr0,arr1,arr2)
3599 fmts0=MEDFileFieldMultiTS()
3600 fmts0.setDtUnit("s")
3603 f=MEDCouplingFieldDouble(ON_NODES) ; f.setName(fieldName0)
3605 arr=DataArrayDouble(15) ; arr.setInfoOnComponents(["tutu"]) ; arr.iota()
3608 f1ts=MEDFileField1TS()
3609 f1ts.setFieldNoProfileSBT(f)
3610 fmts0.pushBackTimeStep(f1ts)
3613 arr=DataArrayDouble(15) ; arr.setInfoOnComponents(["tutu"]) ; arr.iota()
3617 f1ts=MEDFileField1TS()
3618 f1ts.setFieldNoProfileSBT(f)
3619 fmts0.pushBackTimeStep(f1ts)
3621 mm=MEDFileCMesh() ; mm.setMesh(cmesh)
3623 fmts0.write(fname,0)
3624 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3625 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3626 fields=MEDFileFields(fname,False)
3627 fields.removeFieldsWithoutAnyTimeStep()
3628 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3629 allFMTSLeavesToDisplay=[]
3630 for fields in fields_per_mesh:
3631 allFMTSLeavesToDisplay2=[]
3633 tmp=fmts.splitDiscretizations()
3635 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3637 allFMTSLeavesToDisplay2+=tmp
3639 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3641 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3642 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
3643 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3644 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3645 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
3646 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3647 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
3648 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
3650 mst=MEDFileMeshStruct.New(ms[0])
3652 fcscp=allFMTSLeavesPerCommonSupport[0][1]
3653 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3655 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
3656 (a,b,c),d=mml2.buildVTUArrays()
3657 self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
3658 self.assertTrue(a.isEqual(arr0,1e-12))
3659 self.assertTrue(b.isEqual(arr1,1e-12))
3660 self.assertTrue(c.isEqual(arr2,1e-12))
3661 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3663 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
3664 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
3665 f.loadArraysIfNecessary()
3666 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
3667 self.assertEqual(f.getName(),fieldName0)
3668 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
3669 vExp=DataArrayDouble(15) ; vExp.iota(0) ; vExp.setInfoOnComponents(["tutu"])
3673 self.assertTrue(v.isEqual(vExp,1e-12))
3679 """ A tricky test that reproduces an invalid behaviour
3680 Here a same field is defined both on CELLS and GAUSS_PT, with a profile for each.
3681 The problem appears on array computation when performing CELLS then GAUSS_PT and CELLS again.
3683 fname="ForMEDReader25.med"
3685 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)
3686 m0=MEDCouplingUMesh("mesh",2) ; m0.setCoords(coords)
3688 m0.insertNextCell(NORM_QUAD4,[0,3,4,1])
3689 m0.insertNextCell(NORM_QUAD4,[1,4,5,2])
3690 m0.insertNextCell(NORM_QUAD4,[3,6,7,4])
3691 m0.insertNextCell(NORM_QUAD4,[4,7,8,5])
3692 m0.insertNextCell(NORM_QUAD4,[6,9,10,7])
3693 m0.insertNextCell(NORM_QUAD4,[7,10,11,8])
3694 m.setMeshAtLevel(0,m0)
3695 m1=MEDCouplingUMesh("mesh",1) ; m1.setCoords(coords)
3697 m1.insertNextCell(NORM_SEG2,[10,12])
3698 m1.insertNextCell(NORM_SEG2,[12,13])
3699 m1.insertNextCell(NORM_SEG2,[13,14])
3700 m.setMeshAtLevel(-1,m1)
3701 m.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6]))
3702 m.setFamilyFieldArr(-1,DataArrayInt([-7,-8,-9]))
3703 m.setFamilyFieldArr(1,DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))
3704 m.setRenumFieldArr(0,DataArrayInt([101,102,103,104,105,106]))
3705 m.setRenumFieldArr(-1,DataArrayInt([107,108,109]))
3706 m.setRenumFieldArr(1,DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217]))
3708 fmts=MEDFileFieldMultiTS()
3714 f1ts=MEDFileField1TS()
3715 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setName(name0)
3716 arr=DataArrayDouble([(-1,-11),(-2,-22)]) ; arr.setInfoOnComponents(info0)
3718 pfl0=DataArrayInt([0,1]) ; pfl0.setName(pflName0)
3719 f1ts.setFieldProfile(f,m,-1,pfl0)
3721 f2=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f2.setName(name0)
3722 arr=DataArrayDouble(15) ; arr.iota(1)
3723 arr=DataArrayDouble.Meld(arr,arr+10) ; arr.setInfoOnComponents(info0)
3725 pfl1=DataArrayInt([1,3,5]) ; pfl1.setName(pflName1)
3726 tmp=m0[pfl1] ; f2.setMesh(tmp)
3727 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])
3728 f2.checkConsistencyLight()
3729 f1ts.setFieldProfile(f2,m,0,pfl1)
3730 fmts.pushBackTimeStep(f1ts)
3734 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3735 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3736 fields=MEDFileFields(fname,False) # false is absolutely necessary for the test
3737 fields.removeFieldsWithoutAnyTimeStep()
3738 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3739 allFMTSLeavesToDisplay=[]
3740 for fields in fields_per_mesh:
3741 allFMTSLeavesToDisplay2=[]
3743 tmp=fmts.splitDiscretizations()
3745 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3747 allFMTSLeavesToDisplay2+=tmp
3749 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3751 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3752 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
3753 ### here the test is important !!! Pointers must be different !
3754 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3755 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3756 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3757 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
3758 ### here the test is important !!! Pointers must be different !
3759 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3760 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3761 self.assertTrue(allFMTSLeavesToDisplay[0][0][0].getUndergroundDataArray().getHiddenCppPointer()!=allFMTSLeavesToDisplay[0][1][0].getUndergroundDataArray().getHiddenCppPointer())
3762 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3763 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
3764 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
3766 mst=MEDFileMeshStruct.New(ms[0])
3767 # emulate first click
3768 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3769 self.assertEqual([NORM_SEG2],fcscp.getGeoTypesAt(0,ms[0]))
3770 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3772 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3773 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3774 self.assertTrue(not ncc) # copy here because 2D -> 3D
3775 expCoords=coords.changeNbOfComponents(3,0.)
3776 self.assertTrue(a0.isEqual(expCoords,1e-12))
3777 self.assertTrue(a1.isEqual(DataArrayByte([3,3])))
3778 self.assertTrue(a2.isEqual(DataArrayInt([0,3])))
3779 self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
3780 self.assertTrue(a4 is None)
3781 self.assertTrue(a5 is None)
3782 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3783 a6,a7=mml2.retrieveFamilyIdsOnCells()
3784 self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
3785 self.assertTrue(not a7) # copy here because profile on cells
3786 a8,a9=mml2.retrieveNumberIdsOnCells()
3787 self.assertTrue(a8.isEqual(DataArrayInt([107,108])))
3788 self.assertTrue(not a9) # copy here because profile on cells
3789 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3790 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3791 self.assertTrue(a11) # no copy here
3792 a12,a13=mml2.retrieveNumberIdsOnNodes()
3793 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3794 self.assertTrue(a13) # no copy here
3795 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3796 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3797 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3798 fff0.loadArraysIfNecessary()
3799 self.assertEqual([ON_CELLS],fff0.getTypesOfFieldAvailable())
3800 v=mml.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3801 self.assertEqual(fff0.getName(),name0)
3802 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3803 vExp=DataArrayDouble([(-1,-11),(-2,-22)]) ; vExp.setInfoOnComponents(info0)
3804 self.assertTrue(v.isEqual(vExp,1e-12))
3806 # emulate second click
3807 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3808 self.assertEqual([NORM_QUAD4],fcscp.getGeoTypesAt(0,ms[0]))
3809 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3811 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3812 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3813 self.assertTrue(not ncc) # copy here because 2D -> 3D
3814 expCoords=coords.changeNbOfComponents(3,0.)
3815 self.assertTrue(a0.isEqual(expCoords,1e-12))
3816 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9])))
3817 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10])))
3818 self.assertTrue(a3.isEqual(DataArrayInt([4,1,4,5,2,4,4,7,8,5,4,7,10,11,8])))
3819 self.assertTrue(a4 is None)
3820 self.assertTrue(a5 is None)
3821 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3822 a6,a7=mml2.retrieveFamilyIdsOnCells()
3823 self.assertTrue(a6.isEqual(DataArrayInt([-2,-4,-6])))
3824 self.assertTrue(not a7) # copy here because profile on cells
3825 a8,a9=mml2.retrieveNumberIdsOnCells()
3826 self.assertTrue(a8.isEqual(DataArrayInt([102,104,106])))
3827 self.assertTrue(not a9) # copy here because profile on cells
3828 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3829 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3830 self.assertTrue(a11) # no copy here
3831 a12,a13=mml2.retrieveNumberIdsOnNodes()
3832 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3833 self.assertTrue(a13) # no copy here
3834 fff1=allFMTSLeavesPerCommonSupport1[1][0][0][0]
3835 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
3836 fff1.loadArraysIfNecessary()
3837 self.assertEqual([ON_GAUSS_PT],fff1.getTypesOfFieldAvailable())
3838 v=mml.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
3839 self.assertEqual(fff1.getName(),name0)
3840 self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
3841 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)
3842 self.assertTrue(v.isEqual(vExp,1e-12))
3843 # emulate third click
3844 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
3845 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3847 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3848 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3849 self.assertTrue(not ncc) # copy here because 2D -> 3D
3850 expCoords=coords.changeNbOfComponents(3,0.)
3851 self.assertTrue(a0.isEqual(expCoords,1e-12))
3852 self.assertTrue(a1.isEqual(DataArrayByte([3,3])))
3853 self.assertTrue(a2.isEqual(DataArrayInt([0,3])))
3854 self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
3855 self.assertTrue(a4 is None)
3856 self.assertTrue(a5 is None)
3857 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3858 a6,a7=mml2.retrieveFamilyIdsOnCells()
3859 self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
3860 self.assertTrue(not a7) # copy here because profile on cells
3861 a8,a9=mml2.retrieveNumberIdsOnCells()
3862 self.assertTrue(a8.isEqual(DataArrayInt([107,108])))
3863 self.assertTrue(not a9) # copy here because profile on cells
3864 a10,a11=mml2.retrieveFamilyIdsOnNodes()
3865 self.assertTrue(a10.isEqual(DataArrayInt([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])))
3866 self.assertTrue(a11) # no copy here
3867 a12,a13=mml2.retrieveNumberIdsOnNodes()
3868 self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
3869 self.assertTrue(a13) # no copy here
3870 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
3871 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
3872 fff0.loadArraysIfNecessary()
3873 self.assertEqual([ON_CELLS],fff0.getTypesOfFieldAvailable())
3874 v=mml.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
3875 self.assertEqual(fff0.getName(),name0)
3876 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
3877 vExp=DataArrayDouble([(-1,-11),(-2,-22)]) ; vExp.setInfoOnComponents(info0)
3878 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
3884 """ 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.
3885 For this type of fields the support will contain only vertices.
3887 fname="ForMEDReader26.med"
3888 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.)])
3889 m0=MEDCouplingUMesh("mesh",2)
3891 for elt in [[2,6,3],[6,7,3],[9,6,5],[9,10,6]]:
3892 m0.insertNextCell(NORM_TRI3,elt)
3894 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]]:
3895 m0.insertNextCell(NORM_QUAD4,elt)
3897 m0.setCoords(coords)
3900 mm.setMeshAtLevel(0,m0)
3901 mm.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]))
3902 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
3904 f1ts0Node=MEDFileField1TS()
3905 f1ts1Node=MEDFileField1TS()
3906 f1ts2Cell=MEDFileField1TS()
3907 f1ts3Cell=MEDFileField1TS()
3908 f1ts4Cell=MEDFileField1TS()
3909 f1ts5Node=MEDFileField1TS()
3911 pfl0=DataArrayInt([4,5,6,8,9,12]) ; pfl0.setName("pfl0")
3912 pfl1=DataArrayInt([0,1,4,5,7,10]) ; pfl1.setName("pfl1")
3913 pfl2=DataArrayInt([0,1,2,3,4,5,6,7,10,11,14,15]) ; pfl2.setName("pfl2")
3915 f0Node=MEDCouplingFieldDouble(ON_NODES) ; f0Node.setName("f0Node")
3916 arr0=DataArrayDouble(6) ; arr0.iota()
3917 f0Node.setArray(arr0)
3918 f1ts0Node.setFieldProfile(f0Node,mm,0,pfl0)
3920 f1Node=MEDCouplingFieldDouble(ON_NODES) ; f1Node.setName("f1Node")
3921 arr1=DataArrayDouble(6) ; arr1.iota() ; arr1.reverse()
3922 f1Node.setArray(arr1)
3923 f1ts1Node.setFieldProfile(f1Node,mm,0,pfl0)
3925 f2Cell=MEDCouplingFieldDouble(ON_CELLS) ; f2Cell.setName("f2Cell")
3926 arr2=DataArrayDouble([2,3,0,1,4,5])
3927 f2Cell.setArray(arr2)
3928 f1ts2Cell.setFieldProfile(f2Cell,mm,0,pfl1)
3930 f3Cell=MEDCouplingFieldDouble(ON_CELLS) ; f3Cell.setName("f3Cell")
3931 arr3=DataArrayDouble([5,4,3,2,1,0])
3932 f3Cell.setArray(arr3)
3933 f1ts3Cell.setFieldProfile(f3Cell,mm,0,pfl1)
3935 f4Cell=MEDCouplingFieldDouble(ON_CELLS) ; f4Cell.setName("f4Cell")
3936 arr4=DataArrayDouble([2,2,0,1,1,0])
3937 f4Cell.setArray(arr4)
3938 f1ts4Cell.setFieldProfile(f4Cell,mm,0,pfl1)
3940 f5Node=MEDCouplingFieldDouble(ON_NODES) ; f5Node.setName("f5Node")
3941 arr5=DataArrayDouble([0,1,2,3,10,11,13,2,11,1,10,0])
3942 f5Node.setArray(arr5)
3943 f1ts5Node.setFieldProfile(f5Node,mm,0,pfl2)
3946 for f in [f1ts0Node,f1ts1Node,f1ts2Cell,f1ts3Cell,f1ts4Cell,f1ts5Node]:
3947 fmts=MEDFileFieldMultiTS()
3948 fmts.pushBackTimeStep(f)
3953 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
3954 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
3955 fields=MEDFileFields(fname,False)
3956 fields.removeFieldsWithoutAnyTimeStep()
3957 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
3958 allFMTSLeavesToDisplay=[]
3959 for fields in fields_per_mesh:
3960 allFMTSLeavesToDisplay2=[]
3962 tmp=fmts.splitDiscretizations()
3964 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
3966 allFMTSLeavesToDisplay2+=tmp
3968 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
3970 self.assertEqual(len(allFMTSLeavesToDisplay),1)
3971 self.assertEqual(len(allFMTSLeavesToDisplay[0]),6)
3972 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
3973 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
3974 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),6)
3975 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
3976 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
3977 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),4)
3978 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),2)# <- the smart one is here
3980 mst=MEDFileMeshStruct.New(ms[0])
3982 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
3983 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
3985 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
3986 self.assertEqual([3,4,0],mml2.getGeoTypes())
3987 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
3988 self.assertTrue(not ncc)
3989 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))
3990 self.assertTrue(a1.isEqual(DataArrayByte([5,9,1])))
3991 self.assertTrue(a2.isEqual(DataArrayInt([0,4,9])))
3992 self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,5])))
3993 self.assertTrue(a4 is None)
3994 self.assertTrue(a5 is None)
3995 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
3996 a6,a7=mml2.retrieveFamilyIdsOnCells()
3997 self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,13])))
3998 self.assertTrue(not a7) # copy here because profile on cells
3999 a8,a9=mml2.retrieveNumberIdsOnCells()
4000 self.assertTrue(a8 is None)
4001 self.assertTrue(a9) # no copy here because no number field
4002 a10,a11=mml2.retrieveFamilyIdsOnNodes()
4003 self.assertTrue(a10.isEqual(DataArrayInt([5,6,7,9,10,13])))
4004 self.assertTrue(not a11) # copy here
4005 a12,a13=mml2.retrieveNumberIdsOnNodes()
4006 self.assertTrue(a12 is None)
4007 self.assertTrue(a13) # no copy here because no number field
4009 fff0=allFMTSLeavesPerCommonSupport1[1][0][0][0]
4010 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
4011 fff0.loadArraysIfNecessary()
4012 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
4013 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4014 self.assertEqual(fff0.getName(),"f0Node")
4015 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4016 vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
4017 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
4019 fff1=allFMTSLeavesPerCommonSupport1[1][0][1][0]
4020 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
4021 fff1.loadArraysIfNecessary()
4022 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
4023 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4024 self.assertEqual(fff1.getName(),"f1Node")
4025 self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
4026 vExp=DataArrayDouble([5.,4.,3.,2.,1.,0.])
4027 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
4032 """ This test defines 2 fields f0 and f1 on nodes lying on an unstructured mesh with no cells.
4033 f0 is a field on all nodes. f1 is a partial field on nodes.
4035 fname="ForMEDReader27.med"
4036 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.)])
4037 m0=MEDCouplingUMesh("mesh",2)
4039 m0.setCoords(coords)
4042 mm.setMeshAtLevel(0,m0)
4043 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
4045 f1ts0=MEDFileField1TS()
4046 f1ts1=MEDFileField1TS()
4048 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m0) ; f0.setName("f0NoPfl")
4049 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.])
4051 f0.checkConsistencyLight()
4052 f1ts0.setFieldNoProfileSBT(f0)
4053 self.assertEqual(f1ts0.getMeshName(),"mesh")
4055 pfl1=DataArrayInt([0,1,2,3,4,5,6,8,9,12]) ; pfl1.setName("pfl1")
4056 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setName("f1Pfl")
4057 arr1=DataArrayDouble([3.,2.,1.,0.,2.,1.5,0.,1.,0.,0.2])
4059 f1ts1.setFieldProfile(f1,mm,0,pfl1)
4060 self.assertEqual(f1ts1.getMeshName(),"mesh")
4063 fmts0=MEDFileFieldMultiTS()
4064 fmts0.pushBackTimeStep(f1ts0)
4065 fmts1=MEDFileFieldMultiTS()
4066 fmts1.pushBackTimeStep(f1ts1)
4067 fs.pushField(fmts0) ; fs.pushField(fmts1)
4068 self.assertEqual(fs[0].getMeshName(),"mesh")
4069 self.assertEqual(fs[1].getMeshName(),"mesh")
4072 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4073 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4074 fields=MEDFileFields(fname,False)
4075 fields.removeFieldsWithoutAnyTimeStep()
4076 self.assertEqual(fields[0].getMeshName(),"mesh")
4077 self.assertEqual(fields[1].getMeshName(),"mesh")
4078 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4079 self.assertEqual(fields_per_mesh[0][0].getMeshName(),"mesh")
4080 self.assertEqual(fields_per_mesh[0][1].getMeshName(),"mesh")
4081 allFMTSLeavesToDisplay=[]
4082 for fields in fields_per_mesh:
4083 allFMTSLeavesToDisplay2=[]
4085 tmp=fmts.splitDiscretizations()
4087 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4089 allFMTSLeavesToDisplay2+=tmp
4091 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4093 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4094 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
4095 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4096 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4097 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
4098 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4099 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
4100 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
4101 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
4103 mst=MEDFileMeshStruct.New(ms[0])
4105 fcscp=allFMTSLeavesPerCommonSupport1[0][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)
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([])))
4113 self.assertTrue(a2.isEqual(DataArrayInt([])))
4114 self.assertTrue(a3.isEqual(DataArrayInt([])))
4115 self.assertTrue(a4 is None)
4116 self.assertTrue(a5 is None)
4117 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4119 fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
4120 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
4121 fff0.loadArraysIfNecessary()
4122 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
4123 self.assertEqual(fff0.getName(),"f0NoPfl")
4124 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4125 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])
4126 self.assertTrue(v.isEqual(vExp,1e-12))
4128 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
4129 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4131 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4132 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4133 self.assertTrue(not ncc)
4134 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))
4135 self.assertTrue(a1.isEqual(DataArrayByte([])))
4136 self.assertTrue(a2.isEqual(DataArrayInt([])))
4137 self.assertTrue(a3.isEqual(DataArrayInt([])))
4138 self.assertTrue(a4 is None)
4139 self.assertTrue(a5 is None)
4140 fff1=allFMTSLeavesPerCommonSupport1[1][0][0][0]
4141 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
4142 fff1.loadArraysIfNecessary()
4143 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
4144 self.assertEqual(fff1.getName(),"f1Pfl")
4145 self.assertNotEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer()) # pointers are not equal because Profile
4146 vExp=DataArrayDouble([3.,2.,1.,0.,2.,1.5,0.,1.,0.,0.2])
4147 self.assertTrue(v.isEqual(vExp,1e-12))
4152 """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh with cells including NORM_POINT1.
4153 Both f0 and f1 are on NODES and f2 and f3 are on cells. f1 and f2 share the same support.
4154 f0 is on a nodal support that is not matchable with any cells (including NORM_POINT1)
4155 This test is a more aggressive version of test26.
4157 fname="ForMEDReader28.med"
4158 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.)])
4159 m0=MEDCouplingUMesh("mesh",2)
4161 for elt in [[2,6,3],[6,7,3],[9,6,5],[9,10,6]]:
4162 m0.insertNextCell(NORM_TRI3,elt)
4164 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]]:
4165 m0.insertNextCell(NORM_QUAD4,elt)
4167 m0.setCoords(coords)
4168 m2=MEDCouplingUMesh("mesh",0) ; m2.setCoords(coords)
4170 for elt in [[8],[13]]:
4171 m2.insertNextCell(NORM_POINT1,elt)
4175 mm.setMeshAtLevel(0,m0)
4176 mm.setMeshAtLevel(-2,m2)
4177 mm.setFamilyFieldArr(0,DataArrayInt([-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]))
4178 mm.setFamilyFieldArr(-2,DataArrayInt([-12,-13]))
4179 mm.setFamilyFieldArr(1,DataArrayInt([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))
4181 f1ts0Node=MEDFileField1TS()
4182 f1ts1Node=MEDFileField1TS()
4183 f1ts2Cell=MEDFileField1TS()
4184 f1ts3Cell=MEDFileField1TS()
4186 pfl0=DataArrayInt([4,5,6,8,9,12]) ; pfl0.setName("pfl0")
4187 pfl1=DataArrayInt([0,1,4,5,7,10]) ; pfl1.setName("pfl1")
4188 pfl2=DataArrayInt([0,1,2,3,4,5,6,7,10,11,14,15]) ; pfl2.setName("pfl2")
4190 f0Node=MEDCouplingFieldDouble(ON_NODES) ; f0Node.setName("f0Node")
4191 arr0=DataArrayDouble(6) ; arr0.iota()
4192 f0Node.setArray(arr0)
4193 f1ts0Node.setFieldProfile(f0Node,mm,0,pfl0)
4195 f1Node=MEDCouplingFieldDouble(ON_NODES) ; f1Node.setName("f1Node")
4196 arr1=DataArrayDouble(12) ; arr1.iota() ; arr1.reverse()
4197 f1Node.setArray(arr1)
4198 f1ts1Node.setFieldProfile(f1Node,mm,0,pfl2)
4200 f2Cell=MEDCouplingFieldDouble(ON_CELLS) ; f2Cell.setName("f2Cell")
4201 arr2=DataArrayDouble([2,3,0,1,4,5])
4202 f2Cell.setArray(arr2)
4203 f1ts2Cell.setFieldProfile(f2Cell,mm,0,pfl1)
4205 f3Cell=MEDCouplingFieldDouble(ON_CELLS) ; f3Cell.setName("f3Cell")
4206 arr3=DataArrayDouble([5,4,3,2,1,0]) ; f3Cell.setArray(arr3)
4207 f1ts3Cell.setFieldProfile(f3Cell,mm,0,pfl1)
4209 arr3=DataArrayDouble([-1.1,-3.1]) ; f3Cell.setArray(arr3)
4210 f1ts3Cell.setFieldNoProfileSBT(f3Cell)
4213 for f in [f1ts0Node,f1ts1Node,f1ts2Cell,f1ts3Cell]:
4214 fmts=MEDFileFieldMultiTS()
4215 fmts.pushBackTimeStep(f)
4220 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4221 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4222 fields=MEDFileFields(fname,False)
4223 fields.removeFieldsWithoutAnyTimeStep()
4224 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4225 allFMTSLeavesToDisplay=[]
4226 for fields in fields_per_mesh:
4227 allFMTSLeavesToDisplay2=[]
4229 tmp=fmts.splitDiscretizations()
4231 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4233 allFMTSLeavesToDisplay2+=tmp
4235 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4237 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4238 self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
4239 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4240 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4241 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
4242 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4243 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),3)
4244 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
4245 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
4246 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[2][0]),1)
4248 mst=MEDFileMeshStruct.New(ms[0])
4250 fcscp=allFMTSLeavesPerCommonSupport1[2][1]
4251 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4253 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4254 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4255 self.assertTrue(not ncc)
4256 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))
4257 self.assertTrue(a1.isEqual(DataArrayByte([5,9,1,1])))
4258 self.assertTrue(a2.isEqual(DataArrayInt([0,4,9,11])))
4259 self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,3,1,5])))
4260 self.assertTrue(a4 is None)
4261 self.assertTrue(a5 is None)
4262 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4263 a6,a7=mml2.retrieveFamilyIdsOnCells()
4264 self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,-12,13])))
4265 self.assertTrue(not a7) # copy here because profile on cells
4266 a8,a9=mml2.retrieveNumberIdsOnCells()
4267 self.assertTrue(a8 is None)
4268 self.assertTrue(a9) # no copy here because no number field
4269 a10,a11=mml2.retrieveFamilyIdsOnNodes()
4270 self.assertTrue(a10.isEqual(DataArrayInt([5,6,7,9,10,13])))
4271 self.assertTrue(not a11) # copy here
4272 a12,a13=mml2.retrieveNumberIdsOnNodes()
4273 self.assertTrue(a12 is None)
4274 self.assertTrue(a13) # no copy here because no number field
4276 fff0=allFMTSLeavesPerCommonSupport1[2][0][0][0]
4277 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
4278 fff0.loadArraysIfNecessary()
4279 v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
4280 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4281 self.assertEqual(fff0.getName(),"f0Node")
4282 self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4283 vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
4284 self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
4286 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4287 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4289 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4290 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4291 self.assertTrue(not ncc)
4292 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))
4293 self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9,9])))
4294 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,13,18,23])))
4295 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])))
4296 self.assertTrue(a4 is None)
4297 self.assertTrue(a5 is None)
4298 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4299 fff1=allFMTSLeavesPerCommonSupport1[0][0][0][0]
4300 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
4301 fff1.loadArraysIfNecessary()
4302 v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
4303 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4304 self.assertEqual(fff1.getName(),"f2Cell")
4305 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4306 vExp=DataArrayDouble([2,3,0,1,4,5])
4307 self.assertTrue(v.isEqual(vExp,1e-12))
4308 fff2=allFMTSLeavesPerCommonSupport1[0][0][1][0]
4309 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff2,mst)
4310 fff2.loadArraysIfNecessary()
4311 v=mml2.buildDataArray(fsst,fields,fff2.getUndergroundDataArray())
4312 self.assertEqual(fff2.getName(),"f1Node")
4313 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4314 vExp=DataArrayDouble([11,10,9,8,7,6,5,4,3,2,1,0])
4315 self.assertTrue(v.isEqual(vExp,1e-12))
4317 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
4318 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4320 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4321 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4322 self.assertTrue(ncc)# here all the 16 nodes are taken
4323 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))
4324 self.assertTrue(a1.isEqual(DataArrayByte([1,1,5,5,9,9,9,9])))
4325 self.assertTrue(a2.isEqual(DataArrayInt([0,2,4,8,12,17,22,27])))
4326 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])))
4327 self.assertTrue(a4 is None)
4328 self.assertTrue(a5 is None)
4329 fff3=allFMTSLeavesPerCommonSupport1[1][0][0][0]
4330 fsst=MEDFileField1TSStructItem.BuildItemFrom(fff3,mst)
4331 fff3.loadArraysIfNecessary()
4332 v=mml2.buildDataArray(fsst,fields,fff3.getUndergroundDataArray())
4333 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4334 self.assertEqual(fff3.getName(),"f3Cell")
4335 self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
4336 vExp=DataArrayDouble([-1.1,-3.1,5,4,3,2,1,0])
4337 self.assertTrue(v.isEqual(vExp,1e-12))
4342 """ This test focused on HEXA27 cell for which the MED numbering is not equal to the VTK numbering. So here the HEXA27 cell is those in MED file documentation (reference element).
4344 fname="ForMEDReader29.med"
4345 coo=DataArrayDouble([[0.,2.,2.],[0.,0.,2.],[2.,0.,2.],[2.,2.,2.],[0.,2.,0.],[0.,0.,0.],[2.,0.,0.],[2.,2.,0.], [0.,1.,2.],[1.,0.,2.],[2.,1.,2.],[1.,2.,2.], [0.,1.,0.],[1.,0.,0.],[2.,1.,0.],[1.,2.,0.], [0.,2.,1.],[0.,0.,1.],[2.,0.,1.],[2.,2.,1.], [1.,1.,2.], [0.,1.,1.],[1.,0.,1.],[2.,1.,1.],[1.,2.,1.], [1.,1.,0.], [1.,1.,1.]])
4346 m=MEDCouplingUMesh("mesh",3) ; m.setCoords(coo)
4348 # MED = [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]
4349 # VTK = [0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,16,17,18,19,24,22,21,23,20,25,26]
4350 m.insertNextCell(NORM_HEXA27,[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])
4351 fCell=MEDCouplingFieldDouble(ON_CELLS) ; fCell.setName("fCell")
4352 arrCell=DataArrayDouble([7.]) ; arrCell.setInfoOnComponent(0,"smth") ; fCell.setArray(arrCell)
4354 WriteField(fname,fCell,True)
4355 refCoo=[-1.,-1.,-1.,-1.,1.,-1.,1.,1.,-1.,1.,-1.,-1.,-1.,-1.,1.,-1.,1.,1.,1.,1.,1.,1.,-1.,1.,-1.,0.,-1.,0.,1.,-1.,1.,0.,-1.,0.,-1.,-1.,-1.,0.,1.,0.,1.,1.,1.,0.,1.,0.,-1.,1.,-1.,-1.,0.,-1.,1.,0.,1.,1.,0.,1.,-1.,0.,0.,0.,-1.,-1.,0.,0.,0.,1.,0.,1.,0.,0.,0.,-1.,0.,0.,0.,1.,0.,0.,0.]
4356 weights=[0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.7023319615912209,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571]
4357 gCoords=[-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,0.0,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.0,0.0,0.0,0.0,0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,0.0,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483]
4358 fGauss=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fGauss.setName("fGauss")
4360 fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
4361 arrGauss=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arrGauss.setInfoOnComponent(0,"gaussc") ; arrGauss.iota()
4362 fGauss.setArray(arrGauss)
4363 WriteFieldUsingAlreadyWrittenMesh(fname,fGauss)
4364 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4365 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4366 fields=MEDFileFields(fname,False)
4367 fields.removeFieldsWithoutAnyTimeStep()
4368 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4369 allFMTSLeavesToDisplay=[]
4370 for fields in fields_per_mesh:
4371 allFMTSLeavesToDisplay2=[]
4373 tmp=fmts.splitDiscretizations()
4375 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4377 allFMTSLeavesToDisplay2+=tmp
4379 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4381 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4382 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
4383 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4384 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4385 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
4386 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4387 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
4388 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
4390 mst=MEDFileMeshStruct.New(ms[0])
4392 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4393 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4395 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4396 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4397 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4398 self.assertTrue(a0.isEqual(coo,1e-12))
4399 self.assertTrue(a1.isEqual(DataArrayByte([29])))
4400 self.assertTrue(a2.isEqual(DataArrayInt([0])))
4401 # the connectivity must be not a iota as declared in m.insertNextCell
4402 self.assertTrue(a3.isEqual(DataArrayInt([27,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,24,22,21,23,20,25,26])))# the test is on this line to check that connectivity has been processed for HEXA27
4403 self.assertTrue(a4 is None)
4404 self.assertTrue(a5 is None)
4405 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][0]
4406 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4407 ffCell.loadArraysIfNecessary()
4408 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4409 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4410 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
4411 self.assertEqual(ffCell.getName(),"fCell")
4412 self.assertTrue(v.isEqual(arrCell,1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble([7.]),1e-12)) ; self.assertEqual(v.getInfoOnComponents(),["smth"])
4415 ffGauss=allFMTSLeavesPerCommonSupport1[0][0][1][0]
4416 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffGauss,mst)
4417 ffGauss.loadArraysIfNecessary()
4418 v=mml2.buildDataArray(fsst,fields,ffGauss.getUndergroundDataArray())
4419 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4420 self.assertEqual(v.getHiddenCppPointer(),ffGauss.getUndergroundDataArray().getHiddenCppPointer())
4421 self.assertEqual(ffGauss.getName(),"fGauss")
4422 self.assertTrue(v.isEqual(arrGauss, 1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble(list(range(27))), 1e-12)) ; self.assertEqual(v.getInfoOnComponents(), ["gaussc"])
4423 ffGauss=allFMTSLeavesPerCommonSupport1[0][0][1][0]
4428 """ This test is focused on cartesian meshes. Here the cartesian mesh "CartMesh" has a field on HEXA8 (FieldOnCells) and a field on QUAD4 (FieldOnFaces).
4429 So the first one (FieldOnCells) lies on a cartesian mesh whereas the second one lies on unstructured one.
4431 fname="ForMEDReader30.med"
4432 c=MEDCouplingCMesh()
4433 arrX=DataArrayDouble(3) ; arrX.iota()
4434 arrY=DataArrayDouble(4) ; arrY.iota()
4435 arrZ=DataArrayDouble(5) ; arrZ.iota()
4436 c.setCoords(arrX,arrY,arrZ)
4437 c.setName("CartMesh")
4440 tmpFacesMesh=c.build1SGTSubLevelMesh()
4441 famIdFaces=DataArrayInt(98) ; famIdFaces[:36]=-1 ; famIdFaces[36:68]=-2 ; famIdFaces[68:]=-3
4442 famIdCells=DataArrayInt(24) ; famIdCells[:]=0
4443 #cc.setFamilyFieldArr(0,famIdCells)
4444 #cc.setFamilyFieldArr(-1,famIdFaces)
4445 cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3)
4446 cc.setFamiliesOnGroup("FacesX1",["FacesX"])
4447 cc.setFamiliesOnGroup("FacesY1",["FacesY"])
4448 cc.setFamiliesOnGroup("FacesZ1",["FacesZ"])
4450 fmts0=MEDFileFieldMultiTS()
4451 fmts1=MEDFileFieldMultiTS()
4453 f1ts=MEDFileField1TS()
4454 fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnFaces")
4455 arr=DataArrayDouble(98) ; arr.iota() ; arr[i]=100.
4456 fFaces.setArray(arr)
4457 fFaces.setTime(float(i)+0.1,i,-1)
4458 fFaces.setMesh(tmpFacesMesh)
4459 f1ts.setFieldNoProfileSBT(fFaces)
4460 fmts0.pushBackTimeStep(f1ts)
4462 f1ts=MEDFileField1TS()
4463 fCells=MEDCouplingFieldDouble(ON_CELLS) ; fCells.setName("FieldOnCells")
4464 arr=DataArrayDouble(24) ; arr.iota() ; arr[i%24]=30.
4465 fCells.setArray(arr)
4466 fCells.setTime(float(i)+0.1,i,-1)
4468 f1ts.setFieldNoProfileSBT(fCells)
4469 fmts1.pushBackTimeStep(f1ts)
4476 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4477 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4478 fields=MEDFileFields(fname,False)
4479 fields.removeFieldsWithoutAnyTimeStep()
4480 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4481 allFMTSLeavesToDisplay=[]
4482 for fields in fields_per_mesh:
4483 allFMTSLeavesToDisplay2=[]
4485 tmp=fmts.splitDiscretizations()
4487 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4489 allFMTSLeavesToDisplay2+=tmp
4491 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4493 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4494 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
4495 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4496 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4497 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
4498 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4499 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
4500 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
4501 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
4503 mst=MEDFileMeshStruct.New(ms[0])
4505 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4506 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4508 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here CMesh is important
4509 (a,b,c),d=mml2.buildVTUArrays()
4510 self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
4511 self.assertTrue(a.isEqual(arrX,1e-12))
4512 self.assertTrue(b.isEqual(arrY,1e-12))
4513 self.assertTrue(c.isEqual(arrZ,1e-12))
4514 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4516 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
4517 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4518 ffCell.loadArraysIfNecessary()
4519 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4520 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
4521 myarr=DataArrayDouble(24) ; myarr.iota() ; myarr[i%24]=30.
4522 self.assertEqual(ffCell.getName(),"FieldOnCells")
4523 self.assertTrue(v.isEqual(myarr,1e-12))
4526 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
4527 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4529 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important
4530 ref=ms[0].getImplicitFaceMesh().getCoords().getHiddenCppPointer()
4531 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4532 self.assertEqual(ref,a0.getHiddenCppPointer())
4533 self.assertTrue(ncc)
4534 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,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
4535 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,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315,320,325,330,335,340,345,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440,445,450,455,460,465,470,475,480,485])))
4536 self.assertTrue(a3.isEqual(DataArrayInt([4,0,12,15,3,4,12,24,27,15,4,24,36,39,27,4,36,48,51,39,4,3,15,18,6,4,15,27,30,18,4,27,39,42,30,4,39,51,54,42,4,6,18,21,9,4,18,30,33,21,4,30,42,45,33,4,42,54,57,45,4,1,13,16,4,4,13,25,28,16,4,25,37,40,28,4,37,49,52,40,4,4,16,19,7,4,16,28,31,19,4,28,40,43,31,4,40,52,55,43,4,7,19,22,10,4,19,31,34,22,4,31,43,46,34,4,43,55,58,46,4,2,14,17,5,4,14,26,29,17,4,26,38,41,29,4,38,50,53,41,4,5,17,20,8,4,17,29,32,20,4,29,41,44,32,4,41,53,56,44,4,8,20,23,11,4,20,32,35,23,4,32,44,47,35,4,44,56,59,47,4,0,12,13,1,4,12,24,25,13,4,24,36,37,25,4,36,48,49,37,4,1,13,14,2,4,13,25,26,14,4,25,37,38,26,4,37,49,50,38,4,3,15,16,4,4,15,27,28,16,4,27,39,40,28,4,39,51,52,40,4,4,16,17,5,4,16,28,29,17,4,28,40,41,29,4,40,52,53,41,4,6,18,19,7,4,18,30,31,19,4,30,42,43,31,4,42,54,55,43,4,7,19,20,8,4,19,31,32,20,4,31,43,44,32,4,43,55,56,44,4,9,21,22,10,4,21,33,34,22,4,33,45,46,34,4,45,57,58,46,4,10,22,23,11,4,22,34,35,23,4,34,46,47,35,4,46,58,59,47,4,0,1,4,3,4,3,4,7,6,4,6,7,10,9,4,1,2,5,4,4,4,5,8,7,4,7,8,11,10,4,12,13,16,15,4,15,16,19,18,4,18,19,22,21,4,13,14,17,16,4,16,17,20,19,4,19,20,23,22,4,24,25,28,27,4,27,28,31,30,4,30,31,34,33,4,25,26,29,28,4,28,29,32,31,4,31,32,35,34,4,36,37,40,39,4,39,40,43,42,4,42,43,46,45,4,37,38,41,40,4,40,41,44,43,4,43,44,47,46,4,48,49,52,51,4,51,52,55,54,4,54,55,58,57,4,49,50,53,52,4,52,53,56,55,4,55,56,59,58])))
4537 self.assertTrue(a4 is None)
4538 self.assertTrue(a5 is None)
4540 ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i]
4541 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4542 ffCell.loadArraysIfNecessary()
4543 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4544 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
4545 myarr=DataArrayDouble(98) ; myarr.iota() ; myarr[i]=100.
4546 self.assertEqual(ffCell.getName(),"FieldOnFaces")
4547 self.assertTrue(v.isEqual(myarr,1e-12))
4553 """non regression test of EDF 7972"""
4554 fname="ForMEDReader31.med"
4555 c=MEDCouplingCMesh()
4556 arrX=DataArrayDouble(3) ; arrX.iota()
4557 arrY=DataArrayDouble(4) ; arrY.iota()
4558 arrZ=DataArrayDouble(5) ; arrZ.iota()
4559 c.setCoords(arrX,arrY,arrZ)
4560 c.setName("CartMesh")
4563 famIdCells=DataArrayInt(24) ; famIdCells[:]=0
4564 cc.setFamilyFieldArr(0,famIdCells)
4565 #cc.setFamilyFieldArr(-1,famIdFaces)
4566 cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3)
4567 cc.setFamiliesOnGroup("FacesX1",["FacesX"])
4568 cc.setFamiliesOnGroup("FacesY1",["FacesY"])
4569 cc.setFamiliesOnGroup("FacesZ1",["FacesZ"])
4570 fmts0=MEDFileFieldMultiTS()
4571 fmts1=MEDFileFieldMultiTS()
4572 pfl=DataArrayInt(11) ; pfl.iota() ; pfl.setName("PflOnHECA8")
4574 f1ts=MEDFileField1TS()
4575 fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnCells")
4576 arr=DataArrayDouble(11) ; arr.iota() ; arr[i%11]=100.
4577 fFaces.setArray(arr)
4578 fFaces.setTime(float(i)+0.1,i,-1)
4579 fFaces.setMesh(c.buildUnstructured()[:11])
4580 f1ts.setFieldProfile(fFaces,cc,0,pfl)# here, a test is done to check that "NORM_HEXA8" string is not 30 times appended at the end of pfl name.
4581 self.assertEqual("PflOnHECA8",pfl.getName())
4582 fmts0.pushBackTimeStep(f1ts)
4588 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4589 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4590 fields=MEDFileFields(fname,False)
4591 fields.removeFieldsWithoutAnyTimeStep()
4592 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4593 allFMTSLeavesToDisplay=[]
4594 for fields in fields_per_mesh:
4595 allFMTSLeavesToDisplay2=[]
4597 tmp=fmts.splitDiscretizations()
4599 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4601 allFMTSLeavesToDisplay2+=tmp
4603 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4605 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4606 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
4607 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4608 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4609 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
4610 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4611 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
4612 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
4614 mst=MEDFileMeshStruct.New(ms[0])
4616 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4617 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4619 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important
4620 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4621 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4622 self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children. This is the most important line in the test.
4623 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.,3.,0.,1.,3.,0.,2.,3.,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.,3.,1.,1.,3.,1.,2.,3.,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.,3.,2.,1.,3.,2.,2.,3.,2.,0.,0.,3.,1.,0.,3.,2.,0.,3.,0.,1.,3.,1.,1.,3.,2.,1.,3.,0.,2.,3.,1.,2.,3.,2.,2.,3.,0.,3.,3.,1.,3.,3.,2.,3.,3.,0.,0.,4.,1.,0.,4.,2.,0.,4.,0.,1.,4.,1.,1.,4.,2.,1.,4.,0.,2.,4.,1.,2.,4.,2.,2.,4.,0.,3.,4.,1.,3.,4.,2.,3.,4.],60,3),1e-12))
4624 self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12,12,12,12])))
4625 self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,81,90])))
4626 self.assertTrue(a3.isEqual(DataArrayInt([8,1,0,3,4,13,12,15,16,8,2,1,4,5,14,13,16,17,8,4,3,6,7,16,15,18,19,8,5,4,7,8,17,16,19,20,8,7,6,9,10,19,18,21,22,8,8,7,10,11,20,19,22,23,8,13,12,15,16,25,24,27,28,8,14,13,16,17,26,25,28,29,8,16,15,18,19,28,27,30,31,8,17,16,19,20,29,28,31,32,8,19,18,21,22,31,30,33,34])))
4627 self.assertTrue(a4 is None)
4628 self.assertTrue(a5 is None)
4630 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
4631 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4632 ffCell.loadArraysIfNecessary()
4633 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4634 # self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) # to be improved... maybe this line could be true
4635 myarr=DataArrayDouble(11) ; myarr.iota() ; myarr[i%11]=100.
4636 self.assertEqual(ffCell.getName(),"FieldOnCells")
4637 self.assertTrue(v.isEqual(myarr,1e-12))
4643 """ This test is close to test30 except that here the profiles on dim-1 of structured mesh is considered here."""
4644 fname="ForMEDReader32.med"
4645 c=MEDCouplingCMesh()
4646 arrX=DataArrayDouble(3) ; arrX.iota()
4647 arrY=DataArrayDouble(4) ; arrY.iota()
4648 arrZ=DataArrayDouble(5) ; arrZ.iota()
4649 c.setCoords(arrX,arrY,arrZ)
4650 c.setName("CartMesh")
4653 tmpFacesMesh=c.build1SGTSubLevelMesh()
4654 famIdFaces=DataArrayInt(98) ; famIdFaces[:36]=-1 ; famIdFaces[36:68]=-2 ; famIdFaces[68:]=-3
4655 famIdCells=DataArrayInt(24) ; famIdCells[:]=0
4656 cc.setFamilyFieldArr(0,famIdCells)
4657 #cc.setFamilyFieldArr(-1,famIdFaces)
4658 cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3)
4659 cc.setFamiliesOnGroup("FacesX1",["FacesX"])
4660 cc.setFamiliesOnGroup("FacesY1",["FacesY"])
4661 cc.setFamiliesOnGroup("FacesZ1",["FacesZ"])
4662 fmts0=MEDFileFieldMultiTS()
4663 fmts1=MEDFileFieldMultiTS()
4664 pfl=DataArrayInt(31) ; pfl.iota() ; pfl.setName("PflOnQUAD4")
4666 f1ts=MEDFileField1TS()
4667 fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnFaces")
4668 arr=DataArrayDouble(31) ; arr.iota() ; arr[i]=100.
4669 fFaces.setArray(arr)
4670 fFaces.setTime(float(i)+0.1,i,-1)
4671 fFaces.setMesh(tmpFacesMesh[:31])
4672 f1ts.setFieldProfile(fFaces,cc,-1,pfl)# here, a test is done to check that "NORM_QUAD4" string is not 30 times appended at the end of pfl name.
4673 self.assertEqual("PflOnQUAD4",pfl.getName())
4674 fmts0.pushBackTimeStep(f1ts)
4676 f1ts=MEDFileField1TS()
4677 fCells=MEDCouplingFieldDouble(ON_CELLS) ; fCells.setName("FieldOnCells")
4678 arr=DataArrayDouble(24) ; arr.iota() ; arr[i%24]=30.
4679 fCells.setArray(arr)
4680 fCells.setTime(float(i)+0.1,i,-1)
4682 f1ts.setFieldNoProfileSBT(fCells)
4683 fmts1.pushBackTimeStep(f1ts)
4690 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4691 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4692 fields=MEDFileFields(fname,False)
4693 fields.removeFieldsWithoutAnyTimeStep()
4694 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4695 allFMTSLeavesToDisplay=[]
4696 for fields in fields_per_mesh:
4697 allFMTSLeavesToDisplay2=[]
4699 tmp=fmts.splitDiscretizations()
4701 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4703 allFMTSLeavesToDisplay2+=tmp
4705 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4707 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4708 self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
4709 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4710 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4711 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
4712 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4713 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
4714 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
4715 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
4717 mst=MEDFileMeshStruct.New(ms[0])
4719 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4720 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4722 self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here CMesh is important
4723 (a,b,c),d=mml2.buildVTUArrays()
4724 self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
4725 self.assertTrue(a.isEqual(arrX,1e-12))
4726 self.assertTrue(b.isEqual(arrY,1e-12))
4727 self.assertTrue(c.isEqual(arrZ,1e-12))
4728 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4730 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
4731 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4732 ffCell.loadArraysIfNecessary()
4733 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4734 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
4735 myarr=DataArrayDouble(24) ; myarr.iota() ; myarr[i%24]=30.
4736 self.assertEqual(ffCell.getName(),"FieldOnCells")
4737 self.assertTrue(v.isEqual(myarr,1e-12))
4740 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
4741 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4743 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important
4744 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4745 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4746 self.assertTrue(ncc)# True because, the coords are computed by the implicit unstructured level -1 structured mesh
4747 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.,3.,0.,1.,3.,0.,2.,3.,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.,3.,1.,1.,3.,1.,2.,3.,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.,3.,2.,1.,3.,2.,2.,3.,2.,0.,0.,3.,1.,0.,3.,2.,0.,3.,0.,1.,3.,1.,1.,3.,2.,1.,3.,0.,2.,3.,1.,2.,3.,2.,2.,3.,0.,3.,3.,1.,3.,3.,2.,3.,3.,0.,0.,4.,1.,0.,4.,2.,0.,4.,0.,1.,4.,1.,1.,4.,2.,1.,4.,0.,2.,4.,1.,2.,4.,2.,2.,4.,0.,3.,4.,1.,3.,4.,2.,3.,4.],60,3),1e-12))
4748 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,9,9,9,9,9,9,9])))
4749 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,120,125,130,135,140,145,150])))
4750 self.assertTrue(a3.isEqual(DataArrayInt([4,0,12,15,3,4,12,24,27,15,4,24,36,39,27,4,36,48,51,39,4,3,15,18,6,4,15,27,30,18,4,27,39,42,30,4,39,51,54,42,4,6,18,21,9,4,18,30,33,21,4,30,42,45,33,4,42,54,57,45,4,1,13,16,4,4,13,25,28,16,4,25,37,40,28,4,37,49,52,40,4,4,16,19,7,4,16,28,31,19,4,28,40,43,31,4,40,52,55,43,4,7,19,22,10,4,19,31,34,22,4,31,43,46,34,4,43,55,58,46,4,2,14,17,5,4,14,26,29,17,4,26,38,41,29,4,38,50,53,41,4,5,17,20,8,4,17,29,32,20,4,29,41,44,32])))
4751 self.assertTrue(a4 is None)
4752 self.assertTrue(a5 is None)
4753 a6,a7=mml2.retrieveFamilyIdsOnCells()
4754 self.assertTrue(a6 is None)
4757 ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i]
4758 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4759 ffCell.loadArraysIfNecessary()
4760 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4761 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
4762 myarr=DataArrayDouble(31) ; myarr.iota() ; myarr[i]=100.
4763 self.assertEqual(ffCell.getName(),"FieldOnFaces")
4764 self.assertTrue(v.isEqual(myarr,1e-12))
4770 """Non regression test concerning polygons. Thanks Adrien. This bug can't be shown by simply reading an displaying a MED file containing only polygons. A filter must be applied on it to show it. The a2 array was responsible of that bug."""
4771 fname="ForMEDReader33.med"
4772 fieldName="ACellField"
4773 coo=DataArrayDouble([(5.5,0.5),(5.5,-0.5),(6.5,0.5),(6.5,-0.5),(6.5,1.5),(7.5,0.5),(7.5,-0.5),(7.5,1.5),(7.5,2.5),(8.5,0.5),(8.5,-0.5),(8.5,1.5),(8.5,2.5),(8.5,3.5),(8.55,0.5),(8.55,-0.5),(8.55,1.5),(8.55,2.5),(8.55,3.5)])
4774 m=MEDCouplingUMesh("mesh",2)
4777 for i,c in enumerate([(1,0,2,3),(3,2,5,6),(2,4,7,5),(6,5,9,10),(5,7,11,9),(7,8,12,11),(10,9,14,15),(9,11,16,14),(11,12,17,16),(12,13,18,17)]):
4784 m.insertNextCell(typ,c)
4787 mm.setMeshAtLevel(0,m)
4790 fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i)+0.1,i,0)
4791 fCell0.setName(fieldName) ; fCell0.setMesh(m)
4792 arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota(0) ; arr[i%10]=100.
4793 fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]"])
4794 fCell0.checkConsistencyLight()
4795 WriteFieldUsingAlreadyWrittenMesh(fname,fCell0)
4797 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4798 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4799 fields=MEDFileFields(fname,False)
4800 fields.removeFieldsWithoutAnyTimeStep()
4801 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4802 allFMTSLeavesToDisplay=[]
4803 for fields in fields_per_mesh:
4804 allFMTSLeavesToDisplay2=[]
4806 tmp=fmts.splitDiscretizations()
4808 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
4810 allFMTSLeavesToDisplay2+=tmp
4812 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4814 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4815 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
4816 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4817 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
4818 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
4819 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
4820 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
4821 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
4823 mst=MEDFileMeshStruct.New(ms[0])
4825 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
4826 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4828 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4829 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4830 self.assertTrue(not ncc)# false because 2D in MED file
4831 self.assertTrue(a0.isEqual(DataArrayDouble([(5.5,0.5,0),(5.5,-0.5,0),(6.5,0.5,0),(6.5,-0.5,0),(6.5,1.5,0),(7.5,0.5,0),(7.5,-0.5,0),(7.5,1.5,0),(7.5,2.5,0),(8.5,0.5,0),(8.5,-0.5,0),(8.5,1.5,0),(8.5,2.5,0),(8.5,3.5,0),(8.55,0.5,0),(8.55,-0.5,0),(8.55,1.5,0),(8.55,2.5,0),(8.55,3.5,0)]),1e-12))
4832 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,7,7,7,7])))
4833 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45])))# the bug was here.
4834 self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,2,3,4,3,2,5,6,4,2,4,7,5,4,6,5,9,10,4,5,7,11,9,4,7,8,12,11,4,10,9,14,15,4,9,11,16,14,4,11,12,17,16,4,12,13,18,17])))
4835 self.assertTrue(a4 is None)
4836 self.assertTrue(a5 is None)
4837 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4839 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
4840 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
4841 ffCell.loadArraysIfNecessary()
4842 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
4843 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
4844 myarr=DataArrayDouble(10) ; myarr.iota() ; myarr[i%10]=100. ; myarr.setInfoOnComponent(0,"Comp1 [m]")
4845 self.assertEqual(ffCell.getName(),fieldName)
4846 self.assertTrue(v.isEqual(myarr,1e-12))
4852 """ This test is the thirs ultimate test (base on test12) for the profiles with gauss points.
4853 This test highlight the hidden imp linked to bug #8655.
4854 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.
4856 fname="ForMEDReader34.med"
4857 m=MEDCouplingCMesh("mesh")
4858 arr=DataArrayDouble(5) ; arr.iota()
4859 m.setCoords(arr,arr)
4860 m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
4861 mm=MEDFileUMesh() ; mm.setMeshes([m])
4863 fieldName0="zeField0"
4864 fieldName1="zeField1"
4865 fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
4868 fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
4869 fNode.setName(fieldName0) ; fNode.setMesh(m)
4870 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])
4871 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])
4872 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])
4873 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])
4874 arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
4875 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
4876 f.setFieldNoProfileSBT(fNode)
4877 fs0.pushBackTimeStep(f)
4880 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
4881 fNode.setName(fieldName1) ; fNode.setMesh(m)
4882 arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
4883 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
4884 f.setFieldNoProfileSBT(fNode)
4885 fs1.pushBackTimeStep(f)
4888 fs0.write(fname,0) ; fs1.write(fname,0)
4889 a0Exp=mm.getCoords().deepCopy()
4890 del m,mm,fs0,fs1,f,fNode
4891 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
4892 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
4893 fields=MEDFileFields(fname,False)
4894 fields.removeFieldsWithoutAnyTimeStep()
4895 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
4896 allFMTSLeavesToDisplay=[]
4897 for fields in fields_per_mesh:
4898 allFMTSLeavesToDisplay2=[]
4900 tmp=fmts.splitDiscretizations()
4902 if itmp.presenceOfMultiDiscPerGeoType():
4903 tmp2=itmp.splitMultiDiscrPerGeoTypes()
4904 for iii,itmp2 in enumerate(tmp2):
4905 name="%s_%i"%(itmp2.getName(),iii)
4907 allFMTSLeavesToDisplay2.append(itmp2)
4911 allFMTSLeavesToDisplay2.append(itmp)
4914 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
4916 # Here 2 MED fields in input and at the end 5 ! 1+4 ! 4 fields have been built from zeField0 due to subsplitting per dis / per geo type
4917 self.assertEqual(len(allFMTSLeavesToDisplay),1)
4918 self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
4919 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
4920 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
4921 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
4922 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
4923 self.assertEqual(len(allFMTSLeavesPerCommonSupport),5)
4925 self.assertEqual(len(allFMTSLeavesPerCommonSupport[i][0]),1)
4927 mst=MEDFileMeshStruct.New(ms[0])
4929 fcscp=allFMTSLeavesPerCommonSupport[4][1]
4930 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
4932 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
4933 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
4934 self.assertTrue(not ncc)
4935 self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
4936 self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
4937 self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
4938 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
4939 self.assertTrue(a4 is None)
4940 self.assertTrue(a5 is None)
4941 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
4942 for i in range(1, 5):
4943 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
4946 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
4947 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
4948 f.loadArraysIfNecessary()
4949 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
4950 self.assertEqual(f.getName(),fieldName0)
4951 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.)])
4952 vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
4954 self.assertTrue(v.isEqual(vExp,1e-12))
4956 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
4957 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
4958 f.loadArraysIfNecessary()
4959 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
4960 self.assertEqual(f.getName(),fieldName0)
4961 vExp=DataArrayDouble([(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.)])
4962 vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
4964 self.assertTrue(v.isEqual(vExp,1e-12))
4966 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
4967 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
4968 f.loadArraysIfNecessary()
4969 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
4970 self.assertEqual(f.getName(),fieldName0)
4971 vExp=DataArrayDouble([(36.,37.),(38.,39.),(40.,41.),(42.,43.),(68.,69.),(70.,71.),(72.,73.),(74.,75.),(104.,105.),(106.,107.),(108.,109.),(110.,111.)])
4972 vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
4974 self.assertTrue(v.isEqual(vExp,1e-12))
4976 f=allFMTSLeavesPerCommonSupport[3][0][0][i]
4977 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
4978 f.loadArraysIfNecessary()
4979 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
4980 self.assertEqual(f.getName(),fieldName0)
4981 vExp=DataArrayDouble([(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)])
4982 vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
4984 self.assertTrue(v.isEqual(vExp,1e-12))
4986 f=allFMTSLeavesPerCommonSupport[4][0][0][i]
4987 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
4988 f.loadArraysIfNecessary()
4989 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
4990 self.assertEqual(f.getName(),fieldName1)
4991 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
4992 vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
4993 self.assertTrue(v.isEqual(vExp,1e-12))
4999 """ Emulate MEDReader in // mode context. Here a Simple mesh having more nodes than really needed. This test focuses on that point particularly."""
5000 fname="ForMEDReader35.med"
5001 arrX=DataArrayDouble(7) ; arrX.iota()
5002 arrY=DataArrayDouble([0.,1.])
5003 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured() ; m=m[[0,5,1,4,2,3]] ; m.changeSpaceDimension(3,0.) ; m.setName("Mesh")
5004 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") ; f.setArray(DataArrayDouble([(0.1,1.1),(2.1,3.1),(4.1,5.1),(6.1,7.1),(8.1,9.1),(10.1,11.1)])) ; f.getArray().setInfoOnComponents(["aa","bbb"])
5005 WriteUMesh(fname,m,True)
5006 WriteFieldUsingAlreadyWrittenMesh(fname,f)
5007 ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
5008 ms=MEDFileMeshes() # here we reproduce what is done by ParaMEDFileMeshes.ParaNew
5009 ms.pushMesh(MEDFileUMesh.LoadPartOf(fname,"Mesh",[NORM_QUAD4],[0,2,1],-1,-1));
5013 fields=MEDFileFields.LoadPartOf(fname,False,ms);
5014 fields.removeFieldsWithoutAnyTimeStep()
5015 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5016 allFMTSLeavesToDisplay=[]
5017 for fields in fields_per_mesh:
5018 allFMTSLeavesToDisplay2=[]
5020 tmp=fmts.splitDiscretizations()
5022 if itmp.presenceOfMultiDiscPerGeoType():
5023 tmp2=itmp.splitMultiDiscrPerGeoTypes()
5024 for iii,itmp2 in enumerate(tmp2):
5025 name="%s_%i"%(itmp2.getName(),iii)
5027 allFMTSLeavesToDisplay2.append(itmp2)
5031 allFMTSLeavesToDisplay2.append(itmp)
5034 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5037 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5038 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
5039 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5040 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
5041 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
5042 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
5043 self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
5044 self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
5046 mst=MEDFileMeshStruct.New(ms[0])
5048 fcscp=allFMTSLeavesPerCommonSupport[0][1]
5049 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5051 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
5052 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
5053 self.assertTrue(ncc)
5054 self.assertTrue(a0.isEqual(m.getCoords()[[0,1,5,6,7,8,12,13]],1e-12))# <- the aim of the test
5055 self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
5056 self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
5057 self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,4,5,4,3,2,6,7])))
5058 self.assertTrue(a4 is None)
5059 self.assertTrue(a5 is None)
5060 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny().isEqual(DataArrayInt([0,1,5,6,7,8,12,13])))
5061 f2=allFMTSLeavesPerCommonSupport[0][0][0][0]
5062 fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst)
5063 f2.loadArraysIfNecessary()
5064 v=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray())
5065 self.assertEqual(f2.getName(),f.getName())
5066 vExp=DataArrayDouble([(0.1,1.1),(2.1,3.1)])
5067 vExp.setInfoOnComponents(['aa','bbb'])
5068 self.assertTrue(v.isEqual(vExp,1e-12))
5073 """Bug EDF11027. Here mesh at level 0 (TRI3) does not fetch all the nodes. Level -1 (SEG2) does not fetch all the nodes neither. But all TRI3 + all SEG2 fetch all nodes.
5074 aaa field on GAUSSPoints lying only on TRI3 share the same support than profile node field ccc.
5075 But bbb field on all nodes is not on the same support. Past optimization that make the assumtion a support on all lev0 cells lies on all nodes is now over."""
5077 fname="ForMEDReader36.med"
5078 c=DataArrayDouble([(0,0),(1,0),(1,1),(0,1),(2,0),(-1,0),(1,2)])
5079 m0=MEDCoupling1SGTUMesh(meshName,NORM_TRI3)
5081 m0.setNodalConnectivity(DataArrayInt([0,2,1,3,2,0,2,4,1]))
5084 m1=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
5086 m1.setNodalConnectivity(DataArrayInt([5,0,0,3,3,2,2,6]))
5090 ff1=MEDFileField1TS()
5091 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m0)
5092 arr=DataArrayDouble(7) ; arr.iota(2000)
5095 f1.checkConsistencyLight()
5097 ff1.setFieldNoProfileSBT(f1)
5099 ff2=MEDFileField1TS()
5100 f2=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f2.setMesh(m0)
5101 arr=DataArrayDouble(9) ; arr.iota(4000)
5104 f2.checkConsistencyLight()
5106 ff2.setFieldNoProfileSBT(f2)
5108 ff3=MEDFileField1TS()
5109 f3=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f3.setMesh(m0)
5110 f3.setGaussLocalizationOnType(NORM_TRI3,[0,0,1,0,0,1],[0.333333,0.333333],[0.5])
5111 arr=DataArrayDouble(3) ; arr.iota(1000)
5113 f3.checkConsistencyLight()
5116 ff3.setFieldNoProfileSBT(f3)
5118 ff4=MEDFileField1TS()
5119 m0d=m0.deepCopy() ; m0d.zipCoords()
5120 f4=MEDCouplingFieldDouble(ON_NODES) ; f4.setMesh(m0d)
5121 arr=DataArrayDouble(5) ; arr.iota(3000)
5124 f4.checkConsistencyLight()
5126 pfl=DataArrayInt([0,1,2,3,4]) ; pfl.setName("PFL")
5127 ff4.setFieldProfile(f4,mm,0,pfl)
5134 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
5135 fields=MEDFileFields(fname,False)
5136 fields.removeFieldsWithoutAnyTimeStep()
5137 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5138 allFMTSLeavesToDisplay=[]
5139 for fields in fields_per_mesh:
5140 allFMTSLeavesToDisplay2=[]
5142 tmp=fmts.splitDiscretizations()
5144 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
5146 allFMTSLeavesToDisplay2+=tmp
5148 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5150 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5151 self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
5152 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5153 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
5154 self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
5155 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
5156 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
5157 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
5158 self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
5160 mst=MEDFileMeshStruct.New(ms[0])
5161 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
5162 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5164 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
5165 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
5166 self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children.
5167 self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(2,0,0)]),1e-12))
5168 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5])))
5169 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8])))
5170 self.assertTrue(a3.isEqual(DataArrayInt([3,0,2,1,3,3,2,0,3,2,4,1])))
5171 self.assertTrue(a4 is None)
5172 self.assertTrue(a5 is None)
5173 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5175 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
5176 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5177 ffCell.loadArraysIfNecessary()
5178 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5179 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5180 v.isEqual(DataArrayDouble([1000,1001,1002]),1e-12)
5182 ffCell=allFMTSLeavesPerCommonSupport1[0][0][1][i]
5183 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5184 ffCell.loadArraysIfNecessary()
5185 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5186 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5187 v.isEqual(DataArrayDouble([3000,3001,3002,3003,3004]),1e-12)
5189 fcscp=allFMTSLeavesPerCommonSupport1[1][1]
5190 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5192 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
5193 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
5194 self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children.
5195 self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(2,0,0),(-1,0,0),(1,2,0)]),1e-12))
5196 self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,3,3,3,3])))
5197 self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,15,18,21])))
5198 self.assertTrue(a3.isEqual(DataArrayInt([3,0,2,1,3,3,2,0,3,2,4,1,2,5,0,2,0,3,2,3,2,2,2,6])))
5199 self.assertTrue(a4 is None)
5200 self.assertTrue(a5 is None)
5201 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5203 ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i]
5204 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5205 ffCell.loadArraysIfNecessary()
5206 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5207 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5208 v.isEqual(DataArrayDouble([2000,2001,2002,2003,2004,2005,2006]),1e-12)
5214 """ Introduction of non cartesian meshes management. Here cylindrical."""
5215 fname="ForMEDReader37.med"
5217 description="Cylindrical grid"
5218 comps=["X [cm]","Y [cm]","Z [cm]"]
5219 arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
5220 arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
5221 arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=1.6 ; arrZ-=8. ; arrZ.setInfoOnComponent(0,comps[2])
5222 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName)
5223 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setDescription(description)
5224 mm.setAxisType(AX_CYL) # the test is here !
5225 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
5226 arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
5227 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5228 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
5230 ms=MEDFileMeshes() ; ms.pushMesh(mm)
5231 fields=MEDFileFields() ; fields.pushField(fmts)
5232 ms.write(fname,2) ; fields.write(fname,0)
5234 del mm,fmts,fields,ms
5235 ms=MEDFileMeshes(fname)
5236 fields=MEDFileFields(fname,False)
5239 fields.removeFieldsWithoutAnyTimeStep()
5240 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5241 allFMTSLeavesToDisplay=[]
5242 for fields in fields_per_mesh:
5243 allFMTSLeavesToDisplay2=[]
5245 tmp=fmts.splitDiscretizations()
5247 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
5249 allFMTSLeavesToDisplay2+=tmp
5251 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5254 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5255 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
5256 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5257 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
5258 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
5259 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
5261 mst=MEDFileMeshStruct.New(ms[0])
5262 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
5263 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5265 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))# <- hehe it is a CurveLinear no more a CMesh !
5266 a,b,c=mml2.buildVTUArrays()
5267 self.assertTrue(c)# the array is thoose in structure
5268 ref_a=DataArrayDouble([0.,0.,-8.,0.8,0.,-8.,1.6,0.,-8.,0.,0.,-8.,0.4,0.6928203230275509,-8.,0.8,1.3856406460551018,-8.,-0.,0.,-8.,-0.4,0.692820323027551,-8.,-0.8,1.385640646055102,-8.,-0.,0.,-8.,-0.8,0.,-8.,-1.6,0.,-8.,0.,0.,-6.4,0.8,0.,-6.4,1.6,0.,-6.4,0.,0.,-6.4,0.4,0.6928203230275509,-6.4,0.8,1.3856406460551018,-6.4,-0.,0.,-6.4,-0.4,0.692820323027551,-6.4,-0.8,1.385640646055102,-6.4,-0.,0.,-6.4,-0.8,0.,-6.4,-1.6,0.,-6.4,0.,0.,-4.8,0.8,0.,-4.8,1.6,0.,-4.8,0.,0.,-4.8,0.4,0.6928203230275509,-4.8,0.8,1.3856406460551018,-4.8,-0.,0.,-4.8,-0.4,0.692820323027551,-4.8,-0.8,1.385640646055102,-4.8,-0.,0.,-4.8,-0.8,0.,-4.8,-1.6,0.,-4.8,0.,0.,-3.2,0.8,0.,-3.2,1.6,0.,-3.2,0.,0.,-3.2,0.4,0.6928203230275509,-3.2,0.8,1.3856406460551018,-3.2,-0.,0.,-3.2,-0.4,0.692820323027551,-3.2,-0.8,1.385640646055102,-3.2,-0.,0.,-3.2,-0.8,0.,-3.2,-1.6,0.,-3.2,0.,0.,-1.6,0.8,0.,-1.6,1.6,0.,-1.6,0.,0.,-1.6,0.4,0.6928203230275509,-1.6,0.8,1.3856406460551018,-1.6,-0.,0.,-1.6,-0.4,0.692820323027551,-1.6,-0.8,1.385640646055102,-1.6,-0.,0.,-1.6,-0.8,0.,-1.6,-1.6,0.,-1.6],60,3)
5269 ref_a.setInfoOnComponents(comps)
5270 self.assertTrue(a.isEqual(ref_a,1e-14))
5271 self.assertEqual(b,[3,4,5])
5272 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5274 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
5275 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5276 ffCell.loadArraysIfNecessary()
5277 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5278 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5279 self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
5285 """ Introduction of non cartesian meshes management. Here spherical."""
5286 fname="ForMEDReader38.med"
5288 description="Spherical grid"
5289 comps=["X [cm]","Y [cm]","Z [cm]"]
5290 arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
5291 arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
5292 arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2])
5293 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName)
5294 mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setDescription(description)
5295 mm.setAxisType(AX_SPHER) # the test is here !
5296 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
5297 arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
5298 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5299 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
5301 ms=MEDFileMeshes() ; ms.pushMesh(mm)
5302 fields=MEDFileFields() ; fields.pushField(fmts)
5303 ms.write(fname,2) ; fields.write(fname,0)
5305 del mm,fmts,fields,ms
5306 ms=MEDFileMeshes(fname)
5307 fields=MEDFileFields(fname,False)
5310 fields.removeFieldsWithoutAnyTimeStep()
5311 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5312 allFMTSLeavesToDisplay=[]
5313 for fields in fields_per_mesh:
5314 allFMTSLeavesToDisplay2=[]
5316 tmp=fmts.splitDiscretizations()
5318 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
5320 allFMTSLeavesToDisplay2+=tmp
5322 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5325 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5326 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
5327 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5328 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
5329 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
5330 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
5332 mst=MEDFileMeshStruct.New(ms[0])
5333 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
5334 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5336 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
5337 a,b,c=mml2.buildVTUArrays()
5338 self.assertTrue(c)# the array is thoose in structure
5339 ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3)
5340 ref_a.setInfoOnComponents(comps)
5341 self.assertTrue(a.isEqual(ref_a,1e-14))
5342 self.assertEqual(b,[3,4,5])
5343 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5345 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
5346 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5347 ffCell.loadArraysIfNecessary()
5348 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5349 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5350 self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
5356 """Idem test37, test38, test39, test40 except that here it is an unstructured mesh."""
5357 fname="ForMEDReader39.med"
5359 description="Spherical grid"
5360 comps=["X [cm]","Y [cm]","Z [cm]"]
5361 arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
5362 arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
5363 arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2])
5364 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) ; m=m.buildUnstructured()
5365 mm=MEDFileUMesh() ; mm[0]=m ; mm.setDescription(description) # the test is here : UMesh !
5366 mm.setAxisType(AX_SPHER) # the test is here !
5367 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
5368 arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
5369 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5370 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
5372 ms=MEDFileMeshes() ; ms.pushMesh(mm)
5373 fields=MEDFileFields() ; fields.pushField(fmts)
5374 ms.write(fname,2) ; fields.write(fname,0)
5376 del mm,fmts,fields,ms
5377 ms=MEDFileMeshes(fname)
5378 fields=MEDFileFields(fname,False)
5380 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
5381 fields=MEDFileFields(fname,False)
5382 fields.removeFieldsWithoutAnyTimeStep()
5383 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5384 allFMTSLeavesToDisplay=[]
5385 for fields in fields_per_mesh:
5386 allFMTSLeavesToDisplay2=[]
5388 tmp=fmts.splitDiscretizations()
5390 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
5392 allFMTSLeavesToDisplay2+=tmp
5394 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5397 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5398 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
5399 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5400 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
5401 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
5402 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
5404 mst=MEDFileMeshStruct.New(ms[0])
5405 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
5406 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5408 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
5409 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
5410 self.assertTrue(ncc)
5411 ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3)
5412 ref_a.setInfoOnComponents(comps)
5413 self.assertTrue(a0.isEqual(ref_a,1e-14))#<- Test is here
5414 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5416 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
5417 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5418 ffCell.loadArraysIfNecessary()
5419 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5420 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5421 self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
5426 """Idem test37, test38, test39, test40 except that here it is a CL mesh."""
5427 fname="ForMEDReader40.med"
5429 description="Spherical grid"
5430 comps=["X [cm]","Y [cm]","Z [cm]"]
5431 arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
5432 arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
5433 arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2])
5434 m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) ; m=m.buildCurveLinear()
5435 mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setDescription(description) # the test is here CLMesh!
5436 mm.setAxisType(AX_SPHER) # the test is here !
5437 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
5438 arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
5439 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5440 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
5442 ms=MEDFileMeshes() ; ms.pushMesh(mm)
5443 fields=MEDFileFields() ; fields.pushField(fmts)
5444 ms.write(fname,2) ; fields.write(fname,0)
5446 ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
5447 fields=MEDFileFields(fname,False)
5448 fields.removeFieldsWithoutAnyTimeStep()
5449 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5450 allFMTSLeavesToDisplay=[]
5451 for fields in fields_per_mesh:
5452 allFMTSLeavesToDisplay2=[]
5454 tmp=fmts.splitDiscretizations()
5456 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
5458 allFMTSLeavesToDisplay2+=tmp
5460 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5463 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5464 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
5465 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5466 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
5467 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
5468 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
5470 mst=MEDFileMeshStruct.New(ms[0])
5471 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
5472 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5474 self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
5475 a,b,c=mml2.buildVTUArrays()
5477 ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3)
5478 ref_a.setInfoOnComponents(comps)
5479 self.assertTrue(a.isEqual(ref_a,1e-14))#<- Test is here
5480 self.assertEqual(b,[3,4,5])
5481 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5483 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
5484 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5485 ffCell.loadArraysIfNecessary()
5486 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5487 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5488 self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
5493 """This test focused on bug revealed with // load of multi nodes field with no profile. The error was the first node field (dataarray partdef) change the partdef for the others ! """
5494 fname="ForMEDReader41.med"
5497 arr=DataArrayDouble(nx) ; arr.iota()
5498 m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured() ; m.setName(meshName)
5499 renum=DataArrayInt.Aggregate([DataArrayInt.Range(0,m.getNumberOfCells(),2),DataArrayInt.Range(1,m.getNumberOfCells(),2)])
5500 m=m[renum] # important think to renum if not we see nothing. The goal if to have dynamic_cast<DataPartDefinition>!=NULL
5501 mm=MEDFileUMesh() ; mm[0]=m
5503 f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setName("aaa")
5504 arr0=DataArrayDouble(nx*nx) ; arr0.iota() ; f0.setArray(arr0)
5505 ff0=MEDFileField1TS() ; ff0.setFieldNoProfileSBT(f0)
5506 f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName("bbb")
5507 arr1=DataArrayDouble(nx*nx) ; arr1.iota() ; arr1+=100 ; f1.setArray(arr1)
5508 ff1=MEDFileField1TS() ; ff1.setFieldNoProfileSBT(f1)
5509 ff0.write(fname,0) ; ff1.write(fname,0)
5513 mm=MEDFileUMesh.LoadPartOf(fname,meshName,[NORM_QUAD4],[a,b,1],-1,-1)
5517 fields=MEDFileFields.LoadPartOf(fname,False,ms);
5518 fields.removeFieldsWithoutAnyTimeStep()
5519 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5520 allFMTSLeavesToDisplay=[]
5521 for fields in fields_per_mesh:
5522 allFMTSLeavesToDisplay2=[]
5524 tmp=fmts.splitDiscretizations()
5526 if itmp.presenceOfMultiDiscPerGeoType():
5527 tmp2=itmp.splitMultiDiscrPerGeoTypes()
5528 for iii,itmp2 in enumerate(tmp2):
5529 name="%s_%i"%(itmp2.getName(),iii)
5531 allFMTSLeavesToDisplay2.append(itmp2)
5535 allFMTSLeavesToDisplay2.append(itmp)
5538 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5540 # GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
5541 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5542 allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
5543 mst=MEDFileMeshStruct.New(ms[0])
5544 fcscp=allFMTSLeavesPerCommonSupport[0][1]
5545 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5548 f2=allFMTSLeavesPerCommonSupport[0][0][0][0]
5549 fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst)
5550 f2.loadArraysIfNecessary()
5551 v0=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray())
5552 assert(v0.isEqual(DataArrayDouble([1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24]),1e-12))
5554 f2=allFMTSLeavesPerCommonSupport[0][0][1][0]
5555 fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst)
5556 f2.loadArraysIfNecessary()
5557 v1=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray())
5558 assert(v1.isEqual(DataArrayDouble([101,102,103,104,106,107,108,109,111,112,113,114,116,117,118,119,121,122,123,124]),1e-12))
5563 """ EDF14869 - SEG4 """
5564 fname="ForMEDReader42.med"
5567 a0exp=DataArrayDouble([0.,1.,0.3,0.7])
5568 m=MEDCouplingUMesh("mesh",1)
5571 m.insertNextCell(NORM_SEG4,[0,1,2,3])
5572 mm=MEDFileUMesh() ; mm[0]=m
5574 f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
5575 arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
5576 ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
5577 fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
5579 ms=MEDFileMeshes() ; ms.pushMesh(mm)
5580 fields=MEDFileFields() ; fields.pushField(fmts)
5581 ms.write(fname,2) ; fields.write(fname,0)
5583 ms=MEDFileMeshes(fname)
5584 fields=MEDFileFields(fname,False)
5585 fields.removeFieldsWithoutAnyTimeStep()
5586 fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
5587 allFMTSLeavesToDisplay=[]
5588 for fields in fields_per_mesh:
5589 allFMTSLeavesToDisplay2=[]
5591 tmp=fmts.splitDiscretizations()
5593 self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
5595 allFMTSLeavesToDisplay2+=tmp
5597 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
5600 self.assertEqual(len(allFMTSLeavesToDisplay),1)
5601 self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
5602 allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
5603 self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
5604 allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
5605 self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
5607 mst=MEDFileMeshStruct.New(ms[0])
5608 fcscp=allFMTSLeavesPerCommonSupport1[0][1]
5609 mml=fcscp.buildFromScratchDataSetSupport(0,fields)
5611 self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
5612 ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
5613 self.assertTrue(not ncc)
5614 self.assertTrue(a0.isEqual(a0exp.changeNbOfComponents(3,0.),1e-12))
5615 self.assertTrue(a1.isEqual(DataArrayByte([35])))# VTK_CUBIC_LINE
5616 self.assertTrue(a2.isEqual(DataArrayInt([0])))
5617 self.assertTrue(a3.isEqual(DataArrayInt([4,0,1,2,3])))
5618 self.assertTrue(a4 is None)
5619 self.assertTrue(a5 is None)
5620 self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
5622 ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
5623 fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
5624 ffCell.loadArraysIfNecessary()
5625 v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
5626 self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
5627 self.assertTrue(v.isEqual(DataArrayDouble([0.0]),1e-14))
5632 if __name__ == "__main__":