diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 850ac88b364d27ea1e050ceea28e59bcc952c9ff..3e6dc25c22797610ce8e116a680291158bfdeb93 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -858,10 +858,8 @@ StringXNumber ViewOptions_Number[] = {
     "Threshold angle below which normals are not smoothed" },
   { F|O, "ArrowLocation" , opt_view_arrow_location , DRAW_POST_LOCATE_COG , 
     "Arrow location (1=cog, 2=vertex)" },
-  { F|O, "ArrowScale" , opt_view_arrow_scale , 50. ,
-    "Size of vectors (arrow size in pixels or displacement factor)" },
-  { F|O, "ArrowType" , opt_view_arrow_type , DRAW_POST_ARROW ,
-    "Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)" },
+  { F|O, "ArrowSize" , opt_view_arrow_size , 50. ,
+    "Size of vectors arrows (in pixels)" },
   { F|O, "AutoPosition" , opt_view_auto_position , 1. , 
     "Position the scale or the 2D graph automatically to avoid overlaps" }, 
 
@@ -873,6 +871,8 @@ StringXNumber ViewOptions_Number[] = {
   { F,   "CustomMin" , opt_view_custom_min , 0. , 
     "User-defined minimum value to be displayed" },
 
+  { F|O, "DisplacementFactor" , opt_view_displacement_factor , 1. ,
+    "Displacement amplification" },
   { F|O, "DrawHexahedra" , opt_view_draw_hexahedra , 1. , 
     "Display post-processing hexahedra?" },
   { F|O, "DrawLines" , opt_view_draw_lines , 1. , 
@@ -975,6 +975,8 @@ StringXNumber ViewOptions_Number[] = {
   { F|O, "Type" , opt_view_type , DRAW_POST_3D ,
     "Type of graph (1=3D, 2=2D-space, 3=2D-time)" },
 
+  { F|O, "VectorType" , opt_view_vector_type , DRAW_POST_ARROW ,
+    "Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)" },
   { F,   "Visible" , opt_view_visible , 1. ,
     "Is the view visible?" },
 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 0024bd38bd3315ad98a260e61985a04cdd0beaad..ff4b26b3c7729e132989c004adfddc5c96c75dcf 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.111 2003-06-23 05:34:54 geuzaine Exp $
+// $Id: Options.cpp,v 1.112 2003-06-23 16:52:17 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -3813,18 +3813,32 @@ double opt_view_raise2(OPT_ARGS_NUM)
   return v->Raise[2];
 }
 
-double opt_view_arrow_scale(OPT_ARGS_NUM)
+double opt_view_arrow_size(OPT_ARGS_NUM)
 {
   GET_VIEW(0.);
   if(action & GMSH_SET) {
-    v->ArrowScale = val;
+    v->ArrowSize = val;
     v->Changed = 1;
   }
 #if defined(HAVE_FLTK)
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[60]->value(v->ArrowScale);
+    WID->view_value[60]->value(v->ArrowSize);
 #endif
-  return v->ArrowScale;
+  return v->ArrowSize;
+}
+
+double opt_view_displacement_factor(OPT_ARGS_NUM)
+{
+  GET_VIEW(0.);
+  if(action & GMSH_SET) {
+    v->DisplacementFactor = val;
+    v->Changed = 1;
+  }
+#if defined(HAVE_FLTK)
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
+    WID->view_value[63]->value(v->DisplacementFactor);
+#endif
+  return v->DisplacementFactor;
 }
 
 double opt_view_explode(OPT_ARGS_NUM)
@@ -4373,16 +4387,16 @@ double opt_view_tensor_type(OPT_ARGS_NUM)
   return v->TensorType;
 }
 
-double opt_view_arrow_type(OPT_ARGS_NUM)
+double opt_view_vector_type(OPT_ARGS_NUM)
 {
   GET_VIEW(0.);
   if(action & GMSH_SET) {
-    v->ArrowType = (int)val;
+    v->VectorType = (int)val;
     v->Changed = 1;
   }
 #if defined(HAVE_FLTK)
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)) {
-    switch (v->ArrowType) {
+    switch (v->VectorType) {
     case DRAW_POST_SEGMENT:
       WID->view_choice[2]->value(0);
       break;
@@ -4401,7 +4415,7 @@ double opt_view_arrow_type(OPT_ARGS_NUM)
     }
   }
 #endif
-  return v->ArrowType;
+  return v->VectorType;
 }
 
 double opt_view_arrow_location(OPT_ARGS_NUM)
