-void computeNeighbour(const MESH* mesh,const medGeometryElement& Type, vector<list<int> >& neighbour, int& ntot,int& nb_cell)
-{
- CONNECTIVITY* conn = (CONNECTIVITY*)mesh->getConnectivityptr();
- conn->calculateFullDescendingConnectivity(MED_CELL);
- const int* rev_conn=mesh->getReverseConnectivity(MED_EN::MED_DESCENDING, MED_EN::MED_CELL);
- const int* rev_conn_index=mesh->getReverseConnectivityIndex(MED_EN::MED_DESCENDING, MED_EN::MED_CELL);
- int nb_face= mesh->getNumberOfElements(MED_FACE,MED_ALL_ELEMENTS);
- int nb_edge = mesh->getNumberOfElements(MED_EDGE,MED_ALL_ELEMENTS);
- nb_cell= mesh->getNumberOfElements(MED_CELL,Type);
-
- int nb_constituent;
- if(mesh->getMeshDimension()==2)
- nb_constituent = nb_edge;
- else if (mesh->getMeshDimension()==3)
- nb_constituent = nb_face;
- else
- throw MEDEXCEPTION("Wrong dimension");
-
- neighbour.resize(nb_cell,(list<int>)0);
- ntot=0;
- for(int i=0;i<nb_constituent;++i)
- {
- for(int j=rev_conn_index[i]-1;j<rev_conn_index[i+1]-1;++j)
- {
- for(int k=j+1;k<rev_conn_index[i+1]-1;++k)
- {
- if(rev_conn[j]!=0 && rev_conn[k]!=0)
- {
- ntot+=2;
- neighbour[rev_conn[j]-1].push_back(rev_conn[k]);
- neighbour[rev_conn[k]-1].push_back(rev_conn[j]);
- }
- }
- }
- }
-}
-
-void changeConnectivity(MESH& mesh, const medGeometryElement& Type, const int& nb_cell, const vector<int>& iperm)
-{
- /*if(Type==MED_POLYHEDRA)
- {
- int *conn_face_index_init=(int*)mesh.getPolyhedronFacesIndex();
- int *conn_index_init=(int*)mesh.getPolyhedronIndex(MED_FULL_INTERLACE);
- int *conn_init=(int*)mesh.getPolyhedronConnectivity(MED_FULL_INTERLACE);
-
- int *conn_index_renum=new int[nb_cell+1];
- int *conn_face_index_renum=new int[conn_index_init[nb_cell]];
- int *conn_renum=new int[conn_face_index_init[conn_index_init[nb_cell]-1]-1];
-
- int i_cell,i_face,i_conn;
- int iter_face=0;
- int iter_conn=0;
- int i2;
- conn_index_renum[0]=1;
- conn_face_index_renum[0]=1;
- for(i_cell=0;i_cell<nb_cell;++i_cell)
- {
- i2=iperm[i_cell]-1;
- for(i_face=conn_index_init[i2]-1;i_face<conn_index_init[i2+1]-1;++i_face)
- {
- for(i_conn=conn_face_index_init[i_face]-1;i_conn<conn_face_index_init[i_face+1]-1;++i_conn)
- {
- conn_renum[iter_conn]=conn_init[i_conn];
- ++iter_conn;
- }
- conn_face_index_renum[iter_face+1]=iter_conn+1;
- ++iter_face;
- }
- conn_index_renum[i_cell+1]=iter_face+1;
- }
- memcpy(conn_face_index_init,conn_face_index_renum,sizeof(int)*conn_index_init[nb_cell]);
- memcpy(conn_index_init,conn_index_renum,sizeof(int)*(nb_cell+1));
- memcpy(conn_init,conn_renum, sizeof(int)*(conn_face_index_init[conn_index_init[nb_cell]-1]-1));
-
- delete[] conn_index_renum;
- delete[] conn_face_index_renum;
- delete[] conn_renum;
- }
- else if (Type==MED_POLYGON)
- {
- int *conn_init=(int*)mesh.getPolygonsConnectivity(MED_FULL_INTERLACE,MED_CELL);
- int *conn_index_init=(int*)mesh.getPolygonsConnectivityIndex(MED_FULL_INTERLACE,MED_CELL);
- int *conn_index_renum=new int[nb_cell+1];
- int *conn_renum=new int[conn_index_init[nb_cell]-1];
-
- int iter=0;
- int i2;
- conn_index_renum[0]=1;
- for(int i=0;i<nb_cell;++i)
- {
- i2=iperm[i]-1;
- for(int k=conn_index_init[i2];k<conn_index_init[i2+1];++k)
- {
- conn_renum[iter]=conn_init[k-1];
- ++iter;
- }
- conn_index_renum[i+1]=iter+1;
- }
- memcpy(conn_index_init,conn_index_renum,sizeof(int)*(nb_cell+1));
- memcpy(conn_init,conn_renum, sizeof(int)*(conn_index_init[nb_cell]-1));
-
- delete[] conn_renum;
- delete[] conn_index_renum;
- }
- else*/
- {
- const int *conn_init=mesh.getConnectivity(MED_NODAL,MED_CELL,Type);
- const int *conn_index_init=mesh.getConnectivityIndex(MED_NODAL,MED_CELL);
- int *conn_renum=new int[conn_index_init[nb_cell]-1];
- int *conn_index_renum=new int[nb_cell+1];
-
- int iter=0;
- int i2;
- conn_index_renum[0]=1;
- for(int i=0;i<nb_cell;++i)
- {
- i2=iperm[i]-1;
- for(int k=conn_index_init[i2];k<conn_index_init[i2+1];++k)
- {
- conn_renum[iter]=conn_init[k-1];
- ++iter;
- }
- conn_index_renum[i+1]=iter+1;
- }
-
- CONNECTIVITY* myConnectivity=(CONNECTIVITY*)mesh.getConnectivityptr();
- myConnectivity->setNodal(conn_renum,MED_CELL,Type,conn_index_renum);
- delete[] conn_renum;
- delete[] conn_index_renum;
- }
-}
-
-void changeFamily(MESH* mesh, const medGeometryElement& Type, const vector<int>& perm)