From 668d4321df01232dcaa5d17527134d75e3203ee3 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Sun, 21 Jul 2013 13:21:26 +0200 Subject: [PATCH] [Cleanup] Kill quasistatic Euler --- src/enum_scheme.cc | 3 -- src/enums.hh | 1 - src/one-body-sample.cc | 5 -- src/timestepping.cc | 1 - src/timestepping.hh | 1 - src/timestepping/impliciteuler.cc | 87 ------------------------------- src/timestepping/impliciteuler.hh | 34 ------------ src/timestepping_tmpl.cc | 1 - 8 files changed, 133 deletions(-) delete mode 100644 src/timestepping/impliciteuler.cc delete mode 100644 src/timestepping/impliciteuler.hh diff --git a/src/enum_scheme.cc b/src/enum_scheme.cc index ce65159c..6c57c032 100644 --- a/src/enum_scheme.cc +++ b/src/enum_scheme.cc @@ -2,9 +2,6 @@ template <> struct StringToEnum<Config::scheme> { static Config::scheme convert(std::string const &s) { - if (s == "implicitEuler") - return Config::ImplicitEuler; - if (s == "newmark") return Config::Newmark; diff --git a/src/enums.hh b/src/enums.hh index 79bde17d..b70a0d17 100644 --- a/src/enums.hh +++ b/src/enums.hh @@ -7,7 +7,6 @@ struct Config { Ruina }; enum scheme { - ImplicitEuler, Newmark, EulerPair }; diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 141eb3a2..7eaf6def 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -102,11 +102,6 @@ initTimeStepper(Config::scheme scheme, VectorType const &u_initial, VectorType const &v_initial, VectorType const &a_initial) { switch (scheme) { - case Config::ImplicitEuler: - return Dune::make_shared< - ImplicitEuler<VectorType, MatrixType, FunctionType, dims>>( - stiffnessMatrix, u_initial, v_initial, velocityDirichletNodes, - velocityDirichletFunction); case Config::Newmark: return Dune::make_shared< Newmark<VectorType, MatrixType, FunctionType, dims>>( diff --git a/src/timestepping.cc b/src/timestepping.cc index 42a9b679..a0399257 100644 --- a/src/timestepping.cc +++ b/src/timestepping.cc @@ -8,7 +8,6 @@ #include "timestepping.hh" #include "timestepping/eulerpair.cc" -#include "timestepping/impliciteuler.cc" #include "timestepping/newmark.cc" #include "timestepping_tmpl.cc" diff --git a/src/timestepping.hh b/src/timestepping.hh index b09e6b30..4b02fdb6 100644 --- a/src/timestepping.hh +++ b/src/timestepping.hh @@ -16,7 +16,6 @@ class TimeSteppingScheme { void virtual extractVelocity(VectorType &velocity) const = 0; }; -#include "timestepping/impliciteuler.hh" #include "timestepping/newmark.hh" #include "timestepping/eulerpair.hh" diff --git a/src/timestepping/impliciteuler.cc b/src/timestepping/impliciteuler.cc deleted file mode 100644 index 2ae4991f..00000000 --- a/src/timestepping/impliciteuler.cc +++ /dev/null @@ -1,87 +0,0 @@ -template <class VectorType, class MatrixType, class FunctionType, int dim> -ImplicitEuler<VectorType, MatrixType, FunctionType, dim>::ImplicitEuler( - MatrixType const &_A, VectorType const &_u_initial, - VectorType const &_v_initial, - Dune::BitSetVector<dim> const &_dirichletNodes, - FunctionType const &_dirichletFunction) - : A(_A), - u(_u_initial), - v(_v_initial), - dirichletNodes(_dirichletNodes), - dirichletFunction(_dirichletFunction) {} - -template <class VectorType, class MatrixType, class FunctionType, int dim> -void ImplicitEuler<VectorType, MatrixType, FunctionType, dim>::nextTimeStep() { - v_o = v; - u_o = u; -} - -template <class VectorType, class MatrixType, class FunctionType, int dim> -void ImplicitEuler<VectorType, MatrixType, FunctionType, dim>::setup( - VectorType const &ell, double _tau, double time, VectorType &problem_rhs, - VectorType &problem_iterate, MatrixType &problem_AB) { - postProcessCalled = false; - - tau = _tau; - - problem_rhs = ell; - Arithmetic::subtractProduct(problem_rhs, A, u_o); - - // For fixed tau, we'd only really have to do this once - problem_AB = A; - problem_AB *= tau; - - // v_o makes a good initial iterate; we could use anything, though - problem_iterate = v_o; - - for (size_t i = 0; i < dirichletNodes.size(); ++i) - switch (dirichletNodes[i].count()) { - case 0: - continue; - case dim: - problem_iterate[i] = 0; - dirichletFunction.evaluate(time, problem_iterate[i][0]); - break; - case 1: - if (dirichletNodes[i][0]) { - dirichletFunction.evaluate(time, problem_iterate[i][0]); - break; - } - if (dirichletNodes[i][1]) { - problem_iterate[i][1] = 0; - break; - } - assert(false); - default: - assert(false); - } -} - -template <class VectorType, class MatrixType, class FunctionType, int dim> -void ImplicitEuler<VectorType, MatrixType, FunctionType, dim>::postProcess( - VectorType const &problem_iterate) { - postProcessCalled = true; - - v = problem_iterate; - - u = u_o; - Arithmetic::addProduct(u, tau, v); -} - -template <class VectorType, class MatrixType, class FunctionType, int dim> -void ImplicitEuler<VectorType, MatrixType, FunctionType, - dim>::extractDisplacement(VectorType &displacement) const { - if (!postProcessCalled) - DUNE_THROW(Dune::Exception, "It seems you forgot to call postProcess!"); - - displacement = u; -} - -template <class VectorType, class MatrixType, class FunctionType, int dim> -void ImplicitEuler<VectorType, MatrixType, FunctionType, dim>::extractVelocity( - VectorType &velocity) const { - if (!postProcessCalled) - DUNE_THROW(Dune::Exception, "It seems you forgot to call postProcess!"); - - velocity = v; -} diff --git a/src/timestepping/impliciteuler.hh b/src/timestepping/impliciteuler.hh deleted file mode 100644 index fd0a86e3..00000000 --- a/src/timestepping/impliciteuler.hh +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef DUNE_TECTONIC_TIMESTEPPING_IMPLICITEULER_HH -#define DUNE_TECTONIC_TIMESTEPPING_IMPLICITEULER_HH - -template <class VectorType, class MatrixType, class FunctionType, int dim> -class ImplicitEuler - : public TimeSteppingScheme<VectorType, MatrixType, FunctionType, dim> { -public: - ImplicitEuler(MatrixType const &_A, VectorType const &_u_initial, - VectorType const &_v_initial, - Dune::BitSetVector<dim> const &_dirichletNodes, - FunctionType const &_dirichletFunction); - - void virtual nextTimeStep() override; - void virtual setup(VectorType const &, double, double, VectorType &, - VectorType &, MatrixType &) override; - void virtual postProcess(VectorType const &) override; - void virtual extractDisplacement(VectorType &) const override; - void virtual extractVelocity(VectorType &) const override; - -private: - MatrixType const &A; - VectorType u; - VectorType v; - Dune::BitSetVector<dim> const &dirichletNodes; - FunctionType const &dirichletFunction; - - VectorType u_o; - VectorType v_o; - - double tau; - - bool postProcessCalled = false; -}; -#endif diff --git a/src/timestepping_tmpl.cc b/src/timestepping_tmpl.cc index 60ea4faf..3a6156fc 100644 --- a/src/timestepping_tmpl.cc +++ b/src/timestepping_tmpl.cc @@ -14,6 +14,5 @@ using MatrixType = Dune::BCRSMatrix<SmallMatrix>; using VectorType = Dune::BlockVector<SmallVector>; using FunctionType = Dune::VirtualFunction<double, double>; -template class ImplicitEuler<VectorType, MatrixType, FunctionType, DIM>; template class Newmark<VectorType, MatrixType, FunctionType, DIM>; template class EulerPair<VectorType, MatrixType, FunctionType, DIM>; -- GitLab