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