diff --git a/Common/Makefile b/Common/Makefile
index ccbcf4f972665a2d383a4f4e86843006cd992897..7149c70085efe382880f18d3822de68a86e9b4de 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.165 2008-03-19 17:34:56 geuzaine Exp $
+# $Id: Makefile,v 1.166 2008-04-06 02:33:53 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -73,52 +73,47 @@ Octree.o: Octree.cpp Octree.h OctreeInternals.h
 OctreeInternals.o: OctreeInternals.cpp Message.h OctreeInternals.h
 Options.o: Options.cpp GmshUI.h GmshDefines.h Message.h \
   ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Mesh/Generator.h Context.h Options.h \
-  ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
-  ../Common/Options.h ../Common/Message.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Mesh/Generator.h \
+  Context.h Options.h ../Post/ColorTable.h ../Mesh/BackgroundMesh.h \
+  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
+  ../Common/Message.h ../Post/PView.h ../Post/PViewDataList.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Fltk/Solvers.h ../Fltk/GUI.h \
   ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h ../Common/GmshUI.h \
-  ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h ../Mesh/Field.h \
-  ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h
+  ../Post/ColorTable.h ../Fltk/Popup_Button.h \
+  ../Fltk/SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h
 CommandLine.o: CommandLine.cpp GmshUI.h GmshDefines.h GmshVersion.h \
   Message.h ../Parser/OpenFile.h CommandLine.h Context.h Options.h \
   ../Post/ColorTable.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Parser/CreateFile.h OS.h
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h ../Parser/CreateFile.h OS.h
 Gmsh.o: Gmsh.cpp ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h Options.h ../Post/ColorTable.h CommandLine.h OS.h \
   ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 OS.o: OS.cpp Message.h
 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 ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Parser/Parser.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GModel.h \
+  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h
 Trackball.o: Trackball.cpp Trackball.h
 VertexArray.o: VertexArray.cpp VertexArray.h ../Geo/SVector3.h \
   ../Geo/SPoint3.h Context.h ../Numeric/Numeric.h \
diff --git a/Fltk/Makefile b/Fltk/Makefile
index ef346c2341771bf4a42214e4f812d35e8dfbe026..03a0ae7a7c33d9b88144079e41e82c7fb2f813b5 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.177 2008-03-19 17:34:56 geuzaine Exp $
+# $Id: Makefile,v 1.178 2008-04-06 02:33:53 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -73,211 +73,184 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Gmsh.h ../Common/Message.h ../Mesh/Generator.h \
-  ../Parser/CreateFile.h ../Graphics/Draw.h ../Common/Context.h \
-  ../Common/Options.h ../Parser/Parser.h ../Parser/OpenFile.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Gmsh.h \
+  ../Common/Message.h ../Mesh/Generator.h ../Parser/CreateFile.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Common/Context.h \
+  ../Common/Options.h ../Post/ColorTable.h ../Parser/Parser.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../Parser/OpenFile.h \
   ../Common/CommandLine.h Solvers.h ../Plugin/PluginManager.h \
-  ../Plugin/Plugin.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Mesh/BackgroundMesh.h
+  ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
+  ../Post/PView.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/GPoint.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h \
+  ../Mesh/BackgroundMesh.h ../Post/PView.h
 Message.o: Message.cpp ../Common/Message.h ../Common/GmshUI.h \
   ../Common/Context.h ../Common/Options.h ../Post/ColorTable.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
+  Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  GUI_Extras.h ../Common/OS.h
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h GUI_Extras.h ../Common/OS.h
 GUI.o: GUI.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Common/Context.h ../Common/Options.h ../Post/ColorTable.h \
   ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
+  Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h Callbacks.h Win32Icon.h \
-  ../Parser/OpenFile.h ../Common/CommandLine.h ../Mesh/Generator.h \
-  Solvers.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../Common/GmshMatrix.h Shortcut_Window.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/GeoStringInterface.h
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  Callbacks.h Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h \
+  ../Mesh/Generator.h Solvers.h ../Plugin/PluginManager.h \
+  ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
+  ../Post/PView.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
+  Shortcut_Window.h ../Post/PView.h ../Geo/GModel.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/GRegion.h ../Geo/GeoStringInterface.h
 GUI_Extras.o: GUI_Extras.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Parser/CreateFile.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Context.h ../Graphics/Draw.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.h GUI.h Opengl_Window.h Colorbar_Window.h Popup_Button.h \
-  SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
+  ../Geo/SPoint3.h GUI.h Opengl_Window.h Colorbar_Window.h \
+  ../Post/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
+  ../Mesh/Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
   ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Post/PView.h ../Post/PViewData.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h Shortcut_Window.h \
   File_Picker.h
 GUI_Projection.o: GUI_Projection.cpp ../Geo/GModelIO_Fourier.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Graphics/Draw.h \
-  ../Common/Options.h ../Post/ColorTable.h ../Common/Context.h \
-  ../Parser/OpenFile.h ../Graphics/SelectBuffer.h GUI_Projection.h \
-  ../Common/GmshUI.h ../Geo/fourierProjectionFace.h ../Geo/GModel.h \
-  ../Geo/Range.h GUI.h Opengl_Window.h Colorbar_Window.h Popup_Button.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Common/Options.h \
+  ../Post/ColorTable.h ../Common/Context.h ../Parser/OpenFile.h \
+  ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GRegion.h GUI_Projection.h ../Common/GmshUI.h \
+  ../Geo/GModel.h ../Geo/fourierProjectionFace.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  Shortcut_Window.h GUI_Extras.h ../Geo/fourierFace.h ../Geo/GFace.h \
-  ../Geo/GModel.h ../Geo/Range.h ../Geo/fourierEdge.h ../Geo/GEdge.h \
-  ../Geo/GModel.h ../Geo/fourierVertex.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/MVertex.h ../Common/Message.h
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h Shortcut_Window.h GUI_Extras.h \
+  ../Geo/fourierFace.h ../Geo/fourierEdge.h ../Geo/fourierVertex.h \
+  ../Common/Message.h
 GUI_Classifier.o: GUI_Classifier.cpp GUI_Classifier.h ../Common/GmshUI.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h GUI.h Opengl_Window.h \
-  Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
-  SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  GUI.h Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h \
+  Popup_Button.h SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  Shortcut_Window.h ../Graphics/Draw.h ../Common/Options.h \
-  ../Common/Context.h ../Graphics/SelectBuffer.h GUI_Projection.h \
-  ../Geo/fourierProjectionFace.h ../Geo/GModel.h ../Geo/Range.h \
-  GUI_Extras.h ../Common/Message.h ../Mesh/meshGFaceDelaunayInsertion.h \
-  ../Mesh/meshGFaceOptimize.h ../Mesh/meshGFaceDelaunayInsertion.h \
-  ../Geo/discreteEdge.h ../Geo/GModel.h ../Geo/GEdge.h ../Geo/Geo.h \
-  ../Geo/discreteFace.h ../Geo/GModel.h ../Geo/GFace.h ../Geo/Geo.h
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h Shortcut_Window.h ../Graphics/Draw.h \
+  ../Geo/SBoundingBox3d.h ../Common/Options.h ../Post/ColorTable.h \
+  ../Common/Context.h ../Graphics/SelectBuffer.h ../Geo/GVertex.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h GUI_Projection.h \
+  ../Geo/fourierProjectionFace.h ../Geo/GModel.h GUI_Extras.h \
+  ../Common/Message.h ../Mesh/meshGFaceDelaunayInsertion.h \
+  ../Geo/MElement.h ../Mesh/meshGFaceOptimize.h ../Geo/MEdge.h \
+  ../Mesh/meshGFaceDelaunayInsertion.h ../Geo/discreteEdge.h ../Geo/Geo.h \
+  ../Geo/discreteFace.h
 Callbacks.o: Callbacks.cpp ../Common/GmshUI.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/GeoStringInterface.h ../Geo/findLinks.h ../Mesh/Generator.h \
-  ../Mesh/HighOrder.h ../Graphics/Draw.h ../Graphics/SelectBuffer.h \
-  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Parser/CreateFile.h ../Parser/OpenFile.h \
-  ../Common/CommandLine.h ../Common/Context.h ../Common/Options.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Geo/GeoStringInterface.h ../DataStr/List.h ../Geo/findLinks.h \
+  ../Mesh/Generator.h ../Mesh/HighOrder.h ../Geo/GModel.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Graphics/SelectBuffer.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Parser/CreateFile.h \
+  ../Parser/OpenFile.h ../Common/CommandLine.h ../Common/Context.h \
+  ../Common/Options.h ../Post/ColorTable.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h GUI_Extras.h Callbacks.h \
-  ../Plugin/Plugin.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Visibility.h \
-  ../Common/GmshDefines.h Solvers.h ../Common/OS.h \
-  ../Mesh/BackgroundMesh.h
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../DataStr/Tree.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h GUI_Extras.h Callbacks.h ../Plugin/Plugin.h \
+  ../Common/Options.h ../Common/Message.h ../Post/PView.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Plugin/PluginManager.h \
+  ../Plugin/Plugin.h ../Common/Visibility.h ../Common/GmshDefines.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Numeric/Numeric.h Solvers.h ../Common/OS.h ../Mesh/BackgroundMesh.h
 Opengl.o: Opengl.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Common/StringUtils.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
-  SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Common/StringUtils.h GUI.h Opengl_Window.h Colorbar_Window.h \
+  ../Post/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
+  ../Mesh/Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
   ../Graphics/gl2ps.h
 Opengl_Window.o: Opengl_Window.cpp ../Common/GmshUI.h \
   ../Common/GmshDefines.h ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Common/Context.h ../Graphics/Draw.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Graphics/SelectBuffer.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
   ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GRegion.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Numeric/Numeric.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MFace.h
 Colorbar_Window.o: Colorbar_Window.cpp ../Common/GmshUI.h GUI.h \
   Opengl_Window.h Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Context.h
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Context.h
 Solvers.o: Solvers.cpp ../Common/Message.h Solvers.h GmshServer.h \
   ../Parser/OpenFile.h ../Common/GmshUI.h GUI.h Opengl_Window.h \
   Colorbar_Window.h ../Post/ColorTable.h Popup_Button.h \
   SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Graphics/Draw.h ../Common/Context.h
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PView.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Common/Context.h
diff --git a/Geo/Makefile b/Geo/Makefile
index 57ac9014dbf70b5efaa31929069af064de8cdc03..d1894186283b734b492a093e3793a61be42b2b5a 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.198 2008-03-25 21:18:46 geuzaine Exp $
+# $Id: Makefile,v 1.199 2008-04-06 02:33:53 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -75,7 +75,7 @@ depend:
 # DO NOT DELETE THIS LINE
 GEntity.o: GEntity.cpp GEntity.h Range.h SPoint3.h SBoundingBox3d.h \
   ../Common/VertexArray.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Common/Context.h
+  ../Common/Context.h ../Common/Context.h
 GVertex.o: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GFace.h GEdgeLoop.h GEdge.h \
   SVector3.h Pair.h MVertex.h ../Common/Message.h
@@ -92,7 +92,8 @@ GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
   MVertex.h MEdge.h MFace.h ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Numeric/GaussLegendre1D.h \
-  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Common/Context.h
 GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h GFace.h \
   GEdgeLoop.h Pair.h GRegion.h MElement.h ../Common/GmshDefines.h \
@@ -175,8 +176,9 @@ GModelIO_Geo.o: GModelIO_Geo.cpp GModel.h GVertex.h GEntity.h Range.h \
   ../Common/SmoothData.h ../Parser/OpenFile.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/Message.h gmshVertex.h \
   MVertex.h gmshFace.h gmshEdge.h gmshRegion.h ../Parser/Parser.h \
-  ../Mesh/Field.h ../Geo/Geo.h ../Post/PView.h ../Post/PViewData.h \
-  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h
+  ../DataStr/List.h ../DataStr/Tree.h ../Mesh/Field.h ../Geo/Geo.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h
 GModelIO_Mesh.o: GModelIO_Mesh.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h GPoint.h SPoint2.h GEdge.h SVector3.h \
   GFace.h GEdgeLoop.h Pair.h GRegion.h ../Common/GmshDefines.h MElement.h \
@@ -212,20 +214,22 @@ Geo.o: Geo.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/Malloc.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h Geo.h \
   ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
