From 47160b68e90d14b8df6afc8b073a26b5fdd2091d Mon Sep 17 00:00:00 2001
From: Timo Koch <timokoch@uio.no>
Date: Thu, 17 Aug 2023 10:09:55 +0200
Subject: [PATCH] [io][grid] Make binary mask reader work with refinement

---
 dumux/io/grid/gridmanager_sub.hh | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/dumux/io/grid/gridmanager_sub.hh b/dumux/io/grid/gridmanager_sub.hh
index d156038192..885dc48522 100644
--- a/dumux/io/grid/gridmanager_sub.hh
+++ b/dumux/io/grid/gridmanager_sub.hh
@@ -258,13 +258,6 @@ public:
                     return getParamFromGroup<GlobalPosition>(paramGroup, "Grid.UpperRight");
             }();
 
-            // make sure there is no grid refinement specified
-            if (getParamFromGroup<int>(paramGroup, "Grid.Refinement", 0) > 0)
-                DUNE_THROW(Dune::IOError,
-                    "Binary mask doesn't work together with Grid.Refinement."
-                    << " Use grid.globalRefine() after grid construction."
-                );
-
             // construct the host grid
             this->initHostGrid_(lowerLeft, upperRight, cells, paramGroup);
 
@@ -273,7 +266,10 @@ public:
             const char marker = getParamFromGroup<char>(paramGroup, "Grid.Marker", 0);
             const auto elementSelector = [&](const auto& element)
             {
-                const auto eIdx = this->hostGrid_().leafGridView().indexSet().index(element);
+                auto level0 = element;
+                while(level0.hasFather())
+                    level0 = level0.father();
+                const auto eIdx = this->hostGrid_().levelGridView(0).indexSet().index(level0);
                 return buffer[eIdx] != marker;
             };
 
-- 
GitLab