diff --git a/Fltk/Makefile b/Fltk/Makefile
index d8cbea875d817d622d8db66f15416b31ecaec5db..713fcbe7344cc656cfec6c97fc7273c86e4a79e9 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.152 2007-09-26 20:51:58 geuzaine Exp $
+# $Id: Makefile,v 1.153 2007-11-11 19:53:57 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -75,8 +75,43 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \
   Solvers.h ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Post/PView.h \
   ../Common/SmoothData.h ../Post/PViewData.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
+  /sw/include/gsl/gsl_linalg.h /sw/include/gsl/gsl_mode.h \
+  /sw/include/gsl/gsl_permutation.h /sw/include/gsl/gsl_types.h \
+  /sw/include/gsl/gsl_errno.h /sw/include/gsl/gsl_check_range.h \
+  /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h \
+  /sw/include/gsl/gsl_blas.h /sw/include/gsl/gsl_blas_types.h \
+  /sw/include/gsl/gsl_cblas.h ../Geo/GModel.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
   ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
   ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
@@ -87,11 +122,12 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \
   ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
   ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
   ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
-  ../Geo/SBoundingBox3d.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Post/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
+  ../Geo/SBoundingBox3d.h ../Mesh/Field.h \
+  ../contrib/ANN/include/ANN/ANN.h ../Geo/Geo.h ../Geo/gmshSurface.h \
+  ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \
+  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -110,7 +146,41 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Plugin/Plugin.h ../Post/PView.h ../Common/SmoothData.h \
   ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
   ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../Common/GmshMatrix.h Shortcut_Window.h
+  ../Common/GmshMatrix.h /sw/include/gsl/gsl_linalg.h \
+  /sw/include/gsl/gsl_mode.h /sw/include/gsl/gsl_permutation.h \
+  /sw/include/gsl/gsl_types.h /sw/include/gsl/gsl_errno.h \
+  /sw/include/gsl/gsl_check_range.h /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h \
+  /sw/include/gsl/gsl_blas.h /sw/include/gsl/gsl_blas_types.h \
+  /sw/include/gsl/gsl_cblas.h Shortcut_Window.h
 GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -133,6 +203,8 @@ GUI_Projection.o: GUI_Projection.cpp ../Geo/GModelIO_F.h ../Geo/GModel.h \
   ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
   ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
   ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
   ../Graphics/Draw.h ../Common/Options.h ../Post/ColorTable.h \
   ../Parser/OpenFile.h ../Graphics/SelectBuffer.h GUI_Projection.h \
   ../Common/GmshUI.h ../Geo/FProjectionFace.h ../Geo/GModel.h \
@@ -140,7 +212,35 @@ GUI_Projection.o: GUI_Projection.cpp ../Geo/GModelIO_F.h ../Geo/GModel.h \
   SpherePosition_Widget.h Shortcut_Window.h GUI_Extras.h ../Geo/FFace.h \
   ../Geo/GFace.h ../Geo/GModel.h ../Geo/Range.h ../Geo/FEdge.h \
   ../Geo/GEdge.h ../Geo/GModel.h ../Geo/FVertex.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/Range.h ../Common/Message.h
+  ../Geo/GVertex.h /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h \
+  ../Geo/Range.h ../Common/Message.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Curve.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoFace.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h \
+  /Users/remacle/SOURCES/FourierModel/FM_FPatch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_PartitionOfUnity.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_WFPatch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_PartitionOfUnity.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_PlaneProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ParaboloidProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Utils.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_CylindricalProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_RevolvedParabolaProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Utils.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TranslatedParabolaProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Utils.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h
 GUI_Classifier.o: GUI_Classifier.cpp GUI_Classifier.h ../Common/GmshUI.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
   ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
@@ -162,14 +262,15 @@ GUI_Classifier.o: GUI_Classifier.cpp GUI_Classifier.h ../Common/GmshUI.h \
   ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Graphics/Draw.h ../Common/Options.h ../Graphics/SelectBuffer.h \
   GUI_Projection.h ../Geo/FProjectionFace.h ../Geo/GModel.h \
-  ../Geo/Range.h GUI_Extras.h ../Mesh/meshGFaceDelaunayInsertion.h \
-  ../Mesh/meshGFaceOptimize.h ../Geo/gmshEdge.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GEdge.h \
-  ../Geo/gmshVertex.h ../Geo/Geo.h ../Geo/GVertex.h ../Geo/Range.h \
-  ../Geo/gmshFace.h ../Geo/Geo.h ../Geo/GFace.h ../Geo/gmshVertex.h \
-  ../Geo/Range.h
+  ../Geo/Range.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h GUI_Extras.h \
+  ../Mesh/meshGFaceDelaunayInsertion.h ../Mesh/meshGFaceOptimize.h \
+  ../Geo/gmshEdge.h ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
+  ../Geo/GEdge.h ../Geo/gmshVertex.h ../Geo/Geo.h ../Geo/GVertex.h \
+  ../Geo/Range.h ../Geo/gmshFace.h ../Geo/Geo.h ../Geo/GFace.h \
+  ../Geo/gmshVertex.h ../Geo/Range.h
 Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -194,13 +295,48 @@ Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h GUI_Extras.h \
   Callbacks.h ../Plugin/Plugin.h ../Post/PViewDataList.h \
   ../Post/PViewData.h ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Visibility.h \
