From a25e4e17af51e5698afb428f2054f6f4d977b04f Mon Sep 17 00:00:00 2001
From: Samuel Scherrer <samuel.scherrer@posteo.de>
Date: Thu, 3 Sep 2020 11:36:37 +0200
Subject: [PATCH] [common] fix segment index issue in spline extrapolation

---
 dumux/common/splinecommon_.hh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dumux/common/splinecommon_.hh b/dumux/common/splinecommon_.hh
index 2a1529f971..691bf1efa7 100644
--- a/dumux/common/splinecommon_.hh
+++ b/dumux/common/splinecommon_.hh
@@ -145,12 +145,12 @@ public:
         // handle extrapolation
         if (extrapolate) {
             if (x < xMin()) {
-                Scalar m = evalDerivative(xMin(), /*segmentIdx=*/0);
+                Scalar m = evalDerivative_(xMin(), /*segmentIdx=*/0);
                 Scalar y0 = y_(0);
                 return y0 + m*(x - xMin());
             }
             else if (x > xMax()) {
-                Scalar m = evalDerivative(xMax(), /*segmentIdx=*/numSamples_()-1);
+                Scalar m = evalDerivative_(xMax(), /*segmentIdx=*/numSamples_()-2);
                 Scalar y0 = y_(numSamples_()-1);
                 return y0 + m*(x - xMax());
             }
@@ -179,7 +179,7 @@ public:
             if (Dune::FloatCmp::le(x, xMin()))
                 return evalDerivative_(xMin(), 0);
             else if (Dune::FloatCmp::ge(x, xMax()))
-                return evalDerivative_(xMax(), numSamples_() - 1);
+                return evalDerivative_(xMax(), numSamples_() - 2);
         }
 
         return evalDerivative_(x, segmentIdx_(x));
-- 
GitLab