diff --git a/contrib/HighOrderMeshOptimizer/OptHOM.cpp b/contrib/HighOrderMeshOptimizer/OptHOM.cpp index 6ecfb3bf9c0696401f8b6aef7f7558f675d9fd86..f6a39bf29cd3932136eb81e1d475e553d59f2d12 100644 --- a/contrib/HighOrderMeshOptimizer/OptHOM.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHOM.cpp @@ -265,13 +265,18 @@ void OptHOM::OptimPass(alglib::real_1d_array &x, if (OPTMETHOD == 1) { alglib::mincgstate state; alglib::mincgreport rep; - mincgcreate(x, state); - mincgsetscale(state,scale); - mincgsetprecscale(state); - mincgsetcond(state, EPSG, EPSF, EPSX, itMax); - mincgsetxrep(state, true); - alglib::mincgoptimize(state, evalObjGradFunc, printProgressFunc, this); - mincgresults(state, x, rep); + try{ + mincgcreate(x, state); + mincgsetscale(state,scale); + mincgsetprecscale(state); + mincgsetcond(state, EPSG, EPSF, EPSX, itMax); + mincgsetxrep(state, true); + alglib::mincgoptimize(state, evalObjGradFunc, printProgressFunc, this); + mincgresults(state, x, rep); + } + catch(alglib::ap_error e){ + Msg::Error("%s", e.msg.c_str()); + } iterationscount = rep.iterationscount; nfev = rep.nfev; terminationtype = rep.terminationtype; @@ -279,13 +284,18 @@ void OptHOM::OptimPass(alglib::real_1d_array &x, else { alglib::minlbfgsstate state; alglib::minlbfgsreport rep; - minlbfgscreate(3, x, state); - minlbfgssetscale(state,scale); - minlbfgssetprecscale(state); - minlbfgssetcond(state, EPSG, EPSF, EPSX, itMax); - minlbfgssetxrep(state, true); - alglib::minlbfgsoptimize(state, evalObjGradFunc, printProgressFunc, this); - minlbfgsresults(state, x, rep); + try{ + minlbfgscreate(3, x, state); + minlbfgssetscale(state,scale); + minlbfgssetprecscale(state); + minlbfgssetcond(state, EPSG, EPSF, EPSX, itMax); + minlbfgssetxrep(state, true); + alglib::minlbfgsoptimize(state, evalObjGradFunc, printProgressFunc, this); + minlbfgsresults(state, x, rep); + } + catch(alglib::ap_error e){ + Msg::Error("%s", e.msg.c_str()); + } iterationscount = rep.iterationscount; nfev = rep.nfev; terminationtype = rep.terminationtype;