mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-10 03:13:07 +05:00
22580: EDF 8049 SMESH: Problems with viscous layer
Pb on a fillet at a large first inflation step
This commit is contained in:
parent
5e83e1e8e9
commit
9d93189fdb
@ -1627,7 +1627,7 @@ void _ViscousBuilder::limitStepSize( _SolidData& data,
|
|||||||
*/
|
*/
|
||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
void _ViscousBuilder::limitStepSize( _SolidData& data, const double minSize)
|
void _ViscousBuilder::limitStepSize( _SolidData& data, const double minSize )
|
||||||
{
|
{
|
||||||
if ( minSize < data._stepSize )
|
if ( minSize < data._stepSize )
|
||||||
{
|
{
|
||||||
@ -1707,6 +1707,8 @@ void _ViscousBuilder::findSimplexTestEdges( _SolidData& data,
|
|||||||
inDir * minDir.XYZ() < 0 )
|
inDir * minDir.XYZ() < 0 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
limitStepSize( data, 0.9 / surfCurvature );
|
||||||
|
|
||||||
// add _simplices to the _LayerEdge's
|
// add _simplices to the _LayerEdge's
|
||||||
for ( size_t iE = 0; iE < ledgesOnEdges.size(); ++iE )
|
for ( size_t iE = 0; iE < ledgesOnEdges.size(); ++iE )
|
||||||
{
|
{
|
||||||
@ -3099,19 +3101,19 @@ bool _ViscousBuilder::updateNormals( _SolidData& data,
|
|||||||
if ( FF1[0].IsNull() || FF2[0].IsNull() )
|
if ( FF1[0].IsNull() || FF2[0].IsNull() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// // get a new normal for edge1
|
// get a new normal for edge1
|
||||||
bool ok;
|
bool ok;
|
||||||
gp_Vec dir1 = edge1->_normal, dir2 = edge2->_normal;
|
gp_Vec dir1 = edge1->_normal, dir2 = edge2->_normal;
|
||||||
if ( edge1->_cosin < 0 )
|
if ( edge1->_cosin < 0 )
|
||||||
dir1 = getFaceDir( FF1[0], E1, edge1->_nodes[0], helper, ok ).Normalized();
|
dir1 = getFaceDir( FF1[0], E1, edge1->_nodes[0], helper, ok ).Normalized();
|
||||||
if ( edge2->_cosin < 0 )
|
if ( edge2->_cosin < 0 )
|
||||||
dir2 = getFaceDir( FF2[0], E2, edge2->_nodes[0], helper, ok ).Normalized();
|
dir2 = getFaceDir( FF2[0], E2, edge2->_nodes[0], helper, ok ).Normalized();
|
||||||
// gp_Vec dir1 = getFaceDir( FF1[0], E1, edge1->_nodes[0], helper, ok );
|
// gp_Vec dir1 = getFaceDir( FF1[0], E1, edge1->_nodes[0], helper, ok );
|
||||||
// gp_Vec dir2 = getFaceDir( FF2[0], E2, edge2->_nodes[0], helper, ok2 );
|
// gp_Vec dir2 = getFaceDir( FF2[0], E2, edge2->_nodes[0], helper, ok2 );
|
||||||
// double wgt1 = ( edge1->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
// double wgt1 = ( edge1->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
||||||
// double wgt2 = ( edge2->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
// double wgt2 = ( edge2->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
||||||
// gp_Vec newNorm = wgt1 * dir1 + wgt2 * dir2;
|
// gp_Vec newNorm = wgt1 * dir1 + wgt2 * dir2;
|
||||||
// newNorm.Normalize();
|
// newNorm.Normalize();
|
||||||
|
|
||||||
double wgt1 = ( edge1->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
double wgt1 = ( edge1->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
||||||
double wgt2 = ( edge2->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
double wgt2 = ( edge2->_cosin + 1 ) / ( edge1->_cosin + edge2->_cosin + 2 );
|
||||||
@ -3125,7 +3127,7 @@ bool _ViscousBuilder::updateNormals( _SolidData& data,
|
|||||||
n1 = edge1->_2neibors->_edges[0]->_nodes[0];
|
n1 = edge1->_2neibors->_edges[0]->_nodes[0];
|
||||||
n2 = edge1->_2neibors->_edges[1]->_nodes[0];
|
n2 = edge1->_2neibors->_edges[1]->_nodes[0];
|
||||||
//if ( !findNeiborsOnEdge( edge1, n1, n2, data ))
|
//if ( !findNeiborsOnEdge( edge1, n1, n2, data ))
|
||||||
//continue;
|
// continue;
|
||||||
edge1->SetDataByNeighbors( n1, n2, helper );
|
edge1->SetDataByNeighbors( n1, n2, helper );
|
||||||
gp_Vec dirInFace;
|
gp_Vec dirInFace;
|
||||||
if ( edge1->_cosin < 0 )
|
if ( edge1->_cosin < 0 )
|
||||||
|
Loading…
Reference in New Issue
Block a user