From 83bc14e07969b6cd887eaf00a78f0458a830222b Mon Sep 17 00:00:00 2001
From: Christoph Grueninger <christoph.grueninger@iws.uni-stuttgart.de>
Date: Tue, 9 Dec 2014 08:06:18 +0000
Subject: [PATCH] Replace Mapper::map by Mapper::subIndex/index for Dune 2.4.

The method is deprecated in 2.4.
More replacements have to follow.
(reviewed by fetzer)


git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@13894 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 .../fvmpfal3dinteractionvolumecontainer.hh    | 39 +++++++++++
 .../2p/impes/gridadaptionindicator2p.hh       | 10 +++
 dumux/decoupled/common/variableclass.hh       | 10 +++
 dumux/implicit/common/implicitmodel.hh        | 68 ++++++++++++++++---
 dumux/io/vtknestedfunction.hh                 |  8 +++
 dumux/linear/vectorexchange.hh                | 10 +++
 6 files changed, 136 insertions(+), 9 deletions(-)

diff --git a/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal3dinteractionvolumecontainer.hh b/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal3dinteractionvolumecontainer.hh
index 2dc3b727cf..2ae6eb6297 100644
--- a/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal3dinteractionvolumecontainer.hh
+++ b/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal3dinteractionvolumecontainer.hh
@@ -19,6 +19,8 @@
 #ifndef DUMUX_FVMPFAL3D_INTERACTIONVOLUMECONTAINER_HH
 #define DUMUX_FVMPFAL3D_INTERACTIONVOLUMECONTAINER_HH
 
+#include <dune/common/version.hh>
+
 // dumux environment
 #include <dumux/decoupled/common/pressureproperties.hh>
 #include <dumux/decoupled/common/fv/mpfa/fvmpfaproperties.hh>
@@ -319,7 +321,39 @@ void FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const
                                                                           std::vector < std::vector<int> >& elemVertMap)
 {
     int eIdxGlobal = problem_.variables().index(element);
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+    int vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 0, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 7);
+    elemVertMap[vIdxGlobal][7] = eIdxGlobal;
 
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 1, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 6);
+    elemVertMap[vIdxGlobal][6] = eIdxGlobal;
+
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 2, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 5);
+    elemVertMap[vIdxGlobal][5] = eIdxGlobal;
+
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 3, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 4);
+    elemVertMap[vIdxGlobal][4] = eIdxGlobal;
+
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 4, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 3);
+    elemVertMap[vIdxGlobal][3] = eIdxGlobal;
+
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 5, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 2);
+    elemVertMap[vIdxGlobal][2] = eIdxGlobal;
+
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 6, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 1);
+    elemVertMap[vIdxGlobal][1] = eIdxGlobal;
+
+    vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, 7, dim);
+    interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 0);
+    elemVertMap[vIdxGlobal][0] = eIdxGlobal;
+#else
     int vIdxGlobal = problem_.variables().vertexMapper().map(element, 0, dim);
     interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 7);
     elemVertMap[vIdxGlobal][7] = eIdxGlobal;
@@ -351,6 +385,7 @@ void FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const
     vIdxGlobal = problem_.variables().vertexMapper().map(element, 7, dim);
     interactionVolumes_[vIdxGlobal].setSubVolumeElement(element, 0);
     elemVertMap[vIdxGlobal][0] = eIdxGlobal;
+#endif
 }
 
 /*! \brief Stores information with respect to DUNE intersections in the interaction volumes
@@ -418,7 +453,11 @@ void FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeIntersectionInfo(const E
             {
                 int localVertIdx = referenceElement.subEntity(indexInInside, 1, i, dim);
 
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+                int vIdxGlobal = problem_.variables().vertexMapper().subIndex(element, localVertIdx, dim);
+#else
                 int vIdxGlobal = problem_.variables().vertexMapper().map(element, localVertIdx, dim);
+#endif
 
                 InteractionVolume& interactionVolume = interactionVolumes_[vIdxGlobal];
 
diff --git a/dumux/decoupled/2p/impes/gridadaptionindicator2p.hh b/dumux/decoupled/2p/impes/gridadaptionindicator2p.hh
index 22e9dd7b40..c6065a1794 100644
--- a/dumux/decoupled/2p/impes/gridadaptionindicator2p.hh
+++ b/dumux/decoupled/2p/impes/gridadaptionindicator2p.hh
@@ -19,6 +19,8 @@
 #ifndef DUMUX_GRIDADAPTIONINDICATOR2P_HH
 #define DUMUX_GRIDADAPTIONINDICATOR2P_HH
 
+#include <dune/common/version.hh>
+
 #include <dumux/decoupled/common/impetproperties.hh>
 #include <dumux/decoupled/2p/2pproperties.hh>
 #include <dumux/linear/vectorexchange.hh>
@@ -165,7 +167,11 @@ public:
      */
     bool refine(const Element& element)
     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+        return (indicatorVector_[problem_.elementMapper().index(element)] > refineBound_);
