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