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