Salome HOME
SALOME 6.5.0 preparation: homard 10.3 -> 10.4
[tools/install.git] / config_files / patches / netgen-4.9.13-for-SALOME.patch
index 9a1a103121a8c946413e204b107cb849ed2bf06e..0be0d34604cbc6e360c2e71ca5cb3b77d0dff04c 100755 (executable)
@@ -1,6 +1,6 @@
 diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp netgen-4.9.13_new/libsrc/meshing/meshtype.cpp
 --- netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp     2009-09-13 14:28:38.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/meshing/meshtype.cpp      2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.cpp      2011-12-20 14:50:26.000000000 +0400
 @@ -1,4 +1,5 @@
  #include <mystdlib.h>
 +#include <float.h> // to get DBL_MIN defined
@@ -101,7 +101,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp netgen-4.9.13_new/libs
      blockfill = 1;
 diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp netgen-4.9.13_new/libsrc/meshing/meshtype.hpp
 --- netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp     2009-11-09 13:50:43.000000000 +0300
-+++ netgen-4.9.13_new/libsrc/meshing/meshtype.hpp      2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.hpp      2011-12-20 14:50:26.000000000 +0400
 @@ -12,6 +12,7 @@
      Classes for NETGEN
  */
@@ -112,7 +112,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp netgen-4.9.13_new/libs
    SEGMENT = 1, SEGMENT3 = 2,
 diff -Naur netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp
 --- netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp   2009-11-09 13:47:09.000000000 +0300
-+++ netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp    2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp    2011-12-20 14:50:26.000000000 +0400
 @@ -302,7 +302,8 @@
      vgrad = 0;
      badness = 0;
@@ -164,7 +164,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp netgen-4.9.13_new/li
  
 diff -Naur netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp netgen-4.9.13_new/libsrc/occ/occconstruction.cpp
 --- netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp  2009-08-24 06:32:47.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/occ/occconstruction.cpp   2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occconstruction.cpp   2011-12-20 14:50:26.000000000 +0400
 @@ -28,7 +28,7 @@
  #include <BRepAlgoAPI_Common.hxx>
  #include <BRepAlgoAPI_Fuse.hxx>
@@ -176,7 +176,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp netgen-4.9.13_new/l
  #include <ShapeFix_Shape.hxx>
 diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp
 --- netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp       2010-03-16 09:30:07.000000000 +0300
-+++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp        2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp        2011-12-20 14:50:26.000000000 +0400
 @@ -15,6 +15,8 @@
  
  #define DIVIDEEDGESECTIONS 1000
@@ -333,11 +333,24 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc
  
                 if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
                    geom.vmap.FindIndex(TopExp::LastVertex (edge)))
-@@ -481,13 +499,45 @@
+@@ -479,15 +497,64 @@
+                }
+                else
                 {
-                   Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
-                   Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
 +                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
  
                    pnums[0] = -1;
                    pnums.Last() = -1;
@@ -348,40 +361,48 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc
 +                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
 +                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
 +                  }
-+                  if ( pnums[0] == pnums.Last() )
-+                    pnums[0] = -1;
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
 +                  if ( pnums[0] == -1 || pnums.Last() == -1 )
 +                  {
 +                    // take into account a possible large gap between a vertex and an edge curve
-+                    // and a large vertex tolerance covering the whole edge
++                    // end and a large vertex tolerance covering the whole edge
 +                    if ( pnums[0] == -1 )
 +                    {
-+                      double tol = BRep_Tool::Tolerance( TopExp::FirstVertex (edge));
++                      double tol = BRep_Tool::Tolerance( v1 );
 +                      for (PointIndex pi = 1; pi < first_ep; pi++)
 +                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
 +                          pnums[0] = pi;
 +
 +                      if ( pnums[0] == -1 )
-+                        pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
 +                    }
-+                    if ( pnums.Last() == -1 )
++                    if ( isClosedEdge )
 +                    {
-+                      double tol = BRep_Tool::Tolerance( TopExp::LastVertex (edge));
-+                      for (PointIndex pi = 1; pi < first_ep; pi++)
-+                        if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
-+                          pnums.Last() = pi;
-+
-+                      if ( pnums.Last() == -1 )
-+                        pnums.Last() = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                      pnums.Last() = pnums[0];
 +                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
 +
-+                    if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
-+                         Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
 +                      std::swap( pnums[0], pnums.Last() );
++                    }
                    }
                 }
  
-@@ -633,7 +683,8 @@
+@@ -633,7 +700,8 @@
           }
  
           (*testout) << "mesh face " << k << endl;
@@ -391,7 +412,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc
           geom.facemeshstatus[k-1] = -1;
  
  
-@@ -901,7 +952,8 @@
+@@ -901,7 +969,8 @@
           //      if (k != 36) continue;
  
           //      (*testout) << "optimize face " << k << endl;
@@ -401,14 +422,14 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc
  
           FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
  
