diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 6dfeee08b31acadae9029ed3b05dd7ca84506b6f..9920be72f4fa3655887a4d3e9d60e6ccad70c8ae 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -264,6 +264,10 @@ int main(int argc, char *argv[]) {
     assemble_frictional<GridType, GridType::LeafGridView, SmallVector, P1Basis>(
         leafView, p1Basis, frictionalNodes, nodalIntegrals);
 
+    Dune::shared_ptr<Dune::GlobalNonlinearity<dim> const> myGlobalNonlinearity;
+    assemble_nonlinearity(grid.size(grid.maxLevel(), dim), parset,
+                          myGlobalNonlinearity, nodalIntegrals);
+
     for (size_t run = 1; run <= parset.get<size_t>("timesteps"); ++run) {
       std::cout << ".";
       std::cout.flush();
@@ -279,12 +283,6 @@ int main(int argc, char *argv[]) {
       stiffnessMatrix.mmv(u2, b2);
       stiffnessMatrix.mmv(u3, b3);
 
-      Dune::shared_ptr<Dune::GlobalNonlinearity<dim> const>
-      myGlobalNonlinearity;
-      assemble_nonlinearity(grid.size(grid.maxLevel(), dim), parset,
-                            myGlobalNonlinearity, nodalIntegrals);
-      // }}}
-
       if (parset.get<bool>("useNonlinearGS")) {
         MyConvexProblemType myConvexProblem(
             stiffnessMatrix, *myGlobalNonlinearity, b1, u1_diff_new);