fix a bug of excess nodes creation w/o Renumber hypothesis

This commit is contained in:
eap 2020-10-14 13:53:12 +03:00
parent 31c496eb37
commit 69360e2565

View File

@ -824,23 +824,22 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
pointsOnShapes[ SMESH_Block::ID_V111 ] = fTop->GetXYZ( X, Y ); pointsOnShapes[ SMESH_Block::ID_V111 ] = fTop->GetXYZ( X, Y );
gp_XYZ params; // normalized parameters of an internal node within the unit box gp_XYZ params; // normalized parameters of an internal node within the unit box
for ( x = 0; x < xSize; ++x )
if ( toRenumber )
for ( y = 0; y < ySize; ++y )
{
vector< const SMDS_MeshNode* >& column0y = columns[ colIndex( 0, y )];
for ( z = 0; z < zSize; ++z )
renumHelper.AddReplacingNode( column0y[ z ] );
}
for ( x = 1; x < xSize-1; ++x )
{ {
if ( toRenumber ) if ( toRenumber )
{ {
vector< const SMDS_MeshNode* >& columnX0 = columns[ colIndex( x, 0 )]; vector< const SMDS_MeshNode* >& columnX0 = columns[ colIndex( x, 0 )];
for ( z = 0; z < zSize; ++z ) for ( z = 0; z < zSize; ++z )
renumHelper.AddReplacingNode( columnX0[ z ] ); renumHelper.AddReplacingNode( columnX0[ z ] );
if ( x == 0 || x == X )
{
for ( y = 1; y < ySize; ++y )
{
vector< const SMDS_MeshNode* >& column0Y = columns[ colIndex( x, y )];
for ( z = 0; z < zSize; ++z )
renumHelper.AddReplacingNode( column0Y[ z ] );
}
continue;
}
} }
const double rX = x / double(X); const double rX = x / double(X);
@ -912,6 +911,14 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
} }
} // x loop } // x loop
if ( toRenumber )
for ( y = 0; y < ySize; ++y )
{
vector< const SMDS_MeshNode* >& columnXy = columns[ colIndex( X, y )];
for ( z = 0; z < zSize; ++z )
renumHelper.AddReplacingNode( columnXy[ z ] );
}
// side data no more needed, free memory // side data no more needed, free memory
for ( int i = 0; i < 6; ++i ) for ( int i = 0; i < 6; ++i )
SMESHUtils::FreeVector( aCubeSide[i]._columns ); SMESHUtils::FreeVector( aCubeSide[i]._columns );