From 96c4fac8a926fe268b120398356d284ee24abdc4 Mon Sep 17 00:00:00 2001
From: Felix Albrecht <mail@felixalbrecht.de>
Date: Thu, 6 Dec 2012 15:52:43 +0100
Subject: [PATCH] [function.interface] added (optional) EIGEN evaluate() method

---
 dune/stuff/function/interface.hh | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/dune/stuff/function/interface.hh b/dune/stuff/function/interface.hh
index 27566f358..c7661e217 100644
--- a/dune/stuff/function/interface.hh
+++ b/dune/stuff/function/interface.hh
@@ -3,6 +3,10 @@
 
 #include <dune/common/fvector.hh>
 
+#if HAVE_EIGEN
+#include <Eigen/Core>
+#endif // HAVE_EIGEN
+
 #ifdef HAVE_DUNE_FEM
 #include <dune/fem/function/common/function.hh>
 #include <dune/fem/space/common/functionspace.hh>
@@ -35,6 +39,10 @@ public:
 
   virtual void evaluate(const DomainType&, RangeType&) const = 0;
 
+#if HAVE_EIGEN
+  virtual void evaluate(const Eigen::VectorXd&, Eigen::VectorXd&) const;
+#endif // HAVE_EIGEN
+
   RangeType evaluate(const DomainType& arg) const
   {
     RangeType ret;
@@ -43,7 +51,7 @@ public:
   }
 };
 
-#else
+#else // HAVE_DUNE_FEM
 
 /**
  *  \todo This should have been replaced by Dune::Function? Investigate further!
@@ -66,6 +74,10 @@ public:
 
   virtual void evaluate(const DomainType&, RangeType&) const = 0;
 
+#if HAVE_EIGEN
+  virtual void evaluate(const Eigen::VectorXd&, Eigen::VectorXd&) const;
+#endif // HAVE_EIGEN
+
   RangeType evaluate(const DomainType& arg) const
   {
     RangeType ret;
-- 
GitLab