From 3b0231b293b6f9fa35a6040c206af557a998355c Mon Sep 17 00:00:00 2001
From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be>
Date: Tue, 27 Feb 2007 17:15:51 +0000
Subject: [PATCH] *** empty log message ***

---
 Common/GmshDefines.h  |    9 +
 Common/Makefile       |  290 +++++-
 Fltk/Makefile         |  372 +++++++-
 Geo/GModelIO_Mesh.cpp |   48 +-
 Geo/GModelIO_OCC.cpp  |   19 +-
 Geo/MEdge.h           |   12 +-
 Geo/MElement.cpp      |   19 +-
 Geo/MElement.h        |  113 ++-
 Geo/MFace.h           |   30 +
 Geo/Makefile          | 2033 ++++++++++++++++++++++++++++++++++++++++-
 Geo/OCCEdge.cpp       |    4 +-
 Geo/OCCFace.cpp       |   22 +-
 Geo/gmshEdge.cpp      |    6 +-
 Mesh/Attractors.cpp   |    9 +-
 Mesh/Attractors.h     |   27 +-
 Mesh/Generator.cpp    |    6 +-
 Mesh/Makefile         |  291 +++++-
 Mesh/SecondOrder.cpp  |  458 +++++++---
 Parser/Gmsh.tab.cpp   |    2 +-
 Parser/Gmsh.yy.cpp    |    4 +-
 20 files changed, 3474 insertions(+), 300 deletions(-)

diff --git a/Common/GmshDefines.h b/Common/GmshDefines.h
index 4e2c4ac505..67931a1175 100644
--- a/Common/GmshDefines.h
+++ b/Common/GmshDefines.h
@@ -52,6 +52,15 @@
 #define MSH_HEX_20 17
 #define MSH_PRI_15 18
 #define MSH_PYR_13 19
+#define MSH_TRI_9  20
+#define MSH_TRI_10 21
+#define MSH_TRI_12 22
+#define MSH_TRI_15 23
+#define MSH_TRI_15I 24
+#define MSH_TRI_21 25
+#define MSH_LIN_4  26
+#define MSH_LIN_5  27
+#define MSH_LIN_6  28
 
 // Geometric entities
 #define ENT_NONE     0
diff --git a/Common/Makefile b/Common/Makefile
index 0047c00d09..9199d543ca 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.124 2007-02-26 08:25:36 geuzaine Exp $
+# $Id: Makefile,v 1.125 2007-02-27 17:15:46 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -68,39 +68,245 @@ Context.o: Context.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Context.h \
   DefaultOptions.h GmshDefines.h Options.h Views.h ColorTable.h \
-  VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h Trackball.h
+  VertexArray.h SmoothData.h AdaptiveViews.h 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 Trackball.h
 AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \
-  GmshMatrix.h ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h OS.h
+  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 ../Plugin/Plugin.h ../Common/Options.h \
+  ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h OS.h
 Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h ../Numeric/Numeric.h Views.h ColorTable.h \
-  VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h Context.h \
-  Options.h
+  VertexArray.h SmoothData.h AdaptiveViews.h 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 Context.h Options.h \
+  ../contrib/MathEval/matheval.h
 ViewsIO.o: ViewsIO.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Views.h \
   ColorTable.h VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h \
-  Context.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 Context.h
 Octree.o: Octree.cpp Octree.h OctreeInternals.h
 OctreeInternals.o: OctreeInternals.cpp Message.h OctreeInternals.h
 OctreePost.o: OctreePost.cpp Octree.h OctreeInternals.h OctreePost.h \
   ../DataStr/List.h Views.h ColorTable.h VertexArray.h SmoothData.h \
-  ../Numeric/Numeric.h AdaptiveViews.h GmshMatrix.h Message.h \
-  ShapeFunctions.h
+  ../Numeric/Numeric.h AdaptiveViews.h 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 Message.h ShapeFunctions.h
 Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h GmshUI.h GmshDefines.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Mesh/Generator.h \
-  Context.h Options.h ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h \
-  ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
-  ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
-  ../Fltk/Colorbar_Window.h ../Common/GmshUI.h ../Fltk/Popup_Button.h \
-  ../Fltk/SpherePosition_Widget.h
+  ../Common/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 ../Mesh/Generator.h Context.h Options.h \
+  ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
+  ../Common/Options.h ../Common/Message.h ../Fltk/Solvers.h ../Fltk/GUI.h \
+  ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h ../Common/GmshUI.h \
+  ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h
 CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h GmshUI.h GmshDefines.h \
@@ -110,14 +316,48 @@ CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h Views.h \
   ColorTable.h VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h \
-  ../Parser/OpenFile.h ../Parser/CreateFile.h ../Parser/Parser.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.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 \
-  ../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 \
+  /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 ../Parser/OpenFile.h ../Parser/CreateFile.h \
+  ../Parser/Parser.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.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 ../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 \
   ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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 \
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 6eca5a2b38..197753f56b 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.123 2007-02-26 08:25:37 geuzaine Exp $
+# $Id: Makefile,v 1.124 2007-02-27 17:15:46 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -75,21 +75,55 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \
   ../Numeric/Numeric.h ../Mesh/Generator.h ../Parser/CreateFile.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/Options.h ../Parser/Parser.h ../Parser/OpenFile.h \
-  ../Common/CommandLine.h Solvers.h ../Plugin/PluginManager.h \
-  ../Plugin/Plugin.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.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 ../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 \
-  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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
+  ../Common/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 ../Common/Context.h ../Common/Options.h \
+  ../Parser/Parser.h ../Parser/OpenFile.h ../Common/CommandLine.h \
+  Solvers.h ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.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 ../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 ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.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
 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 \
@@ -102,9 +136,44 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Common/GmshDefines.h ../Numeric/Numeric.h ../Common/Context.h \
   ../Common/Options.h ../Graphics/Draw.h ../Common/Views.h \
   ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h GUI.h Opengl_Window.h \
-  Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h Callbacks.h \
-  Bitmaps.h Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h \
+  ../Common/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 GUI.h Opengl_Window.h Colorbar_Window.h \
+  Popup_Button.h SpherePosition_Widget.h Callbacks.h Bitmaps.h \
+  Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h \
   ../Mesh/Generator.h Solvers.h ../Plugin/PluginManager.h \
   ../Plugin/Plugin.h Shortcut_Window.h
 GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \
@@ -114,7 +183,42 @@ GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \
   Shortcut_Window.h ../Parser/CreateFile.h ../Common/Options.h \
   ../Common/Context.h ../Graphics/Draw.h ../Common/Views.h \
   ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
+  ../Numeric/Numeric.h ../Common/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
 GUI_Projection.o: GUI_Projection.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 \
@@ -134,7 +238,41 @@ GUI_Projection.o: GUI_Projection.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Geo/projectionFace.h ../Geo/GFace.h ../Graphics/Draw.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/Options.h Shortcut_Window.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 ../Common/Options.h Shortcut_Window.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 \
@@ -159,12 +297,46 @@ Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Graphics/SelectBuffer.h ../Parser/CreateFile.h ../Parser/OpenFile.h \
-  ../Common/CommandLine.h ../Common/Options.h GUI.h Opengl_Window.h \
-  Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h GUI_Extras.h \
-  Callbacks.h ../Plugin/Plugin.h ../Plugin/PluginManager.h \
-  ../Plugin/Plugin.h ../Common/Visibility.h ../Common/GmshDefines.h \
-  Solvers.h ../Common/OS.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 ../Graphics/SelectBuffer.h \
+  ../Parser/CreateFile.h ../Parser/OpenFile.h ../Common/CommandLine.h \
+  ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h \
+  Popup_Button.h SpherePosition_Widget.h GUI_Extras.h Callbacks.h \
+  ../Plugin/Plugin.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
+  ../Common/Visibility.h ../Common/GmshDefines.h Solvers.h ../Common/OS.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 \
@@ -172,14 +344,48 @@ Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.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 \
-  ../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 \
+  /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 ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.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 ../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 \
   ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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 \
@@ -197,19 +403,53 @@ Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.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 ../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 \
-  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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 GUI.h \
-  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
-  SpherePosition_Widget.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 ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.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 ../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 ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.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 GUI.h Opengl_Window.h Colorbar_Window.h \
+  Popup_Button.h SpherePosition_Widget.h
 Colorbar_Window.o: Colorbar_Window.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 \
