+
+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,m3->getNumberOfCells());
+ CPPUNIT_ASSERT_EQUAL(4,d1->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(4,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,a->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,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,a->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,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,a->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,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->checkCoherency2();
+ //
+ MEDCouplingUMesh *m1=static_cast<MEDCouplingUMesh *>(m->deepCpy());
+ DataArrayInt *d1=m1->simplexize(INTERP_KERNEL::PLANAR_FACE_5);
+ m1->checkCoherency2();
+ 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,f1->getArray()->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(12,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,m1->getNodalConnectivity()->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(60,m1->getNodalConnectivity()->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,m1->getNodalConnectivityIndex()->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(13,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,d1->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(12,d1->getNumberOfTuples());
+ CPPUNIT_ASSERT(std::equal(n2o1,n2o1+12,d1->begin()));
+ f1->decrRef();
+ m1->decrRef();
+ d1->decrRef();
+ //
+ MEDCouplingUMesh *m2=static_cast<MEDCouplingUMesh *>(m->deepCpy());
+ DataArrayInt *d2=m2->simplexize(INTERP_KERNEL::PLANAR_FACE_6);
+ m2->checkCoherency2();
+ 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,f2->getArray()->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(14,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,m2->getNodalConnectivity()->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(70,m2->getNodalConnectivity()->getNumberOfTuples());
+ CPPUNIT_ASSERT_EQUAL(1,m2->getNodalConnectivityIndex()->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(15,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,d2->getNumberOfComponents());
+ CPPUNIT_ASSERT_EQUAL(14,d2->getNumberOfTuples());
+ CPPUNIT_ASSERT(std::equal(n2o2,n2o2+14,d2->begin()));
+ f2->decrRef();
+ m2->decrRef();
+ d2->decrRef();
+ //
+ m->decrRef();
+}