diff --git a/Common/Options.h b/Common/Options.h
index 6d14e927e3739d73a61627ba693c80774504ec53..71665623ffc350fc2a03155a3580a33ed2f61eb0 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -416,7 +416,8 @@ double opt_view_offset2(OPT_ARGS_NUM);
 double opt_view_raise0(OPT_ARGS_NUM);
 double opt_view_raise1(OPT_ARGS_NUM);
 double opt_view_raise2(OPT_ARGS_NUM);
-double opt_view_arrow_scale(OPT_ARGS_NUM);
+double opt_view_arrow_size(OPT_ARGS_NUM);
+double opt_view_displacement_factor(OPT_ARGS_NUM);
 double opt_view_explode(OPT_ARGS_NUM);
 double opt_view_visible(OPT_ARGS_NUM);
 double opt_view_intervals_type(OPT_ARGS_NUM);
@@ -453,7 +454,7 @@ double opt_view_transparent_scale(OPT_ARGS_NUM);
 double opt_view_scale_type(OPT_ARGS_NUM);
 double opt_view_tensor_type(OPT_ARGS_NUM);
 double opt_view_range_type(OPT_ARGS_NUM);
-double opt_view_arrow_type(OPT_ARGS_NUM);
+double opt_view_vector_type(OPT_ARGS_NUM);
 double opt_view_arrow_location(OPT_ARGS_NUM);
 double opt_view_point_size(OPT_ARGS_NUM);
 double opt_view_line_width(OPT_ARGS_NUM);
diff --git a/Common/Views.cpp b/Common/Views.cpp
index 27f8ac799f78807883774d7e7a4d02c60fa987f0..aa1b7d9766130d739ff778c5c7a8f6352953a58f 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.97 2003-05-14 14:49:28 geuzaine Exp $
+// $Id: Views.cpp,v 1.98 2003-06-23 16:52:17 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -551,7 +551,8 @@ void CopyViewOptions(Post_View * src, Post_View * dest)
   dest->Raise[0] = src->Raise[0];
   dest->Raise[1] = src->Raise[1];
   dest->Raise[2] = src->Raise[2];
-  dest->ArrowScale = src->ArrowScale;
+  dest->ArrowSize = src->ArrowSize;
+  dest->DisplacementFactor = src->DisplacementFactor;
   dest->Explode = src->Explode;
   dest->Visible = src->Visible;
   dest->IntervalsType = src->IntervalsType;
@@ -580,7 +581,7 @@ void CopyViewOptions(Post_View * src, Post_View * dest)
   dest->TransparentScale = src->TransparentScale;
   dest->ScaleType = src->ScaleType;
   dest->RangeType = src->RangeType;
-  dest->ArrowType = src->ArrowType;
+  dest->VectorType = src->VectorType;
   dest->ArrowLocation = src->ArrowLocation;
   dest->TensorType = src->TensorType;
   dest->TimeStep = src->TimeStep;
diff --git a/Common/Views.h b/Common/Views.h
index 9472557a5d612845ee5845b27ae8402da08fd02b..d80ae746d2fe906ccbacfe87e59a3073d5af81c7 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -58,16 +58,16 @@ class Post_View{
   List_T *T2D, *T2C, *T3D, *T3C; // 2D and 3D text strings
 
   // options
-  int Type, Position[2], AutoPosition, Size[2],TensorType;
+  int Type, Position[2], AutoPosition, Size[2];
   char   Format[256], AbscissaFormat[256];
   double CustomMin, CustomMax;
-  double Offset[3], Raise[3], ArrowScale, Explode;
+  double Offset[3], Raise[3], ArrowSize, DisplacementFactor, Explode;
   int Visible, IntervalsType, NbIso, NbAbscissa, Light, SmoothNormals ;
   double AngleSmoothNormals;
   int SaturateValues;
   int ShowElement, ShowTime, ShowScale;
   int TransparentScale, ScaleType, RangeType;
-  int ArrowType, ArrowLocation;
+  int VectorType, TensorType, ArrowLocation;
   int TimeStep;
   int DrawStrings;
   int DrawPoints, DrawLines, DrawTriangles, DrawQuadrangles;
@@ -108,7 +108,7 @@ class Post_View{
 #define DRAW_POST_DISCRETE     3
 #define DRAW_POST_NUMERIC      4
 
-// ArrowType
+// VectorType
 #define DRAW_POST_SEGMENT      1
 #define DRAW_POST_ARROW        2
 #define DRAW_POST_PYRAMID      3
@@ -121,7 +121,7 @@ class Post_View{
 #define DRAW_POST_LOCATE_COG     1
 #define DRAW_POST_LOCATE_VERTEX  2
 
-// Tensor Type
+// TensorType
 #define DRAW_POST_VONMISES      0
 #define DRAW_POST_EIGENVECTORS  1
 
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 71c17abe784428ad3ebd0b47adb8b023582c7d66..7caf19b130c081fc8d929dbeebb4f4037c5c90eb 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.180 2003-06-23 05:34:54 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.181 2003-06-23 16:52:17 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -3031,7 +3031,7 @@ void view_options_ok_cb(CALLBACK_ARGS)
           val = DRAW_POST_DISPLACEMENT;
           break;
         }
-        opt_view_arrow_type(i, GMSH_SET, val);
+        opt_view_vector_type(i, GMSH_SET, val);
       }
 
       if(force || WID->view_choice[3]->changed()) {
@@ -3150,7 +3150,10 @@ void view_options_ok_cb(CALLBACK_ARGS)
         opt_view_timestep(i, GMSH_SET, WID->view_value[50]->value());
 
       if(force || WID->view_value[60]->changed())
-        opt_view_arrow_scale(i, GMSH_SET, WID->view_value[60]->value());
+        opt_view_arrow_size(i, GMSH_SET, WID->view_value[60]->value());
+
+      if(force || WID->view_value[63]->changed())
+        opt_view_displacement_factor(i, GMSH_SET, WID->view_value[63]->value());
 
       if(force || WID->view_value[61]->changed())
         opt_view_point_size(i, GMSH_SET, WID->view_value[61]->value());
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 8363b14fa990a20ae0a719794898cce89dbd35d4..df4ca12dcfb36620ccb22972c9448ffafed28b07 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.242 2003-06-23 05:34:54 geuzaine Exp $
+// $Id: GUI.cpp,v 1.243 2003-06-23 16:52:17 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -1552,29 +1552,29 @@ void GUI::create_option_window()
     {
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Aspect");
       o->hide();
-      geo_value[3] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Point size");
+      geo_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 1 * BH, IW, BH, "Point display");
+      geo_choice[0]->menu(menu_point_display);
+      geo_choice[0]->align(FL_ALIGN_RIGHT);
+
+      geo_value[3] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point size");
       geo_value[3]->minimum(0.1);
       geo_value[3]->maximum(50);
       geo_value[3]->step(0.1);
 
-      geo_value[5] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Highlighted point size");
+      geo_value[5] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Highlighted point size");
       geo_value[5]->minimum(0.1);
       geo_value[5]->maximum(50);
       geo_value[5]->step(0.1);
 
-      geo_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 3 * BH, IW, BH, "Point display");
-      geo_choice[0]->menu(menu_point_display);
-      geo_choice[0]->align(FL_ALIGN_RIGHT);
+      geo_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line display");
+      geo_choice[1]->menu(menu_line_display);
+      geo_choice[1]->align(FL_ALIGN_RIGHT);
 
-      geo_value[4] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line width");
+      geo_value[4] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Line width");
       geo_value[4]->minimum(0.1);
       geo_value[4]->maximum(50);
       geo_value[4]->step(0.1);
 
-      geo_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 5 * BH, IW, BH, "Line display");
-      geo_choice[1]->menu(menu_line_display);
-      geo_choice[1]->align(FL_ALIGN_RIGHT);
-
       for(i = 3; i <= 5; i++) {
         geo_value[i]->align(FL_ALIGN_RIGHT);
       }
