From 14c798939533076ad25087497f3063aa3b11eb4c Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Tue, 28 Feb 2012 14:32:02 +0100 Subject: [PATCH] Fix RuinaFunction::evaluate() hopefully --- dune/tectonic/nicefunction.hh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/dune/tectonic/nicefunction.hh b/dune/tectonic/nicefunction.hh index 626c59e6..93234e1d 100644 --- a/dune/tectonic/nicefunction.hh +++ b/dune/tectonic/nicefunction.hh @@ -56,11 +56,13 @@ class RuinaFunction : public NiceFunction { rho = exp(-mu/a) */ void virtual evaluate(double const &x, double &y) const { - double const arg = std::max(eta * x / h, rho); - double const r = arg * (a * (std::log(arg) - 1) + mu + compound_state); - y = 1 / eta * normalStress * (r + a * rho + mu + compound_state); - y *= coefficient; - y *= h; + double const arg = eta * x / h; + if (arg <= rho) { + y = -log(rho); // TODO: We can write this out explicitly + return; + } + y = arg * (log(arg) - 1) - arg * log(rho) + rho - log(rho); + y *= coefficient * h * normalStress / eta; } /* -- GitLab