From 357c9a9759c1190a0867051bc867041a390ad74b Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 14 Nov 2006 15:21:05 +0000
Subject: [PATCH] start opencascade integration

---
 Box/Box.cpp                                   |   6 +-
 Common/Makefile                               |  18 +-
 DataStr/Makefile                              |   8 +-
 Fltk/Main.cpp                                 |   8 +-
 Fltk/Makefile                                 |  34 +-
 Geo/GEntity.h                                 |  13 +-
 Geo/GFace.h                                   |   2 +-
 Geo/GModel.h                                  |  42 +-
 Geo/{fourierModel.cpp => GModelIOFourier.cpp} |  97 +++--
 Geo/GModelIOGeo.cpp                           | 385 ++++++++++++++++++
 Geo/{GModelIO.cpp => GModelIOMesh.cpp}        |   3 +-
 Geo/Geo.cpp                                   |   6 +-
 Geo/MRep.h                                    |  41 ++
 Geo/Makefile                                  | 150 +++----
 Geo/{fourierModel.h => fourierFace.h}         |  11 +-
 Geo/gmshEdge.cpp                              |   3 +-
 Geo/gmshEdge.h                                |   2 +-
 Geo/gmshFace.cpp                              |   4 +-
 Geo/gmshFace.h                                |   2 +-
 Geo/gmshModel.h                               |  35 --
 Geo/gmshRegion.cpp                            |   4 +-
 Geo/gmshRegion.h                              |   2 +-
 Geo/gmshVertex.h                              |   2 +-
 Graphics/Makefile                             |  20 +-
 Graphics/Mesh.cpp                             |  38 +-
 Mesh/Makefile                                 |  51 +--
 Numeric/Makefile                              |   7 +-
 Parallel/Makefile                             |   3 +-
 Parser/Makefile                               |  34 +-
 Parser/OpenFile.cpp                           |  26 +-
 Plugin/Makefile                               |  32 +-
 contrib/ANN/Makefile                          |  16 +-
 contrib/MathEval/Makefile                     |   8 +-
 contrib/Metis/Makefile                        |  54 +--
 contrib/Netgen/Makefile                       | 101 +----
 35 files changed, 688 insertions(+), 580 deletions(-)
 rename Geo/{fourierModel.cpp => GModelIOFourier.cpp} (99%)
 create mode 100644 Geo/GModelIOGeo.cpp
 rename Geo/{GModelIO.cpp => GModelIOMesh.cpp} (99%)
 rename Geo/{fourierModel.h => fourierFace.h} (92%)
 delete mode 100644 Geo/gmshModel.h

diff --git a/Box/Box.cpp b/Box/Box.cpp
index b129a979db..6cd202ae0f 100644
--- a/Box/Box.cpp
+++ b/Box/Box.cpp
@@ -1,4 +1,4 @@
-// $Id: Box.cpp,v 1.27 2006-09-23 02:48:09 geuzaine Exp $
+// $Id: Box.cpp,v 1.28 2006-11-14 15:21:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -33,7 +33,7 @@
 #include "CreateFile.h"
 #include "ParUtil.h"
 #include "PluginManager.h"
-#include "gmshModel.h"
+#include "GModel.h"
 
 Context_T CTX;
 Mesh M, *THEM = &M;
@@ -77,7 +77,7 @@ int GMSHBOX(int argc, char *argv[])
 {
   ParUtil::Instance()->init(argc, argv);
 
-  GMODEL = new gmshModel;
+  GMODEL = new GModel;
 
   InitSymbols();
   Init_Mesh0();
diff --git a/Common/Makefile b/Common/Makefile
index 402ca18e34..a558fce16d 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.112 2006-11-04 00:17:07 geuzaine Exp $
+# $Id: Makefile,v 1.113 2006-11-14 15:21:02 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -64,40 +64,32 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Common//"
 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 SmoothNormals.h AdaptiveViews.h GmshMatrix.h Trackball.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 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/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h OS.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 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 SmoothNormals.h AdaptiveViews.h GmshMatrix.h Context.h \
   Options.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 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 SmoothNormals.h AdaptiveViews.h GmshMatrix.h \
   Context.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 Octree.o: Octree.cpp Octree.h OctreeInternals.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 OctreeInternals.o: OctreeInternals.cpp Message.h OctreeInternals.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 OctreePost.o: OctreePost.cpp Octree.h OctreeInternals.h OctreePost.h \
   ../DataStr/List.h Views.h ColorTable.h VertexArray.h SmoothNormals.h \
   ../Numeric/Numeric.h AdaptiveViews.h GmshMatrix.h Message.h \
   ShapeFunctions.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 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 \
@@ -114,7 +106,6 @@ Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h \
   ../Fltk/Colorbar_Window.h ../Common/GmshUI.h ../Fltk/Popup_Button.h \
   ../Fltk/SpherePosition_Widget.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 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 \
@@ -134,14 +125,11 @@ CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
   ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
   ../Common/SmoothNormals.h OS.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 OS.o: OS.cpp Message.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 ColorTable.o: ColorTable.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 ColorTable.h Context.h \
   ../Numeric/Numeric.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 Visibility.o: Visibility.cpp Visibility.h GmshDefines.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
@@ -158,17 +146,13 @@ Visibility.o: Visibility.cpp Visibility.h GmshDefines.h ../Geo/GVertex.h \
   ../Geo/GFace.h ../Geo/GRegion.h ../Geo/SBoundingBox3d.h \
   ../Common/SmoothNormals.h ../Parser/Parser.h ../DataStr/Tree.h \
   ../DataStr/avl.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 Trackball.o: Trackball.cpp Trackball.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 VertexArray.o: VertexArray.cpp VertexArray.h Context.h ../DataStr/List.h \
   ../Numeric/Numeric.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 SmoothNormals.o: SmoothNormals.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 \
   SmoothNormals.h
-# 1 "/Users/geuzaine/.gmsh/Common//"
 License.o: License.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
diff --git a/DataStr/Makefile b/DataStr/Makefile
index 5b975fff8d..07fa995952 100644
--- a/DataStr/Makefile
+++ b/DataStr/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.36 2006-09-14 15:48:35 geuzaine Exp $
+# $Id: Makefile,v 1.37 2006-11-14 15:21:02 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -55,15 +55,9 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/DataStr//"
 List.o: List.cpp Malloc.h List.h ../Common/Message.h SafeIO.h
-# 1 "/Users/geuzaine/.gmsh/DataStr//"
 Malloc.o: Malloc.cpp Malloc.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/DataStr//"
 SafeIO.o: SafeIO.cpp SafeIO.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/DataStr//"
 Tree.o: Tree.cpp Malloc.h Tree.h avl.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/DataStr//"
 avl.o: avl.cpp avl.h Malloc.h
-# 1 "/Users/geuzaine/.gmsh/DataStr//"
 Tools.o: Tools.cpp Tools.h List.h Tree.h avl.h
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 1d24679429..a97a9439ac 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.97 2006-08-12 17:44:24 geuzaine Exp $
+// $Id: Main.cpp,v 1.98 2006-11-14 15:21:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -38,7 +38,7 @@
 #include "Numeric.h"
 #include "Solvers.h"
 #include "PluginManager.h"
-#include "gmshModel.h"
+#include "GModel.h"
 
 Context_T CTX;
 Mesh M, *THEM = &M;
@@ -67,8 +67,8 @@ int main(int argc, char *argv[])
     strcat(cmdline, " ");
   }
 
-  // Create a new gmsh model
-  GMODEL = new gmshModel;
+  // Create a new model
+  GMODEL = new GModel;
 
   // Initialize the symbol tree that will hold variable names
   
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 8a491d4659..4bbffb98dd 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.109 2006-11-04 00:17:08 geuzaine Exp $
+# $Id: Makefile,v 1.110 2006-11-14 15:21:02 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -63,7 +63,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 Main.o: Main.cpp GUI.h Opengl_Window.h ../Mesh/Mesh.h \
   ../Common/GmshDefines.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Vertex.h \
@@ -80,19 +79,17 @@ Main.o: Main.cpp GUI.h Opengl_Window.h ../Mesh/Mesh.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/gmshModel.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/GPoint.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/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
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
+  ../Plugin/Plugin.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/SPoint3.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.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/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 \
@@ -105,7 +102,6 @@ Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h Colorbar_Window.h \
   ../Common/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
   GUI_Extras.h ../Common/OS.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 GUI.o: GUI.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 ../Common/GmshUI.h \
@@ -122,7 +118,6 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   Popup_Button.h SpherePosition_Widget.h Callbacks.h Bitmaps.h \
   Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h Solvers.h \
   ../Plugin/PluginManager.h ../Plugin/Plugin.h Shortcut_Window.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -137,7 +132,6 @@ GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 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 \
@@ -169,7 +163,6 @@ Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/Visibility.h ../Common/GmshDefines.h Solvers.h ../Common/OS.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
   ../Geo/GRegion.h ../Geo/SBoundingBox3d.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 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 \
@@ -195,7 +188,6 @@ Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Simplex.h ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
   ../Mesh/Mesh.h ../Mesh/Matrix.h Colorbar_Window.h Popup_Button.h \
   SpherePosition_Widget.h ../Graphics/gl2ps.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 Opengl_Window.o: Opengl_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 ../DataStr/Tree.h \
@@ -221,7 +213,6 @@ Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Simplex.h ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
   ../Mesh/Mesh.h ../Mesh/Matrix.h Colorbar_Window.h Popup_Button.h \
   SpherePosition_Widget.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 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 \
@@ -234,7 +225,6 @@ Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h Colorbar_Window.h \
   ../Common/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Fltk//"
 Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/Geo/GEntity.h b/Geo/GEntity.h
