Salome HOME
CS work : MeshGems reader/writer
[tools/medcoupling.git] / src / MEDLoader / Swig / MEDLoaderTest4.py
index 5a39364d234c2c1b7e85ef7b9d84760aad43aef7..2cef212f15a4dc1815fe31858f871df04936a9e4 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2014  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2020  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-# Author : Anthony Geay (CEA/DEN)
+# Author : Anthony Geay (EDF R&D)
 
 from MEDLoader import *
 import unittest
 from math import pi,e,sqrt
+from MEDLoaderDataForTest import WriteInTmpDir
 
 class MEDLoaderTest4(unittest.TestCase):
     """
     Test series to emulate the future MEDReader plugin for PARAVIS.
     """
+    @WriteInTmpDir
     def test1(self):
         """
         This test is the most simple one. One time serie of one field with only cell fields with no profiles.
@@ -37,13 +39,13 @@ class MEDLoaderTest4(unittest.TestCase):
         tri=MEDCouplingUMesh("tri",2)
         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
-        tris=[tri.deepCpy() for i in xrange(4)]
+        tris = [tri.deepCopy() for i in range(4)]
         for i,elt in enumerate(tris): elt.translate([i,0])
         tris=MEDCouplingUMesh.MergeUMeshes(tris)
         quad=MEDCouplingUMesh("quad",2)
         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
-        quads=[quad.deepCpy() for i in xrange(5)]
+        quads = [quad.deepCopy() for i in range(5)]
         for i,elt in enumerate(quads): elt.translate([5+i,0])
         quads=MEDCouplingUMesh.MergeUMeshes(quads)
         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
@@ -64,13 +66,13 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         ##### Time step 1
@@ -80,14 +82,14 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         ##### Time step 2
@@ -97,14 +99,14 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         ##### Time step 3
@@ -115,14 +117,14 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         #
         fs.pushBackTimeStep(f)
@@ -134,22 +136,22 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         mm.write(fname,2)
         fs.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,m1,mm,fs,f,fCell0,fCell1
         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False) # False is important to not read the values
         fields.removeFieldsWithoutAnyTimeStep()
         refMem=fields.getHeapMemorySize()
@@ -158,7 +160,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -177,7 +183,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
-        for i in xrange(1,5):
+        for i in range(1, 5):
             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -194,7 +200,8 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,100,101,102,103,104,105,106,107,108])))
         self.assertTrue(not a9)
-        for i in xrange(5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(5):
             fsst=MEDFileField1TSStructItem.BuildItemFrom(fields[0][i],mst)
             fields[0][i].loadArraysIfNecessary()
             tmpMem=fields.getHeapMemorySize()
@@ -207,6 +214,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test2(self):
         """
         One time serie of one field with cell and node discretization in the same field with no profiles.
@@ -217,13 +225,13 @@ class MEDLoaderTest4(unittest.TestCase):
         tri=MEDCouplingUMesh("tri",2)
         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
-        tris=[tri.deepCpy() for i in xrange(4)]
+        tris = [tri.deepCopy() for i in range(4)]
         for i,elt in enumerate(tris): elt.translate([i,0])
         tris=MEDCouplingUMesh.MergeUMeshes(tris)
         quad=MEDCouplingUMesh("quad",2)
         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
-        quads=[quad.deepCpy() for i in xrange(5)]
+        quads = [quad.deepCopy() for i in range(5)]
         for i,elt in enumerate(quads): elt.translate([5+i,0])
         quads=MEDCouplingUMesh.MergeUMeshes(quads)
         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
@@ -240,20 +248,20 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         #
         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs.pushBackTimeStep(f)
         ##### Time step 1
@@ -263,21 +271,21 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(1100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(1200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         #
         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs.pushBackTimeStep(f)
         ##### Time step 2
@@ -287,21 +295,21 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(2300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         #
         fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i),i,0)
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         ##### Time step 3
@@ -312,21 +320,21 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(3100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(3200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         #
         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         #
         fs.pushBackTimeStep(f)
@@ -338,30 +346,30 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         #
         fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(4300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         #
         fs.pushBackTimeStep(f)
         mm.write(fname,2)
         fs.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,m1,mm,fs,f,fCell0,fCell1
         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -369,7 +377,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -390,7 +402,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         assert isinstance(mml2,MEDUMeshMultiLev)
-        for i in xrange(1,5):
+        for i in range(1, 5):
             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -401,8 +413,9 @@ class MEDLoaderTest4(unittest.TestCase):
         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])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         # for cells
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
             f.loadArraysIfNecessary()
@@ -411,7 +424,7 @@ class MEDLoaderTest4(unittest.TestCase):
             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
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
             f.loadArraysIfNecessary()
@@ -422,6 +435,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test3(self):
         """ 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.
         So two time step series on the same field. No profile here neither on cells nor on nodes.
@@ -431,13 +445,13 @@ class MEDLoaderTest4(unittest.TestCase):
         tri=MEDCouplingUMesh("tri",2)
         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
-        tris=[tri.deepCpy() for i in xrange(4)]
+        tris = [tri.deepCopy() for i in range(4)]
         for i,elt in enumerate(tris): elt.translate([i,0])
         tris=MEDCouplingUMesh.MergeUMeshes(tris)
         quad=MEDCouplingUMesh("quad",2)
         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
-        quads=[quad.deepCpy() for i in xrange(5)]
+        quads = [quad.deepCopy() for i in range(5)]
         for i,elt in enumerate(quads): elt.translate([5+i,0])
         quads=MEDCouplingUMesh.MergeUMeshes(quads)
         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
@@ -454,13 +468,13 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         ##### Time step 1 on nodes
@@ -470,7 +484,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(1300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs.pushBackTimeStep(f)
         ##### Time step 2 on cells
@@ -480,14 +494,14 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(2100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(2200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         fs.pushBackTimeStep(f)
         ##### Time step 3 on nodes
@@ -497,7 +511,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName) ; fNode.setMesh(m1)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(3300) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs.pushBackTimeStep(f)
         ##### Time step 4
@@ -507,23 +521,23 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell0.setName(fieldName) ; fCell0.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfCells()) ; arr.iota(4100) ; arr.rearrange(2)
         fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell0.checkCoherency()
+        fCell0.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell0)
         #
         fCell1=MEDCouplingFieldDouble(ON_CELLS) ; fCell1.setTime(float(i),i,0)
         fCell1.setName(fieldName) ; fCell1.setMesh(m1)
         arr=DataArrayDouble(2*m1.getNumberOfCells()) ; arr.iota(4200) ; arr.rearrange(2)
         fCell1.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]","Com2 [s^2]"])
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         f.setFieldNoProfileSBT(fCell1)
         #
         fs.pushBackTimeStep(f)
         mm.write(fname,2)
         fs.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,m1,mm,fs,f,fCell0,fCell1
         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -531,7 +545,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -550,7 +568,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
-        for i in xrange(1,3):
+        for i in range(1, 3):
             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -561,8 +579,9 @@ class MEDLoaderTest4(unittest.TestCase):
         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])))
         assert a4 is None
         assert a5 is None
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         # for cells
-        for i in xrange(3):
+        for i in range(3):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
             f.loadArraysIfNecessary()
@@ -580,7 +599,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
-        for i in xrange(1,2):
+        for i in range(1, 2):
             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -591,7 +610,8 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([3,0,1,2,3,3,4,5,3,6,7,8,3,9,10,11,4,12,13,14,15,4,16,17,18,19,4,20,21,22,23,4,24,25,26,27,4,28,29,30,31,2,0,1,2,1,2,2,2,0,2,3,4,2,4,5,2,5,3,2,6,7,2,7,8,2,8,6,2,9,10,2,10,11,2,11,9,2,12,13,2,13,14,2,14,15,2,15,12,2,16,17,2,17,18,2,18,19,2,19,16,2,20,21,2,21,22,2,22,23,2,23,20,2,24,25,2,25,26,2,26,27,2,27,24,2,28,29,2,29,30,2,30,31,2,31,28])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
-        for i in xrange(2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)# Second 0 is for cells
             f.loadArraysIfNecessary()
@@ -603,6 +623,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test4(self):
         """ This test defines 3 fields on nodes on the same mesh. All of these fields have no profile.
         """
@@ -611,13 +632,13 @@ class MEDLoaderTest4(unittest.TestCase):
         tri=MEDCouplingUMesh("tri",2)
         tri.allocateCells() ; tri.insertNextCell(NORM_TRI3,[0,1,2])
         tri.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,0.)]))
-        tris=[tri.deepCpy() for i in xrange(4)]
+        tris = [tri.deepCopy() for i in range(4)]
         for i,elt in enumerate(tris): elt.translate([i,0])
         tris=MEDCouplingUMesh.MergeUMeshes(tris)
         quad=MEDCouplingUMesh("quad",2)
         quad.allocateCells() ; quad.insertNextCell(NORM_QUAD4,[0,1,2,3])
         quad.setCoords(DataArrayDouble([(0.,0.),(0.,1.),(1.,1.),(1.,0.)]))
-        quads=[quad.deepCpy() for i in xrange(5)]
+        quads = [quad.deepCopy() for i in range(5)]
         for i,elt in enumerate(quads): elt.translate([5+i,0])
         quads=MEDCouplingUMesh.MergeUMeshes(quads)
         m=MEDCouplingUMesh.MergeUMeshes(tris,quads)
@@ -635,7 +656,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName1) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs1.pushBackTimeStep(f)
         #
@@ -644,7 +665,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName2) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs2.pushBackTimeStep(f)
         #
@@ -653,7 +674,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName3) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs3.pushBackTimeStep(f)
         ##### Time step 1
@@ -663,7 +684,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName1) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs1.pushBackTimeStep(f)
         #
@@ -672,7 +693,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName2) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs2.pushBackTimeStep(f)
         #
@@ -681,7 +702,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName3) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs3.pushBackTimeStep(f)
         ##### Time step 2
@@ -691,7 +712,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName1) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs1.pushBackTimeStep(f)
         #
@@ -700,7 +721,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName2) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs2.pushBackTimeStep(f)
         #
@@ -709,7 +730,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName3) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs3.pushBackTimeStep(f)
         ##### Time step 3
@@ -719,7 +740,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName1) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs1.pushBackTimeStep(f)
         #
@@ -728,7 +749,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName2) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs2.pushBackTimeStep(f)
         #
@@ -737,7 +758,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName3) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs3.pushBackTimeStep(f)
         ##### Time step 4
@@ -747,7 +768,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName1) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(0+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs1.pushBackTimeStep(f)
         #
@@ -756,7 +777,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName2) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(100+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs2.pushBackTimeStep(f)
         #
@@ -765,16 +786,16 @@ class MEDLoaderTest4(unittest.TestCase):
         fNode.setName(fieldName3) ; fNode.setMesh(m)
         arr=DataArrayDouble(2*m.getNumberOfNodes()) ; arr.iota(200+1000*i) ; arr.rearrange(2)
         fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"])
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f.setFieldNoProfileSBT(fNode)
         fs3.pushBackTimeStep(f)
         #
         mm.write(fname,2)
         fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs1,fs2,fs3,f,fNode
         ########## GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -782,7 +803,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -803,7 +828,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
-        for i in xrange(1,5):
+        for i in range(1, 5):
             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -814,8 +839,9 @@ class MEDLoaderTest4(unittest.TestCase):
         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])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         # test all the time steps of the 1/1 time step serie, on field 1
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -826,7 +852,7 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
         # test all the time steps of the 1/1 time step serie, on field 2
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][1][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -837,7 +863,7 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
         # test all the time steps of the 1/1 time step serie, on field 3
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][2][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -848,7 +874,8 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
         pass
-    
+
+    @WriteInTmpDir
     def test5(self):
         """ 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
         mesh lies on a different mesh.
@@ -872,7 +899,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fieldName3="zeField3" ; pfl3=DataArrayInt([0,1,2,3,4,5,9,10]) ; pfl3.setName("pfl3") # on cells but different support
         fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
         #
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName1)
@@ -899,10 +926,10 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         mm.write(fname,2)
         fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs1,fs2,fs3,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -910,7 +937,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -930,7 +961,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
-        for i in xrange(1,5):
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -947,10 +978,11 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105])))
         self.assertTrue(not a9)
-        for i in xrange(5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(5):
             nbOfT=[6,8]
             fieldNames=[fieldName1,fieldName2]
-            for j in xrange(2):
+            for j in range(2):
                 m={"i":j}
                 f=allFMTSLeavesPerCommonSupport[0][0][j][i]
                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
@@ -967,7 +999,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
-        for i in xrange(1,5):
+        for i in range(1, 5):
             self.assertTrue(fcscp.isDataSetSupportEqualToThePreviousOne(i,fields))
             pass
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
@@ -984,7 +1016,8 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,109,110])))
         self.assertTrue(not a9)
-        for i in xrange(5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[1][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -995,7 +1028,8 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
         pass
-    
+
+    @WriteInTmpDir
     def test6(self):
         """ This test plays with cartesian mesh and profiles. When a sub cartesian mesh can also be considered as a cartesian mesh it is done.
         """
@@ -1016,12 +1050,12 @@ class MEDLoaderTest4(unittest.TestCase):
         fieldName4="zeField4" ;# on nodes
         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
         #
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs0.pushBackTimeStep(f)
             #
@@ -1056,7 +1090,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName4) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs4.pushBackTimeStep(f)
             pass
@@ -1064,7 +1098,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
         del m,mm,fs1,fs2,fs3,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1072,7 +1106,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1097,7 +1135,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a.isEqual(coordsX,1e-12))
         self.assertTrue(b.isEqual(coordsY,1e-12))
         self.assertTrue(isinstance(mml2,MEDCMeshMultiLev))
-        for i in xrange(1,5):
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
         a6,a7=mml2.retrieveFamilyIdsOnCells()
@@ -1109,7 +1147,8 @@ class MEDLoaderTest4(unittest.TestCase):
         a10,a11=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(a10.isEqual(DataArrayInt([200,201,202,203,204,205,206,207,208,209,210,211,212,213,214])))
         self.assertTrue(a11) # True because no copy
