Salome HOME
VTK wants coordinates array with exactly 3 components.
[tools/medcoupling.git] / src / MEDLoader / Swig / MEDLoaderTest4.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  CEA/DEN, EDF R&D
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 # Author : Anthony Geay (CEA/DEN)
21
22 from MEDLoader import *
23 import unittest
24 from math import pi,e,sqrt
25
26 class MEDLoaderTest4(unittest.TestCase):
27     """
28     Test series to emulate the future MEDReader plugin for PARAVIS.
29     """
30     def test1(self):
31         """
32         This test is the most simple one. One time serie of one field with only cell fields with no profiles.
33         The only "difficulty" is that the cell field is lying on different levels (2D and 1D) to maximize the compatibility with ParaVIS.
34         """
35         fname="ForMEDReader1.med"
36         # building a mesh containing 4 tri3 + 5 quad4
37         tri=MEDCouplingUMesh("tri",2)
38         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
39         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
40         tris=[tri.deepCpy() for i in xrange(4)]
41         for i,elt in enumerate(tris): elt.translate([i,0])
42         tris=MEDCouplingUMesh.MergeUMeshes(tris)
43         quad=MEDCouplingUMesh("quad",2)
44         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
45         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
46         quads=[quad.deepCpy() for i in xrange(5)]
47         for i,elt in enumerate(quads): elt.translate([5+i,0])
48         quads=MEDCouplingUMesh.MergeUMeshes(quads)
49         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
50         m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
51         m1=m.buildDescendingConnectivity()[0]
52         mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
53         #
54         fieldName="zeField"
55         fs=MEDFileFieldMultiTS()
56         ##### Time step 0
57         i=0
58         f=MEDFileField1TS()
59         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
60         fCell0.setName(fieldName) ; fCell0.setMesh(m)
61         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
62         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
63         fCell0.checkCoherency()
64         f.setFieldNoProfileSBT(fCell0)
65         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
66         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
67         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
68         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
69         fCell1.checkCoherency()
70         f.setFieldNoProfileSBT(fCell1)
71         fs.pushBackTimeStep(f)
72         ##### Time step 1
73         i=1
74         f=MEDFileField1TS()
75         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
76         fCell0.setName(fieldName) ; fCell0.setMesh(m)
77         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
78         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
79         fCell0.checkCoherency()
80         f.setFieldNoProfileSBT(fCell0)
81         #
82         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
83         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
84         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
85         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
86         fCell1.checkCoherency()
87         f.setFieldNoProfileSBT(fCell1)
88         fs.pushBackTimeStep(f)
89         ##### Time step 2
90         i=2
91         f=MEDFileField1TS()
92         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
93         fCell0.setName(fieldName) ; fCell0.setMesh(m)
94         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
95         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
96         fCell0.checkCoherency()
97         f.setFieldNoProfileSBT(fCell0)
98         #
99         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
100         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
101         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
102         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
103         fCell1.checkCoherency()
104         f.setFieldNoProfileSBT(fCell1)
105         fs.pushBackTimeStep(f)
106         ##### Time step 3
107         i=3
108         f=MEDFileField1TS()
109         #
110         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
111         fCell0.setName(fieldName) ; fCell0.setMesh(m)
112         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
113         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
114         fCell0.checkCoherency()
115         f.setFieldNoProfileSBT(fCell0)
116         #
117         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
118         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
119         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
120         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
121         fCell1.checkCoherency()
122         f.setFieldNoProfileSBT(fCell1)
123         #
124         fs.pushBackTimeStep(f)
125         ##### Time step 4
126         i=4
127         f=MEDFileField1TS()
128         #
129         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
130         fCell0.setName(fieldName) ; fCell0.setMesh(m)
131         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
132         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
133         fCell0.checkCoherency()
134         f.setFieldNoProfileSBT(fCell0)
135         #
136         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
137         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
138         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
139         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
140         fCell1.checkCoherency()
141         f.setFieldNoProfileSBT(fCell1)
142         fs.pushBackTimeStep(f)
143         mm.write(fname,2)
144         fs.write(fname,0)
145         a0Exp=mm.getCoords().deepCpy()
146         del m,m1,mm,fs,f,fCell0,fCell1
147         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
148         ms=MEDFileMeshes(fname)
149         fields=MEDFileFields(fname,False) # False is important to not read the values
150         refMem=fields.getHeapMemorySize()
151         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
152         allFMTSLeavesToDisplay=[]
153         for fields in fields_per_mesh:
154             allFMTSLeavesToDisplay2=[]
155             for fmts in fields:
156                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
157                 pass
158             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
159             pass
160         self.assertEqual(len(allFMTSLeavesToDisplay),1)
161         self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
162         for fmts in allFMTSLeavesToDisplay[0]:
163             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
164             pass
165         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
166         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
167         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
168         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
169         #
170         mst=MEDFileMeshStruct.New(ms[0])
171         fcscp=allFMTSLeavesPerCommonSupport[0][1]
172         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
173         mml2=mml.prepare()
174         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
175         for i in xrange(1,5):
176             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
177             pass
178         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
179         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
180         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])))
181         self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96])))
182         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])))
183         self.assertTrue(a4 is None)
184         self.assertTrue(a5 is None)
185         for i in xrange(5):
186             fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst)
187             fields[0][i].loadArraysIfNecessary()
188             tmpMem=fields.getHeapMemorySize()
189             self.assertTrue(tmpMem-refMem>=41*2*8)
190             refMem=tmpMem
191             v=mml.buildDataArray(fsst,fields,fields[0][i].getUndergroundDataArray())
192             self.assertEqual(v.getHiddenCppPointer(),fields[0][i].getUndergroundDataArray().getHiddenCppPointer())
193             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
194             self.assertTrue(v.isEqual(vExp,1e-12))
195             pass
196         pass
197
198     def test2(self):
199         """
200         One time serie of one field with cell and node discretization in the same field with no profiles.
201         Here as there is no profile only one VTK support is requested.
202         """
203         fname="ForMEDReader2.med"
204         # building a mesh containing 4 tri3 + 5 quad4
205         tri=MEDCouplingUMesh("tri",2)
206         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
207         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
208         tris=[tri.deepCpy() for i in xrange(4)]
209         for i,elt in enumerate(tris): elt.translate([i,0])
210         tris=MEDCouplingUMesh.MergeUMeshes(tris)
211         quad=MEDCouplingUMesh("quad",2)
212         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
213         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
214         quads=[quad.deepCpy() for i in xrange(5)]
215         for i,elt in enumerate(quads): elt.translate([5+i,0])
216         quads=MEDCouplingUMesh.MergeUMeshes(quads)
217         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
218         m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
219         m1=m.buildDescendingConnectivity()[0]
220         mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
221         #
222         fieldName="zeField"
223         fs=MEDFileFieldMultiTS()
224         ##### Time step 0
225         i=0
226         f=MEDFileField1TS()
227         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
228         fCell0.setName(fieldName) ; fCell0.setMesh(m)
229         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
230         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
231         fCell0.checkCoherency()
232         f.setFieldNoProfileSBT(fCell0)
233         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
234         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
235         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
236         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
237         fCell1.checkCoherency()
238         f.setFieldNoProfileSBT(fCell1)
239         #
240         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
241         fNode.setName(fieldName) ; fNode.setMesh(m1)
242         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2)
243         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
244         fNode.checkCoherency()
245         f.setFieldNoProfileSBT(fNode)
246         fs.pushBackTimeStep(f)
247         ##### Time step 1
248         i=1
249         f=MEDFileField1TS()
250         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
251         fCell0.setName(fieldName) ; fCell0.setMesh(m)
252         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
253         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
254         fCell0.checkCoherency()
255         f.setFieldNoProfileSBT(fCell0)
256         #
257         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
258         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
259         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
260         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
261         fCell1.checkCoherency()
262         f.setFieldNoProfileSBT(fCell1)
263         #
264         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
265         fNode.setName(fieldName) ; fNode.setMesh(m1)
266         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
267         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
268         fNode.checkCoherency()
269         f.setFieldNoProfileSBT(fNode)
270         fs.pushBackTimeStep(f)
271         ##### Time step 2
272         i=2
273         f=MEDFileField1TS()
274         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
275         fNode.setName(fieldName) ; fNode.setMesh(m1)
276         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2)
277         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
278         fNode.checkCoherency()
279         f.setFieldNoProfileSBT(fNode)
280         #
281         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
282         fCell0.setName(fieldName) ; fCell0.setMesh(m)
283         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
284         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
285         fCell0.checkCoherency()
286         f.setFieldNoProfileSBT(fCell0)
287         #
288         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
289         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
290         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
291         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
292         fCell1.checkCoherency()
293         f.setFieldNoProfileSBT(fCell1)
294         fs.pushBackTimeStep(f)
295         ##### Time step 3
296         i=3
297         f=MEDFileField1TS()
298         #
299         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
300         fCell0.setName(fieldName) ; fCell0.setMesh(m)
301         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
302         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
303         fCell0.checkCoherency()
304         f.setFieldNoProfileSBT(fCell0)
305         #
306         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
307         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
308         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
309         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
310         fCell1.checkCoherency()
311         f.setFieldNoProfileSBT(fCell1)
312         #
313         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
314         fNode.setName(fieldName) ; fNode.setMesh(m1)
315         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
316         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
317         fNode.checkCoherency()
318         f.setFieldNoProfileSBT(fNode)
319         #
320         fs.pushBackTimeStep(f)
321         ##### Time step 4
322         i=4
323         f=MEDFileField1TS()
324         #
325         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
326         fCell0.setName(fieldName) ; fCell0.setMesh(m)
327         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
328         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
329         fCell0.checkCoherency()
330         f.setFieldNoProfileSBT(fCell0)
331         #
332         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
333         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
334         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
335         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
336         fCell1.checkCoherency()
337         f.setFieldNoProfileSBT(fCell1)
338         #
339         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
340         fNode.setName(fieldName) ; fNode.setMesh(m1)
341         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2)
342         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
343         fNode.checkCoherency()
344         f.setFieldNoProfileSBT(fNode)
345         #
346         fs.pushBackTimeStep(f)
347         mm.write(fname,2)
348         fs.write(fname,0)
349         a0Exp=mm.getCoords().deepCpy()
350         del m,m1,mm,fs,f,fCell0,fCell1
351         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
352         ms=MEDFileMeshes(fname)
353         fields=MEDFileFields(fname,False)
354         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
355         allFMTSLeavesToDisplay=[]
356         for fields in fields_per_mesh:
357             allFMTSLeavesToDisplay2=[]
358             for fmts in fields:
359                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
360                 pass
361             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
362             pass
363         self.assertEqual(len(allFMTSLeavesToDisplay),1)
364         self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
365         for fmts in allFMTSLeavesToDisplay[0]:
366             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
367             pass
368         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
369         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
370         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
371         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
372         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
373         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
374         #
375         mst=MEDFileMeshStruct.New(ms[0])
376         fcscp=allFMTSLeavesPerCommonSupport[0][1]
377         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
378         mml2=mml.prepare()
379         assert isinstance(mml2,MEDUMeshMultiLev)
380         for i in xrange(1,5):
381             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
382             pass
383         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
384         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
385         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])))
386         self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96])))
387         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])))
388         self.assertTrue(a4 is None)
389         self.assertTrue(a5 is None)
390         # for cells
391         for i in xrange(5):
392             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
393             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
394             f.loadArraysIfNecessary()
395             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
396             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
397             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
398             self.assertTrue(v.isEqual(vExp,1e-12))
399             pass
400         for i in xrange(5):
401             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
402             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
403             f.loadArraysIfNecessary()
404             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
405             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
406             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
407             self.assertTrue(v.isEqual(vExp,1e-12))
408             pass
409         pass
410
411     def test3(self):
412         """ 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.
413         So two time step series on the same field. No profile here neither on cells nor on nodes.
414         """
415         fname="ForMEDReader3.med"
416         # building a mesh containing 4 tri3 + 5 quad4
417         tri=MEDCouplingUMesh("tri",2)
418         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
419         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
420         tris=[tri.deepCpy() for i in xrange(4)]
421         for i,elt in enumerate(tris): elt.translate([i,0])
422         tris=MEDCouplingUMesh.MergeUMeshes(tris)
423         quad=MEDCouplingUMesh("quad",2)
424         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
425         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
426         quads=[quad.deepCpy() for i in xrange(5)]
427         for i,elt in enumerate(quads): elt.translate([5+i,0])
428         quads=MEDCouplingUMesh.MergeUMeshes(quads)
429         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
430         m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
431         m1=m.buildDescendingConnectivity()[0]
432         mm=MEDFileUMesh() ; mm.setMeshes([m,m1])
433         #
434         fieldName="zeField"
435         fs=MEDFileFieldMultiTS()
436         ##### Time step 0 on cells
437         i=0
438         f=MEDFileField1TS()
439         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
440         fCell0.setName(fieldName) ; fCell0.setMesh(m)
441         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
442         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
443         fCell0.checkCoherency()
444         f.setFieldNoProfileSBT(fCell0)
445         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
446         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
447         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
448         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
449         fCell1.checkCoherency()
450         f.setFieldNoProfileSBT(fCell1)
451         fs.pushBackTimeStep(f)
452         ##### Time step 1 on nodes
453         i=1
454         f=MEDFileField1TS()
455         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
456         fNode.setName(fieldName) ; fNode.setMesh(m1)
457         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
458         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
459         fNode.checkCoherency()
460         f.setFieldNoProfileSBT(fNode)
461         fs.pushBackTimeStep(f)
462         ##### Time step 2 on cells
463         i=2
464         f=MEDFileField1TS()
465         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
466         fCell0.setName(fieldName) ; fCell0.setMesh(m)
467         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
468         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
469         fCell0.checkCoherency()
470         f.setFieldNoProfileSBT(fCell0)
471         #
472         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
473         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
474         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
475         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
476         fCell1.checkCoherency()
477         f.setFieldNoProfileSBT(fCell1)
478         fs.pushBackTimeStep(f)
479         ##### Time step 3 on nodes
480         i=3
481         f=MEDFileField1TS()
482         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
483         fNode.setName(fieldName) ; fNode.setMesh(m1)
484         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
485         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
486         fNode.checkCoherency()
487         f.setFieldNoProfileSBT(fNode)
488         fs.pushBackTimeStep(f)
489         ##### Time step 4
490         i=4
491         f=MEDFileField1TS()
492         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
493         fCell0.setName(fieldName) ; fCell0.setMesh(m)
494         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
495         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
496         fCell0.checkCoherency()
497         f.setFieldNoProfileSBT(fCell0)
498         #
499         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
500         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
501         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
502         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
503         fCell1.checkCoherency()
504         f.setFieldNoProfileSBT(fCell1)
505         #
506         fs.pushBackTimeStep(f)
507         mm.write(fname,2)
508         fs.write(fname,0)
509         a0Exp=mm.getCoords().deepCpy()
510         del m,m1,mm,fs,f,fCell0,fCell1
511         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
512         ms=MEDFileMeshes(fname)
513         fields=MEDFileFields(fname,False)
514         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
515         allFMTSLeavesToDisplay=[]
516         for fields in fields_per_mesh:
517             allFMTSLeavesToDisplay2=[]
518             for fmts in fields:
519                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
520                 pass
521             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
522             pass
523         self.assertEqual(len(allFMTSLeavesToDisplay),1)
524         self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
525         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
526         self.assertEqual(len(allFMTSLeavesPerTimeSeries),2) # two time series here : one for the cells, the second one for the nodes
527         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
528         self.assertEqual(len(allFMTSLeavesPerTimeSeries[1]),1)
529         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
530         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
531         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
532         #
533         mst=MEDFileMeshStruct.New(ms[0])
534         fcscp=allFMTSLeavesPerCommonSupport[0][1] # start with the cells
535         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
536         mml2=mml.prepare()
537         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
538         for i in xrange(1,3):
539             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
540             pass
541         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
542         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
543         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])))
544         self.assertTrue(a2.isEqual(DataArrayInt([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,67,70,73,76,80,84,88,92,96])))
545         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])))
546         assert a4 is None
547         assert a5 is None
548         # for cells
549         for i in xrange(3):
550             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
551             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
552             f.loadArraysIfNecessary()
553             self.assertEqual(f.getName(),"zeField")
554             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
555             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
556             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
557             self.assertTrue(v.isEqual(vExp,1e-12))
558             pass
559         # for nodes
560         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[1],ms[ms.getMeshesNames()[0]])
561         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
562         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
563         fcscp=allFMTSLeavesPerCommonSupport[0][1]
564         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
565         mml2=mml.prepare()
566         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
567         for i in xrange(1,2):
568             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
569             pass
570         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
571         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
572         self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
573         self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32])))
574         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])))
575         self.assertTrue(a4 is None)
576         self.assertTrue(a5 is None)
577         for i in xrange(2):
578             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
579             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
580             f.loadArraysIfNecessary()
581             self.assertEqual(f.getName(),"zeField")
582             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
583             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
584             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
585             self.assertTrue(v.isEqual(vExp,1e-12))
586             pass
587         pass
588
589     def test4(self):
590         """ This test defines 3 fields on nodes on the same mesh. All of these fields have no profile.
591         """
592         fname="ForMEDReader4.med"
593         # building a mesh containing 4 tri3 + 5 quad4
594         tri=MEDCouplingUMesh("tri",2)
595         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
596         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
597         tris=[tri.deepCpy() for i in xrange(4)]
598         for i,elt in enumerate(tris): elt.translate([i,0])
599         tris=MEDCouplingUMesh.MergeUMeshes(tris)
600         quad=MEDCouplingUMesh("quad",2)
601         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
602         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
603         quads=[quad.deepCpy() for i in xrange(5)]
604         for i,elt in enumerate(quads): elt.translate([5+i,0])
605         quads=MEDCouplingUMesh.MergeUMeshes(quads)
606         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
607         m.setName("mesh") ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
608         mm=MEDFileUMesh() ; mm.setMeshes([m])
609         #
610         fieldName1="zeField1"
611         fieldName2="zeField2"
612         fieldName3="zeField3"
613         fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
614         ##### Time step 0
615         i=0
616         f=MEDFileField1TS()
617         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
618         fNode.setName(fieldName1) ; fNode.setMesh(m)
619         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
620         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
621         fNode.checkCoherency()
622         f.setFieldNoProfileSBT(fNode)
623         fs1.pushBackTimeStep(f)
624         #
625         f=MEDFileField1TS()
626         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
627         fNode.setName(fieldName2) ; fNode.setMesh(m)
628         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
629         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
630         fNode.checkCoherency()
631         f.setFieldNoProfileSBT(fNode)
632         fs2.pushBackTimeStep(f)
633         #
634         f=MEDFileField1TS()
635         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
636         fNode.setName(fieldName3) ; fNode.setMesh(m)
637         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
638         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
639         fNode.checkCoherency()
640         f.setFieldNoProfileSBT(fNode)
641         fs3.pushBackTimeStep(f)
642         ##### Time step 1
643         i=1
644         f=MEDFileField1TS()
645         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
646         fNode.setName(fieldName1) ; fNode.setMesh(m)
647         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
648         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
649         fNode.checkCoherency()
650         f.setFieldNoProfileSBT(fNode)
651         fs1.pushBackTimeStep(f)
652         #
653         f=MEDFileField1TS()
654         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
655         fNode.setName(fieldName2) ; fNode.setMesh(m)
656         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
657         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
658         fNode.checkCoherency()
659         f.setFieldNoProfileSBT(fNode)
660         fs2.pushBackTimeStep(f)
661         #
662         f=MEDFileField1TS()
663         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
664         fNode.setName(fieldName3) ; fNode.setMesh(m)
665         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
666         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
667         fNode.checkCoherency()
668         f.setFieldNoProfileSBT(fNode)
669         fs3.pushBackTimeStep(f)
670         ##### Time step 2
671         i=2
672         f=MEDFileField1TS()
673         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
674         fNode.setName(fieldName1) ; fNode.setMesh(m)
675         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
676         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
677         fNode.checkCoherency()
678         f.setFieldNoProfileSBT(fNode)
679         fs1.pushBackTimeStep(f)
680         #
681         f=MEDFileField1TS()
682         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
683         fNode.setName(fieldName2) ; fNode.setMesh(m)
684         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
685         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
686         fNode.checkCoherency()
687         f.setFieldNoProfileSBT(fNode)
688         fs2.pushBackTimeStep(f)
689         #
690         f=MEDFileField1TS()
691         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
692         fNode.setName(fieldName3) ; fNode.setMesh(m)
693         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
694         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
695         fNode.checkCoherency()
696         f.setFieldNoProfileSBT(fNode)
697         fs3.pushBackTimeStep(f)
698         ##### Time step 3
699         i=3
700         f=MEDFileField1TS()
701         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
702         fNode.setName(fieldName1) ; fNode.setMesh(m)
703         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
704         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
705         fNode.checkCoherency()
706         f.setFieldNoProfileSBT(fNode)
707         fs1.pushBackTimeStep(f)
708         #
709         f=MEDFileField1TS()
710         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
711         fNode.setName(fieldName2) ; fNode.setMesh(m)
712         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
713         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
714         fNode.checkCoherency()
715         f.setFieldNoProfileSBT(fNode)
716         fs2.pushBackTimeStep(f)
717         #
718         f=MEDFileField1TS()
719         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
720         fNode.setName(fieldName3) ; fNode.setMesh(m)
721         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
722         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
723         fNode.checkCoherency()
724         f.setFieldNoProfileSBT(fNode)
725         fs3.pushBackTimeStep(f)
726         ##### Time step 4
727         i=4
728         f=MEDFileField1TS()
729         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
730         fNode.setName(fieldName1) ; fNode.setMesh(m)
731         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
732         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
733         fNode.checkCoherency()
734         f.setFieldNoProfileSBT(fNode)
735         fs1.pushBackTimeStep(f)
736         #
737         f=MEDFileField1TS()
738         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
739         fNode.setName(fieldName2) ; fNode.setMesh(m)
740         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
741         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
742         fNode.checkCoherency()
743         f.setFieldNoProfileSBT(fNode)
744         fs2.pushBackTimeStep(f)
745         #
746         f=MEDFileField1TS()
747         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
748         fNode.setName(fieldName3) ; fNode.setMesh(m)
749         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
750         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
751         fNode.checkCoherency()
752         f.setFieldNoProfileSBT(fNode)
753         fs3.pushBackTimeStep(f)
754         #
755         mm.write(fname,2)
756         fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
757         a0Exp=mm.getCoords().deepCpy()
758         del m,mm,fs1,fs2,fs3,f,fNode
759         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
760         ms=MEDFileMeshes(fname)
761         fields=MEDFileFields(fname,False)
762         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
763         allFMTSLeavesToDisplay=[]
764         for fields in fields_per_mesh:
765             allFMTSLeavesToDisplay2=[]
766             for fmts in fields:
767                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
768                 pass
769             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
770             pass
771         self.assertEqual(len(allFMTSLeavesToDisplay),1)
772         self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
773         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
774         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
775         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
776         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
777         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
778         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
779         #
780         mst=MEDFileMeshStruct.New(ms[0])
781         fcscp=allFMTSLeavesPerCommonSupport[0][1]
782         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
783         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
784         fcscp=allFMTSLeavesPerCommonSupport[0][1]
785         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
786         mml2=mml.prepare()
787         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
788         for i in xrange(1,5):
789             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
790             pass
791         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
792         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
793         self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,9,9,9,9,9])))
794         self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,16,20,24,28,32])))
795         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])))
796         self.assertTrue(a4 is None)
797         self.assertTrue(a5 is None)
798         # test all the time steps of the 1/1 time step serie, on field 1
799         for i in xrange(5):
800             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
801             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
802             f.loadArraysIfNecessary()
803             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
804             self.assertEqual(f.getName(),fieldName1)
805             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
806             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
807             self.assertTrue(v.isEqual(vExp,1e-12))
808             pass
809         # test all the time steps of the 1/1 time step serie, on field 2
810         for i in xrange(5):
811             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
812             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
813             f.loadArraysIfNecessary()
814             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
815             self.assertEqual(f.getName(),fieldName2)
816             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
817             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
818             self.assertTrue(v.isEqual(vExp,1e-12))
819             pass
820         # test all the time steps of the 1/1 time step serie, on field 3
821         for i in xrange(5):
822             f=allFMTSLeavesPerCommonSupport[0][0][2][i]
823             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
824             f.loadArraysIfNecessary()
825             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
826             self.assertEqual(f.getName(),fieldName3)
827             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
828             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
829             self.assertTrue(v.isEqual(vExp,1e-12))
830             pass
831         pass
832     
833     def test5(self):
834         """ 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
835         mesh lies on a different mesh.
836         """
837         fname="ForMEDReader5.med"
838         # building a mesh containing 6 tri3 + 5 quad4
839         m=MEDCouplingUMesh("mesh",2)
840         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]"])
841         m.setCoords(coords)
842         m.allocateCells()
843         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])
844         m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
845         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])
846         m.insertNextCell(NORM_QUAD4,[12,13,8,7])
847         mm=MEDFileUMesh() ; mm.setMeshes([m])
848         #
849         fieldName1="zeField1" ; pfl1=DataArrayInt([0,1,2,3,4,5]) ; pfl1.setName("pfl1") # on cells
850         fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,13,14]) ; pfl2.setName("pfl2") # on nodes
851         fieldName3="zeField3" ; pfl3=DataArrayInt([0,1,2,3,4,5,9,10]) ; pfl3.setName("pfl3") # on cells but different support
852         fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
853         #
854         for i in xrange(5):
855             f=MEDFileField1TS()
856             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
857             fNode.setName(fieldName1)
858             arr=DataArrayDouble(2*6) ; arr.iota(0+1000*i) ; arr.rearrange(2)
859             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
860             f.setFieldProfile(fNode,mm,0,pfl1)
861             fs1.pushBackTimeStep(f)
862             #
863             f=MEDFileField1TS()
864             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
865             fNode.setName(fieldName2)
866             arr=DataArrayDouble(2*8) ; arr.iota(100+1000*i) ; arr.rearrange(2)
867             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
868             f.setFieldProfile(fNode,mm,0,pfl2)
869             fs2.pushBackTimeStep(f)
870             #
871             f=MEDFileField1TS()
872             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
873             fNode.setName(fieldName3)
874             arr=DataArrayDouble(2*8) ; arr.iota(200+1000*i) ; arr.rearrange(2)
875             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
876             f.setFieldProfile(fNode,mm,0,pfl3)
877             fs3.pushBackTimeStep(f)
878             pass
879         mm.write(fname,2)
880         fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
881         a0Exp=mm.getCoords().deepCpy()
882         del m,mm,fs1,fs2,fs3,f,fNode
883         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
884         ms=MEDFileMeshes(fname)
885         fields=MEDFileFields(fname,False)
886         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
887         allFMTSLeavesToDisplay=[]
888         for fields in fields_per_mesh:
889             allFMTSLeavesToDisplay2=[]
890             for fmts in fields:
891                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
892                 pass
893             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
894             pass
895         self.assertEqual(len(allFMTSLeavesToDisplay),1)
896         self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
897         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
898         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 3 fields are defined on the same time steps
899         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
900         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
901         ms[0].getDirectUndergroundSingleGeoTypeMeshes(0)
902         self.assertEqual(len(allFMTSLeavesPerCommonSupport),2) # 2 support here
903         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
904         self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
905         #
906         mst=MEDFileMeshStruct.New(ms[0])
907         fcscp=allFMTSLeavesPerCommonSupport[0][1]
908         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
909         mml2=mml.prepare()
910         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
911         for i in xrange(1,5):
912             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
913             pass
914         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
915         self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
916         self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5])))
917         self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18])))
918         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])))
919         assert a4 is None
920         assert a5 is None
921         for i in xrange(5):
922             nbOfT=[6,8]
923             fieldNames=[fieldName1,fieldName2]
924             for j in xrange(2):
925                 m={"i":j}
926                 f=allFMTSLeavesPerCommonSupport[0][0][j][i]
927                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
928                 f.loadArraysIfNecessary()
929                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
930                 self.assertEqual(f.getName(),fieldNames[j])
931                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
932                 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])
933                 self.assertTrue(v.isEqual(vExp,1e-12))
934                 pass
935             pass
936         # Let's go for the 2nd support
937         fcscp=allFMTSLeavesPerCommonSupport[1][1]
938         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
939         mml2=mml.prepare()
940         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
941         for i in xrange(1,5):
942             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
943             pass
944         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
945         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
946         self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9])))
947         self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26])))
948         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])))
949         self.assertTrue(a4 is None)
950         self.assertTrue(a5 is None)
951         for i in xrange(5):
952             f=allFMTSLeavesPerCommonSupport[1][0][0][i]
953             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
954             f.loadArraysIfNecessary()
955             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
956             self.assertEqual(f.getName(),"zeField3")
957             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
958             vExp=DataArrayDouble(8*2) ; vExp.iota(200+1000*i) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]'%m,'Com2_2 [s^2]'%m])
959             self.assertTrue(v.isEqual(vExp,1e-12))
960             pass
961         pass
962     
963     def test6(self):
964         """ This test plays with cartesian mesh and profiles. When a sub cartesian mesh can also be considered as a cartesian mesh it is done.
965         """
966         fname="ForMEDReader6.med"
967         m=MEDCouplingCMesh("mesh")
968         coordsX=DataArrayDouble([0,1.1,2.2,3.3,4.4]) ; coordsX.setInfoOnComponents(["XX [m]"])
969         coordsY=DataArrayDouble([0,1.7,3.4]) ; coordsY.setInfoOnComponents(["YYY [km]"])
970         m.setCoords(coordsX,coordsY)
971         mm=MEDFileCMesh() ; mm.setMesh(m)
972         #
973         fieldName0="zeField0" ; # on cells
974         fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
975         fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
976         fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
977         fieldName4="zeField4" ;# on nodes
978         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
979         #
980         for i in xrange(5):
981             f=MEDFileField1TS()
982             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
983             fNode.setName(fieldName0) ; fNode.setMesh(m)
984             arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
985             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
986             f.setFieldNoProfileSBT(fNode)
987             fs0.pushBackTimeStep(f)
988             #
989             f=MEDFileField1TS()
990             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
991             fNode.setName(fieldName1)
992             arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
993             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
994             f.setFieldProfile(fNode,mm,0,pfl1)
995             self.assertEqual(pfl1.getName(),"pfl1")
996             fs1.pushBackTimeStep(f)
997             #
998             f=MEDFileField1TS()
999             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1000             fNode.setName(fieldName2)
1001             arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1002             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1003             f.setFieldProfile(fNode,mm,0,pfl2)
1004             self.assertEqual(pfl2.getName(),"pfl2")
1005             fs2.pushBackTimeStep(f)
1006             #
1007             f=MEDFileField1TS()
1008             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1009             fNode.setName(fieldName3)
1010             arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1011             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1012             f.setFieldProfile(fNode,mm,0,pfl3)
1013             self.assertEqual(pfl3.getName(),"pfl3")
1014             fs3.pushBackTimeStep(f)
1015             #
1016             f=MEDFileField1TS()
1017             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1018             fNode.setName(fieldName4) ; fNode.setMesh(m)
1019             arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1020             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1021             f.setFieldNoProfileSBT(fNode)
1022             fs4.pushBackTimeStep(f)
1023             pass
1024         mm.write(fname,2)
1025         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1026         del m,mm,fs1,fs2,fs3,f,fNode
1027         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1028         ms=MEDFileMeshes(fname)
1029         fields=MEDFileFields(fname,False)
1030         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1031         allFMTSLeavesToDisplay=[]
1032         for fields in fields_per_mesh:
1033             allFMTSLeavesToDisplay2=[]
1034             for fmts in fields:
1035                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1036                 pass
1037             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1038             pass
1039         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1040         self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1041         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1042         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1043         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1044         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1045         self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1046         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1047         self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1048         self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1049         #
1050         mst=MEDFileMeshStruct.New(ms[0])
1051         #
1052         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1053         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1054         mml2=mml.prepare()
1055         a,b=mml2.buildVTUArrays()
1056         self.assertTrue(a.isEqual(coordsX,1e-12))
1057         self.assertTrue(b.isEqual(coordsY,1e-12))
1058         self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
1059         for i in xrange(1,5):
1060             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1061             pass
1062         for i in xrange(5):
1063             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1064             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1065             f.loadArraysIfNecessary()
1066             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1067             self.assertEqual(f.getName(),fieldName0)
1068             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1069             vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1070             self.assertTrue(v.isEqual(vExp,1e-12))
1071             #
1072             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1073             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1074             f.loadArraysIfNecessary()
1075             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1076             self.assertEqual(f.getName(),fieldName4)
1077             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1078             vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1079             self.assertTrue(v.isEqual(vExp,1e-12))
1080             pass
1081         
1082         fcscp=allFMTSLeavesPerCommonSupport[1][1]
1083         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1084         mml2=mml.prepare()
1085         self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1086         a,b=mml2.buildVTUArrays()
1087         self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
1088         self.assertTrue(b.isEqual(coordsY,1e-12))
1089         for i in xrange(1,5):
1090             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1091             pass
1092         for i in xrange(5):
1093             f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1094             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1095             f.loadArraysIfNecessary()
1096             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1097             self.assertEqual(f.getName(),fieldName1)
1098             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1099             vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1100             self.assertTrue(v.isEqual(vExp,1e-12))
1101             #
1102             f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1103             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1104             f.loadArraysIfNecessary()
1105             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1106             self.assertEqual(f.getName(),fieldName2)
1107             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1108             vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1109             self.assertTrue(v.isEqual(vExp,1e-12))
1110             pass
1111         #
1112         fcscp=allFMTSLeavesPerCommonSupport[2][1]
1113         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1114         mml2=mml.prepare()
1115         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1116         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1117         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)
1118         a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1119         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1120         self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1121         self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16])))
1122         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])))
1123         self.assertTrue(a4 is None)
1124         self.assertTrue(a5 is None)
1125         for i in xrange(5):
1126             f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1127             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1128             f.loadArraysIfNecessary()
1129             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1130             self.assertEqual(f.getName(),fieldName3)
1131             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1132             vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1133             self.assertTrue(v.isEqual(vExp,1e-12))
1134             pass
1135         pass
1136
1137     def test7(self):
1138         """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
1139         This test is very similar to the test6.
1140         """
1141         fname="ForMEDReader7.med"
1142         m=MEDCouplingCurveLinearMesh("mesh") ; m.setNodeGridStructure([5,3])
1143         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)
1144         a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1145         m.setCoords(a0Exp)
1146         mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
1147         #
1148         fieldName0="zeField0" ; # on cells
1149         fieldName1="zeField1" ; pfl1=DataArrayInt([2,3,6,7]) ; pfl1.setName("pfl1") # on cells
1150         fieldName2="zeField2" ; pfl2=DataArrayInt([2,3,4,7,8,9,12,13,14]) ; pfl2.setName("pfl2") # on nodes
1151         fieldName3="zeField3" ; pfl3=DataArrayInt([2,3,5,7]) ; pfl3.setName("pfl3") # on cells but different support
1152         fieldName4="zeField4" ;# on nodes
1153         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
1154         #
1155         for i in xrange(5):
1156             f=MEDFileField1TS()
1157             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1158             fNode.setName(fieldName0) ; fNode.setMesh(m)
1159             arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1160             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1161             f.setFieldNoProfileSBT(fNode)
1162             fs0.pushBackTimeStep(f)
1163             #
1164             f=MEDFileField1TS()
1165             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1166             fNode.setName(fieldName1)
1167             arr=DataArrayDouble(2*4) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1168             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1169             f.setFieldProfile(fNode,mm,0,pfl1)
1170             self.assertEqual(pfl1.getName(),"pfl1")
1171             fs1.pushBackTimeStep(f)
1172             #
1173             f=MEDFileField1TS()
1174             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1175             fNode.setName(fieldName2)
1176             arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1177             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1178             f.setFieldProfile(fNode,mm,0,pfl2)
1179             self.assertEqual(pfl2.getName(),"pfl2")
1180             fs2.pushBackTimeStep(f)
1181             #
1182             f=MEDFileField1TS()
1183             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1184             fNode.setName(fieldName3)
1185             arr=DataArrayDouble(2*4) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1186             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1187             f.setFieldProfile(fNode,mm,0,pfl3)
1188             self.assertEqual(pfl3.getName(),"pfl3")
1189             fs3.pushBackTimeStep(f)
1190             #
1191             f=MEDFileField1TS()
1192             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1193             fNode.setName(fieldName4) ; fNode.setMesh(m)
1194             arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1195             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
1196             f.setFieldNoProfileSBT(fNode)
1197             fs4.pushBackTimeStep(f)
1198             pass
1199         mm.write(fname,2)
1200         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
1201         del m,mm,fs1,fs2,fs3,f,fNode
1202         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1203         ms=MEDFileMeshes(fname)
1204         fields=MEDFileFields(fname,False)
1205         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1206         allFMTSLeavesToDisplay=[]
1207         for fields in fields_per_mesh:
1208             allFMTSLeavesToDisplay2=[]
1209             for fmts in fields:
1210                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1211                 pass
1212             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1213             pass
1214         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1215         self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
1216         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1217         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 5 fields are defined on the same time steps
1218         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
1219         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1220         self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1221         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1222         self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),2)
1223         self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1224         #
1225         mst=MEDFileMeshStruct.New(ms[0])
1226         #
1227         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1228         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1229         mml2=mml.prepare()
1230         self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
1231         a,b=mml2.buildVTUArrays()
1232         self.assertTrue(a.isEqual(a0Exp,1e-12))
1233         self.assertEqual(b,[5,3])
1234         for i in xrange(1,5):
1235             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1236             pass
1237         for i in xrange(5):
1238             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1239             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1240             f.loadArraysIfNecessary()
1241             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1242             self.assertEqual(f.getName(),fieldName0)
1243             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1244             vExp=DataArrayDouble(8*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1245             self.assertTrue(v.isEqual(vExp,1e-12))
1246             #
1247             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1248             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1249             f.loadArraysIfNecessary()
1250             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1251             self.assertEqual(f.getName(),fieldName4)
1252             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1253             vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
1254             self.assertTrue(v.isEqual(vExp,1e-12))
1255             pass
1256         #
1257         fcscp=allFMTSLeavesPerCommonSupport[1][1]
1258         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1259         mml2=mml.prepare()
1260         self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
1261         a,b=mml2.buildVTUArrays()
1262         self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
1263         self.assertEqual(b,[3,3])
1264         for i in xrange(1,5):
1265             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1266             pass
1267         for i in xrange(5):
1268             f=allFMTSLeavesPerCommonSupport[1][0][0][i]
1269             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1270             f.loadArraysIfNecessary()
1271             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1272             self.assertEqual(f.getName(),fieldName1)
1273             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1274             vExp=DataArrayDouble(4*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1275             self.assertTrue(v.isEqual(vExp,1e-12))
1276             #
1277             f=allFMTSLeavesPerCommonSupport[1][0][1][i]
1278             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1279             f.loadArraysIfNecessary()
1280             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1281             self.assertEqual(f.getName(),fieldName2)
1282             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1283             vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1284             self.assertTrue(v.isEqual(vExp,1e-12))
1285             pass
1286         #
1287         fcscp=allFMTSLeavesPerCommonSupport[2][1]
1288         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1289         mml2=mml.prepare()
1290         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here the 3rd support is a part of CMesh but impossible to simplify more than a UMesh
1291         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1292         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)
1293         a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
1294         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1295         self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9])))
1296         self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16])))
1297         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])))
1298         self.assertTrue(a4 is None)
1299         self.assertTrue(a5 is None)
1300         for i in xrange(5):
1301             f=allFMTSLeavesPerCommonSupport[2][0][0][i]
1302             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1303             f.loadArraysIfNecessary()
1304             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1305             self.assertEqual(f.getName(),fieldName3)
1306             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1307             vExp=DataArrayDouble(4*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1308             self.assertTrue(v.isEqual(vExp,1e-12))
1309             pass
1310         pass
1311
1312     def test8(self):
1313         """ This test plays with with gauss fields with no profiles.
1314         """
1315         fname="ForMEDReader8.med"
1316         # building a mesh containing 6 tri3 + 5 quad4
1317         m=MEDCouplingUMesh("mesh",2)
1318         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]"])
1319         m.setCoords(coords)
1320         m.allocateCells()
1321         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])
1322         m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1323         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])
1324         m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1325         mm=MEDFileUMesh() ; mm.setMeshes([m])
1326         #
1327         fieldName0="zeField0"
1328         fieldName1="zeField1"
1329         fieldName2="zeField2"
1330         fieldName3="zeField3"
1331         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1332         for i in xrange(5):
1333             f=MEDFileField1TS()
1334             fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1335             fNode.setName(fieldName0) ; fNode.setMesh(m)
1336             arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1337             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1338             f.setFieldNoProfileSBT(fNode)
1339             fs0.pushBackTimeStep(f)
1340             #
1341             f=MEDFileField1TS()
1342             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1343             fNode.setName(fieldName1) ; fNode.setMesh(m)
1344             arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1345             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1346             f.setFieldNoProfileSBT(fNode)
1347             fs1.pushBackTimeStep(f)
1348             #
1349             f=MEDFileField1TS()
1350             fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1351             fNode.setName(fieldName2) ; fNode.setMesh(m)
1352             fNode.setGaussLocalizationOnCells([0,1,2,3],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1353             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])
1354             fNode.setGaussLocalizationOnCells([6,7,8],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1355             fNode.setGaussLocalizationOnCells([9,10],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1356             arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1357             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1358             f.setFieldNoProfileSBT(fNode)
1359             fs2.pushBackTimeStep(f)
1360             #
1361             f=MEDFileField1TS()
1362             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1363             fNode.setName(fieldName3) ; fNode.setMesh(m)
1364             arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1365             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1366             f.setFieldNoProfileSBT(fNode)
1367             fs3.pushBackTimeStep(f)
1368             #
1369             pass
1370         #
1371         mm.write(fname,2)
1372         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1373         a0Exp=mm.getCoords().deepCpy()
1374         del m,mm,fs1,fs2,fs3,f,fNode
1375         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1376         ms=MEDFileMeshes(fname)
1377         fields=MEDFileFields(fname,False)
1378         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1379         allFMTSLeavesToDisplay=[]
1380         for fields in fields_per_mesh:
1381             allFMTSLeavesToDisplay2=[]
1382             for fmts in fields:
1383                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1384                 pass
1385             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1386             pass
1387         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1388         self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1389         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1390         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1391         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1392         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1393         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1394         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1395         #
1396         mst=MEDFileMeshStruct.New(ms[0])
1397         #
1398         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1399         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1400         mml2=mml.prepare()
1401         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1402         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1403         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1404         self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,5,5,5,9,9,9,9,9])))
1405         self.assertTrue(a2.isEqual(DataArrayInt([3,6,9,12,15,18,22,26,30,34,38])))
1406         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])))
1407         self.assertTrue(a4 is None)
1408         self.assertTrue(a5 is None)
1409         for i in xrange(1,5):
1410             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1411             pass
1412         for i in xrange(5):
1413             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1414             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1415             f.loadArraysIfNecessary()
1416             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1417             self.assertEqual(f.getName(),fieldName0)
1418             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1419             vExp=DataArrayDouble(38*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1420             self.assertTrue(v.isEqual(vExp,1e-12))
1421             #
1422             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1423             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1424             f.loadArraysIfNecessary()
1425             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1426             self.assertEqual(f.getName(),fieldName1)
1427             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1428             vExp=DataArrayDouble(11*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1429             self.assertTrue(v.isEqual(vExp,1e-12))
1430             #
1431             f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1432             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1433             f.loadArraysIfNecessary()
1434             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1435             self.assertEqual(f.getName(),fieldName2)
1436             #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1437             vExp=DataArrayDouble(44*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1438             self.assertTrue(v.isEqual(vExp,1e-12))
1439             #
1440             f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1441             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1442             f.loadArraysIfNecessary()
1443             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1444             self.assertEqual(f.getName(),fieldName3)
1445             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1446             vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1447             self.assertTrue(v.isEqual(vExp,1e-12))
1448             pass
1449         #
1450         pass
1451
1452     def test9(self):
1453         """ This test plays with with gauss fields with profiles.
1454         """
1455         fname="ForMEDReader9.med"
1456         # building a mesh containing 6 tri3 + 5 quad4
1457         m=MEDCouplingUMesh("mesh",2)
1458         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]"])
1459         m.setCoords(coords)
1460         m.allocateCells()
1461         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])
1462         m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1463         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])
1464         m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1465         mm=MEDFileUMesh() ; mm.setMeshes([m])
1466         #
1467         fieldName0="zeField0"
1468         fieldName1="zeField1"
1469         fieldName2="zeField2"
1470         fieldName3="zeField3"
1471         pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
1472         pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
1473         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1474         for i in xrange(5):
1475             f=MEDFileField1TS()
1476             fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
1477             fNode.setName(fieldName0)
1478             arr=DataArrayDouble(2*18) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1479             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1480             f.setFieldProfile(fNode,mm,0,pfl1)
1481             fs0.pushBackTimeStep(f)
1482             #
1483             f=MEDFileField1TS()
1484             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1485             fNode.setName(fieldName1)
1486             arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1487             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1488             f.setFieldProfile(fNode,mm,0,pfl1)
1489             fs1.pushBackTimeStep(f)
1490             #
1491             f=MEDFileField1TS()
1492             fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1493             fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1494             fNode.setGaussLocalizationOnCells([0],[0.,0.,1.,0.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1495             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])
1496             fNode.setGaussLocalizationOnCells([2,3],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1497             fNode.setGaussLocalizationOnCells([4],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1498             arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1499             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1500             f.setFieldProfile(fNode,mm,0,pfl1)
1501             fs2.pushBackTimeStep(f)
1502             #
1503             f=MEDFileField1TS()
1504             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1505             fNode.setName(fieldName3)
1506             arr=DataArrayDouble(2*9) ; arr.iota(400+1000*i) ; arr.rearrange(2)
1507             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"])
1508             f.setFieldProfile(fNode,mm,0,pfl2)
1509             fs3.pushBackTimeStep(f)
1510             #
1511             pass
1512         #
1513         mm.write(fname,2)
1514         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1515         a0Exp=mm.getCoords().deepCpy()
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)
1519         fields=MEDFileFields(fname,False)
1520         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1521         allFMTSLeavesToDisplay=[]
1522         for fields in fields_per_mesh:
1523             allFMTSLeavesToDisplay2=[]
1524             for fmts in fields:
1525                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1526                 pass
1527             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1528             pass
1529         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1530         self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1531         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1532         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1533         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1534         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1535         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1536         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),4)
1537         #
1538         mst=MEDFileMeshStruct.New(ms[0])
1539         #
1540         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1541         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1542         mml2=mml.prepare()
1543         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1544         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1545         self.assertTrue(a0.isEqual(a0Exp[pfl2].changeNbOfComponents(3,0.),1e-12))
1546         self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1547         self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18])))
1548         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])))
1549         self.assertTrue(a4 is None)
1550         self.assertTrue(a5 is None)
1551         for i in xrange(1,5):
1552             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1553             pass
1554         for i in xrange(5):
1555             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1556             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1557             f.loadArraysIfNecessary()
1558             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1559             self.assertEqual(f.getName(),fieldName0)
1560             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1561             vExp=DataArrayDouble(18*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1562             self.assertTrue(v.isEqual(vExp,1e-12))
1563             #
1564             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1565             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1566             f.loadArraysIfNecessary()
1567             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1568             self.assertEqual(f.getName(),fieldName1)
1569             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1570             vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1571             self.assertTrue(v.isEqual(vExp,1e-12))
1572             #
1573             f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1574             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1575             f.loadArraysIfNecessary()
1576             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1577             self.assertEqual(f.getName(),fieldName2)
1578             #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1579             vExp=DataArrayDouble(22*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1580             self.assertTrue(v.isEqual(vExp,1e-12))
1581             #
1582             f=allFMTSLeavesPerCommonSupport[0][0][3][i]
1583             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1584             f.loadArraysIfNecessary()
1585             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1586             self.assertEqual(f.getName(),fieldName3)
1587             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1588             vExp=DataArrayDouble(9*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
1589             self.assertTrue(v.isEqual(vExp,1e-12))
1590             pass
1591         pass
1592     
1593     def test10(self):
1594         """ This test plays with fields only on nodes containing profiles.
1595         """
1596         fname="ForMEDReader10.med"
1597         # building a mesh containing 6 tri3 + 5 quad4
1598         m=MEDCouplingUMesh("mesh",2)
1599         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]"])
1600         m.setCoords(coords)
1601         m.allocateCells()
1602         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])
1603         m.insertNextCell(NORM_TRI3,[13,9,8]) ; m.insertNextCell(NORM_TRI3,[13,14,9])
1604         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])
1605         m.insertNextCell(NORM_QUAD4,[12,13,8,7])
1606         mm=MEDFileUMesh() ; mm.setMeshes([m])
1607         #
1608         fieldName0="zeField0"
1609         fieldName1="zeField1"
1610         fieldName2="zeField2"
1611         pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
1612         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
1613         for i in xrange(5):
1614             f=MEDFileField1TS()
1615             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1616             fNode.setName(fieldName0)
1617             arr=DataArrayDouble(2*9) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1618             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
1619             f.setFieldProfile(fNode,mm,0,pfl1)
1620             fs0.pushBackTimeStep(f)
1621             #
1622             f=MEDFileField1TS()
1623             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1624             fNode.setName(fieldName1)
1625             arr=DataArrayDouble(2*9) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1626             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
1627             f.setFieldProfile(fNode,mm,0,pfl1)
1628             fs1.pushBackTimeStep(f)
1629             #
1630             f=MEDFileField1TS()
1631             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
1632             fNode.setName(fieldName2)
1633             arr=DataArrayDouble(2*9) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1634             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
1635             f.setFieldProfile(fNode,mm,0,pfl1)
1636             fs2.pushBackTimeStep(f)
1637             #
1638             pass
1639         #
1640         mm.write(fname,2)
1641         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
1642         a0Exp=mm.getCoords().deepCpy()
1643         del m,mm,fs1,fs2,f,fNode
1644         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1645         ms=MEDFileMeshes(fname)
1646         fields=MEDFileFields(fname,False)
1647         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1648         allFMTSLeavesToDisplay=[]
1649         for fields in fields_per_mesh:
1650             allFMTSLeavesToDisplay2=[]
1651             for fmts in fields:
1652                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1653                 pass
1654             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1655             pass
1656         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1657         self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
1658         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1659         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 4 fields are defined on the same time steps
1660         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
1661         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1662         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1663         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),3)
1664         #
1665         mst=MEDFileMeshStruct.New(ms[0])
1666         #
1667         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1668         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1669         mml2=mml.prepare()
1670         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1671         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1672         self.assertTrue(a0.isEqual(a0Exp[pfl1].changeNbOfComponents(3,0.),1e-12))
1673         self.assertTrue(a1.isEqual(DataArrayByte([5,5,9,9,9])))
1674         self.assertTrue(a2.isEqual(DataArrayInt([3,6,10,14,18])))
1675         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])))
1676         self.assertTrue(a4 is None)
1677         self.assertTrue(a5 is None)
1678         for i in xrange(1,5):
1679             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1680             pass
1681         for i in xrange(5):
1682             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1683             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1684             f.loadArraysIfNecessary()
1685             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1686             self.assertEqual(f.getName(),fieldName0)
1687             #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1688             vExp=DataArrayDouble(9*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1689             self.assertTrue(v.isEqual(vExp,1e-12))
1690             #
1691             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1692             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1693             f.loadArraysIfNecessary()
1694             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1695             self.assertEqual(f.getName(),fieldName1)
1696             #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1697             vExp=DataArrayDouble(9*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1698             self.assertTrue(v.isEqual(vExp,1e-12))
1699             #
1700             f=allFMTSLeavesPerCommonSupport[0][0][2][i]
1701             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1702             f.loadArraysIfNecessary()
1703             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1704             self.assertEqual(f.getName(),fieldName2)
1705             #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug
1706             vExp=DataArrayDouble(9*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
1707             self.assertTrue(v.isEqual(vExp,1e-12))
1708             pass
1709         pass
1710     
1711     def test11(self):
1712         """ 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 !
1713         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.
1714         """
1715         fname="ForMEDReader11.med"
1716         m=MEDCouplingCMesh("mesh")
1717         arr=DataArrayDouble(5) ; arr.iota()
1718         m.setCoords(arr,arr)
1719         m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1720         mm=MEDFileUMesh() ; mm.setMeshes([m])
1721         #
1722         fieldName0="zeField0"
1723         fs0=MEDFileFieldMultiTS()
1724         for i in xrange(5):
1725             f=MEDFileField1TS()
1726             fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1727             fNode.setName(fieldName0) ; fNode.setMesh(m)
1728             fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1729             fNode.setGaussLocalizationOnCells([1,5,8,9],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
1730             fNode.setGaussLocalizationOnCells([6,10,13],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1731             fNode.setGaussLocalizationOnCells([11,12,14],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1732             arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1733             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1734             f.setFieldNoProfileSBT(fNode)
1735             fs0.pushBackTimeStep(f)
1736             pass
1737         mm.write(fname,2)
1738         fs0.write(fname,0)
1739         a0Exp=mm.getCoords().deepCpy()
1740         del m,mm,fs0,f,fNode
1741         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1742         ms=MEDFileMeshes(fname)
1743         fields=MEDFileFields(fname,False)
1744         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1745         allFMTSLeavesToDisplay=[]
1746         for fields in fields_per_mesh:
1747             allFMTSLeavesToDisplay2=[]
1748             for fmts in fields:
1749                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1750                 pass
1751             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1752             pass
1753         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1754         self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
1755         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1756         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 1 field is defined on the same time steps
1757         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
1758         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1759         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1760         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
1761         #
1762         mst=MEDFileMeshStruct.New(ms[0])
1763         #
1764         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1765         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1766         mml2=mml.prepare()
1767         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1768         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1769         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1770         self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1771         self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64])))
1772         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]]
1773         self.assertTrue(a4 is None)
1774         self.assertTrue(a5 is None)
1775         for i in xrange(1,5):
1776             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1777             pass
1778         for i in xrange(5):
1779             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1780             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1781             f.loadArraysIfNecessary()
1782             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1783             self.assertEqual(f.getName(),fieldName0)
1784             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1785             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]'])
1786             vExp+=i*1000
1787             self.assertTrue(v.isEqual(vExp,1e-12))
1788             pass
1789         pass
1790
1791     def test12(self):
1792         """ This test is the second ultimate test for the profiles with gauss points.
1793         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.
1794         """
1795         fname="ForMEDReader12.med"
1796         m=MEDCouplingCMesh("mesh")
1797         arr=DataArrayDouble(5) ; arr.iota()
1798         m.setCoords(arr,arr)
1799         m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
1800         mm=MEDFileUMesh() ; mm.setMeshes([m])
1801         #
1802         fieldName0="zeField0"
1803         fieldName1="zeField1"
1804         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
1805         for i in xrange(5):
1806             f=MEDFileField1TS()
1807             fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
1808             fNode.setName(fieldName0) ; fNode.setMesh(m)
1809             fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
1810             fNode.setGaussLocalizationOnCells([1,5,8,9],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
1811             fNode.setGaussLocalizationOnCells([6,10,13],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
1812             fNode.setGaussLocalizationOnCells([11,12,14],[0.,0.,1.,0.,1.,1.,0.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
1813             arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1814             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1815             f.setFieldNoProfileSBT(fNode)
1816             fs0.pushBackTimeStep(f)
1817             #
1818             f=MEDFileField1TS()
1819             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1820             fNode.setName(fieldName1) ; fNode.setMesh(m)
1821             arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1822             fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1823             f.setFieldNoProfileSBT(fNode)
1824             fs1.pushBackTimeStep(f)
1825             pass
1826         mm.write(fname,2)
1827         fs0.write(fname,0) ; fs1.write(fname,0)
1828         a0Exp=mm.getCoords().deepCpy()
1829         del m,mm,fs0,fs1,f,fNode
1830         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1831         ms=MEDFileMeshes(fname)
1832         fields=MEDFileFields(fname,False)
1833         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1834         allFMTSLeavesToDisplay=[]
1835         for fields in fields_per_mesh:
1836             allFMTSLeavesToDisplay2=[]
1837             for fmts in fields:
1838                 allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1839                 pass
1840             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1841             pass
1842         self.assertEqual(len(allFMTSLeavesToDisplay),1)
1843         self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
1844         allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1845         self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1846         self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
1847         allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1848         self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
1849         self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1850         #
1851         mst=MEDFileMeshStruct.New(ms[0])
1852         #
1853         fcscp=allFMTSLeavesPerCommonSupport[0][1]
1854         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1855         mml2=mml.prepare()
1856         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1857         a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1858         self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
1859         self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
1860         self.assertTrue(a2.isEqual(DataArrayInt([4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64])))
1861         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
1862         self.assertTrue(a4 is None)
1863         self.assertTrue(a5 is None)
1864         for i in xrange(1,5):
1865             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1866             pass
1867         for i in xrange(5):
1868             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1869             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1870             f.loadArraysIfNecessary()
1871             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1872             self.assertEqual(f.getName(),fieldName0)
1873             #self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1874             vExp=DataArrayDouble(65*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1875             self.assertTrue(v.isEqual(vExp,1e-12))
1876             #
1877             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1878             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1879             f.loadArraysIfNecessary()
1880             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1881             self.assertEqual(f.getName(),fieldName1)
1882             self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer()) # not a bug : huge reordering performed !
1883             vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1884             self.assertTrue(v.isEqual(vExp,1e-12))
1885             pass
1886
1887     def test13(self):
1888             """ Testing polyhedrons mixed with hexa8"""
1889             fname="ForMEDReader13.med"
1890             m=MEDCouplingUMesh("mesh",3)
1891             m.allocateCells()
1892             m.insertNextCell(NORM_HEXA8,[1,0,6,7,13,12,18,19]) ; m.insertNextCell(NORM_HEXA8,[2,1,7,8,14,13,19,20])
1893             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])
1894             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])
1895             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])
1896             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]"])
1897             m.setCoords(coords)
1898             mm=MEDFileUMesh() ; mm.setMeshes([m])
1899             fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
1900             fieldName0="zeField0"
1901             fieldName1="zeField1"
1902             fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
1903             fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
1904             for i in xrange(5):
1905                 f=MEDFileField1TS()
1906                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1907                 fNode.setName(fieldName0) ; fNode.setMesh(m)
1908                 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
1909                 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
1910                 f.setFieldNoProfileSBT(fNode)
1911                 fs0.pushBackTimeStep(f)
1912                 #
1913                 f=MEDFileField1TS()
1914                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1915                 fNode.setName(fieldName1) ; fNode.setMesh(m)
1916                 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
1917                 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
1918                 f.setFieldNoProfileSBT(fNode)
1919                 fs1.pushBackTimeStep(f)
1920                 #
1921                 f=MEDFileField1TS()
1922                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1923                 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
1924                 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
1925                 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
1926                 f.setFieldProfile(fNode,mm,0,pfl1)
1927                 fs2.pushBackTimeStep(f)
1928                 #
1929                 f=MEDFileField1TS()
1930                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
1931                 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
1932                 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
1933                 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
1934                 f.setFieldProfile(fNode,mm,0,pfl2)
1935                 fs3.pushBackTimeStep(f)
1936                 pass
1937             mm.write(fname,2)
1938             fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
1939             a0Exp=mm.getCoords().deepCpy()
1940             del m,mm,fs0
1941             ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
1942             ms=MEDFileMeshes(fname)
1943             fields=MEDFileFields(fname,False)
1944             fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
1945             allFMTSLeavesToDisplay=[]
1946             for fields in fields_per_mesh:
1947                 allFMTSLeavesToDisplay2=[]
1948                 for fmts in fields:
1949                     allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
1950                     pass
1951                 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
1952                 pass
1953             self.assertEqual(len(allFMTSLeavesToDisplay),1)
1954             self.assertEqual(len(allFMTSLeavesToDisplay[0]),4)
1955             allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
1956             self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
1957             self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),4)
1958             allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
1959             self.assertEqual(len(allFMTSLeavesPerCommonSupport),3)
1960             self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
1961             self.assertEqual(len(allFMTSLeavesPerCommonSupport[1][0]),1)
1962             self.assertEqual(len(allFMTSLeavesPerCommonSupport[2][0]),1)
1963             #
1964             mst=MEDFileMeshStruct.New(ms[0])
1965             #
1966             fcscp=allFMTSLeavesPerCommonSupport[0][1]
1967             mml=fcscp.buildFromScratchDataSetSupport(0,fields)
1968             mml2=mml.prepare()
1969             self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
1970             a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
1971             self.assertTrue(a0.isEqual(a0Exp,1e-12))
1972             self.assertTrue(a1.isEqual(DataArrayByte([12,12,42,42,42])))
1973             self.assertTrue(a2.isEqual(DataArrayInt([8,16,24,32,40])))
1974             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])))
1975             self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
1976             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])))
1977             for i in xrange(1,5):
1978                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
1979                 pass
1980             pass
1981             for i in xrange(5):
1982                 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
1983                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1984                 f.loadArraysIfNecessary()
1985                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1986                 self.assertEqual(f.getName(),fieldName0)
1987                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1988                 vExp=DataArrayDouble(5*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
1989                 self.assertTrue(v.isEqual(vExp,1e-12))
1990                 #
1991                 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
1992                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
1993                 f.loadArraysIfNecessary()
1994                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
1995                 self.assertEqual(f.getName(),fieldName1)
1996                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
1997                 vExp=DataArrayDouble(5*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
1998                 self.assertTrue(v.isEqual(vExp,1e-12))
1999                 pass
2000             #
2001             fcscp=allFMTSLeavesPerCommonSupport[1][1]
2002             mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2003             mml2=mml.prepare()
2004             self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2005             a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2006             self.assertTrue(a0.isEqual(a0Exp,1e-12))
2007             self.assertTrue(a1.isEqual(DataArrayByte([42,42])))
2008             self.assertTrue(a2.isEqual(DataArrayInt([8,16])))
2009             self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
2010             self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
2011             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])))
2012             for i in xrange(1,5):
2013                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2014                 pass
2015             pass
2016             for i in xrange(5):
2017                 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
2018                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2019                 f.loadArraysIfNecessary()
2020                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2021                 self.assertEqual(f.getName(),fieldName2)
2022                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2023                 vExp=DataArrayDouble(2*2) ; vExp.iota(200+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_2 [m]','Com2_2 [s^2]'])
2024                 self.assertTrue(v.isEqual(vExp,1e-12))
2025                 pass
2026             #
2027             fcscp=allFMTSLeavesPerCommonSupport[2][1]
2028             mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2029             mml2=mml.prepare()
2030             self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2031             a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2032             self.assertTrue(a0.isEqual(a0Exp,1e-12))
2033             self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2034             self.assertTrue(a2.isEqual(DataArrayInt([8,16,24])))
2035             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])))
2036             self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2037             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])))
2038             for i in xrange(1,5):
2039                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2040                 pass
2041             pass
2042             for i in xrange(5):
2043                 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
2044                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2045                 f.loadArraysIfNecessary()
2046                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2047                 self.assertEqual(f.getName(),fieldName3)
2048                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2049                 vExp=DataArrayDouble(3*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_3 [m]','Com2_3 [s^2]'])
2050                 self.assertTrue(v.isEqual(vExp,1e-12))
2051                 pass
2052             pass
2053
2054     def test14(self):
2055             """ Testing only polyhedrons"""
2056             fname="ForMEDReader14.med"
2057             m=MEDCouplingUMesh("mesh",3)
2058             m.allocateCells()
2059             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])
2060             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])
2061             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])
2062             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]"])
2063             m.setCoords(coords)
2064             mm=MEDFileUMesh() ; mm.setMeshes([m])
2065             fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
2066             fieldName0="zeField0"
2067             fieldName1="zeField1"
2068             for i in xrange(5):
2069                 f=MEDFileField1TS()
2070                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2071                 fNode.setName(fieldName0) ; fNode.setMesh(m)
2072                 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
2073                 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
2074                 f.setFieldNoProfileSBT(fNode)
2075                 fs0.pushBackTimeStep(f)
2076                 #
2077                 f=MEDFileField1TS()
2078                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
2079                 fNode.setName(fieldName1) ; fNode.setMesh(m)
2080                 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
2081                 fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
2082                 f.setFieldNoProfileSBT(fNode)
2083                 fs1.pushBackTimeStep(f)
2084                 pass
2085             mm.write(fname,2)
2086             fs0.write(fname,0) ; fs1.write(fname,0)
2087             a0Exp=mm.getCoords().deepCpy()
2088             del m,mm,fs0
2089             ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
2090             ms=MEDFileMeshes(fname)
2091             fields=MEDFileFields(fname,False)
2092             fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
2093             allFMTSLeavesToDisplay=[]
2094             for fields in fields_per_mesh:
2095                 allFMTSLeavesToDisplay2=[]
2096                 for fmts in fields:
2097                     allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
2098                     pass
2099                 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
2100                 pass
2101             self.assertEqual(len(allFMTSLeavesToDisplay),1)
2102             self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
2103             allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
2104             self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
2105             self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
2106             allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
2107             self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
2108             self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),2)
2109             #
2110             mst=MEDFileMeshStruct.New(ms[0])
2111             #
2112             fcscp=allFMTSLeavesPerCommonSupport[0][1]
2113             mml=fcscp.buildFromScratchDataSetSupport(0,fields)
2114             mml2=mml.prepare()
2115             self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
2116             a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
2117             self.assertTrue(a0.isEqual(a0Exp,1e-12))
2118             self.assertTrue(a1.isEqual(DataArrayByte([42,42,42])))
2119             self.assertTrue(a2.isEqual(DataArrayInt([8,16,24])))
2120             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])))
2121             self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
2122             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])))
2123             for i in xrange(1,5):
2124                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
2125                 pass
2126             pass
2127             for i in xrange(5):
2128                 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
2129                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2130                 f.loadArraysIfNecessary()
2131                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2132                 self.assertEqual(f.getName(),fieldName0)
2133                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2134                 vExp=DataArrayDouble(3*2) ; vExp.iota(0+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
2135                 self.assertTrue(v.isEqual(vExp,1e-12))
2136                 #
2137                 f=allFMTSLeavesPerCommonSupport[0][0][1][i]
2138                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
2139                 f.loadArraysIfNecessary()
2140                 v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
2141                 self.assertEqual(f.getName(),fieldName1)
2142                 self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
2143                 vExp=DataArrayDouble(3*2) ; vExp.iota(100+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
2144                 self.assertTrue(v.isEqual(vExp,1e-12))
2145                 pass
2146             pass
2147
2148 unittest.main()