index f38b986fc1..95745e9eab 100644
--- a/Geo/GEntity.h
+++ b/Geo/GEntity.h
@@ -52,7 +52,15 @@ class GEntity {
   unsigned int _color;
   
  public:
-  
+
+  // All known native model types
+  enum ModelType {
+    UnknownModel,
+    GmshModel,
+    FourierModel,
+    OpenCascadeModel
+  };
+
   // All known entity types
   enum GeomType {
     Unknown,
@@ -148,6 +156,9 @@ class GEntity {
   // True if the entity contains the given point to within tolerance.
   virtual int containsPoint(const SPoint3 &pt) const{throw;}
 
+  // Get the native type of the particular representation
+  virtual ModelType getNativeType() const { return UnknownModel;}
+
   // Get the native pointer of the particular representation
   virtual void * getNativePtr() const {throw;}
 
diff --git a/Geo/GFace.h b/Geo/GFace.h
index 67816a6fb2..333a531492 100644
--- a/Geo/GFace.h
+++ b/Geo/GFace.h
@@ -61,7 +61,7 @@ class GFace : public GEntity
   virtual std::list<GEdge*> edges() const{return l_edges;}
   // Edges that are embedded in this face.
   virtual std::list<GEdge*> emb_edges() const{return embedded_edges;}
-  // Edges that bound this entity or that this entity bounds.
+  // Vertices that bound this entity or that this entity bounds.
   virtual std::list<GVertex*> vertices() const;
 
   virtual int dim() const {return 2;}
diff --git a/Geo/GModel.h b/Geo/GModel.h
index b2809b01fa..6bc4571835 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -42,6 +42,7 @@ class GModel
   std::set<int> meshPartitions;
 
  public:
+  GModel() : modelName("Untitled"), normals(0) {}
   GModel(const std::string &name) : modelName(name), normals(0) {}
   virtual ~GModel(){ destroy(); }
 
@@ -53,9 +54,6 @@ class GModel
   // Deletes everything in a GModel 
   virtual void destroy();
 
-  // Imports data into a GModel from an external source
-  virtual void import(){}
-
   // Returns the geometric tolerance for the entire model.
   virtual double tolerance() const { return 1.e-14; }
 
@@ -122,40 +120,52 @@ class GModel
   // deletes all the partitions
   virtual void deleteMeshPartitions();
 
-  // IO for native Gmsh mesh file format
+  // A container for smooth normals
+  smooth_normals *normals;
+
+  // CAD IO
+  // =========================================
+
+  // Gmsh native CAD format
+  virtual int importTHEM();
+  virtual int readGEO(const std::string &name);
+  virtual int writeGEO(const std::string &name);
+
+  // Fourier model
+  virtual int readFourier(const std::string &name);
+
+
+  // Mesh IO
+  // =========================================
+
+  // Gmsh mesh file format
   int readMSH(const std::string &name);
   int writeMSH(const std::string &name, double version=1.0, bool binary=false,
 	       bool saveAll=false, double scalingFactor=1.0);
 
-  // IO for mesh statistics (as Gmsh post-processing views)
+  // Mesh statistics (as Gmsh post-processing views)
   int writePOS(const std::string &name, double scalingFactor=1.0);
 
-  // IO for stereo lithography format
+  // Stereo lithography format
   int readSTL(const std::string &name, double tolerance=1.e-3);
   int writeSTL(const std::string &name, bool binary=false, double scalingFactor=1.0);
 
-  // IO for Inventor/VRML format
+  // Inventor/VRML format
   int readVRML(const std::string &name);
   int writeVRML(const std::string &name, double scalingFactor=1.0);
 
-  // IO for I-deas universal mesh format
+  // I-deas universal mesh format
   int readUNV(const std::string &name);
   int writeUNV(const std::string &name, bool saveAll=false, double scalingFactor=1.0);
 
-  // IO for Medit (INRIA) mesh format
+  // Medit (INRIA) mesh format
   int readMESH(const std::string &name);
   int writeMESH(const std::string &name, double scalingFactor=1.0);
 
-  // IO for Nastran Bulk Data File format
+  // Nastran Bulk Data File format
   int readBDF(const std::string &name);
   int writeBDF(const std::string &name, int format=0, bool saveAll=false, 
 	       double scalingFactor=1.0);
-
-  // Export flat Gmsh geo model (only implemented for gmshModel at the moment)
-  virtual int writeGEO(const std::string &name){ return 0; }
-
-  // A container for smooth normals
-  smooth_normals *normals;
 };
 
 #endif
diff --git a/Geo/fourierModel.cpp b/Geo/GModelIOFourier.cpp
similarity index 99%
rename from Geo/fourierModel.cpp
rename to Geo/GModelIOFourier.cpp
index 0d0918ca32..e183149ba5 100644
--- a/Geo/fourierModel.cpp
+++ b/Geo/GModelIOFourier.cpp
@@ -1,4 +1,5 @@
-#include "fourierModel.h"
+#include "GModel.h"
+#include "fourierFace.h"
 #include "Message.h"
 #include "Context.h"
 #include "Views.h"
@@ -510,56 +511,6 @@ public:
   }
 };
 
-fourierModel::fourierModel(const std::string &name)
-  : GModel(name)
-{
-  FM = new model(name);
-
-  CTX.terminal = 1;
-  
-  Msg(INFO, "Fourier model created: %d patches", FM->GetNumPatches());
-
-  // create one face per patch
-  for(int i = 0; i < FM->GetNumPatches(); i++)
-    add(new fourierFace(this, i));
-
-  // mesh each face with quads
-  std::for_each(firstFace(), lastFace(), meshCartesian());
-
-  return;
-
-  // compute partition of unity
-  std::for_each(firstFace(), lastFace(), computePartitionOfUnity());
-
-  // create grooves
-  std::for_each(firstFace(), lastFace(), createGroove());
-
-  // create grout
-  std::for_each(firstFace(), lastFace(), createGrout());
-
-  // remove any duplicate vertices on hard edges
-
-  // Here's an alternative approach that might be worth investigating:
-  // - compute and store the pou of each overlapping patch in the nodes of
-  //   all the patches
-  // - for each pair of overlapping patches, find the line pou1=pou2 by
-  //   interpolation on the overlapping grids
-  // - compute the intersections of these lines
-  // This should define a non-overlapping partitioning of the grid, which
-  // could be used as the boundary constrain for the unstructured algo
-
-  CTX.terminal = 0;
-
-  CTX.mesh.changed = ENT_ALL;
-}
-
-
-fourierModel::~fourierModel()
-{
-  delete FM;
-  FM = 0;
-}
-
 fourierEdge::fourierEdge(GModel *model, int num, GVertex *v1, GVertex *v2)
   : GEdge(model, num, v1, v2)
 {
@@ -692,4 +643,48 @@ SPoint2 fourierFace::parFromPoint(const SPoint3 &p) const
   return SPoint2(u, v);
 }
 
+int GModel::readFourier(const std::string &name)
+{
+  FM = new model(name);
+
+  CTX.terminal = 1;
+  
+  Msg(INFO, "Fourier model created: %d patches", FM->GetNumPatches());
+
+  // create one face per patch
+  for(int i = 0; i < FM->GetNumPatches(); i++)
+    add(new fourierFace(this, i));
+
+  // mesh each face with quads
+  std::for_each(firstFace(), lastFace(), meshCartesian());
+
+  return 1;
+
+  // compute partition of unity
+  std::for_each(firstFace(), lastFace(), computePartitionOfUnity());
+
+  // create grooves
+  std::for_each(firstFace(), lastFace(), createGroove());
+
+  // create grout
+  std::for_each(firstFace(), lastFace(), createGrout());
+
+  // remove any duplicate vertices on hard edges
+
+  // Here's an alternative approach that might be worth investigating:
+  // - compute and store the pou of each overlapping patch in the nodes of
+  //   all the patches
+  // - for each pair of overlapping patches, find the line pou1=pou2 by
+  //   interpolation on the overlapping grids
+  // - compute the intersections of these lines
+  // This should define a non-overlapping partitioning of the grid, which
+  // could be used as the boundary constrain for the unstructured algo
+
+  CTX.terminal = 0;
+
+  CTX.mesh.changed = ENT_ALL;
+
+  return 1;
+}
+
 #endif
