diff --git a/Plugin/CutGrid.cpp b/Plugin/CutGrid.cpp
index f1b60402c21751e1552732fe0ab7d7b2a8c44a8c..031425bb816b4a5899edbe2ddbe76ed96183f672 100644
--- a/Plugin/CutGrid.cpp
+++ b/Plugin/CutGrid.cpp
@@ -1,4 +1,4 @@
-// $Id: CutGrid.cpp,v 1.16 2005-03-02 07:49:41 geuzaine Exp $
+// $Id: CutGrid.cpp,v 1.17 2005-03-04 19:08:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -365,11 +365,9 @@ Post_View * GMSH_CutGridPlugin::GenerateView(Post_View * v, int connect)
   }
 
   if(nbv){
-    double sizeElem;
     for(int i = 0; i < getNbU(); i++)
       for(int j = 0; j < getNbV(); j++)
-	o.searchVector(pnts[i][j][0], pnts[i][j][1], pnts[i][j][2], vals[i][j], 
-		       &sizeElem);
+	o.searchVector(pnts[i][j][0], pnts[i][j][1], pnts[i][j][2], vals[i][j]);
     addInView(v, connect, 3, pnts, vals,
 	      View->VP, &View->NbVP, View->VL, &View->NbVL, View->VQ, &View->NbVQ);
   }
diff --git a/Plugin/CutParametric.cpp b/Plugin/CutParametric.cpp
index fe2f81321d7676ff28f1e666e8428e9755739d5e..0dd141877190c13e6926352967a39d6ceaa4bbd1 100644
--- a/Plugin/CutParametric.cpp
+++ b/Plugin/CutParametric.cpp
@@ -1,4 +1,4 @@
-// $Id: CutParametric.cpp,v 1.12 2005-03-02 08:14:29 geuzaine Exp $
+// $Id: CutParametric.cpp,v 1.13 2005-03-04 19:08:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -227,8 +227,7 @@ Post_View *GMSH_CutParametricPlugin::execute(Post_View * v)
 		v2->SP, &v2->NbSP, v2->SL, &v2->NbSL);
     }
     if(v->NbVT || v->NbVQ || v->NbVS || v->NbVH || v->NbVI || v->NbVY){
-      double size;
-      o.searchVector(x, y, z, res, &size);
+      o.searchVector(x, y, z, res);
       addInView(connect, i, 3, v1->NbTimeStep, x0, y0, z0, res0, x, y, z, res,
 		v2->VP, &v2->NbVP, v2->VL, &v2->NbVL);
     }
diff --git a/Plugin/Evaluate.cpp b/Plugin/Evaluate.cpp
index d8c66b893a9e4a2333ac4bff71a74413b02c1cd2..2a5568a2928b6f7e5621a952aca453d07c9df07c 100644
--- a/Plugin/Evaluate.cpp
+++ b/Plugin/Evaluate.cpp
@@ -1,4 +1,4 @@
-// $Id: Evaluate.cpp,v 1.18 2005-03-03 21:31:59 geuzaine Exp $
+// $Id: Evaluate.cpp,v 1.19 2005-03-04 19:08:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -184,14 +184,14 @@ void GMSH_EvaluatePlugin::evaluate(Post_View *v1, List_T *list1, int nbElm1,
       for(int k = 0; k < nbComp; k++) v[k] = val1[k];
 
       // store data from the external view into w
