From 36c9ad01c3fe97992e19ce757282bd309908d5fd Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 28 Jul 2014 18:59:52 +0400 Subject: [PATCH] 0052461: Viscous layers 2D on Cone --- src/StdMeshers/StdMeshers_Quadrangle_2D.cxx | 2 +- src/StdMeshers/StdMeshers_ViscousLayers2D.cxx | 39 ++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx index da85567a9..e73f7bb11 100644 --- a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx +++ b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx @@ -275,7 +275,7 @@ bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh, "two opposite sides should have same number of segments, " "but actual number of segments is different on all sides. " "'Standard' transion has been used."); - else + else if ( ! ( n1 == n3 && n2 == n4 )) error( COMPERR_WARNING, "To use 'Reduced' transition, " "two opposite sides should have an even difference in number of segments. " diff --git a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx index 7e5134380..04e895e7e 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx @@ -1571,9 +1571,46 @@ bool _ViscousBuilder2D::shrink() myEdgeSM->SetUVPtStructVec( nodeDataVec ); existingNodesFound = true; + break; } } // loop on FACEs sharing E + // Commented as a case with a seam EDGE (issue 0052461) is hard to support + // because SMESH_ProxyMesh can't hold different sub-meshes for two + // 2D representations of the seam. But such a case is not a real practice one. + // Check if L is an already shrinked seam + // if ( adjFace.IsNull() && _helper.IsRealSeam( edgeID )) + // { + // for ( int iL2 = iL1-1; iL2 > -1; --iL2 ) + // { + // _PolyLine& L2 = _polyLineVec[ iL2 ]; + // if ( edgeID == L2._wire->EdgeID( L2._edgeInd )) + // { + // // copy layer nodes + // const int seamPar = _helper.GetPeriodicIndex(); + // vector& uvVec = L._lEdges.front()._uvRefined; + // if ( isShrinkableL ) + // { + // L._leftNodes = L2._rightNodes; + // uvVec = L2._lEdges.back()._uvRefined; + // } + // if ( isShrinkableR ) + // { + // L._rightNodes = L2._leftNodes; + // uvVec = L2._lEdges.front()._uvRefined; + // } + // for ( size_t i = 0; i < uvVec.size(); ++i ) + // { + // gp_XY & uv = uvVec[i]; + // uv.SetCoord( seamPar, _helper.GetOtherParam( uv.Coord( seamPar ))); + // } + + // existingNodesFound = true; + // break; + // } + // } + // } + if ( existingNodesFound ) continue; // nothing more to do in this case @@ -1912,7 +1949,7 @@ bool _ViscousBuilder2D::toShrinkForAdjacent( const TopoDS_Face& adjFace, const TopoDS_Edge& E, const TopoDS_Vertex& V) { - if ( _noShrinkVert.count( getMeshDS()->ShapeToIndex( V ))) + if ( _noShrinkVert.count( getMeshDS()->ShapeToIndex( V )) || adjFace.IsNull() ) return false; TopoDS_Shape hypAssignedTo; -- 2.39.2