-        for i in xrange(5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1128,13 +1167,13 @@ class MEDLoaderTest4(unittest.TestCase):
             vExp=DataArrayDouble(15*2) ; vExp.iota(400+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_4 [m]','Com2_4 [s^2]'])
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
-        
+
         fcscp=allFMTSLeavesPerCommonSupport[1][1]
         mml=fcscp.buildFromScratchDataSetSupport(0,fields)
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
         (a,b),c=mml2.buildVTUArrays()
-        self.assertTrue(not c)# c is False because this a sub support specialy built for buildVTUArrays
+        self.assertTrue(not c)# c is False because this a sub support specially built for buildVTUArrays
         self.assertTrue(a.isEqual(coordsX[[2,3,4]],1e-12))
         self.assertTrue(b.isEqual(coordsY,1e-12))
         a6,a7=mml2.retrieveFamilyIdsOnCells()
@@ -1146,10 +1185,11 @@ class MEDLoaderTest4(unittest.TestCase):
         a10,a11=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(a10.isEqual(DataArrayInt([202,203,204,207,208,209,212,213,214])))
         self.assertTrue(not a11) # False because copy
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[1][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1189,7 +1229,8 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
         self.assertTrue(not a9) # False because copy
-        for i in xrange(5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[2][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1201,6 +1242,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test7(self):
         """ This test plays with curvilinear mesh and profiles. When a sub curvilinear mesh can also be considered as a cartesian mesh it is done.
         This test is very similar to the test6.
@@ -1211,6 +1253,7 @@ class MEDLoaderTest4(unittest.TestCase):
         a0Exp.setInfoOnComponents(["XX [m]","YYY [km]"])
         m.setCoords(a0Exp)
         mm=MEDFileCurveLinearMesh() ; mm.setMesh(m)
+        self.assertEqual(mm.getSpaceDimension(), m.getSpaceDimension())
         fam=DataArrayInt(8) ; fam.iota(0) ; mm.setFamilyFieldArr(0,fam) ; del fam
         num=DataArrayInt(8) ; num.iota(100) ; mm.setRenumFieldArr(0,num) ; del num
         #
@@ -1221,12 +1264,12 @@ class MEDLoaderTest4(unittest.TestCase):
         fieldName4="zeField4" ;# on nodes
         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS() ; fs4=MEDFileFieldMultiTS()
         #
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*8) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs0.pushBackTimeStep(f)
             #
@@ -1261,7 +1304,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName4) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_4 [m]","Com2_4 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs4.pushBackTimeStep(f)
             pass
@@ -1269,7 +1312,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0) ; fs4.write(fname,0)
         del m,mm,fs1,fs2,fs3,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1277,7 +1320,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1308,10 +1355,11 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
         self.assertTrue(a9) # True because no copy
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1336,7 +1384,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev)) # here the 2nd support is a part of CMesh that is also a CMesh -> CMesh not a UMesh
         a,b,c=mml2.buildVTUArrays()
-        self.assertTrue(not c)#False here because a is the result of a computation not the internal strucutre
+        self.assertTrue(not c)#False here because a is the result of a computation not the internal structure
         self.assertTrue(a.isEqual(a0Exp[pfl2],1e-12))
         self.assertEqual(b,[3,3])
         a6,a7=mml2.retrieveFamilyIdsOnCells()
@@ -1345,10 +1393,11 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([102,103,106,107])))
         self.assertTrue(not a9) # False because copy
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[1][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1388,7 +1437,8 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([102,103,105,107])))
         self.assertTrue(not a9) # False because copy
-        for i in xrange(5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[2][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1400,6 +1450,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test8(self):
         """ This test plays with with gauss fields with no profiles.
         """
@@ -1420,12 +1471,12 @@ class MEDLoaderTest4(unittest.TestCase):
         fieldName2="zeField2"
         fieldName3="zeField3"
         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*38) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs0.pushBackTimeStep(f)
             #
@@ -1433,7 +1484,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName1) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*11) ; arr.iota(100+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs1.pushBackTimeStep(f)
             #
@@ -1445,7 +1496,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode.setGaussLocalizationOnCells([6,7,8],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
             fNode.setGaussLocalizationOnCells([9,10],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
             arr=DataArrayDouble(2*(4*2+2*5+3*4+2*7)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs2.pushBackTimeStep(f)
             #
@@ -1453,7 +1504,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName3) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*15) ; arr.iota(400+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs3.pushBackTimeStep(f)
             #
@@ -1461,10 +1512,10 @@ class MEDLoaderTest4(unittest.TestCase):
         #
         mm.write(fname,2)
         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs1,fs2,fs3,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1472,7 +1523,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                #for itmp in tmp:
+                #    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                #    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1499,10 +1554,11 @@ class MEDLoaderTest4(unittest.TestCase):
         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])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1542,6 +1598,7 @@ class MEDLoaderTest4(unittest.TestCase):
         #
         pass
 
+    @WriteInTmpDir
     def test9(self):
         """ This test plays with with gauss fields with profiles.
         """
@@ -1564,7 +1621,7 @@ class MEDLoaderTest4(unittest.TestCase):
         pfl1=DataArrayInt([0,1,7,9,10]) ; pfl1.setName("pfl1") # on cells
         pfl2=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl2.setName("pfl2") # on nodes
         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS() ; fs3=MEDFileFieldMultiTS()
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_GAUSS_NE) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0)
@@ -1589,7 +1646,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode.setGaussLocalizationOnCells([2,3],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
             fNode.setGaussLocalizationOnCells([4],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
             arr=DataArrayDouble(2*(2*1+5*1+4*2+7*1)) ; arr.iota(300+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldProfile(fNode,mm,0,pfl1)
             fs2.pushBackTimeStep(f)
             #
@@ -1605,10 +1662,10 @@ class MEDLoaderTest4(unittest.TestCase):
         #
         mm.write(fname,2)
         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs1,fs2,fs3,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1616,7 +1673,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                #for itmp in tmp:
+                #    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                #    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1643,10 +1704,11 @@ class MEDLoaderTest4(unittest.TestCase):
         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])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1684,7 +1746,8 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
         pass
-    
+
+    @WriteInTmpDir
     def test10(self):
         """ This test plays with fields only on nodes containing profiles.
         """
@@ -1705,7 +1768,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fieldName2="zeField2"
         pfl1=DataArrayInt([1,2,3,6,7,8,11,12,13]) ; pfl1.setName("pfl1") # on nodes
         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS() ; fs2=MEDFileFieldMultiTS()
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_NODES) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0)
@@ -1734,10 +1797,10 @@ class MEDLoaderTest4(unittest.TestCase):
         #
         mm.write(fname,2)
         fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs1,fs2,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1745,7 +1808,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1772,10 +1839,11 @@ class MEDLoaderTest4(unittest.TestCase):
         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])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1804,7 +1872,8 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
         pass
-    
+
+    @WriteInTmpDir
     def test11(self):
         """ 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 !
         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.
@@ -1818,7 +1887,7 @@ class MEDLoaderTest4(unittest.TestCase):
         #
         fieldName0="zeField0"
         fs0=MEDFileFieldMultiTS()
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0) ; fNode.setMesh(m)
@@ -1827,16 +1896,16 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
             fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
             arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs0.pushBackTimeStep(f)
             pass
         mm.write(fname,2)
         fs0.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs0,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1844,7 +1913,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                #for itmp in tmp:
+                #    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                #    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1871,10 +1944,11 @@ class MEDLoaderTest4(unittest.TestCase):
         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]]
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1887,6 +1961,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test12(self):
         """ This test is the second ultimate test for the profiles with gauss points.
         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.
@@ -1901,7 +1976,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fieldName0="zeField0"
         fieldName1="zeField1"
         fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
-        for i in xrange(5):
+        for i in range(5):
             f=MEDFileField1TS()
             fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName0) ; fNode.setMesh(m)
@@ -1910,7 +1985,7 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
             fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
             arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs0.pushBackTimeStep(f)
             #
@@ -1918,16 +1993,16 @@ class MEDLoaderTest4(unittest.TestCase):
             fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
             fNode.setName(fieldName1) ; fNode.setMesh(m)
             arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
-            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
             f.setFieldNoProfileSBT(fNode)
             fs1.pushBackTimeStep(f)
             pass
         mm.write(fname,2)
         fs0.write(fname,0) ; fs1.write(fname,0)
-        a0Exp=mm.getCoords().deepCpy()
+        a0Exp=mm.getCoords().deepCopy()
         del m,mm,fs0,fs1,f,fNode
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -1935,7 +2010,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                #for itmp in tmp:
+                #    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                #    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -1962,10 +2041,11 @@ class MEDLoaderTest4(unittest.TestCase):
         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
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
-        for i in xrange(1,5):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(5):
+        for i in range(5):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -1985,6 +2065,7 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp,1e-12))
             pass
 
+    @WriteInTmpDir
     def test13(self):
             """ Testing polyhedrons mixed with hexa8"""
             fname="ForMEDReader13.med"
@@ -2002,12 +2083,12 @@ class MEDLoaderTest4(unittest.TestCase):
             fieldName1="zeField1"
             fieldName2="zeField2" ; pfl1=DataArrayInt([2,3]) ; pfl1.setName("pfl1")
             fieldName3="zefield3" ; pfl2=DataArrayInt([2,3,4]) ; pfl2.setName("pfl2")
-            for i in xrange(5):
+            for i in range(5):
                 f=MEDFileField1TS()
                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
                 fNode.setName(fieldName0) ; fNode.setMesh(m)
                 arr=DataArrayDouble(2*5) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
                 f.setFieldNoProfileSBT(fNode)
                 fs0.pushBackTimeStep(f)
                 #
@@ -2015,7 +2096,7 @@ class MEDLoaderTest4(unittest.TestCase):
                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
                 fNode.setName(fieldName1) ; fNode.setMesh(m)
                 arr=DataArrayDouble(2*5) ; arr.iota(100+1000*i) ; arr.rearrange(2)
-                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
+                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
                 f.setFieldNoProfileSBT(fNode)
                 fs1.pushBackTimeStep(f)
                 #
@@ -2023,7 +2104,7 @@ class MEDLoaderTest4(unittest.TestCase):
                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
                 fNode.setName(fieldName2) ; fNode.setMesh(m[pfl1])
                 arr=DataArrayDouble(2*2) ; arr.iota(200+1000*i) ; arr.rearrange(2)
-                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkCoherency()
+                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_2 [m]","Com2_2 [s^2]"]) ; fNode.checkConsistencyLight()
                 f.setFieldProfile(fNode,mm,0,pfl1)
                 fs2.pushBackTimeStep(f)
                 #
@@ -2031,16 +2112,16 @@ class MEDLoaderTest4(unittest.TestCase):
                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
                 fNode.setName(fieldName3) ; fNode.setMesh(m[pfl2])
                 arr=DataArrayDouble(2*3) ; arr.iota(300+1000*i) ; arr.rearrange(2)
-                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkCoherency()
+                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_3 [m]","Com2_3 [s^2]"]) ; fNode.checkConsistencyLight()
                 f.setFieldProfile(fNode,mm,0,pfl2)
                 fs3.pushBackTimeStep(f)
                 pass
             mm.write(fname,2)
             fs0.write(fname,0) ; fs1.write(fname,0) ; fs2.write(fname,0) ; fs3.write(fname,0)
-            a0Exp=mm.getCoords().deepCpy()
+            a0Exp=mm.getCoords().deepCopy()
             del m,mm,fs0
             ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-            ms=MEDFileMeshes(fname)
+            ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
             fields=MEDFileFields(fname,False)
             fields.removeFieldsWithoutAnyTimeStep()
             fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2048,7 +2129,11 @@ class MEDLoaderTest4(unittest.TestCase):
             for fields in fields_per_mesh:
                 allFMTSLeavesToDisplay2=[]
                 for fmts in fields:
-                    allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                    tmp=fmts.splitDiscretizations()
+                    for itmp in tmp:
+                        self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                        pass
+                    allFMTSLeavesToDisplay2+=tmp
                     pass
                 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
                 pass
@@ -2077,11 +2162,12 @@ class MEDLoaderTest4(unittest.TestCase):
             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])))
             self.assertTrue(a4.isEqual(DataArrayInt([-1,-1,0,31,62])))
             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])))
-            for i in xrange(1,5):
+            self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+            for i in range(1, 5):
                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
                 pass
             pass
-            for i in xrange(5):
+            for i in range(5):
                 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
                 f.loadArraysIfNecessary()
@@ -2113,11 +2199,12 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(a3.isEqual(DataArrayInt([8,2,3,8,9,14,15,20,21,8,3,4,9,10,15,16,21,22])))
             self.assertTrue(a4.isEqual(DataArrayInt([0,31])))
             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])))
-            for i in xrange(1,5):
+            self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+            for i in range(1, 5):
                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
                 pass
             pass
-            for i in xrange(5):
+            for i in range(5):
                 f=allFMTSLeavesPerCommonSupport[1][0][0][i]
                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
                 f.loadArraysIfNecessary()
@@ -2140,11 +2227,11 @@ class MEDLoaderTest4(unittest.TestCase):
             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])))
             self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
             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])))
-            for i in xrange(1,5):
+            for i in range(1, 5):
                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
                 pass
             pass
-            for i in xrange(5):
+            for i in range(5):
                 f=allFMTSLeavesPerCommonSupport[2][0][0][i]
                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
                 f.loadArraysIfNecessary()
@@ -2156,6 +2243,7 @@ class MEDLoaderTest4(unittest.TestCase):
                 pass
             pass
 
+    @WriteInTmpDir
     def test14(self):
             """ Testing only polyhedrons"""
             fname="ForMEDReader14.med"
@@ -2170,12 +2258,12 @@ class MEDLoaderTest4(unittest.TestCase):
             fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
             fieldName0="zeField0"
             fieldName1="zeField1"
-            for i in xrange(5):
+            for i in range(5):
                 f=MEDFileField1TS()
                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
                 fNode.setName(fieldName0) ; fNode.setMesh(m)
                 arr=DataArrayDouble(2*3) ; arr.iota(0+1000*i) ; arr.rearrange(2)
-                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkCoherency()
+                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
                 f.setFieldNoProfileSBT(fNode)
                 fs0.pushBackTimeStep(f)
                 #
@@ -2183,16 +2271,16 @@ class MEDLoaderTest4(unittest.TestCase):
                 fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
                 fNode.setName(fieldName1) ; fNode.setMesh(m)
                 arr=DataArrayDouble(2*3) ; arr.iota(100+1000*i) ; arr.rearrange(2)
-                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkCoherency()
+                fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
                 f.setFieldNoProfileSBT(fNode)
                 fs1.pushBackTimeStep(f)
                 pass
             mm.write(fname,2)
             fs0.write(fname,0) ; fs1.write(fname,0)
-            a0Exp=mm.getCoords().deepCpy()
+            a0Exp=mm.getCoords().deepCopy()
             del m,mm,fs0
             ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-            ms=MEDFileMeshes(fname)
+            ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
             fields=MEDFileFields(fname,False)
             fields.removeFieldsWithoutAnyTimeStep()
             fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2200,7 +2288,11 @@ class MEDLoaderTest4(unittest.TestCase):
             for fields in fields_per_mesh:
                 allFMTSLeavesToDisplay2=[]
                 for fmts in fields:
-                    allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                    tmp=fmts.splitDiscretizations()
+                    for itmp in tmp:
+                        self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                        pass
+                    allFMTSLeavesToDisplay2+=tmp
                     pass
                 allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
                 pass
@@ -2227,7 +2319,8 @@ class MEDLoaderTest4(unittest.TestCase):
             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])))
             self.assertTrue(a4.isEqual(DataArrayInt([0,31,62])))
             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])))
-            for i in xrange(1,5):
+            self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+            for i in range(1, 5):
                 self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
                 pass
             a6,a7=mml2.retrieveFamilyIdsOnCells()
@@ -2236,7 +2329,7 @@ class MEDLoaderTest4(unittest.TestCase):
             a8,a9=mml2.retrieveNumberIdsOnCells()
             self.assertTrue(a8 is None)
             self.assertTrue(a9)
-            for i in xrange(5):
+            for i in range(5):
                 f=allFMTSLeavesPerCommonSupport[0][0][0][i]
                 fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
                 f.loadArraysIfNecessary()
@@ -2257,6 +2350,7 @@ class MEDLoaderTest4(unittest.TestCase):
                 pass
             pass
 
+    @WriteInTmpDir
     def test15(self):
         """
         "ForMEDReader15.med" file has a spaceDim 3 mesh "mesh" (it is important !)
@@ -2292,12 +2386,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell.setArray(a)
         fCell.setTime(*t)
-        fCell.checkCoherency()
+        fCell.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode.setArray(a)
         fNode.setTime(*t)
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f1ts.setFieldNoProfileSBT(fCell)
         f1ts.setFieldNoProfileSBT(fNode)
         ffs.pushBackTimeStep(f1ts)
@@ -2307,12 +2401,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell.setArray(a)
         fCell.setTime(*t)
-        fCell.checkCoherency()
+        fCell.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode.setArray(a)
         fNode.setTime(*t)
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f1ts.setFieldNoProfileSBT(fCell)
         f1ts.setFieldNoProfileSBT(fNode)
         ffs.pushBackTimeStep(f1ts)
@@ -2322,12 +2416,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell.setArray(a)
         fCell.setTime(*t)
-        fCell.checkCoherency()
+        fCell.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode.setArray(a)
         fNode.setTime(*t)
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f1ts.setFieldNoProfileSBT(fCell)
         f1ts.setFieldNoProfileSBT(fNode)
         ffs.pushBackTimeStep(f1ts)
@@ -2337,12 +2431,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell.setArray(a)
         fCell.setTime(*t)
-        fCell.checkCoherency()
+        fCell.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode.setArray(a)
         fNode.setTime(*t)
-        fNode.checkCoherency()
+        fNode.checkConsistencyLight()
         f1ts.setFieldNoProfileSBT(fCell)
         f1ts.setFieldNoProfileSBT(fNode)
         ffs.pushBackTimeStep(f1ts)
@@ -2350,7 +2444,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         ffs.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2358,7 +2452,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -2391,8 +2489,10 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([100,101,102,103,104,105,106,107])))
         self.assertTrue(a9) # no copy here
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         pass
 