diff --git a/Geo/GModelIOGeo.cpp b/Geo/GModelIOGeo.cpp
new file mode 100644
index 0000000000..e0d62d3f24
--- /dev/null
+++ b/Geo/GModelIOGeo.cpp
@@ -0,0 +1,385 @@
+// $Id: GModelIOGeo.cpp,v 1.1 2006-11-14 15:21:03 geuzaine Exp $
+//
+// Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+// 
+// Please report all bugs and problems to <gmsh@geuz.org>.
+
+#include "GModel.h"
+#include "Mesh.h"
+#include "Geo.h"
+#include "OpenFile.h"
+#include "Tools.h"
+#include "Numeric.h"
+#include "Message.h"
+#include "gmshVertex.h"
+#include "gmshFace.h"
+#include "gmshEdge.h"
+#include "gmshRegion.h"
+
+extern Mesh *THEM;
+
+int GModel::readGEO(const std::string &name)
+{
+  ParseFile((char*)name.c_str(), 1);
+  return importTHEM();
+}
+
+int GModel::importTHEM()
+{
+  if(Tree_Nbr(THEM->Points)) {
+    List_T *points = Tree2List(THEM->Points);
+    for(int i = 0; i < List_Nbr(points); i++){
+      Vertex *p;
+      List_Read(points, i, &p);
+      GVertex *v = vertexByTag(p->Num);
+      if(!v){
+	v = new gmshVertex(this, p);
+	add(v);
+      }
+      if(!p->Visible) v->setVisibility(0);
+    }
+    List_Delete(points);
+  }
+  if(Tree_Nbr(THEM->Curves)) {
+    List_T *curves = Tree2List(THEM->Curves);
+    for(int i = 0; i < List_Nbr(curves); i++){
+      Curve *c;
+      List_Read(curves, i, &c);
+      if(c->Num >= 0 && c->beg && c->end){
+	GEdge *e = edgeByTag(c->Num);
+	if(!e){
+	  e = new gmshEdge(this, c,
+			   vertexByTag(c->beg->Num),
+			   vertexByTag(c->end->Num));
+	  add(e);
+	}
+	if(!c->Visible) e->setVisibility(0);
+	if(c->Color.type) e->setColor(c->Color.mesh);
+      }
+    }
+    List_Delete(curves);
+  }
+  if(Tree_Nbr(THEM->Surfaces)) {
+    List_T *surfaces = Tree2List(THEM->Surfaces);
+    for(int i = 0; i < List_Nbr(surfaces); i++){
+      Surface *s;
+      List_Read(surfaces, i, &s);
+      GFace *f = faceByTag(s->Num);
+      if(!f){
+	f = new gmshFace(this, s);
+	add(f);
+      }
+      if(!s->Visible) f->setVisibility(0);
+      if(s->Color.type) f->setColor(s->Color.mesh);
+    }
+    List_Delete(surfaces);
+  } 
+  if(Tree_Nbr(THEM->Volumes)) {
+    List_T *volumes = Tree2List(THEM->Volumes);
+    for(int i = 0; i < List_Nbr(volumes); i++){
+      Volume *v;
+      List_Read(volumes, i, &v);
+      GRegion *r = regionByTag(v->Num);
+      if(!r){
+	r = new gmshRegion(this, v);
+	add(r);
+      }
+      if(!v->Visible) r->setVisibility(0);
+      if(v->Color.type) r->setColor(v->Color.mesh);
+    }
+    List_Delete(volumes);
+  }
+  for(int i = 0; i < List_Nbr(THEM->PhysicalGroups); i++){
+    PhysicalGroup *p;
+    List_Read(THEM->PhysicalGroups, i, &p);
+    for(int j = 0; j < List_Nbr(p->Entities); j++){
+      int num;
+      List_Read(p->Entities, j, &num);
+      GEntity *ge = 0;
+      switch(p->Typ){
+      case MSH_PHYSICAL_POINT:   ge = vertexByTag(abs(num)); break;
+      case MSH_PHYSICAL_LINE:    ge = edgeByTag(abs(num)); break;
+      case MSH_PHYSICAL_SURFACE: ge = faceByTag(abs(num)); break;
+      case MSH_PHYSICAL_VOLUME:  ge = regionByTag(abs(num)); break;
+      }
+      int pnum = sign(num) * p->Num;
+      if(ge && std::find(ge->physicals.begin(), ge->physicals.end(), pnum) == 
+	 ge->physicals.end())
+	ge->physicals.push_back(pnum);
+    }
+  }
+  
+  Msg(DEBUG, "Gmsh model imported:");
+  Msg(DEBUG, "%d Vertices", vertices.size());
+  Msg(DEBUG, "%d Edges", edges.size());
+  Msg(DEBUG, "%d Faces", faces.size());
+  Msg(DEBUG, "%d Regions", regions.size());
+  
+  return 1;
+}
+
+class writeGVertexGEO {
+ private :
+  FILE *geo;
+ public :
+  writeGVertexGEO(FILE *fp) { geo = fp ? fp : stdout; }
+  void operator() (GVertex *gv)
+  {
+    if(gv->getNativeType() != GEntity::GmshModel) return;
+    Vertex *v = (Vertex*)gv->getNativePtr();
+    fprintf(geo, "Point(%d) = {%.16g, %.16g, %.16g, %.16g};\n",
+	    v->Num, v->Pos.X, v->Pos.Y, v->Pos.Z, v->lc);
+  }
+};
+
+class writeGEdgeGEO {
+ private :
+  FILE *geo;
+ public :
+  writeGEdgeGEO(FILE *fp) { geo = fp ? fp : stdout; }
+  void operator () (GEdge *ge)
+  {
+    if(ge->getNativeType() != GEntity::GmshModel) return;
+    Curve *c = (Curve *)ge->getNativePtr();
+    
+    if(c->Num < 0 || c->Typ == MSH_SEGM_DISCRETE)
+      return;
+
+    switch (c->Typ) {
+    case MSH_SEGM_LINE:
+      fprintf(geo, "Line (%d) = ", c->Num);
+      break;
+    case MSH_SEGM_CIRC:
+    case MSH_SEGM_CIRC_INV:
+      fprintf(geo, "Circle (%d) = ", c->Num);
+      break;
+    case MSH_SEGM_ELLI:
+    case MSH_SEGM_ELLI_INV:
+      fprintf(geo, "Ellipse (%d) = ", c->Num);
+      break;
+    case MSH_SEGM_NURBS:
+      fprintf(geo, "Nurbs (%d) = {", c->Num);
+      for(int i = 0; i < List_Nbr(c->Control_Points); i++) {
+	Vertex *v;
+	List_Read(c->Control_Points, i, &v);
+	if(!i)
+	  fprintf(geo, "%d", v->Num);
+	else
+	  fprintf(geo, ", %d", v->Num);
+	if(i % 8 == 7 && i != List_Nbr(c->Control_Points) - 1)
+	  fprintf(geo, "\n");
+      }
+      fprintf(geo, "}\n");
+      fprintf(geo, "  Knots {");
+      for(int j = 0; j < List_Nbr(c->Control_Points) + c->degre + 1; j++) {
+	if(!j)
+	  fprintf(geo, "%.16g", c->k[j]);
+	else
+	  fprintf(geo, ", %.16g", c->k[j]);
+	if(j % 5 == 4 && j != List_Nbr(c->Control_Points) + c->degre)
+	  fprintf(geo, "\n        ");
+      }
+      fprintf(geo, "}\n");
+      fprintf(geo, "  Order %d;\n", c->degre);
+      return;
+    case MSH_SEGM_SPLN:
+      fprintf(geo, "CatmullRom (%d) = ", c->Num);
+      break;
+    case MSH_SEGM_BSPLN:
+      fprintf(geo, "BSpline (%d) = ", c->Num);
+      break;
+    case MSH_SEGM_BEZIER:
+      fprintf(geo, "Bezier (%d) = ", c->Num);
+      break;
+    default:
+      Msg(GERROR, "Unknown curve type %d", c->Typ);
+      return;
+    }
+
+    for(int i = 0; i < List_Nbr(c->Control_Points); i++) {
+      Vertex *v;
+      List_Read(c->Control_Points, i, &v);
+      if(i)
+	fprintf(geo, ", %d", v->Num);
+      else
+	fprintf(geo, "{%d", v->Num);
+      if(i % 6 == 7)
+	fprintf(geo, "\n");
+    }
+    
+    fprintf(geo, "};\n");
+  }
+};
+
+class writeGFaceGEO {
+ private :
+  FILE *geo;
+ public :
+  writeGFaceGEO(FILE *fp) { geo = fp ? fp : stdout; }
+  void operator () (GFace *gf)
+  {
+    if(gf->getNativeType() != GEntity::GmshModel) return;
+    Surface *s = (Surface *)gf->getNativePtr();
+    
+    if(s->Typ == MSH_SURF_DISCRETE)
+      return;
+    
+    int NUMLOOP = s->Num + 1000000;
+    if(s->Typ != MSH_SURF_NURBS) {
+      if(List_Nbr(s->Generatrices)){
+	fprintf(geo, "Line Loop (%d) = ", NUMLOOP);
+	for(int i = 0; i < List_Nbr(s->Generatrices); i++) {
+	  Curve *c;
+	  List_Read(s->Generatrices, i, &c);
+	  if(i)
+	    fprintf(geo, ", %d", c->Num);
+	  else
+	    fprintf(geo, "{%d", c->Num);
+	}
+	fprintf(geo, "};\n");
+      }
+    }
+    
+    switch (s->Typ) {
+    case MSH_SURF_REGL:
+    case MSH_SURF_TRIC:
+      fprintf(geo, "Ruled Surface (%d) = {%d};\n", s->Num, NUMLOOP);
+      break;
+    case MSH_SURF_PLAN:
+      fprintf(geo, "Plane Surface (%d) = {%d};\n", s->Num, NUMLOOP);
+      break;
+    case MSH_SURF_TRIMMED:
+      fprintf(geo, "Trimmed Surface (%d) = %d {%d};\n", s->Num,
+	      s->Support->Num, NUMLOOP);
+      break;
+    case MSH_SURF_NURBS:
+      fprintf(geo, "Nurbs Surface (%d) = {\n", s->Num);
+      for(int i = 0; i < s->Nv; i++) {
+	fprintf(geo, "  {");
+	for(int j = 0; j < s->Nu; j++) {
+	  Vertex *v;
+	  List_Read(s->Control_Points, j + s->Nu * i, &v);
+	  if(!j)
+	    fprintf(geo, "%d", v->Num);
+	  else
+	    fprintf(geo, ", %d", v->Num);
+	}
+	if(i != s->Nv - 1)
+	  fprintf(geo, "},\n");
+	else
+	  fprintf(geo, "}}\n");
+      }
+      fprintf(geo, "  Knots\n  {");
+      for(int j = 0; j < s->Nu + s->OrderU + 1; j++) {
+	if(!j)
+	  fprintf(geo, "%.16g", s->ku[j]);
+	else
+	  fprintf(geo, ", %.16g", s->ku[j]);
+	if(j % 5 == 4 && j != s->Nu + s->OrderU)
+	  fprintf(geo, "\n  ");
+      }
+      fprintf(geo, "}\n  {");
+      for(int j = 0; j < s->Nv + s->OrderV + 1; j++) {
+	if(!j)
+	  fprintf(geo, "%.16g", s->kv[j]);
+	else
+	  fprintf(geo, ", %.16g", s->kv[j]);
+	if(j % 5 == 4 && j != s->Nv + s->OrderV)
+	  fprintf(geo, "\n  ");
+      }
+      fprintf(geo, "}\n  Order %d %d;\n", s->OrderU, s->OrderV);
+      break;
+    }
+  }
+};
+
+class writeGRegionGEO {
+ private :
+  FILE *geo;
+ public :
+  writeGRegionGEO(FILE *fp) { geo = fp ? fp : stdout; }
+  void operator () (GRegion *gr)
+  {
+    if(gr->getNativeType() != GEntity::GmshModel) return;
+    Volume *vol = (Volume *)gr->getNativePtr();
+    
+    if(vol->Typ == MSH_VOLUME_DISCRETE)
+      return;
+    
+    int NUMLOOP = vol->Num + 1000000;
+    
+    fprintf(geo, "Surface Loop (%d) = ", NUMLOOP);
+    
+    for(int i = 0; i < List_Nbr(vol->Surfaces); i++) {
+      Surface *s;
+      List_Read(vol->Surfaces, i, &s);
+      if(i)
+	fprintf(geo, ", %d", s->Num);
+      else
+	fprintf(geo, "{%d", s->Num);
+    }
+    fprintf(geo, "};\n");
+    
+    switch (vol->Typ) {
+    case MSH_VOLUME:
+      fprintf(geo, "Volume (%d) = {%d};\n", vol->Num, NUMLOOP);
+      break;
+    }
+  }
+};
+
+class writePhysicalGroupGEO {
+ private :
+  FILE *geo;
+  int dim;
+ public :
+  writePhysicalGroupGEO(FILE *fp, int i) : dim(i) { geo = fp ? fp : stdout; }
+  void operator () (std::pair<const int, std::vector<GEntity *> > &g)
+  {
+    switch (dim) {
+    case 0: fprintf(geo, "Physical Point"); break;
+    case 1: fprintf(geo, "Physical Line"); break;
+    case 2: fprintf(geo, "Physical Surface"); break;
+    case 3: fprintf(geo, "Physical Volume"); break;
+    }
+    fprintf(geo, " (%d) = {", g.first);
+    for(unsigned int i = 0; i < g.second.size(); i++) {
+      if(i) fprintf(geo, ", ");
+      fprintf(geo, "%d", g.second[i]->tag());
+    }
+    fprintf(geo, "};\n");
+  }
+};
+
+int GModel::writeGEO(const std::string &name)
+{
+  FILE *fp = fopen(name.c_str(), "w");
+
+  std::for_each(firstVertex(), lastVertex(), writeGVertexGEO(fp));
+  std::for_each(firstEdge(), lastEdge(), writeGEdgeGEO(fp));
+  std::for_each(firstFace(), lastFace(), writeGFaceGEO(fp));
+  std::for_each(firstRegion(), lastRegion(), writeGRegionGEO(fp));
+
+  std::map<int, std::vector<GEntity*> > groups[4];
+  getPhysicalGroups(groups);
+  for(int i = 0; i < 4; i++)
+    std::for_each(groups[i].begin(), groups[i].end(), writePhysicalGroupGEO(fp, i));
+
+  if(fp) fclose(fp);
+  return 1;
+}
diff --git a/Geo/GModelIO.cpp b/Geo/GModelIOMesh.cpp
similarity index 99%
rename from Geo/GModelIO.cpp
rename to Geo/GModelIOMesh.cpp
index ee1d3fa573..3cebae4699 100644
--- a/Geo/GModelIO.cpp
+++ b/Geo/GModelIOMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO.cpp,v 1.57 2006-09-26 01:05:43 geuzaine Exp $
+// $Id: GModelIOMesh.cpp,v 1.1 2006-11-14 15:21:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -24,6 +24,7 @@
 
 #include "Message.h"
 #include "GmshDefines.h"
+#include "GModel.h"
 #include "gmshRegion.h"
 #include "gmshFace.h"
 #include "gmshEdge.h"
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index 047b8ec485..7bfcd110d7 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.57 2006-09-07 05:04:38 geuzaine Exp $
+// $Id: Geo.cpp,v 1.58 2006-11-14 15:21:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -25,7 +25,7 @@
 #include "CAD.h"
 #include "Parser.h"
 #include "Context.h"
-#include "gmshModel.h"
+#include "GModel.h"
 
 extern Context_T CTX;
 extern GModel *GMODEL;
@@ -105,7 +105,7 @@ void add_infile(char *text, char *fich, bool deleted_something)
     // could have deleted some entities
     GMODEL->destroy();
   }
-  GMODEL->import();
+  GMODEL->importTHEM();
   CTX.mesh.changed = ENT_ALL;
 }
 
diff --git a/Geo/MRep.h b/Geo/MRep.h
index d2c5a5cb7f..ae203ce4d6 100644
--- a/Geo/MRep.h
+++ b/Geo/MRep.h
@@ -65,8 +65,10 @@ class MRep {
 #else
   typedef std::map<std::pair<MVertex*, MVertex*>, MElement*> ermap;
 #endif
+  typedef std::map<MFace, MElement*, Equal_Face> frmap;
 
   ermap edges;
+  frmap faces;
 
   // generates the edges from a bunch of elements
   template<class T>
@@ -81,6 +83,24 @@ class MRep {
     }
   }
 
+  // generates the boundary faces from a bunch of elements
+  template<class T>
+  void generateBoundaryFaceRep(std::vector<T*> &elements)
+  {
+    // FIXME: TODO
+    
+    for(unsigned int i = 0; i < elements.size(); i++){
+      for(int j = 0; j < elements[i]->getNumFacesRep(); j++){
+	MFace f = elements[i]->getFaceRep(j);
+	frmap::iterator it = faces.find(f);
+	if(it == faces.end()) 
+	  faces[f] = elements[i];
+	else
+	  faces.erase(it);
+      }
+    }
+  }
+
  public:
   // the vertex arrays
   VertexArray *va_lines, *va_triangles, *va_quads;
