From 52762f26394e31b227967517395453d61311d80a Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 27 Aug 2021 18:45:00 +0300 Subject: [PATCH] bos #20643 EDF 22805 - Pb Viscous Layer 1) Fix computing average thickness of layers 2) Don't block an edge with not limited _maxLen if it not reached an obstacle yet --- src/StdMeshers/StdMeshers_ViscousLayers.cxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.cxx b/src/StdMeshers/StdMeshers_ViscousLayers.cxx index 47412786e..fa4853668 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers.cxx @@ -4934,7 +4934,7 @@ bool _ViscousBuilder::inflate(_SolidData& data) if ( eos._edges[i]->_nodes.size() > 1 ) avgThick += Min( 1., eos._edges[i]->_len / shapeTgtThick ); else - avgThick += shapeTgtThick; + avgThick += 1; nbActiveEdges += ( ! eos._edges[i]->Is( _LayerEdge::BLOCKED )); } } @@ -5448,8 +5448,11 @@ bool _ViscousBuilder::smoothAndCheck(_SolidData& data, // intersection not ignored - if ( toBlockInfaltion && - dist < ( eos._edges[i]->_len * theThickToIntersection )) + double minDist = 0; + if ( eos._edges[i]->_maxLen < 0.99 * eos._hyp.GetTotalThickness() ) // limited length + minDist = eos._edges[i]->_len * theThickToIntersection; + + if ( toBlockInfaltion && dist < minDist ) { if ( is1stBlocked ) { is1stBlocked = false; // debug dumpFunction(SMESH_Comment("blockIntersected") <