@@ -224,4 +464,38 @@ Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \
   SpherePosition_Widget.h ../Graphics/Draw.h ../Common/Views.h \
   ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/Context.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 ../Common/Context.h
diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index 5300f9a443..b2a1cb1852 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_Mesh.cpp,v 1.7 2007-01-24 08:57:16 geuzaine Exp $
+// $Id: GModelIO_Mesh.cpp,v 1.8 2007-02-27 17:15:46 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -211,8 +211,17 @@ static int getNumVerticesForElementTypeMSH(int type)
   case MSH_PNT    : return 1;
   case MSH_LIN_2  : return 2;
   case MSH_LIN_3  : return 2 + 1;
+  case MSH_LIN_4  : return 2 + 2;
+  case MSH_LIN_5  : return 2 + 3;
+  case MSH_LIN_6  : return 2 + 4;
   case MSH_TRI_3  : return 3;
   case MSH_TRI_6  : return 3 + 3;
+  case MSH_TRI_9  : return 3 + 6;
+  case MSH_TRI_10  : return 3 + 6 + 1;
+  case MSH_TRI_12  : return 3 + 9;
+  case MSH_TRI_15  : return 3 + 9 + 3;
+  case MSH_TRI_15I : return 3 + 12;
+  case MSH_TRI_21 : return 3 + 12 + 6;
   case MSH_QUA_4  : return 4;
   case MSH_QUA_8  : return 4 + 4;
   case MSH_QUA_9  : return 4 + 4 + 1;
@@ -245,8 +254,17 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
   case MSH_PNT:    points[reg].push_back(v[0]); dim = 0; break;
   case MSH_LIN_2:  elem[0][reg].push_back(new MLine(v, num, part)); dim = 1; break;
   case MSH_LIN_3:  elem[0][reg].push_back(new MLine3(v, num, part)); dim = 1; break;
+  case MSH_LIN_4:  elem[0][reg].push_back(new MLineN(v, num, part)); dim = 1; break;
+  case MSH_LIN_5:  elem[0][reg].push_back(new MLineN(v, num, part)); dim = 1; break;
+  case MSH_LIN_6:  elem[0][reg].push_back(new MLineN(v, num, part)); dim = 1; break;
   case MSH_TRI_3:  elem[1][reg].push_back(new MTriangle(v, num, part)); dim = 2; break;
   case MSH_TRI_6:  elem[1][reg].push_back(new MTriangle6(v, num, part)); dim = 2; break;
+  case MSH_TRI_9:  elem[1][reg].push_back(new MTriangleN(v, 3, num, part)); dim = 2; break;  
+  case MSH_TRI_10: elem[1][reg].push_back(new MTriangleN(v, 3, num, part)); dim = 2; break; 
+  case MSH_TRI_12: elem[1][reg].push_back(new MTriangleN(v, 4, num, part)); dim = 2; break; 
+  case MSH_TRI_15: elem[1][reg].push_back(new MTriangleN(v, 4, num, part)); dim = 2; break; 
+  case MSH_TRI_15I:elem[1][reg].push_back(new MTriangleN(v, 5, num, part)); dim = 2; break;  
+  case MSH_TRI_21: elem[1][reg].push_back(new MTriangleN(v, 5, num, part)); dim = 2; break;     
   case MSH_QUA_4:  elem[2][reg].push_back(new MQuadrangle(v, num, part)); dim = 2; break;
   case MSH_QUA_8:  elem[2][reg].push_back(new MQuadrangle8(v, num, part)); dim = 2; break;
   case MSH_QUA_9:  elem[2][reg].push_back(new MQuadrangle9(v, num, part)); dim = 2; break;
@@ -522,7 +540,8 @@ int GModel::readMSH(const std::string &name)
 }
 
 static void writeElementHeaderMSH(bool binary, FILE *fp, std::map<int,int> &elements,
-				  int t1, int t2=0, int t3=0)
+				  int t1, int t2=0, int t3=0, int t4=0, 
+				  int t5=0, int t6=0, int t7=0, int t8=0)
 {
   if(!binary) return;
 
@@ -540,6 +559,26 @@ static void writeElementHeaderMSH(bool binary, FILE *fp, std::map<int,int> &elem
     data[0] = t3;  data[1] = elements[t3];  data[2] = numTags;
     fwrite(data, sizeof(int), 3, fp);
   }
+  else if(t4 && elements.count(t4)){
+    data[0] = t4;  data[1] = elements[t4];  data[2] = numTags;
+    fwrite(data, sizeof(int), 3, fp);
+  }
+  else if(t5 && elements.count(t5)){
+    data[0] = t5;  data[1] = elements[t5];  data[2] = numTags;
+    fwrite(data, sizeof(int), 3, fp);
+  }
+  else if(t6 && elements.count(t6)){
+    data[0] = t6;  data[1] = elements[t6];  data[2] = numTags;
+    fwrite(data, sizeof(int), 3, fp);
+  }
+  else if(t7 && elements.count(t7)){
+    data[0] = t7;  data[1] = elements[t7];  data[2] = numTags;
+    fwrite(data, sizeof(int), 3, fp);
+  }
+  else if(t8 && elements.count(t8)){
+    data[0] = t8;  data[1] = elements[t8];  data[2] = numTags;
+    fwrite(data, sizeof(int), 3, fp);
+  }
 }
 
 template<class T>
@@ -667,11 +706,12 @@ int GModel::writeMSH(const std::string &name, double version, bool binary,
   for(viter it = firstVertex(); it != lastVertex(); ++it)
     writeElementsMSH(fp, (*it)->mesh_vertices, saveAll, version, binary, num,
 		     (*it)->tag(), (*it)->physicals);
-  writeElementHeaderMSH(binary, fp, elements, MSH_LIN_2, MSH_LIN_3);
+  writeElementHeaderMSH(binary, fp, elements, MSH_LIN_2, MSH_LIN_3,MSH_LIN_4,MSH_LIN_5);
   for(eiter it = firstEdge(); it != lastEdge(); ++it)
     writeElementsMSH(fp, (*it)->lines, saveAll, version, binary, num,
 		     (*it)->tag(), (*it)->physicals);
-  writeElementHeaderMSH(binary, fp, elements, MSH_TRI_3, MSH_TRI_6);
+  writeElementHeaderMSH(binary, fp, elements, MSH_TRI_3, MSH_TRI_6, MSH_TRI_9, 
+			MSH_TRI_10, MSH_TRI_12, MSH_TRI_15, MSH_TRI_15I,MSH_TRI_21);
   for(fiter it = firstFace(); it != lastFace(); ++it)
     writeElementsMSH(fp, (*it)->triangles, saveAll, version, binary, num,
 		     (*it)->tag(), (*it)->physicals);
diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index 9c2caaaed2..ac259f2b96 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_OCC.cpp,v 1.17 2007-01-18 13:18:42 geuzaine Exp $
+// $Id: GModelIO_OCC.cpp,v 1.18 2007-02-27 17:15:46 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -392,11 +392,11 @@ void OCC_Internals::loadBREP(const char *fn)
   BRepTools::Read(shape, (char*)fn, aBuilder);
   BRepTools::Clean(shape);
   buildLists();
-  HealGeometry(CTX.geom.tolerance, 
-	       CTX.geom.occ_fix_small_edges,
-	       CTX.geom.occ_fix_small_faces,
-	       CTX.geom.occ_sew_faces);
-  BRepTools::Clean(shape);
+//   HealGeometry(CTX.geom.tolerance, 
+// 	       CTX.geom.occ_fix_small_edges,
+// 	       CTX.geom.occ_fix_small_faces,
+// 	       CTX.geom.occ_sew_faces);
+//  BRepTools::Clean(shape);
 }
 
 void OCC_Internals::loadSTEP(const char *fn)
@@ -409,9 +409,10 @@ void OCC_Internals::loadSTEP(const char *fn)
   BRepTools::Clean(shape);
   buildLists();
   HealGeometry(CTX.geom.tolerance, 
-	       CTX.geom.occ_fix_small_edges,
-	       CTX.geom.occ_fix_small_faces,
-	       CTX.geom.occ_sew_faces);
+ 	       CTX.geom.occ_fix_small_edges,
+ 	       CTX.geom.occ_fix_small_faces,
+ 	       CTX.geom.occ_sew_faces);
+  buildLists();
   BRepTools::Clean(shape);
 }
 
