From 3f38838baea932ec0cb0cf3b8ac4dd97404bb4ad Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Sat, 14 Dec 2013 15:32:17 +0100
Subject: [PATCH] [Algorit] Use 0.5*(V0 + V1) in state computation

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

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 678a7c8e..918f4994 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -318,6 +318,7 @@ int main(int argc, char *argv[]) {
         parset.get<double>("boundary.friction.L"));
 
     Vector v = v_initial;
+    Vector v_m(fineVertexCount);
     ScalarVector alpha(fineVertexCount);
 
     auto const timeSteps = parset.get<size_t>("timeSteps.number"),
@@ -378,7 +379,11 @@ int main(int argc, char *argv[]) {
       ScalarVector alpha_saved;
       double lastStateCorrection;
       for (size_t stateFPI = 1; stateFPI <= maximumStateFPI; ++stateFPI) {
-        stateUpdater->solve(v);
+        timeSteppingScheme->extractOldVelocity(v_m);
+        v_m *= 0.5;
+        Arithmetic::addProduct(v_m, 0.5, v);
+
+        stateUpdater->solve(v_m);
         stateUpdater->extractLogState(alpha);
 
         if (stateFPI == 1)
-- 
GitLab