From 982462524b235cbc244547214bc20dc136738f7b Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Wed, 19 Oct 2011 14:23:45 +0000
Subject: [PATCH] Use IPOpt as the base solver if it is available

[[Imported from SVN: r7960]]
---
 dune/gfe/riemanniantrsolver.cc | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc
index e3f02bf4..85f32f7b 100644
--- a/dune/gfe/riemanniantrsolver.cc
+++ b/dune/gfe/riemanniantrsolver.cc
@@ -62,6 +62,13 @@ setup(const GridType& grid,
     //   Create a multigrid solver
     // ////////////////////////////////
 
+#ifdef HAVE_IPOPT
+    // First create an IPOpt base solver
+    QuadraticIPOptSolver<MatrixType, CorrectionType>* baseSolver = new QuadraticIPOptSolver<MatrixType,CorrectionType>;
+    baseSolver->verbosity_ = NumProc::QUIET;
+    baseSolver->tolerance_ = baseTolerance;
+#else
+#warning IPOpt not installed -- falling back onto a Gauss-Seidel base solver
     // First create a Gauss-seidel base solver
     TrustRegionGSStep<MatrixType, CorrectionType>* baseSolverStep = new TrustRegionGSStep<MatrixType, CorrectionType>;
 
@@ -72,7 +79,8 @@ setup(const GridType& grid,
                                                                             baseTolerance,
                                                                             baseEnergyNorm,
                                                                             Solver::QUIET);
-
+#endif
+    
     // Make pre and postsmoothers
     TrustRegionGSStep<MatrixType, CorrectionType>* presmoother  = new TrustRegionGSStep<MatrixType, CorrectionType>;
     TrustRegionGSStep<MatrixType, CorrectionType>* postsmoother = new TrustRegionGSStep<MatrixType, CorrectionType>;
-- 
GitLab