diff --git a/Geo/MEdge.h b/Geo/MEdge.h
index 0b32e425ab..eefbf93374 100644
--- a/Geo/MEdge.h
+++ b/Geo/MEdge.h
@@ -57,11 +57,15 @@ class MEdge {
     t.normalize();
     return t;
   }
-  SPoint3 barycenter() const
+  inline SPoint3 barycenter() const
   {
-    return SPoint3(0.5 * (_v[0]->x() + _v[1]->x()), 
-		   0.5 * (_v[0]->y() + _v[1]->y()), 
-		   0.5 * (_v[0]->z() + _v[1]->z()));
+    return interpolate(0.5);
+  }
+  inline SPoint3 interpolate(const double &t) const
+  {
+    return SPoint3(t * _v[1]->x() + (1.-t)* _v[0]->x(), 
+                   t * _v[1]->y() + (1.-t)* _v[0]->y(), 
+		   t * _v[1]->z() + (1.-t)* _v[0]->z());
   }
 };
 
diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index ba0c52edc0..d53b76d3d9 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -1,4 +1,4 @@
-// $Id: MElement.cpp,v 1.30 2007-01-28 12:55:00 geuzaine Exp $
+// $Id: MElement.cpp,v 1.31 2007-02-27 17:15:46 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -112,6 +112,7 @@ void MElement::writeMSH(FILE *fp, double version, bool binary, int num,
 			int elementary, int physical)
 {
   int type = getTypeForMSH();
+
   if(!type) return;
 
   // if necessary, change the ordering of the vertices to get positive
@@ -372,3 +373,19 @@ void MTriangle::circumcenterXY(double *res) const
   res[0] = (double)((a1 * (y3 - y2) + a2 * (y1 - y3) + a3 * (y2 - y1)) / d);
   res[1] = (double)((a1 * (x2 - x3) + a2 * (x3 - x1) + a3 * (x1 - x2)) / d);
 }
+
+int MTriangleN::getNumFacesRep(){ return 1; }
+MFace MTriangleN::getFaceRep(int num)
+{ 
+  return MFace(_v[0],_v[1],_v[2]);
+}
+
+int MTriangleN::getNumFaceVertices(){
+  if (_order == 3 && _vs.size() == 6) return 0; 
+  if (_order == 3 && _vs.size() == 7) return 1; 
+  if (_order == 4 && _vs.size() == 9) return 0; 
+  if (_order == 4 && _vs.size() == 12) return 3; 
+  if (_order == 5 && _vs.size() == 12) return 0; 
+  if (_order == 5 && _vs.size() == 18) return 6;
+  throw;
+}
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 5763e87e26..fb986fd754 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -240,6 +240,51 @@ class MLine3 : public MLine {
   virtual char *getStringForBDF(){ return 0; } // not available
 };
 
+class MLineN : public MLine {
+ protected:
+  std::vector<MVertex *> _vs;
+ public :
+  MLineN(MVertex *v0, MVertex *v1, const std::vector<MVertex*> &vs, int num=0, int part=0) 
+    : MLine(v0, v1, num, part), _vs(vs)
+  {
+    for (int i=0;i<_vs.size();i++)
+      _vs[i]->setPolynomialOrder(_vs.size() + 1);
+  }
+  MLineN(const std::vector<MVertex*> &v, int num=0, int part=0) 
+    : MLine(v[0] , v[1], num, part)
+  {
+    for (int i=2;i<v.size();i++)
+      _vs.push_back(v[i]);
+    for (int i=0;i<_vs.size();i++)
+      _vs[i]->setPolynomialOrder(_vs.size() + 1);
+  }
+  ~MLineN(){}
+  virtual int getPolynomialOrder(){ return _vs.size() + 1; }
+  virtual int getNumVertices(){ return _vs.size() + 2; }
+  virtual MVertex *getVertex(int num){ return num < 2 ? _v[num] : _vs[num - 2]; }
+  virtual MVertex *getVertexUNV(int num)
+  {
+    if(num == 0) return _v[0];
+    if(num == _vs.size() + 1)return _v[1];
+    return  _vs[num-1];
+  }
+  virtual int getNumEdgeVertices(){ return _vs.size(); }
+  virtual int getNumEdgesRep(){ return _vs.size() + 1; }
+  virtual MEdge getEdgeRep(int num)
+  { 
+    return MEdge(getVertexUNV(num),getVertexUNV(num+1));
+  }
+  virtual int getTypeForMSH(){ 
+    if(_vs.size() == 2) return  MSH_LIN_4; 
+    if(_vs.size() == 3) return  MSH_LIN_5; 
+    if(_vs.size() == 4) return  MSH_LIN_6; 
+    throw;
+  }
+  virtual int getTypeForUNV(){ throw; } // not available
+  virtual char *getStringForPOS(){ return 0; } // not available
+  virtual char *getStringForBDF(){ return 0; } // not available
+};
+
 class MTriangle : public MElement {
  protected:
   MVertex *_v[3];
@@ -340,7 +385,8 @@ class MTriangle6 : public MTriangle {
 		 getVertex(trifaces_tri2[num][1]),
 		 getVertex(trifaces_tri2[num][2]));
   }
-  virtual int getTypeForMSH(){ return MSH_TRI_6; }
+  virtual int getTypeForMSH(){ 
+    return MSH_TRI_6; }
   virtual int getTypeForUNV(){ return 92; } // thin shell parabolic triangle
   virtual char *getStringForPOS(){ return "ST2"; }
   virtual char *getStringForBDF(){ return "CTRIA6"; }
@@ -352,6 +398,71 @@ class MTriangle6 : public MTriangle {
   }
 };
 
+class MTriangleN : public MTriangle {
+ protected:
+  std::vector<MVertex *> _vs;
+  const short _order;
+ public:
+  MTriangleN(MVertex *v0, MVertex *v1, MVertex *v2, 
+	     std::vector<MVertex*> &v, int order, int num=0, int part=0) 
+    : MTriangle(v0, v1, v2, num, part) , _vs (v), _order(order)
+  {
+    for(int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order);
+  }
+  MTriangleN(std::vector<MVertex*> &v, int order, int num=0, int part=0) 
+    : MTriangle(v[0], v[1], v[2], num, part) , _order(order)
+  {
+    for(int i = 3; i < v.size(); i++) _vs.push_back(v[i]);
+    for(int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order);
+  }
+  ~MTriangleN(){}
+  virtual int getPolynomialOrder(){
+    return _order;
+  }
+  virtual int getNumVertices(){ return 3 +_vs.size() ; }
+  virtual MVertex *getVertex(int num){ return num < 3 ? _v[num] : _vs[num - 3]; }
+  virtual MVertex *getVertexUNV(int num)
+  {
+    if (num == 0) return _v[0];
+    if (num  < _order ) return _vs[num - 1];
+    if (num  == _order ) return _v[1];
+    if (num  < 2* _order ) return _vs[num - 2];
+    if (num  == 2*_order ) return _v[2];
+    return _vs[num - 3];
+  }
+  virtual int getNumFaceVertices();
+  virtual int getNumEdgeVertices(){ return _order - 1; }
+  virtual int getNumEdgesRep(){ return 3 * _order ; }
+  virtual MEdge getEdgeRep(int num)
+  { 
+    return MEdge(getVertexUNV(num), getVertexUNV((num+1)%(3*_order)));
+  }
+  virtual int getNumFacesRep();
+  virtual MFace getFaceRep(int num);
+  virtual int getTypeForMSH(){
+    if (_order == 3 && _vs.size() == 6) return MSH_TRI_9; 
+    if (_order == 3 && _vs.size() == 7) return MSH_TRI_10; 
+    if (_order == 4 && _vs.size() == 9) return MSH_TRI_12; 
+    if (_order == 4 && _vs.size() == 12) return MSH_TRI_15; 
+    if (_order == 5 && _vs.size() == 12) return MSH_TRI_15I; 
+    if (_order == 5 && _vs.size() == 18) return MSH_TRI_21;
+    throw;
+  }
+  virtual int getTypeForUNV(){ throw; } // thin shell parabolic triangle
+  virtual char *getStringForPOS(){ return 0; }
+  virtual char *getStringForBDF(){ return 0; }
+  virtual void revert() 
+  {
+    MVertex *tmp;
+    tmp = _v[1]; _v[1] = _v[2]; _v[2] = tmp;
+    std::vector<MVertex*> inv;
+    inv.insert (inv.begin(),_vs.rbegin(),_vs.rend());
+    _vs = inv;
+  }
+};
+
+
+
 template <class T> 
 void sort3(T *t[3])
 {
diff --git a/Geo/MFace.h b/Geo/MFace.h
index 4b5d862619..10715ffe36 100644
--- a/Geo/MFace.h
+++ b/Geo/MFace.h
@@ -129,6 +129,36 @@ class MFace {
     p[2] /= (double)n;
     return p;
   }
+  SPoint3 interpolate (const double &u, const double &v) const
+  {
+    SPoint3 p(0., 0., 0.);
+    int n = getNumVertices();
+    if (n==3)
+      {
+	const double ff[3] = {1.-u-v,u,v};
+	for(int i = 0; i < n; i++) {
+	  MVertex *v = getVertex(i);
+	  p[0] += v->x() * ff[i];
+	  p[1] += v->y() * ff[i];
+	  p[2] += v->z() * ff[i];
+	}
+      }
+    else if (n==4)
+      {
+	const double ff[4] = {(1-u)*(1.-v),
+			      (1-u)*(1.+v),
+			      (1+u)*(1.+v),
+			      (1+u)*(1.-v)};	
+	for(int i = 0; i < n; i++) {
+	  MVertex *v = getVertex(i);
+	  p[0] += v->x() * ff[i] * .25;
+	  p[1] += v->y() * ff[i] * .25;
+	  p[2] += v->z() * ff[i] * .25;
+	}	
+      }
+    else throw;
+    return p;
+  }
 };
 
 //--The following function objects compare the addresses of the mesh vertices.
