Salome HOME
Updated copyright comment
[modules/hexablock.git] / src / HEXABLOCK / HexDocument_trans.cxx
old mode 100755 (executable)
new mode 100644 (file)
index f63b5f1..eaaf08e
@@ -1,12 +1,12 @@
 
 // C++ : La clase principale de Hexa
 
-// Copyright (C) 2009-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2009-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 #include "HexHexa.hxx"
 
 #include "HexElements.hxx"
-#include "HexCrossElements.hxx"
 
 #include "HexVector.hxx"
-#include "HexCylinder.hxx"
-#include "HexPipe.hxx"
 #include "HexMatrix.hxx"
 #include "HexCloner.hxx"
 #include "HexPropagation.hxx"
@@ -46,55 +43,80 @@ BEGIN_NAMESPACE_HEXA
 // ========================================================= performTranslation
 int Document::performTranslation (Elements* elts, Vector* trans)
 { 
+   DumpStart ("performTranslation", elts << trans);
+
    Matrix matrice;
    matrice.defTranslation (trans);
 
    int    ier = elts->transform (&matrice);
+
+   DumpReturn (ier);
    return ier;
 }
 // ==================================================== performScale
 int Document::performScale (Elements* elts, Vertex* ver, double k)
 { 
+   DumpStart ("performScale", elts << ver << k);
+
    Matrix matrice;
    matrice.defScale (ver, k);
 
    int    ier = elts->transform (&matrice);
+
+   DumpReturn (ier);
    return ier;
 }
 // ==================================================== performRotation
 int Document::performRotation (Elements* elts, Vertex* ver, Vector* vec, double angle)
 { 
+   DumpStart ("performRotation", elts << ver << vec << angle);
+
    Matrix matrice;
    matrice.defRotation (ver, vec, angle);
 
    int    ier = elts->transform (&matrice);
+
+   DumpReturn (ier);
    return ier;
 }
 // ==================================================== performSymmetryPoint
 int Document::performSymmetryPoint (Elements* elts, Vertex* ver)
 { 
+   DumpStart ("performSymmetryPoint", elts << ver);
+
    Matrix matrice;
    matrice.defSymmetryPoint (ver);
 
    int    ier = elts->transform (&matrice);
+
+   DumpReturn (ier);
    return ier;
 }
 // ==================================================== performSymmetryPlane
 int Document::performSymmetryPlane (Elements* elts, Vertex* ver, Vector* vec)    
 { 
+   DumpStart ("performSymmetryPlane", elts << ver << vec);
+
    Matrix matrice;
    matrice.defSymmetryPlane (ver, vec);
 
    int    ier = elts->transform (&matrice);
+
+   DumpReturn (ier);
    return ier;
 }
+
 // ==================================================== performSymmetryLine
 int Document::performSymmetryLine (Elements* elts, Vertex* ver, Vector* vec)
 { 
+   DumpStart ("performSymmetryLine", elts << ver << vec);
+
    Matrix matrice;
    matrice.defSymmetryLine (ver, vec);
 
    int    ier = elts->transform (&matrice);
+
+   DumpReturn (ier);
    return ier;
 }
 // -------------------------------------------------------- 