-  ../Common/GmshDefines.h Solvers.h ../Common/OS.h ../Mesh/Field.h \
-  ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \
-  ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
-  ../Mesh/BackgroundMesh.h
+  /sw/include/gsl/gsl_linalg.h /sw/include/gsl/gsl_mode.h \
+  /sw/include/gsl/gsl_permutation.h /sw/include/gsl/gsl_types.h \
+  /sw/include/gsl/gsl_errno.h /sw/include/gsl/gsl_check_range.h \
+  /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h \
+  /sw/include/gsl/gsl_blas.h /sw/include/gsl/gsl_blas_types.h \
+  /sw/include/gsl/gsl_cblas.h ../Plugin/PluginManager.h \
+  ../Plugin/Plugin.h ../Common/Visibility.h ../Common/GmshDefines.h \
+  Solvers.h ../Common/OS.h ../Mesh/Field.h \
+  ../contrib/ANN/include/ANN/ANN.h ../Geo/Geo.h ../Geo/gmshSurface.h \
+  ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \
+  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/Geo/GEntity.h b/Geo/GEntity.h
index 6a116c41de7cd8a3f8fe418fdb413821a2cc53ca..b4df6a9c599c54ec14a40749a15c22e3c0acad08 100644
--- a/Geo/GEntity.h
+++ b/Geo/GEntity.h
@@ -87,6 +87,8 @@ class GEntity {
     ParametricSurface,
     ProjectionFace,
     BSplineSurface,
+    BezierSurface,
+    SurfaceOfRevolution,
     BoundaryLayerSurface,
     DiscreteSurface,
     Volume,
@@ -118,6 +120,8 @@ class GEntity {
       "Parametric surface",
       "Projection surface",
       "BSpline surface",
+      "Bezier surface",
+      "Surface of Revolution",
       "Boundary layer surface",
       "Discrete surface",
       "Volume",
diff --git a/Geo/GFace.h b/Geo/GFace.h
index 9fbf063fe41f2f960f3eb208615c3f0ba21674b3..1708f783f6f8bb289da4b95d992aa08e095e2b47 100644
--- a/Geo/GFace.h
+++ b/Geo/GFace.h
@@ -43,6 +43,11 @@ struct graphics_point
   float n[3];
 };
 
+struct surface_params
+{
+  double radius, radius2, height,cx,cy,cz;
+};
+
 class GRegion;
 
 // A model face. 
@@ -97,6 +102,9 @@ class GFace : public GEntity
   // The bounding box
   virtual SBoundingBox3d bounds() const; 
 
+  // retrieve surface params 
+  virtual surface_params getSurfaceParams() const {throw;}
+
   // Get the location of any parametric degeneracies on the face in
   // the given parametric direction.
   virtual int paramDegeneracies(int dir, double *par) = 0;
diff --git a/Geo/Makefile b/Geo/Makefile
index 654e52beb88cda648db7dcff6b2e471af419fedb..1cf50162ad879fe8dddb9fc0adf873c7f2224776 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.166 2007-09-26 20:51:58 geuzaine Exp $
+# $Id: Makefile,v 1.167 2007-11-11 19:53:57 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -95,7 +95,39 @@ GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h ../Common/Message.h
+  GRegion.h ../Common/Message.h /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_types.h /sw/include/gsl/gsl_errno.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_check_range.h \
+  /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_linalg.h /sw/include/gsl/gsl_mode.h \
+  /sw/include/gsl/gsl_permutation.h /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h
 GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
@@ -132,52 +164,1638 @@ gmshRegion.o: gmshRegion.cpp GModel.h GVertex.h GEntity.h Range.h \
   GRegion.h gmshFace.h Geo.h gmshSurface.h ../DataStr/Tree.h \
   ../DataStr/avl.h gmshVertex.h gmshRegion.h ../Common/Message.h
 gmshSurface.o: gmshSurface.cpp gmshSurface.h Pair.h Range.h SPoint2.h \
-  SPoint3.h SVector3.h SBoundingBox3d.h ../Common/Message.h
+  SPoint3.h SVector3.h SBoundingBox3d.h ../Common/Message.h \
+  ../contrib/MathEval/matheval.h
 OCCVertex.o: OCCVertex.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h
+  GRegion.h OCCVertex.h OCCIncludes.h \
+  /usr/local/opencascade//inc/config.h \
+  /usr/local/opencascade//inc/BRep_Tool.hxx \
+  /usr/local/opencascade//inc/Standard_Boolean.hxx \
+  /usr/local/opencascade//inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade//inc/Standard_Macro.hxx \
+  /usr/local/opencascade//inc/Standard_Stream.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade//inc/Standard.hxx \
+  /usr/local/opencascade//inc/Standard_Address.hxx \
+  /usr/local/opencascade//inc/Standard_Integer.hxx \
+  /usr/local/opencascade//inc/Standard_values.h \
+  /usr/local/opencascade//inc/Standard_OStream.hxx \
+  /usr/local/opencascade//inc/Standard_CString.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade//inc/Standard_Real.hxx \
+  /usr/local/opencascade//inc/Standard_Character.hxx \
+  /usr/local/opencascade//inc/Standard_ctype.hxx \
+  /usr/local/opencascade//inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade//inc/Standard_ExtString.hxx \
+  /usr/local/opencascade//inc/Standard_Storable.hxx \
+  /usr/local/opencascade//inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade//inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade//inc/Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_Type.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade//inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade//inc/Standard_Type.lxx \
+  /usr/local/opencascade//inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Geom_Surface.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.lxx \
+  /usr/local/opencascade//inc/gp.hxx /usr/local/opencascade//inc/gp.lxx \
+  /usr/local/opencascade//inc/gp_Mat.hxx \
+  /usr/local/opencascade//inc/gp_Mat.lxx \
+  /usr/local/opencascade//inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_SStream.hxx \
+  /usr/local/opencascade//inc/Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.lxx \
+  /usr/local/opencascade//inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.lxx \
+  /usr/local/opencascade//inc/gp_Trsf.hxx \
+  /usr/local/opencascade//inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade//inc/gp_Trsf.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.lxx \
+  /usr/local/opencascade//inc/gp_XY.hxx \
+  /usr/local/opencascade//inc/gp_XY.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec2d.hxx \
+  /usr/local/opencascade//inc/gp_Vec2d.lxx \
+  /usr/local/opencascade//inc/gp_Dir2d.hxx \
+  /usr/local/opencascade//inc/gp_Dir2d.lxx \
+  /usr/local/opencascade//inc/gp_Ax2d.hxx \
+  /usr/local/opencascade//inc/gp_Ax2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec.hxx \
+  /usr/local/opencascade//inc/gp_Vec.lxx \
+  /usr/local/opencascade//inc/gp_Dir.hxx \
+  /usr/local/opencascade//inc/gp_Dir.lxx \
+  /usr/local/opencascade//inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade//inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade//inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade//inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade//inc/math_FunctionSet.hxx \
+  /usr/local/opencascade//inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade//inc/Quantity_Length.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade//inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_Point.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade//inc/math_Function.hxx \
+  /usr/local/opencascade//inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade//inc/BRepTools.hxx \
+  /usr/local/opencascade//inc/Standard_IStream.hxx \
+  /usr/local/opencascade//inc/TopExp.hxx \
+  /usr/local/opencascade//inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.hxx \
+  /usr/local/opencascade//inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/TCollection_SList.lxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.lxx \
+  /usr/local/opencascade//inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade//inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade//inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade//inc/TCollection_List.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade//inc/TopAbs.hxx \
+  /usr/local/opencascade//inc/TopAbs_State.hxx \
+  /usr/local/opencascade//inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/BRepLib_Command.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade//inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade//inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/TopoDS_Face.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/LProp_Status.hxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade//inc/TCollection_Array1.lxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.lxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/GProp_GProps.hxx \
+  /usr/local/opencascade//inc/BRepGProp.hxx \
+  /usr/local/opencascade//inc/TopoDS.hxx \
+  /usr/local/opencascade//inc/TopoDS.lxx \
+  /usr/local/opencascade//inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade//inc/TopExp_Stack.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade//inc/BRep_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade//inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade//inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade//inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade//inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade//inc/XSControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade//inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade//inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade//inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade//inc/Interface_ParamType.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade//inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade//inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade//inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade//inc/Message_Gravity.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade//inc/Precision.hxx \
+  /usr/local/opencascade//inc/Precision.lxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade//inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade//inc/ShapeExtend.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade//inc/BRepMesh.hxx \
+  /usr/local/opencascade//inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade//inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.lxx \
+  /usr/local/opencascade//inc/BRepBndLib.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade//inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade//inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade//inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade//inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade//inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade//inc/BOP_Operation.hxx \
+  /usr/local/opencascade//inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade//inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade//inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade//inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade//inc/BRepLib.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade//inc/ShapeFix.hxx \
+  /usr/local/opencascade//inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_FixSmallFace.hxx OCCEdge.h \
+  OCCFace.h
 OCCEdge.o: OCCEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
   GRegion.h ../Common/Message.h OCCEdge.h OCCVertex.h OCCIncludes.h \
-  OCCFace.h
+  /usr/local/opencascade//inc/config.h \
+  /usr/local/opencascade//inc/BRep_Tool.hxx \
+  /usr/local/opencascade//inc/Standard_Boolean.hxx \
+  /usr/local/opencascade//inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade//inc/Standard_Macro.hxx \
+  /usr/local/opencascade//inc/Standard_Stream.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade//inc/Standard.hxx \
+  /usr/local/opencascade//inc/Standard_Address.hxx \
+  /usr/local/opencascade//inc/Standard_Integer.hxx \
+  /usr/local/opencascade//inc/Standard_values.h \
+  /usr/local/opencascade//inc/Standard_OStream.hxx \
+  /usr/local/opencascade//inc/Standard_CString.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade//inc/Standard_Real.hxx \
+  /usr/local/opencascade//inc/Standard_Character.hxx \
+  /usr/local/opencascade//inc/Standard_ctype.hxx \
+  /usr/local/opencascade//inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade//inc/Standard_ExtString.hxx \
+  /usr/local/opencascade//inc/Standard_Storable.hxx \
+  /usr/local/opencascade//inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade//inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade//inc/Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_Type.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade//inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade//inc/Standard_Type.lxx \
+  /usr/local/opencascade//inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Geom_Surface.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.lxx \
+  /usr/local/opencascade//inc/gp.hxx /usr/local/opencascade//inc/gp.lxx \
+  /usr/local/opencascade//inc/gp_Mat.hxx \
+  /usr/local/opencascade//inc/gp_Mat.lxx \
+  /usr/local/opencascade//inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_SStream.hxx \
+  /usr/local/opencascade//inc/Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.lxx \
+  /usr/local/opencascade//inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.lxx \
+  /usr/local/opencascade//inc/gp_Trsf.hxx \
+  /usr/local/opencascade//inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade//inc/gp_Trsf.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.lxx \
+  /usr/local/opencascade//inc/gp_XY.hxx \
+  /usr/local/opencascade//inc/gp_XY.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec2d.hxx \
+  /usr/local/opencascade//inc/gp_Vec2d.lxx \
+  /usr/local/opencascade//inc/gp_Dir2d.hxx \
+  /usr/local/opencascade//inc/gp_Dir2d.lxx \
+  /usr/local/opencascade//inc/gp_Ax2d.hxx \
+  /usr/local/opencascade//inc/gp_Ax2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec.hxx \
+  /usr/local/opencascade//inc/gp_Vec.lxx \
+  /usr/local/opencascade//inc/gp_Dir.hxx \
+  /usr/local/opencascade//inc/gp_Dir.lxx \
+  /usr/local/opencascade//inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade//inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade//inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade//inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade//inc/math_FunctionSet.hxx \
+  /usr/local/opencascade//inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade//inc/Quantity_Length.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade//inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_Point.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade//inc/math_Function.hxx \
+  /usr/local/opencascade//inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade//inc/BRepTools.hxx \
+  /usr/local/opencascade//inc/Standard_IStream.hxx \
+  /usr/local/opencascade//inc/TopExp.hxx \
+  /usr/local/opencascade//inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.hxx \
+  /usr/local/opencascade//inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/TCollection_SList.lxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.lxx \
+  /usr/local/opencascade//inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade//inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade//inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade//inc/TCollection_List.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade//inc/TopAbs.hxx \
+  /usr/local/opencascade//inc/TopAbs_State.hxx \
+  /usr/local/opencascade//inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/BRepLib_Command.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade//inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade//inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/TopoDS_Face.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/LProp_Status.hxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade//inc/TCollection_Array1.lxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.lxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/GProp_GProps.hxx \
+  /usr/local/opencascade//inc/BRepGProp.hxx \
+  /usr/local/opencascade//inc/TopoDS.hxx \
+  /usr/local/opencascade//inc/TopoDS.lxx \
+  /usr/local/opencascade//inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade//inc/TopExp_Stack.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade//inc/BRep_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade//inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade//inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade//inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade//inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade//inc/XSControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade//inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade//inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade//inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade//inc/Interface_ParamType.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade//inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade//inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade//inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade//inc/Message_Gravity.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade//inc/Precision.hxx \
+  /usr/local/opencascade//inc/Precision.lxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade//inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade//inc/ShapeExtend.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade//inc/BRepMesh.hxx \
+  /usr/local/opencascade//inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade//inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.lxx \
+  /usr/local/opencascade//inc/BRepBndLib.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade//inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade//inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade//inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade//inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade//inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade//inc/BOP_Operation.hxx \
+  /usr/local/opencascade//inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade//inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade//inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade//inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade//inc/BRepLib.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade//inc/ShapeFix.hxx \
+  /usr/local/opencascade//inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_FixSmallFace.hxx OCCFace.h \
+  /usr/local/opencascade//inc/Geom2dLProp_CLProps2d.hxx \
+  /usr/local/opencascade//inc/Geom_BezierCurve.hxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray1OfPnt.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfReal.hxx \
+  /usr/local/opencascade//inc/Geom_BoundedCurve.hxx \
+  /usr/local/opencascade//inc/Geom_Ellipse.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Ellipse.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Conic.hxx \
+  /usr/local/opencascade//inc/Geom_Conic.hxx \
+  /usr/local/opencascade//inc/gp_Ax2.hxx \
+  /usr/local/opencascade//inc/gp_Ax1.hxx \
+  /usr/local/opencascade//inc/gp_Ax1.lxx \
+  /usr/local/opencascade//inc/gp_Ax2.lxx \
+  /usr/local/opencascade//inc/Geom_Circle.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Circle.hxx \
+  /usr/local/opencascade//inc/Geom_Line.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Line.hxx
 OCCFace.o: OCCFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h \
-  ../Common/Message.h
+  GRegion.h OCCVertex.h OCCIncludes.h \
+  /usr/local/opencascade//inc/config.h \
+  /usr/local/opencascade//inc/BRep_Tool.hxx \
+  /usr/local/opencascade//inc/Standard_Boolean.hxx \
+  /usr/local/opencascade//inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade//inc/Standard_Macro.hxx \
+  /usr/local/opencascade//inc/Standard_Stream.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade//inc/Standard.hxx \
+  /usr/local/opencascade//inc/Standard_Address.hxx \
+  /usr/local/opencascade//inc/Standard_Integer.hxx \
+  /usr/local/opencascade//inc/Standard_values.h \
+  /usr/local/opencascade//inc/Standard_OStream.hxx \
+  /usr/local/opencascade//inc/Standard_CString.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade//inc/Standard_Real.hxx \
+  /usr/local/opencascade//inc/Standard_Character.hxx \
+  /usr/local/opencascade//inc/Standard_ctype.hxx \
+  /usr/local/opencascade//inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade//inc/Standard_ExtString.hxx \
+  /usr/local/opencascade//inc/Standard_Storable.hxx \
+  /usr/local/opencascade//inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade//inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade//inc/Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_Type.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade//inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade//inc/Standard_Type.lxx \
+  /usr/local/opencascade//inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Geom_Surface.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.lxx \
+  /usr/local/opencascade//inc/gp.hxx /usr/local/opencascade//inc/gp.lxx \
+  /usr/local/opencascade//inc/gp_Mat.hxx \
+  /usr/local/opencascade//inc/gp_Mat.lxx \
+  /usr/local/opencascade//inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_SStream.hxx \
+  /usr/local/opencascade//inc/Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.lxx \
+  /usr/local/opencascade//inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.lxx \
+  /usr/local/opencascade//inc/gp_Trsf.hxx \
+  /usr/local/opencascade//inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade//inc/gp_Trsf.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.lxx \
+  /usr/local/opencascade//inc/gp_XY.hxx \
+  /usr/local/opencascade//inc/gp_XY.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec2d.hxx \
+  /usr/local/opencascade//inc/gp_Vec2d.lxx \
+  /usr/local/opencascade//inc/gp_Dir2d.hxx \
+  /usr/local/opencascade//inc/gp_Dir2d.lxx \
+  /usr/local/opencascade//inc/gp_Ax2d.hxx \
+  /usr/local/opencascade//inc/gp_Ax2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec.hxx \
+  /usr/local/opencascade//inc/gp_Vec.lxx \
+  /usr/local/opencascade//inc/gp_Dir.hxx \
+  /usr/local/opencascade//inc/gp_Dir.lxx \
+  /usr/local/opencascade//inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade//inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade//inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade//inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade//inc/math_FunctionSet.hxx \
+  /usr/local/opencascade//inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade//inc/Quantity_Length.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade//inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_Point.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade//inc/math_Function.hxx \
+  /usr/local/opencascade//inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade//inc/BRepTools.hxx \
+  /usr/local/opencascade//inc/Standard_IStream.hxx \
+  /usr/local/opencascade//inc/TopExp.hxx \
+  /usr/local/opencascade//inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.hxx \
+  /usr/local/opencascade//inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/TCollection_SList.lxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.lxx \
+  /usr/local/opencascade//inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade//inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade//inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade//inc/TCollection_List.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade//inc/TopAbs.hxx \
+  /usr/local/opencascade//inc/TopAbs_State.hxx \
+  /usr/local/opencascade//inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/BRepLib_Command.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade//inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade//inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/TopoDS_Face.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/LProp_Status.hxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade//inc/TCollection_Array1.lxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.lxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/GProp_GProps.hxx \
+  /usr/local/opencascade//inc/BRepGProp.hxx \
+  /usr/local/opencascade//inc/TopoDS.hxx \
+  /usr/local/opencascade//inc/TopoDS.lxx \
+  /usr/local/opencascade//inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade//inc/TopExp_Stack.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade//inc/BRep_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade//inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade//inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade//inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade//inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade//inc/XSControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade//inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade//inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade//inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade//inc/Interface_ParamType.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade//inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade//inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade//inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade//inc/Message_Gravity.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade//inc/Precision.hxx \
+  /usr/local/opencascade//inc/Precision.lxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade//inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade//inc/ShapeExtend.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade//inc/BRepMesh.hxx \
+  /usr/local/opencascade//inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade//inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.lxx \
+  /usr/local/opencascade//inc/BRepBndLib.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade//inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade//inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade//inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade//inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade//inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade//inc/BOP_Operation.hxx \
+  /usr/local/opencascade//inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade//inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade//inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade//inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade//inc/BRepLib.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade//inc/ShapeFix.hxx \
+  /usr/local/opencascade//inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_FixSmallFace.hxx OCCEdge.h \
+  OCCFace.h ../Common/Message.h \
+  /usr/local/opencascade//inc/Geom_CylindricalSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_CylindricalSurface.hxx \
+  /usr/local/opencascade//inc/Geom_ElementarySurface.hxx \
+  /usr/local/opencascade//inc/gp_Ax3.hxx \
+  /usr/local/opencascade//inc/gp_Ax1.hxx \
+  /usr/local/opencascade//inc/gp_Ax1.lxx \
+  /usr/local/opencascade//inc/gp_Ax3.lxx \
+  /usr/local/opencascade//inc/gp_Ax2.hxx \
+  /usr/local/opencascade//inc/gp_Ax2.lxx \
+  /usr/local/opencascade//inc/Geom_ConicalSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ConicalSurface.hxx \
+  /usr/local/opencascade//inc/Geom_BSplineSurface.hxx \
+  /usr/local/opencascade//inc/GeomAbs_BSplKnotDistribution.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray2OfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfInteger.hxx \
+  /usr/local/opencascade//inc/Geom_BoundedSurface.hxx \
+  /usr/local/opencascade//inc/Geom_SphericalSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_SphericalSurface.hxx \
+  /usr/local/opencascade//inc/Geom_ToroidalSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ToroidalSurface.hxx \
+  /usr/local/opencascade//inc/Geom_SurfaceOfRevolution.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_SurfaceOfRevolution.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_SweptSurface.hxx \
+  /usr/local/opencascade//inc/Geom_SweptSurface.hxx \
+  /usr/local/opencascade//inc/Geom_BezierSurface.hxx \
+  /usr/local/opencascade//inc/Geom_Plane.hxx \
+  /usr/local/opencascade//inc/gp_Pln.hxx \
+  /usr/local/opencascade//inc/gp_Pln.lxx \
+  /usr/local/opencascade//inc/gp_Lin.hxx \
+  /usr/local/opencascade//inc/gp_Lin.lxx
 OCCRegion.o: OCCRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h OCCRegion.h \
-  ../Common/Message.h
+  GRegion.h OCCVertex.h OCCIncludes.h \
+  /usr/local/opencascade//inc/config.h \
+  /usr/local/opencascade//inc/BRep_Tool.hxx \
+  /usr/local/opencascade//inc/Standard_Boolean.hxx \
+  /usr/local/opencascade//inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade//inc/Standard_Macro.hxx \
+  /usr/local/opencascade//inc/Standard_Stream.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade//inc/Standard.hxx \
+  /usr/local/opencascade//inc/Standard_Address.hxx \
+  /usr/local/opencascade//inc/Standard_Integer.hxx \
+  /usr/local/opencascade//inc/Standard_values.h \
+  /usr/local/opencascade//inc/Standard_OStream.hxx \
+  /usr/local/opencascade//inc/Standard_CString.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade//inc/Standard_Real.hxx \
+  /usr/local/opencascade//inc/Standard_Character.hxx \
+  /usr/local/opencascade//inc/Standard_ctype.hxx \
+  /usr/local/opencascade//inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade//inc/Standard_ExtString.hxx \
+  /usr/local/opencascade//inc/Standard_Storable.hxx \
+  /usr/local/opencascade//inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade//inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade//inc/Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_Type.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade//inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade//inc/Standard_Type.lxx \
+  /usr/local/opencascade//inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Geom_Surface.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.lxx \
+  /usr/local/opencascade//inc/gp.hxx /usr/local/opencascade//inc/gp.lxx \
+  /usr/local/opencascade//inc/gp_Mat.hxx \
+  /usr/local/opencascade//inc/gp_Mat.lxx \
+  /usr/local/opencascade//inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_SStream.hxx \
+  /usr/local/opencascade//inc/Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.lxx \
+  /usr/local/opencascade//inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.lxx \
+  /usr/local/opencascade//inc/gp_Trsf.hxx \
+  /usr/local/opencascade//inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade//inc/gp_Trsf.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.lxx \
+  /usr/local/opencascade//inc/gp_XY.hxx \
+  /usr/local/opencascade//inc/gp_XY.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec2d.hxx \
+  /usr/local/opencascade//inc/gp_Vec2d.lxx \
+  /usr/local/opencascade//inc/gp_Dir2d.hxx \
+  /usr/local/opencascade//inc/gp_Dir2d.lxx \
+  /usr/local/opencascade//inc/gp_Ax2d.hxx \
+  /usr/local/opencascade//inc/gp_Ax2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec.hxx \
+  /usr/local/opencascade//inc/gp_Vec.lxx \
+  /usr/local/opencascade//inc/gp_Dir.hxx \
+  /usr/local/opencascade//inc/gp_Dir.lxx \
+  /usr/local/opencascade//inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade//inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade//inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade//inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade//inc/math_FunctionSet.hxx \
+  /usr/local/opencascade//inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade//inc/Quantity_Length.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade//inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_Point.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade//inc/math_Function.hxx \
+  /usr/local/opencascade//inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade//inc/BRepTools.hxx \
+  /usr/local/opencascade//inc/Standard_IStream.hxx \
+  /usr/local/opencascade//inc/TopExp.hxx \
+  /usr/local/opencascade//inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.hxx \
+  /usr/local/opencascade//inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/TCollection_SList.lxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.lxx \
+  /usr/local/opencascade//inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade//inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade//inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade//inc/TCollection_List.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade//inc/TopAbs.hxx \
+  /usr/local/opencascade//inc/TopAbs_State.hxx \
+  /usr/local/opencascade//inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/BRepLib_Command.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade//inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade//inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/TopoDS_Face.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/LProp_Status.hxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade//inc/TCollection_Array1.lxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.lxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/GProp_GProps.hxx \
+  /usr/local/opencascade//inc/BRepGProp.hxx \
+  /usr/local/opencascade//inc/TopoDS.hxx \
+  /usr/local/opencascade//inc/TopoDS.lxx \
+  /usr/local/opencascade//inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade//inc/TopExp_Stack.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade//inc/BRep_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade//inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade//inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade//inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade//inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade//inc/XSControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade//inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade//inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade//inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade//inc/Interface_ParamType.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade//inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade//inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade//inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade//inc/Message_Gravity.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade//inc/Precision.hxx \
+  /usr/local/opencascade//inc/Precision.lxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade//inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade//inc/ShapeExtend.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade//inc/BRepMesh.hxx \
+  /usr/local/opencascade//inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade//inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.lxx \
+  /usr/local/opencascade//inc/BRepBndLib.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade//inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade//inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade//inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade//inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade//inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade//inc/BOP_Operation.hxx \
+  /usr/local/opencascade//inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade//inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade//inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade//inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade//inc/BRepLib.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade//inc/ShapeFix.hxx \
+  /usr/local/opencascade//inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_FixSmallFace.hxx OCCEdge.h \
+  OCCFace.h OCCRegion.h ../Common/Message.h
 FEdge.o: FEdge.cpp ../Common/Message.h FEdge.h GEdge.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h GVertex.h MVertex.h \
   GPoint.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GModel.h GFace.h GEdgeLoop.h \
-  Pair.h GRegion.h FVertex.h
+  Pair.h GRegion.h FVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Curve.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoFace.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h
 FFace.o: FFace.cpp FVertex.h GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h FFace.h FEdge.h ../Common/Message.h
+  GRegion.h /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h FFace.h \
+  FEdge.h ../Common/Message.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Curve.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoFace.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h
 FProjectionFace.o: FProjectionFace.cpp FProjectionFace.h GModel.h \
   GVertex.h GEntity.h Range.h SPoint3.h SBoundingBox3d.h \
   ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h GEdge.h SVector3.h \
   MElement.h MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \
   ../Common/Context.h ../DataStr/List.h ExtrudeParams.h \
-  ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h GRegion.h
+  ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h GRegion.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h
 GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
@@ -185,11 +1803,11 @@ GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
   GRegion.h gmshSurface.h ../Mesh/Field.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Geo/Geo.h ../Geo/gmshSurface.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Geo/GEdge.h ../Post/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h \
-  ../Common/Message.h
+  ../Post/ColorTable.h ../contrib/ANN/include/ANN/ANN.h ../Geo/Geo.h \
+  ../Geo/gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GEdge.h \
+  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Mesh/BackgroundMesh.h ../Common/Message.h
 GModelIO_Geo.o: GModelIO_Geo.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
@@ -212,14 +1830,410 @@ GModelIO_OCC.o: GModelIO_OCC.cpp GModelIO_OCC.h GModel.h GVertex.h \
   MVertex.h GPoint.h SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h \
   ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
   ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h OCCIncludes.h ../Common/Message.h \
-  OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.h
+  GEdgeLoop.h Pair.h GRegion.h OCCIncludes.h \
+  /usr/local/opencascade//inc/config.h \
+  /usr/local/opencascade//inc/BRep_Tool.hxx \
+  /usr/local/opencascade//inc/Standard_Boolean.hxx \
+  /usr/local/opencascade//inc/Standard_TypeDef.hxx \
+  /usr/local/opencascade//inc/Standard_Macro.hxx \
+  /usr/local/opencascade//inc/Standard_Stream.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Surface.hxx \
+  /usr/local/opencascade//inc/Standard.hxx \
+  /usr/local/opencascade//inc/Standard_Address.hxx \
+  /usr/local/opencascade//inc/Standard_Integer.hxx \
+  /usr/local/opencascade//inc/Standard_values.h \
+  /usr/local/opencascade//inc/Standard_OStream.hxx \
+  /usr/local/opencascade//inc/Standard_CString.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_PrimitiveTypes.hxx \
+  /usr/local/opencascade//inc/Standard_Real.hxx \
+  /usr/local/opencascade//inc/Standard_Character.hxx \
+  /usr/local/opencascade//inc/Standard_ctype.hxx \
+  /usr/local/opencascade//inc/Standard_ExtCharacter.hxx \
+  /usr/local/opencascade//inc/Standard_ExtString.hxx \
+  /usr/local/opencascade//inc/Standard_Storable.hxx \
+  /usr/local/opencascade//inc/Standard_Transient_proto.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon3D.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_Polygon2D.hxx \
+  /usr/local/opencascade//inc/Handle_Poly_PolygonOnTriangulation.hxx \
+  /usr/local/opencascade//inc/GeomAbs_Shape.hxx \
+  /usr/local/opencascade//inc/Geom_Curve.hxx \
+  /usr/local/opencascade//inc/Geom_Geometry.hxx \
+  /usr/local/opencascade//inc/MMgt_TShared.hxx \
+  /usr/local/opencascade//inc/Standard_Transient.hxx \
+  /usr/local/opencascade//inc/Standard_Type.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Type.hxx \
+  /usr/local/opencascade//inc/Standard_KindOfType.hxx \
+  /usr/local/opencascade//inc/Standard_Type.lxx \
+  /usr/local/opencascade//inc/Geom2d_Curve.hxx \
+  /usr/local/opencascade//inc/Geom2d_Geometry.hxx \
+  /usr/local/opencascade//inc/Geom_Surface.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPS.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_SurfacePtr.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElS.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.hxx \
+  /usr/local/opencascade//inc/gp_XYZ.lxx \
+  /usr/local/opencascade//inc/gp.hxx /usr/local/opencascade//inc/gp.lxx \
+  /usr/local/opencascade//inc/gp_Mat.hxx \
+  /usr/local/opencascade//inc/gp_Mat.lxx \
+  /usr/local/opencascade//inc/Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_OutOfRange.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_SStream.hxx \
+  /usr/local/opencascade//inc/Standard_RangeError.hxx \
+  /usr/local/opencascade//inc/Standard_DomainError.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.hxx \
+  /usr/local/opencascade//inc/Standard_Failure.lxx \
+  /usr/local/opencascade//inc/Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_ConstructionError.hxx \
+  /usr/local/opencascade//inc/gp_Pnt.lxx \
+  /usr/local/opencascade//inc/gp_Trsf.hxx \
+  /usr/local/opencascade//inc/gp_TrsfForm.hxx \
+  /usr/local/opencascade//inc/gp_Trsf.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.hxx \
+  /usr/local/opencascade//inc/gp_Mat2d.lxx \
+  /usr/local/opencascade//inc/gp_XY.hxx \
+  /usr/local/opencascade//inc/gp_XY.lxx \
+  /usr/local/opencascade//inc/gp_Trsf2d.lxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.hxx \
+  /usr/local/opencascade//inc/gp_Pnt2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec2d.hxx \
+  /usr/local/opencascade//inc/gp_Vec2d.lxx \
+  /usr/local/opencascade//inc/gp_Dir2d.hxx \
+  /usr/local/opencascade//inc/gp_Dir2d.lxx \
+  /usr/local/opencascade//inc/gp_Ax2d.hxx \
+  /usr/local/opencascade//inc/gp_Ax2d.lxx \
+  /usr/local/opencascade//inc/gp_Vec.hxx \
+  /usr/local/opencascade//inc/gp_Vec.lxx \
+  /usr/local/opencascade//inc/gp_Dir.hxx \
+  /usr/local/opencascade//inc/gp_Dir.lxx \
+  /usr/local/opencascade//inc/gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Handle_gp_VectorWithNullMagnitude.hxx \
+  /usr/local/opencascade//inc/Extrema_POnSurf.lxx \
+  /usr/local/opencascade//inc/Extrema_GenExtPS.hxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray2OfPnt.hxx \
+  /usr/local/opencascade//inc/Extrema_FuncExtPS.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfReal.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.hxx \
+  /usr/local/opencascade//inc/TCollection_BaseSequence.lxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_SeqNode.hxx \
+  /usr/local/opencascade//inc/TCollection_Sequence.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnSurf.hxx \
+  /usr/local/opencascade//inc/math_FunctionSetWithDerivatives.hxx \
+  /usr/local/opencascade//inc/math_FunctionSet.hxx \
+  /usr/local/opencascade//inc/GeomAbs_SurfaceType.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineSurface.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/Quantity_Parameter.hxx \
+  /usr/local/opencascade//inc/Quantity_Length.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnSurf.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtPElC.hxx \
+  /usr/local/opencascade//inc/Extrema_POnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_Point.lxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfPOnCurv.hxx \
+  /usr/local/opencascade//inc/Extrema_EPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Extrema_PCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/Extrema_SeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSeqPCOfPCFOfEPCOfExtPC.hxx \
+  /usr/local/opencascade//inc/math_FunctionWithDerivative.hxx \
+  /usr/local/opencascade//inc/math_Function.hxx \
+  /usr/local/opencascade//inc/GeomAbs_CurveType.hxx \
+  /usr/local/opencascade//inc/Extrema_SequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/Handle_Extrema_SequenceNodeOfSequenceOfBoolean.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Adaptor3d_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BezierCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BoundedCurve.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_BSplineCurve.hxx \
+  /usr/local/opencascade//inc/GeomAdaptor_Curve.lxx \
+  /usr/local/opencascade//inc/GeomAPI_ProjectPointOnCurve.lxx \
+  /usr/local/opencascade//inc/BRepTools.hxx \
+  /usr/local/opencascade//inc/Standard_IStream.hxx \
+  /usr/local/opencascade//inc/TopExp.hxx \
+  /usr/local/opencascade//inc/TopAbs_ShapeEnum.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeVertex.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.hxx \
+  /usr/local/opencascade//inc/TopLoc_SListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_SListNodeOfSListOfItemLocation.hxx \
+  /usr/local/opencascade//inc/TCollection_SList.lxx \
+  /usr/local/opencascade//inc/Handle_TopLoc_Datum3D.hxx \
+  /usr/local/opencascade//inc/TopLoc_Location.lxx \
+  /usr/local/opencascade//inc/TopLoc_ItemLocation.hxx \
+  /usr/local/opencascade//inc/TopLoc_TrsfPtr.hxx \
+  /usr/local/opencascade//inc/TopAbs_Orientation.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shape.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.hxx \
+  /usr/local/opencascade//inc/TopoDS_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopoDS_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_MapNode.hxx \
+  /usr/local/opencascade//inc/TCollection_List.lxx \
+  /usr/local/opencascade//inc/TopoDS_TShape.lxx \
+  /usr/local/opencascade//inc/TopAbs.hxx \
+  /usr/local/opencascade//inc/TopAbs_State.hxx \
+  /usr/local/opencascade//inc/TopTools_ListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_ListNodeOfListOfShape.hxx \
+  /usr/local/opencascade//inc/BRepLib_Command.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShapeModification.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Command.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeShell.hxx \
+  /usr/local/opencascade//inc/BRepLib_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_ShellError.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepLib_MakeSolid.hxx \
+  /usr/local/opencascade//inc/BRepOffsetAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/Handle_BRepBuilderAPI_Sewing.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.hxx \
+  /usr/local/opencascade//inc/TCollection_MapNodePtr.hxx \
+  /usr/local/opencascade//inc/TCollection_BasicMap.lxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedMapNodeOfIndexedMapOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_IndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_IndexedDataMapNodeOfIndexedDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeShape.hxx \
+  /usr/local/opencascade//inc/TopTools_DataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_DataMapNodeOfDataMapOfShapeListOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/TopTools_MapOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_StdMapNodeOfMapOfShape.hxx \
+  /usr/local/opencascade//inc/BRepBuilderAPI_Sewing.lxx \
+  /usr/local/opencascade//inc/BRepLProp_SLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.hxx \
+  /usr/local/opencascade//inc/TopoDS_Face.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Surface.lxx \
+  /usr/local/opencascade//inc/LProp_Status.hxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.hxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt.hxx \
+  /usr/local/opencascade//inc/TCollection_Array1.lxx \
+  /usr/local/opencascade//inc/Handle_TColgp_HArray1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/Poly_Array1OfTriangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.hxx \
+  /usr/local/opencascade//inc/Poly_Triangle.lxx \
+  /usr/local/opencascade//inc/Poly_Triangulation.lxx \
+  /usr/local/opencascade//inc/TColgp_Array1OfPnt2d.hxx \
+  /usr/local/opencascade//inc/GProp_GProps.hxx \
+  /usr/local/opencascade//inc/BRepGProp.hxx \
+  /usr/local/opencascade//inc/TopoDS.hxx \
+  /usr/local/opencascade//inc/TopoDS.lxx \
+  /usr/local/opencascade//inc/Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/Handle_Standard_TypeMismatch.hxx \
+  /usr/local/opencascade//inc/TopoDS_Solid.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.hxx \
+  /usr/local/opencascade//inc/TopExp_Stack.hxx \
+  /usr/local/opencascade//inc/TopExp_Explorer.lxx \
+  /usr/local/opencascade//inc/BRep_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder3D.hxx \
+  /usr/local/opencascade//inc/TopoDS_Builder.hxx \
+  /usr/local/opencascade//inc/TopoDS_Wire.hxx \
+  /usr/local/opencascade//inc/BRepTools_WireExplorer.hxx \
+  /usr/local/opencascade//inc/TopoDS_Edge.hxx \
+  /usr/local/opencascade//inc/TopoDS_Vertex.hxx \
+  /usr/local/opencascade//inc/BRepLProp_CLProps.hxx \
+  /usr/local/opencascade//inc/BRepAdaptor_Curve.hxx \
+  /usr/local/opencascade//inc/Handle_Adaptor3d_HCurveOnSurface.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.hxx \
+  /usr/local/opencascade//inc/XSControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_XSControl_WorkSession.hxx \
+  /usr/local/opencascade//inc/Handle_IFSelect_WorkSession.hxx \
+  /usr/local/opencascade//inc/TColStd_SequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_SequenceNodeOfSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/TopTools_SequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_SequenceNodeOfSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/IFSelect_ReturnStatus.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_InterfaceModel.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfTransient.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintCount.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESModel.hxx \
+  /usr/local/opencascade//inc/IFSelect_PrintFail.hxx \
+  /usr/local/opencascade//inc/IGESControl_Reader.lxx \
+  /usr/local/opencascade//inc/STEPControl_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_StepData_StepModel.hxx \
+  /usr/local/opencascade//inc/IGESToBRep_Reader.hxx \
+  /usr/local/opencascade//inc/Handle_IGESToBRep_Actor.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfTransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ActorOfProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_TransientProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForTransient.hxx \
+  /usr/local/opencascade//inc/Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Static.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Handle_MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.hxx \
+  /usr/local/opencascade//inc/TCollection_AsciiString.lxx \
+  /usr/local/opencascade//inc/Interface_ParamType.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HArray1OfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfInteger.hxx \
+  /usr/local/opencascade//inc/Interface_StaticSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Interface_TypedValue.hxx \
+  /usr/local/opencascade//inc/Interface_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/Interface_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/MoniTool_TypedValue.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueType.hxx \
+  /usr/local/opencascade//inc/MoniTool_ValueInterpret.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_TCollection_HExtendedString.hxx \
+  /usr/local/opencascade//inc/TCollection_HAsciiString.lxx \
+  /usr/local/opencascade//inc/MoniTool_ValueSatisfies.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfAsciiString.hxx \
+  /usr/local/opencascade//inc/Handle_Dico_DictionaryOfTransient.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfHAsciiString.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.hxx \
+  /usr/local/opencascade//inc/Extrema_ExtCC.hxx \
+  /usr/local/opencascade//inc/GeomAPI_ExtremaCurveCurve.lxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.hxx \
+  /usr/local/opencascade//inc/Standard_ErrorHandler.lxx \
+  /usr/local/opencascade//inc/ShapeUpgrade_ShellSewing.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shape.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_BasicMsgRegistrator.hxx \
+  /usr/local/opencascade//inc/Message_Gravity.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Root.lxx \
+  /usr/local/opencascade//inc/Precision.hxx \
+  /usr/local/opencascade//inc/Precision.lxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Edge.hxx \
+  /usr/local/opencascade//inc/ShapeExtend_Status.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shape.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Solid.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Shell.hxx \
+  /usr/local/opencascade//inc/TopoDS_Compound.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Shell.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Surface.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Face.lxx \
+  /usr/local/opencascade//inc/ShapeExtend.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeExtend_WireData.hxx \
+  /usr/local/opencascade//inc/Handle_TopTools_HSequenceOfShape.hxx \
+  /usr/local/opencascade//inc/Handle_TColStd_HSequenceOfInteger.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_Wire.lxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_Wireframe.hxx \
+  /usr/local/opencascade//inc/ShapeFix_Wireframe.lxx \
+  /usr/local/opencascade//inc/BRepMesh.hxx \
+  /usr/local/opencascade//inc/BRepMesh_IncrementalMesh.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_FastDiscret.hxx \
+  /usr/local/opencascade//inc/BRepMesh_DataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Handle_BRepMesh_DataMapNodeOfDataMapOfShapeReal.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.hxx \
+  /usr/local/opencascade//inc/Bnd_Box.lxx \
+  /usr/local/opencascade//inc/BRepBndLib.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis.hxx \
+  /usr/local/opencascade//inc/ShapeBuild_ReShape.hxx \
+  /usr/local/opencascade//inc/BRepTools_ReShape.hxx \
+  /usr/local/opencascade//inc/IGESControl_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_FinderProcess.hxx \
+  /usr/local/opencascade//inc/Handle_Transfer_ProcessForFinder.hxx \
+  /usr/local/opencascade//inc/IGESData_BasicEditor.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_Protocol.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_Protocol.hxx \
+  /usr/local/opencascade//inc/Interface_GeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_NodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GeneralModule.hxx \
+  /usr/local/opencascade//inc/Handle_Interface_GlobalNodeOfGeneralLib.hxx \
+  /usr/local/opencascade//inc/IGESData_SpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_NodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_IGESEntity.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_SpecificModule.hxx \
+  /usr/local/opencascade//inc/Handle_IGESData_GlobalNodeOfSpecificLib.hxx \
+  /usr/local/opencascade//inc/STEPControl_Writer.hxx \
+  /usr/local/opencascade//inc/STEPControl_StepModelType.hxx \
+  /usr/local/opencascade//inc/StlAPI_Writer.hxx \
+  /usr/local/opencascade//inc/Handle_StlMesh_Mesh.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeTolerance.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_ShapeContents.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.hxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_CheckSmallFace.lxx \
+  /usr/local/opencascade//inc/ShapeAnalysis_DataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeAnalysis_DataMapNodeOfDataMapOfShapeListOfReal.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_Fuse.hxx \
+  /usr/local/opencascade//inc/BRepAlgoAPI_BooleanOperation.hxx \
+  /usr/local/opencascade//inc/BOP_Operation.hxx \
+  /usr/local/opencascade//inc/BOPTools_PDSFiller.hxx \
+  /usr/local/opencascade//inc/BOP_PBuilder.hxx \
+  /usr/local/opencascade//inc/Handle_BOP_HistoryCollector.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.hxx \
+  /usr/local/opencascade//inc/BRepCheck_DataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_Result.hxx \
+  /usr/local/opencascade//inc/Handle_BRepCheck_DataMapNodeOfDataMapOfShapeResult.hxx \
+  /usr/local/opencascade//inc/BRepCheck_Analyzer.lxx \
+  /usr/local/opencascade//inc/BRepLib.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_Plane.hxx \
+  /usr/local/opencascade//inc/Handle_Geom_ElementarySurface.hxx \
+  /usr/local/opencascade//inc/ShapeFix.hxx \
+  /usr/local/opencascade//inc/ShapeFix_FixSmallFace.hxx \
+  /usr/local/opencascade//inc/Handle_ShapeFix_FixSmallFace.hxx \
+  ../Common/Message.h OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.h
 GModelIO_F.o: GModelIO_F.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h ../Common/Message.h FVertex.h FEdge.h FFace.h GModelIO_F.h
+  GRegion.h ../Common/Message.h FVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h FEdge.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Curve.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoVertex.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoFace.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_TopoEdge.h FFace.h GModelIO_F.h \
+  /Users/remacle/SOURCES/FourierModel/FM_FPatch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_PartitionOfUnity.h \
+  /Users/remacle/SOURCES/FourierModel/FM_ProjectionSurface.h \
+  /Users/remacle/SOURCES/FourierModel/FM_FCurve.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Curve.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Patch.h \
+  /Users/remacle/SOURCES/FourierModel/FM_Reader.h
 GModelIO_CGNS.o: GModelIO_CGNS.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
@@ -281,4 +2295,4 @@ MElement.o: MElement.cpp MElement.h ../Common/GmshDefines.h MVertex.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h GEntity.h \
   Range.h SBoundingBox3d.h GFace.h GPoint.h GEdgeLoop.h GEdge.h GVertex.h \
   SPoint2.h ExtrudeParams.h ../Common/SmoothData.h Pair.h \
-  ../Common/Message.h
+  ../Common/Message.h ../Mesh/qualityMeasures.h
diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp
index cb5c930fbd3983f51563fed7a91b83a27874e61c..e528a2d8820a98806103994a53a273d728256e92 100644
--- a/Geo/OCCEdge.cpp
+++ b/Geo/OCCEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCEdge.cpp,v 1.25 2007-11-04 21:03:17 remacle Exp $
+// $Id: OCCEdge.cpp,v 1.26 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -89,14 +89,14 @@ SPoint2 OCCEdge::reparamOnFace(GFace *face, double epar,int dir) const
     const double dz = p1.z()-p2.z();
     if(sqrt(dx*dx+dy*dy+dz*dz) > 1.e-4 * CTX.lc){
       // return reparamOnFace(face, epar,-1);      
-      Msg(WARNING, "Reparam on face partially failed for curve %d surface %d at point %g",
-	  tag(), face->tag(), epar);
-      Msg(WARNING, "On the face %d local (%g %g) global (%g %g %g)",
-	  face->tag(), u, v, p2.x(), p2.y(), p2.z());
-      Msg(WARNING, "On the edge %d local (%g) global (%g %g %g)",
-	  tag(), epar, p1.x(), p1.y(), p1.z());
-      GPoint ppp = face->closestPoint(SPoint3(p1.x(), p1.y(), p1.z()));
-      return SPoint2(ppp.u(), ppp.v());
+//       Msg(WARNING, "Reparam on face partially failed for curve %d surface %d at point %g",
+// 	  tag(), face->tag(), epar);
+//       Msg(WARNING, "On the face %d local (%g %g) global (%g %g %g)",
+// 	  face->tag(), u, v, p2.x(), p2.y(), p2.z());
+//       Msg(WARNING, "On the edge %d local (%g) global (%g %g %g)",
+// 	  tag(), epar, p1.x(), p1.y(), p1.z());
+//      GPoint ppp = face->closestPoint(SPoint3(p1.x(), p1.y(), p1.z()));
+//      return SPoint2(ppp.u(), ppp.v());
     }
   }
   return SPoint2(u, v);