-      double *val2, tmp[9], sizeElm;
+      double *val2, tmp[9];
       double w[9] = {0., 0., 0., 0., 0., 0., 0., 0., 0.};
       if(_octree){
 	val2 = tmp;
 	if(_octree->searchScalar(x[j], y[j], z[j], val2, timeStep2)){
 	  w[0] = val2[0];
 	}
-	else if(_octree->searchVector(x[j], y[j], z[j], val2, &sizeElm, timeStep2)){
+	else if(_octree->searchVector(x[j], y[j], z[j], val2, timeStep2)){
 	  for(int k = 0; k < 3; k++) w[k] = val2[k];
 	}
 	else if(_octree->searchTensor(x[j], y[j], z[j], val2, timeStep2)){
diff --git a/Plugin/OctreePost.cpp b/Plugin/OctreePost.cpp
index 1022ee03ad247351f96a051539b693959dd7a9fb..c5d07c10ae5a9a972cb09646bdc92cd84b6e4796 100644
--- a/Plugin/OctreePost.cpp
+++ b/Plugin/OctreePost.cpp
@@ -1,4 +1,4 @@
-// $Id: OctreePost.cpp,v 1.14 2005-03-02 07:49:41 geuzaine Exp $
+// $Id: OctreePost.cpp,v 1.15 2005-03-04 19:08:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -276,7 +276,7 @@ OctreePost::OctreePost(Post_View *v)
 }
 
 bool OctreePost::getValue(void *in, int dim, int nbNod, int nbComp, 
-			  double P[3], int timestep, double *values)
+			  double P[3], int timestep, double *values, double *size_elem)
 {
   if(!in) return false;
 
@@ -299,12 +299,15 @@ bool OctreePost::getValue(void *in, int dim, int nbNod, int nbComp,
 				 U[0], U[1], U[2], nbComp);
   }
 
+  if(size_elem)
+    *size_elem = e->maxEdgeLength();
+
   delete e;
   return true;
 } 
 
-bool OctreePost::searchScalar(double x, double y, double z,
-			      double * values, int timestep)
+bool OctreePost::searchScalar(double x, double y, double z, double *values, 
+			      int timestep, double *size_elem)
 {
   double P[3] = {x, y, z};
 
@@ -314,18 +317,18 @@ bool OctreePost::searchScalar(double x, double y, double z,
   else
     values[0] = 0.0;
 
-  if(getValue(Octree_Search(P, SS), 3, 4, 1, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, SH), 3, 8, 1, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, SI), 3, 6, 1, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, SY), 3, 5, 1, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, ST), 2, 3, 1, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, SQ), 2, 4, 1, P, timestep, values)) return true;
+  if(getValue(Octree_Search(P, SS), 3, 4, 1, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, SH), 3, 8, 1, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, SI), 3, 6, 1, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, SY), 3, 5, 1, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, ST), 2, 3, 1, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, SQ), 2, 4, 1, P, timestep, values, size_elem)) return true;
 
   return false;
 }
 
-bool OctreePost::searchVector(double x, double y, double z,
-			      double * values, double * size_elem, int timestep)
+bool OctreePost::searchVector(double x, double y, double z, double *values, 
+			      int timestep, double *size_elem)
 {
   double P[3] = {x, y, z};
 
@@ -336,21 +339,18 @@ bool OctreePost::searchVector(double x, double y, double z,
     for(int i = 0; i < 3; i++)
       values[i] = 0.0;
 
-  // FIXME: compute this!
-  *size_elem = 1.;
-
-  if(getValue(Octree_Search(P, VS), 3, 4, 3, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, VH), 3, 8, 3, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, VI), 3, 6, 3, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, VY), 3, 5, 3, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, VT), 2, 3, 3, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, VQ), 2, 4, 3, P, timestep, values)) return true;
+  if(getValue(Octree_Search(P, VS), 3, 4, 3, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, VH), 3, 8, 3, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, VI), 3, 6, 3, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, VY), 3, 5, 3, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, VT), 2, 3, 3, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, VQ), 2, 4, 3, P, timestep, values, size_elem)) return true;
 
   return false;
 }
 
-bool OctreePost::searchTensor(double x, double y, double z,
-			      double * values, int timestep)
+bool OctreePost::searchTensor(double x, double y, double z, double *values, 
+			      int timestep, double *size_elem)
 {
   double P[3] = {x, y, z};
 
@@ -361,12 +361,12 @@ bool OctreePost::searchTensor(double x, double y, double z,
     for(int i = 0; i < 9; i++)
       values[i] = 0.0;
 
-  if(getValue(Octree_Search(P, TS), 3, 4, 9, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, TH), 3, 8, 9, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, TI), 3, 6, 9, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, TY), 3, 5, 9, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, TT), 2, 3, 9, P, timestep, values)) return true;
-  if(getValue(Octree_Search(P, TQ), 2, 4, 9, P, timestep, values)) return true;
+  if(getValue(Octree_Search(P, TS), 3, 4, 9, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, TH), 3, 8, 9, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, TI), 3, 6, 9, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, TY), 3, 5, 9, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, TT), 2, 3, 9, P, timestep, values, size_elem)) return true;
+  if(getValue(Octree_Search(P, TQ), 2, 4, 9, P, timestep, values, size_elem)) return true;
 
   return false;
 }
