From 3b1e0540addda08e47b02e3af8a4808b25f596c8 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Fri, 6 Dec 2013 09:57:22 +0000
Subject: [PATCH] Avoid one redundant computation of the energy

[[Imported from SVN: r9563]]
---
 dune/gfe/targetspacertrsolver.cc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/dune/gfe/targetspacertrsolver.cc b/dune/gfe/targetspacertrsolver.cc
index 9851b6ae..b197b73d 100644
--- a/dune/gfe/targetspacertrsolver.cc
+++ b/dune/gfe/targetspacertrsolver.cc
@@ -54,6 +54,8 @@ void TargetSpaceRiemannianTRSolver<TargetSpace>::solve()
     MaxNormTrustRegion<blocksize,field_type> trustRegion(1,   // we have only one block
                                               initialTrustRegionRadius_);
 
+    field_type energy = assembler_->value(x_);
+
     // /////////////////////////////////////////////////////
     //   Trust-Region Solver
     // /////////////////////////////////////////////////////
@@ -63,7 +65,7 @@ void TargetSpaceRiemannianTRSolver<TargetSpace>::solve()
             std::cout << "----------------------------------------------------" << std::endl;
             std::cout << "      Trust-Region Step Number: " << i
                       << ",     radius: " << trustRegion.radius()
-                      << ",     energy: " << assembler_->value(x_) << std::endl;
+                      << ",     energy: " << energy << std::endl;
             std::cout << "----------------------------------------------------" << std::endl;
         }
 
@@ -112,8 +114,7 @@ void TargetSpaceRiemannianTRSolver<TargetSpace>::solve()
         TargetSpace newIterate = x_;
         newIterate = TargetSpace::exp(newIterate, corr[0]);
 
-        /** \todo Don't always recompute oldEnergy */
-        field_type oldEnergy = assembler_->value(x_);
+        field_type oldEnergy = energy;
         field_type energy    = assembler_->value(newIterate);
 
         // compute the model decrease
-- 
GitLab