Skip to content
Snippets Groups Projects
Commit e38cf84a authored by Elias Pipping's avatar Elias Pipping
Browse files

[Extend] Allow for cohesion

parent fff02690
No related branches found
No related tags found
No related merge requests found
...@@ -3,9 +3,11 @@ ...@@ -3,9 +3,11 @@
#include <dune/common/parametertree.hh> #include <dune/common/parametertree.hh>
struct FrictionData { struct FrictionData {
explicit FrictionData(double _L, double _V0, double _a, double _b, double _mu0) explicit FrictionData(double _C, double _L, double _V0, double _a, double _b,
: L(_L), V0(_V0), a(_a), b(_b), mu0(_mu0) {} double _mu0)
: C(_C), L(_L), V0(_V0), a(_a), b(_b), mu0(_mu0) {}
double const C;
double const L; double const L;
double const V0; double const V0;
double const a; double const a;
......
...@@ -41,7 +41,7 @@ class FrictionPotential : public FrictionPotentialWrapper { ...@@ -41,7 +41,7 @@ class FrictionPotential : public FrictionPotentialWrapper {
} }
double differential(double V) const { double differential(double V) const {
return weight * (-normalStress) * coefficientOfFriction(V); return weight * (fd.C - normalStress * coefficientOfFriction(V));
} }
double second_deriv(double V) const { double second_deriv(double V) const {
......
...@@ -18,7 +18,7 @@ double evaluateScalarFunction( ...@@ -18,7 +18,7 @@ double evaluateScalarFunction(
template <int dimension> class GlobalFrictionData { template <int dimension> class GlobalFrictionData {
public: public:
FrictionData operator()(Dune::FieldVector<double, dimension> const &x) const { FrictionData operator()(Dune::FieldVector<double, dimension> const &x) const {
return FrictionData(L(), V0(), evaluateScalarFunction(a(), x), return FrictionData(C(), L(), V0(), evaluateScalarFunction(a(), x),
evaluateScalarFunction(b(), x), mu0()); evaluateScalarFunction(b(), x), mu0());
} }
...@@ -26,6 +26,7 @@ template <int dimension> class GlobalFrictionData { ...@@ -26,6 +26,7 @@ template <int dimension> class GlobalFrictionData {
using VirtualFunction = Dune::VirtualFunction< using VirtualFunction = Dune::VirtualFunction<
Dune::FieldVector<double, dimension>, Dune::FieldVector<double, 1>>; Dune::FieldVector<double, dimension>, Dune::FieldVector<double, 1>>;
double virtual const &C() const = 0;
double virtual const &L() const = 0; double virtual const &L() const = 0;
double virtual const &V0() const = 0; double virtual const &V0() const = 0;
VirtualFunction virtual const &a() const = 0; VirtualFunction virtual const &a() const = 0;
......
...@@ -17,12 +17,14 @@ class MyGlobalFrictionData : public GlobalFrictionData<dimension> { ...@@ -17,12 +17,14 @@ class MyGlobalFrictionData : public GlobalFrictionData<dimension> {
public: public:
MyGlobalFrictionData(Dune::ParameterTree const &parset, MyGeometry const &tri) MyGlobalFrictionData(Dune::ParameterTree const &parset, MyGeometry const &tri)
: L_(parset.get<double>("L")), : C_(parset.get<double>("C")),
L_(parset.get<double>("L")),
V0_(parset.get<double>("V0")), V0_(parset.get<double>("V0")),
a_(parset.get<double>("a")), a_(parset.get<double>("a")),
b_(parset.get<double>("b")), b_(parset.get<double>("b")),
mu0_(parset.get<double>("mu0")) {} mu0_(parset.get<double>("mu0")) {}
double virtual const &C() const override { return C_; }
double virtual const &L() const override { return L_; } double virtual const &L() const override { return L_; }
double virtual const &V0() const override { return V0_; } double virtual const &V0() const override { return V0_; }
VirtualFunction virtual const &a() const override { return a_; } VirtualFunction virtual const &a() const override { return a_; }
...@@ -33,6 +35,7 @@ class MyGlobalFrictionData : public GlobalFrictionData<dimension> { ...@@ -33,6 +35,7 @@ class MyGlobalFrictionData : public GlobalFrictionData<dimension> {
using MyConstantFunction = ConstantFunction< using MyConstantFunction = ConstantFunction<
Dune::FieldVector<double, dimension>, Dune::FieldVector<double, 1>>; Dune::FieldVector<double, dimension>, Dune::FieldVector<double, 1>>;
double const C_;
double const L_; double const L_;
double const V0_; double const V0_;
MyConstantFunction const a_; MyConstantFunction const a_;
......
...@@ -16,6 +16,7 @@ shearViscosity = 0 ...@@ -16,6 +16,7 @@ shearViscosity = 0
bulkViscosity = 0 bulkViscosity = 0
[boundary.friction] [boundary.friction]
C = 0.0
mu0 = 0.6 mu0 = 0.6
a = 0.010 a = 0.010
b = 0.015 b = 0.015
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment