-// ------------------------------------------------------------ inlining
-// ============================================================ getQuad
-inline Quad* Hexa::getQuad (int nro)
-{
- Quad* elt = NULL;
- if (nro >=0 && nro < HQ_MAXI && el_status == HOK && h_quad [nro]->isValid())
- elt = h_quad [nro];
-
- return elt;
-}
-// ============================================================ getEdge
-inline Edge* Hexa::getEdge (int nro)
-{
- Edge* elt = NULL;
- if (nro >=0 && nro < HE_MAXI && el_status == HOK && h_edge [nro]->isValid())
- elt = h_edge [nro];
-
- return elt;
-}
-// ============================================================ getVertex
-inline Vertex* Hexa::getVertex (int nro)
-{
- Vertex* elt = NULL;
- if (nro >=0 && nro < HV_MAXI && el_status == HOK && h_vertex [nro]->isValid())
- elt = h_vertex [nro];
-
- return elt;
-}
-// ============================================================ getCenter
-inline double* Hexa::getCenter (double centre[])
-{
- centre [dir_x] = centre [dir_y] = centre [dir_z] = 0;
-
- for (int nv=0 ; nv<HV_MAXI ; nv++)
- {
- centre [dir_x] += h_vertex[nv]->getX ();
- centre [dir_y] += h_vertex[nv]->getY ();
- centre [dir_z] += h_vertex[nv]->getZ ();
- }
-
- centre [dir_x] /= HV_MAXI;
- centre [dir_y] /= HV_MAXI;
- centre [dir_z] /= HV_MAXI;
- return centre;
-}
-// =============================================================== definedBy
-inline bool Hexa::definedBy (Vertex* v1, Vertex* v2)
-{
- for (int n1=0 ; n1< HV_MAXI ; n1++)
- {
-// ( Diagonale ) Dessus
- int n2 = (n1 + 2) MODULO HV_MAXI + HV_MAXI;
- if ( (v1 == h_vertex[n1] && v2 == h_vertex[n2])
- || (v1 == h_vertex[n2] && v2 == h_vertex[n1])) return true;
- }
- return false;
-}
-// =============================================================== definedBy
-inline bool Hexa::definedBy (Quad* qa, Quad* qb)
-{
- for (int nc=0 ; nc< 3 ; nc++)
- {
- if ( (qa == h_quad[2*nc] && qb == h_quad[2*nc+1])
- || (qa == h_quad[2*nc+1] && qb == h_quad[2*nc])) return true;
- }
- return false;
-}
-// =============================================================== setScalar
-inline void Hexa::setScalar (double val)
-{
- for (int nc=0 ; nc< HV_MAXI ; nc++)
- h_vertex[nc] -> setScalar (val);
-}
-// ============================================================== markElements
-inline void Hexa::markElements (int marque)
-{
- for (int nc=0 ; nc< HQ_MAXI ; nc++) h_quad [nc] -> setMark (marque);
- for (int nc=0 ; nc< HE_MAXI ; nc++) h_edge [nc] -> setMark (marque);
- for (int nc=0 ; nc< HV_MAXI ; nc++) h_vertex[nc] -> setMark (marque);
-}
-// =============================================================== duplicate
-inline void Hexa::duplicate ()
-{
- h_clone = new Hexa (GetClone (h_quad [Q_A]),
- GetClone (h_quad [Q_B]),
- GetClone (h_quad [Q_C]),
- GetClone (h_quad [Q_D]),
- GetClone (h_quad [Q_E]),
- GetClone (h_quad [Q_F]));
-}