From e94b79185117beb3772d40e07347e88e15ddeaf4 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Thu, 25 Jul 2013 17:13:38 +0200
Subject: [PATCH] [Cleanup] Make time relative

---
 src/assemblers.cc                  |  6 +++---
 src/assemblers.hh                  |  2 +-
 src/assemblers_tmpl.cc             |  2 +-
 src/one-body-sample.cc             | 12 ++++++------
 src/one-body-sample.py             |  4 ++--
 src/timestepping.hh                |  2 +-
 src/timestepping/backward_euler.cc |  6 +++---
 src/timestepping/newmark.cc        |  6 +++---
 8 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/src/assemblers.cc b/src/assemblers.cc
index eade2af8..c3c146d6 100644
--- a/src/assemblers.cc
+++ b/src/assemblers.cc
@@ -16,11 +16,11 @@ void assemble_neumann(GridView const &gridView, AssemblerType const &assembler,
                       Dune::BitSetVector<1> const &neumannNodes,
                       Dune::BlockVector<LocalVectorType> &f,
                       Dune::VirtualFunction<double, double> const &neumann,
-                      double time) { // constant sample function on neumann
-                                     // boundary
+                      double relativeTime) { // constant sample function on
+                                             // neumann boundary
   BoundaryPatch<GridView> const neumannBoundary(gridView, neumannNodes);
   LocalVectorType SampleVector(0);
-  neumann.evaluate(time, SampleVector[0]);
+  neumann.evaluate(relativeTime, SampleVector[0]);
   ConstantFunction<LocalVectorType, LocalVectorType> const fNeumann(
       SampleVector);
   NeumannBoundaryAssembler<typename GridView::Grid, LocalVectorType>
diff --git a/src/assemblers.hh b/src/assemblers.hh
index 053a336b..e0a8d090 100644
--- a/src/assemblers.hh
+++ b/src/assemblers.hh
@@ -16,7 +16,7 @@ void assemble_neumann(GridView const &gridView, AssemblerType const &assembler,
                       Dune::BitSetVector<1> const &neumannNodes,
                       Dune::BlockVector<LocalVectorType> &f,
                       Dune::VirtualFunction<double, double> const &neumann,
-                      double time);
+                      double relativeTime);
 
 template <class GridView, class LocalVectorType, class AssemblerType>
 Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>>
diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc
index 8b6dd794..17cedafd 100644
--- a/src/assemblers_tmpl.cc
+++ b/src/assemblers_tmpl.cc
@@ -27,7 +27,7 @@ template void assemble_neumann<GridView, SmallVector, AssemblerType>(
     GridView const &gridView, AssemblerType const &assembler,
     Dune::BitSetVector<1> const &neumannNodes,
     Dune::BlockVector<SmallVector> &f,
-    Dune::VirtualFunction<double, double> const &neumann, double time);
+    Dune::VirtualFunction<double, double> const &neumann, double relativeTime);
 
 template Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>>
 assemble_frictional<GridView, SmallVector, AssemblerType>(
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 79311323..c6c93d62 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -339,9 +339,9 @@ int main(int argc, char *argv[]) {
         frictionalNodes, *nodalIntegrals, frictionData);
 
     // Problem formulation: right-hand side
-    auto const createRHS = [&](double _time, VectorType &_ell) {
+    auto const createRHS = [&](double _relativeTime, VectorType &_ell) {
       assemble_neumann(leafView, p1Assembler, neumannNodes, _ell,
-                       neumannFunction, _time);
+                       neumannFunction, _relativeTime);
       _ell += gravityFunctional;
     };
     VectorType ell(finestSize);
@@ -491,16 +491,16 @@ int main(int argc, char *argv[]) {
       stateUpdater->nextTimeStep();
       timeSteppingScheme->nextTimeStep();
 
-      double const time = tau * run;
-      createRHS(time, ell);
+      auto const relativeTime = double(run) / double(timesteps);
+      createRHS(relativeTime, ell);
 
       MatrixType velocityMatrix;
       VectorType velocityRHS(finestSize);
       VectorType velocityIterate(finestSize);
 
       stateUpdater->setup(tau);
-      timeSteppingScheme->setup(ell, tau, time, velocityRHS, velocityIterate,
-                                velocityMatrix);
+      timeSteppingScheme->setup(ell, tau, relativeTime, velocityRHS,
+                                velocityIterate, velocityMatrix);
 
       LoopSolver<VectorType> velocityProblemSolver(
           multigridStep, maximumIterations, tolerance, &AMNorm, verbosity,
diff --git a/src/one-body-sample.py b/src/one-body-sample.py
index 8598fd15..b44987fb 100644
--- a/src/one-body-sample.py
+++ b/src/one-body-sample.py
@@ -1,9 +1,9 @@
 class neumannCondition:
-    def __call__(self, x):
+    def __call__(self, relativeTime):
         return 0
 
 class velocityDirichletCondition:
-    def __call__(self, x):
+    def __call__(self, relativeTime):
         return 2e-4
 
 Functions = {
diff --git a/src/timestepping.hh b/src/timestepping.hh
index 861d8475..5420aa3a 100644
--- a/src/timestepping.hh
+++ b/src/timestepping.hh
@@ -7,7 +7,7 @@ template <class VectorType, class MatrixType, class FunctionType, size_t dim>
 class TimeSteppingScheme {
 public:
   void virtual nextTimeStep() = 0;
-  void virtual setup(VectorType const &ell, double _tau, double time,
+  void virtual setup(VectorType const &ell, double _tau, double relativeTime,
                      VectorType &rhs, VectorType &iterate, MatrixType &AB) = 0;
 
   void virtual postProcess(VectorType const &iterate) = 0;
diff --git a/src/timestepping/backward_euler.cc b/src/timestepping/backward_euler.cc
index 684af458..d9828616 100644
--- a/src/timestepping/backward_euler.cc
+++ b/src/timestepping/backward_euler.cc
@@ -21,7 +21,7 @@ void BackwardEuler<VectorType, MatrixType, FunctionType, dim>::nextTimeStep() {
 
 template <class VectorType, class MatrixType, class FunctionType, size_t dim>
 void BackwardEuler<VectorType, MatrixType, FunctionType, dim>::setup(
-    VectorType const &ell, double _tau, double time, VectorType &rhs,
+    VectorType const &ell, double _tau, double relativeTime, VectorType &rhs,
     VectorType &iterate, MatrixType &AM) {
   postProcessCalled = false;
 
@@ -77,11 +77,11 @@ void BackwardEuler<VectorType, MatrixType, FunctionType, dim>::setup(
         continue;
       case dim:
         iterate[i] = 0;
-        dirichletFunction.evaluate(time, iterate[i][0]);
+        dirichletFunction.evaluate(relativeTime, iterate[i][0]);
         break;
       case 1:
         if (dirichletNodes[i][0]) {
-          dirichletFunction.evaluate(time, iterate[i][0]);
+          dirichletFunction.evaluate(relativeTime, iterate[i][0]);
           break;
         }
         if (dirichletNodes[i][1]) {
diff --git a/src/timestepping/newmark.cc b/src/timestepping/newmark.cc
index bd9dcbc0..9e7fb91f 100644
--- a/src/timestepping/newmark.cc
+++ b/src/timestepping/newmark.cc
@@ -24,7 +24,7 @@ void Newmark<VectorType, MatrixType, FunctionType, dim>::nextTimeStep() {
 
 template <class VectorType, class MatrixType, class FunctionType, size_t dim>
 void Newmark<VectorType, MatrixType, FunctionType, dim>::setup(
-    VectorType const &ell, double _tau, double time, VectorType &rhs,
+    VectorType const &ell, double _tau, double relativeTime, VectorType &rhs,
     VectorType &iterate, MatrixType &AM) {
   postProcessCalled = false;
 
@@ -83,11 +83,11 @@ void Newmark<VectorType, MatrixType, FunctionType, dim>::setup(
         continue;
       case dim:
         iterate[i] = 0;
-        dirichletFunction.evaluate(time, iterate[i][0]);
+        dirichletFunction.evaluate(relativeTime, iterate[i][0]);
         break;
       case 1:
         if (dirichletNodes[i][0]) {
-          dirichletFunction.evaluate(time, iterate[i][0]);
+          dirichletFunction.evaluate(relativeTime, iterate[i][0]);
           break;
         }
         if (dirichletNodes[i][1]) {
-- 
GitLab