- int nbOfCell=_mesh->getNumberOfCells();
- int initialConnSize=_mesh->getNodalConnectivity()->getNbOfElems();
- _conn_for_interp=new int[initialConnSize-nbOfCell];
- _conn_index_for_interp=new int[nbOfCell+1];
- _conn_index_for_interp[0]=0;
- const int *work_conn=_mesh->getNodalConnectivity()->getConstPointer()+1;
- const int *work_conn_index=_mesh->getNodalConnectivityIndex()->getConstPointer();
- int *work_conn_for_interp=_conn_for_interp;
- int *work_conn_index_for_interp=_conn_index_for_interp;
- for(int i=0;i<nbOfCell;i++)
+ IKAssert(_mesh->getSpaceDimension()==SPACEDIM);
+ const MEDCoupling::MEDCouplingUMesh *m1(dynamic_cast<const MEDCoupling::MEDCouplingUMesh *>(_mesh));
+ if(m1)
+ {
+ mcIdType nbOfCell=ToIdType(m1->getNumberOfCells());
+ mcIdType initialConnSize=ToIdType(m1->getNodalConnectivity()->getNbOfElems());
+ _conn_for_interp=new mcIdType[initialConnSize-nbOfCell];
+ _conn_index_for_interp=new mcIdType[nbOfCell+1];
+ _conn_index_for_interp[0]=0;
+ const mcIdType *work_conn=m1->getNodalConnectivity()->getConstPointer()+1;
+ const mcIdType *work_conn_index=m1->getNodalConnectivityIndex()->getConstPointer();
+ mcIdType *work_conn_for_interp=_conn_for_interp;
+ mcIdType *work_conn_index_for_interp=_conn_index_for_interp;
+ for(mcIdType i=0;i<nbOfCell;i++)
+ {
+ mcIdType nbOfValsToCopy=work_conn_index[1]-work_conn_index[0]-1;
+ work_conn_for_interp=std::copy(work_conn,work_conn+nbOfValsToCopy,work_conn_for_interp);
+ work_conn_index_for_interp[1]=work_conn_index_for_interp[0]+nbOfValsToCopy;
+ work_conn_index++;
+ work_conn+=nbOfValsToCopy+1;
+ work_conn_index_for_interp++;
+ }
+ return ;
+ }
+ const MEDCoupling::MEDCoupling1DGTUMesh *m2(dynamic_cast<const MEDCoupling::MEDCoupling1DGTUMesh *>(_mesh));
+ if(m2)
+ {
+ mcIdType nbOfCell=ToIdType(m2->getNumberOfCells());
+ _conn_index_for_interp=new mcIdType[nbOfCell+1];
+ const mcIdType *conni(m2->getNodalConnectivityIndex()->begin());
+ std::copy(conni,conni+nbOfCell+1,_conn_index_for_interp);
+ _conn_for_interp=new mcIdType[m2->getNodalConnectivity()->getNumberOfTuples()];
+ std::copy(m2->getNodalConnectivity()->begin(),m2->getNodalConnectivity()->end(),_conn_for_interp);
+ return ;
+ }
+ const MEDCoupling::MEDCoupling1SGTUMesh *m3(dynamic_cast<const MEDCoupling::MEDCoupling1SGTUMesh *>(_mesh));
+ if(m3)