]> SALOME platform Git repositories - tools/medcoupling.git/blobdiff - src/MEDCoupling/Test/MEDCouplingBasicsTest5.cxx
Salome HOME
Some factorization before integration of ParaMEDMEM into medcoupling python module
[tools/medcoupling.git] / src / MEDCoupling / Test / MEDCouplingBasicsTest5.cxx
index 9e98601c0517d764fb9302a2bf320da2e21a252c..257263ad13c94c9c8f7d3a62dd06ddf1ac2cc17c 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2016  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
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -21,7 +21,7 @@
 #include "MEDCouplingBasicsTest5.hxx"
 #include "MEDCouplingUMesh.hxx"
 #include "MEDCouplingCMesh.hxx"
-#include "MEDCouplingExtrudedMesh.hxx"
+#include "MEDCouplingMappedExtrudedMesh.hxx"
 #include "MEDCouplingFieldDouble.hxx"
 #include "MEDCouplingMemArray.hxx"
 #include "MEDCouplingGaussLocalization.hxx"
@@ -32,7 +32,7 @@
 #include <functional>
 #include <iterator>
 
-using namespace ParaMEDMEM;
+using namespace MEDCoupling;
 
 void MEDCouplingBasicsTest5::testUMeshTessellate2D1()
 {
@@ -56,18 +56,18 @@ void MEDCouplingBasicsTest5::testUMeshTessellate2D1()
   m1->setCoords(myCoords1);
   myCoords1->decrRef();
   //
-  MEDCouplingUMesh *m11=static_cast<MEDCouplingUMesh *>(m1->deepCpy());
+  MEDCouplingUMesh *m11=static_cast<MEDCouplingUMesh *>(m1->deepCopy());
   m11->tessellate2D(1.);
   CPPUNIT_ASSERT(m11->getCoords()->isEqual(*m11->getCoords(),1e-12));
   const int expected1[48]={5,0,3,11,1,5,3,4,12,2,1,11,5,5,15,3,0,5,6,16,4,3,15,5,5,5,0,7,19,5,6,5,19,7,8,20,5,0,1,23,7,5,1,2,24,8,7,23};
   const int expected2[9]={0,5,12,17,24,29,36,41,48};
-  CPPUNIT_ASSERT_EQUAL(48,m11->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(9,m11->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(48,(int)m11->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(9,(int)m11->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+48,m11->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected2,expected2+9,m11->getNodalConnectivityIndex()->getConstPointer()));
   m11->decrRef();
   //
-  MEDCouplingUMesh *m12=static_cast<MEDCouplingUMesh *>(m1->deepCpy());
+  MEDCouplingUMesh *m12=static_cast<MEDCouplingUMesh *>(m1->deepCopy());
   m12->tessellate2D(0.5);
   CPPUNIT_ASSERT_EQUAL(41,m12->getNumberOfNodes());
   const int expected3[60]={5,0,3,25,26,1,5,3,4,27,28,2,1,26,25,5,5,29,30,3,0,5,6,31,32,4,3,30,29,5,5,5,0,7,33,34,5,6,5,34,33,7,8,35,36,5,0,1,37,38,7,5,1,2,39,40,8,7,38,37};
@@ -75,8 +75,8 @@ void MEDCouplingBasicsTest5::testUMeshTessellate2D1()
   const double expected5[82]={0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,0.479425538604203,0.8775825618903728,0.8414709848078964,0.54030230586814,0.7191383079063044,1.3163738428355591,1.2622064772118446,0.8104534588022099,-0.877582561890373,0.4794255386042027,-0.5403023058681399,0.8414709848078964,-1.3163738428355596,0.7191383079063038,-0.8104534588022098,1.2622064772118446,-0.4794255386042031,-0.8775825618903728,-0.8414709848078965,-0.5403023058681399,-0.7191383079063045,-1.3163738428355591,-1.2622064772118449,-0.8104534588022098,0.8775825618903729,-0.47942553860420295,0.54030230586814,-0.8414709848078964,1.3163738428355594,-0.7191383079063043,0.8104534588022099,-1.2622064772118446};
   for(int i=0;i<82;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected5[i],m12->getCoords()->getIJ(0,i),1e-12);
-  CPPUNIT_ASSERT_EQUAL(60,m12->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(9,m12->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(60,(int)m12->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(9,(int)m12->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected3,expected3+60,m12->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected4,expected4+9,m12->getNodalConnectivityIndex()->getConstPointer()));
   m12->decrRef();
@@ -84,6 +84,30 @@ void MEDCouplingBasicsTest5::testUMeshTessellate2D1()
   m1->decrRef();
 }
 
+void MEDCouplingBasicsTest5::testUMeshTessellate2DCurve1()
+{
+  // A quarter of circle:
+  double mcoords[6] = {0.4,0.0,   0.0,-0.4,   0.283,-0.283};
+  int mconnec[3] = {0,1,2};
+
+  MEDCouplingUMesh *m1 = MEDCouplingUMesh::New();
+  m1->setMeshDimension(1);
+  m1->allocateCells(1);
+  m1->insertNextCell(INTERP_KERNEL::NORM_SEG3, 3, mconnec);
+
+  DataArrayDouble *myCoords = DataArrayDouble::New();
+  myCoords->alloc(3,2);
+  std::copy(mcoords,mcoords+6,myCoords->getPointer());
+  m1->setCoords(myCoords);
+  myCoords->decrRef();
+
+  MEDCouplingUMesh *m2 = static_cast<MEDCouplingUMesh *>(m1->deepCopy());
+  m2->tessellate2D(0.1);
+  CPPUNIT_ASSERT_NO_THROW(m2->checkConsistency(0.0)); // eps param not used
+  m1->decrRef();
+  m2->decrRef();
+}
+
 /*!
  * idem MEDCouplingBasicsTest4::testIntersect2DMeshesTmp3 except that m1 and m2 are permuted on call to MEDCouplingUMesh::Intersect2DMeshes
  */
@@ -128,9 +152,9 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp4()
   m3->unPolyze();
   const int expected1[16]={0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7};
   const int expected2[16]={0,1,1,-1,2,3,3,-1,4,5,5,-1,6,7,7,-1};
 CPPUNIT_ASSERT_EQUAL(16,d1->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(16,d2->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(16,m3->getNumberOfCells());
CPPUNIT_ASSERT_EQUAL(16,(int)d1->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(16,(int)d2->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(16,(int)m3->getNumberOfCells());
   CPPUNIT_ASSERT_EQUAL(104,m3->getNumberOfNodes());
   CPPUNIT_ASSERT_EQUAL(2,m3->getSpaceDimension());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+16,d1->getConstPointer()));
@@ -138,8 +162,8 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp4()
   const int expected3[136]={6,16,15,18,44,45,46,8,18,2,1,16,47,48,49,50,8,17,1,2,40,51,52,53,54,8,40,5,4,17,55,56,57,58,6,18,15,20,59,60,61,8,20,7,6,18,62,63,64,65,8,41,6,7,21,66,67,68,69,8,21,8,9,41,70,71,72,73,6,20,15,22,74,75,76,8,22,11,7,20,77,78,79,80,8,21,7,11,42,81,82,83,84,8,42,10,8,21,85,86,87,88,6,22,15,16,89,90,91,8,16,1,13,22,92,93,94,95,8,43,13,1,17,96,97,98,99,8,17,4,14,43,100,101,102,103};
   const int expected4[17]={0,7,16,25,34,41,50,59,68,75,84,93,102,109,118,127,136};
   const double expected5[208]={0.,0.,1.1, 0.,1.1,1.,0.,1.,1.7,0.,1.7,1.,-1.1,1.,-1.1,0.,-1.7,0.,-1.7,1.,-1.7,-1.,-1.1,-1.,0.,-1.,1.1,-1.,1.7,-1.,0.,0.,1.,0.,1.5,0.,0.,1.,0.,1.5,-1.,0.,-1.5,0.,0.,-1.,0.,-1.5,0.5,0.,1.25,0.,0.7071067811865476,0.7071067811865476,1.0606601717798214,1.0606601717798214,0.,0.5,0.,1.25,-0.7071067811865476,0.7071067811865476,-1.0606601717798214,1.0606601717798214,-0.5,0.,-1.25,0.,-0.7071067811865476,-0.7071067811865476,-1.0606601717798214,-1.0606601717798214,0.,-0.5,0.,-1.25,0.7071067811865476,-0.7071067811865476,1.0606601717798214,-1.0606601717798214,1.1180339887498951,1.,-1.1180339887498951,1.,-1.1180339887498951,-1.,1.1180339887498951,-1.,0.5,0.,0.,0.5,0.7071067811865477,0.7071067811865476,0.55,1.,1.1,0.5,1.05,0.,0.7071067811865477,0.7071067811865475,1.3,0.,1.1,0.5,1.1090169943749475,1.,1.4012585384440737,0.535233134659635,1.4090169943749475,1.,1.7,0.5,1.6,0.,1.4012585384440737,0.535233134659635,0.,0.5,-0.5,0.,-0.7071067811865477,0.7071067811865476,-1.05,0.,-1.1,0.5,-0.55,1.,-0.7071067811865478,0.7071067811865475,-1.1090169943749475,1.,-1.1,0.5,-1.3,0.,-1.4012585384440737,0.5352331346596344,-1.6,0.,-1.7,0.5,-1.4090169943749475,1.,-1.4012585384440737,0.5352331346596344,-0.5,0.,0.,-0.5,-0.7071067811865475,-0.7071067811865477,-0.55,-1.,-1.1,-0.5,-1.05,0.,-0.7071067811865475,-0.7071067811865477,-1.3,0.,-1.1,-0.5,-1.1090169943749475,-1.,-1.4012585384440734,-0.5352331346596354,-1.4090169943749475,-1.,-1.7,-0.5,-1.6,0.,-1.4012585384440732,-0.5352331346596354,0.,-0.5,0.5,0.,0.7071067811865475,-0.7071067811865477,1.05,0.,1.1,-0.5,0.55,-1.,0.7071067811865475,-0.7071067811865477,1.1090169943749475,-1.,1.1,-0.5,1.3,0.,1.4012585384440737,-0.535233134659635,1.6,0.,1.7,-0.5,1.4090169943749475,-1.,1.4012585384440737,-0.535233134659635};
-  CPPUNIT_ASSERT_EQUAL(136,m3->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(17,m3->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(136,(int)m3->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(17,(int)m3->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected3,expected3+136,m3->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected4,expected4+17,m3->getNodalConnectivityIndex()->getConstPointer()));
   for(int i=0;i<208;i++)
@@ -159,13 +183,13 @@ void MEDCouplingBasicsTest5::testGetCellIdsCrossingPlane1()
   const double vec[3]={-0.07,1.,0.07};
   const double origin[3]={1.524,1.4552,1.74768};
   DataArrayInt *ids1=mesh3D->getCellIdsCrossingPlane(origin,vec,1e-10);
 CPPUNIT_ASSERT_EQUAL(9,ids1->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(9,(int)ids1->getNumberOfTuples());
   const int expected1[9]={1,3,4,7,9,10,13,15,16};
   CPPUNIT_ASSERT(std::equal(expected1,expected1+9,ids1->getConstPointer()));
   const double vec2[3]={0.,0.,1.};
   DataArrayInt *ids2=mesh3D->getCellIdsCrossingPlane(origin,vec2,1e-10);
   const int expected2[6]={6,7,8,9,10,11};
 CPPUNIT_ASSERT_EQUAL(6,ids2->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(6,(int)ids2->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+6,ids2->getConstPointer()));
   ids1->decrRef();
   ids2->decrRef();
@@ -190,10 +214,10 @@ void MEDCouplingBasicsTest5::testBuildSlice3D1()
   CPPUNIT_ASSERT_EQUAL(2,slice1->getMeshDimension());
   CPPUNIT_ASSERT_EQUAL(3,slice1->getSpaceDimension());
   CPPUNIT_ASSERT_EQUAL(57,slice1->getNumberOfNodes());
-  CPPUNIT_ASSERT_EQUAL(9,slice1->getNumberOfCells());
-  CPPUNIT_ASSERT_EQUAL(9,ids->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(47,slice1->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(10,slice1->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(9,(int)slice1->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(9,(int)ids->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(47,(int)slice1->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(10,(int)slice1->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+9,ids->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected2,expected2+47,slice1->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected3,expected3+10,slice1->getNodalConnectivityIndex()->getConstPointer()));
@@ -211,10 +235,10 @@ void MEDCouplingBasicsTest5::testBuildSlice3D1()
   CPPUNIT_ASSERT_EQUAL(2,slice1->getMeshDimension());
   CPPUNIT_ASSERT_EQUAL(3,slice1->getSpaceDimension());
   CPPUNIT_ASSERT_EQUAL(60,slice1->getNumberOfNodes());
-  CPPUNIT_ASSERT_EQUAL(9,slice1->getNumberOfCells());
-  CPPUNIT_ASSERT_EQUAL(9,ids->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(49,slice1->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(10,slice1->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(9,(int)slice1->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(9,(int)ids->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(49,(int)slice1->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(10,(int)slice1->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+9,ids->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected5,expected5+49,slice1->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected6,expected6+10,slice1->getNodalConnectivityIndex()->getConstPointer()));
@@ -233,10 +257,10 @@ void MEDCouplingBasicsTest5::testBuildSlice3D1()
   CPPUNIT_ASSERT_EQUAL(2,slice1->getMeshDimension());
   CPPUNIT_ASSERT_EQUAL(3,slice1->getSpaceDimension());
   CPPUNIT_ASSERT_EQUAL(45,slice1->getNumberOfNodes());
-  CPPUNIT_ASSERT_EQUAL(12,slice1->getNumberOfCells());
-  CPPUNIT_ASSERT_EQUAL(12,ids->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(68,slice1->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(13,slice1->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(12,(int)slice1->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(12,(int)ids->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(68,(int)slice1->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(13,(int)slice1->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected8,expected8+12,ids->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected9,expected9+68,slice1->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected10,expected10+13,slice1->getNodalConnectivityIndex()->getConstPointer()));
@@ -269,10 +293,10 @@ void MEDCouplingBasicsTest5::testBuildSlice3DSurf1()
   CPPUNIT_ASSERT_EQUAL(1,slice1->getMeshDimension());
   CPPUNIT_ASSERT_EQUAL(3,slice1->getSpaceDimension());
   CPPUNIT_ASSERT_EQUAL(57,slice1->getNumberOfNodes());
-  CPPUNIT_ASSERT_EQUAL(25,slice1->getNumberOfCells());
-  CPPUNIT_ASSERT_EQUAL(25,ids->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(75,slice1->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(26,slice1->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(25,(int)slice1->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(25,(int)ids->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(75,(int)slice1->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(26,(int)slice1->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+25,ids->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected2,expected2+47,slice1->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected3,expected3+26,slice1->getNodalConnectivityIndex()->getConstPointer()));
@@ -291,10 +315,10 @@ void MEDCouplingBasicsTest5::testBuildSlice3DSurf1()
   CPPUNIT_ASSERT_EQUAL(1,slice1->getMeshDimension());
   CPPUNIT_ASSERT_EQUAL(3,slice1->getSpaceDimension());
   CPPUNIT_ASSERT_EQUAL(45,slice1->getNumberOfNodes());
-  CPPUNIT_ASSERT_EQUAL(68,slice1->getNumberOfCells());
-  CPPUNIT_ASSERT_EQUAL(68,ids->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(204,slice1->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(69,slice1->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(68,(int)slice1->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(68,(int)ids->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(204,(int)slice1->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(69,(int)slice1->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected5,expected5+68,ids->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected6,expected6+171,slice1->getNodalConnectivity()->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected7,expected7+69,slice1->getNodalConnectivityIndex()->getConstPointer()));
@@ -323,22 +347,22 @@ void MEDCouplingBasicsTest5::testDataArrayDoubleAdvSetting1()
   //
   std::vector<std::pair<int,int> > p(3);
   p[0].first=0; p[0].second=3; p[1].first=3; p[1].second=5; p[2].first=5; p[2].second=7;
-  tmp=da->selectByTupleRanges(p);
+  tmp=dynamic_cast<DataArrayDouble *>(da->selectByTupleRanges(p));
   CPPUNIT_ASSERT(tmp->isEqual(*da,1e-14));
   tmp->decrRef();
   p[0].first=0; p[0].second=2; p[1].first=3; p[1].second=4; p[2].first=5; p[2].second=7;
-  tmp=da->selectByTupleRanges(p);
+  tmp=dynamic_cast<DataArrayDouble *>(da->selectByTupleRanges(p));
   const double expected1[10]={1.,11.,2.,12.,4.,14.,6.,16.,7.,17.};
 CPPUNIT_ASSERT_EQUAL(5,tmp->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(2,tmp->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(5,(int)tmp->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(2,(int)tmp->getNumberOfComponents());
   for(int i=0;i<10;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected1[i],tmp->getIJ(0,i),1e-14);
   tmp->decrRef();
   p[0].first=0; p[0].second=2; p[1].first=0; p[1].second=2; p[2].first=5; p[2].second=6;
-  tmp=da->selectByTupleRanges(p);
+  tmp=dynamic_cast<DataArrayDouble *>(da->selectByTupleRanges(p));
   const double expected2[10]={1.,11.,2.,12.,1.,11.,2.,12.,6.,16.};
 CPPUNIT_ASSERT_EQUAL(5,tmp->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(2,tmp->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(5,(int)tmp->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(2,(int)tmp->getNumberOfComponents());
   for(int i=0;i<10;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected2[i],tmp->getIJ(0,i),1e-14);
   tmp->decrRef();
@@ -351,18 +375,18 @@ void MEDCouplingBasicsTest5::testDataArrayDoubleAdvSetting1()
   da2->alloc(5,2);
   std::copy(data2,data2+10,da2->getPointer());
   //
-  DataArrayDouble *dac=da->deepCpy();
-  dac->setContigPartOfSelectedValues2(1,da2,2,4,1);
+  DataArrayDouble *dac=da->deepCopy();
+  dac->setContigPartOfSelectedValuesSlice(1,da2,2,4,1);
   const double expected3[14]={1.,11.,0.,30.,11.,41.,4.,14.,5.,15.,6.,16.,7.,17.};
   for(int i=0;i<14;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected3[i],dac->getIJ(0,i),1e-14);
   dac->decrRef();
   //
-  dac=da->deepCpy();
-  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues2(3,da2,0,5,1),INTERP_KERNEL::Exception);
-  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues2(0,da2,4,6,1),INTERP_KERNEL::Exception);
-  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues2(3,da2,5,0,1),INTERP_KERNEL::Exception);
-  dac->setContigPartOfSelectedValues2(3,da2,1,5,1);
+  dac=da->deepCopy();
+  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValuesSlice(3,da2,0,5,1),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValuesSlice(0,da2,4,6,1),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValuesSlice(3,da2,5,0,1),INTERP_KERNEL::Exception);
+  dac->setContigPartOfSelectedValuesSlice(3,da2,1,5,1);
   const double expected4[14]={1.,11.,2.,12.,3.,13.,9.,39.,0.,30.,11.,41.,12.,42.};
   for(int i=0;i<14;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected4[i],dac->getIJ(0,i),1e-14);
@@ -370,7 +394,7 @@ void MEDCouplingBasicsTest5::testDataArrayDoubleAdvSetting1()
   //
   DataArrayInt *ids=DataArrayInt::New();
   ids->alloc(3,1);
-  dac=da->deepCpy();
+  dac=da->deepCopy();
   ids->setIJ(0,0,2); ids->setIJ(1,0,0); ids->setIJ(2,0,4);
   dac->setContigPartOfSelectedValues(2,da2,ids);
   const double expected5[14]={1.,11.,2.,12.,0.,30.,8.,38.,12.,42.,6.,16.,7.,17.};
@@ -378,7 +402,7 @@ void MEDCouplingBasicsTest5::testDataArrayDoubleAdvSetting1()
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected5[i],dac->getIJ(0,i),1e-14);
   dac->decrRef();
   //
-  dac=da->deepCpy();
+  dac=da->deepCopy();
   ids->setIJ(0,0,2); ids->setIJ(1,0,5); ids->setIJ(2,0,4);
   CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues(1,da2,ids),INTERP_KERNEL::Exception);
   ids->setIJ(0,0,2); ids->setIJ(1,0,2); ids->setIJ(2,0,-1);
@@ -388,7 +412,7 @@ void MEDCouplingBasicsTest5::testDataArrayDoubleAdvSetting1()
   dac->decrRef();
   //
   ids->setIJ(0,0,2); ids->setIJ(1,0,2); ids->setIJ(2,0,1);
-  dac=da->deepCpy();
+  dac=da->deepCopy();
   dac->setContigPartOfSelectedValues(4,da2,ids);
   const double expected6[14]={1.,11.,2.,12.,3.,13.,4.,14.,0.,30.,0.,30.,9.,39.};
   for(int i=0;i<14;i++)
@@ -417,22 +441,22 @@ void MEDCouplingBasicsTest5::testDataArrayIntAdvSetting1()
   //
   std::vector<std::pair<int,int> > p(3);
   p[0].first=0; p[0].second=3; p[1].first=3; p[1].second=5; p[2].first=5; p[2].second=7;
-  tmp=da->selectByTupleRanges(p);
+  tmp=dynamic_cast<DataArrayInt *>(da->selectByTupleRanges(p));
   CPPUNIT_ASSERT(tmp->isEqual(*da));
   tmp->decrRef();
   p[0].first=0; p[0].second=2; p[1].first=3; p[1].second=4; p[2].first=5; p[2].second=7;
-  tmp=da->selectByTupleRanges(p);
+  tmp=dynamic_cast<DataArrayInt *>(da->selectByTupleRanges(p));
   const int expected1[10]={1,11,2,12,4,14,6,16,7,17};
 CPPUNIT_ASSERT_EQUAL(5,tmp->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(2,tmp->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(5,(int)tmp->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(2,(int)tmp->getNumberOfComponents());
   for(int i=0;i<10;i++)
     CPPUNIT_ASSERT_EQUAL(expected1[i],tmp->getIJ(0,i));
   tmp->decrRef();
   p[0].first=0; p[0].second=2; p[1].first=0; p[1].second=2; p[2].first=5; p[2].second=6;
-  tmp=da->selectByTupleRanges(p);
+  tmp=dynamic_cast<DataArrayInt *>(da->selectByTupleRanges(p));
   const int expected2[10]={1,11,2,12,1,11,2,12,6,16};
 CPPUNIT_ASSERT_EQUAL(5,tmp->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(2,tmp->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(5,(int)tmp->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(2,(int)tmp->getNumberOfComponents());
   for(int i=0;i<10;i++)
     CPPUNIT_ASSERT_EQUAL(expected2[i],tmp->getIJ(0,i));
   tmp->decrRef();
@@ -445,18 +469,18 @@ void MEDCouplingBasicsTest5::testDataArrayIntAdvSetting1()
   da2->alloc(5,2);
   std::copy(data2,data2+10,da2->getPointer());
   //
-  DataArrayInt *dac=da->deepCpy();
-  dac->setContigPartOfSelectedValues2(1,da2,2,4,1);
+  DataArrayInt *dac=da->deepCopy();
+  dac->setContigPartOfSelectedValuesSlice(1,da2,2,4,1);
   const int expected3[14]={1,11,0,30,11,41,4,14,5,15,6,16,7,17};
   for(int i=0;i<14;i++)
     CPPUNIT_ASSERT_EQUAL(expected3[i],dac->getIJ(0,i));
   dac->decrRef();
   //
-  dac=da->deepCpy();
-  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues2(3,da2,0,5,1),INTERP_KERNEL::Exception);
-  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues2(0,da2,4,6,1),INTERP_KERNEL::Exception);
-  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues2(3,da2,5,0,1),INTERP_KERNEL::Exception);
-  dac->setContigPartOfSelectedValues2(3,da2,1,5,1);
+  dac=da->deepCopy();
+  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValuesSlice(3,da2,0,5,1),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValuesSlice(0,da2,4,6,1),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValuesSlice(3,da2,5,0,1),INTERP_KERNEL::Exception);
+  dac->setContigPartOfSelectedValuesSlice(3,da2,1,5,1);
   const int expected4[14]={1,11,2,12,3,13,9,39,0,30,11,41,12,42};
   for(int i=0;i<14;i++)
     CPPUNIT_ASSERT_EQUAL(expected4[i],dac->getIJ(0,i));
@@ -464,7 +488,7 @@ void MEDCouplingBasicsTest5::testDataArrayIntAdvSetting1()
   //
   DataArrayInt *ids=DataArrayInt::New();
   ids->alloc(3,1);
-  dac=da->deepCpy();
+  dac=da->deepCopy();
   ids->setIJ(0,0,2); ids->setIJ(1,0,0); ids->setIJ(2,0,4);
   dac->setContigPartOfSelectedValues(2,da2,ids);
   const int expected5[14]={1,11,2,12,0,30,8,38,12,42,6,16,7,17};
@@ -472,7 +496,7 @@ void MEDCouplingBasicsTest5::testDataArrayIntAdvSetting1()
     CPPUNIT_ASSERT_EQUAL(expected5[i],dac->getIJ(0,i));
   dac->decrRef();
   //
-  dac=da->deepCpy();
+  dac=da->deepCopy();
   ids->setIJ(0,0,2); ids->setIJ(1,0,5); ids->setIJ(2,0,4);
   CPPUNIT_ASSERT_THROW(dac->setContigPartOfSelectedValues(1,da2,ids),INTERP_KERNEL::Exception);
   ids->setIJ(0,0,2); ids->setIJ(1,0,2); ids->setIJ(2,0,-1);
@@ -482,7 +506,7 @@ void MEDCouplingBasicsTest5::testDataArrayIntAdvSetting1()
   dac->decrRef();
   //
   ids->setIJ(0,0,2); ids->setIJ(1,0,2); ids->setIJ(2,0,1);
-  dac=da->deepCpy();
+  dac=da->deepCopy();
   dac->setContigPartOfSelectedValues(4,da2,ids);
   const int expected6[14]={1,11,2,12,3,13,4,14,0,30,0,30,9,39};
   for(int i=0;i<14;i++)
@@ -503,13 +527,13 @@ void MEDCouplingBasicsTest5::testBuildDescendingConnec2Of3DMesh1()
   DataArrayInt *revDescIndx=DataArrayInt::New();
   //
   MEDCouplingUMesh *mesh2=mesh->buildDescendingConnectivity2(desc,descIndx,revDesc,revDescIndx);
-  mesh2->checkCoherency();
+  mesh2->checkConsistencyLight();
   CPPUNIT_ASSERT_EQUAL(2,mesh2->getMeshDimension());
-  CPPUNIT_ASSERT_EQUAL(30,mesh2->getNumberOfCells());
-  CPPUNIT_ASSERT_EQUAL(31,revDescIndx->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(31,revDescIndx->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(13,descIndx->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(13,descIndx->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(48,desc->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(48,desc->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(48,revDesc->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(48,revDesc->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(30,(int)mesh2->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)31,revDescIndx->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(31,(int)revDescIndx->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)13,descIndx->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(13,(int)descIndx->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)48,desc->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(48,(int)desc->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)48,revDesc->getNbOfElems()); CPPUNIT_ASSERT_EQUAL(48,(int)revDesc->getNumberOfTuples());
   const int expected1[48]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,-10,15,-5,-13,16,17,-14,18,-4,19,-2,20,21,22,23,24,25,-11,26,-1,-12,-25,-22,27,28,-7,-20,-24,29,-16,-18,30,-8,-28};
   CPPUNIT_ASSERT(std::equal(expected1,expected1+48,desc->getConstPointer()));
   const int expected2[13]={0,4,8,12,16,20,24,28,32,36,40,44,48};
@@ -554,7 +578,7 @@ void MEDCouplingBasicsTest5::testAre2DCellsNotCorrectlyOriented1()
     {
       vec2[0]=3.*cos(M_PI/9.*i);
       vec2[1]=3.*sin(M_PI/9.*i);
-      MEDCouplingUMesh *m1Cpy=static_cast<MEDCouplingUMesh *>(m1->deepCpy());
+      MEDCouplingUMesh *m1Cpy=static_cast<MEDCouplingUMesh *>(m1->deepCopy());
       m1Cpy->translate(vec2);
       std::vector<int> res;
       CPPUNIT_ASSERT_THROW(m1Cpy->are2DCellsNotCorrectlyOriented(vec1,false,res),INTERP_KERNEL::Exception);
@@ -577,7 +601,7 @@ void MEDCouplingBasicsTest5::testDataArrayAbs1()
   const double expected1[12]={2.,3.,5.,6.,7.,8.,9.,10.,11.,12.,13.,15.};
   d1->alloc(6,2);
   std::copy(val1,val1+12,d1->getPointer());
-  DataArrayInt *d2=d1->convertToIntArr();
+  MCAuto<DataArrayInt> d2=d1->convertToIntArr();
   //
   d1->abs();
   for(int i=0;i<12;i++)
@@ -588,7 +612,6 @@ void MEDCouplingBasicsTest5::testDataArrayAbs1()
   for(int i=0;i<12;i++)
     CPPUNIT_ASSERT_EQUAL(expected2[i],d2->getIJ(0,i));
   //
-  d2->decrRef();
   d1->decrRef();
 }
 
@@ -619,8 +642,8 @@ void MEDCouplingBasicsTest5::testGetValueOn3()
   f->setArray(array);
   array->decrRef();
   DataArrayDouble *arr1=f->getValueOnMulti(v2,5);
 CPPUNIT_ASSERT_EQUAL(5,arr1->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(3,arr1->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(5,(int)arr1->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(3,(int)arr1->getNumberOfComponents());
   const double expected1[15]={5.7,57.,570.,6.5,65.,650.,5.,50.,500.,8.,80.,800.,7.,70.,700.};
   for(int i=0;i<15;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected1[i],arr1->getIJ(0,i),1e-14);
@@ -643,7 +666,7 @@ void MEDCouplingBasicsTest5::testGetNodeIdsOfCell2()
   coordsZ->useArray(arrZ,false, CPP_DEALLOC,3,1);  
   // test in 1D
   m1c->setCoordsAt(0,coordsX);
-  CPPUNIT_ASSERT_EQUAL(4,m1c->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(4,(int)m1c->getNumberOfCells());
   const int expected1[4][2]={{0,1},{1,2},{2,3},{3,4}};
   for(int i=0;i<4;i++)
     {
@@ -654,7 +677,7 @@ void MEDCouplingBasicsTest5::testGetNodeIdsOfCell2()
     }
   // test in 2D
   m1c->setCoordsAt(1,coordsY);
-  CPPUNIT_ASSERT_EQUAL(12,m1c->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(12,(int)m1c->getNumberOfCells());
   const int expected2[12][4]={{0,1,6,5},{1,2,7,6},{2,3,8,7},{3,4,9,8},{4,5,11,10},{5,6,12,11},{6,7,13,12},{7,8,14,13},{8,9,16,15},{9,10,17,16},{10,11,18,17},{11,12,19,18}};
   for(int i=0;i<12;i++)
     {
@@ -665,7 +688,7 @@ void MEDCouplingBasicsTest5::testGetNodeIdsOfCell2()
     }
   // test in 3D
   m1c->setCoordsAt(2,coordsZ);
-  CPPUNIT_ASSERT_EQUAL(24,m1c->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(24,(int)m1c->getNumberOfCells());
   const int expected3[24][8]={{0,1,6,5,20,21,26,25},{1,2,7,6,21,22,27,26},{2,3,8,7,22,23,28,27},{3,4,9,8,23,24,29,28},{4,5,11,10,24,25,31,30},{5,6,12,11,25,26,32,31},{6,7,13,12,26,27,33,32},{7,8,14,13,27,28,34,33},{8,9,16,15,28,29,36,35},{9,10,17,16,29,30,37,36},{10,11,18,17,30,31,38,37},{11,12,19,18,31,32,39,38},{20,21,26,25,40,41,46,45},{21,22,27,26,41,42,47,46},{22,23,28,27,42,43,48,47},{23,24,29,28,43,44,49,48},{24,25,31,30,44,45,51,50},{25,26,32,31,45,46,52,51},{26,27,33,32,46,47,53,52},{27,28,34,33,47,48,54,53},{28,29,36,35,48,49,56,55},{29,30,37,36,49,50,57,56},{30,31,38,37,50,51,58,57},{31,32,39,38,51,52,59,58}};
   for(int i=0;i<12;i++)
     {
@@ -698,7 +721,7 @@ void MEDCouplingBasicsTest5::testRenumberNodesInConn1()
   std::copy(mesh2DCoords,mesh2DCoords+27,myCoords->getPointer());
   mesh2D->setCoords(myCoords);
   myCoords->decrRef();
-  mesh2D->checkCoherency();
+  mesh2D->checkConsistencyLight();
   //
   double mesh3DCoords[24]={-0.3,-0.3,0., -0.3,0.2,0., 0.2,0.2,0., 0.2,-0.3,0., -0.3,-0.3,1., -0.3,0.2,1., 0.2,0.2,1., 0.2,-0.3,1. };
   int mesh3DConn[8]={0,1,2,3,4,5,6,7};
@@ -711,12 +734,12 @@ void MEDCouplingBasicsTest5::testRenumberNodesInConn1()
   std::copy(mesh3DCoords,mesh3DCoords+24,myCoords3D->getPointer());
   mesh3D->setCoords(myCoords3D);
   myCoords3D->decrRef();
-  mesh3D->checkCoherency();
+  mesh3D->checkConsistencyLight();
   //
-  MEDCouplingUMesh *mesh3D_2=dynamic_cast<MEDCouplingUMesh *>(mesh3D->deepCpy());
-  MEDCouplingUMesh *mesh2D_2=dynamic_cast<MEDCouplingUMesh *>(mesh2D->deepCpy());
-  MEDCouplingUMesh *mesh3D_4=dynamic_cast<MEDCouplingUMesh *>(mesh3D->deepCpy());
-  MEDCouplingUMesh *mesh2D_4=dynamic_cast<MEDCouplingUMesh *>(mesh2D->deepCpy());
+  MEDCouplingUMesh *mesh3D_2=dynamic_cast<MEDCouplingUMesh *>(mesh3D->deepCopy());
+  MEDCouplingUMesh *mesh2D_2=dynamic_cast<MEDCouplingUMesh *>(mesh2D->deepCopy());
+  MEDCouplingUMesh *mesh3D_4=dynamic_cast<MEDCouplingUMesh *>(mesh3D->deepCopy());
+  MEDCouplingUMesh *mesh2D_4=dynamic_cast<MEDCouplingUMesh *>(mesh2D->deepCopy());
   DataArrayInt *renumNodes=DataArrayInt::New();
   int oldNbOf3DNodes=mesh3D->getNumberOfNodes();
   renumNodes->alloc(mesh2D->getNumberOfNodes(),1);
@@ -725,7 +748,7 @@ void MEDCouplingBasicsTest5::testRenumberNodesInConn1()
   mesh3D->setCoords(coo);
   mesh2D->setCoords(coo);
   coo->decrRef();
-  MEDCouplingUMesh *mesh2D_3=dynamic_cast<MEDCouplingUMesh *>(mesh2D->deepCpy());
+  MEDCouplingUMesh *mesh2D_3=dynamic_cast<MEDCouplingUMesh *>(mesh2D->deepCopy());
   mesh2D_3->shiftNodeNumbersInConn(oldNbOf3DNodes);
   mesh2D->renumberNodesInConn(renumNodes->getConstPointer());
   renumNodes->decrRef();
@@ -735,8 +758,8 @@ void MEDCouplingBasicsTest5::testRenumberNodesInConn1()
   DataArrayInt *da1,*da2;
   mesh3D->checkGeoEquivalWith(mesh3D_2,10,1e-12,da1,da2);
   CPPUNIT_ASSERT(da1==0);
 CPPUNIT_ASSERT_EQUAL(8,da2->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,da2->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(8,(int)da2->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)da2->getNumberOfComponents());
   const int expected1[8]={8,11,12,9,4,5,6,7};
   for(int i=0;i<8;i++)
     CPPUNIT_ASSERT_EQUAL(expected1[i],da2->getIJ(i,0));
@@ -744,26 +767,26 @@ void MEDCouplingBasicsTest5::testRenumberNodesInConn1()
   //
   mesh2D->checkGeoEquivalWith(mesh2D_2,10,1e-12,da1,da2);
   CPPUNIT_ASSERT(da1==0);
 CPPUNIT_ASSERT_EQUAL(9,da2->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,da2->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(9,(int)da2->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)da2->getNumberOfComponents());
   for(int i=0;i<9;i++)
     CPPUNIT_ASSERT_EQUAL(8+i,da2->getIJ(i,0));
   da2->decrRef();
   //
   const double vect[3]={1.,0.,0.};
-  MEDCouplingUMesh *mesh2D_5=dynamic_cast<MEDCouplingUMesh *>(mesh2D_4->deepCpy());
+  MEDCouplingUMesh *mesh2D_5=dynamic_cast<MEDCouplingUMesh *>(mesh2D_4->deepCopy());
   mesh2D_5->translate(vect);
   std::vector<MEDCouplingUMesh *> meshes(3);
   meshes[0]=mesh3D_4; meshes[1]=mesh2D_4; meshes[2]=mesh2D_5;
   MEDCouplingUMesh::PutUMeshesOnSameAggregatedCoords(meshes);
   CPPUNIT_ASSERT(mesh3D_4->getCoords()==mesh2D_4->getCoords());
   CPPUNIT_ASSERT(mesh2D_4->getCoords()==mesh2D_5->getCoords());
-  mesh3D_4->checkCoherency(); mesh2D_4->checkCoherency(); mesh2D_5->checkCoherency();
+  mesh3D_4->checkConsistencyLight(); mesh2D_4->checkConsistencyLight(); mesh2D_5->checkConsistencyLight();
   CPPUNIT_ASSERT_EQUAL(26,mesh3D_4->getNumberOfNodes());
   CPPUNIT_ASSERT_EQUAL(3,mesh3D_4->getSpaceDimension());
-  CPPUNIT_ASSERT_EQUAL(9,mesh3D_4->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(23,mesh2D_4->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(23,mesh2D_5->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(9,(int)mesh3D_4->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(23,(int)mesh2D_4->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(23,(int)mesh2D_5->getNodalConnectivity()->getNumberOfTuples());
   const int expected2[9]={18,0,1,2,3,4,5,6,7};
   const int expected3[23]={3,9,12,10, 3,12,13,10, 4,8,11,12,9, 4,14,15,12,11, 4,15,16,13,12};
   const int expected4[23]={3,18,21,19, 3,21,22,19, 4,17,20,21,18, 4,23,24,21,20, 4,24,25,22,21};
@@ -775,14 +798,14 @@ void MEDCouplingBasicsTest5::testRenumberNodesInConn1()
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected5[i],mesh3D_4->getCoords()->getIJ(0,i),1e-12);
   //
   MEDCouplingUMesh::MergeNodesOnUMeshesSharingSameCoords(meshes,1e-12);
-  mesh3D_4->checkCoherency(); mesh2D_4->checkCoherency(); mesh2D_5->checkCoherency();
+  mesh3D_4->checkConsistencyLight(); mesh2D_4->checkConsistencyLight(); mesh2D_5->checkConsistencyLight();
   CPPUNIT_ASSERT(mesh3D_4->getCoords()==mesh2D_4->getCoords());
   CPPUNIT_ASSERT(mesh2D_4->getCoords()==mesh2D_5->getCoords());
   CPPUNIT_ASSERT_EQUAL(19,mesh3D_4->getNumberOfNodes());
   CPPUNIT_ASSERT_EQUAL(3,mesh3D_4->getSpaceDimension());
-  CPPUNIT_ASSERT_EQUAL(9,mesh3D_4->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(23,mesh2D_4->getNodalConnectivity()->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(23,mesh2D_5->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(9,(int)mesh3D_4->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(23,(int)mesh2D_4->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(23,(int)mesh2D_5->getNodalConnectivity()->getNumberOfTuples());
   const int expected6[9]={18,0,1,2,3,4,5,6,7};
   const int expected7[23]={3,3,2,8, 3,2,9,8, 4,0,1,2,3, 4,10,11,2,1, 4,11,12,9,2};
   const int expected8[23]={3,13,15,14, 3,15,16,14, 4,8,9,15,13, 4,12,17,15,9, 4,17,18,16,15};
@@ -810,8 +833,8 @@ void MEDCouplingBasicsTest5::testComputeNeighborsOfCells1()
   MEDCouplingUMesh *m=build2DTargetMesh_1();
   DataArrayInt *d1=0,*d2=0;
   m->computeNeighborsOfCells(d1,d2);
 CPPUNIT_ASSERT_EQUAL(6,d2->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(10,d1->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(6,(int)d2->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(10,(int)d1->getNumberOfTuples());
   const int expected1[6]={0,2,4,6,8,10};
   const int expected2[10]={3,1,0,2,4,1,4,0,2,3};
   CPPUNIT_ASSERT(std::equal(expected1,expected1+6,d2->getConstPointer()));
@@ -834,7 +857,7 @@ void MEDCouplingBasicsTest5::testCheckButterflyCellsBug1()
   std::copy(mesh2DCoords,mesh2DCoords+10,myCoords->getPointer());
   mesh2D->setCoords(myCoords);
   myCoords->decrRef();
-  mesh2D->checkCoherency();
+  mesh2D->checkConsistencyLight();
   //
   std::vector<int> v;
   mesh2D->checkButterflyCells(v);
@@ -847,58 +870,58 @@ void MEDCouplingBasicsTest5::testDataArrayIntRange1()
 {
   DataArrayInt *d=DataArrayInt::Range(2,17,7);
   const int expected1[3]={2,9,16};
 CPPUNIT_ASSERT_EQUAL(3,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+3,d->getConstPointer()));
   d->decrRef();
   //
   d=DataArrayInt::Range(2,23,7);
 CPPUNIT_ASSERT_EQUAL(3,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+3,d->getConstPointer()));
   d->decrRef();
   //
   d=DataArrayInt::Range(2,24,7);
   const int expected2[4]={2,9,16,23};
 CPPUNIT_ASSERT_EQUAL(4,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(4,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+4,d->getConstPointer()));
   d->decrRef();
   //
   d=DataArrayInt::Range(24,2,-7);
   const int expected3[4]={24,17,10,3};
 CPPUNIT_ASSERT_EQUAL(4,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(4,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected3,expected3+4,d->getConstPointer()));
   d->decrRef();
   //
   d=DataArrayInt::Range(23,2,-7);
   const int expected4[3]={23,16,9};
 CPPUNIT_ASSERT_EQUAL(3,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected4,expected4+3,d->getConstPointer()));
   d->decrRef();
   //
   d=DataArrayInt::Range(23,22,-7);
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT_EQUAL(23,d->getIJ(0,0));
   d->decrRef();
   //
   d=DataArrayInt::Range(22,23,7);
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   CPPUNIT_ASSERT_EQUAL(22,d->getIJ(0,0));
   d->decrRef();
   //
   d=DataArrayInt::Range(22,22,7);
 CPPUNIT_ASSERT_EQUAL(0,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(0,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   d->decrRef();
   //
   d=DataArrayInt::Range(22,22,-7);
 CPPUNIT_ASSERT_EQUAL(0,d->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,d->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(0,(int)d->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)d->getNumberOfComponents());
   d->decrRef();
   //
   CPPUNIT_ASSERT_THROW(DataArrayInt::Range(22,23,-7),INTERP_KERNEL::Exception);
@@ -963,20 +986,20 @@ void MEDCouplingBasicsTest5::testZipConnectivityPol1()
   CPPUNIT_ASSERT(m2);
   // no permutation policy 0
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,0,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells1,cells1+3,arr->getConstPointer()));
   arr->decrRef();
   // no permutation policy 1
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,1,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells1,cells1+3,arr->getConstPointer()));
   arr->decrRef();
   // no permutation policy 2
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,2,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells1,cells1+3,arr->getConstPointer()));
   arr->decrRef();
   // some modification into m2
@@ -985,20 +1008,20 @@ void MEDCouplingBasicsTest5::testZipConnectivityPol1()
   //policy 0 fails because cell0 in m2 has same orientation be not same connectivity
   const int expected1[3]={5,3,4};
   CPPUNIT_ASSERT(!m1->areCellsIncludedIn(m2,0,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+3,arr->getConstPointer()));
   arr->decrRef();
   //policy 1 succeeds because cell0 in m2 has not exactly the same conn
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,1,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells1,cells1+3,arr->getConstPointer()));
   arr->decrRef();
   //policy 2 succeeds because cell0 in m2 has same nodes in connectivity
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,2,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells1,cells1+3,arr->getConstPointer()));
   arr->decrRef();
   //some new modification into m2
@@ -1006,20 +1029,20 @@ void MEDCouplingBasicsTest5::testZipConnectivityPol1()
   std::copy(modif2,modif2+3,m2->getNodalConnectivity()->getPointer()+1);
   //policy 0 fails because cell0 in m2 has not exactly the same conn
   CPPUNIT_ASSERT(!m1->areCellsIncludedIn(m2,0,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+3,arr->getConstPointer()));
   arr->decrRef();
   //policy 1 fails too because cell0 in m2 has not same orientation
   CPPUNIT_ASSERT(!m1->areCellsIncludedIn(m2,1,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+3,arr->getConstPointer()));
   arr->decrRef();
   //policy 2 succeeds because cell0 in m2 has same nodes in connectivity
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,2,arr));
 CPPUNIT_ASSERT_EQUAL(3,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells1,cells1+3,arr->getConstPointer()));
   arr->decrRef();
   m1->decrRef();
@@ -1033,20 +1056,20 @@ void MEDCouplingBasicsTest5::testZipConnectivityPol1()
   arr=0;
   // no permutation policy 0
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,0,arr));
 CPPUNIT_ASSERT_EQUAL(2,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells2,cells2+2,arr->getConstPointer()));
   arr->decrRef();
   // no permutation policy 1
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,1,arr));
 CPPUNIT_ASSERT_EQUAL(2,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells2,cells2+2,arr->getConstPointer()));
   arr->decrRef();
   // no permutation policy 2
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,2,arr));
 CPPUNIT_ASSERT_EQUAL(2,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells2,cells2+2,arr->getConstPointer()));
   arr->decrRef();
   // some modification into m2
@@ -1055,20 +1078,20 @@ void MEDCouplingBasicsTest5::testZipConnectivityPol1()
   //policy 0 fails because cell0 in m2 has not exactly the same conn
   const int expected2[2]={4,2};
   CPPUNIT_ASSERT(!m1->areCellsIncludedIn(m2,0,arr));
 CPPUNIT_ASSERT_EQUAL(2,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+2,arr->getConstPointer()));
   arr->decrRef();
   //policy 1 fails too because cell0 in m2 has not same orientation
   CPPUNIT_ASSERT(!m1->areCellsIncludedIn(m2,1,arr));
 CPPUNIT_ASSERT_EQUAL(2,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+2,arr->getConstPointer()));
   arr->decrRef();
   //policy 2 succeeds because cell0 in m2 has same nodes in connectivity
   CPPUNIT_ASSERT(m1->areCellsIncludedIn(m2,2,arr));
 CPPUNIT_ASSERT_EQUAL(2,arr->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)arr->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(cells2,cells2+2,arr->getConstPointer()));
   arr->decrRef();
   m1->decrRef();
@@ -1091,10 +1114,10 @@ void MEDCouplingBasicsTest5::testConvexEnvelop2D1()
   std::copy(coords,coords+662,coordsDa->getPointer());
   m->setCoords(coordsDa);
   coordsDa->decrRef();
-  m->checkCoherency();
+  m->checkConsistencyLight();
   //
   DataArrayInt *da=m->convexEnvelop2D();
-  m->checkCoherency();
+  m->checkConsistencyLight();
   CPPUNIT_ASSERT(coordsDa==m->getCoords());
   DataArrayInt *daC=da->buildComplement(331);
   da->decrRef();
@@ -1114,9 +1137,8 @@ void MEDCouplingBasicsTest5::testConvexEnvelop2D1()
   vals->substractEqual(ref2);
   ref2->decrRef();
   vals->abs();
-  DataArrayInt *theTest=vals->getIdsInRange(-1.,1e-7);
-  CPPUNIT_ASSERT(theTest->isIdentity());
-  CPPUNIT_ASSERT_EQUAL(331,theTest->getNumberOfTuples());
+  DataArrayInt *theTest=vals->findIdsInRange(-1.,1e-7);
+  CPPUNIT_ASSERT(theTest->isIota(331));
   theTest->decrRef();
   valsF->decrRef();
   //
@@ -1134,17 +1156,17 @@ void MEDCouplingBasicsTest5::testDataArraySort1()
   CPPUNIT_ASSERT_THROW(arr->sort(false),INTERP_KERNEL::Exception);//no one component
   arr->rearrange(1);
   std::copy(values,values+6,arr->getPointer());
-  DataArrayInt *arr1=arr->deepCpy();
-  DataArrayInt *arr2=arr->deepCpy();
+  DataArrayInt *arr1=arr->deepCopy();
+  DataArrayInt *arr2=arr->deepCopy();
   arr1->sort(true);
   const int expected1[6]={1,2,4,5,6,7};
 CPPUNIT_ASSERT_EQUAL(6,arr1->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr1->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(6,(int)arr1->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr1->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+6,arr1->begin()));
   arr2->sort(false);
   const int expected2[6]={7,6,5,4,2,1};
 CPPUNIT_ASSERT_EQUAL(6,arr2->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,arr2->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(6,(int)arr2->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)arr2->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+6,arr2->begin()));
   arr1->decrRef();
   arr2->decrRef();
@@ -1159,18 +1181,18 @@ void MEDCouplingBasicsTest5::testDataArraySort1()
   CPPUNIT_ASSERT_THROW(ard->sort(false),INTERP_KERNEL::Exception);//no one component
   ard->rearrange(1);
   std::copy(valuesD,valuesD+6,ard->getPointer());
-  DataArrayDouble *ard1=ard->deepCpy();
-  DataArrayDouble *ard2=ard->deepCpy();
+  DataArrayDouble *ard1=ard->deepCopy();
+  DataArrayDouble *ard2=ard->deepCopy();
   ard1->sort(true);
   const double expected3[6]={1.,2.,4.,5.,6.,7.};
-  CPPUNIT_ASSERT_EQUAL(6,ard1->getNumberOfTuples());
-  CPPUNIT_ASSERT_EQUAL(1,ard1->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(6,(int)ard1->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(1,(int)ard1->getNumberOfComponents());
   for(int i=0;i<6;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected3[i],ard1->getIJ(i,0),1e-12);
   ard2->sort(false);
   const double expected4[6]={7.,6.,5.,4.,2.,1.};
 CPPUNIT_ASSERT_EQUAL(6,ard2->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,ard2->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(6,(int)ard2->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)ard2->getNumberOfComponents());
   for(int i=0;i<6;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(expected4[i],ard2->getIJ(i,0),1e-12);
   ard1->decrRef();
@@ -1195,12 +1217,12 @@ void MEDCouplingBasicsTest5::testPartitionBySpreadZone1()
   const int expected0[3]={0,1,7};
   const int expected1[5]={2,4,5,6,9};
   const int expected2[2]={3,8};
 CPPUNIT_ASSERT_EQUAL(3,v2[0]->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,v2[0]->getNumberOfComponents());
 CPPUNIT_ASSERT_EQUAL(5,v2[1]->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,v2[1]->getNumberOfComponents());
 CPPUNIT_ASSERT_EQUAL(2,v2[2]->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,v2[2]->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)v2[0]->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)v2[0]->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(5,(int)v2[1]->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)v2[1]->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)v2[2]->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)v2[2]->getNumberOfComponents());
   //
   CPPUNIT_ASSERT(std::equal(expected0,expected0+3,v2[0]->getConstPointer()));
   CPPUNIT_ASSERT(std::equal(expected1,expected1+5,v2[1]->getConstPointer()));
@@ -1210,13 +1232,13 @@ void MEDCouplingBasicsTest5::testPartitionBySpreadZone1()
   v2[2]->decrRef();
   //
   MEDCouplingUMesh *m5=m4->buildSpreadZonesWithPoly();
-  CPPUNIT_ASSERT_EQUAL(3,m5->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(3,(int)m5->getNumberOfCells());
   CPPUNIT_ASSERT(m5->getCoords()==m4->getCoords());
   const int expected3[23]={5,15,16,17,14,11,13,12,5,2,1,0,3,6,7,8,5,5,18,21,22,20,19};
   const int expected4[4]={0,8,17,23};
-  CPPUNIT_ASSERT_EQUAL(23,m5->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(23,(int)m5->getNodalConnectivity()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected3,expected3+23,m5->getNodalConnectivity()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(4,m5->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(4,(int)m5->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected4,expected4+4,m5->getNodalConnectivityIndex()->getConstPointer()));
   //
   m->decrRef();
@@ -1232,20 +1254,20 @@ void MEDCouplingBasicsTest5::testGiveCellsWithType1()
   const int expected1[3]={0,3,4};
   MEDCouplingUMesh *m=build2DTargetMesh_1();
   DataArrayInt *da=m->giveCellsWithType(INTERP_KERNEL::NORM_TRI3);
 CPPUNIT_ASSERT_EQUAL(2,da->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,da->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(2,(int)da->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)da->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected0,expected0+2,da->getConstPointer()));
   da->decrRef();
   //
   da=m->giveCellsWithType(INTERP_KERNEL::NORM_QUAD4);
 CPPUNIT_ASSERT_EQUAL(3,da->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,da->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(3,(int)da->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)da->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+3,da->getConstPointer()));
   da->decrRef();
   //
   da=m->giveCellsWithType(INTERP_KERNEL::NORM_TRI6);
 CPPUNIT_ASSERT_EQUAL(0,da->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,da->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(0,(int)da->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)da->getNumberOfComponents());
   da->decrRef();
   //
   CPPUNIT_ASSERT_THROW(m->giveCellsWithType(INTERP_KERNEL::NORM_SEG2),INTERP_KERNEL::Exception);
@@ -1270,7 +1292,7 @@ void MEDCouplingBasicsTest5::testBuildSlice3D2()
   DataArrayDouble *arr=DataArrayDouble::New(); arr->alloc(mesh3D->getNumberOfCells(),2);
   arr->rearrange(1); arr->iota(2.); arr->rearrange(2);
   f->setArray(arr);
-  f->checkCoherency();
+  f->checkConsistencyLight();
   const int exp1[9]={1,3,4,7,9,10,13,15,16};
   DataArrayInt *expected1=DataArrayInt::New(); expected1->alloc(9,1); std::copy(exp1,exp1+9,expected1->getPointer());
   CPPUNIT_ASSERT(expected1->isEqual(*ids));
@@ -1305,9 +1327,9 @@ void MEDCouplingBasicsTest5::testComputeTupleIdsToSelectFromCellIds1()
   //
   const int subPart1[3]={1,5,9};
   MEDCouplingFieldDouble *f2=f->buildSubPart(subPart1,subPart1+3);
-  f2->checkCoherency();
+  f2->checkConsistencyLight();
   DataArrayInt *cI=m->computeNbOfNodesPerCell();
-  cI->computeOffsets2();
+  cI->computeOffsetsFull();
   const int sel1[3]={1,5,9};
   DataArrayInt *sel=DataArrayInt::New(); sel->useArray(sel1,false,CPP_DEALLOC,3,1);
   DataArrayInt *res=sel->buildExplicitArrByRanges(cI);
@@ -1339,32 +1361,32 @@ void MEDCouplingBasicsTest5::testComputeSkin1()
   cmesh->decrRef(); arrX->decrRef(); arrY->decrRef();
   //
   MEDCouplingUMesh *skin=umesh->computeSkin();
-  CPPUNIT_ASSERT_EQUAL(18,skin->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(18,(int)skin->getNumberOfCells());
   CPPUNIT_ASSERT_EQUAL(1,skin->getMeshDimension());
   CPPUNIT_ASSERT(skin->getCoords()==umesh->getCoords());
   const int expected1[19]={0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54};
   const int expected2[54]={1,1,0,1,0,5,1,2,1,1,3,2,1,4,3,1,9,4,1,5,10,1,14,9,1,10,15,1,19,14,1,15,20,1,24,19,1,20,25,1,25,26,1,26,27,1,27,28,1,28,29,1,29,24};
-  CPPUNIT_ASSERT_EQUAL(19,skin->getNodalConnectivityIndex()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)19,skin->getNodalConnectivityIndex()->getNbOfElems());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+19,skin->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(54,skin->getNodalConnectivity()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)54,skin->getNodalConnectivity()->getNbOfElems());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+54,skin->getNodalConnectivity()->getConstPointer()));
   DataArrayInt *ids=skin->computeFetchedNodeIds();
   const int expected3[18]={0,1,2,3,4,5,9,10,14,15,19,20,24,25,26,27,28,29};
-  CPPUNIT_ASSERT_EQUAL(18,ids->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)18,ids->getNbOfElems());
   CPPUNIT_ASSERT(std::equal(expected3,expected3+18,ids->getConstPointer()));
   MEDCouplingUMesh *part=dynamic_cast<MEDCouplingUMesh *>(umesh->buildFacePartOfMySelfNode(ids->begin(),ids->end(),true));
-  part->setName(skin->getName());
+  part->setName(skin->getName().c_str());
   CPPUNIT_ASSERT(part->isEqual(skin,1e-12));
-  MEDCouplingUMesh *part2=dynamic_cast<MEDCouplingUMesh *>(part->buildPartOfMySelf2(1,18,2,true));
+  MEDCouplingUMesh *part2=dynamic_cast<MEDCouplingUMesh *>(part->buildPartOfMySelfSlice(1,18,2,true));
   DataArrayInt *ids2=DataArrayInt::Range(0,18,2);
   part->setPartOfMySelf(ids2->begin(),ids2->end(),*part2);
   ids2->decrRef();
   CPPUNIT_ASSERT(!part->isEqual(skin,1e-12));
   DataArrayInt *trad=part->zipConnectivityTraducer(0);
-  CPPUNIT_ASSERT_EQUAL(9,part->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(9,(int)part->getNumberOfCells());
   const int expected4[18]={0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8};
   CPPUNIT_ASSERT(std::equal(expected4,expected4+18,trad->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(18,trad->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)18,trad->getNbOfElems());
   trad->decrRef();
   part->decrRef();
   part2->decrRef();
@@ -1379,7 +1401,7 @@ void MEDCouplingBasicsTest5::testUMeshSetPartOfMySelf2()
   // resize with explicit ids list
   MEDCouplingUMesh *m=build2DTargetMesh_1();
   std::set<INTERP_KERNEL::NormalizedCellType> s; s.insert(INTERP_KERNEL::NORM_TRI3); s.insert(INTERP_KERNEL::NORM_QUAD4);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   const int ids1[3]={0,3,4};
   MEDCouplingUMesh *part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelf(ids1,ids1+3,true));
   part->simplexize(0)->decrRef();
@@ -1388,12 +1410,12 @@ void MEDCouplingBasicsTest5::testUMeshSetPartOfMySelf2()
   m->setPartOfMySelf(ids1,ids1+3,*part2);
   const int expected1[20]={3,0,4,1,3,1,4,2,3,4,5,2,3,6,7,4,3,7,5,4};
   CPPUNIT_ASSERT(std::equal(expected1,expected1+20,m->getNodalConnectivity()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(20,m->getNodalConnectivity()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)20,m->getNodalConnectivity()->getNbOfElems());
   const int expected2[6]={0,4,8,12,16,20};
   CPPUNIT_ASSERT(std::equal(expected2,expected2+6,m->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(6,m->getNodalConnectivityIndex()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)6,m->getNodalConnectivityIndex()->getNbOfElems());
   s.clear(); s.insert(INTERP_KERNEL::NORM_TRI3);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   m->decrRef(); part->decrRef(); part2->decrRef();
   // no resize with explicit ids list
   m=build2DTargetMesh_1();
@@ -1402,53 +1424,53 @@ void MEDCouplingBasicsTest5::testUMeshSetPartOfMySelf2()
   m->setPartOfMySelf(ids1+1,ids1+3,*part);
   const int expected3[23]={4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3};
   CPPUNIT_ASSERT(std::equal(expected3,expected3+23,m->getNodalConnectivity()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(23,m->getNodalConnectivity()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)23,m->getNodalConnectivity()->getNbOfElems());
   const int expected4[6]={0,5,9,13,18,23};
   CPPUNIT_ASSERT(std::equal(expected4,expected4+6,m->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(6,m->getNodalConnectivityIndex()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)6,m->getNodalConnectivityIndex()->getNbOfElems());
   s.clear(); s.insert(INTERP_KERNEL::NORM_TRI3); s.insert(INTERP_KERNEL::NORM_QUAD4); s.insert(INTERP_KERNEL::NORM_POLYGON);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   m->decrRef(); part->decrRef();
   // resize with range ids
   m=build2DTargetMesh_1();
-  part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelf2(3,5,1,true));
-  m->setPartOfMySelf2(1,3,1,*part);
+  part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelfSlice(3,5,1,true));
+  m->setPartOfMySelfSlice(1,3,1,*part);
   const int expected5[25]={4,0,3,4,1,4,6,7,4,3,4,7,8,5,4,4,6,7,4,3,4,7,8,5,4};
   CPPUNIT_ASSERT(std::equal(expected5,expected5+25,m->getNodalConnectivity()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(25,m->getNodalConnectivity()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)25,m->getNodalConnectivity()->getNbOfElems());
   const int expected6[6]={0,5,10,15,20,25};
   CPPUNIT_ASSERT(std::equal(expected6,expected6+6,m->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(6,m->getNodalConnectivityIndex()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)6,m->getNodalConnectivityIndex()->getNbOfElems());
   s.clear(); s.insert(INTERP_KERNEL::NORM_QUAD4);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   m->decrRef(); part->decrRef();
   // no resize with range ids
   m=build2DTargetMesh_1();
-  part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelf2(0,5,3,true));
+  part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelfSlice(0,5,3,true));
   part->convertAllToPoly();
-  m->setPartOfMySelf2(3,5,1,*part);
+  m->setPartOfMySelfSlice(3,5,1,*part);
   const int expected7[23]={4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3};
   CPPUNIT_ASSERT(std::equal(expected7,expected7+23,m->getNodalConnectivity()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(23,m->getNodalConnectivity()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)23,m->getNodalConnectivity()->getNbOfElems());
   const int expected8[6]={0,5,9,13,18,23};
   CPPUNIT_ASSERT(std::equal(expected8,expected8+6,m->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(6,m->getNodalConnectivityIndex()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)6,m->getNodalConnectivityIndex()->getNbOfElems());
 s.clear(); s.insert(INTERP_KERNEL::NORM_TRI3); s.insert(INTERP_KERNEL::NORM_QUAD4); s.insert(INTERP_KERNEL::NORM_POLYGON);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   m->decrRef(); part->decrRef();
   // no resize with range ids negative direction
   m=build2DTargetMesh_1();
-  part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelf2(3,-1,-3,true));
+  part=static_cast<MEDCouplingUMesh *>(m->buildPartOfMySelfSlice(3,-1,-3,true));
   part->convertAllToPoly();
-  m->setPartOfMySelf2(4,2,-1,*part);
+  m->setPartOfMySelfSlice(4,2,-1,*part);
   const int expected9[23]={4,0,3,4,1,3,1,4,2,3,4,5,2,5,0,3,4,1,5,6,7,4,3};
   CPPUNIT_ASSERT(std::equal(expected9,expected9+23,m->getNodalConnectivity()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(23,m->getNodalConnectivity()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)23,m->getNodalConnectivity()->getNbOfElems());
   const int expected10[6]={0,5,9,13,18,23};
   CPPUNIT_ASSERT(std::equal(expected10,expected10+6,m->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(6,m->getNodalConnectivityIndex()->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)6,m->getNodalConnectivityIndex()->getNbOfElems());
   s.clear(); s.insert(INTERP_KERNEL::NORM_TRI3); s.insert(INTERP_KERNEL::NORM_QUAD4); s.insert(INTERP_KERNEL::NORM_POLYGON);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   part->decrRef();
   m->decrRef();
 }
@@ -1466,27 +1488,27 @@ void MEDCouplingBasicsTest5::testUnPolyze3()
   std::copy(coord,coord+18,coords->getPointer());
   m->setCoords(coords);
   coords->decrRef();
-  m->checkCoherency();
+  m->checkConsistencyLight();
   //
   MEDCouplingFieldDouble *vol=m->getMeasureField(ON_CELLS);
-  CPPUNIT_ASSERT_EQUAL(1,vol->getArray()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(1,(int)vol->getArray()->getNumberOfTuples());
   CPPUNIT_ASSERT_DOUBLES_EQUAL(0.5,vol->getArray()->getIJ(0,0),1e-12);
   vol->decrRef();
   //
   m->unPolyze();
-  CPPUNIT_ASSERT_EQUAL(1,m->getNumberOfCells());
+  CPPUNIT_ASSERT_EQUAL(1,(int)m->getNumberOfCells());
   std::set<INTERP_KERNEL::NormalizedCellType> s; s.insert(INTERP_KERNEL::NORM_PENTA6);
-  CPPUNIT_ASSERT(s==m->getAllTypes());
+  CPPUNIT_ASSERT(s==m->getAllGeoTypes());
   //
   const int expected1[2]={0,7};
   const int expected2[7]={16,0,2,1,3,5,4};
-  CPPUNIT_ASSERT_EQUAL(2,m->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(2,(int)m->getNodalConnectivityIndex()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected1,expected1+2,m->getNodalConnectivityIndex()->getConstPointer()));
-  CPPUNIT_ASSERT_EQUAL(7,m->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(7,(int)m->getNodalConnectivity()->getNumberOfTuples());
   CPPUNIT_ASSERT(std::equal(expected2,expected2+7,m->getNodalConnectivity()->getConstPointer()));
   //
   vol=m->getMeasureField(ON_CELLS);
-  CPPUNIT_ASSERT_EQUAL(1,vol->getArray()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(1,(int)vol->getArray()->getNumberOfTuples());
   CPPUNIT_ASSERT_DOUBLES_EQUAL(0.5,vol->getArray()->getIJ(0,0),1e-12);
   vol->decrRef();
   //
@@ -1513,7 +1535,7 @@ void MEDCouplingBasicsTest5::testKrSpatialDiscretization1()
   srcVals->alloc(nbOfInputPoints,1);
   std::copy(srcFieldValsOnPoints,srcFieldValsOnPoints+nbOfInputPoints,srcVals->getPointer());
   f->setArray(srcVals);
-  f->checkCoherency();
+  f->checkConsistencyLight();
   //
   double *res0=new double[1];
   f->getValueOn(targetPointCoordsX,res0);
@@ -1521,8 +1543,8 @@ void MEDCouplingBasicsTest5::testKrSpatialDiscretization1()
   delete [] res0;
   //
   DataArrayDouble *valuesToTest=f->getValueOnMulti(targetPointCoordsX,40);
 CPPUNIT_ASSERT_EQUAL(40,valuesToTest->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,valuesToTest->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(40,(int)valuesToTest->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)valuesToTest->getNumberOfComponents());
   for(int i=0;i<40;i++)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(targetFieldValsExpected[i],valuesToTest->getIJ(i,0),1e-10);
   valuesToTest->decrRef();
@@ -1596,9 +1618,9 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp5()
   //
   DataArrayInt *d1=0,*d2=0;
   MEDCouplingUMesh *m3=MEDCouplingUMesh::Intersect2DMeshes(m1,m2,1e-10,d1,d2);
-  CPPUNIT_ASSERT_EQUAL(105,m3->getNumberOfCells());
 CPPUNIT_ASSERT_EQUAL(105,d1->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(105,d2->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(105,(int)m3->getNumberOfCells());
CPPUNIT_ASSERT_EQUAL(105,(int)d1->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(105,(int)d2->getNumberOfTuples());
   CPPUNIT_ASSERT_EQUAL(704,m3->getNumberOfNodes());
   //
   const double areaExpected[105]={-65.18804756198824,-65.18804756198824,-65.18804756198824,-65.18804756198824,-66.75884388878285,-66.75884388878285,-66.7588438887833,-66.75884388878308,-68.32964021557768,-68.32964021557768,-68.32964021557814,-68.32964021557791,-69.9004365423732,-69.9004365423732,-69.90043654237297,-69.90043654237297,-1.194568659706448,-1.0869994447159463,-142.2316939607081,-144.51326206513068,-144.5132620651309,-1.1945686597064424,-143.3186934054243,-5.002264310862817,-10.0261332846393,-3.9727823117092953,-7.290862524642649,-124.504404940456,-3.9727823117093237,-146.82366506060032,-150.79644737231024,-5.002264310862776,-145.79418306144626,-5.00208651738126,-10.054764051268958,-4.001067863263231,-8.027932154428669,-129.99378209314813,-4.001067863263216,-153.07856481622616,-157.0796326794898,-5.0020865173811915,-152.07754616210832,-5.001928880064381,-10.050590216368969,-4.00098721602491,-8.025810856794209,-136.28350081741684,-4.000987216024939,-159.36183077064402,-163.36281798667005,-5.0019288800643285,-158.36088910660442,-1.2991516319851801,-3.702636830195414,-3.7815130030068254,-6.265364371195623,-0.02516260900254963,-0.6553944641345026,-3.975752765070567,-7.368528340442765,-142.57249927881398,-0.02516260900254963,-3.9757527650706095,-165.64508791977525,-169.64600329384803,-1.299151631985167,-3.7026368301953885,-164.6442148316677,-10.00321285677458,-20.08414323176165,-8.001644468035863,-16.042954878437143,-304.0096070742277,-8.00164446803587,-350.1399180412005,-358.1415625092368,-10.003212856774468,-348.13834965246224,-3.794150313030109,-8.65049239704272,-0.02260276689354157,-0.5885167811200915,-370.2185414798688,-0.022602766893559393,-383.2517009710623,-383.2743037379555,-3.7941503130300576,-379.48015342492505,-408.40704496667513,-408.4070449666742,-408.4070449666742,-408.4070449666742,-433.53978619538975,-433.5397861953902,-433.5397861953911,-433.53978619539066,-458.67252742410983,-458.6725274241094,-458.67252742410983,-458.6725274241089,-608.6835766330232,-608.6835766330232,-608.6835766330232,-608.6835766330241};
@@ -1629,8 +1651,8 @@ void MEDCouplingBasicsTest5::testDAIBuildUnique1()
   const int expectedData[7]={1,2,3,4,5,7,19};
   //
   DataArrayInt *e=d->buildUnique();
 CPPUNIT_ASSERT_EQUAL(7,e->getNumberOfTuples());
 CPPUNIT_ASSERT_EQUAL(1,e->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(7,(int)e->getNumberOfTuples());
CPPUNIT_ASSERT_EQUAL(1,(int)e->getNumberOfComponents());
   for(int i=0;i<7;i++)
     CPPUNIT_ASSERT_EQUAL(expectedData[i],e->getIJ(i,0));
   //
@@ -1658,17 +1680,378 @@ void MEDCouplingBasicsTest5::testDAIPartitionByDifferentValues1()
     {
       CPPUNIT_ASSERT_EQUAL(expected1[i],f[i]);
     }
-  CPPUNIT_ASSERT_EQUAL(1,e[0]->getNbOfElems());
-  CPPUNIT_ASSERT_EQUAL(2,e[1]->getNbOfElems());
-  CPPUNIT_ASSERT_EQUAL(2,e[2]->getNbOfElems());
-  CPPUNIT_ASSERT_EQUAL(4,e[3]->getNbOfElems());
 CPPUNIT_ASSERT_EQUAL(1,e[0]->getNumberOfComponents());
 CPPUNIT_ASSERT_EQUAL(1,e[1]->getNumberOfComponents());
 CPPUNIT_ASSERT_EQUAL(1,e[2]->getNumberOfComponents());
 CPPUNIT_ASSERT_EQUAL(1,e[3]->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)1,e[0]->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)2,e[1]->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)2,e[2]->getNbOfElems());
+  CPPUNIT_ASSERT_EQUAL((std::size_t)4,e[3]->getNbOfElems());
CPPUNIT_ASSERT_EQUAL(1,(int)e[0]->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(1,(int)e[1]->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(1,(int)e[2]->getNumberOfComponents());
CPPUNIT_ASSERT_EQUAL(1,(int)e[3]->getNumberOfComponents());
   CPPUNIT_ASSERT(std::equal(expected2_0,expected2_0+1,e[0]->begin()));
   CPPUNIT_ASSERT(std::equal(expected2_1,expected2_1+2,e[1]->begin()));
   CPPUNIT_ASSERT(std::equal(expected2_2,expected2_2+2,e[2]->begin()));
   CPPUNIT_ASSERT(std::equal(expected2_3,expected2_3+4,e[3]->begin()));
   e[0]->decrRef(); e[1]->decrRef(); e[2]->decrRef(); e[3]->decrRef();
 }
+
+void MEDCouplingBasicsTest5::testDAICheckMonotonic1()
+{
+  const int data1[6]={-1,0,2,2,4,5};
+  const int data2[6]={6,2,0,-8,-9,-56};
+  const int data3[6]={-1,0,3,2,4,6};
+  const int data4[6]={7,5,2,3,0,-6};
+  DataArrayInt *d=DataArrayInt::New();
+  d->useArray(data1,false,CPP_DEALLOC,6,1);
+  CPPUNIT_ASSERT(d->isMonotonic(true));
+  CPPUNIT_ASSERT(!d->isMonotonic(false));
+  d->checkMonotonic(true);
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
+  d->useArray(data2,false,CPP_DEALLOC,6,1);
+  CPPUNIT_ASSERT(d->isMonotonic(false));
+  CPPUNIT_ASSERT(!d->isMonotonic(true));
+  d->checkMonotonic(false);
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
+  d->useArray(data3,false,CPP_DEALLOC,6,1);
+  CPPUNIT_ASSERT(!d->isMonotonic(false));
+  CPPUNIT_ASSERT(!d->isMonotonic(true));
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
+  d->useArray(data4,false,CPP_DEALLOC,6,1);
+  CPPUNIT_ASSERT(!d->isMonotonic(false));
+  CPPUNIT_ASSERT(!d->isMonotonic(true));
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
+  d->useArray(data4,false,CPP_DEALLOC,0,1);
+  CPPUNIT_ASSERT(d->isMonotonic(true));
+  CPPUNIT_ASSERT(d->isMonotonic(false));
+  d->checkMonotonic(true);
+  d->checkMonotonic(false);
+  d->useArray(data4,false,CPP_DEALLOC,3,2);//throw because nbComp!=1
+  CPPUNIT_ASSERT_THROW(d->isMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(d->isMonotonic(false),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
+  d->decrRef();
+}
+
+void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp6()
+{
+  // coordinates
+  DataArrayDouble *coords=DataArrayDouble::New();
+  const double coordsData[16]={2.7554552980815448e-15,45,-45,5.5109105961630896e-15,-31.819805153394636,31.81980515339464,2.8779199779962799e-15,47,2.8166876380389124e-15,46,-47,5.7558399559925599e-15,-33.234018715767732,33.234018715767739,-46,5.6333752760778247e-15};
+  coords->useArray(coordsData,false,CPP_DEALLOC,8,2);
+  // connectivity
+  DataArrayInt *conn=DataArrayInt::New();
+  const int connData[9]={8,0,3,5,1,4,6,7,2};
+  conn->useArray(connData,false,CPP_DEALLOC,9,1);
+  DataArrayInt *connI=DataArrayInt::New();
+  const int connIData[2]={0,9};
+  connI->useArray(connIData,false,CPP_DEALLOC,2,1);
+  MEDCouplingUMesh *m1=MEDCouplingUMesh::New("Fixe",2);
+  m1->setCoords(coords);
+  m1->setConnectivity(conn,connI,true);
+  coords->decrRef(); conn->decrRef(); connI->decrRef();
+  //
+  coords=DataArrayDouble::New();
+  const double coordsData2[26]={-7.3800475508445391,41.854329503018846,-3.7041190667754655,42.338274668899189,-3.7041190667754655,45.338274668899189,-7.3800475508445382,44.854329503018839,-5.5473631693521845,42.136406608386956,-3.7041190667754655,43.838274668899189,-5.5420833088100014,45.09630208595901,-7.3800475508445382,43.354329503018839,-3.7041190667754651,52.338274668899189,-7.3800475508445382,51.854329503018839,-3.7041190667754655,48.838274668899189,-5.5420833088100014,52.09630208595901,-7.3800475508445382,48.354329503018839};
+  coords->useArray(coordsData2,false,CPP_DEALLOC,13,2);
+  // connectivity
+  conn=DataArrayInt::New();
+  const int connData2[18]={8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12};
+  conn->useArray(connData2,false,CPP_DEALLOC,18,1);
+  connI=DataArrayInt::New();
+  const int connIData2[3]={0,9,18};
+  connI->useArray(connIData2,false,CPP_DEALLOC,3,1);
+  //
+  MEDCouplingUMesh *m2=MEDCouplingUMesh::New("Mobile",2);
+  m2->setCoords(coords);
+  m2->setConnectivity(conn,connI,true);
+  coords->decrRef(); conn->decrRef(); connI->decrRef();
+  //
+  DataArrayInt *d1=0,*d2=0;
+  MEDCouplingUMesh *m3=MEDCouplingUMesh::Intersect2DMeshes(m1,m2,1e-10,d1,d2);
+  CPPUNIT_ASSERT_EQUAL(4,(int)m3->getNumberOfCells());
+ CPPUNIT_ASSERT_EQUAL(4,(int)d1->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(4,(int)d2->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(43,m3->getNumberOfNodes());
+  bool areMerged=false;
+  int newNbOfNodes=-1;
+  m3->mergeNodes(1e-12,areMerged,newNbOfNodes)->decrRef();
+  CPPUNIT_ASSERT_EQUAL(35,m3->getNumberOfNodes());
+  m3->zipCoords();
+  CPPUNIT_ASSERT_EQUAL(23,m3->getNumberOfNodes());
+  //
+  MEDCouplingFieldDouble *f=m3->getMeasureField(true);
+  const double *vals=f->getArray()->getConstPointer();
+  const double valuesExpected[4]={1.6603638692585716,5.747555728471923,129.68907101754394,7.4162714498559694};
+  for(int i=0;i<4;i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(valuesExpected[i],vals[i],1e-12);
+  f->decrRef();
+  //
+  m1->decrRef();
+  m2->decrRef();
+  m3->decrRef();
+  d1->decrRef();
+  d2->decrRef();
+}
+
+void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp7()
+{
+  double eps = 1.0e-8;
+  // coordinates circle - SEE getCircle() on the Python side
+  DataArrayDouble *coords1=DataArrayDouble::New();
+  const double coordsData1[16]={0.5328427124746189, -0.08284271247461905, -0.03284271247461901, 0.4828427124746191, -0.03284271247461906, -0.082842712474619, 0.5328427124746191, 0.482842712474619};
+  coords1->useArray(coordsData1,false,CPP_DEALLOC,8,2);
+  // connectivity
+  DataArrayInt *conn1=DataArrayInt::New();
+  const int connData1[5]={INTERP_KERNEL::NORM_QPOLYG,0,1,2,3};
+  conn1->useArray(connData1,false,CPP_DEALLOC,5,1);
+  DataArrayInt *connI1=DataArrayInt::New();
+  const int connIData1[2]={0,5};
+  connI1->useArray(connIData1,false,CPP_DEALLOC,2,1);
+  MEDCouplingUMesh *m1=MEDCouplingUMesh::New("circle",2);
+  m1->setCoords(coords1);
+  m1->setConnectivity(conn1,connI1,true);
+  coords1->decrRef(); conn1->decrRef(); connI1->decrRef();
+
+  // square
+  DataArrayDouble *coords2=DataArrayDouble::New();
+  const double coordsData2[8]={-0.5,-0.5,   -0.5, 0.5, 0.5, 0.5,    0.5,-0.5};
+  coords2->useArray(coordsData2,false,CPP_DEALLOC,4,2);
+  // connectivity
+  DataArrayInt *conn2=DataArrayInt::New();
+  const int connData2[5]={INTERP_KERNEL::NORM_POLYGON, 0,1,2,3};
+  conn2->useArray(connData2,false,CPP_DEALLOC,5,1);
+  DataArrayInt *connI2=DataArrayInt::New();
+  const int connIData2[2]={0,5};
+  connI2->useArray(connIData2,false,CPP_DEALLOC,2,1);
+  MEDCouplingUMesh *m2=MEDCouplingUMesh::New("square",2);
+  m2->setCoords(coords2);
+  m2->setConnectivity(conn2,connI2,true);
+  coords2->decrRef(); conn2->decrRef(); connI2->decrRef();
+
+  DataArrayInt * resToM1 = 0, * resToM2 = 0;
+  MEDCouplingUMesh *m_intersec=MEDCouplingUMesh::Intersect2DMeshes(m2, m1, eps, resToM1, resToM2);
+  m_intersec->zipCoords();
+
+  const double coo_tgt[34]={-0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.03284271247461901, 0.4828427124746191, \
+    -0.014575131106459124, 0.5000000000000001, 0.5, -0.11224989991991996, 0.24271243444677046, 0.5, 0.5, 0.19387505004004, \
+    -0.04799910280454185, -0.06682678787499614, -0.023843325638122054, 0.4915644577163915, 0.5, -0.30612494995996, 0.0, -0.5,\
+    -0.5, 0.0, -0.25728756555322957, 0.5, -0.023843325638122026, 0.49156445771639157, -0.04799910280454181, -0.06682678787499613};
+  const int conn_tgt[22]={32, 5, 2, 6, 4, 7, 8, 9, 10, 32, 6, 3, 0, 1, 5, 4, 11, 12, 13, 14, 15, 16};
+  const int connI_tgt[3]={0, 9, 22};
+  const int res1_tgt[2] = {0, 0};
+  const int res2_tgt[2] = {0, -1};
+
+  CPPUNIT_ASSERT(std::equal(conn_tgt,conn_tgt+22,m_intersec->getNodalConnectivity()->getConstPointer()));
+  CPPUNIT_ASSERT(std::equal(connI_tgt,connI_tgt+3,m_intersec->getNodalConnectivityIndex()->getConstPointer()));
+  CPPUNIT_ASSERT(std::equal(res1_tgt,res1_tgt+2,resToM1->getConstPointer()));
+  CPPUNIT_ASSERT(std::equal(res2_tgt,res2_tgt+2,resToM2->getConstPointer()));
+  for(int i=0;i<34;i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(coo_tgt[i],m_intersec->getCoords()->getIJ(0,i),1e-12);
+  m1->decrRef(); m2->decrRef(); m_intersec->decrRef();
+  resToM1->decrRef(); resToM2->decrRef();
+}
+
+void MEDCouplingBasicsTest5::testDAIBuildSubstractionOptimized1()
+{
+  const int tab1[7]={1,3,5,6,7,9,13};
+  const int tab2[3]={3,5,9};
+  const int tab3[3]={1,3,5};
+  DataArrayInt *da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,7,1);
+  DataArrayInt *da2=DataArrayInt::New(); da2->useArray(tab2,false,CPP_DEALLOC,3,1);
+  DataArrayInt *da3=DataArrayInt::New(); da3->useArray(tab3,false,CPP_DEALLOC,3,1);
+  DataArrayInt *da4=DataArrayInt::New(); da4->useArray(tab1,false,CPP_DEALLOC,7,1);
+  //
+  DataArrayInt *a=0;
+  a=da1->buildSubstractionOptimized(da2);
+ CPPUNIT_ASSERT_EQUAL(4,(int)a->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,(int)a->getNumberOfComponents());
+  const int expected1_0[4]={1,6,7,13};
+  CPPUNIT_ASSERT(std::equal(expected1_0,expected1_0+4,a->begin()));
+  a->decrRef();
+  //
+  a=da1->buildSubstractionOptimized(da3);
+ CPPUNIT_ASSERT_EQUAL(4,(int)a->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,(int)a->getNumberOfComponents());
+  const int expected2_0[4]={6,7,9,13};
+  CPPUNIT_ASSERT(std::equal(expected2_0,expected2_0+4,a->begin()));
+  a->decrRef();
+  //
+  a=da1->buildSubstractionOptimized(da4);
+ CPPUNIT_ASSERT_EQUAL(0,(int)a->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,(int)a->getNumberOfComponents());
+  a->decrRef();
+  //
+  da1->decrRef();
+  da2->decrRef();
+  da3->decrRef();
+  da4->decrRef();
+}
+
+void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
+{
+  const int tab1[7]={1,3,5,6,7,9,13};
+  DataArrayInt *da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,7,1);
+  CPPUNIT_ASSERT(da1->isStrictlyMonotonic(true));
+  da1->checkStrictlyMonotonic(true);
+  CPPUNIT_ASSERT(da1->isMonotonic(true));
+  da1->checkMonotonic(true);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(false),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(false),INTERP_KERNEL::Exception);
+  da1->decrRef();
+  //
+  int tab2[7]={1,3,5,6,6,9,13};
+  da1=DataArrayInt::New(); da1->useArray(tab2,false,CPP_DEALLOC,7,1);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(da1->isMonotonic(true));
+  da1->checkMonotonic(true);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(false),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(false),INTERP_KERNEL::Exception);
+  da1->decrRef();
+  //
+  const int tab3[7]={1,3,5,6,5,9,13};
+  da1=DataArrayInt::New(); da1->useArray(tab3,false,CPP_DEALLOC,7,1);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(false),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(false),INTERP_KERNEL::Exception);
+  da1->decrRef();
+  //
+  const int tab4[7]={13,9,7,6,5,3,1};
+  da1=DataArrayInt::New(); da1->useArray(tab4,false,CPP_DEALLOC,7,1);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(da1->isStrictlyMonotonic(false));
+  da1->checkStrictlyMonotonic(false);
+  CPPUNIT_ASSERT(da1->isMonotonic(false));
+  da1->checkMonotonic(false);
+  da1->decrRef();
+  //
+  const int tab5[7]={13,9,6,6,5,3,1};
+  da1=DataArrayInt::New(); da1->useArray(tab5,false,CPP_DEALLOC,7,1);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(false),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(da1->isMonotonic(false));
+  da1->checkMonotonic(false);
+  da1->decrRef();
+  //
+  const int tab6[7]={13,9,5,6,5,3,1};
+  da1=DataArrayInt::New(); da1->useArray(tab6,false,CPP_DEALLOC,7,1);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(true));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(true),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(false),INTERP_KERNEL::Exception);
+  CPPUNIT_ASSERT(!da1->isMonotonic(false));
+  CPPUNIT_ASSERT_THROW(da1->checkMonotonic(false),INTERP_KERNEL::Exception);
+  da1->decrRef();
+  //
+  da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,0,1);
+  CPPUNIT_ASSERT(da1->isStrictlyMonotonic(true));
+  da1->checkStrictlyMonotonic(true);
+  CPPUNIT_ASSERT(da1->isMonotonic(true));
+  da1->checkMonotonic(true);
+  CPPUNIT_ASSERT(da1->isStrictlyMonotonic(false));
+  da1->checkStrictlyMonotonic(false);
+  CPPUNIT_ASSERT(da1->isMonotonic(false));
+  da1->checkMonotonic(false);
+  da1->decrRef();
+  //
+  da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,1,1);
+  CPPUNIT_ASSERT(da1->isStrictlyMonotonic(true));
+  da1->checkStrictlyMonotonic(true);
+  CPPUNIT_ASSERT(da1->isMonotonic(true));
+  da1->checkMonotonic(true);
+  CPPUNIT_ASSERT(da1->isStrictlyMonotonic(false));
+  da1->checkStrictlyMonotonic(false);
+  CPPUNIT_ASSERT(da1->isMonotonic(false));
+  da1->checkMonotonic(false);
+  da1->decrRef();
+}
+
+void MEDCouplingBasicsTest5::testSimplexize3()
+{
+  const int conn[24]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
+  MEDCouplingUMesh *m=MEDCouplingUMesh::New("toto",3);
+  m->allocateCells(0);
+  m->insertNextCell(INTERP_KERNEL::NORM_TETRA4,4,conn+0);
+  m->insertNextCell(INTERP_KERNEL::NORM_HEXA8,8,conn+4);
+  m->insertNextCell(INTERP_KERNEL::NORM_HEXA8,8,conn+12);
+  m->insertNextCell(INTERP_KERNEL::NORM_TETRA4,4,conn+20);
+  const double coords[72]={0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.,2.,0.,0.,2.,1.,0.,3.,1.,0.,3.,0.,0.,2.,0.,1.,2.,1.,1.,3.,1.,1.,3.,0.,1.,4.,0.,0.,4.,1.,0.,5.,1.,0.,5.,0.,0.,4.,0.,1.,4.,1.,1.,5.,1.,1.,5.,0.,1.,6.,0.,0.,6.,1.,0.,7.,0.,0.,6.,0.,1.};
+  DataArrayDouble *c=DataArrayDouble::New();
+  c->useArray(coords,false,CPP_DEALLOC,24,3);
+  m->setCoords(c);
+  c->decrRef();
+  m->checkConsistency();
+  //
+  MEDCouplingUMesh *m1=static_cast<MEDCouplingUMesh *>(m->deepCopy());
+  DataArrayInt *d1=m1->simplexize(INTERP_KERNEL::PLANAR_FACE_5);
+  m1->checkConsistency();
+  MEDCouplingFieldDouble *f1=m1->getMeasureField(ON_CELLS);
+  const double vol1Expected[12]={1./6, 1./6, 1./6,1./6, 1./6, 1./3,1./6, 1./6, 1./6, 1./6, 1./3, 1./6};
+  CPPUNIT_ASSERT_EQUAL(1,(int)f1->getArray()->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(12,(int)f1->getArray()->getNumberOfTuples());
+  for(int i=0;i<12;i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(vol1Expected[i],f1->getIJ(i,0),1e-12);
+  const int connExpected1[60]={14,0,1,2,3,14,4,9,5,6,14,4,8,9,11,14,4,7,11,6,14,9,11,10,6,14,4,9,6,11,14,12,17,13,14,14,12,16,17,19,14,12,15,19,14,14,17,19,18,14,14,12,17,14,19,14,20,21,22,23};
+  const int connIExpected1[13]={0,5,10,15,20,25,30,35,40,45,50,55,60};
+  const int n2o1[12]={0,1,1,1,1,1,2,2,2,2,2,3};
+  CPPUNIT_ASSERT_EQUAL(1,(int)m1->getNodalConnectivity()->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(60,(int)m1->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(1,(int)m1->getNodalConnectivityIndex()->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(13,(int)m1->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT(std::equal(connExpected1,connExpected1+60,m1->getNodalConnectivity()->begin()));
+  CPPUNIT_ASSERT(std::equal(connIExpected1,connIExpected1+13,m1->getNodalConnectivityIndex()->begin()));
+ CPPUNIT_ASSERT_EQUAL(1,(int)d1->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(12,(int)d1->getNumberOfTuples());
+  CPPUNIT_ASSERT(std::equal(n2o1,n2o1+12,d1->begin()));
+  f1->decrRef();
+  m1->decrRef();
+  d1->decrRef();
+  //
+  MEDCouplingUMesh *m2=static_cast<MEDCouplingUMesh *>(m->deepCopy());
+  DataArrayInt *d2=m2->simplexize(INTERP_KERNEL::PLANAR_FACE_6);
+  m2->checkConsistency();
+  MEDCouplingFieldDouble *f2=m2->getMeasureField(ON_CELLS);
+  const double vol2Expected[14]={1./6, 1./6, 1./6,1./6, 1./6, 1./6,1./6,1./6, 1./6, 1./6, 1./6, 1./6,1./6,1./6};
+  CPPUNIT_ASSERT_EQUAL(1,(int)f2->getArray()->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(14,(int)f2->getArray()->getNumberOfTuples());
+  for(int i=0;i<14;i++)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(vol2Expected[i],f2->getIJ(i,0),1e-12);
+  const int connExpected2[70]={14,0,1,2,3,14,4,9,5,10,14,4,5,6,10,14,4,8,9,10,14,4,11,8,10,14,4,6,7,10,14,4,7,11,10,14,12,17,13,18,14,12,13,14,18,14,12,16,17,18,14,12,19,16,18,14,12,14,15,18,14,12,15,19,18,14,20,21,22,23};
+  const int connIExpected2[15]={0,5,10,15,20,25,30,35,40,45,50,55,60,65,70};
+  const int n2o2[14]={0,1,1,1,1,1,1,2,2,2,2,2,2,3};
+  CPPUNIT_ASSERT_EQUAL(1,(int)m2->getNodalConnectivity()->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(70,(int)m2->getNodalConnectivity()->getNumberOfTuples());
+  CPPUNIT_ASSERT_EQUAL(1,(int)m2->getNodalConnectivityIndex()->getNumberOfComponents());
+  CPPUNIT_ASSERT_EQUAL(15,(int)m2->getNodalConnectivityIndex()->getNumberOfTuples());
+  CPPUNIT_ASSERT(std::equal(connExpected2,connExpected2+70,m2->getNodalConnectivity()->begin()));
+  CPPUNIT_ASSERT(std::equal(connIExpected2,connIExpected2+15,m2->getNodalConnectivityIndex()->begin()));
+ CPPUNIT_ASSERT_EQUAL(1,(int)d2->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(14,(int)d2->getNumberOfTuples());
+  CPPUNIT_ASSERT(std::equal(n2o2,n2o2+14,d2->begin()));
+  f2->decrRef();
+  m2->decrRef();
+  d2->decrRef();
+  //
+  m->decrRef();
+}