diff --git a/contrib/HighOrderMeshOptimizer/OptHOM.cpp b/contrib/HighOrderMeshOptimizer/OptHOM.cpp index 2ba8c4753815fc4712bd539a81149c8aea63db9d..c9de40f03e48492fd4a8dc1a7953e9158400081b 100644 --- a/contrib/HighOrderMeshOptimizer/OptHOM.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHOM.cpp @@ -172,12 +172,6 @@ void OptHOM::calcScale(alglib::real_1d_array &scale) for (int iPC = 0; iPC < mesh.nPCFV(iFV); iPC++) scale[mesh.indPCFV(iFV,iPC)] = scaleFV[iPC]; } - // Normalize scale vector (otherwise ALGLIB routines may fail) - double scaleNormSq = 0.; - for (int i = 0; i < mesh.nPC(); i++) scaleNormSq += scale[i]*scale[i]; - const double scaleNorm = sqrt(scaleNormSq); - for (int i = 0; i < mesh.nPC(); i++) scale[i] /= scaleNorm; - } @@ -194,15 +188,16 @@ void OptHOM::OptimPass(alglib::real_1d_array &x, const alglib::real_1d_array &in iter = 0; + alglib::real_1d_array scale; + calcScale(scale); + int iterationscount = 0, nfev = 0, terminationtype = -1; if (OPTMETHOD == 1) { alglib::mincgstate state; alglib::mincgreport rep; mincgcreate(x, state); - alglib::real_1d_array scale; - calcScale(scale); - mincgsetscale(state,scale); - mincgsetprecscale(state); + mincgsetscale(state,scale); + mincgsetprecscale(state); mincgsetcond(state, EPSG, EPSF, EPSX, itMax); mincgsetxrep(state, true); alglib::mincgoptimize(state, evalObjGradFunc, printProgressFunc, this); @@ -215,8 +210,6 @@ void OptHOM::OptimPass(alglib::real_1d_array &x, const alglib::real_1d_array &in alglib::minlbfgsstate state; alglib::minlbfgsreport rep; minlbfgscreate(3, x, state); - alglib::real_1d_array scale; - calcScale(scale); minlbfgssetscale(state,scale); minlbfgssetprecscale(state); minlbfgssetcond(state, EPSG, EPSF, EPSX, itMax);