From 408023441a68337d0cdb4b5cac59a02a505660f5 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Sat, 22 Feb 2014 13:18:58 +0100
Subject: [PATCH] [Extern]  Use Dune::Solvers::Interval

---
 dune/tectonic/ellipticenergy.hh              | 1 -
 dune/tectonic/globalnonlinearity.hh          | 9 ++++++---
 dune/tectonic/localfriction.hh               | 6 +++---
 dune/tectonic/myblockproblem.hh              | 3 ++-
 dune/tectonic/mydirectionalconvexfunction.hh | 8 ++++----
 src/state/compute_state_dieterich_euler.cc   | 6 +++---
 6 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/dune/tectonic/ellipticenergy.hh b/dune/tectonic/ellipticenergy.hh
index 11924f54..876df28c 100644
--- a/dune/tectonic/ellipticenergy.hh
+++ b/dune/tectonic/ellipticenergy.hh
@@ -5,7 +5,6 @@
 #include <dune/common/fvector.hh>
 #include <dune/common/stdstreams.hh>
 
-#include <dune/fufem/interval.hh>
 #include <dune/fufem/arithmetic.hh>
 
 #include "localfriction.hh"
diff --git a/dune/tectonic/globalnonlinearity.hh b/dune/tectonic/globalnonlinearity.hh
index 55311622..0a899a56 100644
--- a/dune/tectonic/globalnonlinearity.hh
+++ b/dune/tectonic/globalnonlinearity.hh
@@ -7,6 +7,8 @@
 #include <dune/istl/bvector.hh>
 #include <dune/istl/matrixindexset.hh>
 
