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