From 39a566f72e025e82df46b9752074e14b8c1975c9 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Mon, 10 Nov 2014 08:57:01 +0000
Subject: [PATCH] Bugfix: also fall back to IPOpt if the model decrease is nan

May happen when the matrix is singular.  UMFPack doesn't like that.

[[Imported from SVN: r9958]]
---
 dune/gfe/trustregionmmgbasesolver.hh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dune/gfe/trustregionmmgbasesolver.hh b/dune/gfe/trustregionmmgbasesolver.hh
index 86776e0f..50c0522a 100644
--- a/dune/gfe/trustregionmmgbasesolver.hh
+++ b/dune/gfe/trustregionmmgbasesolver.hh
@@ -138,7 +138,7 @@ void TrustRegionMMGBaseSolver<MatrixType, VectorType>::solve()
   matrix_->umv(*x_, tmp);
   double modelDecrease = (modifiedRhs*(*x_)) - 0.5 * ((*x_)*tmp);
 
-  if (modelDecrease < 0)
+  if (std::isnan(modelDecrease) or modelDecrease < 0)
   {
     std::cout << "Model increase: " << -modelDecrease << ", falling back to slower solver" << std::endl;
 
-- 
GitLab