+    @WriteInTmpDir
     def test16(self):
         """ Here 2 meshes "mesh1" and "mesh2" and 4 fields (no profiles here) :
         - "zeField1_0" (CELLS) and "zeField2_0" (NODES) on "mesh1"
@@ -2423,7 +2523,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm1.setFamiliesIdsOnGroup("Grp1_1",[0,1]) ; mm1.setFamiliesIdsOnGroup("Grp1_2",[2,3])
         mms.pushMesh(mm1) ; del mm1
         #
-        m1=m0.deepCpy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2")
+        m1=m0.deepCopy() ; m1.translate([2.5,0.,0.]) ; m1.setName("mesh2")
         #
         fCell2=MEDCouplingFieldDouble(ON_CELLS)
         fCell2.setName("zeField3_1")
@@ -2455,12 +2555,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell1.setArray(a)
         fCell1.setTime(*t)
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode1.setArray(a)
         fNode1.setTime(*t)
-        fNode1.checkCoherency()
+        fNode1.checkConsistencyLight()
         f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
         f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
         #
@@ -2469,12 +2569,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
         fCell2.setArray(a)
         fCell2.setTime(*t)
-        fCell2.checkCoherency()
+        fCell2.checkConsistencyLight()
         a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode2.setArray(a)
         fNode2.setTime(*t)
-        fNode2.checkCoherency()
+        fNode2.checkConsistencyLight()
         f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
         f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
         # TimeStep 1
@@ -2484,12 +2584,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell1.setArray(a)
         fCell1.setTime(*t)
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode1.setArray(a)
         fNode1.setTime(*t)
-        fNode1.checkCoherency()
+        fNode1.checkConsistencyLight()
         f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
         f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
         #
@@ -2498,12 +2598,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
         fCell2.setArray(a)
         fCell2.setTime(*t)
-        fCell2.checkCoherency()
+        fCell2.checkConsistencyLight()
         a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode2.setArray(a)
         fNode2.setTime(*t)
-        fNode2.checkCoherency()
+        fNode2.checkConsistencyLight()
         f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
         f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
         # TimeStep 2
@@ -2513,12 +2613,12 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m0.getNumberOfCells()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         fCell1.setArray(a)
         fCell1.setTime(*t)
-        fCell1.checkCoherency()
+        fCell1.checkConsistencyLight()
         a=DataArrayDouble(m0.getNumberOfNodes()) ; a.iota(off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode1.setArray(a)
         fNode1.setTime(*t)
-        fNode1.checkCoherency()
+        fNode1.checkConsistencyLight()
         f1ts1.setFieldNoProfileSBT(fCell1) ; ffs1_1.pushBackTimeStep(f1ts1)
         f1ts2.setFieldNoProfileSBT(fNode1) ; ffs1_2.pushBackTimeStep(f1ts2)
         #
@@ -2527,18 +2627,18 @@ class MEDLoaderTest4(unittest.TestCase):
         a=DataArrayDouble(m1.getNumberOfCells()) ; a.iota(1000.+off) ; a.setInfoOnComponents(["xx [m]"])
         fCell2.setArray(a)
         fCell2.setTime(*t)
-        fCell2.checkCoherency()
+        fCell2.checkConsistencyLight()
         a=DataArrayDouble(m1.getNumberOfNodes()) ; a.iota(1000+off) ; a.setInfoOnComponents(["xx [m]"])
         a=a.negate()
         fNode2.setArray(a)
         fNode2.setTime(*t)
-        fNode2.checkCoherency()
+        fNode2.checkConsistencyLight()
         f1ts1.setFieldNoProfileSBT(fCell2) ; ffs2_1.pushBackTimeStep(f1ts1)
         f1ts2.setFieldNoProfileSBT(fNode2) ; ffs2_2.pushBackTimeStep(f1ts2)
         #
         mms.write(fname,2) ; mts.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2546,7 +2646,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -2564,6 +2668,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertEqual(len(allFMTSLeavesPerCommonSupport2[0][0]),2)
         pass
 
+    @WriteInTmpDir
     def test17(self):
         """ First test on GAUSS_NE (Elno). Here no Profiles.
         2 times steps.
@@ -2578,39 +2683,39 @@ class MEDLoaderTest4(unittest.TestCase):
         m.allocateCells()
         m.insertNextCell(NORM_QUAD4,[0,3,4,1])
         m.insertNextCell(NORM_QUAD4,[1,4,5,2])
-        m.checkCoherency2()
+        m.checkConsistency()
         #
         t=(1.1,0,-1)
         f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
         f.setArray(DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]))
         f.setName(fieldName1)
-        f.checkCoherency()
-        MEDLoader.WriteField(fname,f,True)
+        f.checkConsistencyLight()
+        WriteField(fname,f,True)
         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
         f2.setArray(DataArrayDouble([7.,11.],2,1))
         f2.setName(fieldName2)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f2)
         f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
         f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
         f3.setName(fieldName3)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f3)
         #
         t=(2.1,1,-1)
         f=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f.setTime(*t) ; f.setMesh(m)
         f.setArray(DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.]))
         f.setName(fieldName1)
-        f.checkCoherency()
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f)
+        f.checkConsistencyLight()
+        WriteFieldUsingAlreadyWrittenMesh(fname,f)
         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
         f2.setArray(DataArrayDouble([11.,7.],2,1))
         f2.setName(fieldName2)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f2)
         f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
         f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
         f3.setName(fieldName3)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f3)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2618,7 +2723,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -2651,12 +2760,13 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
         self.assertTrue(a9) # no copy here
-        for i in xrange(1,2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 2):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
         vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
         vExp1=[DataArrayDouble([3.,5.,7.,6.,2.,3.,11.,8.]),DataArrayDouble([7.,6.,3.,5.,11.,8.,2.,3.])]
-        for i in xrange(2):
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -2674,7 +2784,8 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp1[i],1e-12))
             pass
         pass
-    
+
+    @WriteInTmpDir
     def test18(self):
         """ First test on GAUSS_PT. Here no Profiles. 2 times steps.
         """
@@ -2688,41 +2799,41 @@ class MEDLoaderTest4(unittest.TestCase):
         m.allocateCells()
         m.insertNextCell(NORM_QUAD4,[0,3,4,1])
         m.insertNextCell(NORM_QUAD4,[1,4,5,2])
-        m.checkCoherency2()
+        m.checkConsistency()
         #
         t=(1.1,0,-1)
         f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
         f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
         f.setArray(DataArrayDouble([3.,5.,4.,6.])) ; f.getArray().setInfoOnComponents(["Smth"])
         f.setName(fieldName1)
-        f.checkCoherency()
-        MEDLoader.WriteField(fname,f,True)
+        f.checkConsistencyLight()
+        WriteField(fname,f,True)
         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
         f2.setArray(DataArrayDouble([7.,11.],2,1))
         f2.setName(fieldName2)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f2)
         f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
         f3.setArray(DataArrayDouble([1.,2.,4.,1.,2.,4.],6,1))
         f3.setName(fieldName3)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f3)
         #
         t=(2.1,1,-1)
         f=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f.setTime(*t) ; f.setMesh(m)
         f.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.2,0.2,0.8,0.8],[0.7,0.3])
         f.setArray(DataArrayDouble([5.,3.,6.,4.])) ; f.getArray().setInfoOnComponents(["Smth"])
         f.setName(fieldName1)
-        f.checkCoherency()
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f)
+        f.checkConsistencyLight()
+        WriteFieldUsingAlreadyWrittenMesh(fname,f)
         f2=MEDCouplingFieldDouble(ON_CELLS) ; f2.setTime(*t) ; f2.setMesh(m)
         f2.setArray(DataArrayDouble([11.,7.],2,1))
         f2.setName(fieldName2)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f2)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f2)
         f3=MEDCouplingFieldDouble(ON_NODES) ; f3.setTime(*t) ; f3.setMesh(m)
         f3.setArray(DataArrayDouble([4.,2.,1.,4.,2.,1.],6,1))
         f3.setName(fieldName3)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,f3)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f3)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2730,7 +2841,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -2764,12 +2879,13 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
         self.assertTrue(a9) # no copy here
-        for i in xrange(1,2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 2):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
         vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
         vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
-        for i in xrange(2):
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -2788,14 +2904,18 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp1[i],1e-12))
             pass
         ## Now same exercise but with a different load strategy. All is load directly.
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname) # here all is read, the SauvReader (or other Reader) is emulated
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
         allFMTSLeavesToDisplay=[]
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -2828,12 +2948,13 @@ class MEDLoaderTest4(unittest.TestCase):
         a8,a9=mml2.retrieveNumberIdsOnCells()
         self.assertTrue(a8.isEqual(DataArrayInt([0,1])))
         self.assertTrue(a9) # no copy here
-        for i in xrange(1,2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 2):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
         vExp0=[DataArrayDouble([7.,11.]),DataArrayDouble([11.,7.])]
         vExp1=[DataArrayDouble([3.,5.,4.,6.]),DataArrayDouble([5.,3.,6.,4.])]
-        for i in xrange(2):
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst) # no load needed here
             v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
@@ -2850,7 +2971,8 @@ class MEDLoaderTest4(unittest.TestCase):
             self.assertTrue(v.isEqual(vExp1[i],1e-12))
             pass
         pass
