diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index c1d1c872389e03e0bf1e66c6eccd03a821c1ce5a..72f47a00bbf43b33d77f35e6207d0f1cb26112ad 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -282,7 +282,6 @@ int main(int argc, char *argv[]) {
       OperatorAssembler<P1Basis, P1Basis>(p1Basis, p1Basis)
           .assemble(localStiffness, stiffnessMatrix);
     };
-    EnergyNorm<MatrixType, VectorType> energyNorm(stiffnessMatrix);
 
     auto const nodalIntegrals =
         assemble_frictional<GridType, GridView, SmallVector, P1Basis>(
@@ -311,9 +310,6 @@ int main(int argc, char *argv[]) {
     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"),
-        solver_tolerance, &energyNorm, verbosity, false); // absolute error
 
     std::fstream coordinate_writer("coordinates", std::fstream::out);
     for (size_t i = 0; i < frictionalNodes.size(); ++i)
@@ -368,6 +364,10 @@ int main(int argc, char *argv[]) {
       stateUpdater->setup(tau);
       timeSteppingScheme->setup(ell, tau, time, problem_rhs, problem_iterate,
                                 problem_A);
+      EnergyNorm<MatrixType, VectorType> energyNorm(problem_A);
+      LoopSolver<VectorType> overallSolver(
+          multigridStep, parset.get<size_t>("solver.tnnmg.maxiterations"),
+          solver_tolerance, &energyNorm, verbosity, false); // absolute error
 
       size_t iterationCounter;
       auto solveDisplacementProblem = [&](VectorType &_problem_iterate,