From 3a9098746634d4616dc8ef4a25d95973c3111874 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Sun, 22 Jun 2014 13:21:54 +0200 Subject: [PATCH] [Cleanup] Move coefficientOfFriction() to GlobalF. This allows us to return a GlobalFriction and thus hide some information --- dune/tectonic/globalfriction.hh | 6 ++++++ dune/tectonic/globalratestatefriction.hh | 7 ------- src/assemblers.cc | 4 +++- src/assemblers.hh | 5 ++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dune/tectonic/globalfriction.hh b/dune/tectonic/globalfriction.hh index 579134e1..3aff3021 100644 --- a/dune/tectonic/globalfriction.hh +++ b/dune/tectonic/globalfriction.hh @@ -82,6 +82,12 @@ template <class Matrix, class Vector> class GlobalFriction { return res->regularity(x); } + void coefficientOfFriction(Vector const &x, ScalarVector &coefficient) { + coefficient.resize(x.size()); + for (size_t i = 0; i < x.size(); ++i) + coefficient[i] = restriction(i)->coefficientOfFriction(x[i]); + } + void virtual updateAlpha(ScalarVector const &alpha) = 0; }; #endif diff --git a/dune/tectonic/globalratestatefriction.hh b/dune/tectonic/globalratestatefriction.hh index 0e30a7ba..ddc2af2d 100644 --- a/dune/tectonic/globalratestatefriction.hh +++ b/dune/tectonic/globalratestatefriction.hh @@ -56,13 +56,6 @@ class GlobalRateStateFriction : public GlobalFriction<Matrix, Vector> { restrictions[i]->updateAlpha(alpha[i]); } - void coefficientOfFriction(Vector const &x, ScalarVector &coefficient) { - assert(x.size() == restrictions.size()); - coefficient.resize(restrictions.size()); - for (size_t i = 0; i < restrictions.size(); ++i) - coefficient[i] = restrictions[i]->coefficientOfFriction(x[i]); - } - /* Return a restriction of the outer function to the i'th node. */ diff --git a/src/assemblers.cc b/src/assemblers.cc index 1cd1d02f..b42bb301 100644 --- a/src/assemblers.cc +++ b/src/assemblers.cc @@ -17,6 +17,8 @@ #include <dune/fufem/functions/constantfunction.hh> #include <dune/fufem/quadraturerules/quadraturerulecache.hh> +#include <dune/tectonic/globalratestatefriction.hh> + #include "assemblers.hh" template <class GridView, int dimension> @@ -122,7 +124,7 @@ auto MyAssembler<GridView, dimension>::assembleFrictionNonlinearity( BoundaryPatch<GridView> const &frictionalBoundary, GlobalFrictionData<dimension> const &frictionInfo, ScalarVector const &normalStress) - -> std::shared_ptr<GlobalRateStateFriction<Matrix, Vector, GridView>> { + -> std::shared_ptr<GlobalFriction<Matrix, Vector>> { // Lump negative normal stress (kludge) ScalarVector weights; { diff --git a/src/assemblers.hh b/src/assemblers.hh index 2f944c71..7b0c26c9 100644 --- a/src/assemblers.hh +++ b/src/assemblers.hh @@ -13,8 +13,8 @@ #pragma clang diagnostic pop #include <dune/fufem/functionspacebases/p1nodalbasis.hh> +#include <dune/tectonic/globalfriction.hh> #include <dune/tectonic/globalfrictiondata.hh> -#include <dune/tectonic/globalratestatefriction.hh> template <class GridView, int dimension> class MyAssembler { public: @@ -75,8 +75,7 @@ template <class GridView, int dimension> class MyAssembler { ScalarVector &normalStress, double youngModulus, double poissonRatio, Vector const &displacement); - std::shared_ptr<GlobalRateStateFriction<Matrix, Vector, GridView>> - assembleFrictionNonlinearity( + std::shared_ptr<GlobalFriction<Matrix, Vector>> assembleFrictionNonlinearity( BoundaryPatch<GridView> const &frictionalBoundary, GlobalFrictionData<dimension> const &frictionInfo, ScalarVector const &normalStress); -- GitLab