diff --git a/Geo/Makefile b/Geo/Makefile
index 86fa7e75a9..37fac9116d 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.136 2007-02-26 08:25:38 geuzaine Exp $
+# $Id: Makefile,v 1.137 2007-02-27 17:15:46 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -97,7 +97,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 \
@@ -140,28 +172,1589 @@ OCCVertex.o: OCCVertex.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 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_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
 projectionFace.o: projectionFace.cpp projectionFace.h GFace.h GPoint.h \
   GEntity.h Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h \
   GEdgeLoop.h GEdge.h GVertex.h MVertex.h SPoint2.h SVector3.h MElement.h \
@@ -176,7 +1769,8 @@ GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   GRegion.h gmshSurface.h ../Mesh/Attractors.h ../Geo/SPoint3.h \
   ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/Message.h \
-  ../Geo/GEdge.h MRep.h ../Common/VertexArray.h ../Common/OS.h
+  ../Geo/GEdge.h ../contrib/ANN/include/ANN/ANN.h MRep.h \
+  ../Common/VertexArray.h ../Common/OS.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 \
@@ -203,14 +1797,429 @@ GModelIO_Fourier.o: GModelIO_Fourier.cpp GModel.h GVertex.h GEntity.h \
   gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
+  ../Common/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
 GModelIO_OCC.o: GModelIO_OCC.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 OCCIncludes.h OCCVertex.h OCCEdge.h \
-  OCCFace.h OCCRegion.h
+  GRegion.h ../Common/Message.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 \
+  OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.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 \
diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp
index 605fc54fe6..6dad6617fd 100644
--- a/Geo/OCCEdge.cpp
+++ b/Geo/OCCEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCEdge.cpp,v 1.20 2007-02-03 00:02:16 geuzaine Exp $
+// $Id: OCCEdge.cpp,v 1.21 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -86,7 +86,7 @@ SPoint2 OCCEdge::reparamOnFace(GFace *face, double epar,int dir) const
     const double dx = p1.x()-p2.x();
     const double dy = p1.y()-p2.y();
     const double dz = p1.z()-p2.z();
-    if(sqrt(dx*dx+dy*dy+dz*dz) > 1.e-7 * CTX.lc){
+    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);
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 19d1c9f75a..28a95892cd 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCFace.cpp,v 1.20 2007-02-02 17:16:46 remacle Exp $
+// $Id: OCCFace.cpp,v 1.21 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -69,7 +69,7 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape
   _periodic[0] = surface.IsUPeriodic();
   _periodic[1] = surface.IsVPeriodic();
 
-  ShapeAnalysis::GetFaceUVBounds(s, umin, umax, vmin, vmax);
+  ShapeAnalysis::GetFaceUVBounds(_s, umin, umax, vmin, vmax);
   Msg(INFO, "OCC Face %d with %d edges bounds (%g,%g)(%g,%g)", num, l_edges.size(),umin,umax,vmin,vmax);
   // we do that for the projections to converge on the 
   // borders of the surface
@@ -128,13 +128,23 @@ GPoint OCCFace::closestPoint(const SPoint3 & qp) const
 {
   gp_Pnt pnt(qp.x(), qp.y(), qp.z());
   GeomAPI_ProjectPointOnSurf proj(pnt, occface, umin, umax, vmin, vmax);
-  if(!proj.NbPoints()){
-    Msg(GERROR,"OCC Project Point on Surface FAIL");
+
+   if(!proj.NbPoints()){
+     Msg(GERROR,"OCC Project Point on Surface FAIL");
+     return GPoint(0, 0);
+   }
+   
+  double pp[2];
+  proj.LowerDistanceParameters (pp[0], pp[1]);
+
+  Msg(INFO,"projection lower distance parameters %g %g",pp[0],pp[1]);
+
+  if((pp[0]<umin || umax<pp[0]) || (pp[1]<vmin || vmax<pp[1])){
+    Msg(GERROR,"Point projection is out of face bounds");
     return GPoint(0, 0);
   }
+
   pnt = proj.NearestPoint();
-  double pp[2];
-  proj.LowerDistanceParameters (pp[0], pp[1]);
   return GPoint(pnt.X(), pnt.Y(), pnt.Z(), this, pp);
 }
 
diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp
index b3475419dc..58cb751a38 100644
--- a/Geo/gmshEdge.cpp
+++ b/Geo/gmshEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshEdge.cpp,v 1.29 2007-02-26 08:25:38 geuzaine Exp $
+// $Id: gmshEdge.cpp,v 1.30 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -123,8 +123,8 @@ int gmshEdge::minimumMeshSegments () const
   if(geomType() == Circle || geomType() == Ellipse)
     return (int)(fabs(c->Circle.t1 - c->Circle.t2) *
 		 (double)CTX.mesh.min_circ_points / Pi) - 1;
-  else if(geomType() == BSpline)
-    return 3;
+  else if(geomType() == Nurb)
+    return 5;
   else
     return GEdge::minimumMeshSegments () ;
 }
diff --git a/Mesh/Attractors.cpp b/Mesh/Attractors.cpp
index d426e41bec..c77c7dee14 100644
--- a/Mesh/Attractors.cpp
+++ b/Mesh/Attractors.cpp
@@ -1,4 +1,4 @@
-// $Id: Attractors.cpp,v 1.2 2007-02-02 23:50:34 geuzaine Exp $
+// $Id: Attractors.cpp,v 1.3 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -26,9 +26,10 @@
 
 std::list <Attractor *> Attractor::allAttractors;  
 
-void Attractor::addPoint(double X, double Y, double Z)
+void Attractor::addPoint ( double X, double Y, double Z, double lc)
 {
   attractorPoints.push_back(SPoint3(X,Y,Z));
+  //  lcs.push_back(lc);
 }
 
 Attractor::~Attractor()
@@ -71,8 +72,8 @@ void Attractor::buildFastSearchStructures()
   for(std::list <Attractor *>::iterator it = allAttractors.begin();
       it != allAttractors.end(); ++it)
     totpoints += (*it)->attractorPoints.size();
