diff --git a/dune/gfe/targetspacertrsolver.cc b/dune/gfe/targetspacertrsolver.cc
index 9851b6ae4b5bee5031c722e5c280a0a726af77b7..b197b73d680a4335ad6f36e50bfb26f86a845ad1 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