-    
+
+    @WriteInTmpDir
     def test19(self):
         """
         This test is a simple non profile CELL field but lying on cells of dimension -1 (not 0 as "usual").
@@ -2862,7 +2984,7 @@ class MEDLoaderTest4(unittest.TestCase):
         m0=m.buildUnstructured() ; del m
         m1=m0.computeSkin()
         #
-        mm=MEDFileUMesh()                                
+        mm=MEDFileUMesh()
         mm.setMeshAtLevel(0,m0)
         mm.setMeshAtLevel(-1,m1)
         ff=MEDFileFieldMultiTS()
@@ -2872,7 +2994,7 @@ class MEDLoaderTest4(unittest.TestCase):
         f.setName(fieldName)
         arr=DataArrayDouble(24) ; arr.iota() ; arr.setInfoOnComponents(["AStr"])
         f.setArray(arr)
-        f.checkCoherency()
+        f.checkConsistencyLight()
         f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
         ff.pushBackTimeStep(f1ts)
         # time 1
@@ -2881,14 +3003,14 @@ class MEDLoaderTest4(unittest.TestCase):
         f.setName(fieldName)
         arr=DataArrayDouble(24) ; arr.iota() ; arr.reverse() ; arr.setInfoOnComponents(["AStr"])
         f.setArray(arr)
-        f.checkCoherency()
+        f.checkConsistencyLight()
         f1ts=MEDFileField1TS() ; f1ts.setFieldNoProfileSBT(f)
         ff.pushBackTimeStep(f1ts)
         #
         mm.write(fname,2)
         ff.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -2896,7 +3018,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -2935,10 +3061,11 @@ class MEDLoaderTest4(unittest.TestCase):
         a12,a13=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(not a12)
         self.assertTrue(a13) # no copy here
-        for i in xrange(1,2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 2):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(2):
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -2952,6 +3079,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test20(self):
         """ This test works with groups/families on cells AND on nodes. Here 4 fields each on same time steps (2).
         1 field on CELLS without profile, 1 field on CELLS with profile, 1 field on NODES without profile, 1 field on NODES with profile.
@@ -2986,16 +3114,16 @@ class MEDLoaderTest4(unittest.TestCase):
         f0.setName(fieldName0) ; f0.setTime(*t)
         da=m.getCoords().magnitude() ; da.setInfoOnComponents(["zeInfo"])
         f0.setArray(da)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldNoProfileSBT(f0)
         fmts0.pushBackTimeStep(f1ts)
         #
         f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
         f1.setName(fieldName1) ; f1.setTime(*t)
-        da=m.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["zeInfoCell"])
+        da=m.computeCellCenterOfMass().magnitude() ; da.setInfoOnComponents(["zeInfoCell"])
         f1.setArray(da)
-        f1.checkCoherency()
+        f1.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldNoProfileSBT(f1)
         fmts1.pushBackTimeStep(f1ts)
@@ -3004,16 +3132,16 @@ class MEDLoaderTest4(unittest.TestCase):
         f2.setName(fieldName2) ; f2.setTime(*t)
         da=m.getCoords().magnitude()[pfl2] ; da.setInfoOnComponents(["zzzz"])
         f2.setArray(da)
-        f2.checkCoherency()
+        f2.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldProfile(f2,mm,0,pfl2)
         fmts2.pushBackTimeStep(f1ts)
         #
         f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
         f3.setName(fieldName3) ; f3.setTime(*t)
-        da=mTmp.getBarycenterAndOwner().magnitude() ; da.setInfoOnComponents(["abcdefg"])
+        da=mTmp.computeCellCenterOfMass().magnitude() ; da.setInfoOnComponents(["abcdefg"])
         f3.setArray(da)
-        f3.checkCoherency()
+        f3.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldProfile(f3,mm,0,pfl3)
         fmts3.pushBackTimeStep(f1ts)
@@ -3023,16 +3151,16 @@ class MEDLoaderTest4(unittest.TestCase):
         f0.setName(fieldName0) ; f0.setTime(*t)
         da=m.getCoords().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
         f0.setArray(da)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldNoProfileSBT(f0)
         fmts0.pushBackTimeStep(f1ts)
         #
         f1=MEDCouplingFieldDouble(ON_CELLS) ; f1.setMesh(m)
         f1.setName(fieldName1) ; f1.setTime(*t)
-        da=m.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"])
+        da=m.computeCellCenterOfMass().magnitude() ; da.reverse() ; da.setInfoOnComponents(["zeInfoCell"])
         f1.setArray(da)
-        f1.checkCoherency()
+        f1.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldNoProfileSBT(f1)
         fmts1.pushBackTimeStep(f1ts)
@@ -3041,16 +3169,16 @@ class MEDLoaderTest4(unittest.TestCase):
         f2.setName(fieldName2) ; f2.setTime(*t)
         da=m.getCoords().magnitude()[pfl2] ; da.reverse() ; da.setInfoOnComponents(["zzzz"])
         f2.setArray(da)
-        f2.checkCoherency()
+        f2.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldProfile(f2,mm,0,pfl2)
         fmts2.pushBackTimeStep(f1ts)
         #
         f3=MEDCouplingFieldDouble(ON_CELLS) ; mTmp=m[pfl3] ; mTmp.setName(m.getName()) ; f3.setMesh(mTmp)
         f3.setName(fieldName3) ; f3.setTime(*t)
-        da=mTmp.getBarycenterAndOwner().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"])
+        da=mTmp.computeCellCenterOfMass().magnitude() ; da.reverse() ; da.setInfoOnComponents(["abcdefg"])
         f3.setArray(da)
-        f3.checkCoherency()
+        f3.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldProfile(f3,mm,0,pfl3)
         fmts3.pushBackTimeStep(f1ts)
@@ -3068,7 +3196,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fs.appendGlobs(fmts3,1e-12)
         fs.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -3076,7 +3204,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3116,10 +3248,11 @@ class MEDLoaderTest4(unittest.TestCase):
         a12,a13=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(a12.isEqual(DataArrayInt([0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240])))
         self.assertTrue(a13) # no copy here
-        for i in xrange(1,2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 2):
             self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
             pass
-        for i in xrange(2):
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport1[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -3168,7 +3301,8 @@ class MEDLoaderTest4(unittest.TestCase):
         a12,a13=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(a12.isEqual(DataArrayInt([50,60,70,100,110,120,150,160,170,200,210,220])))
         self.assertTrue(not a13) # copy here
-        for i in xrange(2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport1[1][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -3193,6 +3327,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test21(self):
         """ Here the created MED file contains only a mesh. The aim here is to test capability of MEDReader to support no fields.
         This test checks nothing but write a MED file to be used by MEDReader tests.
@@ -3225,6 +3360,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         pass
 
+    @WriteInTmpDir
     def test22(self):
         """ Use case where a field on nodes (ANodeField) on a mesh defined both in meshdim 2 and meshdim 1.
         The only possible geometrical support that suits the field is those with meshdim equal to 1 (-1 in relative).
@@ -3247,7 +3383,7 @@ class MEDLoaderTest4(unittest.TestCase):
         f0.setName(fieldName0) ; f0.setTime(*t)
         da=DataArrayDouble(9) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
         f0.setArray(da)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldNoProfileSBT(f0)
         fmts0.pushBackTimeStep(f1ts)
@@ -3257,7 +3393,7 @@ class MEDLoaderTest4(unittest.TestCase):
         f0.setName(fieldName0) ; f0.setTime(*t)
         da=DataArrayDouble(9) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
         f0.setArray(da)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldNoProfileSBT(f0)
         fmts0.pushBackTimeStep(f1ts)
@@ -3265,7 +3401,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         fs.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -3273,7 +3409,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3313,6 +3453,7 @@ class MEDLoaderTest4(unittest.TestCase):
         a12,a13=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(not a12)
         self.assertTrue(a13) # no copy here
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         #
         f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
         fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
@@ -3331,8 +3472,9 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
         vExp=DataArrayDouble(9) ; vExp.iota() ; vExp.setInfoOnComponents(["zeInfo"]) ; vExp.reverse()
         self.assertTrue(v.isEqual(vExp,1e-12))
-        pass 
-    
+        pass
+
+    @WriteInTmpDir
     def test23(self):
         """ Non regression test 2219 of modes. Idem than test22 except that here the node field is on profile.
         """
@@ -3356,7 +3498,7 @@ class MEDLoaderTest4(unittest.TestCase):
         f0.setName(fieldName0) ; f0.setTime(*t)
         da=DataArrayDouble(4) ; da.iota() ; da.setInfoOnComponents(["zeInfo"])
         f0.setArray(da)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldProfile(f0,mm,-1,pfl)
         fmts0.pushBackTimeStep(f1ts)
@@ -3366,14 +3508,14 @@ class MEDLoaderTest4(unittest.TestCase):
         f0.setName(fieldName0) ; f0.setTime(*t)
         da=DataArrayDouble(4) ; da.iota() ; da.reverse() ; da.setInfoOnComponents(["zeInfo"])
         f0.setArray(da)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts=MEDFileField1TS()
         f1ts.setFieldProfile(f0,mm,-1,pfl)
         fmts0.pushBackTimeStep(f1ts)
         mm.write(fname,2)
         fmts0.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -3381,7 +3523,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3420,6 +3566,7 @@ class MEDLoaderTest4(unittest.TestCase):
         a12,a13=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(not a12)
         self.assertTrue(a13) # no copy here
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         #
         f=allFMTSLeavesPerCommonSupport1[0][0][0][0]
         fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
@@ -3438,6 +3585,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(v.isEqual(vExp,1e-12))
         pass
 
+    @WriteInTmpDir
     def test24(self):
         """ Non regression test for cartesian mesh whose the 3rd direction has only one node. It a false 3D mesh.
         """
@@ -3474,7 +3622,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         fmts0.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -3482,7 +3630,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3506,7 +3658,8 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a.isEqual(arr0,1e-12))
         self.assertTrue(b.isEqual(arr1,1e-12))
         self.assertTrue(c.isEqual(arr2,1e-12))
-        for i in xrange(2):
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(2):
             f=allFMTSLeavesPerCommonSupport[0][0][0][i]
             fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
             f.loadArraysIfNecessary()
@@ -3521,6 +3674,7 @@ class MEDLoaderTest4(unittest.TestCase):
             pass
         pass
 
+    @WriteInTmpDir
     def test25(self):
         """ A tricky test that reproduces an invalid behaviour
         Here a same field is defined both on CELLS and GAUSS_PT, with a profile for each.
@@ -3571,14 +3725,14 @@ class MEDLoaderTest4(unittest.TestCase):
         pfl1=DataArrayInt([1,3,5]) ; pfl1.setName(pflName1)
         tmp=m0[pfl1] ; f2.setMesh(tmp)
         f2.setGaussLocalizationOnType(NORM_QUAD4,[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.,0.],[0.1,0.1,0.1,0.1,0.6])
-        f2.checkCoherency()
+        f2.checkConsistencyLight()
         f1ts.setFieldProfile(f2,m,0,pfl1)
         fmts.pushBackTimeStep(f1ts)
         #
         m.write(fname,2)
         fmts.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False) # false is absolutely necessary for the test
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -3586,7 +3740,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3621,6 +3779,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         a6,a7=mml2.retrieveFamilyIdsOnCells()
         self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
         self.assertTrue(not a7) # copy here because profile on cells
@@ -3633,6 +3792,7 @@ class MEDLoaderTest4(unittest.TestCase):
         a12,a13=mml2.retrieveNumberIdsOnNodes()
         self.assertTrue(a12.isEqual(DataArrayInt([203,204,205,206,207,208,209,210,211,212,213,214,215,216,217])))
         self.assertTrue(a13) # no copy here
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
         fff0.loadArraysIfNecessary()
@@ -3658,6 +3818,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([4,1,4,5,2,4,4,7,8,5,4,7,10,11,8])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         a6,a7=mml2.retrieveFamilyIdsOnCells()
         self.assertTrue(a6.isEqual(DataArrayInt([-2,-4,-6])))
         self.assertTrue(not a7) # copy here because profile on cells
@@ -3693,6 +3854,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([2,10,12,2,12,13])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         a6,a7=mml2.retrieveFamilyIdsOnCells()
         self.assertTrue(a6.isEqual(DataArrayInt([-7,-8])))
         self.assertTrue(not a7) # copy here because profile on cells
@@ -3717,6 +3879,7 @@ class MEDLoaderTest4(unittest.TestCase):
         del fff0
         pass
 
+    @WriteInTmpDir
     def test26(self):
         """ Test focused on field on nodes (here f0Node and f1Node) lying on a profile of nodes that do not match perfectly a sub set of cells of its underlying mesh. See bug EDF 2405 and 2177.
         For this type of fields the support will contain only vertices.
@@ -3788,7 +3951,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         fs.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -3796,7 +3959,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3825,6 +3992,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,5])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         a6,a7=mml2.retrieveFamilyIdsOnCells()
         self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,13])))
         self.assertTrue(not a7) # copy here because profile on cells
@@ -3842,6 +4010,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
         fff0.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(fff0.getName(),"f0Node")
         self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
         vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
@@ -3851,12 +4020,14 @@ class MEDLoaderTest4(unittest.TestCase):
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
         fff1.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(fff1.getName(),"f1Node")
         self.assertEqual(v.getHiddenCppPointer(),fff1.getUndergroundDataArray().getHiddenCppPointer())
         vExp=DataArrayDouble([5.,4.,3.,2.,1.,0.])
         self.assertTrue(v.isEqual(vExp,1e-12)) # <- THE test is here !!!
         pass
 