+#include <dune/solvers/common/interval.hh>
+
 #include "localfriction.hh"
 
 template <class Matrix, class Vector> class GlobalNonlinearity {
@@ -45,16 +47,17 @@ template <class Matrix, class Vector> class GlobalNonlinearity {
   }
 
   void directionalDomain(Vector const &, Vector const &,
-                         Interval<double> &dom) const {
+                         Dune::Solvers::Interval<double> &dom) const {
     dom[0] = -std::numeric_limits<double>::max();
     dom[1] = std::numeric_limits<double>::max();
   }
 
   void directionalSubDiff(Vector const &u, Vector const &v,
-                          Interval<double> &subdifferential) const {
+                          Dune::Solvers::Interval<double> &subdifferential)
+      const {
     subdifferential[0] = subdifferential[1] = 0;
     for (size_t i = 0; i < u.size(); ++i) {
-      Interval<double> D;
+      Dune::Solvers::Interval<double> D;
       auto const res = restriction(i);
       res->directionalSubDiff(u[i], v[i], D);
       subdifferential[0] += D[0];
diff --git a/dune/tectonic/localfriction.hh b/dune/tectonic/localfriction.hh
index baac0904..04b8121a 100644
--- a/dune/tectonic/localfriction.hh
+++ b/dune/tectonic/localfriction.hh
@@ -8,7 +8,7 @@
 #include <dune/common/fmatrix.hh>
 
 #include <dune/fufem/arithmetic.hh>
-#include <dune/fufem/interval.hh>
+#include <dune/solvers/common/interval.hh>
 
 #include "frictionpotential.hh"
 
@@ -54,7 +54,7 @@ template <size_t dimension> class LocalFriction {
   // directional subdifferential: at u on the line u + t*v
   // u and v are assumed to be non-zero
   void directionalSubDiff(VectorType const &x, VectorType const &v,
-                          Interval<double> &D) const {
+                          Dune::Solvers::Interval<double> &D) const {
     double const xnorm = x.two_norm();
     if (xnorm <= 0.0)
       D[0] = D[1] = func->differential(0.0) * v.two_norm();
@@ -113,7 +113,7 @@ template <size_t dimension> class LocalFriction {
   }
 
   void directionalDomain(VectorType const &, VectorType const &,
-                         Interval<double> &dom) const {
+                         Dune::Solvers::Interval<double> &dom) const {
     dom[0] = -std::numeric_limits<double>::max();
     dom[1] = std::numeric_limits<double>::max();
   }
diff --git a/dune/tectonic/myblockproblem.hh b/dune/tectonic/myblockproblem.hh
index ee5388ce..d19db04f 100644
--- a/dune/tectonic/myblockproblem.hh
+++ b/dune/tectonic/myblockproblem.hh
@@ -11,6 +11,7 @@
 #include "dune/solvers/computeenergy.hh"
 
 #include <dune/fufem/arithmetic.hh>
+#include <dune/solvers/common/interval.hh>
 #include <dune/tnnmg/problem-classes/bisection.hh>
 
 #include "globalnonlinearity.hh"
@@ -98,7 +99,7 @@ template <class ConvexProblem> class MyBlockProblem {
     psi(computeDirectionalA(problem.A, v),
         computeDirectionalb(problem.A, problem.f, u, v), problem.phi, u, v);
 
-    Interval<double> D;
+    Dune::Solvers::Interval<double> D;
     psi.subDiff(0, D);
     // NOTE: Numerical instability can actually get us here
     if (D[1] > 0)
diff --git a/dune/tectonic/mydirectionalconvexfunction.hh b/dune/tectonic/mydirectionalconvexfunction.hh
index 9c792a2d..83cd3b40 100644
--- a/dune/tectonic/mydirectionalconvexfunction.hh
+++ b/dune/tectonic/mydirectionalconvexfunction.hh
@@ -5,7 +5,7 @@
 #define MY_DIRECTIONAL_CONVEX_FUNCTION_HH
 
 #include <dune/fufem/arithmetic.hh>
-#include <dune/fufem/interval.hh>
+#include <dune/solvers/common/interval.hh>
 
 /*
   1/2 <A(u + hv),u + hv> - <b, u + hv>
@@ -41,7 +41,7 @@ template <class Nonlinearity> class MyDirectionalConvexFunction {
 
   double linearPart() const { return b; }
 
-  void subDiff(double x, Interval<double> &D) const {
+  void subDiff(double x, Dune::Solvers::Interval<double> &D) const {
     Vector uxv = u;
     Arithmetic::addProduct(uxv, x, v);
     phi.directionalSubDiff(uxv, v, D);
@@ -49,7 +49,7 @@ template <class Nonlinearity> class MyDirectionalConvexFunction {
     D[1] += A * x - b;
   }
 
-  void domain(Interval<double> &domain) const {
+  void domain(Dune::Solvers::Interval<double> &domain) const {
     domain[0] = this->dom[0];
     domain[1] = this->dom[1];
   }
@@ -62,7 +62,7 @@ template <class Nonlinearity> class MyDirectionalConvexFunction {
   Vector const &u;
   Vector const &v;
 
-  Interval<double> dom;
+  Dune::Solvers::Interval<double> dom;
 };
 
 #endif
diff --git a/src/state/compute_state_dieterich_euler.cc b/src/state/compute_state_dieterich_euler.cc
index 87f65724..103c56f2 100644
--- a/src/state/compute_state_dieterich_euler.cc
+++ b/src/state/compute_state_dieterich_euler.cc
@@ -8,7 +8,7 @@
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
-#include <dune/fufem/interval.hh>
+#include <dune/solvers/common/interval.hh>
 
 /* Dieterich's law:
 
@@ -49,12 +49,12 @@ class DieterichNonlinearity {
   DieterichNonlinearity() {}
 
   void directionalSubDiff(VectorType const &u, VectorType const &v,
-                          Interval<double> &D) const {
+                          Dune::Solvers::Interval<double> &D) const {
     D[0] = D[1] = v[0] * (-std::exp(-u[0]));
   }
 
   void directionalDomain(VectorType const &, VectorType const &,
-                         Interval<double> &dom) const {
+                         Dune::Solvers::Interval<double> &dom) const {
     dom[0] = -std::numeric_limits<double>::max();
     dom[1] = std::numeric_limits<double>::max();
   }
-- 
GitLab