diff --git a/Plugin/OctreePost.h b/Plugin/OctreePost.h
index fcbab6b0d237e6c84688b910a3a6f3179a5a8eed..4dd8a1a193e4b8669a3dce2e458e9404dc662a33 100644
--- a/Plugin/OctreePost.h
+++ b/Plugin/OctreePost.h
@@ -34,7 +34,7 @@ class OctreePost
   Octree *SY, *VY, *TY;
   Post_View *theView;
   bool getValue(void *in, int dim, int nbNod, int nbComp, 
-		double P[3], int timestep, double *values);
+		double P[3], int timestep, double *values, double *size_elem);
  public :
   OctreePost(Post_View *);
   ~OctreePost();
@@ -43,12 +43,12 @@ class OctreePost
   // the post element. If several time steps
   // are present, they are all interpolated unless
   // time step is set to a different value than -1.
-  bool searchScalar(double x, double y, double z, 
-		    double * values, int timestep = -1);		
-  bool searchVector(double x, double y, double z, 
-		    double * values, double * size_elem, int timestep = -1);
-  bool searchTensor(double x, double y, double z, 
-		    double * values, int timestep = -1);
+  bool searchScalar(double x, double y, double z, double *values, 
+		    int timestep = -1, double *size_elem = 0);
+  bool searchVector(double x, double y, double z, double *values, 
+		    int timestep = -1, double *size_elem = 0);
+  bool searchTensor(double x, double y, double z, double *values, 
+		    int timestep = -1, double *size_elem = 0);
 };
 
 #endif
diff --git a/Plugin/Probe.cpp b/Plugin/Probe.cpp
index cc45e2db39fe1307e5d3e66ef1fcee1c02ebadc9..a4bcb99ac7e7a83a793765b66877dbd11914dac8 100644
--- a/Plugin/Probe.cpp
+++ b/Plugin/Probe.cpp
@@ -1,4 +1,4 @@
-// $Id: Probe.cpp,v 1.8 2005-03-02 07:49:41 geuzaine Exp $
+// $Id: Probe.cpp,v 1.9 2005-03-04 19:08:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -183,8 +183,7 @@ Post_View *GMSH_ProbePlugin::execute(Post_View * v)
     v2->NbSP++;
   }
 
-  double sizeElem;
-  if(o.searchVector(x, y, z, val, &sizeElem)){
+  if(o.searchVector(x, y, z, val)){
     List_Add(v2->VP, &x);
     List_Add(v2->VP, &y);
     List_Add(v2->VP, &z);
diff --git a/Plugin/ShapeFunctions.h b/Plugin/ShapeFunctions.h
index ccc11d8ce0ecc23622a2ae28cc9820125c3deab8..576af3247724432d418170f55a27102ceb42018f 100644
--- a/Plugin/ShapeFunctions.h
+++ b/Plugin/ShapeFunctions.h
@@ -34,6 +34,8 @@ public:
   virtual int getDimension() = 0;
   virtual int getNumNodes() = 0;
   virtual void getNode(int num, double &u, double &v, double &w) = 0;
+  virtual int getNumEdges() = 0;
+  virtual void getEdge(int num, int &start, int &end) = 0;
   virtual int getNumGaussPoints() = 0;
   virtual void getGaussPoint(int num, double &u, double &v, double &w, double &weight) = 0; 
   virtual void getShapeFunction(int num, double u, double v, double w, double &s) = 0;
@@ -69,9 +71,9 @@ public:
 	prodve(a, b, c);
 	jac[2][0] = c[0]; jac[2][1] = c[1]; jac[2][2] = c[2]; 
       }
-      return sqrt(DSQR(jac[0][0] * jac[1][1] - jac[0][1] * jac[1][0]) +
-		  DSQR(jac[0][2] * jac[1][0] - jac[0][0] * jac[1][2]) +
-		  DSQR(jac[0][1] * jac[1][2] - jac[0][2] * jac[1][1]));
+      return sqrt(SQR(jac[0][0] * jac[1][1] - jac[0][1] * jac[1][0]) +
+		  SQR(jac[0][2] * jac[1][0] - jac[0][0] * jac[1][2]) +
+		  SQR(jac[0][1] * jac[1][2] - jac[0][2] * jac[1][1]));
     case 1:
       for(int i = 0; i < getNumNodes(); i++) {
 	getGradShapeFunction(i, u, v, w, s);
@@ -91,7 +93,7 @@ public:
 	jac[1][0] = b[0]; jac[1][1] = b[1]; jac[1][2] = b[2]; 
 	jac[2][0] = c[0]; jac[2][1] = c[1]; jac[2][2] = c[2]; 
       }
-      return sqrt(DSQR(jac[0][0])+DSQR(jac[0][1])+DSQR(jac[0][2]));
+      return sqrt(SQR(jac[0][0])+SQR(jac[0][1])+SQR(jac[0][2]));
     default:
       return 1.;
     }