-  SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \
-  ../Common/SmoothData.h GModel.h GVertex.h GEntity.h GPoint.h GEdge.h \
-  GFace.h GEdgeLoop.h GRegion.h GeoInterpolation.h ../Parser/Parser.h \
-  ../Mesh/Field.h ../Geo/Geo.h ../Post/PView.h ../Post/PViewData.h \
-  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Context.h
+  SPoint3.h SVector3.h SBoundingBox3d.h ../DataStr/List.h \
+  ../DataStr/Tree.h ExtrudeParams.h ../Common/SmoothData.h GModel.h \
+  GVertex.h GEntity.h GPoint.h GEdge.h GFace.h GEdgeLoop.h GRegion.h \
+  GeoInterpolation.h ../Parser/Parser.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../Mesh/Field.h ../Geo/Geo.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h ../Common/Context.h
 GeoStringInterface.o: GeoStringInterface.cpp ../Common/Message.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/Malloc.h \
   Geo.h ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
   SPoint3.h SVector3.h SBoundingBox3d.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ExtrudeParams.h \
   ../Common/SmoothData.h GeoStringInterface.h ../Parser/Parser.h \
-  ../Parser/OpenFile.h ../Common/Context.h GModel.h GVertex.h GEntity.h \
-  GPoint.h GEdge.h GFace.h GEdgeLoop.h GRegion.h
+  ../DataStr/List.h ../DataStr/Tree.h ../Parser/OpenFile.h \
+  ../Common/Context.h GModel.h GVertex.h GEntity.h GPoint.h GEdge.h \
+  GFace.h GEdgeLoop.h GRegion.h
 GeoInterpolation.o: GeoInterpolation.cpp ../Common/Message.h Geo.h \
   ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
   SPoint3.h SVector3.h SBoundingBox3d.h ../Numeric/Numeric.h \
diff --git a/Graphics/Makefile b/Graphics/Makefile
index b225085fb818e767f113d208f2792e81f174d5e7..7e53733da64cad21e31c3918aaba7a082aacf5cd 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.146 2008-03-19 17:34:56 geuzaine Exp $
+# $Id: Makefile,v 1.147 2008-04-06 02:33:53 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -74,55 +74,41 @@ Draw.o: Draw.cpp ../Common/GmshUI.h ../Common/GmshDefines.h \
   ../Common/Message.h Draw.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Common/Context.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h
 Mesh.o: Mesh.cpp ../Common/Message.h ../Common/GmshUI.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h Draw.h \
-  ../Common/Context.h ../Common/OS.h gl2ps.h ../Common/VertexArray.h \
-  ../Common/Context.h ../Common/SmoothData.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h Draw.h \
+  ../Geo/SBoundingBox3d.h ../Common/Context.h ../Common/OS.h gl2ps.h \
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Common/SmoothData.h
 Geom.o: Geom.cpp ../Common/GmshUI.h Draw.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Common/Context.h gl2ps.h ../Common/VertexArray.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Common/Context.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h
+  ../Geo/SVector3.h ../Common/Context.h ../Geo/GModel.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h
 Post.o: Post.cpp ../Common/Message.h ../Common/GmshUI.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h Draw.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h Iso.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/VertexArray.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Common/Context.h ../Common/SmoothData.h gl2ps.h
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h ../Common/VertexArray.h ../Geo/SVector3.h \
+  ../Common/Context.h ../Common/SmoothData.h ../Common/Context.h gl2ps.h
 SelectBuffer.o: SelectBuffer.cpp ../Common/Message.h ../Common/GmshUI.h \
   ../Common/GmshDefines.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h Draw.h ../Common/Context.h SelectBuffer.h \
-  ../Common/VertexArray.h ../Common/Context.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h Draw.h \
+  ../Geo/SBoundingBox3d.h ../Common/Context.h SelectBuffer.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h
 Iso.o: Iso.cpp ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 Entity.o: Entity.cpp ../Common/GmshUI.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h Draw.h ../Geo/SBoundingBox3d.h \
@@ -130,15 +116,17 @@ Entity.o: Entity.cpp ../Common/GmshUI.h ../Numeric/Numeric.h \
 ReadImg.o: ReadImg.cpp ReadImg.h ../Common/Message.h ../Common/GmshUI.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h
 Scale.o: Scale.cpp ../Common/GmshUI.h Draw.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Context.h gl2ps.h
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Common/Context.h gl2ps.h
 Graph2D.o: Graph2D.cpp ../Common/GmshUI.h Draw.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h gl2ps.h ../Common/Context.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  gl2ps.h ../Common/Context.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h
 gl2ps.o: gl2ps.cpp gl2ps.h
 gl2gif.o: gl2gif.cpp gl2gif.h PixelBuffer.h ../Common/GmshUI.h \
   ../Common/Message.h ../DataStr/Malloc.h Draw.h ../Geo/SBoundingBox3d.h \
diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp
index 20e4085b7bd48352cee77703fbedce7a852bf92c..8a8139d70d55b09da9888216d066da306ac7b07d 100644
--- a/Mesh/Field.cpp
+++ b/Mesh/Field.cpp
@@ -1,4 +1,4 @@
-// $Id: Field.cpp,v 1.26 2008-03-23 21:42:57 geuzaine Exp $
+// $Id: Field.cpp,v 1.27 2008-04-06 02:33:53 remacle Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -44,26 +44,26 @@
 
 extern Context_T CTX;
 
-class FieldOptionDouble : public FieldOption {
- public:
+class FieldOptionDouble:public FieldOption
+{
+public:
   double &val;
   FieldOptionType get_type()
   {
     return FIELD_OPTION_DOUBLE;
-  }
-  FieldOptionDouble(double &_val, bool * _status = NULL)
-    : FieldOption(_status), val(_val) 
-  {
-  }
+  };
+FieldOptionDouble(double &_val, bool * _status = NULL):FieldOption(_status),
+    val(_val) {
+  };
   double numerical_value() const
   {
     return val;
-  }
+  };
   void numerical_value(double v)
   {
     modified();
     val = v;
-  }
+  };
   void get_text_representation(std::string & v_str)
   {
     std::ostringstream sstream;
@@ -73,26 +73,26 @@ class FieldOptionDouble : public FieldOption {
   }
 };
 
-class FieldOptionInt : public FieldOption {
- public:
+class FieldOptionInt:public FieldOption
+{
+public:
   int &val;
   FieldOptionType get_type()
   {
     return FIELD_OPTION_INT;
-  }
-  FieldOptionInt(int &_val, bool * _status = NULL)
-    : FieldOption(_status), val(_val) 
-  {
-  }
+  };
+FieldOptionInt(int &_val, bool * _status = NULL):FieldOption(_status),
+    val(_val) {
+  };
   double numerical_value() const
   {
     return val;
-  }
+  };
   void numerical_value(double v)
   {
     modified();
-    val = (int)v;
-  }
+    val = v;
+  };
   void get_text_representation(std::string & v_str)
   {
     std::ostringstream sstream;
@@ -100,24 +100,24 @@ class FieldOptionInt : public FieldOption {
     v_str = sstream.str();
   }
 };
-
-class FieldOptionList : public FieldOption {
- public:
-  std::list<int> &val;
+class FieldOptionList:public FieldOption
+{
+public:
+  std::list < int >&val;
   FieldOptionType get_type()
   {
     return FIELD_OPTION_LIST;
-  }
-  FieldOptionList(std::list < int >&_val, bool * _status = NULL)
-    : FieldOption(_status), val(_val)
+  };
+FieldOptionList(std::list < int >&_val, bool * _status = NULL):FieldOption(_status),
+    val(_val)
   {
-  }
-  std::list<int> &list()
+  };
+  std::list < int >&list()
   {
     modified();
     return val;
   }
-  const std::list<int> &list() const
+  const std::list < int >&list() const
   {
     return val;
   }
@@ -134,55 +134,52 @@ class FieldOptionList : public FieldOption {
     v_str = sstream.str();
   }
 };
-
-class FieldOptionString : public FieldOption {
- public:
-  std::string &val;
+class FieldOptionString:public FieldOption
+{
+public:
+  std::string & val;
   virtual FieldOptionType get_type()
   {
     return FIELD_OPTION_STRING;
-  }
-  FieldOptionString(std::string &_val, bool *_status = NULL) 
-    : FieldOption(_status), val(_val) 
-  {
-  }
-  std::string &string()
-  {
+  };
+FieldOptionString(std::string & _val, bool * _status = NULL):FieldOption(_status),
+    val(_val) {
+  };
+  std::string & string() {
     modified();
     return val;
   }
-  const std::string &string() const
+  const std::string & string() const
   {
     return val;
   }
-  void get_text_representation(std::string &v_str)
+  void get_text_representation(std::string & v_str)
   {
     std::ostringstream sstream;
     sstream << "\"" << val << "\"";
     v_str = sstream.str();
   }
 };
-
-class FieldOptionBool : public FieldOption {
- public:
-  bool &val;
+class FieldOptionBool:public FieldOption
+{
+public:
+  bool & val;
   FieldOptionType get_type()
   {
     return FIELD_OPTION_BOOL;
-  }
-  FieldOptionBool(bool &_val, bool *_status = NULL) 
-    : FieldOption(_status), val(_val)
-  {
-  }
+  };
+FieldOptionBool(bool & _val, bool * _status = NULL):FieldOption(_status),
+    val(_val) {
+  };
   double numerical_value() const
   {
     return val;
-  }
+  };
   void numerical_value(double v)
   {
     modified();
     val = v;
-  }
+  };
   void get_text_representation(std::string & v_str)
   {
     std::ostringstream sstream;
@@ -190,10 +187,18 @@ class FieldOptionBool : public FieldOption {
     v_str = sstream.str();
   }
 };
