diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index ff2760559e1de5b53ae12a5399905993e74c9dc1..5ff08fd5d5dc04fea7fd299dfd70d5fffc79b563 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 0000000000000000000000000000000000000000..e1d840201fd226fbf8c01caaf3c88572c2f2c139 --- /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 adb2ac5b5c02437df01261a65413c5c53414f363..fe88bcc0956b3d6f5cc6f3af52e1011a5bc5198d 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