Salome HOME
bos #20643 EDF 22805 - Pb Viscous Layer
authoreap <eap@opencascade.com>
Wed, 18 Aug 2021 17:36:17 +0000 (20:36 +0300)
committereap <eap@opencascade.com>
Wed, 18 Aug 2021 17:36:17 +0000 (20:36 +0300)
It's the 2nd step of fixing

src/StdMeshers/StdMeshers_ViscousLayers.cxx

index 21bcc6c3c7a18aeda8190c0104c2464169112f6e..4ed66607ada5ded28596be8065e4f7208ce025f0 100644 (file)
@@ -2781,7 +2781,7 @@ bool _ViscousBuilder::makeLayer(_SolidData& data)
           }
           dumpMove(edge->_nodes.back());
 
-          if ( edge->_cosin > faceMaxCosin )
+          if ( edge->_cosin > faceMaxCosin && !edge->Is( _LayerEdge::BLOCKED ))
           {
             faceMaxCosin = edge->_cosin;
             maxCosinEdge = edge;
@@ -10497,7 +10497,8 @@ bool _ViscousBuilder::refine(_SolidData& data)
       if ( n2eMap && (( n2e = n2eMap->find( edge._nodes[0] )) != n2eMap->end() ))
       {
         edgeOnSameNode = n2e->second;
-        useExistingPos = ( edgeOnSameNode->_len < edge._len );
+        useExistingPos = ( edgeOnSameNode->_len < edge._len ||
+                           segLen[0] == segLen.back() ); // too short inflation step (bos #20643)
         const gp_XYZ& otherTgtPos = edgeOnSameNode->_pos.back();
         SMDS_PositionPtr  lastPos = tgtNode->GetPosition();
         if ( isOnEdge )