diff --git a/dune/gfe/mixedriemanniantrsolver.cc b/dune/gfe/mixedriemanniantrsolver.cc
index fd7ed2829ef6974ed20cf5f713e4506c72ebdf5f..166a063084e7633aac74d5558472883f66d0e747 100644
--- a/dune/gfe/mixedriemanniantrsolver.cc
+++ b/dune/gfe/mixedriemanniantrsolver.cc
@@ -76,7 +76,15 @@ setup(const GridType& grid,
     // ////////////////////////////////
     //   Create a multigrid solver
     // ////////////////////////////////
-
+#ifdef HAVE_IPOPT
+    // First create an IPOpt base solver
+    auto baseSolver0 = new QuadraticIPOptSolver<MatrixType00,CorrectionType0>;
+    baseSolver0->verbosity_ = NumProc::QUIET;
+    baseSolver0->tolerance_ = baseTolerance;
+    auto baseSolver1 = new QuadraticIPOptSolver<MatrixType11,CorrectionType1>;
+    baseSolver1->verbosity_ = NumProc::QUIET;
+    baseSolver1->tolerance_ = baseTolerance;
+#else
     // First create a Gauss-seidel base solver
     TrustRegionGSStep<MatrixType00, CorrectionType0>* baseSolverStep0 = new TrustRegionGSStep<MatrixType00, CorrectionType0>;
     TrustRegionGSStep<MatrixType11, CorrectionType1>* baseSolverStep1 = new TrustRegionGSStep<MatrixType11, CorrectionType1>;
@@ -96,6 +104,7 @@ setup(const GridType& grid,
                                                                                    baseTolerance,
                                                                                    baseNorm1,
                                                                                    Solver::QUIET);
+#endif
 
     // Transfer all Dirichlet data to the master processor
 #if 0