@@ -113,56 +135,80 @@ Elements* Document::clonerElements (Elements* table, Matrix* matrice)
 // ========================================================= makeTranslation
 Elements* Document::makeTranslation (Elements* table, Vector* trans)
 {
+   DumpStart ("makeTranslation", table  << trans);
+
    Matrix  matrice;
    matrice.defTranslation (trans);
 
    Elements* grille = clonerElements (table, &matrice);
-   return    grille;
+
+   DumpReturn (grille);
+   return  grille;
 }
 // ========================================================= makeScale
 Elements* Document::makeScale (Elements* table, Vertex* ver, double k)
 {
+   DumpStart ("makeScale", table  << ver << k);
+
    Matrix  matrice;
    matrice.defScale (ver, k);
 
    Elements* grille = clonerElements (table, &matrice);
+
+   DumpReturn (grille);
    return    grille;
 }
 // ========================================================= makeRotation
 Elements* Document::makeRotation (Elements* table, Vertex* ver, Vector* vec, 
-                                double angle)
+                                  double angle)
 {
+   DumpStart ("makeRotation", table  << ver << vec << angle);
+
    Matrix  matrice;
    matrice.defRotation (ver, vec, angle);
 
    Elements* grille = clonerElements (table, &matrice);
+
+   DumpReturn (grille);
    return    grille;
 }
 // ========================================================= makeSymmetryPoint
 Elements* Document::makeSymmetryPoint (Elements* table, Vertex* ver)
 {
+   DumpStart ("makeSymmetryPoint", table  << ver);
+
    Matrix  matrice;
    matrice.defSymmetryPoint (ver);
 
    Elements* grille = clonerElements (table, &matrice);
+
+   DumpReturn (grille);
    return    grille;
 }
 // ========================================================= makeSymmetryLine
 Elements* Document::makeSymmetryLine (Elements* table, Vertex* ver, Vector* vec)
 {
+   DumpStart ("makeSymmetryLine", table  << ver << vec);
+
    Matrix  matrice;
    matrice.defSymmetryLine (ver, vec);
 
    Elements* grille = clonerElements (table, &matrice);
+
+   DumpReturn (grille);
    return    grille;
 }
 // ========================================================= makeSymmetryPlane
 Elements* Document::makeSymmetryPlane (Elements* table, Vertex* ver, Vector* vec)
 {
+   DumpStart ("makeSymmetryPlane", table  << ver << vec);
+
    Matrix  matrice;
    matrice.defSymmetryPlane (ver, vec);
 
    Elements* grille = clonerElements (table, &matrice);
+
+   DumpReturn (grille);
    return    grille;
 }
 // ----------------------------------------------------------------------
@@ -171,39 +217,79 @@ Elements* Document::makeSymmetryPlane (Elements* table, Vertex* ver, Vector* vec
 // ========================================================= removeHexa
 int Document::removeHexa (Hexa* cell)
 {
-   if (cell==NULL)
-      return HERR;
+   DumpStart ("removeHexa", cell);
+
+   int ier = HOK;
+   if (BadElement (cell))
+      {
+      ier = HERR;
+      DumpReturn (ier);
+      return ier;
+      }
+
+   update ();
+   Quads menage;
+   for (int nro = 0 ; nro < HQ_MAXI ; ++nro)
+       {
+       Quad* quad = cell->getQuad (nro);
+       if (EltIsValid(quad) && quad->getNbrParents()<=1)
+          menage.push_back (quad);
+       }
 
    cell->remove ();
-   return  HOK;
+   int nbdel = menage.size();
+   for (int nro = 0 ; nro < nbdel ; ++nro)
+       menage[nro]->remove();
+
+   DumpReturn (HOK);
+   return HOK;
 }
 // ========================================================= removeQuad
 int Document::removeQuad (Quad* cell)
 {
+   DumpStart ("removeQuad", cell);
+
+   int ier = HOK;
    if (cell==NULL)
-      return HERR;
+      ier = HERR;
+   else
+      cell->remove ();
 
-   cell->remove ();
-   return  HOK;
+   DumpReturn (ier);
+   return ier;
 }
 // ========================================================= removeElements
 int Document::removeElements (Elements* bloc)
 {
+   DumpStart ("removeElements", bloc);
+
+   int ier = HOK;
+
    if (bloc==NULL)
-      return HERR;
+      ier = HERR;
+   else
+      bloc->remove ();
 
-   bloc->remove ();
-   return  HOK;
+   DumpReturn (ier);
+   return ier;
 }
 // ====================================================== removeConnectedHexa
 int Document::removeConnectedHexa (Hexa* cell)
 {
+   DumpStart ("removeConnectedHexa", cell);
+
+   int ier = HOK;
+
    if (cell==NULL)
-      return HERR;
+      ier = HERR;
+   else
+      {
+      update ();
+      cell->removeConnected ();
+      }
 
-   update ();
-   cell->removeConnected ();
-   return  HOK;
+   DumpReturn (ier);
+   return ier;
 }
 // ========================================================= dumpPropagation
 void Document::dumpPropagation ()
@@ -243,8 +329,6 @@ void Document::dumpPropagation ()
 void Document::reorderFaces ()
 {
    majReferences ();
-   Real3 cg, orig, pi, pj, vi, vj, vk;
-
    for (EltBase* elt = doc_first_elt[EL_QUAD]->next (); elt!=NULL;
                  elt = elt->next())
        {