+    @WriteInTmpDir
     def test27(self):
         """ This test defines 2 fields f0 and f1 on nodes lying on an unstructured mesh with no cells.
         f0 is a field on all nodes. f1 is a partial field on nodes.
@@ -3877,7 +4048,7 @@ class MEDLoaderTest4(unittest.TestCase):
         f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m0) ; f0.setName("f0NoPfl")
         arr0=DataArrayDouble([0.,1.,2.,3.,1.,1.5,2.2,3.1,2.,2.2,3.,3.1,3.,3.1,3.5,4.])
         f0.setArray(arr0)
-        f0.checkCoherency()
+        f0.checkConsistencyLight()
         f1ts0.setFieldNoProfileSBT(f0)
         self.assertEqual(f1ts0.getMeshName(),"mesh")
         #
@@ -3899,7 +4070,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         fs.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         self.assertEqual(fields[0].getMeshName(),"mesh")
@@ -3911,7 +4082,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -3939,6 +4114,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         #
         fff0=allFMTSLeavesPerCommonSupport1[0][0][0][0]
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
@@ -3971,8 +4147,9 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(v.isEqual(vExp,1e-12))
         pass
 
+    @WriteInTmpDir
     def test28(self):
-        """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh whith cells including NORM_POINT1.
+        """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh with cells including NORM_POINT1.
         Both f0 and f1 are on NODES and f2 and f3 are on cells. f1 and f2 share the same support.
         f0 is on a nodal support that is not matchable with any cells (including NORM_POINT1)
         This test is a more aggressive version of test26.
@@ -4041,7 +4218,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mm.write(fname,2)
         fs.write(fname,0)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -4049,7 +4226,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -4078,6 +4259,7 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([3,4,2,1,4,0,3,4,1,1,3,1,5])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         a6,a7=mml2.retrieveFamilyIdsOnCells()
         self.assertTrue(a6.isEqual(DataArrayInt([-3,-7,-12,13])))
         self.assertTrue(not a7) # copy here because profile on cells
@@ -4095,6 +4277,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff0,mst)
         fff0.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,fff0.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(fff0.getName(),"f0Node")
         self.assertEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
         vExp=DataArrayDouble([0.,1.,2.,3.,4.,5.])
@@ -4112,10 +4295,12 @@ class MEDLoaderTest4(unittest.TestCase):
         self.assertTrue(a3.isEqual(DataArrayInt([3,2,6,3,3,6,7,3,4,0,4,5,1,4,1,5,6,2,4,6,8,9,7,4,8,10,11,9])))
         self.assertTrue(a4 is None)
         self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         fff1=allFMTSLeavesPerCommonSupport1[0][0][0][0]
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff1,mst)
         fff1.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,fff1.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(fff1.getName(),"f2Cell")
         self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
         vExp=DataArrayDouble([2,3,0,1,4,5])
@@ -4145,12 +4330,14 @@ class MEDLoaderTest4(unittest.TestCase):
         fsst=MEDFileField1TSStructItem.BuildItemFrom(fff3,mst)
         fff3.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,fff3.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(fff3.getName(),"f3Cell")
         self.assertNotEqual(v.getHiddenCppPointer(),fff0.getUndergroundDataArray().getHiddenCppPointer())
         vExp=DataArrayDouble([-1.1,-3.1,5,4,3,2,1,0])
         self.assertTrue(v.isEqual(vExp,1e-12))
         pass
 
+    @WriteInTmpDir
     def test29(self):
         """ This test focused on HEXA27 cell for which the MED numbering is not equal to the VTK numbering. So here the HEXA27 cell is those in MED file documentation (reference element).
         """
@@ -4164,7 +4351,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fCell=MEDCouplingFieldDouble(ON_CELLS) ; fCell.setName("fCell")
         arrCell=DataArrayDouble([7.]) ; arrCell.setInfoOnComponent(0,"smth") ; fCell.setArray(arrCell)
         fCell.setMesh(m)
-        MEDLoader.WriteField(fname,fCell,True)
+        WriteField(fname,fCell,True)
         refCoo=[-1.,-1.,-1.,-1.,1.,-1.,1.,1.,-1.,1.,-1.,-1.,-1.,-1.,1.,-1.,1.,1.,1.,1.,1.,1.,-1.,1.,-1.,0.,-1.,0.,1.,-1.,1.,0.,-1.,0.,-1.,-1.,-1.,0.,1.,0.,1.,1.,1.,0.,1.,0.,-1.,1.,-1.,-1.,0.,-1.,1.,0.,1.,1.,0.,1.,-1.,0.,0.,0.,-1.,-1.,0.,0.,0.,1.,0.,1.,0.,0.,0.,-1.,0.,0.,0.,1.,0.,0.,0.]
         weights=[0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.7023319615912209,0.43895747599451346,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.43895747599451346,0.27434842249657115,0.1714677640603571,0.27434842249657115,0.1714677640603571]
         gCoords=[-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,-0.774596669241483,0.0,-0.774596669241483,0.0,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,-0.774596669241483,0.0,0.0,0.0,0.0,0.0,0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,0.0,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,-0.774596669241483,0.774596669241483,-0.774596669241483,0.0,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,-0.774596669241483,0.774596669241483,0.0,0.0,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483,-0.774596669241483,0.774596669241483,0.774596669241483,0.0,0.774596669241483,0.774596669241483,0.774596669241483]
@@ -4173,9 +4360,9 @@ class MEDLoaderTest4(unittest.TestCase):
         fGauss.setGaussLocalizationOnType(NORM_HEXA27,refCoo,gCoords,weights)
         arrGauss=DataArrayDouble(fGauss.getNumberOfTuplesExpected()) ; arrGauss.setInfoOnComponent(0,"gaussc") ; arrGauss.iota()
         fGauss.setArray(arrGauss)
-        MEDLoader.WriteFieldUsingAlreadyWrittenMesh(fname,fGauss)
+        WriteFieldUsingAlreadyWrittenMesh(fname,fGauss)
         ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
-        ms=MEDFileMeshes(fname)
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
         fields=MEDFileFields(fname,False)
         fields.removeFieldsWithoutAnyTimeStep()
         fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
@@ -4183,7 +4370,11 @@ class MEDLoaderTest4(unittest.TestCase):
         for fields in fields_per_mesh:
             allFMTSLeavesToDisplay2=[]
             for fmts in fields:
-                allFMTSLeavesToDisplay2+=fmts.splitDiscretizations()
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
                 pass
             allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
             pass
@@ -4203,6 +4394,7 @@ class MEDLoaderTest4(unittest.TestCase):
         mml2=mml.prepare()
         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertTrue(a0.isEqual(coo,1e-12))
         self.assertTrue(a1.isEqual(DataArrayByte([29])))
         self.assertTrue(a2.isEqual(DataArrayInt([0])))
@@ -4214,6 +4406,7 @@ class MEDLoaderTest4(unittest.TestCase):
         fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
         ffCell.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
         self.assertEqual(ffCell.getName(),"fCell")
         self.assertTrue(v.isEqual(arrCell,1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble([7.]),1e-12)) ; self.assertEqual(v.getInfoOnComponents(),["smth"])
@@ -4223,12 +4416,1218 @@ class MEDLoaderTest4(unittest.TestCase):
         fsst=MEDFileField1TSStructItem.BuildItemFrom(ffGauss,mst)
         ffGauss.loadArraysIfNecessary()
         v=mml2.buildDataArray(fsst,fields,ffGauss.getUndergroundDataArray())
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
         self.assertEqual(v.getHiddenCppPointer(),ffGauss.getUndergroundDataArray().getHiddenCppPointer())
         self.assertEqual(ffGauss.getName(),"fGauss")
-        self.assertTrue(v.isEqual(arrGauss,1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble(range(27)),1e-12)) ; self.assertEqual(v.getInfoOnComponents(),["gaussc"])
+        self.assertTrue(v.isEqual(arrGauss, 1e-12)) ; self.assertTrue(v.isEqualWithoutConsideringStr(DataArrayDouble(list(range(27))), 1e-12)) ; self.assertEqual(v.getInfoOnComponents(), ["gaussc"])
         ffGauss=allFMTSLeavesPerCommonSupport1[0][0][1][0]
         pass
 
+    @WriteInTmpDir
+    def test30(self):
+        """ This test is focused on cartesian meshes. Here the cartesian mesh "CartMesh" has a field on HEXA8 (FieldOnCells) and a field on QUAD4 (FieldOnFaces).
+        So the first one (FieldOnCells) lies on a cartesian mesh whereas the second one lies on unstructured one.
+        """
+        fname="ForMEDReader30.med"
+        c=MEDCouplingCMesh()
+        arrX=DataArrayDouble(3) ; arrX.iota()
+        arrY=DataArrayDouble(4) ; arrY.iota()
+        arrZ=DataArrayDouble(5) ; arrZ.iota()
+        c.setCoords(arrX,arrY,arrZ)
+        c.setName("CartMesh")
+        cc=MEDFileCMesh()
+        cc.setMesh(c)
+        tmpFacesMesh=c.build1SGTSubLevelMesh()
+        famIdFaces=DataArrayInt(98) ; famIdFaces[:36]=-1 ; famIdFaces[36:68]=-2 ; famIdFaces[68:]=-3
+        famIdCells=DataArrayInt(24) ; famIdCells[:]=0
+        #cc.setFamilyFieldArr(0,famIdCells)
+        #cc.setFamilyFieldArr(-1,famIdFaces)
+        cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3)
+        cc.setFamiliesOnGroup("FacesX1",["FacesX"])
+        cc.setFamiliesOnGroup("FacesY1",["FacesY"])
+        cc.setFamiliesOnGroup("FacesZ1",["FacesZ"])
+        #
+        fmts0=MEDFileFieldMultiTS()
+        fmts1=MEDFileFieldMultiTS()
+        for i in range(30):
+            f1ts=MEDFileField1TS()
+            fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnFaces")
+            arr=DataArrayDouble(98) ; arr.iota() ; arr[i]=100.
+            fFaces.setArray(arr)
+            fFaces.setTime(float(i)+0.1,i,-1)
+            fFaces.setMesh(tmpFacesMesh)
+            f1ts.setFieldNoProfileSBT(fFaces)
+            fmts0.pushBackTimeStep(f1ts)
+            #
+            f1ts=MEDFileField1TS()
+            fCells=MEDCouplingFieldDouble(ON_CELLS) ; fCells.setName("FieldOnCells")
+            arr=DataArrayDouble(24) ; arr.iota() ; arr[i%24]=30.
+            fCells.setArray(arr)
+            fCells.setTime(float(i)+0.1,i,-1)
+            fCells.setMesh(c)
+            f1ts.setFieldNoProfileSBT(fCells)
+            fmts1.pushBackTimeStep(f1ts)
+            pass
+        fs=MEDFileFields()
+        fs.pushField(fmts0)
+        fs.pushField(fmts1)
+        cc.write(fname,2)
+        fs.write(fname,0)
+        ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        #
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here CMesh is important
+        (a,b,c),d=mml2.buildVTUArrays()
+        self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
+        self.assertTrue(a.isEqual(arrX,1e-12))
+        self.assertTrue(b.isEqual(arrY,1e-12))
+        self.assertTrue(c.isEqual(arrZ,1e-12))
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(30):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            myarr=DataArrayDouble(24) ; myarr.iota() ; myarr[i%24]=30.
+            self.assertEqual(ffCell.getName(),"FieldOnCells")
+            self.assertTrue(v.isEqual(myarr,1e-12))
+            pass
+        #
+        fcscp=allFMTSLeavesPerCommonSupport1[1][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important
+        ref=ms[0].getImplicitFaceMesh().getCoords().getHiddenCppPointer()
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertEqual(ref,a0.getHiddenCppPointer())
+        self.assertTrue(ncc)
+        self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315,320,325,330,335,340,345,350,355,360,365,370,375,380,385,390,395,400,405,410,415,420,425,430,435,440,445,450,455,460,465,470,475,480,485])))
+        self.assertTrue(a3.isEqual(DataArrayInt([4,0,12,15,3,4,12,24,27,15,4,24,36,39,27,4,36,48,51,39,4,3,15,18,6,4,15,27,30,18,4,27,39,42,30,4,39,51,54,42,4,6,18,21,9,4,18,30,33,21,4,30,42,45,33,4,42,54,57,45,4,1,13,16,4,4,13,25,28,16,4,25,37,40,28,4,37,49,52,40,4,4,16,19,7,4,16,28,31,19,4,28,40,43,31,4,40,52,55,43,4,7,19,22,10,4,19,31,34,22,4,31,43,46,34,4,43,55,58,46,4,2,14,17,5,4,14,26,29,17,4,26,38,41,29,4,38,50,53,41,4,5,17,20,8,4,17,29,32,20,4,29,41,44,32,4,41,53,56,44,4,8,20,23,11,4,20,32,35,23,4,32,44,47,35,4,44,56,59,47,4,0,12,13,1,4,12,24,25,13,4,24,36,37,25,4,36,48,49,37,4,1,13,14,2,4,13,25,26,14,4,25,37,38,26,4,37,49,50,38,4,3,15,16,4,4,15,27,28,16,4,27,39,40,28,4,39,51,52,40,4,4,16,17,5,4,16,28,29,17,4,28,40,41,29,4,40,52,53,41,4,6,18,19,7,4,18,30,31,19,4,30,42,43,31,4,42,54,55,43,4,7,19,20,8,4,19,31,32,20,4,31,43,44,32,4,43,55,56,44,4,9,21,22,10,4,21,33,34,22,4,33,45,46,34,4,45,57,58,46,4,10,22,23,11,4,22,34,35,23,4,34,46,47,35,4,46,58,59,47,4,0,1,4,3,4,3,4,7,6,4,6,7,10,9,4,1,2,5,4,4,4,5,8,7,4,7,8,11,10,4,12,13,16,15,4,15,16,19,18,4,18,19,22,21,4,13,14,17,16,4,16,17,20,19,4,19,20,23,22,4,24,25,28,27,4,27,28,31,30,4,30,31,34,33,4,25,26,29,28,4,28,29,32,31,4,31,32,35,34,4,36,37,40,39,4,39,40,43,42,4,42,43,46,45,4,37,38,41,40,4,40,41,44,43,4,43,44,47,46,4,48,49,52,51,4,51,52,55,54,4,54,55,58,57,4,49,50,53,52,4,52,53,56,55,4,55,56,59,58])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        for i in range(30):
+            ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            myarr=DataArrayDouble(98) ; myarr.iota() ; myarr[i]=100.
+            self.assertEqual(ffCell.getName(),"FieldOnFaces")
+            self.assertTrue(v.isEqual(myarr,1e-12))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test31(self):
+        """non regression test of EDF 7972"""
+        fname="ForMEDReader31.med"
+        c=MEDCouplingCMesh()
+        arrX=DataArrayDouble(3) ; arrX.iota()
+        arrY=DataArrayDouble(4) ; arrY.iota()
+        arrZ=DataArrayDouble(5) ; arrZ.iota()
+        c.setCoords(arrX,arrY,arrZ)
+        c.setName("CartMesh")
+        cc=MEDFileCMesh()
+        cc.setMesh(c)
+        famIdCells=DataArrayInt(24) ; famIdCells[:]=0
+        cc.setFamilyFieldArr(0,famIdCells)
+        #cc.setFamilyFieldArr(-1,famIdFaces)
+        cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3)
+        cc.setFamiliesOnGroup("FacesX1",["FacesX"])
+        cc.setFamiliesOnGroup("FacesY1",["FacesY"])
+        cc.setFamiliesOnGroup("FacesZ1",["FacesZ"])
+        fmts0=MEDFileFieldMultiTS()
+        fmts1=MEDFileFieldMultiTS()
+        pfl=DataArrayInt(11) ; pfl.iota() ; pfl.setName("PflOnHECA8")
+        for i in range(30):
+            f1ts=MEDFileField1TS()
+            fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnCells")
+            arr=DataArrayDouble(11) ; arr.iota() ; arr[i%11]=100.
+            fFaces.setArray(arr)
+            fFaces.setTime(float(i)+0.1,i,-1)
+            fFaces.setMesh(c.buildUnstructured()[:11])
+            f1ts.setFieldProfile(fFaces,cc,0,pfl)# here, a test is done to check that "NORM_HEXA8" string is not 30 times appended at the end of pfl name.
+            self.assertEqual("PflOnHECA8",pfl.getName())
+            fmts0.pushBackTimeStep(f1ts)
+            pass
+        fs=MEDFileFields()
+        fs.pushField(fmts0)
+        cc.write(fname,2)
+        fs.write(fname,0)
+        ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        #
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children. This is the most important line in the test.
+        self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,0.,3.,0.,1.,3.,0.,2.,3.,0.,0.,0.,1.,1.,0.,1.,2.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,0.,2.,1.,1.,2.,1.,2.,2.,1.,0.,3.,1.,1.,3.,1.,2.,3.,1.,0.,0.,2.,1.,0.,2.,2.,0.,2.,0.,1.,2.,1.,1.,2.,2.,1.,2.,0.,2.,2.,1.,2.,2.,2.,2.,2.,0.,3.,2.,1.,3.,2.,2.,3.,2.,0.,0.,3.,1.,0.,3.,2.,0.,3.,0.,1.,3.,1.,1.,3.,2.,1.,3.,0.,2.,3.,1.,2.,3.,2.,2.,3.,0.,3.,3.,1.,3.,3.,2.,3.,3.,0.,0.,4.,1.,0.,4.,2.,0.,4.,0.,1.,4.,1.,1.,4.,2.,1.,4.,0.,2.,4.,1.,2.,4.,2.,2.,4.,0.,3.,4.,1.,3.,4.,2.,3.,4.],60,3),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([12,12,12,12,12,12,12,12,12,12,12])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,9,18,27,36,45,54,63,72,81,90])))
+        self.assertTrue(a3.isEqual(DataArrayInt([8,1,0,3,4,13,12,15,16,8,2,1,4,5,14,13,16,17,8,4,3,6,7,16,15,18,19,8,5,4,7,8,17,16,19,20,8,7,6,9,10,19,18,21,22,8,8,7,10,11,20,19,22,23,8,13,12,15,16,25,24,27,28,8,14,13,16,17,26,25,28,29,8,16,15,18,19,28,27,30,31,8,17,16,19,20,29,28,31,32,8,19,18,21,22,31,30,33,34])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        for i in range(30):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            # self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer()) # to be improved... maybe this line could be true
+            myarr=DataArrayDouble(11) ; myarr.iota() ; myarr[i%11]=100.
+            self.assertEqual(ffCell.getName(),"FieldOnCells")
+            self.assertTrue(v.isEqual(myarr,1e-12))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test32(self):
+        """ This test is close to test30 except that here the profiles on dim-1 of structured mesh is considered here."""
+        fname="ForMEDReader32.med"
+        c=MEDCouplingCMesh()
+        arrX=DataArrayDouble(3) ; arrX.iota()
+        arrY=DataArrayDouble(4) ; arrY.iota()
+        arrZ=DataArrayDouble(5) ; arrZ.iota()
+        c.setCoords(arrX,arrY,arrZ)
+        c.setName("CartMesh")
+        cc=MEDFileCMesh()
+        cc.setMesh(c)
+        tmpFacesMesh=c.build1SGTSubLevelMesh()
+        famIdFaces=DataArrayInt(98) ; famIdFaces[:36]=-1 ; famIdFaces[36:68]=-2 ; famIdFaces[68:]=-3
+        famIdCells=DataArrayInt(24) ; famIdCells[:]=0
+        cc.setFamilyFieldArr(0,famIdCells)
+        #cc.setFamilyFieldArr(-1,famIdFaces)
+        cc.addFamily("FacesX",-1) ; cc.addFamily("FacesY",-2) ; cc.addFamily("FacesZ",-3)
+        cc.setFamiliesOnGroup("FacesX1",["FacesX"])
+        cc.setFamiliesOnGroup("FacesY1",["FacesY"])
+        cc.setFamiliesOnGroup("FacesZ1",["FacesZ"])
+        fmts0=MEDFileFieldMultiTS()
+        fmts1=MEDFileFieldMultiTS()
+        pfl=DataArrayInt(31) ; pfl.iota() ; pfl.setName("PflOnQUAD4")
+        for i in range(30):
+            f1ts=MEDFileField1TS()
+            fFaces=MEDCouplingFieldDouble(ON_CELLS) ; fFaces.setName("FieldOnFaces")
+            arr=DataArrayDouble(31) ; arr.iota() ; arr[i]=100.
+            fFaces.setArray(arr)
+            fFaces.setTime(float(i)+0.1,i,-1)
+            fFaces.setMesh(tmpFacesMesh[:31])
+            f1ts.setFieldProfile(fFaces,cc,-1,pfl)# here, a test is done to check that "NORM_QUAD4" string is not 30 times appended at the end of pfl name.
+            self.assertEqual("PflOnQUAD4",pfl.getName())
+            fmts0.pushBackTimeStep(f1ts)
+            #
+            f1ts=MEDFileField1TS()
+            fCells=MEDCouplingFieldDouble(ON_CELLS) ; fCells.setName("FieldOnCells")
+            arr=DataArrayDouble(24) ; arr.iota() ; arr[i%24]=30.
+            fCells.setArray(arr)
+            fCells.setTime(float(i)+0.1,i,-1)
+            fCells.setMesh(c)
+            f1ts.setFieldNoProfileSBT(fCells)
+            fmts1.pushBackTimeStep(f1ts)
+            pass
+        fs=MEDFileFields()
+        fs.pushField(fmts0)
+        fs.pushField(fmts1)
+        cc.write(fname,2)
+        fs.write(fname,0)
+        ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),2)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),2)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        #
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDCMeshMultiLev)) # here CMesh is important
+        (a,b,c),d=mml2.buildVTUArrays()
+        self.assertTrue(d)#d is True because the a,b and c are directly those in the internal data structure
+        self.assertTrue(a.isEqual(arrX,1e-12))
+        self.assertTrue(b.isEqual(arrY,1e-12))
+        self.assertTrue(c.isEqual(arrZ,1e-12))
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(30):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            myarr=DataArrayDouble(24) ; myarr.iota() ; myarr[i%24]=30.
+            self.assertEqual(ffCell.getName(),"FieldOnCells")
+            self.assertTrue(v.isEqual(myarr,1e-12))
+            pass
+        #
+        fcscp=allFMTSLeavesPerCommonSupport1[1][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev)) # here UMesh is important
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        self.assertTrue(ncc)# True because, the coords are computed by the implicit unstructured level -1 structured mesh
+        self.assertTrue(a0.isEqual(DataArrayDouble([0.,0.,0.,1.,0.,0.,2.,0.,0.,0.,1.,0.,1.,1.,0.,2.,1.,0.,0.,2.,0.,1.,2.,0.,2.,2.,0.,0.,3.,0.,1.,3.,0.,2.,3.,0.,0.,0.,1.,1.,0.,1.,2.,0.,1.,0.,1.,1.,1.,1.,1.,2.,1.,1.,0.,2.,1.,1.,2.,1.,2.,2.,1.,0.,3.,1.,1.,3.,1.,2.,3.,1.,0.,0.,2.,1.,0.,2.,2.,0.,2.,0.,1.,2.,1.,1.,2.,2.,1.,2.,0.,2.,2.,1.,2.,2.,2.,2.,2.,0.,3.,2.,1.,3.,2.,2.,3.,2.,0.,0.,3.,1.,0.,3.,2.,0.,3.,0.,1.,3.,1.,1.,3.,2.,1.,3.,0.,2.,3.,1.,2.,3.,2.,2.,3.,0.,3.,3.,1.,3.,3.,2.,3.,3.,0.,0.,4.,1.,0.,4.,2.,0.,4.,0.,1.,4.,1.,1.,4.,2.,1.,4.,0.,2.,4.,1.,2.,4.,2.,2.,4.,0.,3.,4.,1.,3.,4.,2.,3.,4.],60,3),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150])))
+        self.assertTrue(a3.isEqual(DataArrayInt([4,0,12,15,3,4,12,24,27,15,4,24,36,39,27,4,36,48,51,39,4,3,15,18,6,4,15,27,30,18,4,27,39,42,30,4,39,51,54,42,4,6,18,21,9,4,18,30,33,21,4,30,42,45,33,4,42,54,57,45,4,1,13,16,4,4,13,25,28,16,4,25,37,40,28,4,37,49,52,40,4,4,16,19,7,4,16,28,31,19,4,28,40,43,31,4,40,52,55,43,4,7,19,22,10,4,19,31,34,22,4,31,43,46,34,4,43,55,58,46,4,2,14,17,5,4,14,26,29,17,4,26,38,41,29,4,38,50,53,41,4,5,17,20,8,4,17,29,32,20,4,29,41,44,32])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        a6,a7=mml2.retrieveFamilyIdsOnCells()
+        self.assertTrue(a6 is None)
+        self.assertTrue(a7)
+        for i in range(30):
+            ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            myarr=DataArrayDouble(31) ; myarr.iota() ; myarr[i]=100.
+            self.assertEqual(ffCell.getName(),"FieldOnFaces")
+            self.assertTrue(v.isEqual(myarr,1e-12))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test33(self):
+        """Non regression test concerning polygons. Thanks Adrien. This bug can't be shown by simply reading an displaying a MED file containing only polygons. A filter must be applied on it to show it. The a2 array was responsible of that bug."""
+        fname="ForMEDReader33.med"
+        fieldName="ACellField"
+        coo=DataArrayDouble([(5.5,0.5),(5.5,-0.5),(6.5,0.5),(6.5,-0.5),(6.5,1.5),(7.5,0.5),(7.5,-0.5),(7.5,1.5),(7.5,2.5),(8.5,0.5),(8.5,-0.5),(8.5,1.5),(8.5,2.5),(8.5,3.5),(8.55,0.5),(8.55,-0.5),(8.55,1.5),(8.55,2.5),(8.55,3.5)])
+        m=MEDCouplingUMesh("mesh",2)
+        m.setCoords(coo)
+        m.allocateCells()
+        for i,c in enumerate([(1,0,2,3),(3,2,5,6),(2,4,7,5),(6,5,9,10),(5,7,11,9),(7,8,12,11),(10,9,14,15),(9,11,16,14),(11,12,17,16),(12,13,18,17)]):
+            if i<6:
+                typ=NORM_QUAD4
+                pass
+            else:
+                typ=NORM_POLYGON
+                pass
+            m.insertNextCell(typ,c)
+            pass
+        mm=MEDFileUMesh()
+        mm.setMeshAtLevel(0,m)
+        mm.write(fname,2)
+        for i in range(15):
+            fCell0=MEDCouplingFieldDouble(ON_CELLS) ; fCell0.setTime(float(i)+0.1,i,0)
+            fCell0.setName(fieldName) ; fCell0.setMesh(m)
+            arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota(0) ; arr[i%10]=100.
+            fCell0.setArray(arr) ; arr.setInfoOnComponents(["Comp1 [m]"])
+            fCell0.checkConsistencyLight()
+            WriteFieldUsingAlreadyWrittenMesh(fname,fCell0)
+            pass
+        ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        #
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(not ncc)# false because 2D in MED file
+        self.assertTrue(a0.isEqual(DataArrayDouble([(5.5,0.5,0),(5.5,-0.5,0),(6.5,0.5,0),(6.5,-0.5,0),(6.5,1.5,0),(7.5,0.5,0),(7.5,-0.5,0),(7.5,1.5,0),(7.5,2.5,0),(8.5,0.5,0),(8.5,-0.5,0),(8.5,1.5,0),(8.5,2.5,0),(8.5,3.5,0),(8.55,0.5,0),(8.55,-0.5,0),(8.55,1.5,0),(8.55,2.5,0),(8.55,3.5,0)]),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,7,7,7,7])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45])))# the bug was here.
+        self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,2,3,4,3,2,5,6,4,2,4,7,5,4,6,5,9,10,4,5,7,11,9,4,7,8,12,11,4,10,9,14,15,4,9,11,16,14,4,11,12,17,16,4,12,13,18,17])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(15):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            myarr=DataArrayDouble(10) ; myarr.iota() ; myarr[i%10]=100. ; myarr.setInfoOnComponent(0,"Comp1 [m]")
+            self.assertEqual(ffCell.getName(),fieldName)
+            self.assertTrue(v.isEqual(myarr,1e-12))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test34(self):
+        """ This test is the thirs ultimate test (base on test12) for the profiles with gauss points.
+        This test highlight the hidden imp linked to bug #8655.
+        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.
+        """
+        fname="ForMEDReader34.med"
+        m=MEDCouplingCMesh("mesh")
+        arr=DataArrayDouble(5) ; arr.iota()
+        m.setCoords(arr,arr)
+        m=m.buildUnstructured() ; m.getCoords().setInfoOnComponents(["XX [m]","YYY [km]"])
+        mm=MEDFileUMesh() ; mm.setMeshes([m])
+        #
+        fieldName0="zeField0"
+        fieldName1="zeField1"
+        fs0=MEDFileFieldMultiTS() ; fs1=MEDFileFieldMultiTS()
+        for i in range(5):
+            f=MEDFileField1TS()
+            fNode=MEDCouplingFieldDouble(ON_GAUSS_PT) ; fNode.setTime(float(i),i,0)
+            fNode.setName(fieldName0) ; fNode.setMesh(m)
+            fNode.setGaussLocalizationOnCells([0,2,3,4,7,15],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7],[0.8,0.2])
+            fNode.setGaussLocalizationOnCells([1,5,8,9],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3],[0.8,0.05,0.1,0.04,0.01])
+            fNode.setGaussLocalizationOnCells([6,10,13],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2],[0.8,0.05,0.1,0.04])
+            fNode.setGaussLocalizationOnCells([11,12,14],[-1.,-1.,1.,-1.,1.,1.,-1.,1.],[0.5,0.5,0.7,0.7,0.1,0.1,0.2,0.2,0.3,0.3,0.4,0.4,0.8,0.8],[0.8,0.05,0.1,0.01,0.02,0.005,0.005])
+            arr=DataArrayDouble(2*(2*6+5*4+4*3+7*3)) ; arr.iota(0+1000*i) ; arr.rearrange(2)
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_0 [m]","Com2_0 [s^2]"]) ; fNode.checkConsistencyLight()
+            f.setFieldNoProfileSBT(fNode)
+            fs0.pushBackTimeStep(f)
+            #
+            f=MEDFileField1TS()
+            fNode=MEDCouplingFieldDouble(ON_CELLS) ; fNode.setTime(float(i),i,0)
+            fNode.setName(fieldName1) ; fNode.setMesh(m)
+            arr=DataArrayDouble(2*16) ; arr.iota(300+1000*i) ; arr.rearrange(2)
+            fNode.setArray(arr) ; arr.setInfoOnComponents(["Comp1_1 [m]","Com2_1 [s^2]"]) ; fNode.checkConsistencyLight()
+            f.setFieldNoProfileSBT(fNode)
+            fs1.pushBackTimeStep(f)
+            pass
+        mm.write(fname,2)
+        fs0.write(fname,0) ; fs1.write(fname,0)
+        a0Exp=mm.getCoords().deepCopy()
+        del m,mm,fs0,fs1,f,fNode
+        ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    if itmp.presenceOfMultiDiscPerGeoType():
+                        tmp2=itmp.splitMultiDiscrPerGeoTypes()
+                        for iii,itmp2 in enumerate(tmp2):
+                            name="%s_%i"%(itmp2.getName(),iii)
+                            itmp2.setName(name)
+                            allFMTSLeavesToDisplay2.append(itmp2)
+                            pass
+                        pass
+                    else:
+                        allFMTSLeavesToDisplay2.append(itmp)
+                        pass
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        # Here 2 MED fields in input and at the end 5 ! 1+4 ! 4 fields have been built from zeField0 due to subsplitting per dis / per geo type
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),5)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),5)
+        allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport),5)
+        for i in range(5):
+            self.assertEqual(len(allFMTSLeavesPerCommonSupport[i][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        #
+        fcscp=allFMTSLeavesPerCommonSupport[4][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(not ncc)
+        self.assertTrue(a0.isEqual(a0Exp.changeNbOfComponents(3,0.),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75])))
+        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
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1, 5):
+            self.assertTrue((fcscp.isDataSetSupportEqualToThePreviousOne(i,fields)))
+            pass
+        for i in range(5):
+            f=allFMTSLeavesPerCommonSupport[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
+            f.loadArraysIfNecessary()
+            v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
+            self.assertEqual(f.getName(),fieldName0)
+            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.)])
+            vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
+            vExp+=i*1000
+            self.assertTrue(v.isEqual(vExp,1e-12))
+            #
+            f=allFMTSLeavesPerCommonSupport[1][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
+            f.loadArraysIfNecessary()
+            v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
+            self.assertEqual(f.getName(),fieldName0)
+            vExp=DataArrayDouble([(4.,5.),(6.,7.),(8.,9.),(10.,11.),(12.,13.),(26.,27.),(28.,29.),(30.,31.),(32.,33.),(34.,35.),(48.,49.),(50.,51.),(52.,53.),(54.,55.),(56.,57.),(58.,59.),(60.,61.),(62.,63.),(64.,65.),(66.,67.)])
+            vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
+            vExp+=i*1000
+            self.assertTrue(v.isEqual(vExp,1e-12))
+            #
+            f=allFMTSLeavesPerCommonSupport[2][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
+            f.loadArraysIfNecessary()
+            v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
+            self.assertEqual(f.getName(),fieldName0)
+            vExp=DataArrayDouble([(36.,37.),(38.,39.),(40.,41.),(42.,43.),(68.,69.),(70.,71.),(72.,73.),(74.,75.),(104.,105.),(106.,107.),(108.,109.),(110.,111.)])
+            vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
+            vExp+=i*1000
+            self.assertTrue(v.isEqual(vExp,1e-12))
+            #
+            f=allFMTSLeavesPerCommonSupport[3][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
+            f.loadArraysIfNecessary()
+            v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
+            self.assertEqual(f.getName(),fieldName0)
+            vExp=DataArrayDouble([(76,77),(78,79),(80,81),(82,83),(84,85),(86,87),(88,89),(90,91),(92,93),(94,95),(96,97),(98,99),(100,101),(102,103),(112,113),(114,115),(116,117),(118,119),(120,121),(122,123),(124,125)])
+            vExp.setInfoOnComponents(['Comp1_0 [m]','Com2_0 [s^2]'])
+            vExp+=i*1000
+            self.assertTrue(v.isEqual(vExp,1e-12))
+            #
+            f=allFMTSLeavesPerCommonSupport[4][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(f,mst)
+            f.loadArraysIfNecessary()
+            v=mml.buildDataArray(fsst,fields,f.getUndergroundDataArray())
+            self.assertEqual(f.getName(),fieldName1)
+            self.assertEqual(v.getHiddenCppPointer(),f.getUndergroundDataArray().getHiddenCppPointer())
+            vExp=DataArrayDouble(16*2) ; vExp.iota(300+i*1000) ; vExp.rearrange(2) ; vExp.setInfoOnComponents(['Comp1_1 [m]','Com2_1 [s^2]'])
+            self.assertTrue(v.isEqual(vExp,1e-12))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test35(self):
+        """ Emulate MEDReader in // mode context. Here a Simple mesh having more nodes than really needed. This test focuses on that point particularly."""
+        fname="ForMEDReader35.med"
+        arrX=DataArrayDouble(7) ; arrX.iota()
+        arrY=DataArrayDouble([0.,1.])
+        m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY) ; m=m.buildUnstructured() ; m=m[[0,5,1,4,2,3]] ; m.changeSpaceDimension(3,0.) ; m.setName("Mesh")
+        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field") ; f.setArray(DataArrayDouble([(0.1,1.1),(2.1,3.1),(4.1,5.1),(6.1,7.1),(8.1,9.1),(10.1,11.1)])) ; f.getArray().setInfoOnComponents(["aa","bbb"])
+        WriteUMesh(fname,m,True)
+        WriteFieldUsingAlreadyWrittenMesh(fname,f)
+        ########## GO for reading in MEDReader,by not loading all. Mesh is fully loaded but not fields values
+        ms=MEDFileMeshes() # here we reproduce what is done by ParaMEDFileMeshes.ParaNew
+        ms.pushMesh(MEDFileUMesh.LoadPartOf(fname,"Mesh",[NORM_QUAD4],[0,2,1],-1,-1));
+        ms[0].zipCoords()
+        ms.cartesianizeMe()
+        #
+        fields=MEDFileFields.LoadPartOf(fname,False,ms);
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    if itmp.presenceOfMultiDiscPerGeoType():
+                        tmp2=itmp.splitMultiDiscrPerGeoTypes()
+                        for iii,itmp2 in enumerate(tmp2):
+                            name="%s_%i"%(itmp2.getName(),iii)
+                            itmp2.setName(name)
+                            allFMTSLeavesToDisplay2.append(itmp2)
+                            pass
+                        pass
+                    else:
+                        allFMTSLeavesToDisplay2.append(itmp)
+                        pass
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        #
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1) # one time serie here : because the 2 fields are defined on the same time steps
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),1)
+        allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport),1)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport[0][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        #
+        fcscp=allFMTSLeavesPerCommonSupport[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(ncc)
+        self.assertTrue(a0.isEqual(m.getCoords()[[0,1,5,6,7,8,12,13]],1e-12))# <- the aim of the test
+        self.assertTrue(a1.isEqual(DataArrayByte([9,9])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,5])))
+        self.assertTrue(a3.isEqual(DataArrayInt([4,1,0,4,5,4,3,2,6,7])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny().isEqual(DataArrayInt([0,1,5,6,7,8,12,13])))
+        f2=allFMTSLeavesPerCommonSupport[0][0][0][0]
+        fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst)
+        f2.loadArraysIfNecessary()
+        v=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray())
+        self.assertEqual(f2.getName(),f.getName())
+        vExp=DataArrayDouble([(0.1,1.1),(2.1,3.1)])
+        vExp.setInfoOnComponents(['aa','bbb'])
+        self.assertTrue(v.isEqual(vExp,1e-12))
+        pass
+
+    @WriteInTmpDir
+    def test36(self):
+        """Bug EDF11027. Here mesh at level 0 (TRI3) does not fetch all the nodes. Level -1 (SEG2) does not fetch all the nodes neither. But all TRI3 + all SEG2 fetch all nodes.
+        aaa field on GAUSSPoints lying only on TRI3 share the same support than profile node field ccc.
+        But bbb field on all nodes is not on the same support. Past optimization that make the assumtion a support on all lev0 cells lies on all nodes is now over."""
+        meshName="mesh"
+        fname="ForMEDReader36.med"
+        c=DataArrayDouble([(0,0),(1,0),(1,1),(0,1),(2,0),(-1,0),(1,2)])
+        m0=MEDCoupling1SGTUMesh(meshName,NORM_TRI3)
+        m0.setCoords(c)
+        m0.setNodalConnectivity(DataArrayInt([0,2,1,3,2,0,2,4,1]))
+        mm=MEDFileUMesh()
+        mm[0]=m0
+        m1=MEDCoupling1SGTUMesh(meshName,NORM_SEG2)
+        m1.setCoords(c)
+        m1.setNodalConnectivity(DataArrayInt([5,0,0,3,3,2,2,6]))
+        mm[-1]=m1
+        #
+        zeTime=(1.1,2,3)
+        ff1=MEDFileField1TS()
+        f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m0)
+        arr=DataArrayDouble(7) ; arr.iota(2000)
+        f1.setArray(arr)
+        f1.setName("bbb")
+        f1.checkConsistencyLight()
+        f1.setTime(*zeTime)
+        ff1.setFieldNoProfileSBT(f1)
+        #
+        ff2=MEDFileField1TS()
+        f2=MEDCouplingFieldDouble(ON_GAUSS_NE) ; f2.setMesh(m0)
+        arr=DataArrayDouble(9) ; arr.iota(4000)
+        f2.setArray(arr)
+        f2.setName("ddd")
+        f2.checkConsistencyLight()
+        f2.setTime(*zeTime)
+        ff2.setFieldNoProfileSBT(f2)
+        #
+        ff3=MEDFileField1TS()
+        f3=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f3.setMesh(m0)
+        f3.setGaussLocalizationOnType(NORM_TRI3,[0,0,1,0,0,1],[0.333333,0.333333],[0.5])
+        arr=DataArrayDouble(3) ; arr.iota(1000)
+        f3.setArray(arr)
+        f3.checkConsistencyLight()
+        f3.setTime(*zeTime)
+        f3.setName("aaa")
+        ff3.setFieldNoProfileSBT(f3)
+        #
+        ff4=MEDFileField1TS()
+        m0d=m0.deepCopy() ; m0d.zipCoords()
+        f4=MEDCouplingFieldDouble(ON_NODES) ; f4.setMesh(m0d)
+        arr=DataArrayDouble(5) ; arr.iota(3000)
+        f4.setArray(arr)
+        f4.setName("ccc")
+        f4.checkConsistencyLight()
+        f4.setTime(*zeTime)
+        pfl=DataArrayInt([0,1,2,3,4]) ; pfl.setName("PFL")
+        ff4.setFieldProfile(f4,mm,0,pfl)
+        #
+        mm.write(fname,2)
+        ff3.write(fname,0)
+        ff1.write(fname,0)
+        ff4.write(fname,0)
+        ###
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),3)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries[0]),3)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),2)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[0][0]),2)
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1[1][0]),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children.
+        self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(2,0,0)]),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([5,5,5])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,4,8])))
+        self.assertTrue(a3.isEqual(DataArrayInt([3,0,2,1,3,3,2,0,3,2,4,1])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            v.isEqual(DataArrayDouble([1000,1001,1002]),1e-12)
+            #
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][1][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            v.isEqual(DataArrayDouble([3000,3001,3002,3003,3004]),1e-12)
+            pass
+        fcscp=allFMTSLeavesPerCommonSupport1[1][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(not ncc)# here ncc=False because the coordinates are not in ms neither in children.
+        self.assertTrue(a0.isEqual(DataArrayDouble([(0,0,0),(1,0,0),(1,1,0),(0,1,0),(2,0,0),(-1,0,0),(1,2,0)]),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([5,5,5,3,3,3,3])))
+        self.assertTrue(a2.isEqual(DataArrayInt([0,4,8,12,15,18,21])))
+        self.assertTrue(a3.isEqual(DataArrayInt([3,0,2,1,3,3,2,0,3,2,4,1,2,5,0,2,0,3,2,3,2,2,2,6])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[1][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            v.isEqual(DataArrayDouble([2000,2001,2002,2003,2004,2005,2006]),1e-12)
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test37(self):
+        """ Introduction of non cartesian meshes management. Here cylindrical."""
+        fname="ForMEDReader37.med"
+        meshName="mesh"
+        description="Cylindrical grid"
+        comps=["X [cm]","Y [cm]","Z [cm]"]
+        arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
+        arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
+        arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=1.6 ; arrZ-=8. ; arrZ.setInfoOnComponent(0,comps[2])
+        m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName)
+        mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setDescription(description)
+        mm.setAxisType(AX_CYL) # the test is here !
+        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
+        arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
+        ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
+        fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
+        #
+        ms=MEDFileMeshes() ; ms.pushMesh(mm)
+        fields=MEDFileFields() ; fields.pushField(fmts)
+        ms.write(fname,2) ; fields.write(fname,0)
+        #
+        del mm,fmts,fields,ms
+        ms=MEDFileMeshes(fname)
+        fields=MEDFileFields(fname,False)
+        ms.cartesianizeMe()
+        #
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        #
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))# <- hehe it is a CurveLinear no more a CMesh !
+        a,b,c=mml2.buildVTUArrays()
+        self.assertTrue(c)# the array is thoose in structure
+        ref_a=DataArrayDouble([0.,0.,-8.,0.8,0.,-8.,1.6,0.,-8.,0.,0.,-8.,0.4,0.6928203230275509,-8.,0.8,1.3856406460551018,-8.,-0.,0.,-8.,-0.4,0.692820323027551,-8.,-0.8,1.385640646055102,-8.,-0.,0.,-8.,-0.8,0.,-8.,-1.6,0.,-8.,0.,0.,-6.4,0.8,0.,-6.4,1.6,0.,-6.4,0.,0.,-6.4,0.4,0.6928203230275509,-6.4,0.8,1.3856406460551018,-6.4,-0.,0.,-6.4,-0.4,0.692820323027551,-6.4,-0.8,1.385640646055102,-6.4,-0.,0.,-6.4,-0.8,0.,-6.4,-1.6,0.,-6.4,0.,0.,-4.8,0.8,0.,-4.8,1.6,0.,-4.8,0.,0.,-4.8,0.4,0.6928203230275509,-4.8,0.8,1.3856406460551018,-4.8,-0.,0.,-4.8,-0.4,0.692820323027551,-4.8,-0.8,1.385640646055102,-4.8,-0.,0.,-4.8,-0.8,0.,-4.8,-1.6,0.,-4.8,0.,0.,-3.2,0.8,0.,-3.2,1.6,0.,-3.2,0.,0.,-3.2,0.4,0.6928203230275509,-3.2,0.8,1.3856406460551018,-3.2,-0.,0.,-3.2,-0.4,0.692820323027551,-3.2,-0.8,1.385640646055102,-3.2,-0.,0.,-3.2,-0.8,0.,-3.2,-1.6,0.,-3.2,0.,0.,-1.6,0.8,0.,-1.6,1.6,0.,-1.6,0.,0.,-1.6,0.4,0.6928203230275509,-1.6,0.8,1.3856406460551018,-1.6,-0.,0.,-1.6,-0.4,0.692820323027551,-1.6,-0.8,1.385640646055102,-1.6,-0.,0.,-1.6,-0.8,0.,-1.6,-1.6,0.,-1.6],60,3)
+        ref_a.setInfoOnComponents(comps)
+        self.assertTrue(a.isEqual(ref_a,1e-14))
+        self.assertEqual(b,[3,4,5])
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test38(self):
+        """ Introduction of non cartesian meshes management. Here spherical."""
+        fname="ForMEDReader38.med"
+        meshName="mesh"
+        description="Spherical grid"
+        comps=["X [cm]","Y [cm]","Z [cm]"]
+        arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
+        arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
+        arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2])
+        m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName)
+        mm=MEDFileCMesh() ; mm.setMesh(m) ; mm.setDescription(description)
+        mm.setAxisType(AX_SPHER) # the test is here !
+        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
+        arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
+        ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
+        fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
+        #
+        ms=MEDFileMeshes() ; ms.pushMesh(mm)
+        fields=MEDFileFields() ; fields.pushField(fmts)
+        ms.write(fname,2) ; fields.write(fname,0)
+        #
+        del mm,fmts,fields,ms
+        ms=MEDFileMeshes(fname)
+        fields=MEDFileFields(fname,False)
+        ms.cartesianizeMe()
+        #
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        #
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
+        a,b,c=mml2.buildVTUArrays()
+        self.assertTrue(c)# the array is thoose in structure
+        ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3)
+        ref_a.setInfoOnComponents(comps)
+        self.assertTrue(a.isEqual(ref_a,1e-14))
+        self.assertEqual(b,[3,4,5])
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
+            pass
+        pass
+
+    @WriteInTmpDir
+    def test39(self):
+        """Idem test37, test38, test39, test40 except that here it is an unstructured mesh."""
+        fname="ForMEDReader39.med"
+        meshName="mesh"
+        description="Spherical grid"
+        comps=["X [cm]","Y [cm]","Z [cm]"]
+        arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
+        arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
+        arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2])
+        m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) ; m=m.buildUnstructured()
+        mm=MEDFileUMesh() ; mm[0]=m ; mm.setDescription(description) # the test is here : UMesh !
+        mm.setAxisType(AX_SPHER) # the test is here !
+        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
+        arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
+        ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
+        fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
+        #
+        ms=MEDFileMeshes() ; ms.pushMesh(mm)
+        fields=MEDFileFields() ; fields.pushField(fmts)
+        ms.write(fname,2) ; fields.write(fname,0)
+        #
+        del mm,fmts,fields,ms
+        ms=MEDFileMeshes(fname)
+        fields=MEDFileFields(fname,False)
+        #
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        #
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(ncc)
+        ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3)
+        ref_a.setInfoOnComponents(comps)
+        self.assertTrue(a0.isEqual(ref_a,1e-14))#<- Test is here
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
+        pass
+
+    @WriteInTmpDir
+    def test40(self):
+        """Idem test37, test38, test39, test40 except that here it is a CL mesh."""
+        fname="ForMEDReader40.med"
+        meshName="mesh"
+        description="Spherical grid"
+        comps=["X [cm]","Y [cm]","Z [cm]"]
+        arrX=DataArrayDouble(3) ; arrX.iota() ; arrX*=0.8 ; arrX.setInfoOnComponent(0,comps[0])
+        arrY=DataArrayDouble(4) ; arrY.iota() ; arrY*=pi/(len(arrY)-1) ; arrY.setInfoOnComponent(0,comps[1])
+        arrZ=DataArrayDouble(5) ; arrZ.iota() ; arrZ*=2*pi/(len(arrZ)-1) ; arrZ.setInfoOnComponent(0,comps[2])
+        m=MEDCouplingCMesh() ; m.setCoords(arrX,arrY,arrZ) ; m.setName(meshName) ; m=m.buildCurveLinear()
+        mm=MEDFileCurveLinearMesh() ; mm.setMesh(m) ; mm.setDescription(description) # the test is here CLMesh!
+        mm.setAxisType(AX_SPHER) # the test is here !
+        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
+        arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
+        ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
+        fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
+        #
+        ms=MEDFileMeshes() ; ms.pushMesh(mm)
+        fields=MEDFileFields() ; fields.pushField(fmts)
+        ms.write(fname,2) ; fields.write(fname,0)
+        #
+        ms=MEDFileMeshes(fname) ; ms.cartesianizeMe()
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        #
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDCurveLinearMeshMultiLev))
+        a,b,c=mml2.buildVTUArrays()
+        self.assertTrue(c)
+        ref_a=DataArrayDouble([0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,0.,0.,0.,0.,0.8,0.,0.,1.6,0.,0.,0.,0.,0.6928203230275509,0.4,0.,1.3856406460551018,0.8,0.,0.,-0.,0.,0.692820323027551,-0.4,0.,1.385640646055102,-0.8,0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,0.,0.,-0.,0.,0.8,-0.,0.,1.6,-0.,0.,0.,-0.6928203230275509,0.,0.4,-1.3856406460551018,0.,0.8,-0.,0.,-0.,-0.692820323027551,0.,-0.4,-1.385640646055102,0.,-0.8,-0.,0.,-0.,0.,0.,-0.8,0.,0.,-1.6,-0.,-0.,0.,-0.,-0.,0.8,-0.,-0.,1.6,-0.,-0.,0.,0.,-0.6928203230275509,0.4,0.,-1.3856406460551018,0.8,-0.,-0.,-0.,0.,-0.692820323027551,-0.4,0.,-1.385640646055102,-0.8,-0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6,0.,-0.,0.,0.,-0.,0.8,0.,-0.,1.6,0.,-0.,0.,0.6928203230275509,0.,0.4,1.3856406460551018,0.,0.8,0.,-0.,-0.,0.692820323027551,0.,-0.4,1.385640646055102,0.,-0.8,0.,-0.,-0.,0.,0.,-0.8,0.,0.,-1.6],60,3)
+        ref_a.setInfoOnComponents(comps)
+        self.assertTrue(a.isEqual(ref_a,1e-14))#<- Test is here
+        self.assertEqual(b,[3,4,5])
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            self.assertTrue(v.isEqual(DataArrayDouble([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3]),1e-14))
+        pass
+
+    @WriteInTmpDir
+    def test41(self):
+        """This test focused on bug revealed with // load of multi nodes field with no profile. The error was the first node field (dataarray partdef) change the partdef for the others ! """
+        fname="ForMEDReader41.med"
+        meshName="mesh"
+        nx=5
+        arr=DataArrayDouble(nx) ; arr.iota()
+        m=MEDCouplingCMesh() ; m.setCoords(arr,arr) ; m=m.buildUnstructured() ; m.setName(meshName)
+        renum=DataArrayInt.Aggregate([DataArrayInt.Range(0,m.getNumberOfCells(),2),DataArrayInt.Range(1,m.getNumberOfCells(),2)])
+        m=m[renum] # important think to renum if not we see nothing. The goal if to have dynamic_cast<DataPartDefinition>!=NULL
+        mm=MEDFileUMesh() ; mm[0]=m
+        mm.write(fname,2)
+        f0=MEDCouplingFieldDouble(ON_NODES) ; f0.setMesh(m) ; f0.setName("aaa")
+        arr0=DataArrayDouble(nx*nx) ; arr0.iota() ; f0.setArray(arr0)
+        ff0=MEDFileField1TS() ; ff0.setFieldNoProfileSBT(f0)
+        f1=MEDCouplingFieldDouble(ON_NODES) ; f1.setMesh(m) ; f1.setName("bbb")
+        arr1=DataArrayDouble(nx*nx) ; arr1.iota() ; arr1+=100 ; f1.setArray(arr1)
+        ff1=MEDFileField1TS() ; ff1.setFieldNoProfileSBT(f1)
+        ff0.write(fname,0) ; ff1.write(fname,0)
+        #
+        a=8 ; b=16
+        ms=MEDFileMeshes()
+        mm=MEDFileUMesh.LoadPartOf(fname,meshName,[NORM_QUAD4],[a,b,1],-1,-1)
+        ms.pushMesh(mm)
+        ms[0].zipCoords()
+        ms.cartesianizeMe()
+        fields=MEDFileFields.LoadPartOf(fname,False,ms);
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    if itmp.presenceOfMultiDiscPerGeoType():
+                        tmp2=itmp.splitMultiDiscrPerGeoTypes()
+                        for iii,itmp2 in enumerate(tmp2):
+                            name="%s_%i"%(itmp2.getName(),iii)
+                            itmp2.setName(name)
+                            allFMTSLeavesToDisplay2.append(itmp2)
+                            pass
+                        pass
+                    else:
+                        allFMTSLeavesToDisplay2.append(itmp)
+                        pass
+                    pass
+                allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+                pass
+        # GO for reading in MEDReader, by not loading all. Mesh is fully loaded but not fields values
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        allFMTSLeavesPerCommonSupport=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesPerTimeSeries[0],ms[ms.getMeshesNames()[0]])
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        #
+        f2=allFMTSLeavesPerCommonSupport[0][0][0][0]
+        fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst)
+        f2.loadArraysIfNecessary()
+        v0=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray())
+        assert(v0.isEqual(DataArrayDouble([1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24]),1e-12))
+        #
+        f2=allFMTSLeavesPerCommonSupport[0][0][1][0]
+        fsst=MEDFileField1TSStructItem.BuildItemFrom(f2,mst)
+        f2.loadArraysIfNecessary()
+        v1=mml.buildDataArray(fsst,fields,f2.getUndergroundDataArray())
+        assert(v1.isEqual(DataArrayDouble([101,102,103,104,106,107,108,109,111,112,113,114,116,117,118,119,121,122,123,124]),1e-12))
+        pass
+
+    @WriteInTmpDir
+    def test42(self):
+        """ EDF14869 - SEG4 """
+        fname="ForMEDReader42.med"
+        meshName="mesh"
+        #
+        a0exp=DataArrayDouble([0.,1.,0.3,0.7])
+        m=MEDCouplingUMesh("mesh",1)
+        m.setCoords(a0exp)
+        m.allocateCells()
+        m.insertNextCell(NORM_SEG4,[0,1,2,3])
+        mm=MEDFileUMesh() ; mm[0]=m
+        #
+        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
+        arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
+        ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
+        fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
+        #
+        ms=MEDFileMeshes() ; ms.pushMesh(mm)
+        fields=MEDFileFields() ; fields.pushField(fmts)
+        ms.write(fname,2) ; fields.write(fname,0)
+        #
+        ms=MEDFileMeshes(fname)
+        fields=MEDFileFields(fname,False)
+        fields.removeFieldsWithoutAnyTimeStep()
+        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
+        allFMTSLeavesToDisplay=[]
+        for fields in fields_per_mesh:
+            allFMTSLeavesToDisplay2=[]
+            for fmts in fields:
+                tmp=fmts.splitDiscretizations()
+                for itmp in tmp:
+                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
+                    pass
+                allFMTSLeavesToDisplay2+=tmp
+                pass
+            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
+            pass
+        #
+        self.assertEqual(len(allFMTSLeavesToDisplay),1)
+        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
+        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
+        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
+        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
+        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
+        #
+        mst=MEDFileMeshStruct.New(ms[0])
+        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
+        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
+        mml2=mml.prepare()
+        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+        self.assertTrue(not ncc)
+        self.assertTrue(a0.isEqual(a0exp.changeNbOfComponents(3,0.),1e-12))
+        self.assertTrue(a1.isEqual(DataArrayByte([35])))# VTK_CUBIC_LINE
+        self.assertTrue(a2.isEqual(DataArrayInt([0])))
+        self.assertTrue(a3.isEqual(DataArrayInt([4,0,1,2,3])))
+        self.assertTrue(a4 is None)
+        self.assertTrue(a5 is None)
+        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
+        for i in range(1):
+            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
+            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
+            ffCell.loadArraysIfNecessary()
+            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
+            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
+            self.assertTrue(v.isEqual(DataArrayDouble([0.0]),1e-14))
+        pass
+
     pass
 
-unittest.main()
+if __name__ == "__main__":
+  unittest.main()