]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
fix a bug of excess nodes creation w/o Renumber hypothesis eap/19926_renumber
authoreap <eap@opencascade.com>
Wed, 14 Oct 2020 10:53:12 +0000 (13:53 +0300)
committereap <eap@opencascade.com>
Wed, 14 Oct 2020 10:53:12 +0000 (13:53 +0300)
src/StdMeshers/StdMeshers_Hexa_3D.cxx

index 26b22cae1347584cda6e05236a05bfb0ad78f474..db2f668809d53122ce1db3396d462d458507a2ec 100644 (file)
@@ -824,23 +824,22 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh &         aMesh,
   pointsOnShapes[ SMESH_Block::ID_V111 ] = fTop->GetXYZ( X, Y );
 
   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 )
     {
       vector< const SMDS_MeshNode* >& columnX0 = columns[ colIndex( x, 0 )];
       for ( z = 0; z < zSize; ++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);
@@ -912,6 +911,14 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh &         aMesh,
     }
   } // 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
   for ( int i = 0; i < 6; ++i )
     SMESHUtils::FreeVector( aCubeSide[i]._columns );