Salome HOME
Fix compilation errors under Windows: VS-2017
[modules/smesh.git] / src / StdMeshers / StdMeshers_Hexa_3D.cxx
index 26b22cae1347584cda6e05236a05bfb0ad78f474..eeb6ad40e028aa68d42ff8927e5200cd3752870c 100644 (file)
@@ -56,6 +56,8 @@
 
 #include <cstddef>
 
 
 #include <cstddef>
 
+#include <numeric>
+
 typedef SMESH_Comment TComm;
 
 using namespace std;
 typedef SMESH_Comment TComm;
 
 using namespace std;
@@ -824,23 +826,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
   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 ( 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);
     }
 
     const double rX = x / double(X);
@@ -912,6 +913,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
   for ( int i = 0; i < 6; ++i )
     SMESHUtils::FreeVector( aCubeSide[i]._columns );
   // side data no more needed, free memory
   for ( int i = 0; i < 6; ++i )
     SMESHUtils::FreeVector( aCubeSide[i]._columns );