From 05eaad0a926a9e6bdaed595f91947236c1d233e4 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Wed, 16 Jun 2010 11:48:55 +0000 Subject: [PATCH] Added min refinement level for marker strategy. --- AMDiS/src/Marker.cc | 11 ++++++----- AMDiS/src/Marker.h | 9 +++++++-- AMDiS/src/Traverse.cc | 1 - 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/AMDiS/src/Marker.cc b/AMDiS/src/Marker.cc index e06d73eb..f07b87e8 100644 --- a/AMDiS/src/Marker.cc +++ b/AMDiS/src/Marker.cc @@ -9,7 +9,7 @@ namespace AMDiS { Marker *marker = NULL; - switch(strategy) { + switch (strategy) { case 0: break; case 1: @@ -64,9 +64,11 @@ namespace AMDiS { setMark(el, adaptInfo->getRefineBisections(row == -1 ? 0 : row)); } else { if (adaptInfo->isCoarseningAllowed(row == -1 ? 0 : row) && lError <= markCLimit) { - if (!el->getElementData()->getElementData(COARSENABLE) || - lError + el->getCoarseningEstimation(row) <= markCLimit) - setMark(el, -adaptInfo->getCoarseBisections(row == -1 ? 0 : row)); + if (minRefineLevel == -1 || elInfo->getLevel() > minRefineLevel) { + if (!el->getElementData()->getElementData(COARSENABLE) || + lError + el->getCoarseningEstimation(row) <= markCLimit) + setMark(el, -adaptInfo->getCoarseBisections(row == -1 ? 0 : row)); + } } } } @@ -241,5 +243,4 @@ namespace AMDiS { } - } diff --git a/AMDiS/src/Marker.h b/AMDiS/src/Marker.h index edd4720f..f8fd6c97 100644 --- a/AMDiS/src/Marker.h +++ b/AMDiS/src/Marker.h @@ -51,11 +51,13 @@ namespace AMDiS { maximumMarking(false), p(2), info(10), - maxRefineLevel(-1) + maxRefineLevel(-1), + minRefineLevel(-1) { GET_PARAMETER(0, name + "->p", "%f", &p); GET_PARAMETER(0, name + "->info", "%d", &info); GET_PARAMETER(0, name + "->max refinement level", "%d", &maxRefineLevel); + GET_PARAMETER(0, name + "->min refinement level", "%d", &minRefineLevel); } /// destructor @@ -172,8 +174,11 @@ namespace AMDiS { /// Counter for elements marked for coarsening int elMarkCoarsen; - /// Maximal depth for element refinement. + /// Maximal level of all elements. int maxRefineLevel; + + /// Minimal level of all elements. + int minRefineLevel; }; diff --git a/AMDiS/src/Traverse.cc b/AMDiS/src/Traverse.cc index 58eeb027..6a48d8dd 100644 --- a/AMDiS/src/Traverse.cc +++ b/AMDiS/src/Traverse.cc @@ -345,7 +345,6 @@ namespace AMDiS { int i = info_stack[stack_used]; info_stack[stack_used]++; - elinfo_stack[stack_used + 1]->fillElInfo(i, elinfo_stack[stack_used]); stack_used++; -- GitLab