Salome HOME
Fix sub-mesh update upon shaper geometry change
[modules/smesh.git] / src / StdMeshers / StdMeshers_ViscousLayers.cxx
index 72cdff35f606d09c861ff43f409bcac402f22ddf..31669f15c2c440288befa861a784fe88bd430dd2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -43,6 +43,7 @@
 #include "SMESH_MesherHelper.hxx"
 #include "SMESH_ProxyMesh.hxx"
 #include "SMESH_subMesh.hxx"
+#include "SMESH_MeshEditor.hxx"
 #include "SMESH_subMeshEventListener.hxx"
 #include "StdMeshers_FaceSide.hxx"
 #include "StdMeshers_ViscousLayers2D.hxx"
@@ -97,7 +98,7 @@
 #include <unordered_map>
 
 #ifdef _DEBUG_
-#define __myDEBUG
+//#define __myDEBUG
 //#define __NOT_INVALIDATE_BAD_SMOOTH
 //#define __NODES_AT_POS
 #endif
@@ -1099,7 +1100,7 @@ namespace VISCOUS_3D
   /*!
    * \brief Class of temporary mesh face.
    * We can't use SMDS_FaceOfNodes since it's impossible to set it's ID which is
-   * needed because SMESH_ElementSearcher internaly uses set of elements sorted by ID
+   * needed because SMESH_ElementSearcher internally uses set of elements sorted by ID
    */
   struct _TmpMeshFace : public SMDS_PolygonalFaceOfNodes
   {
@@ -1218,8 +1219,8 @@ namespace VISCOUS_3D
 //================================================================================
 // StdMeshers_ViscousLayers hypothesis
 //
-StdMeshers_ViscousLayers::StdMeshers_ViscousLayers(int hypId, int studyId, SMESH_Gen* gen)
-  :SMESH_Hypothesis(hypId, studyId, gen),
+StdMeshers_ViscousLayers::StdMeshers_ViscousLayers(int hypId, SMESH_Gen* gen)
+  :SMESH_Hypothesis(hypId, gen),
    _isToIgnoreShapes(1), _nbLayers(1), _thickness(1), _stretchFactor(1),
    _method( SURF_OFFSET_SMOOTH )
 {
@@ -1590,7 +1591,7 @@ namespace VISCOUS_3D
 
   //================================================================================
   /*!
-   * \brief Computes mimimal distance of face in-FACE nodes from an EDGE
+   * \brief Computes minimal distance of face in-FACE nodes from an EDGE
    *  \param [in] face - the mesh face to treat
    *  \param [in] nodeOnEdge - a node on the EDGE
    *  \param [out] faceSize - the computed distance
@@ -1694,8 +1695,8 @@ namespace VISCOUS_3D
       py = _pyStream = new ofstream(fname);
       *py << "import SMESH" << endl
           << "from salome.smesh import smeshBuilder" << endl
-          << "smesh  = smeshBuilder.New(salome.myStudy)" << endl
-          << "meshSO = smesh.GetCurrentStudy().FindObjectID('0:1:2:" << tag <<"')" << endl
+          << "smesh  = smeshBuilder.New()" << endl
+          << "meshSO = salome.myStudy.FindObjectID('0:1:2:" << tag <<"')" << endl
           << "mesh   = smesh.Mesh( meshSO.GetObject() )"<<endl;
       theNbPyFunc = 0;
     }
@@ -4090,7 +4091,7 @@ gp_XYZ _OffsetPlane::GetCommonPoint(bool&                 isFound,
 
 //================================================================================
 /*!
- * \brief Find 2 neigbor nodes of a node on EDGE
+ * \brief Find 2 neighbor nodes of a node on EDGE
  */
 //================================================================================
 
@@ -4135,7 +4136,7 @@ bool _ViscousBuilder::findNeiborsOnEdge(const _LayerEdge*     edge,
 
 //================================================================================
 /*!
- * \brief Set _curvature and _2neibors->_plnNorm by 2 neigbor nodes residing the same EDGE
+ * \brief Set _curvature and _2neibors->_plnNorm by 2 neighbor nodes residing the same EDGE
  */
 //================================================================================
 
@@ -4866,7 +4867,7 @@ bool _ViscousBuilder::smoothAndCheck(_SolidData& data,
 
           if ( nbBad == oldBadNb  &&
                nbBad > 0 &&
-               step < stepLimit ) // smooth w/o chech of validity
+               step < stepLimit ) // smooth w/o check of validity
           {
             dumpFunctionEnd();
             dumpFunction(SMESH_Comment("smoothWoCheck")<<data._index<<"_Fa"<<sInd
@@ -6680,6 +6681,7 @@ void _ViscousBuilder::findCollisionEdges( _SolidData& data, SMESH_MesherHelper&
     _EdgesOnShape& eos = data._edgesOnShape[iS];
     if ( eos._edges.empty() ) continue;
     if ( eos.ShapeType() != TopAbs_EDGE && eos.ShapeType() != TopAbs_VERTEX ) continue;
+    if ( !eos._sWOL.IsNull() ) continue; // PAL23566
 
     for ( size_t i = 0; i < eos._edges.size(); ++i )
     {
@@ -8740,7 +8742,7 @@ int _LayerEdge::Smooth(const int step, const bool isConcaveFace, bool findBest )
 
 //================================================================================
 /*!
- * \brief Chooses a smoothing technic giving a position most close to an initial one.
+ * \brief Chooses a smoothing technique giving a position most close to an initial one.
  *        For a correct result, _simplices must contain nodes lying on geometry.
  */
 //================================================================================
@@ -8951,7 +8953,7 @@ gp_XYZ _LayerEdge::smoothAngular()
 
 //================================================================================
 /*!
- * \brief Computes a new node position using weigthed node positions
+ * \brief Computes a new node position using weighted node positions
  */
 //================================================================================
 
@@ -11348,7 +11350,7 @@ bool _SmoothNode::Smooth(int&                  nbBad,
 
 //================================================================================
 /*!
- * \brief Computes new UV using angle based smoothing technic
+ * \brief Computes new UV using angle based smoothing technique
  */
 //================================================================================