-  if(totpoints)
-    zeronodes = annAllocPts(totpoints, 3);
+  if (totpoints)
+    zeronodes = annAllocPts(totpoints, 4);
   int k = 0;
   for(std::list <Attractor *>::iterator it = allAttractors.begin();
       it != allAttractors.end(); ++it){
diff --git a/Mesh/Attractors.h b/Mesh/Attractors.h
index ee53ec7e4f..1124be0fd2 100644
--- a/Mesh/Attractors.h
+++ b/Mesh/Attractors.h
@@ -40,19 +40,22 @@ class Attractor {
   ANNdistArray dist;
 #endif
   std::list <SPoint3> attractorPoints;  
-  static std::list <Attractor *> allAttractors;
+  std::list <SPoint3> lcs;  
+  static std::list <Attractor *>  allAttractors;  
 public :
   Attractor();
   virtual ~Attractor();
-  virtual double operator () (const double & distance) = 0;
-  void addPoint(double X, double Y, double Z);
-  void buildFastSearchStructures();
-  static void reset(); 
-  static double lc(double X, double Y, double Z);
-  static bool size() { return allAttractors.size(); }
+  virtual double operator () ( const double & distance ) = 0;
+  // adds a point in the attractor.
+  void addPoint ( double X, double Y, double Z, double lc = -1.0);
+  void buildFastSearchStructures() ;
+  static void reset (); 
+  static double lc (double X, double Y, double Z) ;
+  static bool size () {return allAttractors.size();}
 };
 
-class tresholdAttractor : public Attractor {
+class tresholdAttractor : public Attractor
+{
   double treshold, meshSizeIn, meshSizeOut, factor;
   tresholdAttractor(double _tres, double _In, double _Out, double _fact) 
     : treshold(_tres), meshSizeIn(_In), meshSizeOut(_Out), factor(_fact) {}
@@ -70,6 +73,14 @@ class tresholdAttractor : public Attractor {
   virtual double operator () (const double & distance);
 };
 
+// this attractor uses the 1D mesh for propagating the edge lengths
+// inside the 2D and 3D domain. This attra
+
+class mesh1DAttractor : public Attractor
+{  
+};
+
+
 // build a list of points for the attractor on a model edge
 // presently, the function is duplicated (internals of gmsh and GMODEL)
 void buildListOfPoints(Attractor*, GEdge*, int);
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index a9b31287a7..8a02c3d15a 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.115 2007-02-26 08:25:39 geuzaine Exp $
+// $Id: Generator.cpp,v 1.116 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -309,8 +309,8 @@ void GenerateMesh(int ask)
     OptimizeMesh();
   
   // Create second order elements
-  if(GMODEL->getMeshStatus() && CTX.mesh.order == 2) 
-    Degre2(GMODEL, CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete);
+  if(GMODEL->getMeshStatus() && CTX.mesh.order > 1) 
+    Degre2(GMODEL,CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete);
 
   Msg(INFO, "%d vertices %d elements", GMODEL->numVertices(), GMODEL->numElements());
 
diff --git a/Mesh/Makefile b/Mesh/Makefile
index ca0239cdeb..96086a0a2e 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.164 2007-02-26 08:25:39 geuzaine Exp $
+# $Id: Makefile,v 1.165 2007-02-27 17:15:47 remacle Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -76,21 +76,55 @@ Generator.o: Generator.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Common/Context.h ../Common/Views.h \
   ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/OS.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 ../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 ../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 ../Geo/ExtrudeParams.h \
-  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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 \
-  meshGEdge.h meshGFace.h meshGRegion.h BackgroundMesh.h BoundaryLayer.h \
-  SecondOrder.h
+  ../Common/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 ../Common/OS.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 \
+  ../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 ../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 \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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 meshGEdge.h meshGFace.h meshGRegion.h \
+  BackgroundMesh.h BoundaryLayer.h SecondOrder.h
 Attractors.o: Attractors.cpp Attractors.h ../Geo/SPoint3.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
@@ -104,7 +138,7 @@ Attractors.o: Attractors.cpp Attractors.h ../Geo/SPoint3.h ../Geo/Geo.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 ../Geo/ExtrudeParams.h \
-  ../Geo/GeoInterpolation.h ../Geo/Geo.h
+  ../contrib/ANN/include/ANN/ANN.h ../Geo/GeoInterpolation.h ../Geo/Geo.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 \
@@ -158,11 +192,46 @@ meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \
   ../Geo/MElement.h ../Common/VertexArray.h ../Common/Message.h \
   ../Common/OS.h BDS.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Attractors.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 ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h
+  ../Common/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 Attractors.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 \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../contrib/ANN/include/ANN/ANN.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 \
@@ -205,7 +274,42 @@ meshGFaceDelaunayInsertion.o: meshGFaceDelaunayInsertion.cpp BDS.h \
   ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Common/Message.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 BackgroundMesh.h \
+  meshGFaceDelaunayInsertion.h ../Common/Message.h
 meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
@@ -230,7 +334,44 @@ meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   ../Geo/MElement.h ../Common/VertexArray.h ../Common/Message.h \
   ../Common/OS.h BDS.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
+  ../Common/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 ../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 \
@@ -285,7 +426,41 @@ BackgroundMesh.o: BackgroundMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h BackgroundMesh.h ../Common/Context.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 BackgroundMesh.h ../Common/Context.h \
   ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
@@ -302,7 +477,7 @@ BackgroundMesh.o: BackgroundMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Geo/SBoundingBox3d.h Attractors.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/ExtrudeParams.h ../contrib/ANN/include/ANN/ANN.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 \
@@ -318,21 +493,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 \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.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 ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Message.h
 SecondOrder.o: SecondOrder.cpp SecondOrder.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/SecondOrder.cpp b/Mesh/SecondOrder.cpp
index 7d9c3c3cf3..12559d226c 100644
--- a/Mesh/SecondOrder.cpp
+++ b/Mesh/SecondOrder.cpp
@@ -1,4 +1,4 @@
-// $Id: SecondOrder.cpp,v 1.53 2007-02-26 08:25:39 geuzaine Exp $
+// $Id: SecondOrder.cpp,v 1.54 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -25,6 +25,54 @@
 #include "Message.h"
 #include "OS.h"
 
+
+/*
+  consider 2 points with their tangent
+
+  x(t) = x(0) * H1(t) + dx(0) * H2(t) + x(1) * H3(t) + dx(1) * H4(t) 
+
+*/
+
+void Hermite2D_C1 ( SPoint3  &p1 , 
+		    SPoint3  &p2 , 
+		    SPoint3  &t1 , 
+		    SPoint3  &t2 ,
+		    SPoint3  &one_third, 
+		    SPoint3  &two_third )
+{
+
+//   double L = sqrt((p1.x()-p2.x())*(p1.x()-p2.x()) + (p1.y()-p2.y()) * (p1.y()-p2.y()));
+
+//   SVector3 p1p2 (p2,p1);
+//   SVector3 tt1  (t1.x(),t1.y(),0);
+//   SVector3 tt2  (t2.x(),t2.y(),0);
+//   const double cost1 = p1p2 * tt1;
+//   const double cost2 = p1p2 * tt2;
+  
+
+//   const double ts[2] = { 1./3.,2./3.};
+//   for (int i=0 ; i < 2; i++)
+//     {
+//       const double t = ts[i];
+//       const double H1 = (2*t+1)*(t-1)*(t-1);
+//       const double H2 = L*t*(t-1)*(t-1);
+//       const double H3 = t*t*(-2*t+3);
+//       const double H4 = -L*(1-t)*t*t;
+//       if (i == 0)one_third = p1*H1 + t1*H2 + p2*H3 + t2*H4;
+//       else two_third = p1*H1 + t1*H2 + p2*H3 + t2*H4;
+//     }  
+}
+
+
+extern GModel *GMODEL;
+
+// for each pair of vertices (an edge), we build a list of vertices that
+// are the high order representation of the edge
+typedef std::map<std::pair<MVertex*,MVertex*>, std::vector<MVertex*> > edgeContainer;
+// for each face (a list of vertices) we build a list of vertices that are
+// the high order representation of the face
+typedef std::map<std::vector<MVertex*>, std::vector<MVertex*> > faceContainer;
+
 bool reparamOnFace(MVertex *v, GFace *gf, SPoint2 &param)
 {
   if(v->onWhat()->dim() == 0){
@@ -57,23 +105,23 @@ bool reparamOnFace(MVertex *v, GFace *gf, SPoint2 &param)
   return true;
 }
 
-void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve,
-		     std::map<std::pair<MVertex*,MVertex*>, MVertex* > &edgeVertices,
-		     bool linear)
+void getEdgeVertices(GEdge *ge, MElement *ele, 
+		     std::vector<MVertex*> &ve,
+		     edgeContainer &edgeVertices,
+		     bool linear, int nPts = 1)
 {
+  bool hermite = false;
+
   for(int i = 0; i < ele->getNumEdges(); i++){
     MEdge edge = ele->getEdge(i);
     std::pair<MVertex*, MVertex*> p(edge.getMinVertex(), edge.getMaxVertex());
     if(edgeVertices.count(p)){
-      ve.push_back(edgeVertices[p]);
+      ve.insert(ve.end(),edgeVertices[p].begin(),edgeVertices[p].end());
     }
     else{
-      MVertex *v, *v0 = edge.getVertex(0), *v1 = edge.getVertex(1);
-      if(linear || ge->geomType() == GEntity::DiscreteCurve){
-	SPoint3 pc = edge.barycenter();
-	v = new MVertex(pc.x(), pc.y(), pc.z(), ge);
-      }
-      else{
+      MVertex *v0 = edge.getMinVertex(), *v1 = edge.getMaxVertex();            
+      if (nPts == 2 && hermite){
+
 	double u0 = 1e6, u1 = 1e6;
 	Range<double> bounds = ge->parBounds(0);
 	if(ge->getBeginVertex() && ge->getBeginVertex()->mesh_vertices[0] == v0) 
@@ -88,154 +136,297 @@ void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve,
 	  u1 = bounds.high();
 	else 
 	  v1->getParameter(0, u1);
-	double uc = 0.5 * (u0 + u1);
-	if(u0 < 1e6 && u1 < 1e6 && uc > u0 && uc < u1){
-	  GPoint pc = ge->point(uc);
-	  v = new MEdgeVertex(pc.x(), pc.y(), pc.z(), ge, uc);
-	}
-	else{
-	  // normally never here, but we don't treat periodic curves
-	  // properly, so we can get uc < u0 or uc > u1...
-	  SPoint3 pc = edge.barycenter();
-	  v = new MVertex(pc.x(), pc.y(), pc.z(), ge);
+
+	SVector3 tv1 = ge->firstDer(u0);
+	SVector3 tv2 = ge->firstDer(u1);
+	
+	tv1.normalize();
+	tv2.normalize();
+
+	SPoint3 t1(tv1.x(),tv1.y(),0), t2(tv2.x(),tv2.y(),0), 
+	  one_third, two_third,vv0(v0->x(),v0->y(),0),vv1(v1->x(),v1->y(),0);
+
+	Hermite2D_C1 ( vv0,vv1,t1 ,t2 ,one_third,two_third );	
+
+	printf("points (%g,%g) (%g,%g) tg (%g,%g) (%g,%g) int (%g,%g) and (%g,%g)\n",
+	       v0->x(),v0->y(),v1->x(),v1->y(),tv1.x(),tv1.y(),tv2.x(),tv2.y(),
+	       one_third.x(),one_third.y(),two_third.x(),two_third.y());
+
+	
+
+	MVertex *v1 = new MVertex(one_third.x(),one_third.y(),0);
+	MVertex *v2 = new MVertex(two_third.x(),two_third.y(),0);
+	edgeVertices[p].push_back(v1);
+	ge->mesh_vertices.push_back(v1);
+	ve.push_back(v1);
+	edgeVertices[p].push_back(v2);
+	ge->mesh_vertices.push_back(v2);
+	ve.push_back(v2);	
+      }
+      else{
+	for (int j=0;j<nPts;j++)
+	  {
+	    MVertex *v;
+	    double t = (double)(j+1)/(nPts+1);
+	    if(linear || ge->geomType() == GEntity::DiscreteCurve){
+	      SPoint3 pc = edge.interpolate(t);
+	      v = new MVertex(pc.x(), pc.y(), pc.z(), ge);
+	    }
+	    else {
+	      double u0 = 1e6, u1 = 1e6;
+	      Range<double> bounds = ge->parBounds(0);
+	      if(ge->getBeginVertex() && ge->getBeginVertex()->mesh_vertices[0] == v0) 
+		u0 = bounds.low();
+	      else if(ge->getEndVertex() && ge->getEndVertex()->mesh_vertices[0] == v0) 
+		u0 = bounds.high();
+	      else 
+		v0->getParameter(0, u0);
+	      if(ge->getBeginVertex() && ge->getBeginVertex()->mesh_vertices[0] == v1) 
+		u1 = bounds.low();
+	      else if(ge->getEndVertex() && ge->getEndVertex()->mesh_vertices[0] == v1) 
+		u1 = bounds.high();
+	      else 
+		v1->getParameter(0, u1);
+	      double uc = (1.-t) * u0 + t * u1;
+	      if(u0 < 1e6 && u1 < 1e6 && uc > u0 && uc < u1){
+		GPoint pc = ge->point(uc);
+		v = new MEdgeVertex(pc.x(), pc.y(), pc.z(), ge, uc);
+	      }
+	      else{
+		// normally never here, but we don't treat periodic curves
+		// properly, so we can get uc < u0 or uc > u1...
+		SPoint3 pc = edge.interpolate(t);
+		v = new MVertex(pc.x(), pc.y(), pc.z(), ge);
+	      }
+	    }
+	    edgeVertices[p].push_back(v);
+	    ge->mesh_vertices.push_back(v);
+	    ve.push_back(v);
 	}
       }
-      edgeVertices[p] = v;
-      ge->mesh_vertices.push_back(v);
-      ve.push_back(v);
     }
   }
 }
 
-void getEdgeVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &ve,
-		     std::map<std::pair<MVertex*,MVertex*>, MVertex* > &edgeVertices,
-		     bool linear)
+void getEdgeVertices(GFace *gf, MElement *ele, 
+		     std::vector<MVertex*> &ve,
+		     edgeContainer &edgeVertices,
+		     bool linear, int nPts = 1)
 {
   for(int i = 0; i < ele->getNumEdges(); i++){
-    MEdge edge = ele->getEdge(i);
+    MEdge edge = ele->getEdge(i);    
+    std::vector<MVertex*> temp;    
     std::pair<MVertex*, MVertex*> p(edge.getMinVertex(), edge.getMaxVertex());
     if(edgeVertices.count(p)){
-      ve.push_back(edgeVertices[p]);
+      temp = edgeVertices[p];
     }
     else{
-      MVertex *v, *v0 = edge.getVertex(0), *v1 = edge.getVertex(1);
-      if(linear || gf->geomType() == GEntity::DiscreteSurface){
-	SPoint3 pc = edge.barycenter();
-	v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
-      }
-      else{
-	SPoint2 p0, p1;
-	if(reparamOnFace(v0, gf, p0) && reparamOnFace(v1, gf, p1)){
-	  double uc = 0.5 * (p0[0] + p1[0]);
-	  double vc = 0.5 * (p0[1] + p1[1]);
-	  GPoint pc = gf->point(uc, vc);
-	  v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc);
-	}
-	else{
-	  // need to treat seams correctly!
-	  SPoint3 pc = edge.barycenter();
-	  v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+      MVertex *v0 = edge.getMinVertex(), *v1 = edge.getMaxVertex();
+      for (int j=0;j<nPts;j++)
+	{
+	  const double t = (double)(j+1)/(nPts+1);
+	  MVertex *v;
+	  if(1 && (linear || gf->geomType() == GEntity::DiscreteSurface)){
+	    SPoint3 pc = edge.interpolate(t);
+	    v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+	  }
+	  else{
+	    SPoint2 p0, p1;
+	    if(reparamOnFace(v0, gf, p0) && reparamOnFace(v1, gf, p1)){
+	      double uc = (1.-t) * p0[0] + t * p1[0];
+	      double vc = (1.-t) * p0[1] + t * p1[1];
+	      GPoint pc = gf->point(uc, vc);
+	      v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc);
+	    }
+	    else{
+	      // need to treat seams correctly!
+	      SPoint3 pc = edge.interpolate(t);
+	      v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+	    }
+	  }
+	  edgeVertices[p].push_back(v);
+	  gf->mesh_vertices.push_back(v);
+	  temp.push_back(v);
 	}
-      }
-      edgeVertices[p] = v;
-      gf->mesh_vertices.push_back(v);
-      ve.push_back(v);
     }
+    if (edge.getMinVertex() == edge.getVertex(0))
+      ve.insert(ve.end(),temp.begin(),temp.end());
+    else
+      ve.insert(ve.end(),temp.rbegin(),temp.rend());
   }
 }
 
-void getEdgeVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &ve,
-		     std::map<std::pair<MVertex*,MVertex*>, MVertex* > &edgeVertices,
-		     bool linear)
+void getEdgeVertices(GRegion *gr, MElement *ele, 
+		     std::vector<MVertex*> &ve,
+		     edgeContainer &edgeVertices,
+		     bool linear, int nPts = 1)
 {
   for(int i = 0; i < ele->getNumEdges(); i++){
     MEdge edge = ele->getEdge(i);
     std::pair<MVertex*, MVertex*> p(edge.getMinVertex(), edge.getMaxVertex());
     if(edgeVertices.count(p)){
-      ve.push_back(edgeVertices[p]);
+      ve.insert (ve.end(),edgeVertices[p].begin(),edgeVertices[p].end());
     }
     else{
-      SPoint3 pc = edge.barycenter();
-      MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
-      edgeVertices[p] = v;
-      gr->mesh_vertices.push_back(v);
-      ve.push_back(v);
+      for (int j=0;j<nPts;j++)
+	{
+	  double t = (double)(j+1)/(nPts+1);
+	  SPoint3 pc = edge.interpolate(t);
+	  MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
+	  edgeVertices[p].push_back(v);
+	  gr->mesh_vertices.push_back(v);
+	  ve.push_back(v);
+	}
     }
   }
 }
 
 void getFaceVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &vf,
-		     std::map<std::vector<MVertex*>, MVertex* > &faceVertices,
-		     bool linear)
+		     faceContainer &faceVertices,
+		     bool linear, int nPts = 1)
 {
   for(int i = 0; i < ele->getNumFaces(); i++){
     MFace face = ele->getFace(i);
-    if(face.getNumVertices() != 4) continue;
-    std::vector<MVertex*> p;
-    face.getOrderedVertices(p);
-    if(faceVertices.count(p)){
-      vf.push_back(faceVertices[p]);
-    }
-    else{
-      MVertex *v;
-      if(linear || gf->geomType() == GEntity::DiscreteSurface){
-	SPoint3 pc = face.barycenter();
-	v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+    // triangles
+    if(face.getNumVertices() == 3)
+      {
+	std::vector<MVertex*> p;
+	face.getOrderedVertices(p);
+	if(faceVertices.count(p)){
+	  vf.insert(vf.begin(),faceVertices[p].begin(),faceVertices[p].end());
+	}
+	else{
+	  for (int j = 0 ; j < nPts ; j++ )
+	    {
+	      for (int k = 0 ; k < nPts-j-1 ; k++ )
+		{
+		  MVertex *v;
+		  double t1 = (double)(j+1)/(nPts+1);
+		  double t2 = (double)(k+1)/(nPts+1);
+		  if(linear || gf->geomType() == GEntity::DiscreteSurface){
+		    SPoint3 pc = face.interpolate(t1,t2);
+		    v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+		  }
+		  else{
+		    SPoint2 p0, p1, p2;
+		    if(reparamOnFace(p[0], gf, p0) && reparamOnFace(p[1], gf, p1) &&
+		       reparamOnFace(p[2], gf, p2)){
+		      double uc = (1.-t1-t2)*p0[0] + t1*p1[0] + t2*p2[0];
+		      double vc = (1.-t1-t2)*p0[1] + t1*p1[1] + t2*p2[1];
+		      GPoint pc = gf->point(uc, vc);
+		      v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc);
+		    }
+		    else{
+		      // need to treat seams correctly!
+		      SPoint3 pc = face.interpolate(t1,t2);
+		      v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+		    }
+		  }
+		  faceVertices[p].push_back(v);
+		  gf->mesh_vertices.push_back(v);
+		  vf.push_back(v);
+		}
+	    }
+	}
       }
-      else{
-	SPoint2 p0, p1, p2, p3;
-	if(reparamOnFace(p[0], gf, p0) && reparamOnFace(p[1], gf, p1) &&
-	   reparamOnFace(p[2], gf, p2) && reparamOnFace(p[3], gf, p3)){
-	  double uc = 0.25 * (p0[0] + p1[0] + p2[0] + p3[0]);
-	  double vc = 0.25 * (p0[1] + p1[1] + p2[1] + p3[1]);
-	  GPoint pc = gf->point(uc, vc);
-	  v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc);
+    // quadrangles
+    else if(face.getNumVertices() == 4)
+      {
+	std::vector<MVertex*> p;
+	face.getOrderedVertices(p);
+	if(faceVertices.count(p)){
+	  vf.insert(vf.begin(),faceVertices[p].begin(),faceVertices[p].end());
 	}
 	else{
-	  // need to treat seams correctly!
-	  SPoint3 pc = face.barycenter();
-	  v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+	  for (int j = 0 ; j < nPts ; j++ )
+	    {
+	      for (int k = 0 ; k < nPts ; k++ )
+		{
+		  MVertex *v;
+		  double t1 = (double)(j+1)/(nPts+1);
+		  double t2 = (double)(k+1)/(nPts+1);
+		  if(linear || gf->geomType() == GEntity::DiscreteSurface){
+		    SPoint3 pc = face.interpolate(t1,t2);
+		    v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+		  }
+		  else{
+		    SPoint2 p0, p1, p2, p3;
+		    if(reparamOnFace(p[0], gf, p0) && reparamOnFace(p[1], gf, p1) &&
+		       reparamOnFace(p[2], gf, p2) && reparamOnFace(p[3], gf, p3)){
+		      double uc = 0.25*((1-t1)*(1-t2)* p0[0] + 
+					(1-t1)*(1+t2)* p0[0] + 
+					(1-t1)*(1+t2)* p0[0] + 
+					(1+t1)*(1-t2)* p0[0] ); 
+		      double vc = 0.25*((1-t1)*(1-t2)* p0[1] + 
+					(1-t1)*(1+t2)* p0[1] + 
+					(1-t1)*(1+t2)* p0[1] + 
+					(1+t1)*(1-t2)* p0[1] ); 
+		      GPoint pc = gf->point(uc, vc);
+		      v = new MFaceVertex(pc.x(), pc.y(), pc.z(), gf, uc, vc);
+		    }
+		    else{
+		      // need to treat seams correctly!
+		      SPoint3 pc = face.interpolate(t1,t2);
+		      v = new MVertex(pc.x(), pc.y(), pc.z(), gf);
+		    }
+		  }
+		  faceVertices[p].push_back(v);
+		  gf->mesh_vertices.push_back(v);
+		  vf.push_back(v);
+		}
+	    }
 	}
       }
-      faceVertices[p] = v;
-      gf->mesh_vertices.push_back(v);
-      vf.push_back(v);
-    }
+    else throw;
   }
 }
 
 void getFaceVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &vf,
-		     std::map<std::vector<MVertex*>, MVertex* > &faceVertices,
-		     bool linear)
+		     faceContainer &faceVertices,
+		     bool linear, int nPts = 1)
 {
   for(int i = 0; i < ele->getNumFaces(); i++){
     MFace face = ele->getFace(i);
-    if(face.getNumVertices() != 4) continue;
     std::vector<MVertex*> p;
     face.getOrderedVertices(p);
     if(faceVertices.count(p)){
-      vf.push_back(faceVertices[p]);
+      vf.insert(vf.begin(),faceVertices[p].begin(),faceVertices[p].end());
     }
-    else{
-      SPoint3 pc = face.barycenter();
-      MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
-      faceVertices[p] = v;
-      gr->mesh_vertices.push_back(v);
-      vf.push_back(v);
+    else{      
+	{
+	  for (int j = 0 ; j < nPts ; j++ )
+	    {
+	      int st = nPts;
+	      if(face.getNumVertices() == 3)st=j;
+	      for (int k = 0 ; k < st ; k++ )
+		{
+		  double t1 = (double)(j+1)/(nPts+1);
+		  double t2 = (double)(k+1)/(nPts+1);
+		  SPoint3 pc = face.interpolate(t1,t2);
+		  MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
+		  faceVertices[p].push_back(v);
+		  gr->mesh_vertices.push_back(v);
+		  vf.push_back(v);
+		}
+	    }
+	}
     }
   }
 }
 
 void setSecondOrder(GEdge *ge,
-		    std::map<std::pair<MVertex*,MVertex*>, MVertex* > &edgeVertices,
-		    bool linear)
+		    edgeContainer &edgeVertices,
+		    bool linear, int nbPts = 1)
 {
   std::vector<MLine*> lines2;
   for(unsigned int i = 0; i < ge->lines.size(); i++){
     MLine *l = ge->lines[i];
     std::vector<MVertex*> ve;
-    getEdgeVertices(ge, l, ve, edgeVertices, linear);
-    lines2.push_back(new MLine3(l->getVertex(0), l->getVertex(1), ve[0]));
+    getEdgeVertices(ge, l, ve, edgeVertices, linear,nbPts);
+    if ( nbPts == 1)
+      lines2.push_back(new MLine3(l->getVertex(0), l->getVertex(1), ve[0]));
+    else
+      lines2.push_back(new MLineN(l->getVertex(0), l->getVertex(1), ve));      
     delete l;
   }
   ge->lines = lines2;
@@ -244,18 +435,33 @@ void setSecondOrder(GEdge *ge,
 }
 
 void setSecondOrder(GFace *gf,
-		    std::map<std::pair<MVertex*,MVertex*>, MVertex* > &edgeVertices,
-		    std::map<std::vector<MVertex*>, MVertex* > &faceVertices,
-		    bool linear, bool incomplete)
+		    edgeContainer &edgeVertices,
+		    faceContainer &faceVertices,
+		    bool linear, bool incomplete, int nPts = 1)
 {
   std::vector<MTriangle*> triangles2;
   for(unsigned int i = 0; i < gf->triangles.size(); i++){
     MTriangle *t = gf->triangles[i];
-    std::vector<MVertex*> ve;
-    getEdgeVertices(gf, t, ve, edgeVertices, linear);
-    triangles2.push_back
-      (new MTriangle6(t->getVertex(0), t->getVertex(1), t->getVertex(2),
-		      ve[0], ve[1], ve[2]));
+    std::vector<MVertex*> ve,vf;
+    getEdgeVertices(gf, t, ve, edgeVertices, linear,nPts);
+    if (nPts == 1)
+      triangles2.push_back
+	(new MTriangle6(t->getVertex(0), t->getVertex(1), t->getVertex(2),
+			ve[0], ve[1], ve[2]));
+    else
+      if(incomplete){
+	triangles2.push_back
+	  (new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2),
+			  ve,nPts+1));
+      }
+      else
+	{
+	  getFaceVertices(gf, t, vf, faceVertices, linear,nPts);
+	  ve.insert(ve.end(),vf.begin(),vf.end());
+	  triangles2.push_back
+	    (new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2),
+			    ve,nPts+1));
+	}      
     delete t;
   }
   gf->triangles = triangles2;
