Salome HOME
22222: [CEA 820] GHS3D in salome 7.2.0 ten times slower than in salome 6.6.0
[modules/smesh.git] / src / SMESH / SMESH_Algo.cxx
index 9f3ed80532907460f7c3078a881b8ecf339a59bf..63d2320278cc07e916c5835dd666d7bea1a52b9c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -262,15 +262,16 @@ const vector < string > &SMESH_Algo::GetCompatibleHypothesis()
 const list <const SMESHDS_Hypothesis *> &
 SMESH_Algo::GetUsedHypothesis(SMESH_Mesh &         aMesh,
                               const TopoDS_Shape & aShape,
-                              const bool           ignoreAuxiliary)
+                              const bool           ignoreAuxiliary) const
 {
-  _usedHypList.clear();
+  SMESH_Algo* me = const_cast< SMESH_Algo* >( this );
+  me->_usedHypList.clear();
   SMESH_HypoFilter filter;
   if ( InitCompatibleHypoFilter( filter, ignoreAuxiliary ))
   {
-    aMesh.GetHypotheses( aShape, filter, _usedHypList, true );
+    aMesh.GetHypotheses( aShape, filter, me->_usedHypList, true );
     if ( ignoreAuxiliary && _usedHypList.size() > 1 )
-      _usedHypList.clear(); //only one compatible hypothesis allowed
+      me->_usedHypList.clear(); //only one compatible hypothesis allowed
   }
   return _usedHypList;
 }
@@ -286,12 +287,13 @@ SMESH_Algo::GetUsedHypothesis(SMESH_Mesh &         aMesh,
 const list<const SMESHDS_Hypothesis *> &
 SMESH_Algo::GetAppliedHypothesis(SMESH_Mesh &         aMesh,
                                  const TopoDS_Shape & aShape,
-                                 const bool           ignoreAuxiliary)
+                                 const bool           ignoreAuxiliary) const
 {
-  _appliedHypList.clear();
+  SMESH_Algo* me = const_cast< SMESH_Algo* >( this );
+  me->_appliedHypList.clear();
   SMESH_HypoFilter filter;
   if ( InitCompatibleHypoFilter( filter, ignoreAuxiliary ))
-    aMesh.GetHypotheses( aShape, filter, _appliedHypList, false );
+    aMesh.GetHypotheses( aShape, filter, me->_appliedHypList, false );
 
   return _appliedHypList;
 }
@@ -314,45 +316,6 @@ double SMESH_Algo::EdgeLength(const TopoDS_Edge & E)
   return length;
 }
 
-//================================================================================
-/*!
- * \brief Calculate normal of a mesh face
- */
-//================================================================================
-
-bool SMESH_Algo::FaceNormal(const SMDS_MeshElement* F, gp_XYZ& normal, bool normalized)
-{
-  if ( !F || F->GetType() != SMDSAbs_Face )
-    return false;
-
-  normal.SetCoord(0,0,0);
-  int nbNodes = F->IsQuadratic() ? F->NbNodes()/2 : F->NbNodes();
-  for ( int i = 0; i < nbNodes-2; ++i )
-  {
-    gp_XYZ p[3];
-    for ( int n = 0; n < 3; ++n )
-    {
-      const SMDS_MeshNode* node = F->GetNode( i + n );
-      p[n].SetCoord( node->X(), node->Y(), node->Z() );
-    }
-    normal += ( p[2] - p[1] ) ^ ( p[0] - p[1] );
-  }
-  double size2 = normal.SquareModulus();
-  bool ok = ( size2 > numeric_limits<double>::min() * numeric_limits<double>::min());
-  if ( normalized && ok )
-    normal /= sqrt( size2 );
-
-  return ok;
-}
-
-/*
- * Moved to SMESH_MesherHelper
- */
-// bool SMESH_Algo::IsReversedSubMesh (const TopoDS_Face&  theFace,
-//                                     SMESHDS_Mesh*       theMeshDS)
-// {
-// }
-
 //================================================================================
 /*!
  * \brief Just return false as the algorithm does not hold parameters values
@@ -583,21 +546,6 @@ const SMDS_MeshNode* SMESH_Algo::VertexNode(const TopoDS_Vertex& V,
   return 0;
 }
 
-//=======================================================================
-//function : GetCommonNodes
-//purpose  : Return nodes common to two elements
-//=======================================================================
-
-vector< const SMDS_MeshNode*> SMESH_Algo::GetCommonNodes(const SMDS_MeshElement* e1,
-                                                         const SMDS_MeshElement* e2)
-{
-  vector< const SMDS_MeshNode*> common;
-  for ( int i = 0 ; i < e1->NbNodes(); ++i )
-    if ( e2->GetNodeIndex( e1->GetNode( i )) >= 0 )
-      common.push_back( e1->GetNode( i ));
-  return common;
-}
-
 //=======================================================================
 //function : GetMeshError
 //purpose  : Finds topological errors of a sub-mesh