@@ -96,6 +116,7 @@ class MRep {
   void destroy(){
     resetArrays();
     edges.clear();
+    faces.clear();
     allElementsVisible = true;
   }
 
@@ -118,6 +139,15 @@ class MRep {
   eriter lastEdgeRep() { return edges.end(); }
   int getNumEdgeRep() { return edges.size(); }
 
+  // generates the boundary face representation
+  virtual void generateBoundaryFaceRep(){}
+
+  // accesses the face representation
+  typedef frmap::const_iterator friter;
+  friter firstFaceRep() { return faces.begin(); }
+  friter lastFaceRep() { return faces.end(); }
+  int getNumFaceRep() { return faces.size(); }
+
   // returns the element at a given position in a vertex array
   // (element pointers are not always stored: returning 0 is not an
   // error)
@@ -191,6 +221,17 @@ class MRepRegion : public MRep {
     Msg(DEBUG, "Created %d edges in volume %d (%gs)",
 	(int)edges.size(), _r->tag(), Cpu()-t);
   }
+  virtual void generateBoundaryFaceRep()
+  {
+    if(faces.size()) return;
+    double t = Cpu();    
+    MRep::generateBoundaryFaceRep(_r->tetrahedra);
+    MRep::generateBoundaryFaceRep(_r->hexahedra);
+    MRep::generateBoundaryFaceRep(_r->prisms);
+    MRep::generateBoundaryFaceRep(_r->pyramids);
+    Msg(DEBUG, "Created %d boundary faces in volume %d (%gs)",
+	(int)faces.size(), _r->tag(), Cpu()-t);
+  }
 };
 
 #endif
diff --git a/Geo/Makefile b/Geo/Makefile
index f970eb86df..0932c3a27e 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.103 2006-11-08 22:04:14 jacob Exp $
+# $Id: Makefile,v 1.104 2006-11-14 15:21:03 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -37,14 +37,14 @@ SRC = CAD.cpp \
       GFace.cpp\
       GRegion.cpp\
       GModel.cpp\
-      GModelIO.cpp\
+      GModelIOMesh.cpp\
+      GModelIOGeo.cpp\
+      GModelIOFourier.cpp\
       MVertex.cpp \
       MElement.cpp \
-      gmshModel.cpp\
       gmshEdge.cpp\
       gmshFace.cpp\
       gmshRegion.cpp\
-      fourierModel.cpp\
       SVector3.cpp\
       SBoundingBox3d.cpp\
       projectionFace.cpp\
@@ -73,7 +73,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 CAD.o: CAD.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Geo.h \
@@ -86,7 +85,6 @@ CAD.o: CAD.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Mesh/Interpolation.h ../Mesh/Vertex.h ../Mesh/Mesh.h \
   ../Mesh/Create.h ../Mesh/Vertex.h ../Mesh/Mesh.h CAD.h ExtrudeParams.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 ExtrudeParams.o: ExtrudeParams.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 \
@@ -96,7 +94,6 @@ ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Edge.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
   ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Vertex.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h ExtrudeParams.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Geo.h CAD.h \
@@ -106,11 +103,10 @@ Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Mesh/Edge.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
   ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Vertex.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h ExtrudeParams.h \
-  ../Parser/Parser.h ../Common/Context.h gmshModel.h GModel.h GVertex.h \
-  GEntity.h Range.h SPoint3.h SBoundingBox3d.h MVertex.h GPoint.h GEdge.h \
+  ../Parser/Parser.h ../Common/Context.h GModel.h GVertex.h GEntity.h \
+  Range.h SPoint3.h SBoundingBox3d.h MVertex.h GPoint.h GEdge.h \
   SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GeoUtils.o: GeoUtils.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 \
@@ -121,82 +117,81 @@ GeoUtils.o: GeoUtils.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Vertex.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h ExtrudeParams.h \
   ../Numeric/Numeric.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GEntity.o: GEntity.cpp GEntity.h Range.h SPoint3.h SBoundingBox3d.h \
   ../Common/GmshDefines.h MRep.h GEdge.h GVertex.h MVertex.h GPoint.h \
   SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/VertexArray.h \
   ../Common/Message.h ../Common/OS.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GVertex.o: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GEdge.o: GEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h GEdge.h \
   SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h GEdge.h \
   SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h \
   ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h GEdge.h \
   SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h GEdge.h \
   SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
-GModelIO.o: GModelIO.cpp ../Common/Message.h ../Common/GmshDefines.h \
-  gmshRegion.h ../Mesh/Mesh.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Vertex.h \
-  ../Mesh/Simplex.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Face.h \
-  ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Edge.h ../Mesh/Vertex.h \
-  ../Mesh/Simplex.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
-  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h \
-  gmshModel.h GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
+  ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h \
+  MRep.h ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h
+GModelIOMesh.o: GModelIOMesh.cpp ../Common/Message.h \
+  ../Common/GmshDefines.h GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h MVertex.h GPoint.h GEdge.h SVector3.h SPoint2.h \
   MElement.h MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ExtrudeParams.h GFace.h Pair.h GRegion.h \
-  ../Common/SmoothNormals.h gmshFace.h gmshVertex.h gmshEdge.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
+  ../Common/Context.h ../DataStr/List.h ExtrudeParams.h GFace.h Pair.h \
+  GRegion.h ../Common/SmoothNormals.h gmshRegion.h ../Mesh/Mesh.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Vertex.h ../Mesh/Element.h \
+  ../Mesh/Face.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Edge.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
+  ../Mesh/Matrix.h gmshFace.h gmshVertex.h gmshEdge.h
+GModelIOGeo.o: GModelIOGeo.cpp GModel.h GVertex.h GEntity.h Range.h \
+  SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
+  GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h \
+  MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h \
+  ../Mesh/Mesh.h ../DataStr/Tree.h ../DataStr/avl.h ../Mesh/Vertex.h \
+  ../Mesh/Element.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Vertex.h \
+  ../Mesh/Element.h ../Mesh/Face.h ../Mesh/Vertex.h ../Mesh/Element.h \
+  ../Mesh/Edge.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h Geo.h \
+  ../Parser/OpenFile.h ../DataStr/Tools.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../Common/Message.h gmshVertex.h gmshFace.h \
+  gmshEdge.h gmshRegion.h
+GModelIOFourier.o: GModelIOFourier.cpp GModel.h GVertex.h GEntity.h \
+  Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h \
+  GPoint.h GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h \
+  ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
+  ../DataStr/List.h ExtrudeParams.h GFace.h Pair.h GRegion.h \
+  ../Common/SmoothNormals.h fourierFace.h ../Common/Message.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
+  ../Common/GmshMatrix.h
 MVertex.o: MVertex.cpp MVertex.h SPoint3.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 MElement.o: MElement.cpp MElement.h ../Common/GmshDefines.h MVertex.h \
   SPoint3.h MEdge.h SVector3.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h GEntity.h \
   Range.h SBoundingBox3d.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
-gmshModel.o: gmshModel.cpp gmshModel.h GModel.h GVertex.h GEntity.h \
-  Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h \
-  GPoint.h GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h \
-  ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ExtrudeParams.h GFace.h Pair.h GRegion.h \
-  ../Common/SmoothNormals.h ../Mesh/Mesh.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Vertex.h \
-  ../Mesh/Simplex.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Face.h \
-  ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Edge.h ../Mesh/Vertex.h \
-  ../Mesh/Simplex.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
-  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h \
-  Geo.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Common/Message.h gmshVertex.h gmshFace.h gmshEdge.h gmshRegion.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
-gmshEdge.o: gmshEdge.cpp gmshModel.h GModel.h GVertex.h GEntity.h Range.h \
-  SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
-  GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h \
-  MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h \
-  gmshEdge.h gmshVertex.h ../Mesh/Mesh.h ../DataStr/Tree.h \
+gmshEdge.o: gmshEdge.cpp gmshEdge.h GEdge.h GEntity.h Range.h SPoint3.h \
+  SBoundingBox3d.h ../Common/GmshDefines.h GVertex.h MVertex.h GPoint.h \
+  SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ExtrudeParams.h gmshVertex.h ../Mesh/Mesh.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Vertex.h \
   ../Mesh/Simplex.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Face.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Edge.h ../Mesh/Vertex.h \
@@ -204,11 +199,10 @@ gmshEdge.o: gmshEdge.cpp gmshModel.h GModel.h GVertex.h GEntity.h Range.h \
   ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h \
   ../Mesh/Interpolation.h ../Mesh/Vertex.h ../Mesh/Mesh.h CAD.h Geo.h \
   ../Mesh/Create.h ../Mesh/Vertex.h ../Mesh/Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
-gmshFace.o: gmshFace.cpp gmshModel.h GModel.h GVertex.h GEntity.h Range.h \
-  SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
-  GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h \
-  MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+gmshFace.o: gmshFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
+  SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h GEdge.h \
+  SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h \
   gmshVertex.h ../Mesh/Mesh.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
@@ -219,35 +213,25 @@ gmshFace.o: gmshFace.cpp gmshModel.h GModel.h GVertex.h GEntity.h Range.h \
   ../Mesh/Interpolation.h ../Mesh/Vertex.h ../Mesh/Mesh.h CAD.h Geo.h \
   ../Mesh/Create.h ../Mesh/Vertex.h ../Mesh/Mesh.h ../Mesh/Utils.h \
   ../Mesh/Vertex.h ../Mesh/Mesh.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
-gmshRegion.o: gmshRegion.cpp gmshModel.h GModel.h GVertex.h GEntity.h \
-  Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h \
-  GPoint.h GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h \
-  ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ExtrudeParams.h GFace.h Pair.h GRegion.h \
-  ../Common/SmoothNormals.h gmshFace.h gmshVertex.h ../Mesh/Mesh.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Vertex.h ../Mesh/Element.h \
-  ../Mesh/Face.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Edge.h \
-  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Geo/ExtrudeParams.h \
-  ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
-  ../Mesh/Matrix.h gmshRegion.h Geo.h ../Mesh/Create.h ../Mesh/Vertex.h \
-  ../Mesh/Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
-fourierModel.o: fourierModel.cpp fourierModel.h GModel.h GVertex.h \
-  GEntity.h Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h \
-  MVertex.h GPoint.h GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h \
-  ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ExtrudeParams.h GFace.h Pair.h GRegion.h \
-  ../Common/SmoothNormals.h ../Common/Message.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
+gmshRegion.o: gmshRegion.cpp GModel.h GVertex.h GEntity.h Range.h \
+  SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
+  GEdge.h SVector3.h SPoint2.h MElement.h MEdge.h ../Common/Hash.h \
+  MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ExtrudeParams.h GFace.h Pair.h GRegion.h ../Common/SmoothNormals.h \
+  gmshFace.h gmshVertex.h ../Mesh/Mesh.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Face.h \
+  ../Mesh/Vertex.h ../Mesh/Element.h ../Mesh/Edge.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h \
+  gmshRegion.h Geo.h ../Mesh/Create.h ../Mesh/Vertex.h ../Mesh/Mesh.h
 SVector3.o: SVector3.cpp SVector3.h SPoint3.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
 SBoundingBox3d.o: SBoundingBox3d.cpp SBoundingBox3d.h SPoint3.h
-# 1 "/Users/geuzaine/.gmsh/Geo//"
+projectionFace.o: projectionFace.cpp projectionFace.h GFace.h GPoint.h \
+  GEntity.h Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h \
+  MElement.h MVertex.h MEdge.h SVector3.h ../Common/Hash.h MFace.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h SPoint2.h \
+  Pair.h ExtrudeParams.h
 ExtractContour.o: ExtractContour.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/Geo/fourierModel.h b/Geo/fourierFace.h
similarity index 92%
rename from Geo/fourierModel.h
rename to Geo/fourierFace.h
index 10b3e072f8..67db7b457d 100644
--- a/Geo/fourierModel.h
+++ b/Geo/fourierFace.h
@@ -5,12 +5,6 @@
 
 #if defined(HAVE_FOURIER_MODEL)
 
-class fourierModel : public GModel {
- public:
-  fourierModel(const std::string &name);
-  virtual ~fourierModel();
-};
-
 #include "GVertex.h"
 #include "GEdge.h"
 #include "GFace.h"
@@ -29,7 +23,8 @@ class fourierVertex : public GVertex {
   virtual double x() const { return _v->x(); }
   virtual double y() const { return _v->y(); }
   virtual double z() const { return _v->z(); }
-    virtual double prescribedMeshSizeAtVertex() const { return 0.1; }
+  virtual double prescribedMeshSizeAtVertex() const { return 0.1; }
+  ModelType getNativeType() const { return FourierModel; }
 };
 
 class fourierEdge : public GEdge {
@@ -51,6 +46,7 @@ class fourierEdge : public GEdge {
   virtual double parFromPoint(const SPoint3 &pt) const { throw; }
   virtual int minimumMeshSegments () const { throw; }
   virtual int minimumDrawSegments () const { throw; }
+  ModelType getNativeType() const { return FourierModel; }
 };
 
 class fourierFace : public GFace {
@@ -86,6 +82,7 @@ class fourierFace : public GFace {
   virtual bool periodic(int dim) const { return false; }
   virtual bool degenerate(int dim) const { return false; }
   virtual double period(int dir) const {throw;}
+  ModelType getNativeType() const { return FourierModel; }
   void * getNativePtr() const {throw;} 
   virtual bool surfPeriodic(int dim) const {throw;}
   virtual SPoint2 parFromPoint(const SPoint3 &) const;
diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp
index 7b705f18ca..01603e56c7 100644
--- a/Geo/gmshEdge.cpp
+++ b/Geo/gmshEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshEdge.cpp,v 1.16 2006-08-26 15:13:22 remacle Exp $
+// $Id: gmshEdge.cpp,v 1.17 2006-11-14 15:21:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,7 +19,6 @@
 // 
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
-#include "gmshModel.h"
 #include "gmshEdge.h"
 #include "Interpolation.h"
 #include "CAD.h"
diff --git a/Geo/gmshEdge.h b/Geo/gmshEdge.h
index c1c28fc308..10eb2ce711 100644
--- a/Geo/gmshEdge.h
+++ b/Geo/gmshEdge.h
@@ -21,7 +21,6 @@
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
 #include "GEdge.h"
-#include "gmshModel.h"
 #include "gmshVertex.h"
 #include "Mesh.h"
 #include "Range.h"
@@ -46,6 +45,7 @@ class gmshEdge : public GEdge {
   virtual int containsParam(double pt) const;
   virtual SVector3 firstDer(double par) const;
   virtual SPoint2 reparamOnFace(GFace * face, double epar, int dir) const { throw; }
+  ModelType getNativeType() const { return GmshModel; }
   void * getNativePtr() const { return c; }
   virtual double parFromPoint(const SPoint3 &pt) const;
   virtual int minimumMeshSegments () const;
diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp
index 6622a37dfa..a697670060 100644
--- a/Geo/gmshFace.cpp
+++ b/Geo/gmshFace.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshFace.cpp,v 1.18 2006-09-05 21:37:59 remacle Exp $
+// $Id: gmshFace.cpp,v 1.19 2006-11-14 15:21:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,7 +19,7 @@
 // 
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
-#include "gmshModel.h"
+#include "GModel.h"
 #include "gmshVertex.h"
 #include "gmshEdge.h"
 #include "gmshFace.h"
diff --git a/Geo/gmshFace.h b/Geo/gmshFace.h
index 3d8acef18e..861913a1ec 100644
--- a/Geo/gmshFace.h
+++ b/Geo/gmshFace.h
@@ -21,7 +21,6 @@
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
 #include "GFace.h"
-#include "gmshModel.h"
 #include "gmshVertex.h"
 #include "Mesh.h"
 #include "Range.h"
@@ -56,6 +55,7 @@ class gmshFace : public GFace {
   virtual bool periodic(int dim) const { return false; }
   virtual bool degenerate(int dim) const { return false; }
   virtual double period(int dir) const {throw;}
+  ModelType getNativeType() const { return GmshModel; }
   void * getNativePtr() const { return s; }
   virtual bool surfPeriodic(int dim) const {throw;}
   virtual SPoint2 parFromPoint(const SPoint3 &) const;
diff --git a/Geo/gmshModel.h b/Geo/gmshModel.h
deleted file mode 100644
index fab6d8992d..0000000000
--- a/Geo/gmshModel.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _GMSH_MODEL_H_
-#define _GMSH_MODEL_H_
-
-// Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA.
-// 
-// Please report all bugs and problems to <gmsh@geuz.org>.
-
-#include "GModel.h"
-
-class gmshModel : public GModel {
- public:
-  gmshModel() : GModel("empty") {}
-  virtual ~gmshModel(){};
-
-  // import data from the old Gmsh database ("THEM")
-  virtual void import();
-  virtual int writeGEO(const std::string &name);
-};
-
-#endif
diff --git a/Geo/gmshRegion.cpp b/Geo/gmshRegion.cpp
index 50c2af7b6c..fa5cc073a9 100644
--- a/Geo/gmshRegion.cpp
+++ b/Geo/gmshRegion.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshRegion.cpp,v 1.6 2006-08-15 06:26:53 geuzaine Exp $
+// $Id: gmshRegion.cpp,v 1.7 2006-11-14 15:21:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -19,7 +19,7 @@
 // 
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
-#include "gmshModel.h"
+#include "GModel.h"
 #include "gmshFace.h"
 #include "gmshRegion.h"
 #include "Geo.h"
diff --git a/Geo/gmshRegion.h b/Geo/gmshRegion.h
index e7a0be8ef7..58c5ce8084 100644
--- a/Geo/gmshRegion.h
+++ b/Geo/gmshRegion.h
@@ -21,7 +21,6 @@
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
 #include "Mesh.h"
-#include "gmshModel.h"
 #include "GRegion.h"
 
 class gmshRegion : public GRegion {
@@ -33,6 +32,7 @@ class gmshRegion : public GRegion {
   gmshRegion(GModel *m, int num);
   virtual ~gmshRegion() {}
   virtual GeomType geomType() const;
+  ModelType getNativeType() const { return GmshModel; }
   void * getNativePtr() const { return v; }
 };
 
diff --git a/Geo/gmshVertex.h b/Geo/gmshVertex.h
index baba17e41c..d3c8ebce45 100644
--- a/Geo/gmshVertex.h
+++ b/Geo/gmshVertex.h
@@ -21,7 +21,6 @@
 // Please report all bugs and problems to <gmsh@geuz.org>.
 
 #include "Mesh.h"
-#include "gmshModel.h"
 #include "GVertex.h"
 
 class gmshVertex : public GVertex {
@@ -60,6 +59,7 @@ class gmshVertex : public GVertex {
   {
     return v ? v->Pos.Z : mesh_vertices.size() ? mesh_vertices[0]->z() : 0.;
   }
+  ModelType getNativeType() const { return GmshModel; }
   void * getNativePtr() const { return v; }
   virtual double prescribedMeshSizeAtVertex() const { return v ? v->lc : 0.; }
 };
diff --git a/Graphics/Makefile b/Graphics/Makefile
index 6c89a68c07..63f76951d1 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.104 2006-11-04 00:17:08 geuzaine Exp $
+# $Id: Makefile,v 1.105 2006-11-14 15:21:03 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -69,7 +69,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Draw.o: Draw.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 ../Common/GmshUI.h \
@@ -93,7 +92,6 @@ Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.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
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Mesh.o: Mesh.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 ../Common/GmshUI.h ../Geo/GModel.h \
@@ -114,7 +112,6 @@ Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Common/GmshMatrix.h ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h \
   ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \
   ../Common/OS.h gl2ps.h tc.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Geom.o: Geom.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 ../Common/GmshUI.h Draw.h \
@@ -133,7 +130,6 @@ Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.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
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Post.o: Post.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 ../Common/GmshUI.h \
@@ -141,7 +137,6 @@ Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
   gl2ps.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 PostElement.o: PostElement.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 \
@@ -149,7 +144,6 @@ PostElement.o: PostElement.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Iso.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 SelectBuffer.o: SelectBuffer.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 +166,12 @@ SelectBuffer.o: SelectBuffer.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Geo/SBoundingBox3d.h ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h \
   ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \
   ../Common/OS.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Iso.o: Iso.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 ../Common/GmshUI.h Draw.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Entity.o: Entity.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 \
@@ -187,14 +179,12 @@ Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
   ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 ReadImg.o: ReadImg.cpp ReadImg.h ../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 \
   ../Common/GmshUI.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Scale.o: Scale.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 \
@@ -202,7 +192,6 @@ Scale.o: Scale.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
   ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 Graph2D.o: Graph2D.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 \
@@ -210,9 +199,7 @@ Graph2D.o: Graph2D.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
   ../Common/GmshMatrix.h gl2ps.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 gl2ps.o: gl2ps.cpp gl2ps.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 gl2gif.o: gl2gif.cpp gl2gif.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -220,7 +207,6 @@ gl2gif.o: gl2gif.cpp gl2gif.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 gl2jpeg.o: gl2jpeg.cpp gl2jpeg.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -228,7 +214,6 @@ gl2jpeg.o: gl2jpeg.cpp gl2jpeg.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 gl2png.o: gl2png.cpp gl2png.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -236,7 +221,6 @@ gl2png.o: gl2png.cpp gl2png.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 gl2ppm.o: gl2ppm.cpp gl2ppm.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -244,7 +228,6 @@ gl2ppm.o: gl2ppm.cpp gl2ppm.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 gl2yuv.o: gl2yuv.cpp gl2yuv.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -252,5 +235,4 @@ gl2yuv.o: gl2yuv.cpp gl2yuv.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Graphics//"
 tc.o: tc.cpp tc.h
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index aac7daebdd..d8fa48c707 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.187 2006-11-02 17:24:54 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.188 2006-11-14 15:21:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -390,6 +390,26 @@ static void addEdgesInArrays(GEntity *e)
   }
 }
 
+static void addFacesInArrays(GEntity *e)
+{
+  MRep *m = e->meshRep;
+  for(MRep::friter it = m->firstFaceRep(); it != m->lastFaceRep(); ++it){
+    MFace f = it->first;
+    MElement *ele = it->second;
+    SVector3 n = f.normal();
+    unsigned int color = getColorByElement(ele);
+    for(int i = 0; i < f.getNumVertices(); i++){
+      MVertex *v = f.getVertex(i);
+      if(CTX.mesh.smooth_normals)
+	e->model()->normals->get(v->x(), v->y(), v->z(), n[0], n[1], n[2]);
+      if(f.getNumVertices() == 3)
+	m->va_triangles->add(v->x(), v->y(), v->z(), n[0], n[1], n[2], color, ele);
+      else if(f.getNumVertices() == 4)
+	m->va_quads->add(v->x(), v->y(), v->z(), n[0], n[1], n[2], color, ele);
+    }
+  }
+}
+
 template<class T>
 static void addElementsInArrays(GEntity *e, std::vector<T*> &elements)
 {
@@ -741,7 +761,21 @@ class initMeshGRegion {
     // don't draw everything per element
     if(CTX.pick_elements) useEdges = false;
 
-    if(useEdges){
+    bool useSkin = CTX.mesh.volumes_faces ? true : false;
+    if(CTX.mesh.explode != 1. || !m->allElementsVisible)
+      useSkin = false;
+
+    // TODO
+    useSkin = false;
+    
+    if(useSkin){ 
+      Msg(DEBUG, "Using boundary faces to draw volume %d", r->tag());
+      m->generateBoundaryFaceRep(); 
+      m->va_triangles = new VertexArray(3, m->getNumFaceRep());
+      m->va_quads = new VertexArray(4, m->getNumFaceRep());
+      addFacesInArrays(r);
+    }
+    else if(useEdges){
       Msg(DEBUG, "Using edges to draw volume %d", r->tag());
       m->generateEdgeRep();
       m->va_lines = new VertexArray(2, m->getNumEdgeRep());
diff --git a/Mesh/Makefile b/Mesh/Makefile
index 21ff5b5268..a334e43011 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.135 2006-11-04 00:17:08 geuzaine Exp $
+# $Id: Makefile,v 1.136 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -110,14 +110,12 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 1D_Mesh.o: 1D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Geo/Geo.h Mesh.h ../Common/GmshDefines.h \
   Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
   Metric.h Matrix.h Utils.h ../Common/Context.h Interpolation.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Mesh.o: 2D_Mesh.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 \
@@ -129,14 +127,12 @@ depend:
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h Utils.h Vertex.h \
   Create.h 2D_Mesh.h ../Common/Context.h Interpolation.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Transfinite.o: 2D_Transfinite.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 \
   ../Geo/Geo.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   ../Numeric/Numeric.h Interpolation.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Elliptic.o: 2D_Elliptic.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 \
@@ -147,14 +143,12 @@ depend:
   ../Mesh/Vertex.h ../Mesh/Simplex.h ../Geo/ExtrudeParams.h \
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_BGMesh.o: 2D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Recombine.o: 2D_Recombine.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 \
@@ -162,62 +156,53 @@ depend:
   Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
   Metric.h Matrix.h Interpolation.h Utils.h 2D_Mesh.h Create.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_InitMesh.o: 2D_InitMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Bowyer.o: 2D_Bowyer.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Bricks.o: 2D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_DivAndConq.o: 2D_DivAndConq.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Util.o: 2D_Util.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Links.o: 2D_Links.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   2D_Mesh.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Tree.o: 2D_Tree.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 \
   Mesh.h ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h \
   Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h 2D_Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Cylindrical.o: 2D_Cylindrical.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Parametric.o: 2D_Parametric.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 \
@@ -229,7 +214,6 @@ depend:
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Interpolation.h Vertex.h Mesh.h \
   2D_Mesh.h Create.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Mesh_Aniso.o: 2D_Mesh_Aniso.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 \
@@ -241,28 +225,24 @@ depend:
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h Interpolation.h Vertex.h \
   Create.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 2D_Mesh_Triangle.o: 2D_Mesh_Triangle.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 Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   ../Numeric/Numeric.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Mesh.o: 3D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Geo/Geo.h Mesh.h ../Common/GmshDefines.h \
   Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
   Metric.h Matrix.h 3D_Mesh.h Create.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Transfinite.o: 3D_Transfinite.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 \
   Mesh.h ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h \
   Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h Interpolation.h \
   Create.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_BGMesh.o: 3D_BGMesh.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 \
@@ -272,7 +252,6 @@ depend:
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
   ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Extrude.o: 3D_Extrude.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 \
@@ -284,7 +263,6 @@ depend:
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h ../Common/Context.h \
   Create.h Vertex.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Extrude_Old.o: 3D_Extrude_Old.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 \
@@ -296,34 +274,29 @@ depend:
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h ../Common/Context.h \
   Create.h Vertex.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Coherence.o: 3D_Coherence.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Geo/Geo.h Mesh.h ../Common/GmshDefines.h \
   Vertex.h Element.h Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h \
   Metric.h Matrix.h 3D_Mesh.h Create.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Divide.o: 3D_Divide.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Mesh_Netgen.o: 3D_Mesh_Netgen.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 \
   ../Geo/Geo.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   Create.h ../Numeric/Numeric.h ../Common/Context.h ../Common/OS.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 3D_Mesh_Tetgen.o: 3D_Mesh_Tetgen.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 \
   Mesh.h ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h \
   Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h Create.h \
   ../Numeric/Numeric.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 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 \
@@ -335,7 +308,6 @@ BDS.o: BDS.cpp ../Numeric/Numeric.h ../Common/GmshMatrix.h BDS.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
   ../Common/GmshMatrix.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Create.o: Create.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 \
@@ -347,7 +319,6 @@ Create.o: Create.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h Utils.h Vertex.h \
   ../Common/Context.h Create.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Generator.o: Generator.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 \
@@ -368,18 +339,15 @@ Generator.o: Generator.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
   ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h \
   ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 DiscreteSurface.o: DiscreteSurface.cpp Mesh.h ../Common/GmshDefines.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 SwapEdge.o: SwapEdge.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   SwapPatterns.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Utils.o: Utils.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 \
@@ -391,7 +359,6 @@ Utils.o: Utils.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h Interpolation.h Vertex.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Metric.o: Metric.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 \
@@ -403,7 +370,6 @@ Metric.o: Metric.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Mesh.h Matrix.h Interpolation.h \
   Vertex.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 meshGEdge.o: meshGEdge.cpp meshGEdge.h ../Geo/GEdge.h ../Geo/GEntity.h \
   ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/GVertex.h \
@@ -419,7 +385,6 @@ meshGEdge.o: meshGEdge.cpp meshGEdge.h ../Geo/GEdge.h ../Geo/GEntity.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   Utils.h Vertex.h Mesh.h Element.h Simplex.h Face.h Edge.h Metric.h \
   Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 meshGFace.o: meshGFace.cpp meshGFace.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 \
@@ -436,7 +401,6 @@ meshGFace.o: meshGFace.cpp meshGFace.h ../Geo/GVertex.h ../Geo/GEntity.h \
   ../Common/Message.h BDS.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 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 \
@@ -449,7 +413,6 @@ meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \
   ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/MElement.h \
   ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
   ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
@@ -459,7 +422,6 @@ meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/MElement.h \
   ../Geo/ExtrudeParams.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 meshGRegion.o: meshGRegion.cpp meshGRegion.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 \
@@ -477,7 +439,6 @@ meshGRegion.o: meshGRegion.cpp meshGRegion.h ../Geo/GModel.h \
   ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
   ../Common/GmshMatrix.h ../Common/Message.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Nurbs.o: Nurbs.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 \
@@ -485,7 +446,6 @@ Nurbs.o: Nurbs.cpp ../Common/Gmsh.h ../Common/Message.h \
   Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h ../Geo/Geo.h \
   ../Geo/GeoUtils.h ../Mesh/Mesh.h Create.h ../Geo/CAD.h ../Mesh/Vertex.h \
   ../Geo/ExtrudeParams.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Interpolation.o: Interpolation.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 \
@@ -493,7 +453,6 @@ Interpolation.o: Interpolation.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Common/GmshDefines.h Element.h Simplex.h Face.h Edge.h \
   ../Geo/ExtrudeParams.h Metric.h Matrix.h ../Geo/CAD.h ../Mesh/Mesh.h \
   ../Mesh/Vertex.h ../Geo/ExtrudeParams.h Utils.h Interpolation.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 SecondOrder.o: SecondOrder.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
@@ -510,49 +469,41 @@ SecondOrder.o: SecondOrder.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Common/SmoothNormals.h ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h \
   ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \
   ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 PartitionMesh.o: PartitionMesh.cpp Mesh.h ../Common/GmshDefines.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   PartitionMesh.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Smoothing.o: Smoothing.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Mesh.h ../Common/GmshDefines.h Vertex.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 CrossData.o: CrossData.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 \
   Mesh.h ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h \
   Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Vertex.o: Vertex.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h Vertex.h Mesh.h ../Common/GmshDefines.h Element.h \
   Simplex.h Face.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Edge.o: Edge.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Mesh.h \
   ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h Edge.h \
   ../Geo/ExtrudeParams.h Metric.h Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Face.o: Face.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Mesh.h \
   ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h Edge.h \
   ../Geo/ExtrudeParams.h Metric.h Matrix.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Element.o: Element.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 \
   Mesh.h ../Common/GmshDefines.h Vertex.h Element.h Simplex.h Face.h \
   Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h ../Numeric/Numeric.h
-# 1 "/Users/geuzaine/.gmsh/Mesh//"
 Simplex.o: Simplex.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/Numeric/Makefile b/Numeric/Makefile
index 4752d4457b..bf7728a9b4 100644
--- a/Numeric/Makefile
+++ b/Numeric/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.30 2006-09-14 15:48:35 geuzaine Exp $
+# $Id: Makefile,v 1.31 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -54,21 +54,16 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Numeric//"
 Numeric.o: Numeric.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   Numeric.h
-# 1 "/Users/geuzaine/.gmsh/Numeric//"
 EigSolve.o: EigSolve.cpp
-# 1 "/Users/geuzaine/.gmsh/Numeric//"
 predicates.o: predicates.cpp
-# 1 "/Users/geuzaine/.gmsh/Numeric//"
 gsl_newt.o: gsl_newt.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   Numeric.h
-# 1 "/Users/geuzaine/.gmsh/Numeric//"
 gsl_brent.o: gsl_brent.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/Parallel/Makefile b/Parallel/Makefile
index 5a9e35ef82..c6b66f9706 100644
--- a/Parallel/Makefile
+++ b/Parallel/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.33 2006-09-14 15:48:35 geuzaine Exp $
+# $Id: Makefile,v 1.34 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -50,7 +50,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Parallel//"
 ParUtil.o: ParUtil.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
diff --git a/Parser/Makefile b/Parser/Makefile
index c141024d31..4b6dceff93 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.104 2006-11-04 00:17:08 geuzaine Exp $
+# $Id: Makefile,v 1.105 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -76,7 +76,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Parser//"
 Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
@@ -95,7 +94,6 @@ Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
   ../Graphics/Draw.h ../Mesh/Create.h ../Mesh/Vertex.h ../Mesh/Mesh.h \
   ../Common/Colors.h ../Common/Options.h Parser.h OpenFile.h \
   ../Common/CommandLine.h FunctionManager.h ../Common/OS.h CreateFile.h
-# 1 "/Users/geuzaine/.gmsh/Parser//"
 Gmsh.yy.o: Gmsh.yy.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 \
@@ -106,24 +104,22 @@ Gmsh.yy.o: Gmsh.yy.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Vertex.h ../Mesh/Simplex.h ../Geo/ExtrudeParams.h \
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Geo/ExtrudeParams.h Gmsh.tab.hpp
-# 1 "/Users/geuzaine/.gmsh/Parser//"
 OpenFile.o: OpenFile.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 \
-  ../Geo/gmshModel.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/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 ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/ExtrudeParams.h ../Geo/GFace.h \
-  ../Geo/GPoint.h ../Geo/GEntity.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/SmoothNormals.h ../Geo/fourierModel.h \
-  ../Geo/GModel.h Parser.h OpenFile.h ../Common/CommandLine.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/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 ../Numeric/Numeric.h ../Common/Context.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.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/SmoothNormals.h Parser.h OpenFile.h ../Common/CommandLine.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Common/AdaptiveViews.h \
   ../Common/GmshMatrix.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
@@ -135,7 +131,6 @@ OpenFile.o: OpenFile.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Graphics/Draw.h ../Graphics/SelectBuffer.h ../Fltk/GUI.h \
   ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
   ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h
-# 1 "/Users/geuzaine/.gmsh/Parser//"
 CreateFile.o: CreateFile.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 \
@@ -160,5 +155,4 @@ CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Graphics/gl2png.h ../Graphics/PixelBuffer.h ../Graphics/gl2ppm.h \
   ../Graphics/PixelBuffer.h ../Graphics/gl2yuv.h \
   ../Graphics/PixelBuffer.h
-# 1 "/Users/geuzaine/.gmsh/Parser//"
 FunctionManager.o: FunctionManager.cpp FunctionManager.h
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index ec7a05f835..e0f4a90c75 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.123 2006-09-07 05:04:38 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.124 2006-11-14 15:21:04 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -24,8 +24,7 @@
 #endif
 
 #include "Gmsh.h"
-#include "gmshModel.h"
-#include "fourierModel.h"
+#include "GModel.h"
 #include "Numeric.h"
 #include "Context.h"
 #include "Parser.h"
@@ -246,6 +245,15 @@ void SetProjectName(char *name)
 
 int MergeProblem(char *name, int warn_if_missing)
 {
+#if defined(HAVE_FOURIER_MODEL)
+  if(!strcmp(name, "falcon")){
+    GMODEL->readFourier(name);
+    SetBoundingBox();
+    CTX.mesh.changed = ENT_ALL;
+    return 1;
+  }
+#endif
+
   // added 'b' for pure Windows programs, since some of these files
   // contain binary data
   FILE *fp = fopen(name, "rb");
@@ -333,12 +341,10 @@ int MergeProblem(char *name, int warn_if_missing)
       status = ReadView(name);
     }
     else {
-      status = ParseFile(name, 1);
+      status = GMODEL->readGEO(name);
     }
   }
 
-  GMODEL->import();
-
   SetBoundingBox();
 
   CTX.mesh.changed = ENT_ALL;
@@ -357,14 +363,6 @@ void OpenProblem(char *name)
 
   GMODEL->destroy();
 
-#if defined(HAVE_FOURIER_MODEL)
-  if(!strcmp(name, "falcon")){
-    delete GMODEL;
-    GMODEL = new fourierModel(name);
-    SetBoundingBox();
-  }
-#endif
-
   Init_Mesh();
 
   // Initialize pseudo random mesh generator to the same seed
diff --git a/Plugin/Makefile b/Plugin/Makefile
index 37c8c5fca6..12f846d32e 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.111 2006-11-04 00:17:08 geuzaine Exp $
+# $Id: Makefile,v 1.112 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -69,7 +69,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
@@ -82,7 +81,6 @@ Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   Eigenvectors.h Eigenvalues.h Lambda2.h Evaluate.h \
   ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
   Probe.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
@@ -90,33 +88,28 @@ Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \
   DecomposeInSimplex.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../Graphics/Iso.h \
   ../Common/Context.h ../DataStr/Malloc.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 CutPlane.o: CutPlane.cpp CutPlane.h Levelset.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
   ../Common/GmshUI.h ../Graphics/Draw.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 CutSphere.o: CutSphere.cpp CutSphere.h Levelset.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
   ../Common/GmshUI.h ../Graphics/Draw.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 CutMap.o: CutMap.cpp CutMap.h Levelset.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Smooth.o: Smooth.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Smooth.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 CutParametric.o: CutParametric.cpp ../Common/OctreePost.h \
   ../Common/Octree.h ../Common/OctreeInternals.h CutParametric.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
@@ -124,46 +117,39 @@ CutParametric.o: CutParametric.cpp ../Common/OctreePost.h \
   ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
   ../Common/GmshUI.h ../Graphics/Draw.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Lambda2.o: Lambda2.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Lambda2.h \
   ../Common/Context.h ../Common/ShapeFunctions.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Eigenvectors.o: Eigenvectors.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   Eigenvectors.h ../Common/Context.h ../DataStr/Malloc.h \
   ../Numeric/EigSolve.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Eigenvalues.o: Eigenvalues.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   Eigenvalues.h ../Common/Context.h ../DataStr/Malloc.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 StreamLines.o: StreamLines.cpp ../Common/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h StreamLines.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 CutGrid.o: CutGrid.cpp ../Common/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h CutGrid.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Transform.o: Transform.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   Transform.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Triangulate.o: Triangulate.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 \
@@ -178,32 +164,27 @@ Triangulate.o: Triangulate.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../Mesh/Simplex.h ../Mesh/Mesh.h ../Mesh/Matrix.h ../Mesh/Utils.h \
   ../Mesh/Vertex.h ../Mesh/Mesh.h ../Mesh/Create.h ../Mesh/Vertex.h \
   ../Mesh/Mesh.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Warp.o: Warp.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Warp.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Skin.o: Skin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Skin.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \
   ../DataStr/Malloc.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Extract.o: Extract.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Extract.h \
   ../Common/Context.h ../DataStr/Malloc.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 ExtractElements.o: ExtractElements.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ExtractElements.h ../Common/Context.h ../DataStr/Malloc.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 ExtractEdges.o: ExtractEdges.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
@@ -216,45 +197,38 @@ ExtractEdges.o: ExtractEdges.cpp Plugin.h ../Common/Options.h \
   ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Common/Hash.h \
   ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint2.h \
   ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 DecomposeInSimplex.o: DecomposeInSimplex.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   DecomposeInSimplex.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Common/Context.h ../DataStr/Malloc.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Evaluate.o: Evaluate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Evaluate.h \
   ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Integrate.o: Integrate.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   Integrate.h ../Common/Context.h ../Common/ShapeFunctions.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Gradient.o: Gradient.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Gradient.h \
   ../Common/Context.h ../Common/ShapeFunctions.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Curl.o: Curl.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Curl.h \
   ../Common/Context.h ../Common/ShapeFunctions.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Divergence.o: Divergence.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   Divergence.h ../Common/Context.h ../Common/ShapeFunctions.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Annotate.o: Annotate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
@@ -268,26 +242,22 @@ Annotate.o: Annotate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Mesh/Metric.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Mesh.h \
   ../Mesh/Matrix.h ../Fltk/Colorbar_Window.h ../Fltk/Popup_Button.h \
   ../Fltk/SpherePosition_Widget.h ../Graphics/Draw.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Remove.o: Remove.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothNormals.h ../Numeric/Numeric.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Remove.h \
   ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 Probe.o: Probe.cpp Probe.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
   ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 HarmonicToTime.o: HarmonicToTime.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   HarmonicToTime.h ../Common/Context.h
-# 1 "/Users/geuzaine/.gmsh/Plugin//"
 ModulusPhase.o: ModulusPhase.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothNormals.h \
diff --git a/contrib/ANN/Makefile b/contrib/ANN/Makefile
index ee6c75a4cb..2bdcf97494 100644
--- a/contrib/ANN/Makefile
+++ b/contrib/ANN/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.12 2006-10-09 13:26:28 geuzaine Exp $
+# $Id: Makefile,v 1.13 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -63,52 +63,38 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 ANN.o: src/ANN.cpp include/ANN/ANNx.h include/ANN/ANN.h \
   include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 bd_fix_rad_search.o: src/bd_fix_rad_search.cpp src/bd_tree.h \
   include/ANN/ANNx.h include/ANN/ANN.h src/kd_tree.h \
   src/kd_fix_rad_search.h src/kd_util.h src/pr_queue_k.h \
   include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 bd_pr_search.o: src/bd_pr_search.cpp src/bd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h src/kd_tree.h src/kd_pr_search.h src/kd_util.h \
   src/pr_queue.h include/ANN/ANNperf.h src/pr_queue_k.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 bd_search.o: src/bd_search.cpp src/bd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h src/kd_tree.h src/kd_search.h src/kd_util.h \
   src/pr_queue_k.h include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 bd_tree.o: src/bd_tree.cpp src/bd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h src/kd_tree.h src/kd_util.h src/kd_split.h \
   include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 brute.o: src/brute.cpp include/ANN/ANNx.h include/ANN/ANN.h \
   src/pr_queue_k.h include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_dump.o: src/kd_dump.cpp src/kd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h src/bd_tree.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_fix_rad_search.o: src/kd_fix_rad_search.cpp src/kd_fix_rad_search.h \
   src/kd_tree.h include/ANN/ANNx.h include/ANN/ANN.h src/kd_util.h \
   src/pr_queue_k.h include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_pr_search.o: src/kd_pr_search.cpp src/kd_pr_search.h src/kd_tree.h \
   include/ANN/ANNx.h include/ANN/ANN.h src/kd_util.h src/pr_queue.h \
   include/ANN/ANNperf.h src/pr_queue_k.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_search.o: src/kd_search.cpp src/kd_search.h src/kd_tree.h \
   include/ANN/ANNx.h include/ANN/ANN.h src/kd_util.h src/pr_queue_k.h \
   include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_split.o: src/kd_split.cpp src/kd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h src/kd_util.h src/kd_split.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_tree.o: src/kd_tree.cpp src/kd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h src/kd_split.h src/kd_util.h include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 kd_util.o: src/kd_util.cpp src/kd_util.h src/kd_tree.h include/ANN/ANNx.h \
   include/ANN/ANN.h include/ANN/ANNperf.h
-# 1 "/Users/geuzaine/.gmsh/contrib/ANN//"
 perf.o: src/perf.cpp include/ANN/ANN.h include/ANN/ANNperf.h
diff --git a/contrib/MathEval/Makefile b/contrib/MathEval/Makefile
index 00452256bc..10eef80709 100644
--- a/contrib/MathEval/Makefile
+++ b/contrib/MathEval/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.11 2006-09-14 15:48:35 geuzaine Exp $
+# $Id: Makefile,v 1.12 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -61,19 +61,13 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/contrib/MathEval//"
 matheval.o: matheval.cpp common.h ../../DataStr/Malloc.h matheval.h \
   node.h symbol_table.h
-# 1 "/Users/geuzaine/.gmsh/contrib/MathEval//"
 node.o: node.cpp common.h ../../DataStr/Malloc.h node.h symbol_table.h
-# 1 "/Users/geuzaine/.gmsh/contrib/MathEval//"
 scanner.yy.o: scanner.yy.cpp common.h ../../DataStr/Malloc.h node.h \
   symbol_table.h parser.tab.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/MathEval//"
 parser.tab.o: parser.tab.cpp common.h ../../DataStr/Malloc.h node.h \
   symbol_table.h
-# 1 "/Users/geuzaine/.gmsh/contrib/MathEval//"
 symbol_table.o: symbol_table.cpp common.h ../../DataStr/Malloc.h \
   symbol_table.h xmath.h
-# 1 "/Users/geuzaine/.gmsh/contrib/MathEval//"
 xmath.o: xmath.cpp xmath.h
diff --git a/contrib/Metis/Makefile b/contrib/Metis/Makefile
index 84b54fb929..e4ee624cac 100644
--- a/contrib/Metis/Makefile
+++ b/contrib/Metis/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.11 2006-09-14 15:48:35 geuzaine Exp $
+# $Id: Makefile,v 1.12 2006-11-14 15:21:04 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -101,117 +101,65 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 balance.o: balance.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 fm.o: fm.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 kwayfm.o: kwayfm.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mcoarsen.o: mcoarsen.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 minitpart2.o: minitpart2.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mpmetis.o: mpmetis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 pmetis.o: pmetis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 subdomains.o: subdomains.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 bucketsort.o: bucketsort.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 fortran.o: fortran.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 kwayrefine.o: kwayrefine.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 memory.o: memory.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 minitpart.o: minitpart.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mrefine2.o: mrefine2.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 pqueue.o: pqueue.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 timing.o: timing.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 ccgraph.o: ccgraph.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 frename.o: frename.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 kwayvolfm.o: kwayvolfm.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mesh.o: mesh.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mkmetis.o: mkmetis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mrefine.o: mrefine.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 refine.o: refine.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 util.o: util.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 coarsen.o: coarsen.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 graph.o: graph.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 kwayvolrefine.o: kwayvolrefine.c metis.h defs.h struct.h macros.h \
   rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 meshpart.o: meshpart.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mkwayfmh.o: mkwayfmh.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mutil.o: mutil.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 separator.o: separator.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 compress.o: compress.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 initpart.o: initpart.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 match.o: match.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mfm2.o: mfm2.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mkwayrefine.o: mkwayrefine.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 myqsort.o: myqsort.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 sfm.o: sfm.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 debug.o: debug.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 kmetis.o: kmetis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mbalance2.o: mbalance2.c metis.h defs.h struct.h macros.h rename.h \
   proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mfm.o: mfm.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mmatch.o: mmatch.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 ometis.o: ometis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 srefine.o: srefine.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 estmem.o: estmem.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 kvmetis.o: kvmetis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mbalance.o: mbalance.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mincover.o: mincover.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 mmd.o: mmd.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 parmetis.o: parmetis.c metis.h defs.h struct.h macros.h rename.h proto.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Metis//"
 stat.o: stat.c metis.h defs.h struct.h macros.h rename.h proto.h
diff --git a/contrib/Netgen/Makefile b/contrib/Netgen/Makefile
index 267e978c8e..b5395d8313 100644
--- a/contrib/Netgen/Makefile
+++ b/contrib/Netgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.12 2006-09-14 15:48:35 geuzaine Exp $
+# $Id: Makefile,v 1.13 2006-11-14 15:21:05 geuzaine Exp $
 #
 # Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 #
@@ -148,7 +148,6 @@ depend:
 	rm -f Makefile.new
 
 # DO NOT DELETE THIS LINE
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 linopt.o: libsrc/opti/linopt.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -169,7 +168,6 @@ linopt.o: libsrc/opti/linopt.cpp libsrc/include/mystdlib.h \
   libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 bfgs.o: libsrc/opti/bfgs.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -190,7 +188,6 @@ bfgs.o: libsrc/opti/bfgs.cpp libsrc/include/mystdlib.h \
   libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 linsearch.o: libsrc/opti/linsearch.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -211,7 +208,6 @@ linsearch.o: libsrc/opti/linsearch.cpp libsrc/include/mystdlib.h \
   libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 global.o: libsrc/meshing/global.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -254,7 +250,6 @@ global.o: libsrc/meshing/global.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 bisect.o: libsrc/meshing/bisect.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -297,7 +292,6 @@ bisect.o: libsrc/meshing/bisect.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshtool.o: libsrc/meshing/meshtool.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -357,7 +351,6 @@ meshtool.o: libsrc/meshing/meshtool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 refine.o: libsrc/meshing/refine.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -400,7 +393,6 @@ refine.o: libsrc/meshing/refine.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 ruler3.o: libsrc/meshing/ruler3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -443,7 +435,6 @@ ruler3.o: libsrc/meshing/ruler3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 improve3.o: libsrc/meshing/improve3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -486,7 +477,6 @@ improve3.o: libsrc/meshing/improve3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -529,7 +519,6 @@ smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 adfront3.o: libsrc/meshing/adfront3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -572,15 +561,10 @@ adfront3.o: libsrc/meshing/adfront3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 tetrarls.o: libsrc/meshing/tetrarls.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 prism2rls.o: libsrc/meshing/prism2rls.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 pyramidrls.o: libsrc/meshing/pyramidrls.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 pyramid2rls.o: libsrc/meshing/pyramid2rls.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 netrule3.o: libsrc/meshing/netrule3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -623,7 +607,6 @@ netrule3.o: libsrc/meshing/netrule3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 ruler2.o: libsrc/meshing/ruler2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -666,7 +649,6 @@ ruler2.o: libsrc/meshing/ruler2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshclass.o: libsrc/meshing/meshclass.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -709,7 +691,6 @@ meshclass.o: libsrc/meshing/meshclass.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 improve2.o: libsrc/meshing/improve2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -752,7 +733,6 @@ improve2.o: libsrc/meshing/improve2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -795,7 +775,6 @@ smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 adfront2.o: libsrc/meshing/adfront2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -838,7 +817,6 @@ adfront2.o: libsrc/meshing/adfront2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 netrule2.o: libsrc/meshing/netrule2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -881,9 +859,7 @@ netrule2.o: libsrc/meshing/netrule2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 triarls.o: libsrc/meshing/triarls.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 geomsearch.o: libsrc/meshing/geomsearch.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -926,7 +902,6 @@ geomsearch.o: libsrc/meshing/geomsearch.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 secondorder.o: libsrc/meshing/secondorder.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -969,7 +944,6 @@ secondorder.o: libsrc/meshing/secondorder.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshtype.o: libsrc/meshing/meshtype.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1012,7 +986,6 @@ meshtype.o: libsrc/meshing/meshtype.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 parser3.o: libsrc/meshing/parser3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1055,7 +1028,6 @@ parser3.o: libsrc/meshing/parser3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshing2.o: libsrc/meshing/meshing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1098,9 +1070,7 @@ meshing2.o: libsrc/meshing/meshing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 quadrls.o: libsrc/meshing/quadrls.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 specials.o: libsrc/meshing/specials.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1143,7 +1113,6 @@ specials.o: libsrc/meshing/specials.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 parser2.o: libsrc/meshing/parser2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1186,7 +1155,6 @@ parser2.o: libsrc/meshing/parser2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshing3.o: libsrc/meshing/meshing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1229,7 +1197,6 @@ meshing3.o: libsrc/meshing/meshing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshfunc.o: libsrc/meshing/meshfunc.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1272,7 +1239,6 @@ meshfunc.o: libsrc/meshing/meshfunc.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 localh.o: libsrc/meshing/localh.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1315,7 +1281,6 @@ localh.o: libsrc/meshing/localh.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 improve2gen.o: libsrc/meshing/improve2gen.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1358,7 +1323,6 @@ improve2gen.o: libsrc/meshing/improve2gen.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 delaunay.o: libsrc/meshing/delaunay.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1401,7 +1365,6 @@ delaunay.o: libsrc/meshing/delaunay.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 boundarylayer.o: libsrc/meshing/boundarylayer.cpp \
   libsrc/include/mystdlib.h libsrc/meshing/meshing.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -1444,7 +1407,6 @@ boundarylayer.o: libsrc/meshing/boundarylayer.cpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 msghandler.o: libsrc/meshing/msghandler.cpp libsrc/include/meshing.hpp \
   libsrc/include/../meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
@@ -1499,7 +1461,6 @@ msghandler.o: libsrc/meshing/msghandler.cpp libsrc/include/meshing.hpp \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshfunc2d.o: libsrc/meshing/meshfunc2d.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1542,7 +1503,6 @@ meshfunc2d.o: libsrc/meshing/meshfunc2d.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 topology.o: libsrc/meshing/topology.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1585,7 +1545,6 @@ topology.o: libsrc/meshing/topology.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 clusters.o: libsrc/meshing/clusters.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1628,7 +1587,6 @@ clusters.o: libsrc/meshing/clusters.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 curvedelems.o: libsrc/meshing/curvedelems.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1671,7 +1629,6 @@ curvedelems.o: libsrc/meshing/curvedelems.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 curvedelems2.o: libsrc/meshing/curvedelems2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1714,7 +1671,6 @@ curvedelems2.o: libsrc/meshing/curvedelems2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 hprefinement.o: libsrc/meshing/hprefinement.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1759,7 +1715,6 @@ hprefinement.o: libsrc/meshing/hprefinement.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/specials.hpp libsrc/meshing/hpref_trig.hpp \
   libsrc/meshing/hpref_quad.hpp libsrc/meshing/hpref_tet.hpp \
   libsrc/meshing/hpref_prism.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1837,7 +1792,6 @@ nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp libsrc/interface/nglib.h
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 geomtest3d.o: libsrc/gprim/geomtest3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1866,7 +1820,6 @@ geomtest3d.o: libsrc/gprim/geomtest3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 geom2d.o: libsrc/gprim/geom2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1892,7 +1845,6 @@ geom2d.o: libsrc/gprim/geom2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 geom3d.o: libsrc/gprim/geom3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1918,7 +1870,6 @@ geom3d.o: libsrc/gprim/geom3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 adtree.o: libsrc/gprim/adtree.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1944,7 +1895,6 @@ adtree.o: libsrc/gprim/adtree.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 transform3d.o: libsrc/gprim/transform3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1973,7 +1923,6 @@ transform3d.o: libsrc/gprim/transform3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 geomfuncs.o: libsrc/gprim/geomfuncs.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -1999,7 +1948,6 @@ geomfuncs.o: libsrc/gprim/geomfuncs.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 polynomial.o: libsrc/linalg/polynomial.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2021,7 +1969,6 @@ polynomial.o: libsrc/linalg/polynomial.cpp libsrc/include/mystdlib.h \
   libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 densemat.o: libsrc/linalg/densemat.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2043,9 +1990,7 @@ densemat.o: libsrc/linalg/densemat.cpp libsrc/include/mystdlib.h \
   libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 vector.o: libsrc/linalg/vector.cpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 algprim.o: libsrc/csg/algprim.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2114,7 +2059,6 @@ algprim.o: libsrc/csg/algprim.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 brick.o: libsrc/csg/brick.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2183,7 +2127,6 @@ brick.o: libsrc/csg/brick.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 manifold.o: libsrc/csg/manifold.cpp libsrc/include/csg.hpp \
   libsrc/include/../csg/csg.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
@@ -2251,7 +2194,6 @@ manifold.o: libsrc/csg/manifold.cpp libsrc/include/csg.hpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 bspline2d.o: libsrc/csg/bspline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2319,7 +2261,6 @@ bspline2d.o: libsrc/csg/bspline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshsurf.o: libsrc/csg/meshsurf.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2387,7 +2328,6 @@ meshsurf.o: libsrc/csg/meshsurf.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 csgeom.o: libsrc/csg/csgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -2455,7 +2395,6 @@ csgeom.o: libsrc/csg/csgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 polyhedra.o: libsrc/csg/polyhedra.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2524,7 +2463,6 @@ polyhedra.o: libsrc/csg/polyhedra.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 curve2d.o: libsrc/csg/curve2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -2592,7 +2530,6 @@ curve2d.o: libsrc/csg/curve2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 singularref.o: libsrc/csg/singularref.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -2660,7 +2597,6 @@ singularref.o: libsrc/csg/singularref.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 edgeflw.o: libsrc/csg/edgeflw.cpp libsrc/include/mystdlib.h \
   libsrc/include/meshing.hpp libsrc/include/../meshing/meshing.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2727,7 +2663,6 @@ edgeflw.o: libsrc/csg/edgeflw.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 solid.o: libsrc/csg/solid.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2796,7 +2731,6 @@ solid.o: libsrc/csg/solid.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 explicitcurve2d.o: libsrc/csg/explicitcurve2d.cpp \
   libsrc/include/mystdlib.h libsrc/include/csg.hpp \
   libsrc/include/../csg/csg.hpp libsrc/include/myadt.hpp \
@@ -2865,7 +2799,6 @@ explicitcurve2d.o: libsrc/csg/explicitcurve2d.cpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 specpoin.o: libsrc/csg/specpoin.cpp libsrc/include/mystdlib.h \
   libsrc/include/meshing.hpp libsrc/include/../meshing/meshing.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -2932,7 +2865,6 @@ specpoin.o: libsrc/csg/specpoin.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 gencyl.o: libsrc/csg/gencyl.cpp libsrc/include/linalg.hpp \
   libsrc/include/../linalg/linalg.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
@@ -3001,7 +2933,6 @@ gencyl.o: libsrc/csg/gencyl.cpp libsrc/include/linalg.hpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 revolution.o: libsrc/csg/revolution.cpp libsrc/include/mystdlib.h \
   libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -3070,7 +3001,6 @@ revolution.o: libsrc/csg/revolution.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 genmesh.o: libsrc/csg/genmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3138,7 +3068,6 @@ genmesh.o: libsrc/csg/genmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 spline3d.o: libsrc/csg/spline3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3206,7 +3135,6 @@ spline3d.o: libsrc/csg/spline3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3275,7 +3203,6 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/../linalg/linalg.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3343,7 +3270,6 @@ identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 triapprox.o: libsrc/csg/triapprox.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3411,7 +3337,6 @@ triapprox.o: libsrc/csg/triapprox.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -3483,7 +3408,6 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -3552,7 +3476,6 @@ spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/mystdlib.h libsrc/include/csg.hpp \
   libsrc/include/../csg/csg.hpp libsrc/include/myadt.hpp \
@@ -3623,7 +3546,6 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp \
   libsrc/geom2d/splinegeometry2.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -3695,7 +3617,6 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/mystdlib.h libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -3755,7 +3676,6 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3814,7 +3734,6 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3873,7 +3792,6 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3932,7 +3850,6 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3991,7 +3908,6 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4050,7 +3966,6 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4109,7 +4024,6 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
   libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
   libsrc/stlgeom/meshstlsurface.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 moveablemem.o: libsrc/general/moveablemem.cpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4127,7 +4041,6 @@ moveablemem.o: libsrc/general/moveablemem.cpp libsrc/include/myadt.hpp \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 ngexception.o: libsrc/general/ngexception.cpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4145,7 +4058,6 @@ ngexception.o: libsrc/general/ngexception.cpp libsrc/include/myadt.hpp \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 table.o: libsrc/general/table.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4163,7 +4075,6 @@ table.o: libsrc/general/table.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 optmem.o: libsrc/general/optmem.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4181,7 +4092,6 @@ optmem.o: libsrc/general/optmem.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 spbita2d.o: libsrc/general/spbita2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4199,7 +4109,6 @@ spbita2d.o: libsrc/general/spbita2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 hashtabl.o: libsrc/general/hashtabl.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4217,7 +4126,6 @@ hashtabl.o: libsrc/general/hashtabl.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 sort.o: libsrc/general/sort.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4235,7 +4143,6 @@ sort.o: libsrc/general/sort.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 flags.o: libsrc/general/flags.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4253,7 +4160,6 @@ flags.o: libsrc/general/flags.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 seti.o: libsrc/general/seti.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4271,7 +4177,6 @@ seti.o: libsrc/general/seti.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 bitarray.o: libsrc/general/bitarray.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4289,7 +4194,6 @@ bitarray.o: libsrc/general/bitarray.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 array.o: libsrc/general/array.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4307,7 +4211,6 @@ array.o: libsrc/general/array.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 symbolta.o: libsrc/general/symbolta.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4325,7 +4228,6 @@ symbolta.o: libsrc/general/symbolta.cpp libsrc/include/mystdlib.h \
   libsrc/include/../general/autoptr.hpp \
   libsrc/include/../general/sort.hpp libsrc/include/../general/stack.hpp \
   libsrc/include/../general/mystring.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 mystring.o: libsrc/general/mystring.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -4354,7 +4256,6 @@ mystring.o: libsrc/general/mystring.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp
-# 1 "/Users/geuzaine/.gmsh/contrib/Netgen//"
 nglib_addon.o: nglib_addon.cpp libsrc/include/meshing.hpp \
   libsrc/include/../meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
-- 
GitLab