From 4f18566faab6881f9129b2cd253753e0b44106e7 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Fri, 13 Dec 2013 02:03:33 +0100 Subject: [PATCH] [Cleanup] Move init functions to headers --- src/one-body-sample.cc | 43 +----------------------------------------- src/state.hh | 26 +++++++++++++++++++++++++ src/timestepping.hh | 24 +++++++++++++++++++++++ 3 files changed, 51 insertions(+), 42 deletions(-) create mode 100644 src/state.hh diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index ff276055..5ff08fd5 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -84,52 +84,11 @@ #include "enum_scheme.cc" #include "enum_verbosity.cc" +#include "state.hh" #include "timestepping.hh" -#include "state/stateupdater.hh" -#include "state/ruinastateupdater.hh" -#include "state/dieterichstateupdater.hh" - size_t const dims = DIM; -template <class Vector, class Matrix, class Function, int dimension> -std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dimension>> -initTimeStepper(Config::scheme scheme, - Function const &velocityDirichletFunction, - Dune::BitSetVector<dimension> const &velocityDirichletNodes, - Matrix const &massMatrix, Matrix const &stiffnessMatrix, - Matrix const &dampingMatrix, Vector const &u_initial, - Vector const &v_initial, Vector const &a_initial) { - switch (scheme) { - case Config::Newmark: - return std::make_shared<Newmark<Vector, Matrix, Function, dims>>( - stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial, - a_initial, velocityDirichletNodes, velocityDirichletFunction); - case Config::BackwardEuler: - return std::make_shared<BackwardEuler<Vector, Matrix, Function, dims>>( - stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial, - velocityDirichletNodes, velocityDirichletFunction); - default: - assert(false); - } -} - -template <class ScalarVector, class Vector> -std::shared_ptr<StateUpdater<ScalarVector, Vector>> initStateUpdater( - Config::stateModel model, ScalarVector const &alpha_initial, - Dune::BitSetVector<1> const &frictionalNodes, FrictionData const &fd) { - switch (model) { - case Config::Dieterich: - return std::make_shared<DieterichStateUpdater<ScalarVector, Vector>>( - alpha_initial, frictionalNodes, fd.L); - case Config::Ruina: - return std::make_shared<RuinaStateUpdater<ScalarVector, Vector>>( - alpha_initial, frictionalNodes, fd.L); - default: - assert(false); - } -} - void initPython() { Python::start(); diff --git a/src/state.hh b/src/state.hh new file mode 100644 index 00000000..e1d84020 --- /dev/null +++ b/src/state.hh @@ -0,0 +1,26 @@ +#ifndef DUNE_TECTONIC_STATE_HH +#define DUNE_TECTONIC_STATE_HH + +#include <dune/common/bitsetvector.hh> + +#include "enums.hh" +#include "state/stateupdater.hh" +#include "state/ruinastateupdater.hh" +#include "state/dieterichstateupdater.hh" + +template <class ScalarVector, class Vector> +std::shared_ptr<StateUpdater<ScalarVector, Vector>> initStateUpdater( + Config::stateModel model, ScalarVector const &alpha_initial, + Dune::BitSetVector<1> const &frictionalNodes, FrictionData const &fd) { + switch (model) { + case Config::Dieterich: + return std::make_shared<DieterichStateUpdater<ScalarVector, Vector>>( + alpha_initial, frictionalNodes, fd.L); + case Config::Ruina: + return std::make_shared<RuinaStateUpdater<ScalarVector, Vector>>( + alpha_initial, frictionalNodes, fd.L); + default: + assert(false); + } +} +#endif diff --git a/src/timestepping.hh b/src/timestepping.hh index adb2ac5b..fe88bcc0 100644 --- a/src/timestepping.hh +++ b/src/timestepping.hh @@ -1,6 +1,7 @@ #ifndef DUNE_TECTONIC_TIMESTEPPING_HH #define DUNE_TECTONIC_TIMESTEPPING_HH +#include "enums.hh" #include <dune/common/bitsetvector.hh> template <class Vector, class Matrix, class Function, size_t dim> @@ -18,4 +19,27 @@ class TimeSteppingScheme { #include "timestepping/newmark.hh" #include "timestepping/backward_euler.hh" +template <class Vector, class Matrix, class Function, int dimension> +std::shared_ptr<TimeSteppingScheme<Vector, Matrix, Function, dimension>> +initTimeStepper(Config::scheme scheme, + Function const &velocityDirichletFunction, + Dune::BitSetVector<dimension> const &velocityDirichletNodes, + Matrix const &massMatrix, Matrix const &stiffnessMatrix, + Matrix const &dampingMatrix, Vector const &u_initial, + Vector const &v_initial, Vector const &a_initial) { + switch (scheme) { + case Config::Newmark: + return std::make_shared<Newmark<Vector, Matrix, Function, dimension>>( + stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial, + a_initial, velocityDirichletNodes, velocityDirichletFunction); + case Config::BackwardEuler: + return std::make_shared< + BackwardEuler<Vector, Matrix, Function, dimension>>( + stiffnessMatrix, massMatrix, dampingMatrix, u_initial, v_initial, + velocityDirichletNodes, velocityDirichletFunction); + default: + assert(false); + } +} + #endif -- GitLab