-@@ -1456,3 +1508,4 @@
+@@ -1456,3 +1525,4 @@
  }
  
  #endif
 +
 diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.cpp netgen-4.9.13_new/libsrc/occ/occgeom.cpp
 --- netgen-4.9.13_orig/libsrc/occ/occgeom.cpp  2010-03-05 16:16:21.000000000 +0300
-+++ netgen-4.9.13_new/libsrc/occ/occgeom.cpp   2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occgeom.cpp   2011-12-20 14:50:26.000000000 +0400
 @@ -8,6 +8,8 @@
  #include "ShapeAnalysis_CheckSmallFace.hxx"
  #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
@@ -627,7 +648,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.cpp netgen-4.9.13_new/libsrc/oc
     }
 diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.hpp netgen-4.9.13_new/libsrc/occ/occgeom.hpp
 --- netgen-4.9.13_orig/libsrc/occ/occgeom.hpp  2010-01-14 19:56:19.000000000 +0300
-+++ netgen-4.9.13_new/libsrc/occ/occgeom.hpp   2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occgeom.hpp   2011-12-20 14:50:26.000000000 +0400
 @@ -15,8 +15,8 @@
  #include "Geom_Curve.hxx"
  #include "Geom2d_Curve.hxx"
@@ -707,7 +728,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.hpp netgen-4.9.13_new/libsrc/oc
           cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
 diff -Naur netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp
 --- netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp      2009-08-24 06:32:47.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp       2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp       2011-12-20 14:50:26.000000000 +0400
 @@ -6,6 +6,7 @@
  #include <meshing.hpp>
  #include <GeomLProp_SLProps.hxx>
@@ -816,7 +837,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp netgen-4.9.13_new/libsr
  
 diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx
 --- netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx        2009-08-24 06:12:24.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx 2011-08-10 16:57:40.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx 2011-12-20 14:50:26.000000000 +0400
 @@ -86,6 +86,9 @@
  #include <TopOpeBRepTool_OutCurveType.hxx>
  #include <TopOpeBRep_DSFiller.hxx>
@@ -842,7 +863,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx netgen-4.9.13_new
          }
 diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx
 --- netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx 2009-08-24 06:12:24.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx  2011-08-10 16:57:40.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx  2011-12-20 14:53:39.000000000 +0400
 @@ -22,7 +22,6 @@
  #include <BRepAdaptor_Surface.hxx>
  #include <BRepAlgo_AsDes.hxx>
@@ -867,6 +888,24 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.9.13_new/
  //=======================================================================
  //function : Partition_Loop2d
  //purpose  :
+@@ -209,7 +217,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -233,7 +241,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
 @@ -519,7 +527,12 @@
      DC.Initialize( DegEdge, F );
  
@@ -880,9 +919,21 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.9.13_new/
  
    Standard_Real U, f, l;
    BRep_Tool::Range (DegEdge, f, l);
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx   2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx    2011-12-20 14:53:05.000000000 +0400
+@@ -178,7 +178,7 @@
+       }
+     }
+-    Standard_Real anglemax = - PI;
++    Standard_Real anglemax = - M_PI;
+     TopoDS_Edge   SelectedEdge;       
+     for ( itl.Initialize(LE); itl.More(); itl.Next()) {
+       const TopoDS_Edge& E = TopoDS::Edge(itl.Value());
 diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx
 --- netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx        2009-08-24 06:12:24.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx 2011-08-10 16:57:40.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx 2011-12-20 14:50:26.000000000 +0400
 @@ -79,6 +79,8 @@
  #include <GeomAdaptor_Curve.hxx>
  #include <TopOpeBRepTool_CurveTool.hxx>
@@ -907,7 +958,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx netgen-4.9.13_new
          }
 diff -Naur netgen-4.9.13_orig/libsrc/occ/utilities.h netgen-4.9.13_new/libsrc/occ/utilities.h
 --- netgen-4.9.13_orig/libsrc/occ/utilities.h  2009-08-24 06:12:24.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/occ/utilities.h   2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/utilities.h   2011-12-20 14:50:26.000000000 +0400
 @@ -33,6 +33,7 @@
  
  #include <string>
@@ -918,7 +969,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/occ/utilities.h netgen-4.9.13_new/libsrc/oc
  
 diff -Naur netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp
 --- netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp  2009-08-10 15:40:51.000000000 +0400
-+++ netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp   2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp   2011-12-20 14:50:26.000000000 +0400
 @@ -1435,7 +1435,8 @@
  
          if (!optstring || strlen(optstring) == 0)
@@ -951,7 +1002,7 @@ diff -Naur netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.9.13_new/l
            {
 diff -Naur netgen-4.9.13_orig/nglib/nglib.h netgen-4.9.13_new/nglib/nglib.h
 --- netgen-4.9.13_orig/nglib/nglib.h   2010-05-18 15:20:25.000000000 +0400
-+++ netgen-4.9.13_new/nglib/nglib.h    2011-08-10 16:57:34.000000000 +0400
++++ netgen-4.9.13_new/nglib/nglib.h    2011-12-20 14:50:26.000000000 +0400
 @@ -24,7 +24,7 @@
  // Philippose - 14.02.2009
  // Modifications for creating a DLL in Windows