Skip to content
Snippets Groups Projects
backward_euler.hh 1.18 KiB
Newer Older
#ifndef SRC_TIMESTEPPING_BACKWARD_EULER_HH
#define SRC_TIMESTEPPING_BACKWARD_EULER_HH
template <class Vector, class Matrix, class Function, size_t dim>
class BackwardEuler : public TimeSteppingScheme<Vector, Matrix, Function, dim> {
  BackwardEuler(Matrix const &_A, Matrix const &_M, Matrix const &_C,
                Vector const &_u_initial, Vector const &_v_initial,
                Dune::BitSetVector<dim> const &_dirichletNodes,
                Function const &_dirichletFunction);
  void nextTimeStep() override;
  void setup(Vector const &, double, double, Vector &, Vector &,
             Matrix &) override;
  void postProcess(Vector const &) override;
  void extractDisplacement(Vector &) const override;
  void extractVelocity(Vector &) const override;
  void extractOldVelocity(Vector &) const override;
  std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dim>> clone()
      const;

  Matrix const &A;
  Matrix const &M;
  Matrix const &C;
  Vector u;
  Vector v;
  Dune::BitSetVector<dim> const &dirichletNodes;
  Function const &dirichletFunction;
  double dirichletValue;
  Vector u_o;
  Vector v_o;
  bool postProcessCalled = true;