@@ -230,6 +232,17 @@ public:
     //if(error > tol) Msg(WARNING, "Newton did not converge in xyz2uvw") ;
   }
   virtual int isInside(double u, double v, double w) = 0;
+  double maxEdgeLength()
+  {
+    double max = 0.;
+    for(int i = 0; i < getNumEdges(); i++){
+      int n1, n2;
+      getEdge(i, n1, n2);
+      double d = sqrt(SQR(_x[n1]-_x[n2]) + SQR(_y[n1]-_y[n2]) + SQR(_z[n1]-_z[n2]));
+      if(d > max) max = d;
+    }
+    return max;
+  }
 };
 
 class point : public element{
@@ -241,6 +254,11 @@ public:
   {
     u = v = w = 0.;
   }
+  inline int getNumEdges(){ return 0; }
+  void getEdge(int num, int &start, int &end)
+  {
+    start = end = 0;
+  }
   inline int getNumGaussPoints(){ return 1; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -282,6 +300,11 @@ public:
     default: u =  0.; break;
     }
   }
+  inline int getNumEdges(){ return 1; }
+  void getEdge(int num, int &start, int &end)
+  {
+    start = 0; end = 1;
+  }
   inline int getNumGaussPoints(){ return 1; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -339,6 +362,16 @@ public:
     default: u = 0.; v = 0.; break;
     }
   }
+  inline int getNumEdges(){ return 3; }
+  void getEdge(int num, int &start, int &end)
+  {
+    switch(num) {
+    case 0 : start = 0; end = 1; break;
+    case 1 : start = 1; end = 2; break;
+    case 2 : start = 2; end = 0; break;
+    default: start = end = 0; break;
+    }
+  }
   inline int getNumGaussPoints(){ return 3; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -421,6 +454,17 @@ public:
     default: u =  0.; v =  0.; break;
     }
   }
+  inline int getNumEdges(){ return 4; }
+  void getEdge(int num, int &start, int &end)
+  {
+    switch(num) {
+    case 0 : start = 0; end = 1; break;
+    case 1 : start = 1; end = 2; break;
+    case 2 : start = 2; end = 3; break;
+    case 3 : start = 3; end = 0; break;
+    default: start = end = 0; break;
+    }
+  }
   inline int getNumGaussPoints(){ return 4; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -490,6 +534,19 @@ public:
     default: u = 0.; v = 0.; w = 0.; break;
     }
   }
+  inline int getNumEdges(){ return 6; }
+  void getEdge(int num, int &start, int &end)
+  {
+    switch(num) {
+    case 0 : start = 0; end = 1; break;
+    case 1 : start = 1; end = 2; break;
+    case 2 : start = 2; end = 0; break;
+    case 3 : start = 3; end = 0; break;
+    case 4 : start = 3; end = 2; break;
+    case 5 : start = 3; end = 1; break;
+    default: start = end = 0; break;
+    }
+  }
   inline int getNumGaussPoints(){ return 4; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -568,6 +625,25 @@ public:
     default: u =  0.; v =  0.; w =  0.; break;
     }
   }
+  inline int getNumEdges(){ return 12; }
+  void getEdge(int num, int &start, int &end)
+  {
+    switch(num) {
+    case 0 : start = 0; end = 1; break;
+    case 1 : start = 0; end = 3; break;
+    case 2 : start = 0; end = 4; break;
+    case 3 : start = 1; end = 2; break;
+    case 4 : start = 1; end = 5; break;
+    case 5 : start = 2; end = 3; break;
+    case 6 : start = 2; end = 6; break;
+    case 7 : start = 3; end = 7; break;
+    case 8 : start = 4; end = 5; break;
+    case 9 : start = 4; end = 7; break;
+    case 10: start = 5; end = 6; break;
+    case 11: start = 6; end = 7; break;
+    default: start = end = 0; break;
+    }
+  }
   inline int getNumGaussPoints(){ return 6; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -654,6 +730,22 @@ public:
     default: u = 0.; v = 0.; w =  0.; break;
     }
   }
+  inline int getNumEdges(){ return 9; }
+  void getEdge(int num, int &start, int &end)
+  {
+    switch(num) {
+    case 0 : start = 0; end = 1; break;
+    case 1 : start = 0; end = 2; break;
+    case 2 : start = 0; end = 3; break;
+    case 3 : start = 1; end = 2; break;
+    case 4 : start = 1; end = 4; break;
+    case 5 : start = 2; end = 5; break;
+    case 6 : start = 3; end = 4; break;
+    case 7 : start = 3; end = 5; break;
+    case 8 : start = 4; end = 5; break;
+    default: start = end = 0; break;
+    }
+  }
   inline int getNumGaussPoints(){ return 6; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -731,6 +823,21 @@ public:
     default: u =  0.; v =  0.; w = 0.; break;
     }
   }