@@ -264,7 +470,7 @@ void setSecondOrder(GFace *gf,
   for(unsigned int i = 0; i < gf->quadrangles.size(); i++){
     MQuadrangle *q = gf->quadrangles[i];
     std::vector<MVertex*> ve, vf;
-    getEdgeVertices(gf, q, ve, edgeVertices, linear);
+    getEdgeVertices(gf, q, ve, edgeVertices, linear,nPts);
     if(incomplete){
       quadrangles2.push_back
 	(new MQuadrangle8(q->getVertex(0), q->getVertex(1), q->getVertex(2),
@@ -284,15 +490,15 @@ void setSecondOrder(GFace *gf,
 }
 
 void setSecondOrder(GRegion *gr,
-		    std::map<std::pair<MVertex*,MVertex*>, MVertex* > &edgeVertices,
-		    std::map<std::vector<MVertex*>, MVertex* > &faceVertices,
-		    bool linear, bool incomplete)
+		    edgeContainer &edgeVertices,
+		    faceContainer &faceVertices,
+		    bool linear, bool incomplete, int nPts = 1)
 {
   std::vector<MTetrahedron*> tetrahedra2;
   for(unsigned int i = 0; i < gr->tetrahedra.size(); i++){
     MTetrahedron *t = gr->tetrahedra[i];
     std::vector<MVertex*> ve;
-    getEdgeVertices(gr, t, ve, edgeVertices, linear);
+    getEdgeVertices(gr, t, ve, edgeVertices, linear, nPts);
     tetrahedra2.push_back
       (new MTetrahedron10(t->getVertex(0), t->getVertex(1), t->getVertex(2), 
 			  t->getVertex(3), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5]));
@@ -304,7 +510,7 @@ void setSecondOrder(GRegion *gr,
   for(unsigned int i = 0; i < gr->hexahedra.size(); i++){
     MHexahedron *h = gr->hexahedra[i];
     std::vector<MVertex*> ve, vf;
-    getEdgeVertices(gr, h, ve, edgeVertices, linear);
+    getEdgeVertices(gr, h, ve, edgeVertices, linear, nPts);
     if(incomplete){
       hexahedra2.push_back
 	(new MHexahedron20(h->getVertex(0), h->getVertex(1), h->getVertex(2), 
@@ -333,7 +539,7 @@ void setSecondOrder(GRegion *gr,
   for(unsigned int i = 0; i < gr->prisms.size(); i++){
     MPrism *p = gr->prisms[i];
     std::vector<MVertex*> ve, vf;
-    getEdgeVertices(gr, p, ve, edgeVertices, linear);
+    getEdgeVertices(gr, p, ve, edgeVertices, linear, nPts);
     if(incomplete){
       prisms2.push_back
 	(new MPrism15(p->getVertex(0), p->getVertex(1), p->getVertex(2), 
@@ -356,7 +562,7 @@ void setSecondOrder(GRegion *gr,
   for(unsigned int i = 0; i < gr->pyramids.size(); i++){
     MPyramid *p = gr->pyramids[i];
     std::vector<MVertex*> ve, vf;
-    getEdgeVertices(gr, p, ve, edgeVertices, linear);
+    getEdgeVertices(gr, p, ve, edgeVertices, linear, nPts);
     if(incomplete){
       pyramids2.push_back
 	(new MPyramid13(p->getVertex(0), p->getVertex(1), p->getVertex(2), 
@@ -453,6 +659,8 @@ void Degre2(GModel *m, bool linear, bool incomplete)
   //   edges (creating 8-node quads, 20-node hexas, etc., instead of
   //   9-node quads, 27-node hexas, etc.)
 
+  int nPts = CTX.mesh.order - 1;
+
   Msg(STATUS1, "Meshing second order...");
   double t1 = Cpu();
 
@@ -460,14 +668,14 @@ void Degre2(GModel *m, bool linear, bool incomplete)
   Degre1(m);
 
   // then create new second order vertices/elements
-  std::map<std::pair<MVertex*,MVertex*>, MVertex* > edgeVertices;
-  std::map<std::vector<MVertex*>, MVertex* > faceVertices;
-  for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it)
-    setSecondOrder(*it, edgeVertices, linear);
-  for(GModel::fiter it = m->firstFace(); it != m->lastFace(); ++it)
-    setSecondOrder(*it, edgeVertices, faceVertices, linear, incomplete);
-  for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it)
-    setSecondOrder(*it, edgeVertices, faceVertices, linear, incomplete);
+  edgeContainer edgeVertices;
+  faceContainer faceVertices;
+  for(GModel::eiter it = GMODEL->firstEdge(); it != GMODEL->lastEdge(); ++it)
+    setSecondOrder(*it, edgeVertices, linear, nPts);
+  for(GModel::fiter it = GMODEL->firstFace(); it != GMODEL->lastFace(); ++it)
+    setSecondOrder(*it, edgeVertices, faceVertices, linear, incomplete,nPts);
+  for(GModel::riter it = GMODEL->firstRegion(); it != GMODEL->lastRegion(); ++it)
+    setSecondOrder(*it, edgeVertices, faceVertices, linear, incomplete,nPts);
 
   double t2 = Cpu();
   Msg(INFO, "Mesh second order complete (%g s)", t2 - t1);
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index faeff30f0a..9ccc6a862c 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -121,7 +121,7 @@
 
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.307 2007-02-26 08:25:39 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.308 2007-02-27 17:15:47 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index d2e998250a..619fa59e33 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.306 2007-02-26 08:25:43 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.307 2007-02-27 17:15:51 remacle Exp $
  */
 
 #define FLEX_SCANNER
@@ -720,7 +720,7 @@ char *yytext;
 #line 1 "Gmsh.l"
 #define INITIAL 0
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.306 2007-02-26 08:25:43 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.307 2007-02-27 17:15:51 remacle Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
-- 
GitLab