+// =================================================== getStrate
+Hexa* Elements::getStrate (int couche, EnumHQuad nroface)
+{
+ Hexa* cell = NULL;
+ int nro = couche <= 0 ? 0 : (couche-1)*HQ_MAXI + nroface + 1;
+
+ if (nbr_hexas==0 || nro >= nbr_hexas)
+ cell = NULL;
+ else
+ cell = tab_hexa [nro];
+
+ return cell;
+}
+// ============================================================ setHexa
+void Elements::setHexa (Hexa* elt, int nro)
+{
+ if (nro >=0 && nro < nbr_hexas)
+ tab_hexa [nro] = elt;
+}
+// ============================================================ setQuad
+void Elements::setQuad (Quad* elt, int nro)
+{
+ if (nro >=0 && nro < nbr_quads)
+ tab_quad [nro] = elt;
+}
+// ============================================================ setEdge
+void Elements::setEdge (Edge* elt, int nro)
+{
+ if (nro >=0 && nro < nbr_edges)
+ tab_edge [nro] = elt;
+}
+// ============================================================ setVertex
+void Elements::setVertex (Vertex* elt, int nro)
+{
+ if (nro >=0 && nro < nbr_vertex)
+ tab_vertex [nro] = elt;
+}
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+// ============================================================ getHexa
+Hexa* Elements::getHexa (int nro)
+{
+ DumpStart ("getHexa", nro);
+
+ Hexa* elt = NULL;
+ int nombre=tab_hexa.size();
+ // if (nro >=0 && nro < nbr_hexas && el_status == HOK Abu 2010/05/06
+ if (nro >=0 && nro < nombre && el_status == HOK
+ && tab_hexa [nro] != NULL && tab_hexa [nro]->isValid())
+ elt = tab_hexa [nro];
+
+ DumpReturn (elt);
+ return elt;
+}
+// ============================================================ getQuad
+Quad* Elements::getQuad (int nro)
+{
+ DumpStart ("getQuad", nro);
+
+ Quad* elt = NULL;
+ if (nro >=0 && nro < nbr_quads && el_status == HOK
+ && tab_quad [nro] != NULL && tab_quad [nro]->isValid())
+ elt = tab_quad [nro];
+
+ DumpReturn (elt);
+ return elt;
+}
+// ============================================================ getEdge
+Edge* Elements::getEdge (int nro)
+{
+ DumpStart ("getEdge", nro);
+
+ Edge* elt = NULL;
+ if (nro >=0 && nro < nbr_edges && el_status == HOK
+ && tab_edge [nro] != NULL && tab_edge [nro]->isValid())
+ elt = tab_edge [nro];
+
+ DumpReturn (elt);
+ return elt;
+}
+// ============================================================ getVertex
+Vertex* Elements::getVertex (int nro)
+{
+ DumpStart ("getVertex", nro);
+
+ Vertex* elt = NULL;
+ if (nro >=0 && nro < nbr_vertex && el_status == HOK
+ && tab_vertex [nro] != NULL && tab_vertex [nro]->isValid())
+ elt = tab_vertex [nro];
+
+ DumpReturn (elt);
+ return elt;
+}
+// ============================================================ indVertex
+int Elements::indVertex (int nquad, int nsommet, int nh)
+{
+ int nro = nsommet + QUAD4*nquad + nbr_orig*QUAD4*(nh+1);
+ return nro;
+}
+// ============================================================ nroVertex
+int Elements::nroVertex (int nquad, int nsommet, int nh)
+{
+ int nro = nsommet + QUAD4*nquad + nbr_orig*QUAD4*nh;
+ return nro;
+}
+// ============================================================ indVertex
+int Elements::indVertex (int ref_edge, int nh)
+{
+ int nro = ref_edge + nbr_orig*QUAD4*nh;
+ return nro;
+}
+// ============================================================ nroEdgeH
+int Elements::nroEdgeH (int nvertex)
+{
+ return QUAD4*nbr_orig*gr_hauteur + nvertex;
+}
+// ============================================================ nroEdgeH
+int Elements::nroEdgeH (int nquad, int nsommet, int nh)
+{
+ return QUAD4*nbr_orig*gr_hauteur + indVertex (nquad, nsommet, nh);
+}
+// ============================================================ nroHexa
+int Elements::nroHexa (int nquad, int nh)
+{
+ int nro = gr_hauteur*nquad + nh;
+ return nro;
+}
+
+// ============================================================ addHexa
+void Elements::addHexa (Hexa* element)
+{
+ tab_hexa.push_back (element);
+ nbr_hexas ++;
+}
+// ============================================================ addQuad
+void Elements::addQuad (Quad* element)
+{
+ tab_quad.push_back (element);
+ nbr_quads ++;
+}
+// ============================================================ addEdge
+void Elements::addEdge (Edge* element)
+{
+ tab_edge.push_back (element);
+ nbr_edges ++;
+}
+// ============================================================ addVertex
+void Elements::addVertex (Vertex* element)
+{
+ tab_vertex.push_back (element);
+ nbr_vertex ++;
+}
+// ============================================================ findHexa
+int Elements::findHexa (Hexa* element)
+{
+ int nbre = tab_hexa.size();
+ for (int nro=0 ; nro<nbre ; nro++)
+ if (tab_hexa [nro] == element)
+ return nro;
+ return NOTHING;
+}
+// ============================================================ findQuad
+int Elements::findQuad (Quad* element)
+{
+ int nbre = tab_quad.size();
+ for (int nro=0 ; nro<nbre ; nro++)
+ if (tab_quad [nro] == element)
+ return nro;
+ return NOTHING;
+}
+// ============================================================ findEdge
+int Elements::findEdge (Edge* element)
+{
+ int nbre = tab_edge.size();
+ for (int nro=0 ; nro<nbre ; nro++)
+ if (tab_edge [nro] == element)
+ return nro;
+ return NOTHING;
+}
+// ============================================================ findVertex
+int Elements::findVertex (Vertex* element)
+{
+ int nbre = tab_vertex.size();
+ for (int nro=0 ; nro<nbre ; nro++)
+ if (tab_vertex [nro] == element)
+ return nro;
+ return NOTHING;
+}
+// ========================================================= saveVtk (avec nro)
+int Elements::saveVtk (cpchar radical, int &nro)
+{
+ char num[8];
+ sprintf (num, "%d", nro);
+ nro ++;
+
+ string filename = radical;
+ filename += num;
+ filename += ".vtk";
+ int ier = saveVtk (filename.c_str());
+ return ier;
+}
+