From 6f3b7ad2dd692d050c02ae302d43fc54fe2d8d89 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Tue, 29 Nov 2011 15:32:21 +0100
Subject: [PATCH] Only assemble nonlinearity once

---
 src/one-body-sample.cc | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 6dfeee08..9920be72 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);
-- 
GitLab