@@ -1730,11 +1730,11 @@ void GUI::create_option_window()
       mesh_value[9]->minimum(0);
       mesh_value[9]->maximum(1);
       mesh_value[9]->step(0.01);
-      mesh_value[10] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Point size");
+      mesh_value[10] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Point size");
       mesh_value[10]->minimum(0.1);
       mesh_value[10]->maximum(50);
       mesh_value[10]->step(0.1);
-      mesh_value[11] = new Fl_Value_Input(2 * WB, 2 * WB + 7 * BH, IW, BH, "Line width");
+      mesh_value[11] = new Fl_Value_Input(2 * WB, 2 * WB + 8 * BH, IW, BH, "Line width");
       mesh_value[11]->minimum(0.1);
       mesh_value[11]->maximum(50);
       mesh_value[11]->step(0.1);
@@ -1742,11 +1742,11 @@ void GUI::create_option_window()
         mesh_value[i]->align(FL_ALIGN_RIGHT);
       }
 
-      mesh_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 6 * BH, IW, BH, "Point display");
+      mesh_choice[0] = new Fl_Choice(2 * WB, 2 * WB + 5 * BH, IW, BH, "Point display");
       mesh_choice[0]->menu(menu_point_display);
       mesh_choice[0]->align(FL_ALIGN_RIGHT);
 
-      mesh_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 8 * BH, IW, BH, "Line display");
+      mesh_choice[1] = new Fl_Choice(2 * WB, 2 * WB + 7 * BH, IW, BH, "Line display");
       mesh_choice[1]->menu(menu_line_display);
       mesh_choice[1]->align(FL_ALIGN_RIGHT);
 
@@ -2080,37 +2080,32 @@ void GUI::create_option_window()
       Fl_Group *o = new Fl_Group(WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "Aspect");
       o->hide();
 