@@ -105,6 +105,7 @@ SPoint2 OCCEdge::reparamOnFace(GFace *face, double epar,int dir) const
 // True if the edge is a seam for the given face
 int OCCEdge::isSeam(GFace *face) const
 {
+
   const TopoDS_Face *s = (TopoDS_Face*) face->getNativePtr();
   BRepAdaptor_Surface surface(*s);
   //  printf("asking if edge %d is a seam of face %d\n",tag(),face->tag());
@@ -189,10 +190,14 @@ GEntity::GeomType OCCEdge::geomType() const
 
 int OCCEdge::minimumMeshSegments() const
 {
+  int np;
   if(geomType() == Line)
-    return GEdge::minimumMeshSegments();
-  else
-    return CTX.mesh.min_curv_points - 1;
+    np= GEdge::minimumMeshSegments();
+  else if(geomType() == Circle)
+    np= CTX.mesh.min_circ_points - 1;
+  else 
+    np=CTX.mesh.min_curv_points - 1;
+  return np;
 }
 
 int OCCEdge::minimumDrawSegments() const
@@ -208,6 +213,7 @@ int OCCEdge::minimumDrawSegments() const
 double OCCEdge::curvature(double par) const 
 {
   const double eps = 1.e-15;
+
   Standard_Real Crv;
   if (curve.IsNull()){
     Geom2dLProp_CLProps2d aCLProps(curve2d, 2, eps);
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 6997c634d471c84c9a2adb443c4a6634863f45a8..7b05b04e28dfab94c0f9ab2a5bfdbc89acd01118 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCFace.cpp,v 1.23 2007-10-16 20:00:06 geuzaine Exp $
+// $Id: OCCFace.cpp,v 1.24 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -32,6 +32,9 @@
 #include "Geom_ConicalSurface.hxx"
 #include "Geom_BSplineSurface.hxx"
 #include "Geom_SphericalSurface.hxx"
+#include "Geom_ToroidalSurface.hxx"
+#include "Geom_SurfaceOfRevolution.hxx"
+#include "Geom_BezierSurface.hxx"
 #include "Geom_Plane.hxx"
 #include "gp_Pln.hxx"
 
@@ -177,10 +180,16 @@ GEntity::GeomType OCCFace::geomType() const
 {
   if (occface->DynamicType() == STANDARD_TYPE(Geom_Plane))
     return Plane;
+  else if (occface->DynamicType() == STANDARD_TYPE(Geom_ToroidalSurface))
+    return Torus;
+  else if (occface->DynamicType() == STANDARD_TYPE(Geom_BezierSurface))
+    return BezierSurface;
   else if (occface->DynamicType() == STANDARD_TYPE(Geom_CylindricalSurface))
     return Cylinder;
   else if (occface->DynamicType() == STANDARD_TYPE(Geom_ConicalSurface))
     return Cone;
+  else if (occface->DynamicType() == STANDARD_TYPE(Geom_SurfaceOfRevolution))
+    return SurfaceOfRevolution;
   else if (occface->DynamicType() == STANDARD_TYPE(Geom_SphericalSurface))
     return Sphere;
   else if (occface->DynamicType() == STANDARD_TYPE(Geom_BSplineSurface))
@@ -245,6 +254,22 @@ int OCCFace::containsPoint(const SPoint3 &pt) const
   return false;
 }
 
+// retrieve surface params 
+surface_params OCCFace::getSurfaceParams() const 
+{
+  surface_params p;
+  switch (geomType()) 
+    {
+    case GEntity::Cylinder :
+      {
+	p.radius = Handle(Geom_CylindricalSurface)::DownCast(occface)->Radius();
+      }
+      break;
+    }
+  return p;
+}
+
+
 // void OCCFace::buildVisTriangulation ();
 // {
 //   TopLoc_Location loc;
diff --git a/Geo/OCCFace.h b/Geo/OCCFace.h
index fc6b6731e4ddb559c9c0de815baec68b1dd65ad8..c98ddc8e17dc6abe6f6149c3e07cd1559719f03e 100644
--- a/Geo/OCCFace.h
+++ b/Geo/OCCFace.h
@@ -64,6 +64,7 @@ class OCCFace : public GFace {
   virtual bool surfPeriodic(int dim) const {return _periodic[dim];}
   virtual SPoint2 parFromPoint(const SPoint3 &) const;
   virtual double curvature(const SPoint2 &param) const;
+  surface_params getSurfaceParams() const;
 };
 
 #endif
diff --git a/Geo/SPoint3.h b/Geo/SPoint3.h
index 0d458518777f0ecb74e8639576172aa2a7706a37..bfaf39a8734846ad8616328d43a885fc3563fca8 100644
--- a/Geo/SPoint3.h
+++ b/Geo/SPoint3.h
@@ -48,6 +48,16 @@ class SPoint3 {
   SPoint3 operator*(double mult);
   operator double *() { return P; }
   double distance(const SPoint3 &p);
+  // lexicographic
+  bool operator < (const SPoint3 &p) const
+  {
+    if (P[0] < p.P[0]) return true;
+    if (P[0] > p.P[0]) return false;
+    if (P[1] < p.P[1]) return true;
+    if (P[1] > p.P[1]) return false;
+    if (P[2] < p.P[2]) return true;
+    return false;
+  }
 };
 
 inline SPoint3 operator + (const SPoint3 &a, const SPoint3 &b)
diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp
index ab92212aa10d4b8f36b28ccfa3d685c00fa955eb..df32a0832302f142684957e8c919839994bfed81 100644
--- a/Mesh/BDS.cpp
+++ b/Mesh/BDS.cpp
@@ -1,4 +1,4 @@
-// $Id: BDS.cpp,v 1.84 2007-11-04 21:03:17 remacle Exp $
+// $Id: BDS.cpp,v 1.85 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -247,7 +247,7 @@ BDS_Edge *BDS_Mesh::recover_edge(int num1, int num2, std::set<EdgeToRecover> *e2
 	}
       
       int ichoice = ix++ % intersected.size();
-      swap_edge ( intersected[ichoice] , BDS_SwapEdgeTestParametric () );	       
+      swap_edge ( intersected[ichoice] , BDS_SwapEdgeTestQuality (false) );	       
     }
   return 0;
 }
