Salome HOME
22419: EDF SMESH Regression: 3D Extrusion fails
[modules/smesh.git] / src / StdMeshers / StdMeshers_Adaptive1D.cxx
index 38b703539bc074e4fa5b2e4b8228e5b54430f64b..dca26df0c847cfbe3a0467656c1c32ae4a56bc73 100644 (file)
@@ -399,6 +399,8 @@ namespace // internal utils
       if ( !isDone[ jLongest ] || !isConstSize )
       {
         //++nbLinks;
+        if ( size < numeric_limits<double>::min() )
+          continue;
         int nb = Max( 1, int( maxLinkLen / size / 2 ));
         for ( int k = 0; k <= nb; ++k )
         {
@@ -932,9 +934,9 @@ bool StdMeshers_Adaptive1D::SetParametersByMesh(const SMESH_Mesh*   theMesh,
 bool StdMeshers_Adaptive1D::SetParametersByDefaults(const TDefaults&  dflts,
                                                     const SMESH_Mesh* /*theMesh*/)
 {
-  myMinSize = dflts._elemLength / 100;
+  myMinSize = dflts._elemLength / 10;
   myMaxSize = dflts._elemLength * 2;
-  myDeflection = myMinSize / 10;
+  myDeflection = myMinSize / 7;
   return true;
 }
 
@@ -1266,7 +1268,7 @@ bool AdaptiveAlgo::makeSegments()
     }
 
     // compute parameters of nodes
-    int nbSegFinal = int(floor(nbSegs.back()+0.5));
+    int nbSegFinal = Max( 1, int(floor( nbSegs.back() + 0.5 )));
     double fact = nbSegFinal / nbSegs.back();
     if ( maxSegSize / fact > myHyp->GetMaxSize() )
       fact = ++nbSegFinal / nbSegs.back();