+#else
         return (indicatorVector_[problem_.elementMapper().map(element)] > refineBound_);
+#endif
     }
 
     /*! \brief Indicator function for marking of grid cells for coarsening
@@ -176,7 +182,11 @@ public:
      */
     bool coarsen(const Element& element)
     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+        return (indicatorVector_[problem_.elementMapper().index(element)] < coarsenBound_);
+#else
         return (indicatorVector_[problem_.elementMapper().map(element)] < coarsenBound_);
+#endif
     }
 
     /*! \brief Initializes the adaption indicator class*/
diff --git a/dumux/decoupled/common/variableclass.hh b/dumux/decoupled/common/variableclass.hh
index 75894b1e72..c9f5930a71 100644
--- a/dumux/decoupled/common/variableclass.hh
+++ b/dumux/decoupled/common/variableclass.hh
@@ -19,6 +19,8 @@
 #ifndef DUMUX_VARIABLECLASS_HH
 #define DUMUX_VARIABLECLASS_HH
 
+#include <dune/common/version.hh>
+
 #include "decoupledproperties.hh"
 
 // for  parallelization
@@ -137,7 +139,11 @@ public:
      */
     int index(const Element& element) const
     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+        return elementMapper_.index(element);
+#else
         return elementMapper_.map(element);
+#endif
     }
 
     //! Get index of vertex (codim dim entity)
@@ -147,7 +153,11 @@ public:
      */
     int index(const Vertex& vertex) const
     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+        return vertexMapper_.index(vertex);
+#else
         return vertexMapper_.map(vertex);
+#endif
     }
 
     //!Return gridView
diff --git a/dumux/implicit/common/implicitmodel.hh b/dumux/implicit/common/implicitmodel.hh
index ff720d9d08..39bd935d71 100644
--- a/dumux/implicit/common/implicitmodel.hh
+++ b/dumux/implicit/common/implicitmodel.hh
@@ -143,8 +143,13 @@ public:
 #endif
         prevVolVars.resize(n);
         curVolVars.resize(n);