@@ -535,11 +535,22 @@ bool BDS_Mesh::split_edge(BDS_Edge * e, BDS_Point *mid)
 
   e->oppositeof(op);
 
-//     double l1 = sqrt((op[0]->X-op[1]->X) *(op[0]->X-op[1]->X) +
-//   		   (op[0]->Y-op[1]->Y) *(op[0]->Y-op[1]->Y) +
-//   		   (op[0]->Z-op[1]->Z) *(op[0]->Z-op[1]->Z) );
-//     if (l1 < 0.5* mid->lc()) return false;
+//   double qt1 = qmTriangle(p1,op[0],mid,QMTRI_RHO);
+//   double qt2 = qmTriangle(p2,op[0],mid,QMTRI_RHO);
+//   double qt3 = qmTriangle(p1,op[1],mid,QMTRI_RHO);
+//   double qt4 = qmTriangle(p2,op[1],mid,QMTRI_RHO);
+//   if (qt1 < 1.e-5 || qt2 < 1.e-5 || qt3 < 1.e-5 || qt4 < 1.e-5)
+//     {
+//       return false;
+//     }
 
+
+  
+//   double l1 = sqrt((op[0]->X-op[1]->X) *(op[0]->X-op[1]->X) +
+//    		   (op[0]->Y-op[1]->Y) *(op[0]->Y-op[1]->Y) +
+//    		   (op[0]->Z-op[1]->Z) *(op[0]->Z-op[1]->Z) );
+//   if (l1 < 0.1* mid->lc()) return false;
+  
   BDS_Point *pts1[4];
   e->faces(0)->getNodes(pts1);
 
