diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc
index e3f02bf43dd26360d29b0cfe1c2d8c44fde21a05..85f32f7b25ff8d4b5d31703a960f91c9a66868c0 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>;