diff --git a/dune/tectonic/nicefunction.hh b/dune/tectonic/nicefunction.hh
index 979efc7842903b5db6f01824baea5c119ca3e968..9561d5b561ce8c09f624381ceec72de6303aebb1 100644
--- a/dune/tectonic/nicefunction.hh
+++ b/dune/tectonic/nicefunction.hh
@@ -73,6 +73,8 @@ class RuinaFunction : public NiceFunction {
   }
 
   double virtual second_deriv(double x) const {
+    assert(x >= 0);
+    assert(V0 > 0);
     double const arg = x / V0;
     if (arg <= rho)
       return 0;
@@ -81,6 +83,8 @@ class RuinaFunction : public NiceFunction {
   }
 
   double virtual regularity(double x) const {
+    assert(x >= 0);
+    assert(V0 > 0);
     double const arg = x / V0;
     // TODO: Make this controllable
     if (std::abs(arg - rho) < 1e-14)
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 9058bf1eba7de51dbf0f6b6bc02762701dd58b52..5da3d09417b320591a13edf6c2798cd563e12220 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -308,9 +308,13 @@ int main(int argc, char *argv[]) {
     MySolver<dims, MatrixType, VectorType, GridType, MyBlockProblemType>
     mySolver(parset.sub("solver.tnnmg"), refinements, solver_tolerance, *grid,
              ignoreNodes);
-
+    auto multigridStep = mySolver.getSolver();
     Solver::VerbosityMode const verbosity =
         parset.get<bool>("verbose") ? Solver::FULL : Solver::QUIET;
+    LoopSolver<VectorType> overallSolver(
+        multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
+        parset.get<double>("solver.tolerance"), &energyNorm, verbosity,
+        false); // absolute error
 
     std::fstream coordinate_writer("coordinates", std::fstream::out);
     for (size_t i = 0; i < frictionalNodes.size(); ++i)
@@ -374,13 +378,8 @@ int main(int argc, char *argv[]) {
         MyConvexProblemType const myConvexProblem(
             problem_A, *myGlobalNonlinearity, problem_rhs);
         MyBlockProblemType myBlockProblem(parset, myConvexProblem);
-        auto multigridStep = mySolver.getSolver();
         multigridStep->setProblem(_problem_iterate, myBlockProblem);
 
-        LoopSolver<VectorType> overallSolver(
-            multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
-            parset.get<double>("solver.tolerance"), &energyNorm, verbosity,
-            false); // absolute error
         overallSolver.preprocess();
         overallSolver.solve();
       };