@@ -612,6 +623,7 @@ bool BDS_Mesh::split_edge(BDS_Edge * e, BDS_Point *mid)
   t3->g = g1;
   t4->g = g2;
 
+
   p1_mid->g = ge;
   mid_p2->g = ge;
   op1_mid->g = g1;
@@ -757,45 +769,60 @@ void BDS_Mesh::saturate_edge(BDS_Edge * e, std::vector<BDS_Point *> &mids)
 }
 
 
-
-
 // This function does actually the swap without taking into account
 // the feasability of the operation. Those conditions have to be
 // taken into account before doing the edge swap
 
-bool BDS_SwapEdgeTestParametric::operator () (BDS_Point *_p1,BDS_Point *_p2,
-					      BDS_Point *_q1,BDS_Point *_q2) const
+bool BDS_SwapEdgeTestQuality::operator () (BDS_Point *_p1,BDS_Point *_p2,
+					   BDS_Point *_q1,BDS_Point *_q2) const
 {
-   double p1[2] =  {_p1->u,_p1->v};
-   double p2[2] =  {_p2->u,_p2->v};
+   double p1 [2] = {_p1->u,_p1->v};
+   double p2 [2] = {_p2->u,_p2->v};
    double op1[2] = {_q1->u,_q1->v};
    double op2[2] = {_q2->u,_q2->v};
 
    double ori_t1 = gmsh::orient2d(op1, p1, op2);
-   double ori_t2 = gmsh::orient2d(op1,op2, p2);
+   double ori_t2 = gmsh::orient2d(op1, op2, p2);
    
-   return( ori_t1 * ori_t2 > 0 ); // the quadrangle was strictly convex !
-
-//    double ori_t1 = gmsh::orient2d(p1, p2, op1);
-//    double ori_t2 = gmsh::orient2d(p1, p2, op2);
-
-//    double ori_t3 = gmsh::orient2d(op1, op2, p1);
-//    double ori_t4 = gmsh::orient2d(op1, op2, p2);
-//    return (ori_t1 * ori_t2 < 0 && ori_t3 * ori_t4 < 0);
-
-//   double t1 = fabs(surface_triangle_param(_p1,_p2,_q1));
-//   double t2 = fabs(surface_triangle_param(_p1,_p2,_q2));
-
-//   double t3 = fabs(surface_triangle_param(_q1,_q2,_p1));
-//   double t4 = fabs(surface_triangle_param(_q1,_q2,_p2));
-
-//   //  printf("%12.5E %12.5E %12.5E %12.5E -- %12.5E so %1d\n",t1,t2,t3,t4,fabs(t1+t2-t3-t4),fabs(t1+t2-t3-t4) > 1.e-15 * (t1+t2+t3+t4));
+   return ( ori_t1 * ori_t2 > 0 ); // the quadrangle was strictly convex !
+}
 
-//   if (fabs(t1+t2-t3-t4) > 1.e-13*(t1+t2+t3+t4))return false;
-//   return true;
+bool BDS_SwapEdgeTestQuality::operator () (BDS_Point *_p1,BDS_Point *_p2,BDS_Point *_p3,
+					   BDS_Point *_q1,BDS_Point *_q2,BDS_Point *_q3,
+					   BDS_Point *_op1,BDS_Point *_op2,BDS_Point *_op3,
+					   BDS_Point *_oq1,BDS_Point *_oq2,BDS_Point *_oq3 )const
+{
+  if (!testQuality) return true;
+  double n[3],q[3],on[3],oq[3];
+  normal_triangle(_p1,_p2,_p3,n); 
+  normal_triangle(_q1,_q2,_q3,q); 
+  normal_triangle(_op1,_op2,_op3,on); 
+  normal_triangle(_oq1,_oq2,_oq3,oq);
+
+  double cosnq; prosca(n,q,&cosnq);
+  double cosonq; prosca(on,oq,&cosonq);
+
+  double qa1 = qmTriangle(_p1, _p2, _p3,QMTRI_RHO);
+  double qa2 = qmTriangle(_q1, _q2, _q3,QMTRI_RHO);
+  double qb1 = qmTriangle(_op1, _op2, _op3,QMTRI_RHO);
+  double qb2 = qmTriangle(_oq1, _oq2, _oq3,QMTRI_RHO);
+
+  // we swap for a better configuration 
+  double mina = std::min(qa1,qa2);
+  double minb = std::min(qb1,qb2);
+
+//   if (cosnq < .3 && cosonq > .5 && minb > .1)
+//     printf("mina = %g minb = %g cos %g %g\n",mina,minb,cosnq,cosonq);
+  
+  if (cosnq < .3 && cosonq > .5 && minb > .1) return true; 
+  
+  if (minb > mina) return true; 
+  //  if (mina > minb && cosnq <= cosonq)return true;
+  return false;
 
 }
 
+
 bool BDS_Mesh::swap_edge(BDS_Edge * e, const BDS_SwapEdgeTest &theTest)
 {
 
@@ -850,9 +877,25 @@ bool BDS_Mesh::swap_edge(BDS_Edge * e, const BDS_SwapEdgeTest &theTest)
     }
   }
 
+  if(orientation == 1) {
+    if (!theTest ( p1, p2, op[0],
+		   p2,p1,op[1],
+		   p1,op[1],op[0],
+		   op[1],p2,op[0]))
+    return false;
+  }
+  else{
+    if (!theTest ( p2, p1, op[0],
+		   p1,p2,op[1],
+		   p1,op[0],op[1],
+		   op[1],op[0],p2))
+      return false;
+  }
+
   if (!theTest ( p1, p2, op[0],op[1]))
     return false;
 
+
   BDS_Edge *p1_op1 = find_edge(p1, op[0], e->faces(0));
   BDS_Edge *op1_p2 = find_edge(op[0], p2, e->faces(0));
   BDS_Edge *p1_op2 = find_edge(p1, op[1], e->faces(1));
@@ -998,7 +1041,7 @@ bool BDS_Mesh::collapse_edge_parametric(BDS_Edge * e, BDS_Point * p)
   // printf("collapsing an edge :");
   // print_edge(e);
 
-  static int pt[3][1024];
+  static BDS_Point* pt[3][1024];
   static BDS_GeomEntity *gs[1024];
   static int ept[2][1024];
   static BDS_GeomEntity *egs[1024]; 
@@ -1009,22 +1052,28 @@ bool BDS_Mesh::collapse_edge_parametric(BDS_Edge * e, BDS_Point * p)
     std::list < BDS_Face * >::iterator ite = t.end();
     while(it != ite) {
       BDS_Face *t = *it;
-      //          print_face(t);
       if(t->e1 != e && t->e2 != e && t->e3 != e) {
-	if (!test_move_point_parametric_triangle ( p, o->u, o-> v, t))
+	if (!test_move_point_parametric_triangle ( p, o->u, o->v, t))
 	  return false;
         gs[nt] = t->g;
 	BDS_Point *pts[4];
 	t->getNodes(pts);
-        pt[0][nt] = (pts[0] == p) ? o->iD : pts[0]->iD;
-        pt[1][nt] = (pts[1] == p) ? o->iD : pts[1]->iD;
-        pt[2][nt++] = (pts[2] == p) ? o->iD : pts[2]->iD;
+        pt[0][nt] = (pts[0] == p) ? o : pts[0];
+        pt[1][nt] = (pts[1] == p) ? o : pts[1];
+        pt[2][nt] = (pts[2] == p) ? o : pts[2];
+
+//  	double qnew = qmTriangle(pt[0][nt],pt[1][nt],pt[2][nt],QMTRI_RHO);
+//  	double qold = qmTriangle(pts[0],pts[1],pts[2],QMTRI_RHO);
+//  	if ( qold > 1.e-4 && qnew < 1.e-4)return false;
+	nt++;
+//         pt[0][nt] = (pts[0] == p) ? o->iD : pts[0]->iD;
+//         pt[1][nt] = (pts[1] == p) ? o->iD : pts[1]->iD;
+//         pt[2][nt++] = (pts[2] == p) ? o->iD : pts[2]->iD;
       }
       ++it;
     }
   }
 
-
   {
     std::list < BDS_Face * >::iterator it = t.begin();
     std::list < BDS_Face * >::iterator ite = t.end();
@@ -1057,7 +1106,7 @@ bool BDS_Mesh::collapse_edge_parametric(BDS_Edge * e, BDS_Point * p)
 
   {
     for(int k = 0; k < nt; k++) {
-      BDS_Face *t = add_triangle(pt[0][k], pt[1][k], pt[2][k]);
+      BDS_Face *t = add_triangle(pt[0][k]->iD, pt[1][k]->iD, pt[2][k]->iD);
       t->g = gs[k];
     }
   }
@@ -1162,17 +1211,23 @@ bool BDS_Mesh::smooth_point_centroid(BDS_Point * p, GFace *gf)
     BDS_Face *t = *it;
     if (!test_move_point_parametric_triangle ( p, U, V, t))
       return false;    
-//     //    p->X = gp.x();
-//     //    p->Y = gp.y();
-//     //    p->Z = gp.z();
-//     //    newWorst = std::min(newWorst,qmTriangle(*it,QMTRI_RHO));
-//     //    p->X = oldX;
-//     //    p->Y = oldY;
-//     //    p->Z = oldZ;
-//     //    oldWorst = std::min(oldWorst,qmTriangle(*it,QMTRI_RHO));
+//     p->X = gp.x();
+//     p->Y = gp.y();
+//     p->Z = gp.z();
+//     newWorst = std::min(newWorst,qmTriangle(*it,QMTRI_RHO));
+//     p->X = oldX;
+//     p->Y = oldY;
+//     p->Z = oldZ;
+//     oldWorst = std::min(oldWorst,qmTriangle(*it,QMTRI_RHO));
     ++it;
   }
-  //  if (oldWorst > newWorst)return false;
+  
+
+//   if (newWorst < 1.e-2)
+//     {
+//       printf("chmoochiong %g %g\n",oldWorst,newWorst);
+//       //      return false;
+//     }
   
   p->u = U;
   p->v = V;
diff --git a/Mesh/BDS.h b/Mesh/BDS.h
index 6043487b1888c5eaa5859a6e947bbabd33a4aacd..bc7aa40110c8c0cebb4ac351f8280f562e7a93cf 100644
--- a/Mesh/BDS.h
+++ b/Mesh/BDS.h
@@ -364,23 +364,25 @@ class BDS_SwapEdgeTest
  public:
   virtual bool operator() (BDS_Point *p1,BDS_Point *p2,
 			   BDS_Point *q1,BDS_Point *q2) const = 0; 
+  virtual bool operator() (BDS_Point *p1,BDS_Point *p2, BDS_Point *p3,
+			   BDS_Point *q1,BDS_Point *q2, BDS_Point *q3,
+			   BDS_Point *op1,BDS_Point *op2, BDS_Point *op3,
+			   BDS_Point *oq1,BDS_Point *oq2, BDS_Point *oq3) const = 0; 
   virtual ~BDS_SwapEdgeTest(){}
 };
 
-class BDS_SwapEdgeTestParametric : public BDS_SwapEdgeTest
+class BDS_SwapEdgeTestQuality : public BDS_SwapEdgeTest
 {
+  bool testQuality;
  public:
+  BDS_SwapEdgeTestQuality (bool a) : testQuality(a){}
   virtual bool operator() (BDS_Point *p1,BDS_Point *p2,
 			   BDS_Point *q1,BDS_Point *q2) const ; 
-  virtual ~BDS_SwapEdgeTestParametric(){}
-};
-
-class BDS_SwapEdgeTestDelaunay : public BDS_SwapEdgeTest
-{
- public:
-  virtual bool operator() (BDS_Point *p1,BDS_Point *p2,
-			   BDS_Point *q1,BDS_Point *q2) const ; 
-  virtual ~BDS_SwapEdgeTestDelaunay(){}
+  virtual bool operator() (BDS_Point *p1,BDS_Point *p2, BDS_Point *p3,
+			   BDS_Point *q1,BDS_Point *q2, BDS_Point *q3,
+			   BDS_Point *op1,BDS_Point *op2, BDS_Point *op3,
+			   BDS_Point *oq1,BDS_Point *oq2, BDS_Point *oq3) const ; 
+  virtual ~BDS_SwapEdgeTestQuality(){}
 };
 
 struct EdgeToRecover 
diff --git a/Mesh/BackgroundMesh.cpp b/Mesh/BackgroundMesh.cpp
index 2e75162e0f960cc32d03681689027a30a646c749..20d9ca97a3baf36c44f4b87d6939a40099c03b81 100644
--- a/Mesh/BackgroundMesh.cpp
+++ b/Mesh/BackgroundMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: BackgroundMesh.cpp,v 1.28 2007-11-09 08:07:53 geuzaine Exp $
+// $Id: BackgroundMesh.cpp,v 1.29 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -183,7 +183,6 @@ double BGM_MeshSize(GEntity *ge, double U, double V, double X, double Y, double
   double l4 = lc_field.empty() ? MAX_LC : lc_field(X, Y, Z);
 
   double lc;
