Salome HOME
[bos #32517][EDF] Dynamic log messages switched on and off by SALOME_VERBOSE environm...
[modules/smesh.git] / src / SMESH / SMESH_subMesh.cxx
index 751cf8b791104e823d29969e7c0e2424d579bc7c..0b697d7a0b9eeaafb6d6a37a3cd2aa5898edfb5d 100644 (file)
@@ -65,7 +65,6 @@ using namespace std;
 //#define PRINT_WHO_COMPUTE_WHAT
 #endif
 
-#define PRINT_WHO_COMPUTE_WHAT
 //=============================================================================
 /*!
  * \brief Allocate some memory at construction and release it at destruction.
@@ -207,20 +206,6 @@ SMESH_Algo* SMESH_subMesh::GetAlgo() const
   return _algo;
 }
 
-//================================================================================
-/*!
- * \brief Returns a current algorithm
- */
-//================================================================================
-
-SMESH_Algo* SMESH_subMesh::CopyAlgo() const
-{
-  //SMESH_Algo* algo = (SMESH_Algo*) new StdMeshers_Regular_1D(666, _father->GetGent());
-  SMESH_Algo* algo;
-
-  return algo;
-}
-
 //================================================================================
 /*!
  * \brief Allow algo->Compute() if a sub-shape of lower dim is meshed but
@@ -271,7 +256,7 @@ bool SMESH_subMesh::IsMeshComputed() const
       TopExp_Explorer exp( _subShape, (TopAbs_ShapeEnum) type );
       for ( ; exp.More(); exp.Next() )
       {
-        if ( SMESHDS_SubMesh * smDS = meshDS->MeshElements( exp.Current() ) )
+        if ( SMESHDS_SubMesh * smDS = meshDS->MeshElements( exp.Current() ))
         {
           bool computed = (dim > 0) ? smDS->NbElements() : smDS->NbNodes();
           if ( computed )
@@ -624,7 +609,7 @@ bool SMESH_subMesh::IsApplicableHypothesis(const SMESH_Hypothesis* theHypothesis
  *  \param [in] event - what happens
  *  \param [in] anHyp - a hypothesis
  *  \return SMESH_Hypothesis::Hypothesis_Status - a treatment result.
- *
+ * 
  * Optional description of a problematic situation (if any) can be retrieved
  * via GetComputeError().
  */
@@ -1048,8 +1033,8 @@ SMESH_Hypothesis::Hypothesis_Status
 
   // detect algorithm hiding
   //
-  if ( ret == SMESH_Hypothesis::HYP_OK &&
-       ( event == ADD_ALGO || event == ADD_FATHER_ALGO ) && algo &&
+  if ( ret == SMESH_Hypothesis::HYP_OK && 
+       ( event == ADD_ALGO || event == ADD_FATHER_ALGO ) && algo && 
        algo->GetName() == anHyp->GetName() )
   {
     // is algo hidden?
@@ -1407,16 +1392,12 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
     else if (( event == COMPUTE || event == COMPUTE_SUBMESH )
              && !_alwaysComputed )
     {
-      // LOCK: Adding node to mesh
-      _father->Lock();
       const TopoDS_Vertex & V = TopoDS::Vertex( _subShape );
       gp_Pnt P = BRep_Tool::Pnt(V);
       if ( SMDS_MeshNode * n = _father->GetMeshDS()->AddNode(P.X(), P.Y(), P.Z()) ) {
         _father->GetMeshDS()->SetNodeOnVertex(n,_Id);
         _computeState = COMPUTE_OK;
       }
-      _father->Unlock();
-      // UNLOCK
     }
     if ( event == MODIF_ALGO_STATE )
       cleanDependants();
@@ -1520,12 +1501,8 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
     case COMPUTE_SUBMESH:
       {
         algo = GetAlgo();
-        SMESH_Algo* algo2 = CopyAlgo();
-        cout << "Algo2" << algo2;
         ASSERT(algo);
-        //_father->Lock();
-        //ret = algo->CheckHypothesis((*_father), _subShape, hyp_status);
-        //_father->Unlock();
+        ret = algo->CheckHypothesis((*_father), _subShape, hyp_status);
         if (!ret)
         {
           MESSAGE("***** verify compute state *****");
@@ -1536,9 +1513,7 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
         TopoDS_Shape shape = _subShape;
         algo->SubMeshesToCompute().assign( 1, this );
         // check submeshes needed
-        // Forcing to false for parallel run
-        // TODO: Remove forced false
-        if (_father->HasShapeToMesh() && false) {
+        if (_father->HasShapeToMesh() ) {
           bool subComputed = false, subFailed = false;
           if (!algo->OnlyUnaryInput()) {
             //  --- commented for bos#22320 to compute all sub-shapes at once if possible;
@@ -1667,10 +1642,8 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
 #ifdef PRINT_WHO_COMPUTE_WHAT
         for (subS.ReInit(); subS.More(); subS.Next())
         {
-          _father->Lock();
-          const std::list <const SMESHDS_Hypothesis *> hyps =
+          const std::list <const SMESHDS_Hypothesis *> & hyps =
             _algo->GetUsedHypothesis( *_father, _subShape );
-          _father->Unlock();
           SMESH_Comment hypStr;
           if ( !hyps.empty() )
           {
@@ -1756,9 +1729,7 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
             updateDependantsState( SUBMESH_COMPUTED );
         }
         // let algo clear its data gathered while algo->Compute()
-        //_father->Lock();
-        //algo->CheckHypothesis((*_father), _subShape, hyp_status);
-        //_father->Unlock();
+        algo->CheckHypothesis((*_father), _subShape, hyp_status);
       }
       break;
     case COMPUTE_CANCELED:               // nothing to do
@@ -1926,7 +1897,7 @@ bool SMESH_subMesh::ComputeStateEngine(compute_event event)
     break;
   }
 
-  //notifyListenersOnEvent( event, COMPUTE_EVENT );
+  notifyListenersOnEvent( event, COMPUTE_EVENT );
 
   return ret;
 }
@@ -2126,7 +2097,7 @@ void SMESH_subMesh::updateDependantsState(const compute_event theEvent)
 
 //=======================================================================
 //function : cleanDependants
-//purpose  :
+//purpose  : 
 //=======================================================================
 
 void SMESH_subMesh::cleanDependants()
@@ -2150,7 +2121,7 @@ void SMESH_subMesh::cleanDependants()
 
 //=======================================================================
 //function : removeSubMeshElementsAndNodes
-//purpose  :
+//purpose  : 
 //=======================================================================
 
 void SMESH_subMesh::removeSubMeshElementsAndNodes()
@@ -2194,10 +2165,8 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * /*theGen*/,
     return _subShape;
 
   const bool skipAuxHyps = false;
-  _father->Lock();
   list<const SMESHDS_Hypothesis*> usedHyps =
     theAlgo->GetUsedHypothesis( *_father, _subShape, skipAuxHyps ); // copy
-  _father->Lock();
   std::list < TopoDS_Shape >  assiShapes = theAlgo->GetAssignedShapes();
 
   // put in a compound all shapes with the same hypothesis assigned
@@ -2225,7 +2194,6 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * /*theGen*/,
     }
     else if ( subMesh->GetComputeState() == READY_TO_COMPUTE )
     {
-      _father->Lock();
       SMESH_Algo* anAlgo = subMesh->GetAlgo();
       if (( anAlgo->IsSameName( *theAlgo )) && // same algo
           ( anAlgo->GetUsedHypothesis( *_father, S, skipAuxHyps ) == usedHyps ) && // same hyps
@@ -2237,7 +2205,6 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * /*theGen*/,
           theSubComputed = false;
         theSubs.push_back( subMesh );
       }
-      _father->Unlock();
     }
   }
 
@@ -2330,7 +2297,7 @@ SMESH_subMesh::OwnListenerData::OwnListenerData( SMESH_subMesh* sm, EventListene
  * \param listener - the listener to store
  * \param data - the listener data to store
  * \param where - the submesh to store the listener and it's data
- *
+ * 
  * It remembers the submesh where it puts the listener in order to delete
  * them when HYP_OK algo_state is lost
  * After being set, event listener is notified on each event of where submesh.
@@ -2352,7 +2319,7 @@ void SMESH_subMesh::SetEventListener(EventListener*     listener,
  * \brief Sets an event listener and its data to a submesh
  * \param listener - the listener to store
  * \param data - the listener data to store
- *
+ * 
  * After being set, event listener is notified on each event of a submesh.
  */
 //================================================================================
@@ -2562,7 +2529,7 @@ void SMESH_subMesh::loadDependentMeshes()
  * \param subMesh - the submesh where the event occurs
  * \param data - listener data stored in the subMesh
  * \param hyp - hypothesis, if eventType is algo_event
- *
+ * 
  * The base implementation translates CLEAN event to the subMesh
  * stored in listener data. Also it sends SUBMESH_COMPUTED event in case of
  * successful COMPUTE event.