From 6b1bd618d941b22fad0622ad3c173de7caeca34d Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Thu, 19 Jun 2014 14:54:52 +0200
Subject: [PATCH] [Extend]  Allow lambda to be specified

---
 src/sand-wedge-data/parset.cfg | 1 +
 src/sand-wedge.cc              | 5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/sand-wedge-data/parset.cfg b/src/sand-wedge-data/parset.cfg
index f6ad4f34..0becf2b5 100644
--- a/src/sand-wedge-data/parset.cfg
+++ b/src/sand-wedge-data/parset.cfg
@@ -61,6 +61,7 @@ tolerance         = 1e-10
 maximumIterations = 10000
 relaxation        = 0.5
 requiredReduction = 0.5
+lambda            = 0.5
 
 [solver.tnnmg.linear]
 maxiumumIterations = 100000
diff --git a/src/sand-wedge.cc b/src/sand-wedge.cc
index c58817d7..65f2ec00 100644
--- a/src/sand-wedge.cc
+++ b/src/sand-wedge.cc
@@ -369,6 +369,7 @@ int main(int argc, char *argv[]) {
     auto const printProgress = parset.get<bool>("io.printProgress");
     auto const verbosity =
         parset.get<Solver::VerbosityMode>("v.solver.verbosity");
+    auto const lambda = parset.get<double>("v.fpi.lambda");
     for (size_t timeStep = 1; timeStep <= timeSteps; ++timeStep) {
       if (printProgress)
         std::cout << std::setw(7) << timeStep << " " << std::flush;
@@ -415,8 +416,8 @@ int main(int argc, char *argv[]) {
       double lastStateCorrection;
       for (size_t stateFPI = 1; stateFPI <= maximumStateFPI; ++stateFPI) {
         timeSteppingScheme->extractOldVelocity(v_m);
-        v_m *= 0.5;
-        Arithmetic::addProduct(v_m, 0.5, v);
+        v_m *= 1.0 - lambda;
+        Arithmetic::addProduct(v_m, lambda, v);
 
         stateUpdater->solve(v_m);
         stateUpdater->extractLogState(alpha);
-- 
GitLab