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))