-
   if(l4 < MAX_LC && !CTX.mesh.constrained_bgmesh){
     // use the fields unconstrained by other characteristic lengths
     lc = l4 * CTX.mesh.lc_factor;
diff --git a/Mesh/Makefile b/Mesh/Makefile
index f802a394610c51e312fbffe38363d2e7dfe9f94d..4210e537744ccee77fc817b270bb1bfb9532d1ac 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.185 2007-11-04 21:03:17 remacle Exp $
+# $Id: Makefile,v 1.186 2007-11-11 19:53:57 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -113,14 +113,15 @@ Field.o: Field.cpp ../Mesh/BDS.h ../Geo/GFace.h ../Geo/GPoint.h \
   ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
   ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h Field.h ../Geo/Geo.h ../Geo/gmshSurface.h \
-  ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \
-  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Geo/GeoInterpolation.h ../Geo/Geo.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
-  ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h
+  ../DataStr/Tree.h Field.h ../contrib/ANN/include/ANN/ANN.h ../Geo/Geo.h \
+  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Geo/GeoInterpolation.h ../Geo/Geo.h ../Geo/GModel.h ../Geo/GVertex.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  ../contrib/MathEval/matheval.h
 meshGEdge.o: meshGEdge.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -166,7 +167,7 @@ meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \
   ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
   ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
   ../Common/Message.h BDS.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h
+  ../Post/PViewOptions.h ../Post/ColorTable.h qualityMeasures.h
 meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
@@ -244,7 +245,9 @@ meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
   ../Geo/ExtrudeParams.h ../Geo/GRegion.h BDS.h ../Post/PView.h \
   ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Message.h
+  ../Common/Message.h ../contrib/Tetgen/tetgen.h \
+  ../contrib/Netgen/libsrc/interface/nglib.h \
+  ../contrib/Netgen/nglib_addon.h
 meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   BackgroundMesh.h meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
@@ -304,7 +307,7 @@ meshGRegionCarveHole.o: meshGRegionCarveHole.cpp ../Geo/GModel.h \
   ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
   ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
   ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
-  ../Common/Message.h
+  ../Common/Message.h ../contrib/ANN/include/ANN/ANN.h
 DivideAndConquer.o: DivideAndConquer.cpp ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -327,10 +330,25 @@ BackgroundMesh.o: BackgroundMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
   ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h Field.h ../Post/PView.h \
   ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \
-  ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Post/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
+  ../contrib/ANN/include/ANN/ANN.h ../Geo/Geo.h ../Geo/gmshSurface.h \
+  ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \
+  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h
+qualityMeasures.o: qualityMeasures.cpp qualityMeasures.h BDS.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Common/GmshDefines.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/MElement.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
+  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h
 BoundaryLayer.o: BoundaryLayer.cpp BoundaryLayer.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
@@ -346,20 +364,55 @@ BoundaryLayer.o: BoundaryLayer.cpp BoundaryLayer.h ../Geo/GModel.h \
   ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
   ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
   meshGEdge.h meshGFace.h ../Common/Message.h
-BDS.o: BDS.cpp ../Numeric/Numeric.h ../Common/GmshMatrix.h BDS.h \
-  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Common/GmshDefines.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
-  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/MElement.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Message.h
+BDS.o: BDS.cpp ../Numeric/Numeric.h ../Common/GmshMatrix.h \
+  /sw/include/gsl/gsl_linalg.h /sw/include/gsl/gsl_mode.h \
+  /sw/include/gsl/gsl_permutation.h /sw/include/gsl/gsl_types.h \
+  /sw/include/gsl/gsl_errno.h /sw/include/gsl/gsl_check_range.h \
+  /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h \
+  /sw/include/gsl/gsl_blas.h /sw/include/gsl/gsl_blas_types.h \
+  /sw/include/gsl/gsl_cblas.h BDS.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Context.h \
+  ../DataStr/List.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Post/PView.h ../Post/PViewData.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Message.h \
+  qualityMeasures.h
 HighOrder.o: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp
index fbd8be9dfb0d40db0d10fc204aa4e7bb4c2a00ec..3052065b43feb539e7fe1fabe1b196fdab016752 100644
--- a/Mesh/meshGEdge.cpp
+++ b/Mesh/meshGEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGEdge.cpp,v 1.45 2007-10-11 08:59:22 remacle Exp $
+// $Id: meshGEdge.cpp,v 1.46 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -312,10 +312,12 @@ void meshGEdge::operator() (GEdge *ge)
 
   List_Reset(Points);
     
+
   // Integrate detJ/lc du 
   double a;
   int N;
-  if(ge->meshAttributes.Method == TRANSFINI){
+  if (ge->degenerate(0)){N=1;a=0.0;}
+  else if(ge->meshAttributes.Method == TRANSFINI){
     a = Integration(ge, t_begin, t_end, F_Transfinite, Points, 1.e-8);
     N = ge->meshAttributes.nbPointsTransfinite;
   }
@@ -324,9 +326,9 @@ void meshGEdge::operator() (GEdge *ge)
       Integration(ge, t_begin, t_end, F_Lc_usingInterpLcBis, lcPoints, 
 		  CTX.mesh.lc_integration_precision);
       buildInterpLc(lcPoints);
-      printInterpLc("toto1.dat");
+      //      printInterpLc("toto1.dat");
       smoothInterpLc(ge->periodic(), 20);
-      printInterpLc("toto2.dat");
+      //      printInterpLc("toto2.dat");
       a = Integration(ge, t_begin, t_end, F_Lc_usingInterpLc, Points, 1.e-8);
     }
     else{
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 500f16f1b384398e4d1313d3e08f9cc415a9fe7e..e0589a529504013d42f434ba2a46476bb062d413 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFace.cpp,v 1.100 2007-11-04 21:03:17 remacle Exp $
+// $Id: meshGFace.cpp,v 1.101 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -134,7 +134,7 @@ void remeshUnrecoveredEdges ( std::set<EdgeToRecover> & edgesNotRecovered, std::
 
 bool AlgoDelaunay2D ( GFace *gf )
 {
-  if ( gf->getNativeType() == GEntity::GmshModel && CTX.mesh.algo2d == ALGO_2D_DELAUNAY && gf->geomType() == GEntity::Plane)
+  if ( /*gf->getNativeType() == GEntity::GmshModel &&*/ CTX.mesh.algo2d == ALGO_2D_DELAUNAY && gf->geomType() == GEntity::Plane)
     return true;
   return false;
 }
@@ -186,17 +186,6 @@ void computeEdgeLoops(const GFace *gf,
   }
 }
 
-double F_LC_ANALY(double xx, double yy, double zz)
-{
-  //  return 0.005 + 0.05*fabs (sin(5*xx) + sin(15*yy) + sin(15*zz));
-  //  return 0.02;
-  //  return 0.002 + 0.04*fabs (sin(6*xx) + sin(6*yy) + sin(6*zz));
-  return 0.003 + 0.05*fabs(sin(8*xx) + sin(8*yy) + sin(8*zz));
-  return 0.02 + 0.1*fabs(sin(3*xx) + sin(3*yy) + sin(3*zz));
-  return 0.01 + 0.1*fabs(sin((xx*xx+(zz-0.7)*(zz-0.7)-.25))); 
-  return 0.05 + 0.1*fabs(xx*yy);
-}
-
 double NewGetLc(BDS_Point *p)
 {
   return Extend1dMeshIn2dSurfaces () ? std::min(p->lc(),p->lcBGM()) : p->lcBGM();
@@ -297,19 +286,20 @@ bool edgeSwapTestAngle(BDS_Edge *e, double min_cos)
   return cosa > min_cos; 
 }
 
-int edgeSwapTestQuality(BDS_Edge *e, double fact = 1.1)
+int edgeSwapTestQuality(BDS_Edge *e, double fact = 1.1, bool force = false)
 {
   BDS_Point *op[2];
   
-  if(!e->p1->config_modified && ! e->p2->config_modified) return 0;
+  if (!force)
+    if(!e->p1->config_modified && ! e->p2->config_modified) return 0;
   
   if(e->numfaces() != 2) return 0;
   
   e->oppositeof (op);
 
-  if (! edgeSwapTestAngle(e, cos(CTX.mesh.allow_swap_edge_angle*M_PI/180.)) ) return -1;
-  
-  
+  if (!force)
+    if (! edgeSwapTestAngle(e, cos(CTX.mesh.allow_swap_edge_angle*M_PI/180.)) ) return -1;
+    
   double qa1 = qmTriangle(e->p1, e->p2, op[0],QMTRI_RHO);
   double qa2 = qmTriangle(e->p1, e->p2, op[1],QMTRI_RHO);
   double qb1 = qmTriangle(e->p1, op[0], op[1],QMTRI_RHO);
@@ -347,45 +337,40 @@ bool edgeSwapTestDelaunay(BDS_Edge *e,GFace *gf)
 void OptimizeMesh(GFace *gf, BDS_Mesh &m, const int NIT)
 {
   // optimize
-  for(int i = 0 ; i < NIT ; i++){
+  //  if (0)
     {
-      std::set<BDS_Point*,PointLessThan> PTS (m.points);
-      std::set<BDS_Point*,PointLessThan>::iterator itp = PTS.begin();
-      while (itp != PTS.end())
+      for(int i = 0 ; i < NIT ; i++){
 	{
-	  std::list < BDS_Face * >t;
-	  (*itp)->getTriangles(t);
-	  if (t.size()==(*itp)->edges.size()  &&  t.size() < 5)
-	    for (std::list<BDS_Edge*>::iterator ite = (*itp)->edges.begin();ite!=(*itp)->edges.end();++ite)
-	      {
-		if(m.collapse_edge_parametric ( (*ite), (*itp)))break;
-	      }
-	  else
-	    m.smooth_point_centroid(*itp,gf);		
-	  ++itp;
-	}
-    }
-    for (int KK=0;KK<4;KK++){
-      // swap edges that provide a better configuration
-      int NN1 = m.edges.size();
-      int NN2 = 0;
-      std::list<BDS_Edge*>::iterator it = m.edges.begin();
-      while (1)
-	{
-	  if (NN2++ >= NN1)break;
-	  if (!(*it)->deleted)
+	  std::set<BDS_Point*,PointLessThan> PTS (m.points);
+	  std::set<BDS_Point*,PointLessThan>::iterator itp = PTS.begin();
+	  while (itp != PTS.end())
 	    {
-	      const double qual = CTX.mesh.algo2d == ALGO_2D_MESHADAPT ? 1 : 5;
-	      int result = edgeSwapTestQuality(*it,qual);
-	      if (CTX.mesh.algo2d == ALGO_2D_MESHADAPT && result == 1)
-		m.swap_edge ( *it , BDS_SwapEdgeTestParametric());
-	      else if ( result >= 0 && edgeSwapTestDelaunay(*it,gf))
-		m.swap_edge ( *it , BDS_SwapEdgeTestParametric());
+	      std::list < BDS_Face * >t;
+	      (*itp)->getTriangles(t);
+	      if (t.size()==(*itp)->edges.size()  &&  t.size() < 5)
+		for (std::list<BDS_Edge*>::iterator ite = (*itp)->edges.begin();ite!=(*itp)->edges.end();++ite)
+		  {
+		    if(m.collapse_edge_parametric ( (*ite), (*itp)))break;
+		  }
+	      else
+		m.smooth_point_centroid(*itp,gf);		
+	      ++itp;
 	    }
-	  ++it;
 	}
-      m.cleanup();  
+      }
     }
+  for (int KK=0;KK<4;KK++){
+    // swap edges that provide a better configuration
+    int NN1 = m.edges.size();
+    int NN2 = 0;
+    std::list<BDS_Edge*>::iterator it = m.edges.begin();
+    while (1)
+      {
+	if (NN2++ >= NN1)break;
+	m.swap_edge ( *it , BDS_SwapEdgeTestQuality(true));
+	++it;
+      }
+    m.cleanup();  
   }
 }
 
@@ -404,10 +389,10 @@ void swapEdgePass ( GFace *gf, BDS_Mesh &m, int &nb_swap )
 	{
 	  const double qual = CTX.mesh.algo2d == ALGO_2D_MESHADAPT ? 1 : 5;
 	  int result = edgeSwapTestQuality(*it,qual);
-	  if (CTX.mesh.algo2d == ALGO_2D_MESHADAPT && result == 1)
-	    { if (m.swap_edge ( *it , BDS_SwapEdgeTestParametric()))nb_swap++; }
+	  if (CTX.mesh.algo2d == ALGO_2D_MESHADAPT )
+	    { if (m.swap_edge ( *it , BDS_SwapEdgeTestQuality(true)))nb_swap++; }
 	  else if ( result >= 0 && edgeSwapTestDelaunay(*it,gf))
-	    { if (m.swap_edge ( *it , BDS_SwapEdgeTestParametric())) nb_swap++; }
+	    { if (m.swap_edge ( *it , BDS_SwapEdgeTestQuality(false))) nb_swap++; }
 	}
       ++it;
     }  
@@ -444,6 +429,8 @@ void splitEdgePass ( GFace *gf, BDS_Mesh &m, double MAXE_, int &nb_split)
 					  mid->X,mid->Y,mid->Z);
 	      //mid->lc() = 2./ ( 1./(*it)->p1->lc() +  1./(*it)->p2->lc() );		  
 	      mid->lc() = 0.5 * ( (*it)->p1->lc() +  (*it)->p2->lc() );		  
+	      //	      printf("%g %g\n",mid->lc(),mid->lcBGM());
+
 	      if(!m.split_edge ( *it, mid )) m.del_point(mid);
 	      else nb_split++;
 	    }
@@ -622,17 +609,20 @@ void RefineMesh ( GFace *gf, BDS_Mesh &m , const int NIT)
 	{
 	  std::list<BDS_Edge*>::iterator it  = (*itp)->edges.begin();
 	  std::list<BDS_Edge*>::iterator ite = (*itp)->edges.end();
-	  double L = 1.e22;
+	  double L=0;
 	  int ne = 0;
 	  while(it!=ite){
 	    double l = (*it)->length();
-	    if ((*it)->g && (*it)->g->classif_degree == 1){
-	      L=std::min(L,l);
+	    if ((*it)->g && (*it)->g->classif_degree == 1){	      
+	      L=ne?std::max(L,l):l;
+	      //	      L=ne?std::min(L,l):l;
+	      //	      L+=l;
 	      ne++;
 	    }
 	    ++it;
 	  }
 	  if (!ne) L = 1.e22;
+	  //	  else L/=ne;
 	  if(!CTX.mesh.constrained_bgmesh)
 	    (*itp)->lc() = L;
 	  (*itp)->lcBGM() = L;
@@ -690,6 +680,8 @@ void RefineMesh ( GFace *gf, BDS_Mesh &m , const int NIT)
       //saturateEdgePass ( gf, m, maxE, nb_split);
       clock_t t2 = clock();
       swapEdgePass ( gf, m, nb_swap);
+      swapEdgePass ( gf, m, nb_swap);
+      swapEdgePass ( gf, m, nb_swap);
       clock_t t3 = clock();
       collapseEdgePass ( gf, m, minE , MAXNP, nb_collaps);
       clock_t t4 = clock();
@@ -849,6 +841,7 @@ bool recover_medge ( BDS_Mesh *m, GEdge *ge, std::set<EdgeToRecover> *e2r, std::
 bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true)
 {
 
+  //  if (gf->tag() != 21) return true;
   typedef std::set<MVertex*> v_container ;
   v_container all_vertices;
   std::map<int, MVertex*>numbered_vertices;
@@ -856,6 +849,22 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true)
   std::list<GEdge*> emb_edges = gf->emb_edges();
   std::list<GEdge*>::iterator it = edges.begin();
 
+//   if (gf->geomType() == GEntity::Cylinder) 
+//     {
+//       Range<double> rangeU = gf->parBounds(0);
+//       Range<double> rangeV = gf->parBounds(1);  
+//       double du = rangeU.high() -rangeU.low();
+//       double dv = rangeV.high() -rangeV.low();
+//       surface_params params = gf->getSurfaceParams();
+//       printf("radius of the cylinder %g\n",params.radius);
+//   m->scalingU = fabs(du);
+//   m->scalingV = fabs(dv);
+//   SCALINGU = m->scalingU;
+//   SCALINGV = m->scalingV;
+//     }
+
+
+
   // build a set with all points of the boundaries
   it = edges.begin();
   while(it != edges.end())
@@ -1025,14 +1034,19 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true)
 	}
       else if(ge->dim() == 1)
 	{
-	  MEdgeVertex *eve = (MEdgeVertex*) here;
-	  pp->lcBGM() = eve->getLc();
+	 double u;
+	 here->getParameter(0,u);	  
+	 pp->lcBGM() = BGM_MeshSize(ge,u,0,here->x(),here->y(),here->z());
+	  //	  MEdgeVertex *eve = (MEdgeVertex*) here;
+	  //	  pp->lcBGM() = eve->getLc();
 	}
       else
 	  pp->lcBGM() = 1.e22;
 	
       pp->lc() = pp->lcBGM();
       //      printf("dim %d lc = %12.5E\n",ge->dim(),pp->lc());
+
+
     }
   
   Msg(DEBUG1,"Meshing of the convex hull (%d points) done",all_vertices.size());
@@ -1211,6 +1225,7 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true)
       RefineMesh (gf,*m, CTX.mesh.refine_steps);
       OptimizeMesh(gf, *m, 2);
       RefineMesh (gf,*m, -CTX.mesh.refine_steps);