-        for (int i = 0; i < n; ++i) {
+        for (int i = 0; i < n; ++i)
+        {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            int vIdxGlobal = vertexMapper().subIndex(element, i, dim);
+#else
             int vIdxGlobal = vertexMapper().map(element, i, dim);
+#endif
 
             if (!hintsUsable_[vIdxGlobal]) {
                 curVolVars[i].setHint(NULL);
@@ -169,8 +174,13 @@ public:
         int n = element.template count<dim>();
 #endif
         curVolVars.resize(n);
-        for (int i = 0; i < n; ++i) {
+        for (int i = 0; i < n; ++i)
+        {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            int vIdxGlobal = vertexMapper().subIndex(element, i, dim);
+#else
             int vIdxGlobal = vertexMapper().map(element, i, dim);
+#endif
 
             if (!hintsUsable_[vIdxGlobal])
                 curVolVars[i].setHint(NULL);
@@ -193,8 +203,13 @@ public:
         if (!isBox || !enableHints_)
             return;
 
-        for (unsigned int i = 0; i < elemVolVars.size(); ++i) {
+        for (unsigned int i = 0; i < elemVolVars.size(); ++i)
+        {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            int vIdxGlobal = vertexMapper().subIndex(element, i, dim);
+#else
             int vIdxGlobal = vertexMapper().map(element, i, dim);
+#endif
             curHints_[vIdxGlobal] = elemVolVars[i];
             if (!hintsUsable_[vIdxGlobal])
                 prevHints_[vIdxGlobal] = elemVolVars[i];
@@ -238,17 +253,23 @@ public:
             if (isBox)
             {
 #if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
-                for (int i = 0; i < eIt->subEntities(dim); ++i) {
+                for (int i = 0; i < eIt->subEntities(dim); ++i)
+                {
+                    int globalI = vertexMapper().subIndex(*eIt, i, dim);
 #else
                 for (int i = 0; i < eIt->template count<dim>(); ++i) {
-#endif
                     int globalI = vertexMapper().map(*eIt, i, dim);
+#endif
                     residual[globalI] += localResidual().residual(i);
                 }
             }
             else
             {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+                int globalI = elementMapper().index(*eIt);
+#else
                 int globalI = elementMapper().map(*eIt);
+#endif
                 residual[globalI] = localResidual().residual(0);
             }
         }
@@ -559,8 +580,12 @@ public:
     void serializeEntity(std::ostream &outstream,
                          const Entity &entity)
     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+        int dofIdxGlobal = dofMapper().index(entity);
+#else
         int dofIdxGlobal = dofMapper().map(entity);
-        
+#endif
+
         // write phase state
         if (!outstream.good()) {
             DUNE_THROW(Dune::IOError,
@@ -587,7 +612,11 @@ public:
     void deserializeEntity(std::istream &instream,
                            const Entity &entity)
     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+        int dofIdxGlobal = dofMapper().index(entity);
+#else
         int dofIdxGlobal = dofMapper().map(entity);
+#endif
 
         for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) {
             if (!instream.good())
@@ -797,7 +826,11 @@ public:
     bool onBoundary(const Element &element, const int vIdx) const
     {
         if (isBox)
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            return onBoundary(vertexMapper().subIndex(element, vIdx, dim));
+#else
             return onBoundary(vertexMapper().map(element, vIdx, dim));
+#endif
         else
             DUNE_THROW(Dune::InvalidStateException,
                        "requested for cell-centered model");            
@@ -814,7 +847,12 @@ public:
     bool onBoundary(const Element &element) const
     {
         if (!isBox)
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            return onBoundary(elementMapper().index(element));
+#else
             return onBoundary(elementMapper().map(element));
+#endif
+
         else
             DUNE_THROW(Dune::InvalidStateException,
                        "requested for box model");
@@ -895,7 +933,11 @@ protected:
             for (int scvIdx = 0; scvIdx < fvGeometry.numScv; scvIdx++)
             {
                 // get the global index of the degree of freedom
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+                int dofIdxGlobal = dofMapper().subIndex(*eIt, scvIdx, dofCodim);
+#else
                 int dofIdxGlobal = dofMapper().map(*eIt, scvIdx, dofCodim);
+#endif
 
                 // let the problem do the dirty work of nailing down
                 // the initial solution.
@@ -977,16 +1019,24 @@ protected:
                              ++faceVertexIdx)
                         {
                             int vIdx = refElement.subEntity(fIdx,
-                                                                   1,
-                                                                   faceVertexIdx,
-                                                                   dim);
+                                                            1,
+                                                            faceVertexIdx,
+                                                            dim);
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+                            int vIdxGlobal = vertexMapper().subIndex(*eIt, vIdx, dim);
+#else
                             int vIdxGlobal = vertexMapper().map(*eIt, vIdx, dim);
+#endif
                             boundaryIndices_[vIdxGlobal] = true;
                         }
                     }
                     else 
                     {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+                        int eIdxGlobal = elementMapper().index(*eIt);
+#else
                         int eIdxGlobal = elementMapper().map(*eIt);
+#endif
                         boundaryIndices_[eIdxGlobal] = true;
                     }
                 }
diff --git a/dumux/io/vtknestedfunction.hh b/dumux/io/vtknestedfunction.hh
index 3daff286f6..bc316e2f90 100644
--- a/dumux/io/vtknestedfunction.hh
+++ b/dumux/io/vtknestedfunction.hh
@@ -75,7 +75,11 @@ public:
         int idx;
         if (codim_ == 0) {
             // cells. map element to the index
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            idx = mapper_.index(element);
+#else
             idx = mapper_.map(element);
+#endif
         }
         else if (codim_ == dim) {
             // find vertex which is closest to xi in local
@@ -101,7 +105,11 @@ public:
             }
 
             // map vertex to an index
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+            idx = mapper_.subIndex(element, imin, codim_);
+#else
             idx = mapper_.map(element, imin, codim_);
+#endif
         }
         else
             DUNE_THROW(Dune::InvalidStateException,
diff --git a/dumux/linear/vectorexchange.hh b/dumux/linear/vectorexchange.hh
index 84331c0662..53955a0053 100644
--- a/dumux/linear/vectorexchange.hh
+++ b/dumux/linear/vectorexchange.hh
@@ -23,6 +23,7 @@
 #ifndef DUMUX_VECTOR_EXCHANGE_HH
 #define DUMUX_VECTOR_EXCHANGE_HH
 
+#include <dune/common/version.hh>
 #include <dune/grid/common/datahandleif.hh>
 
 namespace Dumux
@@ -65,7 +66,11 @@ public:
   template<class MessageBuffer, class Entity>
   void gather (MessageBuffer& buff, const Entity& entity) const
   {
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+      buff.write(dataVector_[mapper_.index(entity)]);
+#else
       buff.write(dataVector_[mapper_.map(entity)]);
+#endif
   }
 
   /*! unpack data from message buffer to user
@@ -77,7 +82,12 @@ public:
   {
       DataType x;
       buff.read(x);
+
+#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
+      dataVector_[mapper_.index(entity)] = x;
+#else
       dataVector_[mapper_.map(entity)] = x;
+#endif
   }
 
   //! constructor
-- 
GitLab