-      view_value[61] = new Fl_Value_Input(2 * WB, 2 * WB + 1 * BH, IW, BH, "Point size");
+      view_choice[5] = new Fl_Choice(2 * WB, 2 * WB + 1 * BH, IW, BH, "Point display");
+      view_choice[5]->menu(menu_point_display);
+      view_choice[5]->align(FL_ALIGN_RIGHT);
+      view_choice[5]->callback(set_changed_cb, 0);
+
+      view_value[61] = new Fl_Value_Input(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point size");
       view_value[61]->minimum(0.1);
       view_value[61]->maximum(50);
       view_value[61]->step(0.1);
       view_value[61]->align(FL_ALIGN_RIGHT);
       view_value[61]->callback(set_changed_cb, 0);
 
-      view_choice[5] = new Fl_Choice(2 * WB, 2 * WB + 2 * BH, IW, BH, "Point display");
-      view_choice[5]->menu(menu_point_display);
-      view_choice[5]->align(FL_ALIGN_RIGHT);
-      view_choice[5]->callback(set_changed_cb, 0);
+      view_choice[6] = new Fl_Choice(2 * WB, 2 * WB + 3 * BH, IW, BH, "Line display");
+      view_choice[6]->menu(menu_line_display);
+      view_choice[6]->align(FL_ALIGN_RIGHT);
+      view_choice[6]->callback(set_changed_cb, 0);
 
-      view_value[62] = new Fl_Value_Input(2 * WB, 2 * WB + 3 * BH, IW, BH, "Line width");
+      view_value[62] = new Fl_Value_Input(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line width");
       view_value[62]->minimum(0.1);
       view_value[62]->maximum(50);
       view_value[62]->step(0.1);
       view_value[62]->align(FL_ALIGN_RIGHT);
       view_value[62]->callback(set_changed_cb, 0);
 
-      view_choice[6] = new Fl_Choice(2 * WB, 2 * WB + 4 * BH, IW, BH, "Line display");
-      view_choice[6]->menu(menu_line_display);
-      view_choice[6]->align(FL_ALIGN_RIGHT);
-      view_choice[6]->callback(set_changed_cb, 0);
-
       {
-        view_vector = new Fl_Group(2 * WB, 2 * WB + 4 * BH, width / 2, 5 * BH, 0);
-
-        view_value[60] = new Fl_Value_Input(2 * WB, 2 * WB + 5 * BH, IW, BH, "Vector size");
-        view_value[60]->minimum(0);
-        view_value[60]->align(FL_ALIGN_RIGHT);
-        view_value[60]->callback(set_changed_cb, 0);
+        view_vector = new Fl_Group(2 * WB, 2 * WB + 4 * BH, width / 2, 6 * BH, 0);
 
         static Fl_Menu_Item menu_vectype[] = {
           {"Line", 0, 0, 0},
@@ -2120,27 +2115,38 @@ void GUI::create_option_window()
           {"Displacement", 0, 0, 0},
           {0}
         };
-        view_choice[2] = new Fl_Choice(2 * WB, 2 * WB + 6 * BH, IW, BH, "Vector display");
+        view_choice[2] = new Fl_Choice(2 * WB, 2 * WB + 5 * BH, IW, BH, "Vector display");
         view_choice[2]->menu(menu_vectype);
         view_choice[2]->align(FL_ALIGN_RIGHT);
         view_choice[2]->callback(set_changed_cb, 0);
 
+        view_value[60] = new Fl_Value_Input(2 * WB, 2 * WB + 6 * BH, IW, BH, "Arrow size");
+        view_value[60]->minimum(0);
+        view_value[60]->maximum(1000);
+        view_value[60]->step(1);
+        view_value[60]->align(FL_ALIGN_RIGHT);
+        view_value[60]->callback(set_changed_cb, 0);
+
         static Fl_Menu_Item menu_vecloc[] = {
           {"Cell centered", 0, 0, 0},
           {"Vertex centered", 0, 0, 0},
           {0}
         };
-        view_choice[3] = new Fl_Choice(2 * WB, 2 * WB + 7 * BH, IW, BH, "Vector location");
+        view_choice[3] = new Fl_Choice(2 * WB, 2 * WB + 7 * BH, IW, BH, "Arrow location");
         view_choice[3]->menu(menu_vecloc);
         view_choice[3]->align(FL_ALIGN_RIGHT);
         view_choice[3]->callback(set_changed_cb, 0);
 
+        view_value[63] = new Fl_Value_Input(2 * WB, 2 * WB + 8 * BH, IW, BH, "Displacement factor");
+        view_value[63]->align(FL_ALIGN_RIGHT);
+        view_value[63]->callback(set_changed_cb, 0);
+
         static Fl_Menu_Item menu_tensor[] = {
           {"Von-Mises", 0, 0, 0},
           //{"Eigenvectors", 0, 0, 0}, //not implemented yet
           {0}
         };
-        view_choice[4] = new Fl_Choice(2 * WB, 2 * WB + 8 * BH, IW, BH, "Tensor display");
+        view_choice[4] = new Fl_Choice(2 * WB, 2 * WB + 9 * BH, IW, BH, "Tensor display");
         view_choice[4]->menu(menu_tensor);
         view_choice[4]->align(FL_ALIGN_RIGHT);
         view_choice[4]->callback(set_changed_cb, 0);
@@ -2295,8 +2301,9 @@ void GUI::update_view_window(int num)
   opt_view_point_type(num, GMSH_GUI, 0);
   opt_view_line_width(num, GMSH_GUI, 0);
   opt_view_line_type(num, GMSH_GUI, 0);
-  opt_view_arrow_type(num, GMSH_GUI, 0);
-  opt_view_arrow_scale(num, GMSH_GUI, 0);
+  opt_view_vector_type(num, GMSH_GUI, 0);
+  opt_view_arrow_size(num, GMSH_GUI, 0);
+  opt_view_displacement_factor(num, GMSH_GUI, 0);
   opt_view_arrow_location(num, GMSH_GUI, 0);
   opt_view_tensor_type(num, GMSH_GUI, 0);
 
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
index b2716c793e328309a3db9b222cceff8184a7d01f..82a9147c9bed8e100d47555f8fa6c12f36ad5482 100644
--- a/Graphics/Post.cpp
+++ b/Graphics/Post.cpp
@@ -1,4 +1,4 @@
-// $Id: Post.cpp,v 1.47 2003-03-21 00:52:39 geuzaine Exp $
+// $Id: Post.cpp,v 1.48 2003-06-23 16:52:17 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -608,7 +608,7 @@ void Draw_Post(void)
 
         v->Changed = 0;
 
-        if(v->ShowElement || v->ArrowType == DRAW_POST_DISPLACEMENT)
+        if(v->ShowElement || v->VectorType == DRAW_POST_DISPLACEMENT)
           glDisable(GL_POLYGON_OFFSET_FILL);
 
       }
diff --git a/Graphics/PostElement.cpp b/Graphics/PostElement.cpp
index ece178b253231e03a55228bc8aa0a5ef90258b75..b3ea9d13b966a630c1f32d66c84b938c7d0d9603 100644
--- a/Graphics/PostElement.cpp
+++ b/Graphics/PostElement.cpp
@@ -1,4 +1,4 @@
-// $Id: PostElement.cpp,v 1.16 2003-05-14 14:23:10 geuzaine Exp $
+// $Id: PostElement.cpp,v 1.17 2003-06-23 16:52:17 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -808,9 +808,9 @@ void Draw_VectorElement(int type, Post_View * View,
     RaiseFill(k, d[k], ValMin, Raise);
   }
 
-  if(View->ArrowType == DRAW_POST_DISPLACEMENT) {
+  if(View->VectorType == DRAW_POST_DISPLACEMENT) {
 
-    fact = View->ArrowScale / 50.;
+    fact = View->DisplacementFactor;
     for(k = 0; k < nbnod; k++) {
       xx[k] = X[k] + fact * Val[k][0] + Raise[0][k];
       yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k];
@@ -918,7 +918,7 @@ void Draw_VectorElement(int type, Post_View * View,
         Draw_String(Num);
       }
       else {
-        fact = CTX.pixel_equiv_x / CTX.s[0] * View->ArrowScale / ValMax;
+        fact = CTX.pixel_equiv_x / CTX.s[0] * View->ArrowSize / ValMax;
         if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin > 0) {
           dx /= dd;
           dy /= dd;
@@ -929,7 +929,7 @@ void Draw_VectorElement(int type, Post_View * View,
           dz *= dd;
         }
         RaiseFill(0, dd, ValMin, Raise);
-        Draw_Vector(View->ArrowType, View->IntervalsType != DRAW_POST_ISO,
+        Draw_Vector(View->VectorType, View->IntervalsType != DRAW_POST_ISO,
                     xc, yc, zc, fact * dd, fact * dx, fact * dy, fact * dz,
                     Raise);
       }
@@ -940,7 +940,7 @@ void Draw_VectorElement(int type, Post_View * View,
       if(d[k] != 0.0 && d[k] >= ValMin && d[k] <= ValMax) {
         Palette1(View, View->NbIso,
                  View->GIFV(ValMin, ValMax, View->NbIso, d[k]));
-        fact = CTX.pixel_equiv_x / CTX.s[0] * View->ArrowScale / ValMax;
+        fact = CTX.pixel_equiv_x / CTX.s[0] * View->ArrowSize / ValMax;
         if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin > 0) {
           Val[k][0] /= d[k];
           Val[k][1] /= d[k];
@@ -951,7 +951,7 @@ void Draw_VectorElement(int type, Post_View * View,
           Val[k][2] *= d[k];
         }
         RaiseFill(0, d[k], ValMin, Raise);
-        Draw_Vector(View->ArrowType, View->IntervalsType != DRAW_POST_ISO,
+        Draw_Vector(View->VectorType, View->IntervalsType != DRAW_POST_ISO,
                     X[k], Y[k], Z[k],
                     fact * d[k], fact * Val[k][0], fact * Val[k][1],
                     fact * Val[k][2], Raise);
diff --git a/Makefile b/Makefile
index 1389684e4d2df9c25a7023433e006b63980a134d..a0998ab07ba79b085408d8e333fd62c29d8b881b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.291 2003-06-13 16:53:07 geuzaine Exp $
+# $Id: Makefile,v 1.292 2003-06-23 16:52:17 geuzaine Exp $
 #
 # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 #
@@ -22,7 +22,7 @@
 include variables
 
 GMSH_MAJOR_VERSION = 1
-GMSH_MINOR_VERSION = 45
+GMSH_MINOR_VERSION = 46
 GMSH_PATCH_VERSION = 0
 
 GMSH_VERSION_FILE = Common/GmshVersion.h
diff --git a/doc/VERSIONS b/doc/VERSIONS
index f74ab3649abc8b7748c3447d3364f256ca3b6889..320db172393e23abd0e0e7da0d29b43c1c0380a0 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,6 +1,7 @@
-$Id: VERSIONS,v 1.150 2003-06-17 19:27:30 geuzaine Exp $
+$Id: VERSIONS,v 1.151 2003-06-23 16:52:17 geuzaine Exp $
 
-New in 1.46: small bug fixes (crash for very long command lines);
+New in 1.46: small bug fixes (crash for very long command lines); new
+options for setting the displacement factor and Triangle's parameters;
 
 New in 1.45: small bug fixes (min/max computation for tensor views,
 missing physical points in read mesh, "jumping" geometry during
diff --git a/doc/gmsh.html b/doc/gmsh.html
index c3e71208be4115f73ceca27be3c3400515334e8f..4570d4f1f842d558348e696991a5253857304ab0 100644
--- a/doc/gmsh.html
+++ b/doc/gmsh.html
@@ -26,7 +26,7 @@ generator with built-in pre- and post-processing facilities</h1>
 <p>
 <h3 align="center">Christophe Geuzaine and Jean-Fran�ois Remacle</h3>
 <p>
-<h3 align=center>Version <a href="doc/VERSIONS">1.45</a>, 14 June 2003</h3>
+<h3 align=center>Version <a href="doc/VERSIONS">1.46</a>, 14 June 2003</h3>
 <p>
 <center>
   <a href="#Description">Description</a> |
@@ -123,11 +123,11 @@ available for Windows, Linux and Mac OS X. The tutorial and demo files
 are included in the archives.
 
 <ul>
-<li><a href="/gmsh/bin/Windows/gmsh-1.45.0-Windows.zip">Windows zip archive (95/98/NT/2000/XP)</a>
-<li><a href="/gmsh/bin/Linux/gmsh-1.45.0-1.i386.rpm">Linux RPM (i386, Red Hat >= 6.2 and compatible)</a>
-<li><a href="/gmsh/bin/Linux/gmsh-1.45.0-Linux.tgz">Linux tarball (i386, glibc 2.1)</a> 
-<li><a href="/gmsh/bin/MacOSX/gmsh-1.45.0-MacOSX.tgz">Mac OS X tarball (Mac OS X 10.2)</a>
-<li><a href="/gmsh/src/gmsh-1.45.0-source.tgz">Source tarball (all platforms)</a>
+<li><a href="/gmsh/bin/Windows/gmsh-1.46.0-Windows.zip">Windows zip archive (95/98/NT/2000/XP)</a>
+<li><a href="/gmsh/bin/Linux/gmsh-1.46.0-1.i386.rpm">Linux RPM (i386, Red Hat >= 6.2 and compatible)</a>
+<li><a href="/gmsh/bin/Linux/gmsh-1.46.0-Linux.tgz">Linux tarball (i386, glibc 2.1)</a> 
+<li><a href="/gmsh/bin/MacOSX/gmsh-1.46.0-MacOSX.tgz">Mac OS X tarball (Mac OS X 10.2)</a>
+<li><a href="/gmsh/src/gmsh-1.46.0-source.tgz">Source tarball (all platforms)</a>
     <a href="#build-footnote" name="build-footmark"><sup>2</sup></a>
 </ul>
 
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index 823bc692f9d4ad0307ce75ef4eb44c309e85b266..1dad99adedd13d1edb3287de1bf6929c3dc6fa4a 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -1,5 +1,5 @@
 \input texinfo.tex @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.64 2003-06-17 00:34:46 geuzaine Exp $
+@c $Id: gmsh.texi,v 1.65 2003-06-23 16:52:17 geuzaine Exp $
 @c
 @c Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 @c
@@ -46,8 +46,8 @@
 @c =========================================================================
 @c %**start of header
 @setfilename        gmsh.info
-@set EDITION        1.9
-@set GMSH-VERSION   1.45
+@set EDITION        1.10
+@set GMSH-VERSION   1.46
 @set GMSH-WEB       @uref{http://www.geuz.org/gmsh/}
 @set COPYRIGHT      @copyright{} 1997-2003 Christophe Geuzaine, Jean-Fran@,{c}ois Remacle
 @c
diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi
index e068bcc5a05e08fd53402147d75fb81e0f5da3b4..558e265a8d08cac6b150ac682439ab0b855556a1 100644
--- a/doc/texinfo/opt_mesh.texi
+++ b/doc/texinfo/opt_mesh.texi
@@ -1,4 +1,9 @@
 @ftable @code
+@item Mesh.TriangleOptions
+Options for Jonathan Shewchuk's Triangle isotropic algorithm@*
+Default value: @code{"praqzBPY"}@*
+Saved in: @code{General.OptionsFileName}
+
 @item Mesh.Algorithm
 2D mesh algorithm (1=isotropic, 2=anisotropic, 3=triangle)@*
 Default value: @code{1}@*
diff --git a/doc/texinfo/opt_solver.texi b/doc/texinfo/opt_solver.texi
index 4744462fe15c7804c26509dc58e2ceba568c4d58..fc70ab3d68fed26514bf2c03cbffff445d3759d2 100644
--- a/doc/texinfo/opt_solver.texi
+++ b/doc/texinfo/opt_solver.texi
@@ -6,8 +6,10 @@ Saved in: @code{General.OptionsFileName}
 
 @item Solver.Help0
 Help string for solver 0@*
-Default value: @code{"A General environment for the treatment of Discrete
-Problems. Copyright (c) 1997-2003 Patrick Dular and Christophe Geuzaine.
+Default value: @code{"A General environment for the treatment of
+Discrete Problems.
+Copyright (c) 1997-2003
+Patrick Dular and Christophe Geuzaine.
 Visit http://www.geuz.org/getdp/ for more info"}@*
 Saved in: @code{General.OptionsFileName}
 
diff --git a/doc/texinfo/opt_view.texi b/doc/texinfo/opt_view.texi
index e118c1fee78960cd0e9ae221415473a162717966..3e346915dd3e2a5f13f7e759d660a9bc1b2d1eaf 100644
--- a/doc/texinfo/opt_view.texi
+++ b/doc/texinfo/opt_view.texi
@@ -34,16 +34,11 @@ Arrow location (1=cog, 2=vertex)@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
-@item View.ArrowScale
-Size of vectors (arrow size in pixels or displacement factor)@*
+@item View.ArrowSize
+Size of vectors arrows (in pixels)@*
 Default value: @code{50}@*
 Saved in: @code{General.OptionsFileName}
 
-@item View.ArrowType
-Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)@*
-Default value: @code{2}@*
-Saved in: @code{General.OptionsFileName}
-
 @item View.AutoPosition
 Position the scale or the 2D graph automatically to avoid overlaps@*
 Default value: @code{1}@*
@@ -64,6 +59,11 @@ User-defined minimum value to be displayed@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
+@item View.DisplacementFactor
+Displacement amplification@*
+Default value: @code{1}@*
+Saved in: @code{General.OptionsFileName}
+
 @item View.DrawHexahedra
 Display post-processing hexahedra?@*
 Default value: @code{1}@*
@@ -289,6 +289,11 @@ Type of graph (1=3D, 2=2D-space, 3=2D-time)@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
+@item View.VectorType
+Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)@*
+Default value: @code{2}@*
+Saved in: @code{General.OptionsFileName}
+
 @item View.Visible
 Is the view visible?@*
 Default value: @code{1}@*