From 5c2f16c13aad1a60b2274ade0dbdbce34935deca Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Tue, 8 May 2012 15:45:03 +0200
Subject: [PATCH] Only retrieve functions once

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

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 6650b2a9..b5b824d2 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -224,6 +224,8 @@ int main(int argc, char *argv[]) {
                   << "# rows: " << timesteps << std::endl << "# columns: 3"
                   << std::endl;
     double const h = 1.0 / timesteps;
+    auto const &neumannFunction = functions.get("neumannCondition");
+    auto const &dirichletFunction = functions.get("dirichletCondition");
     for (size_t run = 1; run <= timesteps; ++run) {
       if (parset.get<bool>("printProgress")) {
         std::cout << '*';
@@ -232,14 +234,12 @@ int main(int argc, char *argv[]) {
 
       {
         assemble_neumann<GridType, GridView, SmallVector, P1Basis>(
-            leafView, p1Basis, neumannNodes, b4,
-            functions.get("neumannCondition"), h * run);
+            leafView, p1Basis, neumannNodes, b4, neumannFunction, h * run);
         stiffnessMatrix.mmv(u4, b4);
         // Apply Dirichlet condition
         for (int i = 0; i < finestSize; ++i)
           if (ignoreNodes[i].count() == dim) {
-            functions.get("dirichletCondition")
-                .evaluate(h * run, u4_diff[i][0]);
+            dirichletFunction.evaluate(h * run, u4_diff[i][0]);
             u4_diff[i][0] /= refinement_factor;
           }
 
@@ -300,8 +300,8 @@ int main(int argc, char *argv[]) {
 
         if (parset.get<bool>("writeEvolution"))
           write_evolution<SingletonVectorType, VectorType>(
-              frictionalNodes, *s4_new, u4, functions.get("neumannCondition"),
-              run, h * run, octave_writer);
+              frictionalNodes, *s4_new, u4, neumannFunction, run, h * run,
+              octave_writer);
 
         if (parset.get<bool>("printCoefficient"))
           for (size_t i = 0; i < frictionalNodes.size(); ++i) {
-- 
GitLab