+      OptimizeMesh(gf, *m, 2);
 
       if (gf->meshAttributes.recombine)
 	{
@@ -1297,7 +1312,7 @@ bool gmsh2DMeshGenerator ( GFace *gf , int RECUR_ITER, bool debug = true)
 
 // this function buils a list of vertices (BDS) that 
 // are consecutive in one given edge loop. We take
-// care of periodic surfaces. In the case of periodicity, some
+// care of periodic surfaces. In the case of periodicty, some
 // curves are present 2 times in the wire (seams). Those
 // must be meshed separately
 
@@ -1308,6 +1323,22 @@ inline double dist2 (const SPoint2 &p1,const SPoint2 &p2)
   return dx*dx+dy*dy;
 }
 
+
+
+bool noseam (  GFace *gf  )
+{
+  std::list<GEdge*> edges = gf->edges();
+  std::list<GEdge*>::iterator it = edges.begin();
+  while (it != edges.end())   
+   {
+     GEdge *ge = *it ;
+     bool seam = ge->isSeam(gf);
+     if (seam) return false;
+     ++it;
+   }
+  return true;
+}
+
 bool buildConsecutiveListOfVertices (  GFace *gf,
 				       GEdgeLoop  &gel , 
 				       std::vector<BDS_Point*> &result,
@@ -1326,10 +1357,15 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
   std::map<GEntity*,std::vector<SPoint2> > meshes;
   std::map<GEntity*,std::vector<SPoint2> > meshes_seam;  
 
+  const int _DEBUG = false;
+
   result.clear();
   
   GEdgeLoop::iter it  = gel.begin();  
 
+
+  if (_DEBUG)printf("face %d with %d edges\n",gf->tag(),gf->edges().size());
+
   while (it != gel.end())   
    {
      GEdgeSigned ges = *it ;
@@ -1339,7 +1375,7 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 
      bool seam = ges.ge->isSeam(gf);
      
-     //     printf("face %d edge %d seam %d (%d %d)\n",gf->tag(),ges.ge->tag(),seam,ges.ge->getBeginVertex()->tag(),ges.ge->getEndVertex()->tag());
+     if (_DEBUG)printf("face %d edge %d seam %d (%d %d)\n",gf->tag(),ges.ge->tag(),seam,ges.ge->getBeginVertex()->tag(),ges.ge->getEndVertex()->tag());
      
      Range<double> range = ges.ge->parBounds(0);
 
@@ -1400,9 +1436,9 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 	   {
 	     SPoint2 first_coord         = mesh1d[0];
 	     double d = dist2(last_coord,first_coord);
-	     //	     	     printf("d = %12.5E %d\n",d, coords.size());
 	     if (d < tol) 
 	       {
+		 if (_DEBUG)printf("d = %12.5E %d\n",d, coords.size());
 		 coords.clear();
 		 coords = mesh1d;
 		 found = GEdgeSigned(1,ge);
@@ -1411,10 +1447,10 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 	       }
 	     SPoint2 first_coord_reversed = mesh1d_reversed[0];
 	     double d_reversed = dist2(last_coord,first_coord_reversed);
-	     //	     	     printf("d_r = %12.5E\n",d_reversed);
+	     if (_DEBUG)printf("d_r = %12.5E\n",d_reversed);
 	     if (d_reversed < tol) 
 	       {
-		 //		 		 printf("d_r = %12.5E\n",d_reversed);
+		 if (_DEBUG)printf("d_r = %12.5E\n",d_reversed);
 		 coords.clear();
 		 coords = mesh1d_reversed;
 		 found = (GEdgeSigned(-1,ge));
@@ -1426,9 +1462,9 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 		 SPoint2 first_coord_seam         = mesh1d_seam[0];
 		 SPoint2 first_coord_seam_reversed = mesh1d_seam_reversed[0];
 		 double d_seam = dist2(last_coord,first_coord_seam);
-		 //		 		 printf("d_seam = %12.5E\n",d_seam);
 		 if (d_seam < tol)
 		   {
+		     if (_DEBUG)printf("d_seam = %12.5E\n",d_seam);
 		     coords.clear();
 		     coords = mesh1d_seam;
 		     found = (GEdgeSigned(1,ge));
@@ -1436,9 +1472,9 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 		     goto Finalize;
 		   }
 		 double d_seam_reversed = dist2(last_coord,first_coord_seam_reversed);
-		 //		 		 printf("d_seam_reversed = %12.5E\n",d_seam_reversed);
 		 if (d_seam_reversed < tol)
 		   {
+		     if (_DEBUG)printf("d_seam_reversed = %12.5E\n",d_seam_reversed);
 		     coords.clear();
 		     coords = mesh1d_seam_reversed;
 		     found = (GEdgeSigned(-1,ge));
@@ -1452,6 +1488,7 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
        }
    Finalize:
 
+     if (_DEBUG)printf("Finalize\n");
      if (coords.size() == 0)return false;
      
      std::vector<MVertex*>    edgeLoop;
@@ -1468,7 +1505,7 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 	   edgeLoop.push_back(found.ge->mesh_vertices[i]);
        }
      
-     //     printf("edge %d size %d size %d\n",found.ge->tag(),edgeLoop.size(), coords.size());
+     if (_DEBUG)printf("edge %d size %d size %d\n",found.ge->tag(),edgeLoop.size(), coords.size());
      
      std::vector<BDS_Point*>  edgeLoop_BDS;
      for (unsigned int i=0;i<edgeLoop.size();i++)	    
@@ -1480,32 +1517,37 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 	 U = param.x() / m->scalingU ;
 	 V = param.y() / m->scalingV;	
 	 BDS_Point *pp = m->add_point ( count, U,V,gf );
- 	 if(ge->dim() == 1)
+ 	 if(ge->dim() == 0)
  	   {
- 	     double t;
- 	     here->getParameter(0,t);
- 	     pp->lcBGM() = BGM_MeshSize(ge,t,-12,here->x(),here->y(),here->z());
-	     pp->lc() = pp->lcBGM();
+	     pp->lcBGM() = BGM_MeshSize(ge,0,0,here->x(),here->y(),here->z());
  	   }
- 	 else
+ 	 else if (ge->dim() == 1)
  	   {
-	     MEdgeVertex *eve = (MEdgeVertex*) here;
-	     // 	     pp->lc() = BGM_MeshSize(ge,param.x(),param.y(),here->x(),here->y(),here->z());
-	     pp->lc() = eve->getLc();
-	     pp->lcBGM() = eve->getLc();
+	     double u;
+	     here->getParameter(0,u);	  
+	     pp->lcBGM() = BGM_MeshSize(ge,u,0,here->x(),here->y(),here->z());
+// 	     MEdgeVertex *eve = (MEdgeVertex*) here;
+// 	     // 	     pp->lc() = BGM_MeshSize(ge,param.x(),param.y(),here->x(),here->y(),here->z());
+// 	     pp->lcBGM() = eve->getLc();
  	   }
+	 else
+	     pp->lcBGM() = 1.e22;
+
+	 pp->lc() = pp->lcBGM();
+
+	 //	 printf("lc = %12.5E\n",pp->lc());
 
 	 m->add_geom (ge->tag(), ge->dim());
 	 BDS_GeomEntity *g = m->get_geom(ge->tag(),ge->dim());
 	 pp->g = g;
-	 //	 printf("point %3d (%8.5f %8.5f) (%2d,%2d)\n",count,pp->u,pp->v,pp->g->classif_tag,pp->g->classif_degree);
+	 if (_DEBUG)printf("point %3d (%8.5f %8.5f) (%2d,%2d)\n",count,pp->u,pp->v,pp->g->classif_tag,pp->g->classif_degree);
 	 bbox += SPoint3(U,V,0);	  
 	 edgeLoop_BDS.push_back(pp);
 	 recover_map[pp] = here;	 
 	 count++;
        }     
      last_coord = coords[coords.size()-1];
-     //     printf("last coord %g %g\n",last_coord.x(),last_coord.y());
+     if (_DEBUG)printf("last coord %g %g\n",last_coord.x(),last_coord.y());
      result.insert(result.end(),edgeLoop_BDS.begin(),edgeLoop_BDS.end());	         
 //    for (unsigned int i=0;i<result.size();i++)
 //      {
@@ -1529,7 +1571,7 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 bool gmsh2DMeshGeneratorPeriodic ( GFace *gf , bool debug = true)
 {
 
-  //  if (gf->tag() != 32) return true;
+  //  if (gf->tag() != 21) return true;
   std::map<BDS_Point*,MVertex*> recover_map;
 
   Range<double> rangeU = gf->parBounds(0);
@@ -1555,12 +1597,14 @@ bool gmsh2DMeshGeneratorPeriodic ( GFace *gf , bool debug = true)
     for (std::list<GEdgeLoop>::iterator it = gf->edgeLoops.begin() ; it != gf->edgeLoops.end() ; it++)
       {
 	std::vector<BDS_Point* > edgeLoop_BDS;
-	//	if(buildConsecutiveListOfVertices ( gf, *it , edgeLoop_BDS, bbox, m, recover_map , nbPointsTotal, 1.e-7*LC2D)==false)
-	//	  if(buildConsecutiveListOfVertices ( gf, *it , edgeLoop_BDS, bbox, m, recover_map , nbPointsTotal, 1.e-6*LC2D)==false)
-	    if(buildConsecutiveListOfVertices ( gf, *it , edgeLoop_BDS, bbox, m, recover_map , nbPointsTotal, 1.e-7*LC2D)==false)
+	//	if(!buildConsecutiveListOfVertices ( gf, *it , edgeLoop_BDS, bbox, m, recover_map , nbPointsTotal, 1.e-7*LC2D))
+	  if(!buildConsecutiveListOfVertices ( gf, *it , edgeLoop_BDS, bbox, m, recover_map , nbPointsTotal, 1.e-5))
+	    if(!buildConsecutiveListOfVertices ( gf, *it , edgeLoop_BDS, bbox, m, recover_map , nbPointsTotal, 1.e-3*LC2D))
 	      {
 		gf->meshStatistics.status = GFace::FAILED;
 		Msg(GERROR,"The 1D Mesh seems not to be forming a closed loop");
+		m->scalingU = m->scalingV = SCALINGU = SCALINGV = 1.0;
+		SCALINGV = 1;
 		return false;
 	      }
 	edgeLoops_BDS.push_back(edgeLoop_BDS);
@@ -1906,7 +1950,7 @@ void meshGFace::operator() (GFace *gf)
 
   // temp fix until we create MEdgeLoops in gmshFace
   Msg(DEBUG1, "Generating the mesh");
-  if(gf->getNativeType() == GEntity::GmshModel || gf->edgeLoops.empty()){
+  if(noseam (gf) || gf->getNativeType() == GEntity::GmshModel || gf->edgeLoops.empty()){
     gmsh2DMeshGenerator(gf,0, false);
   }
   else{
diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp
index 5af64a19655bd5c0ba08414cfa52fc37c6d7d482..029c63ea645cc722d888b0f5c61db96d5864af4b 100644
--- a/Mesh/meshGRegion.cpp
+++ b/Mesh/meshGRegion.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGRegion.cpp,v 1.34 2007-11-04 21:03:17 remacle Exp $
+// $Id: meshGRegion.cpp,v 1.35 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -213,7 +213,30 @@ void MeshDelaunayVolume(std::vector<GRegion*> &regions)
   char opts[128];
   buildTetgenStructure(gr, in, numberedV);
   sprintf(opts, "pe%c", (CTX.verbosity < 3) ? 'Q': (CTX.verbosity > 6)? 'V': '\0');
-  tetrahedralize(opts, &in, &out);
+  try{
+    tetrahedralize(opts, &in, &out);
+  }
+  catch (int error){
+    Msg (WARNING, "Self intersecting Surface Mesh, computing intersections (this could take a while)");
+    sprintf(opts, "dV");
+    try{
+      tetrahedralize(opts, &in, &out);    
+      Msg(INFO,"%d faces self-intersect",out.numberoftrifaces); 
+      for (int i=0;i<out.numberoftrifaces;i++)
+	{
+	  Msg(INFO,"face (%d %d %d) on model face %d",
+	      numberedV[out.trifacelist[i * 3 + 0] - 1]->getNum(),
+	      numberedV[out.trifacelist[i * 3 + 1] - 1]->getNum(),
+	      numberedV[out.trifacelist[i * 3 + 2] - 1]->getNum(),
+	      out.trifacemarkerlist[i]);
+	}
+    }
+    catch (int error2){
+      Msg (GERROR, "Surface Mesh is wrong, cannot do the 3D mesh");      
+    }
+    gr->set(faces);
+    return;
+  }
   TransferTetgenMesh(gr, in, out, numberedV);
 
   // sort triangles in all model faces in order to be able to search in vectors
diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp
index ff243ebb1e6ec2fb0071debb858be9eba3877986..de2f45f678c06d9aa2100fa13375041ae71d20c3 100644
--- a/Mesh/meshGRegionDelaunayInsertion.cpp
+++ b/Mesh/meshGRegionDelaunayInsertion.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGRegionDelaunayInsertion.cpp,v 1.19 2007-11-04 21:03:17 remacle Exp $
+// $Id: meshGRegionDelaunayInsertion.cpp,v 1.20 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -298,60 +298,65 @@ static void setLcs ( MTetrahedron *t, std::map<MVertex*,double> &vSizes)
 // }
 
 // 4th argument will disappear when the reclassification of vertices will be done
-bool find_triangle_in_model ( GModel *model , MTriangle *tri, GFace **gfound, bool force)
-{  
+ bool find_triangle_in_model ( GModel *model , MTriangle *tri, GFace **gfound, bool force)
+ {  
 
-  static compareMTriangleLexicographic cmp;
+   static compareMTriangleLexicographic cmp;
 
-//   GEntity *g1 = tri->getVertex(0)->onWhat();
-//   GEntity *g2 = tri->getVertex(1)->onWhat();
-//   GEntity *g3 = tri->getVertex(2)->onWhat();
+   GModel::fiter fit = model->firstFace() ;
+   while (fit != model->lastFace()){
+    
+     bool found = std::binary_search((*fit)->triangles.begin(), 
+ 				    (*fit)->triangles.end(), 
+ 				    tri,cmp);
+     if (found )
+       {
+ 	*gfound = *fit;
+ 	return true;
+       }
+     ++fit;
+   }
+   return false;
 
-//   if (g1 && g2 && g3 && !force)
-//     {
-//       // 3 vertices classified on different model faces => not a triangle on a model face 
-//       if (g1->dim()  == 2 && g2->dim()  == 2 && g3->dim()  == 2)
-// 	{
-// 	  if (g1 != g2 || g1 != g3) return false;
-// 	}
-//       else if ( g1->dim() == 2)
-// 	{
-// 	  *gfound = (GFace*)g1;
-// 	  return std::binary_search((*gfound)->triangles.begin(), 
-// 				    (*gfound)->triangles.end(), 
-// 				    tri,cmp);
-// 	}
-//       else if ( g2->dim() == 2)
-// 	{
-// 	  *gfound = (GFace*)g2;
-// 	  return std::binary_search((*gfound)->triangles.begin(), 
-// 				    (*gfound)->triangles.end(), 
-// 				    tri,cmp);
-// 	}
-//       else if ( g3->dim() == 2)
-// 	{
-// 	  *gfound = (GFace*)g3;
-// 	  return std::binary_search((*gfound)->triangles.begin(), 
-// 				    (*gfound)->triangles.end(), 
-// 				    tri,cmp);
-// 	}
-//    }
+ }
+
+typedef std::multimap<MVertex*,std::pair<MTriangle*,GFace*> > fs_cont ;
+
+
+GFace* findInFaceSearchStructure ( MVertex *p1,MVertex *p2,MVertex *p3, const fs_cont&search )
+{
+  MVertex *p = std::min(p1,std::min(p2,p3));
+  
+  for (fs_cont::const_iterator it = search.lower_bound(p);
+       it != search.upper_bound(p);
+       ++it)
+    {
+      MTriangle *t   = it->second.first;
+      GFace     *gf  = it->second.second;
+      if ((t->getVertex(0) == p1 ||t->getVertex(0) == p2 ||t->getVertex(0) == p3)&&
+	  (t->getVertex(1) == p1 ||t->getVertex(1) == p2 ||t->getVertex(1) == p3)&&
+	  (t->getVertex(2) == p1 ||t->getVertex(2) == p2 ||t->getVertex(2) == p3))return gf;
+    }
+  return 0;
+}
 
+bool buildFaceSearchStructure ( GModel *model , fs_cont&search )
+{  
+  search.clear();
 
   GModel::fiter fit = model->firstFace() ;
-  while (fit != model->lastFace()){
-    
-    bool found = std::binary_search((*fit)->triangles.begin(), 
-				    (*fit)->triangles.end(), 
-				    tri,cmp);
-    if (found )
+  while (fit != model->lastFace()){    
+    for (int i=0;i<(*fit)->triangles.size();i++)
       {
-	*gfound = *fit;
-	return true;
+	MVertex *p1=(*fit)->triangles[i]->getVertex(0);
+	MVertex *p2=(*fit)->triangles[i]->getVertex(1);
+	MVertex *p3=(*fit)->triangles[i]->getVertex(2);
+	MVertex *p = std::min(p1,std::min(p2,p3));
+	search.insert ( std::pair<MVertex*,std::pair<MTriangle*,GFace*> > ( p, std::pair<MTriangle*,GFace*>((*fit)->triangles[i],*fit)));
       }
     ++fit;
   }
-  return false;
+  return true;
 
 }
 
@@ -381,38 +386,46 @@ void recur_classify ( MTet4 *t ,
 		      std::list<MTet4*> &theRegion,		      
 		      std::set<GFace *> &faces_bound,
 		      GRegion *bidon ,
-		      GModel *model)
+		      GModel *model,
+		      const fs_cont &search)
 {
   if (!t) Msg (GERROR,"a tet is not connected by a boundary face");
-  if (t->onWhat())return;
+  if (t->onWhat())return; // should never return here...
   theRegion.push_back(t);
   t->setOnWhat(bidon);
   
+  bool FF[4] = {0,0,0,0};
+
   for (int i=0;i<4;i++)
     {
-      MTriangle tri ( t->tet()->getVertex ( faces[i][0] ),
-		      t->tet()->getVertex ( faces[i][1] ),
-		      t->tet()->getVertex ( faces[i][2] ) );
-      GFace     *gfound;
-      
-       bool found = find_triangle_in_model ( model , &tri, &gfound, false);
-//       if (!t->getNeigh(i) && !found) 
-//	bool found = find_triangle_in_model ( model , &tri, &gfound, true);
-      
-      if (found)
+      //      if (!t->getNeigh(i) || !t->getNeigh(i)->onWhat())
 	{
-	  if (faces_bound.find(gfound) == faces_bound.end())
-	    {
-	      //	      Msg(INFO,"found %d",gfound->tag());
-	      faces_bound.insert(gfound);	  
-	    }
-	}
-      else
-	{
-	  recur_classify ( t->getNeigh(i) , theRegion, faces_bound, bidon, model );
+
+ 	  GFace* gfound = findInFaceSearchStructure ( t->tet()->getVertex ( faces[i][0] ),
+ 						      t->tet()->getVertex ( faces[i][1] ),
+ 						      t->tet()->getVertex ( faces[i][2] ), search );
+ 	  if (gfound)
+ 	    {
+ 	      FF[i]=true;
+ 	      if (faces_bound.find(gfound) == faces_bound.end())
+ 		faces_bound.insert(gfound);	  
+ 	    }
+
+//  	  MTriangle tri ( t->tet()->getVertex ( faces[i][0] ),
+//  			  t->tet()->getVertex ( faces[i][1] ),
+//  			  t->tet()->getVertex ( faces[i][2] ) );
+//  	  GFace     *gfound;
+//  	  if (FF[i] = find_triangle_in_model ( model , &tri, &gfound, false))
+//  	    {
+//  	      if (faces_bound.find(gfound) == faces_bound.end())
+//  		faces_bound.insert(gfound);	  
+//  	    }
 	}
     }
-
+  for (int i=0;i<4;i++)
+    {
+      if (!FF[i]) recur_classify ( t->getNeigh(i) , theRegion, faces_bound, bidon, model,search );
+    }
 }
 
 void insertVerticesInRegion (GRegion *gr) 
@@ -442,6 +455,10 @@ void insertVerticesInRegion (GRegion *gr)
 
   // classify the tets on the right region
   //  Msg (INFO,"reclassifying %d tets",allTets.size());
+
+  fs_cont search;
+  buildFaceSearchStructure ( gr->model(), search );
+
   for (MTet4Factory::iterator it = allTets.begin();it!=allTets.end();++it)
     {
       if (!(*it)->onWhat())
@@ -449,9 +466,11 @@ void insertVerticesInRegion (GRegion *gr)
 	  std::list<MTet4*> theRegion;
 	  std::set<GFace *> faces_bound;
 	  GRegion *bidon = (GRegion*)123;
-	  Msg (DEBUG2,"start with a non classified tet");
-	  recur_classify ( *it , theRegion, faces_bound, bidon , gr->model());
-	  Msg (DEBUG2,"found %d tets with %d faces",theRegion.size(),faces_bound.size());
+	  clock_t _t1 = clock();
+	  Msg (DEBUG2,"start with a non classified tet");	  
+	  recur_classify ( *it , theRegion, faces_bound, bidon , gr->model(),search);
+	  clock_t _t2 = clock();
+	  Msg (DEBUG2,"found %d tets with %d faces (%g sec for the classification)",theRegion.size(),faces_bound.size(),(double)(_t2-_t1)/CLOCKS_PER_SEC);
 	  GRegion *myGRegion = getRegionFromBoundingFaces (gr->model() , faces_bound ); 
 	  //	  Msg (INFO,"a region is found %p",myGRegion);
 	  if (myGRegion) // a geometrical region associated to the list of faces has been found	    
@@ -460,7 +479,7 @@ void insertVerticesInRegion (GRegion *gr)
 	    for (std::list<MTet4*>::iterator it2 = theRegion.begin();it2!=theRegion.end();++it2)(*it2)->setDeleted(true);
 	}
     }
-
+  search.clear();
   
   for (MTet4Factory::iterator it = allTets.begin();it!=allTets.end();++it)
     {
diff --git a/Mesh/qualityMeasures.cpp b/Mesh/qualityMeasures.cpp
index a97e3d811d579486668d52a8594d3e6dfe033cea..ba640923dfd99f285f8ed166011dcce091c24407 100644
--- a/Mesh/qualityMeasures.cpp
+++ b/Mesh/qualityMeasures.cpp
@@ -61,6 +61,8 @@ double qmTriangle ( const double    &xa, const double    &ya, const double    &z
     default:
       throw;
     }  
+
+
   return quality;
 }
 
diff --git a/Numeric/Makefile b/Numeric/Makefile
index 11f879cc0d141991afcefe284d72fe85e102cbbe..0462a2abbe221d8f49b25b3d2044dc4d63b1396d 100644
--- a/Numeric/Makefile
+++ b/Numeric/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.35 2007-07-09 13:54:36 geuzaine Exp $
+# $Id: Makefile,v 1.36 2007-11-11 19:53:57 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -57,14 +57,86 @@ depend:
 Numeric.o: Numeric.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  Numeric.h
+  Numeric.h /sw/include/gsl/gsl_version.h /sw/include/gsl/gsl_types.h \
+  /sw/include/gsl/gsl_errno.h /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_check_range.h \
+  /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_linalg.h /sw/include/gsl/gsl_mode.h \
+  /sw/include/gsl/gsl_permutation.h /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h
 EigSolve.o: EigSolve.cpp
 predicates.o: predicates.cpp
 gsl_newt.o: gsl_newt.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  Numeric.h
+  Numeric.h /sw/include/gsl/gsl_math.h /sw/include/gsl/gsl_sys.h \
+  /sw/include/gsl/gsl_machine.h /sw/include/gsl/gsl_precision.h \
+  /sw/include/gsl/gsl_types.h /sw/include/gsl/gsl_nan.h \
+  /sw/include/gsl/gsl_pow_int.h /sw/include/gsl/gsl_errno.h \
+  /sw/include/gsl/gsl_multiroots.h /sw/include/gsl/gsl_vector.h \
+  /sw/include/gsl/gsl_vector_complex_long_double.h \
+  /sw/include/gsl/gsl_complex.h /sw/include/gsl/gsl_check_range.h \
+  /sw/include/gsl/gsl_vector_long_double.h \
+  /sw/include/gsl/gsl_block_long_double.h \
+  /sw/include/gsl/gsl_vector_complex.h \
+  /sw/include/gsl/gsl_block_complex_long_double.h \
+  /sw/include/gsl/gsl_vector_complex_double.h \
+  /sw/include/gsl/gsl_vector_double.h /sw/include/gsl/gsl_block_double.h \
+  /sw/include/gsl/gsl_block_complex_double.h \
+  /sw/include/gsl/gsl_vector_complex_float.h \
+  /sw/include/gsl/gsl_vector_float.h /sw/include/gsl/gsl_block_float.h \
+  /sw/include/gsl/gsl_block_complex_float.h \
+  /sw/include/gsl/gsl_vector_ulong.h /sw/include/gsl/gsl_block_ulong.h \
+  /sw/include/gsl/gsl_vector_long.h /sw/include/gsl/gsl_block_long.h \
+  /sw/include/gsl/gsl_vector_uint.h /sw/include/gsl/gsl_block_uint.h \
+  /sw/include/gsl/gsl_vector_int.h /sw/include/gsl/gsl_block_int.h \
+  /sw/include/gsl/gsl_vector_ushort.h /sw/include/gsl/gsl_block_ushort.h \
+  /sw/include/gsl/gsl_vector_short.h /sw/include/gsl/gsl_block_short.h \
+  /sw/include/gsl/gsl_vector_uchar.h /sw/include/gsl/gsl_block_uchar.h \
+  /sw/include/gsl/gsl_vector_char.h /sw/include/gsl/gsl_block_char.h \
+  /sw/include/gsl/gsl_matrix.h \
+  /sw/include/gsl/gsl_matrix_complex_long_double.h \
+  /sw/include/gsl/gsl_matrix_complex_double.h \
+  /sw/include/gsl/gsl_matrix_complex_float.h \
+  /sw/include/gsl/gsl_matrix_long_double.h \
+  /sw/include/gsl/gsl_matrix_double.h /sw/include/gsl/gsl_matrix_float.h \
+  /sw/include/gsl/gsl_matrix_ulong.h /sw/include/gsl/gsl_matrix_long.h \
+  /sw/include/gsl/gsl_matrix_uint.h /sw/include/gsl/gsl_matrix_int.h \
+  /sw/include/gsl/gsl_matrix_ushort.h /sw/include/gsl/gsl_matrix_short.h \
+  /sw/include/gsl/gsl_matrix_uchar.h /sw/include/gsl/gsl_matrix_char.h \
+  /sw/include/gsl/gsl_linalg.h /sw/include/gsl/gsl_mode.h \
+  /sw/include/gsl/gsl_permutation.h
 gsl_brent.o: gsl_brent.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  Numeric.h
+  Numeric.h /sw/include/gsl/gsl_errno.h /sw/include/gsl/gsl_types.h \
+  /sw/include/gsl/gsl_math.h /sw/include/gsl/gsl_sys.h \
+  /sw/include/gsl/gsl_machine.h /sw/include/gsl/gsl_precision.h \
+  /sw/include/gsl/gsl_nan.h /sw/include/gsl/gsl_pow_int.h \
+  /sw/include/gsl/gsl_min.h
diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp
index 0fabccc451da112b9718897b5651e4d6b7e2f649..b387f416956192c5a8b9dd23ab0b374db2ef185b 100644
--- a/Numeric/Numeric.cpp
+++ b/Numeric/Numeric.cpp
@@ -1,4 +1,4 @@
-// $Id: Numeric.cpp,v 1.35 2007-10-25 19:54:06 geuzaine Exp $
+// $Id: Numeric.cpp,v 1.36 2007-11-11 19:53:57 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -107,12 +107,6 @@ double myacos(double a)
     return acos(a);
 }
 
-void prodve(double a[3], double b[3], double c[3])
-{
-  c[2] = a[0] * b[1] - a[1] * b[0];
-  c[1] = -a[0] * b[2] + a[2] * b[0];
-  c[0] = a[1] * b[2] - a[2] * b[1];
-}
 
 void matvec(double mat[3][3], double vec[3], double res[3])
 {
@@ -121,26 +115,6 @@ void matvec(double mat[3][3], double vec[3], double res[3])
   res[2] = mat[2][0] * vec[0] + mat[2][1] * vec[1] + mat[2][2] * vec[2];
 }
 
-void prosca(double a[3], double b[3], double *c)
-{
-  *c = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
-}
-
-double norm3(double a[3])
-{
-  return sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);
-}
-
-double norme(double a[3])
-{
-  double mod = norm3(a);
-  if(mod != 0.0){
-    a[0] /= mod;
-    a[1] /= mod;
-    a[2] /= mod;
-  }
-  return mod;
-}
 
 void normal3points(double x0, double y0, double z0,
 		   double x1, double y1, double z1,
diff --git a/Numeric/Numeric.h b/Numeric/Numeric.h
index f7fe97620396237136628ed16edf51d4d55bc268..da6d16ef5889fe7fd7978a1caae26c45b52b412c 100644
--- a/Numeric/Numeric.h
+++ b/Numeric/Numeric.h
@@ -58,11 +58,30 @@ int check_gsl();
 double myatan2(double a, double b);
 double myasin(double a);
 double myacos(double a);
-void prodve(double a[3], double b[3], double c[3]);
-void prosca(double a[3], double b[3], double *c);
+inline void prodve(double a[3], double b[3], double c[3])
+{
+  c[2] = a[0] * b[1] - a[1] * b[0];
+  c[1] = -a[0] * b[2] + a[2] * b[0];
+  c[0] = a[1] * b[2] - a[2] * b[1];
+}
+inline void prosca(double a[3], double b[3], double *c)
+{
+  *c = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+}
 void matvec(double mat[3][3], double vec[3], double res[3]);
-double norm3(double a[3]);
-double norme(double a[3]);
+inline double norm3(double a[3]){  return sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);}
+inline double norme(double a[3])
+{
+  const double mod = norm3(a);
+  if(mod != 0.0){
+    const double one_over_mod = 1./mod;
+    a[0] *= one_over_mod;
+    a[1] *= one_over_mod;
+    a[2] *= one_over_mod;
+  }
+  return mod;
+}
+
 void normal3points(double x0, double y0, double z0,
 		   double x1, double y1, double z1,
 		   double x2, double y2, double z2,