diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 81e957d98b2242c1fd410497f2289497e71c0702..17ccac2629a008fa127b695dde9288201f6f6a73 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -139,6 +139,13 @@ template <class FunctionMap> void initPython(FunctionMap &functions) { .toC<typename FunctionMap::Base>(functions); } +double computeCOF(double mu0, double a, double b, double V0, double L, double V, + double log_state) { + double const mu = + mu0 + a * std::log(V / V0) + b * (log_state + std::log(V0 / L)); + return (mu > 0) ? mu : 0; +} + int main(int argc, char *argv[]) { try { Dune::Timer timer; @@ -158,7 +165,7 @@ int main(int argc, char *argv[]) { auto const E = parset.get<double>("body.E"); auto const nu = parset.get<double>("body.nu"); - auto const mu = parset.get<double>("boundary.friction.mu"); + auto const mu0 = parset.get<double>("boundary.friction.mu0"); auto const a = parset.get<double>("boundary.friction.a"); auto const b = parset.get<double>("boundary.friction.b"); auto const V0 = parset.get<double>("boundary.friction.V0"); @@ -480,8 +487,8 @@ int main(int argc, char *argv[]) { state_writer << alpha[i][0] << " "; displacement_writer << u[i][0] << " "; velocity_writer << ud[i][0] << " "; - coefficient_writer << mu + a *std::log(ud[i].two_norm() / V0) + - b * (alpha[i] + std::log(V0 / L)) << " "; + coefficient_writer << computeCOF(mu0, a, b, V0, L, ud[i].two_norm(), + alpha[i]) << " "; } state_writer << std::endl; diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset index 6a7529a6a3d7b7dbdf69619c933df622b8c09571..97a96e693cbbec2ebfd84baa96c841e155d97f5a 100644 --- a/src/one-body-sample.parset +++ b/src/one-body-sample.parset @@ -50,7 +50,7 @@ acceptFactor = 1.0 requiredResidual = 1e-12 [boundary.friction] -mu = 0.6 +mu0 = 0.6 a = 0.010 b = 0.015 V0 = 1