diff --git a/Geo/GFaceCompound.cpp b/Geo/GFaceCompound.cpp
index d79f9a33d14f7a08eee5c69258e9c362b2d729ed..423085f20c6ce097a7ee92740e051b9e22341174 100644
--- a/Geo/GFaceCompound.cpp
+++ b/Geo/GFaceCompound.cpp
@@ -678,9 +678,9 @@ bool GFaceCompound::parametrize() const
     fullMatrix<double> Oper(3*allNodes.size(),3*allNodes.size());
     _rbf = new GRbf(epsilon, delta, radius,  variableEps, radFunInd, _normals, allNodes);
 
-    _rbf->RbfLapSurface_global_CPM_low(_rbf->getXYZ(), _rbf->getN(), Oper);
+    //_rbf->RbfLapSurface_global_CPM_low(_rbf->getXYZ(), _rbf->getN(), Oper);
     //_rbf->RbfLapSurface_local_CPM(true, _rbf->getXYZ(), _rbf->getN(), Oper);
-    //_rbf->RbfLapSurface_global_CPM_high(_rbf->getXYZ(), _rbf->getN(), Oper);
+    _rbf->RbfLapSurface_global_CPM_high(_rbf->getXYZ(), _rbf->getN(), Oper);
     //_rbf->RbfLapSurface_local_CPM(false, _rbf->getXYZ(), _rbf->getN(),  Oper);
     //_rbf->RbfLapSurface_global_projection(_rbf->getXYZ(), _rbf->getN(), Oper);
     //_rbf->RbfLapSurface_local_projection(_rbf->getXYZ(), _rbf->getN(), Oper);
diff --git a/Geo/GRbf.cpp b/Geo/GRbf.cpp
index 1b8d2141403747efd4b998207c8fbb352ca36ffd..0d9f51d0fff16ca4c837d205c1f12299a9b84eb7 100644
--- a/Geo/GRbf.cpp
+++ b/Geo/GRbf.cpp
@@ -252,18 +252,19 @@ fullMatrix<double> GRbf::generateRbfMat(int p,
   // }
   
   int nbLocNodes = n;
-  if (isExt) nbLocNodes /= 3;
-  double min_dist = 1.e6;
-  for (int i = 0; i < nbLocNodes; i++) {
-    for (int j = i+1; j < nbLocNodes; j++) {
-      double dx = nodes1(i,0)-nodes1(j,0);
-      double dy = nodes1(i,1)-nodes1(j,1);
-      double dz = nodes1(i,2)-nodes1(j,2);
-      double dist_node = sqrt(dx*dx+dy*dy+dz*dz);
-      if (dist_node<min_dist) min_dist = dist_node;
-    }
-  }
-  double eps = 0.5/min_dist;
+  if (isExt) nbLocNodes /= 1;
+  // double min_dist = 1.e6;
+  // for (int i = 0; i < nbLocNodes; i++) {
+  //   for (int j = i+1; j < nbLocNodes; j++) {
+  //     double dx = nodes1(i,0)-nodes1(j,0);
+  //     double dy = nodes1(i,1)-nodes1(j,1);
+  //     double dz = nodes1(i,2)-nodes1(j,2);
+  //     double dist_node = sqrt(dx*dx+dy*dy+dz*dz);
+  //     if (dist_node<min_dist) min_dist = dist_node;
+  //   }
+  // }
+  double eps =0.4/delta;//0.0677*(nbNodes^0.28)/min_dist;
+  //  printf("epsilon = %g\n", eps);
   for (int i = 0; i < m; i++) {
     for (int j = 0; j < n; j++) {
       double dx = nodes2(i,0)-nodes1(j,0);
@@ -525,6 +526,7 @@ void GRbf::RbfLapSurface_global_CPM_high(const fullMatrix<double> &cntrs,
   int numNodes = cntrs.size1();
   int nnTot = 3*numNodes;
   Oper.resize(nnTot,nnTot);
+  printf("n = %i \n", numNodes);
 
   fullMatrix<double> sx, sy, sz, sxx, sxy, sxz,syy, syz, szz; 
   fullMatrix<double> A, Ax, Ay, Az, Axx, Axy, Axz, Ayy, Ayz, Azz, Alap, AOper, extX, surf; 
@@ -917,8 +919,8 @@ bool GRbf::UVStoXYZ(const double  u_eval, const double v_eval,
       Jac(k,1) = uy(0,k);
       Jac(k,2) = uz(0,k);
     }    
-    Jac.invertInPlace(); 
-    
+    Jac.invertInPlace();
+
     for (int j = 0; j< 3;j++)
       nodes_eval(0,j) = nodes_eval(0,j) 
   	+ Jac(j,0)*( u_vec_eval(0,0) - u_temp(0,0))