Salome HOME
#19926 [CEA 19782] renumbering meshes \\ fix excess nodes
authoreap <eap@opencascade.com>
Thu, 15 Oct 2020 15:02:26 +0000 (18:02 +0300)
committereap <eap@opencascade.com>
Thu, 15 Oct 2020 15:02:26 +0000 (18:02 +0300)
src/SMESHGUI/SMESHGUI_Hypotheses.cxx
src/StdMeshers/StdMeshers_Hexa_3D.cxx

index a228b87e0823c3a8fde435c34b66f565e22d5c05..8256f88835a454ffeced21fa31ff6f586c5045a9 100644 (file)
@@ -605,7 +605,7 @@ QString SMESHGUI_GenericHypothesisCreator::helpPage() const
   else if ( aHypType == "MaxElementArea")
     aHelpFileName = "2d_meshing_hypo.html#max-element-area-anchor";
   else if ( aHypType == "MaxElementVolume")
-    aHelpFileName = "max_element_volume_hypo.html";
+    aHelpFileName = "3d_meshing_hypo.html#max-element-volume-hypothesis";
   else if ( aHypType == "StartEndLength")
     aHelpFileName = "1d_meshing_hypo.html#start-and-end-length-anchor";
   else if ( aHypType == "Deflection1D")
index 26b22cae1347584cda6e05236a05bfb0ad78f474..cde18b142757bb95bec2e1c45e0be21b645f9122 100644 (file)
@@ -824,7 +824,16 @@ 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 )
     {
@@ -912,6 +921,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 );