]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
compute arithmetic increment dependend on number of intervals for ARITHMETIC_1D mbs/43494_regular1d_issue
authormbs <martin.bernhard@opencascade.com>
Wed, 13 Nov 2024 15:50:59 +0000 (15:50 +0000)
committermbs <martin.bernhard@opencascade.com>
Wed, 13 Nov 2024 15:50:59 +0000 (15:50 +0000)
src/StdMeshers/StdMeshers_Regular_1D.cxx

index 13b63bcc61e81053eb1b4ca52f12e5c55e16c613..258f7370531beab7ef3fc912b1655268ff90501e 100644 (file)
@@ -1042,8 +1042,13 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh &     theMesh,
       return error ( SMESH_Comment("Invalid segment lengths (")<<a1<<" and "<<an<<") "<<
                      "for an edge of length "<<theLength);
 
-    double q = ( an - a1 ) / ( 2 *theLength/( a1 + an ) - 1 );
-    int    n = int(fabs(q) > numeric_limits<double>::min() ? ( 1+( an-a1 )/q ) : ( 1+theLength/a1 ));
+    // double q = ( an - a1 ) / ( 2 *theLength/( a1 + an ) - 1 );
+    // int    n = int(fabs(q) > numeric_limits<double>::min() ? ( 1+( an-a1 )/q ) : ( 1+theLength/a1 ));
+    int    n = int(2 * theLength / ( a1 + an ) + 0.5);
+    double q = (n > 1 ? ( an - a1 ) / (n - 1) : 0.0);
+
+    std::cout << "a1 = " << a1 << ", an = " << an << ", len = " << theLength << std::endl;
+    std::cout << "n = " << n << ", q = " << q << std::endl;
 
     double      U1 = theReverse ? l : f;
     double      Un = theReverse ? f : l;