From d43bf22d4fa781f3a66ed535a8a264ee11d3c507 Mon Sep 17 00:00:00 2001 From: Thomas Toulorge <thomas.toulorge@mines-paristech.fr> Date: Wed, 25 Apr 2012 23:43:55 +0000 Subject: [PATCH] Fixed bug in Jacobian-triggered "zero-gradient" stop --- contrib/HighOrderMeshOptimizer/OptHOM.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/contrib/HighOrderMeshOptimizer/OptHOM.cpp b/contrib/HighOrderMeshOptimizer/OptHOM.cpp index 6c9582c26a..27520bd4c4 100644 --- a/contrib/HighOrderMeshOptimizer/OptHOM.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHOM.cpp @@ -84,11 +84,13 @@ void OptHOM::evalObjGrad(const alglib::real_1d_array &x, double &Obj, alglib::re Obj = 0.; for (int i = 0; i < gradObj.length(); i++) gradObj[i] = 0.; - if ((minJac > barrier_min) && (maxJac < barrier_max)) + addJacObjGrad(Obj, gradObj); + addDistObjGrad(lambda, lambda2, Obj, gradObj); + + if ((minJac > barrier_min) && (maxJac < barrier_max)) { printf("INFO: reached Jacobian requirements, setting null gradient\n"); - else { - addJacObjGrad(Obj, gradObj); - addDistObjGrad(lambda, lambda2, Obj, gradObj); + Obj = 0.; + for (int i = 0; i < gradObj.length(); i++) gradObj[i] = 0.; } } -- GitLab