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