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