From f152ade04088beedc24fae711d6cd2ae3d2d7cce Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Wed, 30 Jan 2013 18:17:15 +0100
Subject: [PATCH] Implement damping

---
 src/one-body-sample.cc | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index b60eb506..afeea73e 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -394,7 +394,15 @@ int main(int argc, char *argv[]) {
           parset.get<double>("solver.tnnmg.fixed_point_tolerance");
       for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) {
         stateUpdater->solve(ud);
-        stateUpdater->extractState(alpha);
+        if (state_fpi == 1)
+          stateUpdater->extractState(alpha);
+        else {
+          SingletonVectorType computed_state;
+          stateUpdater->extractState(computed_state);
+          double const damping = 0.5;
+          alpha *= damping;
+          alpha.axpy(1.0 - damping, computed_state);
+        }
 
         solveDisplacementProblem(problem_iterate, alpha);
         timeSteppingScheme->postProcess(problem_iterate);
-- 
GitLab