+  inline int getNumEdges(){ return 8; }
+  void getEdge(int num, int &start, int &end)
+  {
+    switch(num) {
+    case 0 : start = 0; end = 1; break;
+    case 1 : start = 0; end = 3; break;
+    case 2 : start = 0; end = 4; break;
+    case 3 : start = 1; end = 2; break;
+    case 4 : start = 1; end = 4; break;
+    case 5 : start = 2; end = 3; break;
+    case 6 : start = 2; end = 4; break;
+    case 7 : start = 3; end = 4; break;
+    default: start = end = 0; break;
+    }
+  }
   inline int getNumGaussPoints(){ return 8; }
   void getGaussPoint(int num, double &u, double &v, double &w, double &weight)
   {
@@ -781,16 +888,16 @@ public:
       switch(num) {
       case 0  : s[0] = 0.25 * ( -(1.-v) + v*w/(1.-w) ) ;
 	        s[1] = 0.25 * ( -(1.-u) + u*w/(1.-w) ) ;
-      	        s[2] = 0.25 * ( -1.     + u*v/DSQR(1.-w) ) ; break ;
+      	        s[2] = 0.25 * ( -1.     + u*v/SQR(1.-w) ) ; break ;
       case 1  : s[0] = 0.25 * (  (1.-v) + v*w/(1.-w) ) ;
 	        s[1] = 0.25 * ( -(1.+u) + u*w/(1.-w) ) ;
-	        s[2] = 0.25 * ( -1.     + u*v/DSQR(1.-w) ) ; break ;
+	        s[2] = 0.25 * ( -1.     + u*v/SQR(1.-w) ) ; break ;
       case 2  : s[0] = 0.25 * (  (1.+v) + v*w/(1.-w) ) ;
                 s[1] = 0.25 * (  (1.+u) + u*w/(1.-w) ) ;
-                s[2] = 0.25 * ( -1.     + u*v/DSQR(1.-w) ) ; break ;
+                s[2] = 0.25 * ( -1.     + u*v/SQR(1.-w) ) ; break ;
       case 3  : s[0] = 0.25 * ( -(1.+v) + v*w/(1.-w) ) ;
                 s[1] = 0.25 * (  (1.-u) + u*w/(1.-w) ) ;
-                s[2] = 0.25 * ( -1.     + u*v/DSQR(1.-w) ) ; break ;
+                s[2] = 0.25 * ( -1.     + u*v/SQR(1.-w) ) ; break ;
       case 4  : s[0] = 0. ; 
                 s[1] = 0. ;
                 s[2] = 1. ; break ;
diff --git a/Plugin/StreamLines.cpp b/Plugin/StreamLines.cpp
index e89465956e8cd52408b6f11dae8658f14bed0d89..148fc759b9c7896710814d921d44090bc1366372 100644
--- a/Plugin/StreamLines.cpp
+++ b/Plugin/StreamLines.cpp
@@ -1,4 +1,4 @@
-// $Id: StreamLines.cpp,v 1.21 2005-03-02 07:49:41 geuzaine Exp $
+// $Id: StreamLines.cpp,v 1.22 2005-03-04 19:08:38 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -238,7 +238,7 @@ Post_View * GMSH_StreamLinesPlugin::GenerateView(int iView, int dView) const
   const double a1=0.5, a2=0.5, a3=1.0, a4=1.0;
   const double DT = StreamLinesOptions_Number[12].def;
   double XINIT[3], X[3], DX[3], X1[3], X2[3], X3[3], X4[3];
-  double sizeElem = 0.033, val[3], *val2 = NULL;
+  double val[3], *val2 = NULL;
 
   Post_View *View = BeginView(1);
 
@@ -293,21 +293,22 @@ Post_View * GMSH_StreamLinesPlugin::GenerateView(int iView, int dView) const
 	// X4 = X + a4 * DT * V(X3)
 	// X = X + b1 X1 + b2 X2 + b3 X3 + b4 x4
 
-	o.searchVector(X[0], X[1], X[2], val, &sizeElem, 0);
-	// double normV = sqrt(val[0]*val[0]+
-	//	 	       val[1]*val[1]+
-	//		       val[2]*val[2]);	     
+	// o.searchVector(X[0], X[1], X[2], val, 0, &sizeElem);
+	// double normV = sqrt(val[0]*val[0]+val[1]*val[1]+val[2]*val[2]);	     
 	// if (normV==0.0) normV = 1.0;
-	// double DT = sizeElem / normV ; /// CFL = 1 ==> secure 
+	// double DT = sizeElem / normV ; // CFL = 1 ==> secure 
+	o.searchVector(X[0], X[1], X[2], val, 0);
 	for(int k = 0; k < 3; k++) X1[k] = X[k] + DT * val[k] * a1;
-	o.searchVector(X1[0], X1[1], X1[2], val, &sizeElem, 0);
+	o.searchVector(X1[0], X1[1], X1[2], val, 0);
 	for(int k = 0; k < 3; k++) X2[k] = X[k] + DT * val[k] * a2;
-	o.searchVector(X2[0], X2[1], X2[2], val, &sizeElem, 0);
+	o.searchVector(X2[0], X2[1], X2[2], val, 0);
 	for(int k = 0; k < 3; k++) X3[k] = X[k] + DT * val[k] * a3;
-	o.searchVector(X3[0], X3[1], X3[2], val, &sizeElem, 0);
+	o.searchVector(X3[0], X3[1], X3[2], val, 0);
 	for(int k = 0; k < 3; k++) X4[k] = X[k] + DT * val[k] * a4;
-	for(int k = 0; k < 3; k++) X[k] += (b1*(X1[k]-X[k]) + b2*(X2[k]-X[k]) + 
-					    b3*(X3[k]-X[k]) + b4*(X4[k]-X[k])) ;
+
+	for(int k = 0; k < 3; k++) 
+	  X[k] += (b1*(X1[k]-X[k]) + b2*(X2[k]-X[k]) + 
+		   b3*(X3[k]-X[k]) + b4*(X4[k]-X[k])) ;
 	for(int k = 0; k < 3; k++) DX[k] = X[k] - XINIT[k];
 
 	if(v2){