+class FieldOptionPath:public FieldOptionString
+{
+public:
+  FieldOptionType get_type()
+  {
+    return FIELD_OPTION_PATH;
+  };
+};
 
 void FieldManager::reset()
 {
-  for(std::map<int, Field*>::iterator it = begin(); it != end(); it++) {
+  for(std::map < int, Field * >::iterator it = begin(); it != end(); it++) {
     delete it->second;
   }
   clear();
@@ -247,7 +252,6 @@ int FieldManager::max_id()
   else
     return 0;
 }
-
 void FieldManager::delete_field(int id)
 {
   iterator it = find(id);
@@ -260,25 +264,28 @@ void FieldManager::delete_field(int id)
 }
 
 // StructuredField
-class StructuredField : public Field{
+class StructuredField:public Field
+{
   double o[3], d[3];
   int n[3];
   double *data;
   bool error_status;
+  bool text_format;
   std::string file_name;
- public:
-  StructuredField()
+public:StructuredField()
   {
     options["FileName"] = new FieldOptionString(file_name, &update_needed);
+    text_format = false;
+    options["TextFormat"] = new FieldOptionBool(text_format, &update_needed);
     data = NULL;
   }
   const char *get_name()
   {
     return "Structured";
   }
-  virtual ~StructuredField() 
-  {
-    if(data) delete[]data;
+  virtual ~ StructuredField() {
+    if(data)
+      delete[]data;
   }
   double operator() (double x, double y, double z)
   {
@@ -291,14 +298,26 @@ class StructuredField : public Field{
         input.
           exceptions(std::ifstream::eofbit | std::ifstream::failbit | std::
                      ifstream::badbit);
-        input.read((char *)o, 3 * sizeof(double));
-        input.read((char *)d, 3 * sizeof(double));
-        input.read((char *)n, 3 * sizeof(int));
-        int nt = n[0] * n[1] * n[2];
-        if(data)
-          delete[]data;
-        data = new double[nt];
-        input.read((char *)data, nt * sizeof(double));
+        if(!text_format) {
+          input.read((char *)o, 3 * sizeof(double));
+          input.read((char *)d, 3 * sizeof(double));
+          input.read((char *)n, 3 * sizeof(int));
+          int nt = n[0] * n[1] * n[2];
+          if(data)
+            delete[]data;
+          data = new double[nt];
+          input.read((char *)data, nt * sizeof(double));
+        }
+        else {
+          input >> o[0] >> o[1] >> o[2] >> d[0] >> d[1] >> d[2] >> n[0] >>
+            n[1] >> n[2];
+          int nt = n[0] * n[1] * n[2];
+          if(data)
+            delete[]data;
+          data = new double[nt];
+          for(int i = 0; i < nt; i++)
+            input >> data[i];
+        }
         input.close();
       }
       catch(...) {
@@ -340,9 +359,93 @@ class StructuredField : public Field{
   }
 };
 
-class LonLatField : public Field {
+class UTMField:public Field
+{
+  int field_id, zone;
+  double a, b, n, n2, n3, n4, n5, e, e2, e1, e12, e13, e14, J1, J2, J3, J4,
+    Ap, Bp, Cp, Dp, Ep, e4, e6, ep, ep2, ep4, k0, mu_fact;
+public:
+  UTMField()
+  {
+    field_id = 1;
+    zone = 0;
+    options["IField"] = new FieldOptionInt(field_id);
+    options["Zone"] = new FieldOptionInt(zone);
+    a = 6378137;                /* Equatorial Radius */
+    b = 6356752.3142;           /* Rayon Polar Radius */
+    /* see http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM */
+    n = (a - b) / (a + b);
+    n2 = n * n;
+    n3 = n * n * n;
+    n4 = n * n * n * n;
+    n5 = n * n * n * n * n;
+    e = sqrt(1 - b * b / a / a);
+    e2 = e * e;
+    e1 = (1 - sqrt(1 - e2)) / (1 + sqrt(1 - e2));
+    e12 = e1 * e1;
+    e13 = e1 * e1 * e1;
+    e14 = e1 * e1 * e1 * e1;
+    J1 = (3 * e1 / 2 - 27 * e13 / 32);
+    J2 = (21 * e12 / 16 - 55 * e14 / 32);
+    J3 = 151 * e13 / 96;
+    J4 = 1097 * e14 / 512;
+    Ap = a * (1 - n + (5. / 4.) * (n2 - n3) + (81. / 64.) * (n4 - n5));
+    Bp = -3 * a * n / 2 * (1 - n + (7. / 8.) * (n2 - n3) +
+                           (55. / 64.) * (n4 - n5));
+    Cp = 14 * a * n2 / 16 * (1 - n + (3. / 4) * (n2 - n3));
+    Dp = -35 * a * n3 / 48 * (1 - n + 11. / 16. * (n2 - n3));
+    Ep = +315 * a * n4 / 51 * (1 - n);
+    e4 = e2 * e2;
+    e6 = e2 * e2 * e2;
+    ep = e * a / b;
+    ep2 = ep * ep;
+    ep4 = ep2 * ep2;
+    k0 = 0.9996;
+    mu_fact = 1 / (k0 * a * (1 - e2 / 4 - 3 * e4 / 64 - 5 * e6 / 256));
+  }
+  const char *get_name()
+  {
+    return "UTM";
+  }
+  double operator() (double x, double y, double z)
+  {
+    double r = sqrt(x * x + y * y + z * z);
+    double lon = atan2(y, x);
+    double lat = asin(z / r);
+    double meridionalarc = Ap * lat + Bp * sin(2 * lat)
+      + Cp * sin(4 * lat) + Dp * sin(6 * lat) + Ep;
+    double slat = sin(lat);
+    double clat = cos(lat);
+    double slat2 = slat * slat;
+    double clat2 = clat * clat;
+    double clat3 = clat2 * clat;
+    double clat4 = clat3 * clat;
+    double tlat2 = slat2 / clat2;
+    double nu = a / sqrt(1 - e * e * slat2);
+    double p = lon - ((zone - 0.5) / 30 - 1) * M_PI;
+    double p2 = p * p;
+    double p3 = p * p2;
+    double p4 = p2 * p2;
+    double utm_x =
+      k0 * nu * clat * p + (k0 * nu * clat3 / 6) * (1 - tlat2 +
+                                                    ep2 * clat2) * p3 + 5e5;
+    double utm_y =
+      meridionalarc * k0 + k0 * nu * slat * clat / 2 * p2 +
+      k0 * nu * slat * clat3 / 24 * (5 - tlat2 + 9 * ep2 * clat2 +
+                                     4 * ep4 * clat4) * p4;
+    return (*GModel::current()->getFields()->get(field_id)) (utm_x, utm_y, 0);
+  }
+  FieldDialogBox *&dialog_box()
+  {
+    static FieldDialogBox *dialogBox = NULL;
+    return dialogBox;
+  }
+};
+
+class LonLatField:public Field
+{
   int field_id;
- public:
+public:
   LonLatField()
   {
     field_id = 1;
@@ -354,7 +457,7 @@ class LonLatField : public Field {
   }
   double operator() (double x, double y, double z)
   {
-    return (*GModel::current()->getFields()->get(field_id)) 
+    return (*GModel::current()->getFields()->get(field_id))
       (atan2(x, y), asin(z / sqrt(x * x + y * y + z * z)), 0);
   }
   FieldDialogBox *&dialog_box()
@@ -364,9 +467,10 @@ class LonLatField : public Field {
   }
 };
 
-class BoxField : public Field {
+class BoxField:public Field
+{
   double v_in, v_out, x_min, x_max, y_min, y_max, z_min, z_max;
- public:
+public:
   BoxField()
   {
     v_in = v_out = x_min = x_max = y_min = y_max = z_min = z_max = 0;
@@ -395,10 +499,12 @@ class BoxField : public Field {
   }
 };
 
-class ThresholdField : public Field {
+
+class ThresholdField:public Field
+{
   int iField;
   double dmin, dmax, lcmin, lcmax;
- public:
+public:
   const char *get_name()
   {
     return "Threshold";
@@ -431,15 +537,17 @@ class ThresholdField : public Field {
   }
 };
 
-class GradientField : public Field {
+
+class GradientField:public Field
+{
   int iField, kind;
   double delta;
- public:
+public:
   const char *get_name()
   {
     return "Gradient";
   }
-  GradientField() : iField(0), kind(3), delta(CTX.lc / 1e4)
+  GradientField():iField(0), kind(3), delta(CTX.lc / 1e4)
   {
     options["IField"] = new FieldOptionInt(iField);
     options["Kind"] = new FieldOptionInt(kind);
@@ -484,8 +592,8 @@ class GradientField : public Field {
 };
 
 #if defined(HAVE_MATH_EVAL)
-
-class MathEvalExpression {
+class MathEvalExpression
+{
   bool error_status;
   std::list < Field * >*list;
   int nvalues;
@@ -495,7 +603,7 @@ class MathEvalExpression {
   int *evaluators_id;
   std::string function;
   char *c_str_function;
- public:
+public:
   double evaluate(double x, double y, double z)
   {
     if(error_status)
@@ -573,10 +681,11 @@ class MathEvalExpression {
   }
 };
 
-class MathEvalField : public Field {
+class MathEvalField:public Field
+{
   MathEvalExpression expr;
   std::string f;
- public:
+public:
   MathEvalField()
   {
     options["F"] = new FieldOptionString(f, &update_needed);
@@ -601,12 +710,12 @@ class MathEvalField : public Field {
     return "MathEval";
   }
 };
-
-class ParametricField : public Field {
+class ParametricField:public Field
+{
   MathEvalExpression expr[3];
   std::string f[3];
   int ifield;
- public:
+public:
   ParametricField()
   {
     options["IField"] = new FieldOptionInt(ifield);
@@ -624,7 +733,7 @@ class ParametricField : public Field {
       }
       update_needed = false;
     }
-    return (*GModel::current()->getFields()->get(ifield)) 
+    return (*GModel::current()->getFields()->get(ifield))
       (expr[0].evaluate(x, y, z), expr[1].evaluate(x, y, z),
        expr[2].evaluate(x, y, z));
   }
@@ -638,39 +747,61 @@ class ParametricField : public Field {
     return "Param";
   }
 };
-
 #endif
 
-class PostViewField : public Field {
+class PostViewField:public Field
+{
   OctreePost *octree;
- public:
-  int view_index;
+public:int view_index;
   double operator() (double x, double y, double z)
   {
+    // FIXME: should test unique view num instead, but that would be slower
     if(view_index < 0 || view_index >= (int)PView::list.size())
       return MAX_LC;
-    if(update_needed){
+    if(update_needed)
+    {
       if(octree)
         delete octree;
       octree = new OctreePost(PView::list[view_index]);
       update_needed = false;
     }
     double l = 0.;
-    octree->searchScalar(x, y, z, &l, 0);
-    if(l <= 0) return MAX_LC;
+    if(!octree->searchScalar(x, y, z, &l, 0)) {
+      // uncomment the following to try really hard to find an element
+      // around the point
+      /*
+         double fact[9] = {0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, 0.1};
+         for(int i = 0; i < 9; i++){
+         double eps = CTX.lc * fact[i];
+         if(octree->searchScalar(x + eps, y, z, &l, 0)) break;
+         if(octree->searchScalar(x - eps, y, z, &l, 0)) break;
+         if(octree->searchScalar(x, y + eps, z, &l, 0)) break;
+         if(octree->searchScalar(x, y - eps, z, &l, 0)) break;
+         if(octree->searchScalar(x, y, z + eps, &l, 0)) break;
+         if(octree->searchScalar(x, y, z - eps, &l, 0)) break;
+         if(octree->searchScalar(x + eps, y - eps, z - eps, &l, 0)) break;
+         if(octree->searchScalar(x + eps, y + eps, z - eps, &l, 0)) break;
+         if(octree->searchScalar(x - eps, y - eps, z - eps, &l, 0)) break;
+         if(octree->searchScalar(x - eps, y + eps, z - eps, &l, 0)) break;
+         if(octree->searchScalar(x + eps, y - eps, z + eps, &l, 0)) break;
+         if(octree->searchScalar(x + eps, y + eps, z + eps, &l, 0)) break;
+         if(octree->searchScalar(x - eps, y - eps, z + eps, &l, 0)) break;
+         if(octree->searchScalar(x - eps, y + eps, z + eps, &l, 0)) break;
+         }
+       */
+    }
+    //if(l <= 0) return MAX_LC;
     return l;
   }
   const char *get_name()
   {
     return "PostView";
   }
-  PostViewField() 
-  {
+  PostViewField() {
     octree = NULL;
     options["IView"] = new FieldOptionInt(view_index, &update_needed);
   }
-  ~PostViewField() 
-  {
+  ~PostViewField() {
     if(octree)
       delete octree;
   }
@@ -681,9 +812,10 @@ class PostViewField : public Field {
   }
 };
 
-class MinField : public Field {
+class MinField:public Field
+{
   std::list < int >idlist;
- public:
+public:
   MinField()
   {
     options["FieldsList"] = new FieldOptionList(idlist, &update_needed);
@@ -710,9 +842,10 @@ class MinField : public Field {
   }
 };
 
-class MaxField : public Field {
-  std::list<int> idlist;
- public:
+class MaxField:public Field
+{
+  std::list < int >idlist;
+public:
   MaxField()
   {
     options["FieldsList"] = new FieldOptionList(idlist, &update_needed);
@@ -740,8 +873,8 @@ class MaxField : public Field {
 };
 
 #ifdef HAVE_ANN
-
-class AttractorField : public Field {
+class AttractorField:public Field
+{
   ANNkd_tree *kdtree;
   ANNpointArray zeronodes;
   ANNidxArray index;
@@ -749,8 +882,7 @@ class AttractorField : public Field {
   std::list < int >nodes_id;
   std::list < int >edges_id;
   int n_nodes_by_edge;
- public:
-  AttractorField() : kdtree(0), zeronodes(0)
+public:AttractorField():kdtree(0), zeronodes(0)
   {
     index = new ANNidx[1];
     dist = new ANNdist[1];
@@ -841,39 +973,38 @@ class AttractorField : public Field {
     return dialogBox;
   }
 };
-
 #endif
 
-template<class F> class FieldFactoryT : public FieldFactory {
- public:
-  Field *operator()()
-  {
+template < class F > class FieldFactoryT:public FieldFactory {
+public:
+  Field * operator()() {
     return new F;
-  }
+  };
 };
 
-template<class F> Field *field_factory()
+template < class F > Field * field_factory()
 {
   return new F();
 };
 
 FieldManager::FieldManager()
 {
-  map_type_name["Structured"] = new FieldFactoryT<StructuredField> ();
-  map_type_name["Threshold"] = new FieldFactoryT<ThresholdField> ();
-  map_type_name["Box"] = new FieldFactoryT<BoxField> ();
-  map_type_name["LonLat"] = new FieldFactoryT<LonLatField> ();
+  map_type_name["Structured"] = new FieldFactoryT < StructuredField > ();
+  map_type_name["Threshold"] = new FieldFactoryT < ThresholdField > ();
+  map_type_name["Box"] = new FieldFactoryT < BoxField > ();
+  map_type_name["LonLat"] = new FieldFactoryT < LonLatField > ();
 #if defined(HAVE_MATH_EVAL)
-  map_type_name["Param"] = new FieldFactoryT<ParametricField> ();
-  map_type_name["MathEval"] = new FieldFactoryT<MathEvalField> ();
+  map_type_name["Param"] = new FieldFactoryT < ParametricField > ();
+  map_type_name["MathEval"] = new FieldFactoryT < MathEvalField > ();
 #endif
 #if defined(HAVE_ANN)
-  map_type_name["Attractor"] = new FieldFactoryT<AttractorField> ();
+  map_type_name["Attractor"] = new FieldFactoryT < AttractorField > ();
 #endif
-  map_type_name["PostView"] = new FieldFactoryT<PostViewField> ();
-  map_type_name["Gradient"] = new FieldFactoryT<GradientField> ();
-  map_type_name["Min"] = new FieldFactoryT< MinField> ();
-  map_type_name["Max"] = new FieldFactoryT< MaxField> ();
+  map_type_name["PostView"] = new FieldFactoryT < PostViewField > ();
+  map_type_name["Gradient"] = new FieldFactoryT < GradientField > ();
+  map_type_name["Min"] = new FieldFactoryT < MinField > ();
+  map_type_name["Max"] = new FieldFactoryT < MaxField > ();
+  map_type_name["UTM"] = new FieldFactoryT < UTMField > ();
   background_field = -1;
 }
 
diff --git a/Mesh/Makefile b/Mesh/Makefile
index a6a9c18ab4c179e7e15476ca025dd2a43b9df0db..660344a8248ff01042411a879439e9988cb1c9f9 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.211 2008-03-29 10:19:36 geuzaine Exp $
+# $Id: Makefile,v 1.212 2008-04-06 02:33:53 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -89,293 +89,202 @@ Generator.o: Generator.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/OS.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h meshGEdge.h \
-  meshGFace.h meshGFaceBDS.h meshGRegion.h BackgroundMesh.h \
-  BoundaryLayer.h HighOrder.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h meshGEdge.h meshGFace.h \
+  meshGFaceBDS.h meshGRegion.h BackgroundMesh.h BoundaryLayer.h \
+  HighOrder.h
 Field.o: Field.cpp ../Common/Context.h Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Geo/GeoInterpolation.h ../Geo/Geo.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/Message.h ../Post/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/GeoInterpolation.h \
+  ../Geo/Geo.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GRegion.h ../Common/Message.h ../Post/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h ../Post/PViewDataList.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 meshGEdge.o: meshGEdge.cpp meshGEdge.h ../Geo/GEdge.h ../Geo/GEntity.h \
   ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  BackgroundMesh.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
-  ../Common/Message.h ../DataStr/List.h ../Common/Context.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Geo/SBoundingBox3d.h
+  ../Geo/GVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MFace.h BackgroundMesh.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Message.h ../DataStr/List.h \
+  ../Common/Context.h ../Geo/GModel.h ../Geo/GEdge.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h
 meshGEdgeExtruded.o: meshGEdgeExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Common/Message.h
 meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceBDS.h \
   meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h meshGFaceOptimize.h DivideAndConquer.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h \
+  ../Geo/MFace.h meshGFaceOptimize.h ../Geo/MEdge.h DivideAndConquer.h \
   BackgroundMesh.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Common/Context.h ../Common/Message.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h BDS.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/Pair.h ../Geo/MVertex.h ../Common/Context.h ../Geo/GPoint.h \
+  ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  BDS.h ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h qualityMeasures.h Field.h \
-  ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h \
-  ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Common/OS.h
+  ../Geo/Geo.h ../Geo/gmshSurface.h ../Numeric/Numeric.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Common/OS.h
 meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MElement.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Common/Context.h ../Common/Message.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/Pair.h ../Geo/MVertex.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Common/Context.h ../Common/Message.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h
 meshGFaceExtruded.o: meshGFaceExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Common/Context.h \
-  ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Common/Context.h ../Common/Message.h
 meshGFaceBDS.o: meshGFaceBDS.cpp meshGFace.h meshGFaceOptimize.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceDelaunayInsertion.h BackgroundMesh.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Common/Context.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/Message.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
-  BDS.h ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h \
+  ../Geo/MEdge.h meshGFaceDelaunayInsertion.h BackgroundMesh.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/Pair.h ../Geo/MVertex.h ../Common/Context.h ../Geo/GPoint.h \
+  ../Geo/GModel.h ../Geo/GFace.h ../Geo/GRegion.h ../Common/Message.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h qualityMeasures.h Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Common/OS.h
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Common/OS.h
 meshGFaceDelaunayInsertion.o: meshGFaceDelaunayInsertion.cpp BDS.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h BackgroundMesh.h \
-  meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceOptimize.h meshGFace.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  meshGFaceOptimize.h ../Geo/MEdge.h meshGFace.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Common/Message.h ../Common/Context.h
 meshGFaceOptimize.o: meshGFaceOptimize.cpp meshGFaceOptimize.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceDelaunayInsertion.h qualityMeasures.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h BackgroundMesh.h
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h \
+  ../Geo/MEdge.h meshGFaceDelaunayInsertion.h qualityMeasures.h \
+  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h \
+  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h \
+  ../Geo/SPoint2.h ../Geo/Pair.h ../Geo/GEdge.h ../Geo/GVertex.h \
+  ../Geo/MVertex.h BackgroundMesh.h
 meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \
+  ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h BackgroundMesh.h qualityMeasures.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
-  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/gmshRegion.h ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/GRegion.h BDS.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Common/Message.h ../Common/Context.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Geo/GRegion.h ../Geo/GFace.h ../Geo/GEdge.h ../Geo/gmshRegion.h \
+  ../Geo/Geo.h ../Geo/gmshSurface.h ../Numeric/Numeric.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h BDS.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
+  ../Post/ColorTable.h ../Common/Message.h ../Common/Context.h
 meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   ../Common/OS.h BackgroundMesh.h meshGRegion.h meshGRegionLocalMeshMod.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \
+  ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h qualityMeasures.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Geo/SBoundingBox3d.h ../Common/Message.h
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Geo/GRegion.h ../Common/Message.h
 meshGRegionTransfinite.o: meshGRegionTransfinite.cpp meshGFace.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MElement.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h \
-  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Common/Context.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Common/Context.h ../Common/Message.h
 meshGRegionExtruded.o: meshGRegionExtruded.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h meshGFace.h meshGRegion.h \
-  ../Common/Context.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h meshGFace.h meshGRegion.h ../Common/Context.h \
+  ../Common/Message.h
 meshGRegionCarveHole.o: meshGRegionCarveHole.cpp ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Common/Message.h
 meshGRegionLocalMeshMod.o: meshGRegionLocalMeshMod.cpp \
   meshGRegionLocalMeshMod.h meshGRegionDelaunayInsertion.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Geo/MFace.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BackgroundMesh.h \
-  qualityMeasures.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Common/Message.h
+  qualityMeasures.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Common/Message.h
 DivideAndConquer.o: DivideAndConquer.cpp ../Common/Message.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h DivideAndConquer.h \
   ../DataStr/Malloc.h
 BackgroundMesh.o: BackgroundMesh.cpp ../Common/Message.h BackgroundMesh.h \
   ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h Field.h \
-  ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GModel.h ../Geo/GFace.h \
+  ../Geo/GRegion.h Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h
 qualityMeasures.o: qualityMeasures.cpp qualityMeasures.h BDS.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Geo/MVertex.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 BoundaryLayer.o: BoundaryLayer.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h BoundaryLayer.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h BoundaryLayer.h \
   ../Geo/ExtrudeParams.h ../Common/SmoothData.h meshGEdge.h meshGFace.h \
   ../Common/Message.h
 BDS.o: BDS.cpp ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h BDS.h \
   ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Common/Message.h \
-  meshGFaceDelaunayInsertion.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Post/PView.h ../Post/PViewData.h \
+  ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h ../Post/ColorTable.h \
+  ../Common/Message.h meshGFaceDelaunayInsertion.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
   qualityMeasures.h
 HighOrder.o: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  meshGFaceOptimize.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  meshGFaceDelaunayInsertion.h ../Common/Message.h ../Common/OS.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
-  ../Common/GmshMatrix.h ../Numeric/FunctionSpace.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h meshGFaceOptimize.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h \
+  ../Geo/MEdge.h meshGFaceDelaunayInsertion.h ../Common/Message.h \
+  ../Common/OS.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Common/Context.h ../Common/GmshMatrix.h ../Numeric/FunctionSpace.h \
+  ../Common/GmshMatrix.h
diff --git a/Parser/Makefile b/Parser/Makefile
index 10482bc7bb3948d708a5a41ee7e5e88815d19ad9..50a231a43036b8ec37ff3b28e46b679084049a76 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.146 2008-03-19 17:34:56 geuzaine Exp $
+# $Id: Makefile,v 1.147 2008-04-06 02:33:54 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -71,67 +71,59 @@ depend:
 Gmsh.tab.o: Gmsh.tab.cpp ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
   ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
-  ../Post/ColorTable.h ../Post/PView.h ../Post/PViewData.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../Common/GmshMatrix.h ../Parallel/ParUtil.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Context.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/GeoInterpolation.h ../Geo/Geo.h \
-  ../Mesh/Generator.h ../Graphics/Draw.h ../Common/Colors.h \
-  ../Common/Options.h Parser.h OpenFile.h ../Common/CommandLine.h \
-  FunctionManager.h ../Common/OS.h CreateFile.h ../Mesh/Field.h \
-  ../Mesh/BackgroundMesh.h
+  ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/GmshMatrix.h ../Parallel/ParUtil.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Context.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/Geo.h ../Common/GmshDefines.h \
+  ../Geo/gmshSurface.h ../Numeric/Numeric.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/GeoInterpolation.h ../Geo/Geo.h ../Mesh/Generator.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Post/PView.h \
+  ../Post/PViewDataList.h ../Common/Options.h ../Common/Colors.h \
+  ../Common/Options.h Parser.h ../DataStr/List.h ../DataStr/Tree.h \
+  OpenFile.h ../Common/CommandLine.h FunctionManager.h \
+  ../Post/ColorTable.h ../Common/OS.h CreateFile.h ../Geo/gmshSurface.h \
+  ../Mesh/Field.h ../Geo/Geo.h ../Post/PView.h ../Mesh/BackgroundMesh.h
 Gmsh.yy.o: Gmsh.yy.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Geo/Geo.h ../Common/GmshDefines.h \
   ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h Gmsh.tab.hpp
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
+  ../Numeric/Numeric.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  Gmsh.tab.hpp
 OpenFile.o: OpenFile.cpp ../Common/Message.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/Context.h Parser.h OpenFile.h ../Common/CommandLine.h \
-  ../Post/PView.h ../Post/PViewData.h ../Post/PViewOptions.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/GPoint.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h \
+  ../Numeric/Numeric.h ../Common/Context.h Parser.h ../DataStr/List.h \
+  ../DataStr/Tree.h OpenFile.h ../Common/CommandLine.h ../Post/PView.h \
+  ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Post/PViewOptions.h \
   ../Post/ColorTable.h ../Graphics/ReadImg.h ../Common/OS.h \
-  ../Mesh/HighOrder.h ../Common/GmshUI.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 ../Mesh/Field.h
+  ../Mesh/HighOrder.h ../Geo/GModel.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Graphics/SelectBuffer.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Fltk/GUI.h ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
+  ../Common/GmshUI.h ../Post/ColorTable.h ../Fltk/Popup_Button.h \
+  ../Fltk/SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
+  ../Post/PView.h
 CreateFile.o: CreateFile.cpp ../Common/Message.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h OpenFile.h ../Common/Context.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Common/GmshDefines.h OpenFile.h ../Common/Context.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/GmshUI.h \
   ../Graphics/gl2ps.h ../Graphics/gl2gif.h ../Graphics/PixelBuffer.h \
-  ../DataStr/Malloc.h ../Graphics/Draw.h ../Graphics/gl2jpeg.h \
-  ../Graphics/PixelBuffer.h ../Graphics/gl2png.h \
-  ../Graphics/PixelBuffer.h ../Graphics/gl2ppm.h \
-  ../Graphics/PixelBuffer.h ../Graphics/gl2yuv.h \
-  ../Graphics/PixelBuffer.h
+  ../Common/GmshUI.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h ../Graphics/gl2jpeg.h \
+  ../Graphics/gl2png.h ../Graphics/gl2ppm.h ../Graphics/gl2yuv.h
 FunctionManager.o: FunctionManager.cpp FunctionManager.h
diff --git a/Plugin/GSHHS.cpp b/Plugin/GSHHS.cpp
index 4f26ae0ccccfea48b3627ca722b32ec8ed4271df..68475b646d7964282ca4cea11f6101d19d99d9e4 100644
--- a/Plugin/GSHHS.cpp
+++ b/Plugin/GSHHS.cpp
@@ -1,4 +1,3 @@
-// $Id: GSHHS.cpp,v 1.6 2008-03-25 20:25:35 remacle Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -22,42 +21,285 @@
 #include "GSHHS.h"
 #include "Field.h"
 #include "GModel.h"
-#include "GeoStringInterface.h"
 #include <sstream>
-#include <iostream>
-#include "Context.h"
-#include "GeoEarthImport.h"
-extern Context_T CTX;
+#include <fstream>
+/*static void projectInvStereo(Point &pplan,Point3D &psphere){
+	double rp2=pplan.x*pplan.x+pplan.y*pplan.y;
+	psphere.z= (4-rp2)/(4+rp2);
+	psphere.x= (1+psphere.z)/2*pplan.x;
+	psphere.y= (1+psphere.z)/2*pplan.y;
+	psphere.zone_id=pplan.zone_id;
+}
+static void projectStereo(Point3D &psphere,Point &pplan){
+	pplan.x=2*psphere.x/(psphere.z+1);
+	pplan.y=2*psphere.y/(psphere.z+1);
+	pplan.zone_id=psphere.zone_id;
+}*/
+// ************** Coordinate Systems *************
+class coordinate_system{
+  public:
+  virtual void to_cartesian(const SPoint3 coord, SPoint3 &cartesian)=0;
+  virtual void from_cartesian(const SPoint3 cartesian, SPoint3 &coord)=0;
+};
+// ************** Longitude Latitude ***************
+class coordinate_lonlat:public coordinate_system{
+  public:
+  void to_cartesian(const SPoint3 ll, SPoint3 &xyz){
+    double clat = cos(ll.y());
+    xyz.setPosition( clat * cos(ll.x()), clat * sin(ll.x()), sin(ll.y()));
+  }
+  void from_cartesian(const SPoint3 xyz, SPoint3 &ll){
+    double r=sqrt(xyz.x()*xyz.x()+xyz.y()*xyz.y()+xyz.z()*xyz.z());
+    ll.setPosition( atan2(xyz.y(),xyz.x()), asin(xyz.z()/r), 0);
+  }
+};
+
+// ************** UTM ************** 
+class coordinate_utm :public coordinate_system{
+  int zone;
+  coordinate_lonlat ll;
+  double a, b, n, n2, n3, n4, n5, e, e2, e1, e12, e13, e14, J1, J2, J3, J4,
+    Ap, Bp, Cp, Dp, Ep, e4, e6, ep, ep2, ep4, k0, mu_fact;
+  public:
+  static int get_zone_from_longitude(double lon){
+    return (int)ceil((lon / M_PI + 1) * 30);
+  }
+  double meridionalarc(double lon, double lat){
+    return Ap * lat + Bp * sin(2 * lat) + Cp * sin(4 * lat) +
+      Dp * sin(6 * lat) + Ep;
+  }
+  void from_cartesian( SPoint3 xyz,SPoint3 &utm) {
+    ll.from_cartesian(xyz,xyz);
+    double S = meridionalarc(xyz.x(),xyz.y());
+    double slat = sin(xyz.y());
+    double clat = cos(xyz.y());
+    double slat2 = slat * slat;
+    double clat2 = clat * clat;
+    double clat3 = clat2 * clat;
+    double clat4 = clat3 * clat;
+    double tlat2 = slat2 / clat2;
+    double nu = a / sqrt(1 - e * e * slat2);
+    double p = xyz.x() - ((zone - 0.5) / 30 - 1) * M_PI;
+    double p2 = p * p;
+    double p3 = p * p2;
+    double p4 = p2 * p2;
+    utm.setPosition(
+      k0 * nu * clat * p + (k0 * nu * clat3 / 6) 
+        * (1 - tlat2 + ep2 * clat2) * p3 + 5e5,
+      S * k0 + k0 * nu * slat * clat / 2 * p2 
+        + k0 * nu * slat * clat3 / 24 
+          * (5 - tlat2 + 9 * ep2 * clat2 + 4 * ep4 * clat4) * p4,
+      0);
+  }
+  void to_cartesian(const SPoint3 utm, SPoint3 &xyz){
+    double mu = utm.y() * mu_fact;
+    double fp =
+      mu + J1 * sin(2 * mu) + J2 * sin(4 * mu) + J3 * sin(6 * mu) +
+      J4 * sin(8 * mu);
+    double cfp = cos(fp);
+    double cfp2 = cfp * cfp;
+    double sfp = sin(fp);
+    double sfp2 = sfp * sfp;
+    double c1 = ep2 * cfp2;
+    double c12 = c1 * c1;
+    double t1 = sfp2 / cfp2;
+    double t12 = t1 * t1;
+    double r1 = a * (1 - e2) / pow((1 - e2 * sfp2), 1.5);
+    double n1 = a / sqrt(1 - e2 * sfp2);
+    double d = (utm.x() - 5e5) / (n1 * k0);
+    double d2 = d * d;
+    double d3 = d2 * d;
+    double d4 = d2 * d2;
+    double d5 = d4 * d;
+    double d6 = d4 * d2;
+    xyz.setPosition(
+      ((zone - 0.5) / 30 - 1) * M_PI + (d - (1 + 2 * t1 + c1) * d3 / 6 +
+                                            (5 - 2 * c1 + 28 * t1 - 3 * c12 +
+                                             8 * ep2 +
+                                             24 * t12) * d5 / 120) / cfp,
+      fp - n1 * sfp / cfp / r1 
+        * (d2 / 2 - (5 + 3 * t1 + 10 * c1 - 4 * c12 - 9 * ep2) * d4 / 24 
+           + (61 + 90 * t1 + 298 * c1 + 45 * t12 - 3 * c12 - 252 * ep2) * d6 / 720),
+      0);
+    ll.to_cartesian(xyz,xyz);
+  }
+  coordinate_utm(int _zone, double _a = 6378137, double _b = 6356752.3142) {
+    /* see http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM */
+    a = _a;     /* Equatorial Radius*/
+    b = _b;     /* Rayon Polar Radius*/
+    zone=_zone;
+    n = (a - b) / (a + b);
+    n2 = n * n;
+    n3 = n * n * n;
+    n4 = n * n * n * n;
+    n5 = n * n * n * n * n;
+    e = sqrt(1 - b * b / a / a);
+    e2 = e * e;
+    e1 = (1 - sqrt(1 - e2)) / (1 + sqrt(1 - e2));
+    e12 = e1 * e1;
+    e13 = e1 * e1 * e1;
+    e14 = e1 * e1 * e1 * e1;
+    J1 = (3 * e1 / 2 - 27 * e13 / 32);
+    J2 = (21 * e12 / 16 - 55 * e14 / 32);
+    J3 = 151 * e13 / 96;
+    J4 = 1097 * e14 / 512;
+    Ap = a * (1 - n + (5. / 4.) * (n2 - n3) + (81. / 64.) * (n4 - n5));
+    Bp = -3 * a * n / 2 * (1 - n + (7. / 8.) * (n2 - n3) +
+                        (55. / 64.) * (n4 - n5));
+    Cp = 14 * a * n2 / 16 * (1 - n + (3. / 4) * (n2 - n3));
+    Dp = -35 * a * n3 / 48 * (1 - n + 11. / 16. * (n2 - n3));
+    Ep = +315 * a * n4 / 51 * (1 - n);
+    e4 = e2 * e2;
+    e6 = e2 * e2 * e2;
+    ep = e * a / b;
+    ep2 = ep * ep;
+    ep4 = ep2 * ep2;
+    k0 = 0.9996;
+    mu_fact = 1 / (k0 * a * (1 - e2 / 4 - 3 * e4 / 64 - 5 * e6 / 256));
+  }
+};
+class GeoEarthImport
+{
+  Field *size_field;
+  std::ostringstream loop_buff, surface_buff;;
+  std::string filename;
+  std::ofstream *file;
+  int il, ip, is, ill, ifi;
+  int first_point_in_loop, first_point_in_surface,first_point_in_attractor;
+  bool empty_surface;
+  SPoint3 lastpoint;
+  coordinate_system *c_syst;
+  void new_attractor(){
+    first_point_in_attractor = ip;
+  }
+  void new_surface() {
+    surface_buff.str("");
+    surface_buff << "Plane Surface( IS + " << is++ << " ) = { ";
+    first_point_in_surface = ip;
+    bool empty_surface = true;
+  }
+  void new_loop(){
+    loop_buff.str("");
+    first_point_in_loop = ip;
+  }
+
+  public:
+  void set_coordinate_system(coordinate_system *_c_syst){
+    c_syst=_c_syst;
+  }
+  GeoEarthImport(const std::string _filename, bool  write_polar_sphere){
+    c_syst=NULL;
+    filename = _filename;
+    file=new std::ofstream(filename.c_str());
+    size_field = NULL;
+    loop_buff.precision(16);
+    std::ostringstream buff;
+    il = ip = ill = is = ifi = 0;
+    buff << "IP = newp;\n";
+    buff << "IL = newl;\n";
+    buff << "ILL = newll;\n";
+    buff << "IS = news;\n";
+    buff << "IFI = newf;\n";
+    if(write_polar_sphere){
+      buff << "Point ( IP + " << ip++ << " ) = {0, 0, 0 , lc};\n";
+      buff << "Point ( IP + " << ip++ << " ) = {0, 0, 6.371e6 , lc};\n";
+      buff << "PolarSphere ( IS + " << is++ << " ) = {IP , IP+1};\n";
+    }
+    *file << buff.str();
+    new_surface();
+    new_attractor();
+    new_loop();
+  }
+  ~GeoEarthImport(){
+    //file << "Euclidian Coordinates;";
+    file->close();
+  }
+  void set_size_field(Field * _size_field){
+    size_field = _size_field;
+  }
+  void add_point(SPoint3 point){
+    double d=0;
+    if(c_syst)
+      c_syst->to_cartesian(point,point);
+    if(size_field)
+      d=(*size_field)(point[0]* 6361e3,point[1]* 6361e3,point[2]* 6361e3);
+    if(d<0)return;
+    if(ip == first_point_in_loop || !size_field
+      || point.distance(lastpoint) * 6361e3 
+        > std::min(d, (*size_field) (lastpoint[0],lastpoint[1],lastpoint[2]))) {
+      SPoint2 stereo(-point.x() / (1 + point.z()), -point.y() / (1 + point.z()));
+      loop_buff << "Point ( IP + " << ip++ << " ) = {" << stereo.
+      x() << ", " << stereo.y() << ", " << 0 << ", lc};\n";
+      lastpoint = point;
+    }
+  }
+  void end_loop(bool closed=true) {
+    if(ip - first_point_in_loop > 3) {
+      loop_buff << "BSpline ( IL + " << il++ << " ) = { IP + " <<
+        first_point_in_loop << " : IP + " << ip - 1 ;
+      if(closed) loop_buff<< ", IP + " << first_point_in_loop;
+      loop_buff<< " };\n";
+      if(closed){
+        loop_buff << "Line Loop ( ILL + " << ill++ << " ) = { IL + " << il -
+          1 << " };";
+      }
+      *file << loop_buff.str();
+      if(closed){
+        if(!empty_surface)
+          surface_buff << ", ";
+        surface_buff << "ILL + " << ill - 1;
+        empty_surface = false;
+      }
+    }
+    else {
+      ip = first_point_in_loop;
+    }
+    new_loop();
+  }
+  void end_surface(){
+    if(!empty_surface) {
+      surface_buff << "};\n";
+      surface_buff.str("");
+      *file << surface_buff.str()<<"\n";
+    }
+    new_surface();
+  }
+  void end_attractor(){
+    *file << "Field [ IFI + " << ifi << "]  = Attractor;\n";
+    *file << "Field [ IFI + " << ifi++ << "].NodesList  = { IP + " <<
+      first_point_in_attractor << " : IP + " << ip - 1 << " };";
+    new_attractor();
+  }
+};
 
-// ************** GSHHS ************** 
-/*      $Id: GSHHS.cpp,v 1.6 2008-03-25 20:25:35 remacle Exp $
+/*      $Id: GSHHS.cpp,v 1.7 2008-04-06 02:33:54 remacle Exp $
  *
- * PROGRAM:     gshhs.c
- * AUTHOR:      Paul Wessel (pwessel@hawaii.edu)
- * CREATED:     JAN. 28, 1996
- * PURPOSE:     To extract ASCII data from binary shoreline data
- *              as described in the 1996 Wessel & Smith JGR Data Analysis Note.
- * VERSION:     1.1 (Byte flipping added)
- *              1.2 18-MAY-1999:
- *                 Explicit binary open for DOS systems
- *                 POSIX.1 compliant
- *              1.3 08-NOV-1999: Released under GNU GPL
- *              1.4 05-SEPT-2000: Made a GMT supplement; FLIP no longer needed
- *              1.5 14-SEPT-2004: Updated to deal with latest GSHHS database (1.3)
+ * PROGRAM:	gshhs.c
+ * AUTHOR:	Paul Wessel (pwessel@hawaii.edu)
+ * CREATED:	JAN. 28, 1996
+ * PURPOSE:	To extract ASCII data from binary shoreline data
+ *		as described in the 1996 Wessel & Smith JGR Data Analysis Note.
+ * VERSION:	1.1 (Byte flipping added)
+ *		1.2 18-MAY-1999:
+ *		   Explicit binary open for DOS systems
+ *		   POSIX.1 compliant
+ *		1.3 08-NOV-1999: Released under GNU GPL
+ *		1.4 05-SEPT-2000: Made a GMT supplement; FLIP no longer needed
+ *		1.5 14-SEPT-2004: Updated to deal with latest GSHHS database (1.3)
  *
- *      Copyright (c) 1996-2004 by P. Wessel and W. H. F. Smith
- *      See COPYING file for copying and redistribution conditions.
+ *	Copyright (c) 1996-2004 by P. Wessel and W. H. F. Smith
+ *	See COPYING file for copying and redistribution conditions.
  *
- *      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; version 2 of the License.
+ *	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; version 2 of the License.
  *
- *      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.
+ *	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.
  *
- *      Contact info: www.soest.hawaii.edu/pwessel */
+ *	Contact info: www.soest.hawaii.edu/pwessel */
 /* For byte swapping on little-endian systems (GSHHS is bigendian) */
 #define swabi2(i2) (((i2) >> 8) + (((i2) & 255) << 8))
 #define swabi4(i4) (((i4) >> 24) + (((i4) >> 8) & 65280) + (((i4) & 65280) << 8) + (((i4) & 255) << 24))
@@ -93,7 +335,7 @@ void import_gshhs(FILE * fp, GeoEarthImport & geo_import)
 {
   double w, e, s, n;
   char source;
-  int k, max_east = 270000000, n_read, flip;
+  int k, max_east = 270000000, info, n_read, flip;
   struct POINT p;
   struct GSHHS h;
   while(1) {
@@ -135,155 +377,29 @@ void import_gshhs(FILE * fp, GeoEarthImport & geo_import)
         p.x = swabi4((unsigned int)p.x);
         p.y = swabi4((unsigned int)p.y);
       }
-      SPoint2 ll(((h.greenwich
-                   && p.x >
-                   max_east) ? p.x * 1.0e-6 -
-                  360.0 : p.x * 1.0e-6) * M_PI / 180,
-                 (p.y * 1.0e-6) * M_PI / 180);
-      geo_import.add_point_lon_lat(ll);
+      geo_import.add_point(SPoint3(
+        M_PI / 180*((h.greenwich && p.x > max_east) ? p.x * 1.0e-6 - 360.0
+                                                    : p.x * 1.0e-6),
+        (p.y * 1.0e-6) * M_PI / 180,
+        0));
     }
     geo_import.end_loop();
   }
   geo_import.end_surface();
+  geo_import.end_attractor();
 }
 
 
-// ************** UTM ************** 
-#include "math.h"
-#include "stdio.h"
-class UTM
-{
-  public:double x, y;
-  int zone;
-    UTM():x(0), y(0), zone(-1)
-  {
-  };
-  UTM(double _x, double _y, int _zone):x(_x), y(_y), zone(_zone)
-  {
-  };
-};
-class UTMConverter
-{
-  double meridionalarc(double lat, double lon);
-  double a, b, n, n2, n3, n4, n5, e, e2, e1, e12, e13, e14, J1, J2, J3, J4,
-    Ap, Bp, Cp, Dp, Ep, e4, e6, ep, ep2, ep4, k0, mu_fact;
-    public: void latlon2utm(double lat, double lon, UTM & utm);
-  void utm2latlon(UTM & utm, double &lat, double &lon);
-    UTMConverter(double _a = 6378137, double _b = 6356752.3142) {
-    /* see http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM */
-    a = _a;     /* Rayon Equatorial */
-    b = _b;                     /* Rayon Polaire */
-    n = (a - b) / (a + b);
-    n2 = n * n;
-    n3 = n * n * n;
-    n4 = n * n * n * n;
-    n5 = n * n * n * n * n;
-    e = sqrt(1 - b * b / a / a);
-    e2 = e * e;
-    e1 = (1 - sqrt(1 - e2)) / (1 + sqrt(1 - e2));
-    e12 = e1 * e1;
-    e13 = e1 * e1 * e1;
-    e14 = e1 * e1 * e1 * e1;
-    J1 = (3 * e1 / 2 - 27 * e13 / 32);
-    J2 = (21 * e12 / 16 - 55 * e14 / 32);
-    J3 = 151 * e13 / 96;
-    J4 = 1097 * e14 / 512;
-    Ap = a * (1 - n + (5. / 4.) * (n2 - n3) + (81. / 64.) * (n4 - n5));
-    Bp =
-      -3 * a * n / 2 * (1 - n + (7. / 8.) * (n2 - n3) +
-                        (55. / 64.) * (n4 - n5));
-    Cp = 14 * a * n2 / 16 * (1 - n + (3. / 4) * (n2 - n3));
-    Dp = -35 * a * n3 / 48 * (1 - n + 11. / 16. * (n2 - n3));
-    Ep = +315 * a * n4 / 51 * (1 - n);
-    e4 = e2 * e2;
-    e6 = e2 * e2 * e2;
-    ep = e * a / b;
-    ep2 = ep * ep;
-    ep4 = ep2 * ep2;
-    k0 = 0.9996;
-    mu_fact = 1 / (k0 * a * (1 - e2 / 4 - 3 * e4 / 64 - 5 * e6 / 256));
-  }
-};
-
-
-double UTMConverter::meridionalarc(double lat, double lon)
-{
-  return Ap * lat + Bp * sin(2 * lat) + Cp * sin(4 * lat) +
-    Dp * sin(6 * lat) + Ep;
-}
-
-void UTMConverter::utm2latlon(UTM & utm, double &lat, double &lon)
-{
-  double mu = utm.y * mu_fact;
-  double fp =
-    mu + J1 * sin(2 * mu) + J2 * sin(4 * mu) + J3 * sin(6 * mu) +
-    J4 * sin(8 * mu);
-  double cfp = cos(fp);
-  double cfp2 = cfp * cfp;
-  double sfp = sin(fp);
-  double sfp2 = sfp * sfp;
-  double c1 = ep2 * cfp2;
-  double c12 = c1 * c1;
-  double t1 = sfp2 / cfp2;
-  double t12 = t1 * t1;
-  double r1 = a * (1 - e2) / pow((1 - e2 * sfp2), 1.5);
-  double n1 = a / sqrt(1 - e2 * sfp2);
-  double d = (utm.x - 5e5) / (n1 * k0);
-  double d2 = d * d;
-  double d3 = d2 * d;
-  double d4 = d2 * d2;
-  double d5 = d4 * d;
-  double d6 = d4 * d2;
-  lat =
-    fp - n1 * sfp / cfp / r1 * (d2 / 2 -
-                                (5 + 3 * t1 + 10 * c1 - 4 * c12 -
-                                 9 * ep2) * d4 / 24 + (61 + 90 * t1 +
-                                                       298 * c1 + 45 * t12 -
-                                                       3 * c12 -
-                                                       252 * ep2) * d6 / 720);
-  lon =
-    ((utm.zone - 0.5) / 30 - 1) * M_PI + (d - (1 + 2 * t1 + c1) * d3 / 6 +
-                                          (5 - 2 * c1 + 28 * t1 - 3 * c12 +
-                                           8 * ep2 +
-                                           24 * t12) * d5 / 120) / cfp;
-}
-
-void UTMConverter::latlon2utm(double lat, double lon, UTM & utm)
-{
-  if(utm.zone == -1)
-    utm.zone = (int)ceil((lon / M_PI + 1) * 30);
-  double S = meridionalarc(lat, lon);
-  double slat = sin(lat);
-  double clat = cos(lat);
-  double slat2 = slat * slat;
-  double clat2 = clat * clat;
-  double clat3 = clat2 * clat;
-  double clat4 = clat3 * clat;
-  double tlat2 = slat2 / clat2;
-  double nu = a / sqrt(1 - e * e * slat2);
-  double p = lon - ((utm.zone - 0.5) / 30 - 1) * M_PI;
-  double p2 = p * p;
-  double p3 = p * p2;
-  double p4 = p2 * p2;
-  utm.y =
-    S * k0 + k0 * nu * slat * clat / 2 * p2 +
-    k0 * nu * slat * clat3 / 24 * (5 - tlat2 + 9 * ep2 * clat2 +
-                                   4 * ep4 * clat4) * p4;
-  utm.x =
-    k0 * nu * clat * p + (k0 * nu * clat3 / 6) * (1 - tlat2 +
-                                                  ep2 * clat2) * p3 + 5e5;
-}
-
 // ************** MAIN PLUGIN ************** 
 StringXNumber GSHHSOptions_Number[] = {
   {GMSH_FULLRC, "iField", NULL, -1.},
+  {GMSH_FULLRC, "UTMZone", NULL, 0},
   {GMSH_FULLRC, "UTMEquatorialRadius", NULL, 6378137},
   {GMSH_FULLRC, "UTMPolarRadius", NULL, 6356752.3142},
   {GMSH_FULLRC, "UTMScale", NULL, 1},
   {GMSH_FULLRC, "UTMShiftX", NULL, 0},
   {GMSH_FULLRC, "UTMShiftY", NULL, 0},
-  {GMSH_FULLRC, "UTMZone", NULL, 0}
-
+  {GMSH_FULLRC, "WritePolarSphere",NULL,1}
 };
 StringXString GSHHSOptions_String[] = {
   {GMSH_FULLRC, "InFileName", NULL, "gshhs_c.b"},
@@ -340,12 +456,33 @@ void GMSH_GSHHSPlugin::catchErrorMessage(char *errorMessage) const
 
 PView *GMSH_GSHHSPlugin::execute(PView * v)
 {
+  void projector(SPoint2,SPoint3);
   int iField = (int)GSHHSOptions_Number[0].def;
-  char *filename=(char*)GSHHSOptions_String[0].def;
-  char *outfilename=(char*)GSHHSOptions_String[1].def;
-  Field *field=NULL;
-  GeoEarthImport geo_import(outfilename);
-  if(iField!=-1){
+  char *filename = (char *)GSHHSOptions_String[0].def;
+  char *outfilename = (char *)GSHHSOptions_String[1].def;
+  std::string format(GSHHSOptions_String[2].def);
+  std::string coordinate_name(GSHHSOptions_String[3].def);
+  double scale = GSHHSOptions_Number[4].def;
+  double shiftx = GSHHSOptions_Number[5].def;
+  double shifty = GSHHSOptions_Number[6].def;
+  bool write_polar_sphere = (bool)GSHHSOptions_Number[7].def;
+  int utm_zone=(int)GSHHSOptions_Number[1].def;
+  double utm_equatorial_radius=(double)GSHHSOptions_Number[2].def;
+  double utm_polar_radius=(double)GSHHSOptions_Number[3].def;
+  coordinate_lonlat lonlat;
+  coordinate_utm utm(utm_zone, utm_equatorial_radius, utm_polar_radius);
+  GeoEarthImport geo_import(outfilename,write_polar_sphere);
+  if(coordinate_name == "lonlat")
+    geo_import.set_coordinate_system(&lonlat);
+  else if(coordinate_name == "utm")
+    geo_import.set_coordinate_system(&utm);
+  else if(coordinate_name != "cartesian"){
+    Msg(GERROR, "gshhs: Unknown coordinate system %s.\n",
+      coordinate_name.c_str());
+    return NULL;
+  }
+  Field *field = NULL;
+  if (iField != -1) {
     field = GModel::current()->getFields()->get(iField);
     if(!field){
       Msg(GERROR, "Field[%d] does not exist", iField);
@@ -359,53 +496,26 @@ PView *GMSH_GSHHSPlugin::execute(PView * v)
     Msg(GERROR, "gshhs: Could not find file %s.\n", filename);
     return NULL;
   }
-  double w, e, s, n;
-  char source;
-  int	k, max_east = 270000000, info, n_read, flip;
-  struct	POINT p;
-  struct GSHHS h;
-  while(1){
-    n_read = fread ((void *)&h, (size_t)sizeof (struct GSHHS), (size_t)1, fp);
-    if(n_read!=1)break;
-    flip = (! (h.level > 0 && h.level < 5));	/* Take as sign that byte-swabbing is needed */
-    if (flip) {
-      h.id = swabi4 ((unsigned int)h.id);
-      h.n  = swabi4 ((unsigned int)h.n);
-      h.level = swabi4 ((unsigned int)h.level);
-      h.west  = swabi4 ((unsigned int)h.west);
-      h.east  = swabi4 ((unsigned int)h.east);
-      h.south = swabi4 ((unsigned int)h.south);
-      h.north = swabi4 ((unsigned int)h.north);
-      h.area  = swabi4 ((unsigned int)h.area);
-      h.version  = swabi4 ((unsigned int)h.version);
-      h.greenwich = swabi2 ((unsigned int)h.greenwich);
-      h.source = swabi2 ((unsigned int)h.source);
-    }
-    w = h.west  * 1.0e-6;	/* Convert from microdegrees to degrees */
-    e = h.east  * 1.0e-6;
-    s = h.south * 1.0e-6;
-    n = h.north * 1.0e-6;
-    source = (h.source == 1) ? 'W' : 'C';	/* Either WVS or CIA (WDBII) pedigree */
-    if ( h.level!=1) {	// Skip data (lake,island,pond)
-      fseek (fp, (long)(h.n * sizeof(struct POINT)), SEEK_CUR);
-      continue;
-    } 
-    for (k = 0; k < h.n; k++) {
-      if (fread ((void *)&p, (size_t)sizeof(struct POINT), (size_t)1, fp) != 1) {
-	Msg(GERROR, "gshhs:  Error reading gshhs file for polygon %d, point %d.\n",h.id, k);
-	return NULL;
-      }
-      if (flip) {
-	p.x = swabi4 ((unsigned int)p.x);
-	p.y = swabi4 ((unsigned int)p.y);
+  double x,y,z;
+  if(format == "gshhs") {
+    geo_import.set_coordinate_system(&lonlat);
+    import_gshhs(fp, geo_import);
+  }
+  else if(format == "loops2") {
+    int npoints_in_loop;
+    int closed;
+    while(fscanf(fp, "%d %d", &npoints_in_loop,&closed) == 2) {
+      for(int i = 0; i < npoints_in_loop; i++) {
+        if(fscanf(fp, "%le %le", &x, &y) != 2) {
+          Msg(GERROR, "gshhs:  Error reading loops2 file \'%s\'.\n", filename);
+          return NULL;
+        }
+        geo_import.add_point(SPoint3(x,y,0));
       }
-      SPoint2 ll(
-		 ((h.greenwich && p.x > max_east) ? p.x * 1.0e-6 - 360.0 : p.x * 1.0e-6)*M_PI/180,
-		 (p.y * 1.0e-6)*M_PI/180);
-      geo_import.add_point_lon_lat(ll);
+      geo_import.end_loop(closed);
     }
-    geo_import.end_loop();
-  } 
-  geo_import.end_surface();
+    geo_import.end_surface();
+    geo_import.end_attractor();
+   }
   return NULL;
 }
diff --git a/Plugin/GeoEarthImport.cpp b/Plugin/GeoEarthImport.cpp
deleted file mode 100644
index a98941c3c877bea39b21d90da68d46919cefb70f..0000000000000000000000000000000000000000
--- a/Plugin/GeoEarthImport.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "GeoEarthImport.h"
-GeoEarthImport::~GeoEarthImport(){
-  //  printf("oya\n");
-  //  myfile->close();
-  //  printf("oyo\n");
-  delete myfile;
-}
-GeoEarthImport::GeoEarthImport(const std::string &_filename)
-  : filename(_filename)
-{
-  myfile = new std::ofstream(filename.c_str());
-  size_field=NULL;
-  loop_buff.precision(16);
-  il=ip=ill=is=ifi=0;
-  (*myfile) << "IP = newp;\n";
-  (*myfile) << "IL = newl;\n";
-  (*myfile) << "ILL = newll;\n";
-  (*myfile) << "IS = news;\n";
-  (*myfile) << "IFI = newf;\n";
-  (*myfile) << "Point ( IP + " << ip++ << " ) = {0, 0, 0 , 1};\n";
-  (*myfile) << "Point ( IP + " << ip++ << " ) = {0, 0, 6.371e6 , 1};\n";
-  (*myfile) << "PolarSphere ( IS + " << is++ << " ) = {IP , IP+1};\n";
-  new_surface();
-  new_loop();  
-}
-void GeoEarthImport::set_size_field(Field *_size_field){
-  size_field=_size_field;
-}
-void GeoEarthImport::add_point(const SPoint3 &point){
-  SPoint3 midpoint = point;
-  SPoint2 stereo(-point.x()/(1+point.z()),-point.y()/(1+point.z()));
-  midpoint+=lastpoint;
-  midpoint/=2;  
-  //  printf("%g\n",sqrt(midpoint[0]*midpoint[0]+midpoint[1]*midpoint[1]+midpoint[2]*midpoint[2]));
-  if( ip==first_point_in_loop || !size_field || point.distance(lastpoint)*6361e3 > (*size_field)(midpoint[0]*6361e3,midpoint[1]*6361e3,midpoint[2]*6361e3)){
-    loop_buff<<"Point ( IP + "<<ip++<<" ) = {"<<stereo.x()<<", "<<stereo.y()<<", "<<0<<", 1};\n";
-    lastpoint=point;
-  }
-}
-void GeoEarthImport::add_point_lon_lat(const SPoint2 &ll){
-  SPoint3 xyz( cos(ll.y())*cos(ll.x()), cos(ll.y())*sin(ll.x()), sin(ll.y()));
-  add_point(xyz);
-}
-void GeoEarthImport::new_loop(){
-  loop_buff.str("");
-  first_point_in_loop=ip;
-}
-void GeoEarthImport::end_loop(){
-  if(ip-first_point_in_loop>3){
-    loop_buff<<"BSpline ( IL + "<<il++<<" ) = { IP + "<<first_point_in_loop<<" : IP + "<<ip-1<<", IP + "<<first_point_in_loop<<" };\n";
-    loop_buff<<"Line Loop ( ILL + "<<ill++<<" ) = { IL + "<<il-1<<" };";
-    (*myfile)<<loop_buff.str();	
-    if(!empty_surface)
-      surface_buff<<", ";
-    surface_buff<< "ILL + "<<ill-1;
-    empty_surface=false;
-  }else{
-    ip=first_point_in_loop;
-  }
-  new_loop();
-}
-void GeoEarthImport::new_surface(){
-  surface_buff.str("");
-  surface_buff<<"Plane Surface( IS + "<<is++<<" ) = { ";
-  first_point_in_surface=ip;
-  bool empty_surface=true;
-}
-void GeoEarthImport::end_surface(){
-  if(!empty_surface){
-    surface_buff<<"};\n";
-    surface_buff<<"Field [ IFI + "<<ifi<<"]  = Attractor;\n";
-    surface_buff<<"Field [ IFI + "<<ifi<<"].NodesList  = { IP + "<<first_point_in_surface <<" : IP + "<<ip-1<<" };";
-    ifi++;
-    (*myfile)<<surface_buff.str();	
-  }
-  new_surface();
-}
-
diff --git a/Plugin/GeoEarthImport.h b/Plugin/GeoEarthImport.h
deleted file mode 100644
index 88ffe745ee791b334b5001fa64c13d84fdb4a6d6..0000000000000000000000000000000000000000
--- a/Plugin/GeoEarthImport.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef _GEO_EARTH_IMPORT_H_
-#define _GEO_EARTH_IMPORT_H_
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include "SPoint3.h"
-#include "Field.h"
-#include "GeoStringInterface.h"
-class GeoEarthImport{
-  Field *size_field;
-  std::ostringstream loop_buff,surface_buff;;
-  std::string filename;
-  std::ofstream *myfile;
-  int il,ip,is,ill,ifi;
-  int first_point_in_loop,first_point_in_surface;
-  bool empty_surface;
-  SPoint3 lastpoint;
-  void new_surface();
-  void new_loop();
-  
- public :
-  GeoEarthImport(const std::string &_filename);
-  ~GeoEarthImport();
-  void set_size_field(Field *_size_field);
-  void add_point(const SPoint3 &point);
-  void add_point_lon_lat(const SPoint2 &ll);
-  void end_loop();
-  void end_surface();
-};
-#endif
diff --git a/Plugin/Makefile b/Plugin/Makefile
index 505cc1623b51f442c465843ebc5ff89bea8149c4..845143dc5df42c181a03cadc5b16b5febfaf0ec6 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.159 2008-03-25 21:18:46 geuzaine Exp $
+# $Id: Makefile,v 1.160 2008-04-06 02:33:54 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -41,7 +41,7 @@ SRC = Plugin.cpp PluginManager.cpp\
           TransformLatLon.cpp\
         Triangulate.cpp\
         Warp.cpp SphericalRaise.cpp\
-        Skin.cpp GSHHS.cpp GeoEarthImport.cpp\
+        Skin.cpp GSHHS.cpp \
         Extract.cpp ExtractElements.cpp ExtractEdges.cpp\
         MakeSimplex.cpp\
         Evaluate.cpp FieldView.cpp \
@@ -76,302 +76,279 @@ depend:
 Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h
 PluginManager.o: PluginManager.cpp Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h PluginManager.h CutMap.h Levelset.h CutGrid.h \
   StreamLines.h CutPlane.h CutParametric.h CutSphere.h Skin.h \
-  ../DataStr/Tree.h ../DataStr/avl.h Extract.h ExtractElements.h \
-  ExtractEdges.h HarmonicToTime.h ModulusPhase.h Integrate.h Gradient.h \
-  Curl.h Divergence.h Annotate.h Remove.h MakeSimplex.h Smooth.h \
-  Transform.h TransformLatLon.h Triangulate.h Warp.h SphericalRaise.h \
-  Eigenvectors.h Eigenvalues.h Lambda2.h Evaluate.h ../Post/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h Probe.h FieldView.h \
-  GSHHS.h ../Common/Context.h
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h Extract.h \
+  ExtractElements.h ExtractEdges.h HarmonicToTime.h ModulusPhase.h \
+  Integrate.h Gradient.h Curl.h Divergence.h Annotate.h Remove.h \
+  MakeSimplex.h Smooth.h Transform.h TransformLatLon.h Triangulate.h \
+  Warp.h SphericalRaise.h Eigenvectors.h Eigenvalues.h Lambda2.h \
+  Evaluate.h ../Post/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h Probe.h FieldView.h GSHHS.h \
+  ../Common/Context.h
 Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
-  ../Common/GmshMatrix.h MakeSimplex.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Common/GmshMatrix.h MakeSimplex.h ../DataStr/List.h \
+  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
 CutPlane.o: CutPlane.cpp CutPlane.h Levelset.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../DataStr/List.h \
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
+  ../Geo/SBoundingBox3d.h
 CutSphere.o: CutSphere.cpp CutSphere.h Levelset.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../DataStr/List.h \
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
+  ../Geo/SBoundingBox3d.h
 CutMap.o: CutMap.cpp CutMap.h Levelset.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/Context.h
 Smooth.o: Smooth.cpp Smooth.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h
 CutParametric.o: CutParametric.cpp ../Post/OctreePost.h \
   ../Common/Octree.h ../Common/OctreeInternals.h CutParametric.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Common/Context.h \
+  ../Common/GmshUI.h ../Graphics/Draw.h ../Geo/SBoundingBox3d.h
 Lambda2.o: Lambda2.cpp Lambda2.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Eigenvectors.o: Eigenvectors.cpp Eigenvectors.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../Numeric/EigSolve.h
 Eigenvalues.o: Eigenvalues.cpp Eigenvalues.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 StreamLines.o: StreamLines.cpp StreamLines.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Post/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h ../Common/Context.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h
 CutGrid.o: CutGrid.cpp ../Post/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h CutGrid.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h
 Transform.o: Transform.cpp Transform.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h
 TransformLatLon.o: TransformLatLon.cpp TransformLatLon.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h
 Triangulate.o: Triangulate.cpp ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/discreteFace.h ../Geo/GModel.h ../Geo/GFace.h ../Geo/Geo.h \
-  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/discreteFace.h ../Geo/GModel.h ../Geo/Geo.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Mesh/DivideAndConquer.h ../Common/Message.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h Triangulate.h Plugin.h \
-  ../Common/Options.h ../Post/ColorTable.h ../Post/PView.h \
-  ../Post/PViewData.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Mesh/DivideAndConquer.h ../Common/Message.h ../Geo/MVertex.h \
+  Triangulate.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
+  ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
+  ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/Context.h
 Warp.o: Warp.cpp Warp.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 SphericalRaise.o: SphericalRaise.cpp SphericalRaise.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Skin.o: Skin.cpp Skin.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Malloc.h \
-  ../Common/Context.h
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../DataStr/Malloc.h ../Common/Context.h
 GSHHS.o: GSHHS.cpp GSHHS.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Mesh/Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Geo/SBoundingBox3d.h ../Geo/GeoStringInterface.h \
-  ../Common/Context.h GeoEarthImport.h
-GeoEarthImport.o: GeoEarthImport.cpp GeoEarthImport.h ../Geo/SPoint3.h \
-  ../Mesh/Field.h ../Geo/Geo.h ../Common/GmshDefines.h \
-  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Numeric/Numeric.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Post/PView.h ../Post/PViewData.h \
-  ../Post/PViewOptions.h ../Post/ColorTable.h ../Geo/GeoStringInterface.h
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GRegion.h
 Extract.o: Extract.cpp Extract.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h
 ExtractElements.o: ExtractElements.cpp ExtractElements.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 ExtractEdges.o: ExtractEdges.cpp ExtractEdges.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h ../Mesh/BDS.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/Pair.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Mesh/BDS.h \
+  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h \
+  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Post/PView.h
 MakeSimplex.o: MakeSimplex.cpp MakeSimplex.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h
 Evaluate.o: Evaluate.cpp Evaluate.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Post/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h
 FieldView.o: FieldView.cpp FieldView.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Mesh/Field.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h \
-  ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/GEntity.h ../Geo/SBoundingBox3d.h
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/GRegion.h
 Integrate.o: Integrate.cpp Integrate.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Gradient.o: Gradient.cpp Gradient.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Curl.o: Curl.cpp Curl.h Plugin.h ../Common/Options.h ../Post/ColorTable.h \
   ../Common/Message.h ../Post/PView.h ../Post/PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Post/PViewOptions.h \
-  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/PViewData.h \
-  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
+  ../Post/ColorTable.h ../Post/PViewDataList.h ../Post/AdaptiveViews.h \
+  ../DataStr/List.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
   ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Divergence.o: Divergence.cpp Divergence.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/ShapeFunctions.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h
 Annotate.o: Annotate.cpp Annotate.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
   ../Fltk/GUI.h ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
-  ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h ../Mesh/Field.h \
-  ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
-  ../Numeric/NumericEmbedded.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Graphics/Draw.h
+  ../Common/GmshUI.h ../Post/ColorTable.h ../Fltk/Popup_Button.h \
+  ../Fltk/SpherePosition_Widget.h ../Mesh/Field.h ../Geo/Geo.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Post/PView.h ../Graphics/Draw.h ../Geo/SBoundingBox3d.h
 Remove.o: Remove.cpp Remove.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h
 Probe.o: Probe.cpp Probe.h Plugin.h ../Common/Options.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Common/GmshMatrix.h ../Common/Context.h ../Post/OctreePost.h \
   ../Common/Octree.h ../Common/OctreeInternals.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h
+  ../Graphics/Draw.h ../Geo/SBoundingBox3d.h
 HarmonicToTime.o: HarmonicToTime.cpp HarmonicToTime.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h
 ModulusPhase.o: ModulusPhase.cpp ModulusPhase.h Plugin.h \
   ../Common/Options.h ../Post/ColorTable.h ../Common/Message.h \
   ../Post/PView.h ../Post/PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h ../Post/PViewOptions.h ../Post/ColorTable.h \
-  ../Post/PViewDataList.h ../Post/PViewData.h ../Post/AdaptiveViews.h \
-  ../DataStr/List.h ../Common/GmshMatrix.h
+  ../Post/PViewDataList.h ../Post/AdaptiveViews.h ../DataStr/List.h \
+  ../Common/GmshMatrix.h ../Common/GmshMatrix.h
diff --git a/Post/Makefile b/Post/Makefile
index 3c24561d829b2ac2808cc1b84633c9c608fa7d7f..722f8af88b291b12649d7c12bd12657b8d1b433a 100644
--- a/Post/Makefile
+++ b/Post/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.38 2008-03-29 10:19:43 geuzaine Exp $
+# $Id: Makefile,v 1.39 2008-04-06 02:33:54 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -65,21 +65,19 @@ depend:
 PView.o: PView.cpp PView.h PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h PViewOptions.h ColorTable.h PViewDataList.h \
   AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
-  ../Common/VertexArray.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Common/Context.h ../Common/SmoothData.h ../Common/Message.h
+  ../Common/VertexArray.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Common/SmoothData.h ../Common/Message.h
 PViewIO.o: PViewIO.cpp PView.h PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h PViewOptions.h ColorTable.h PViewDataList.h \
   AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   PViewDataGModel.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Common/StringUtils.h ../Common/Message.h
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/Pair.h ../Geo/GRegion.h ../Common/StringUtils.h \
+  ../Common/Message.h
 PViewData.o: PViewData.cpp PViewData.h ../Geo/SBoundingBox3d.h \
-  ../Geo/SPoint3.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
+  ../Geo/SPoint3.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
+  ../Common/Message.h
 PViewDataIO.o: PViewDataIO.cpp ../Common/Message.h ../Numeric/Numeric.h \
   ../Numeric/NumericEmbedded.h PViewData.h ../Geo/SBoundingBox3d.h \
   ../Geo/SPoint3.h
@@ -96,28 +94,21 @@ PViewDataGModel.o: PViewDataGModel.cpp PViewDataGModel.h PViewData.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h PViewDataList.h \
   AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
-  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h
+  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
+  ../Geo/GRegion.h ../Geo/MElement.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Message.h
 PViewDataGModelIO.o: PViewDataGModelIO.cpp ../Common/Message.h \
   PViewDataGModel.h PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   PViewDataList.h AdaptiveViews.h ../DataStr/List.h \
   ../Common/GmshMatrix.h ../Geo/GModel.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
-  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/GFace.h ../Geo/GEntity.h \
-  ../Geo/GPoint.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GEntity.h \
-  ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h \
-  ../Common/StringUtils.h
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h \
+  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/MVertex.h \
+  ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MFace.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/StringUtils.h
 PViewOptions.o: PViewOptions.cpp PViewOptions.h ColorTable.h \
   ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/Message.h
 AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \
@@ -125,21 +116,17 @@ AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \
   ../Post/ColorTable.h ../Common/Message.h ../Post/PView.h \
   ../Post/PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
   ../Post/PViewOptions.h ../Post/ColorTable.h ../Post/PViewDataList.h \
-  ../Post/PViewData.h ../Post/AdaptiveViews.h
+  ../Post/AdaptiveViews.h ../DataStr/List.h ../Common/GmshMatrix.h
 OctreePost.o: OctreePost.cpp ../Common/Octree.h \
   ../Common/OctreeInternals.h OctreePost.h ../DataStr/List.h PView.h \
   PViewData.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h PViewOptions.h \
   ColorTable.h PViewDataList.h AdaptiveViews.h ../Common/GmshMatrix.h \
   PViewDataGModel.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
-  ../Geo/GFace.h ../Geo/GEntity.h ../Geo/GPoint.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/SBoundingBox3d.h \
-  ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h ../Common/Message.h \
-  ../Common/ShapeFunctions.h ../Geo/MElement.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h \
-  ../Geo/SVector3.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h
+  ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/GFace.h ../Geo/GEdgeLoop.h \
+  ../Geo/Pair.h ../Geo/GRegion.h ../Numeric/Numeric.h \
+  ../Numeric/NumericEmbedded.h ../Common/Message.h \
+  ../Common/ShapeFunctions.h ../Numeric/Numeric.h ../Geo/MElement.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MFace.h
 ColorTable.o: ColorTable.cpp ../Common/Message.h ColorTable.h \
   ../Common/Context.h ../Numeric/Numeric.h ../Numeric/NumericEmbedded.h
diff --git a/contrib/NativeFileChooser/Makefile b/contrib/NativeFileChooser/Makefile
index 8d06c210269860f6c50aefca41a7d4d90545eb71..82253d6fb9cc05844d8513e4eb61313b0fd1c30b 100644
--- a/contrib/NativeFileChooser/Makefile
+++ b/contrib/NativeFileChooser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.8 2008-03-19 16:38:16 geuzaine Exp $
+# $Id: Makefile,v 1.9 2008-04-06 02:33:54 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -52,5 +52,5 @@ depend:
 
 # DO NOT DELETE THIS LINE
 Fl_Native_File_Chooser.o: Fl_Native_File_Chooser.cxx \
-  Fl_Native_File_Chooser_MAC.cxx common.cxx FL/Fl_Native_File_Chooser.H \
-  FL/Fl_Native_File_Chooser_MAC.H
+  Fl_Native_File_Chooser_FLTK.cxx FL/Fl_Native_File_Chooser.H \
+  FL/Fl_Native_File_Chooser_FLTK.H common.cxx
diff --git a/contrib/Netgen/Makefile b/contrib/Netgen/Makefile
index e9b6daaa8bbf0bf19a952237bacfdd84f36ce6ea..029f52449eccc6993b5ad7f9bbe5431ef058123a 100644
--- a/contrib/Netgen/Makefile
+++ b/contrib/Netgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.34 2008-03-29 17:05:40 geuzaine Exp $
+# $Id: Makefile,v 1.35 2008-04-06 02:33:54 remacle Exp $
 #
 # Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 #
@@ -344,10 +344,9 @@ meshtool.o: libsrc/meshing/meshtool.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/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/meshing.hpp libsrc/include/../meshing/meshing.hpp \
-  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
-  libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/meshing.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../csg/surface.hpp \
+  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -358,7 +357,7 @@ meshtool.o: libsrc/meshing/meshtool.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/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 refine.o: libsrc/meshing/refine.cpp libsrc/include/mystdlib.h \
@@ -486,7 +485,7 @@ improve3.o: libsrc/meshing/improve3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   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
+  libsrc/meshing/specials.hpp
 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 \
@@ -528,7 +527,7 @@ smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   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
+  libsrc/meshing/specials.hpp
 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 \
@@ -742,7 +741,7 @@ improve2.o: libsrc/meshing/improve2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   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
+  libsrc/meshing/specials.hpp
 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 \
@@ -784,7 +783,7 @@ smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   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
+  libsrc/meshing/specials.hpp
 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 \
@@ -1332,7 +1331,7 @@ improve2gen.o: libsrc/meshing/improve2gen.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   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
+  libsrc/meshing/specials.hpp
 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 \
@@ -1754,8 +1753,7 @@ nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -1793,13 +1791,12 @@ nglib.o: libsrc/interface/nglib.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/stlgeom.hpp libsrc/include/../stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp \
   libsrc/include/../stlgeom/stltopology.hpp \
   libsrc/include/../stlgeom/stltool.hpp \
   libsrc/include/../stlgeom/stlline.hpp \
   libsrc/include/../stlgeom/meshstlsurface.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp libsrc/interface/nglib.h
 geomtest3d.o: libsrc/gprim/geomtest3d.cpp libsrc/include/mystdlib.h \
@@ -2031,8 +2028,7 @@ algprim.o: libsrc/csg/algprim.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2099,8 +2095,7 @@ brick.o: libsrc/csg/brick.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2163,9 +2158,8 @@ manifold.o: libsrc/csg/manifold.cpp libsrc/include/csg.hpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2230,9 +2224,8 @@ bspline2d.o: libsrc/csg/bspline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2297,9 +2290,8 @@ meshsurf.o: libsrc/csg/meshsurf.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2367,8 +2359,7 @@ csgeom.o: libsrc/csg/csgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2435,8 +2426,7 @@ polyhedra.o: libsrc/csg/polyhedra.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2499,9 +2489,8 @@ curve2d.o: libsrc/csg/curve2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2569,8 +2558,7 @@ singularref.o: libsrc/csg/singularref.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2661,9 +2649,8 @@ edgeflw.o: libsrc/csg/edgeflw.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
-  libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../csg/surface.hpp \
+  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -2703,8 +2690,7 @@ solid.o: libsrc/csg/solid.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2768,9 +2754,8 @@ explicitcurve2d.o: libsrc/csg/explicitcurve2d.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2863,9 +2848,8 @@ specpoin.o: libsrc/csg/specpoin.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
-  libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../csg/surface.hpp \
+  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -2905,8 +2889,7 @@ gencyl.o: libsrc/csg/gencyl.cpp libsrc/include/linalg.hpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2973,8 +2956,7 @@ revolution.o: libsrc/csg/revolution.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3040,8 +3022,7 @@ genmesh.o: libsrc/csg/genmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3107,8 +3088,7 @@ spline3d.o: libsrc/csg/spline3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3171,9 +3151,8 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3211,8 +3190,7 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/gencyl.hpp libsrc/include/../csg/polyhedra.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 \
-  libsrc/include/../linalg/linalg.hpp
+  libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
 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 \
@@ -3242,8 +3220,7 @@ identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3309,8 +3286,7 @@ triapprox.o: libsrc/csg/triapprox.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3373,9 +3349,8 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3415,7 +3390,7 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.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/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
@@ -3444,9 +3419,8 @@ spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3485,7 +3459,7 @@ spline2d.o: libsrc/geom2d/spline2d.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 \
-  libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp
+  libsrc/geom2d/spline2d.hpp
 splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/mystdlib.h libsrc/include/csg.hpp \
   libsrc/include/../csg/csg.hpp libsrc/include/myadt.hpp \
@@ -3513,9 +3487,8 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3554,8 +3527,7 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.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 \
-  libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp \
-  libsrc/geom2d/splinegeometry2.hpp
+  libsrc/geom2d/spline2d.hpp libsrc/geom2d/splinegeometry2.hpp
 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 \
@@ -3582,9 +3554,8 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
-  libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3624,7 +3595,7 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.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/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
@@ -3656,8 +3627,7 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3683,9 +3653,8 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \
@@ -3714,8 +3683,7 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3741,9 +3709,8 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \
@@ -3772,8 +3739,7 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3799,9 +3765,8 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \
@@ -3830,8 +3795,7 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3857,9 +3821,8 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \
@@ -3888,8 +3851,7 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3915,9 +3877,8 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \
@@ -3946,8 +3907,7 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3973,9 +3933,8 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \
@@ -4004,8 +3963,7 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -4031,9 +3989,8 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
-  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
-  libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
+  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
 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 \