From e9b08a2832822b6825a1bc03a57a94f43d4c82ce Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Fri, 4 Sep 2020 09:32:33 +0200
Subject: [PATCH] Do not use deprecated VirtualFunction in tests

---
 dune/solvers/test/common.hh                   | 22 +------------------
 dune/solvers/test/mmgtest.cc                  |  4 +++-
 dune/solvers/test/obstacletnnmgtest.cc        |  4 +++-
 dune/solvers/test/projectedgradienttest.cc    |  4 +++-
 dune/solvers/test/quadraticipoptsolvertest.cc |  4 +++-
 5 files changed, 13 insertions(+), 25 deletions(-)

diff --git a/dune/solvers/test/common.hh b/dune/solvers/test/common.hh
index 028dad4..7015536 100644
--- a/dune/solvers/test/common.hh
+++ b/dune/solvers/test/common.hh
@@ -7,7 +7,6 @@
 
 #include <dune/common/fvector.hh>
 #include <dune/common/fmatrix.hh>
-#include <dune/common/function.hh>
 
 #include <dune/istl/matrixindexset.hh>
 
@@ -30,23 +29,6 @@
 #include <dune/solvers/norms/energynorm.hh>
 #include <dune/solvers/norms/twonorm.hh>
 
-template <class DomainType, class RangeType>
-class ConstantFunction :
-    public Dune::VirtualFunction<DomainType, RangeType>
-{
-    public:
-        ConstantFunction(double c):
-            c_(c)
-        {}
-
-        void evaluate(const DomainType& x, RangeType& y) const
-        {
-            y = c_;
-        }
-
-    private:
-        double c_;
-};
 
 template<class GridView, class Matrix>
 void constructPQ1Pattern(const GridView& gridView, Matrix& matrix)
@@ -231,7 +213,6 @@ void assemblePQ1RHS(const GridView& gridView, Vector& r, const Function& f)
     typedef typename FiniteElementCache::FiniteElementType FiniteElement;
 
     typedef typename FiniteElement::Traits::LocalBasisType::Traits::RangeType RangeType;
-    typedef typename Function::RangeType FunctionRangeType;
 
     const auto& indexSet = gridView.indexSet();
     FiniteElementCache cache;
@@ -265,8 +246,7 @@ void assemblePQ1RHS(const GridView& gridView, Vector& r, const Function& f)
             fe.localBasis().evaluateFunction(quadPos, values);
 
             // evaluate function
-            FunctionRangeType fAtPos;
-            f.evaluate(geometry.global(quadPos), fAtPos);
+            auto fAtPos = f(geometry.global(quadPos));
 
             // add vector entries
             double z = pt.weight() * integrationElement;
diff --git a/dune/solvers/test/mmgtest.cc b/dune/solvers/test/mmgtest.cc
index ae5268f..80318b5 100644
--- a/dune/solvers/test/mmgtest.cc
+++ b/dune/solvers/test/mmgtest.cc
@@ -123,7 +123,9 @@ bool checkWithGrid(const GridType& grid, const std::string fileName="")
 
     Vector rhs(A.N());
     rhs = 0;
-    ConstantFunction<DomainType, RangeType> f(50);
+    auto f = [](const DomainType& x) -> RangeType
+      {return 50.0; };
+
     assemblePQ1RHS(gridView, rhs, f);
 
     Vector u(A.N());
diff --git a/dune/solvers/test/obstacletnnmgtest.cc b/dune/solvers/test/obstacletnnmgtest.cc
index 23858a8..f6b938b 100644
--- a/dune/solvers/test/obstacletnnmgtest.cc
+++ b/dune/solvers/test/obstacletnnmgtest.cc
@@ -114,7 +114,9 @@ bool checkWithGrid(const GridType& grid, const std::string fileName="")
 
     Vector rhs(A.N());
     rhs = 0;
-    ConstantFunction<DomainType, RangeType> f(50);
+    auto f = [](const DomainType& x) -> RangeType
+      {return 50.0; };
+
     assemblePQ1RHS(gridView, rhs, f);
 
     Vector u(A.N());
diff --git a/dune/solvers/test/projectedgradienttest.cc b/dune/solvers/test/projectedgradienttest.cc
index 131c73b..4e76bd4 100644
--- a/dune/solvers/test/projectedgradienttest.cc
+++ b/dune/solvers/test/projectedgradienttest.cc
@@ -84,7 +84,9 @@ bool checkWithGrid(const GridType& grid, const std::string fileName, int maxIter
 
     Vector rhs(A.N());
     rhs = 0;
-    ConstantFunction<DomainType, RangeType> f(50);
+    auto f = [](const DomainType& x) -> RangeType
+      {return 50.0; };
+
     assemblePQ1RHS(gridView, rhs, f);
 
     Vector u(A.N());
diff --git a/dune/solvers/test/quadraticipoptsolvertest.cc b/dune/solvers/test/quadraticipoptsolvertest.cc
index 52c177a..4ea4f56 100644
--- a/dune/solvers/test/quadraticipoptsolvertest.cc
+++ b/dune/solvers/test/quadraticipoptsolvertest.cc
@@ -77,7 +77,9 @@ bool checkWithGrid(const GridType& grid, const std::string fileName="")
 
     Vector rhs(A.N());
     rhs = 0;
-    ConstantFunction<DomainType, RangeType> f(50);
+    auto f = [](const DomainType& x) -> RangeType
+      {return 50.0; };
+
     assemblePQ1RHS(gridView, rhs, f);
 
     Vector u(A.N());
-- 
GitLab