aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetRegrid
diff options
context:
space:
mode:
authorschnetter <>2004-02-05 08:53:00 +0000
committerschnetter <>2004-02-05 08:53:00 +0000
commit8901dadda0312a002fd81cb1bce50b779ca27520 (patch)
treea14ba7ecce73a5a311d02c4f43a1a10737a13ef3 /Carpet/CarpetRegrid
parentd633b1e42940c71895b3cc51d08cd08d4148b343 (diff)
Introduce a keyword parameter that selects between fixed and variable
Introduce a keyword parameter that selects between fixed and variable progressive mesh refinement. darcs-hash:20040205085315-07bb3-08164f32105ec814e53691afac7d88ea8e2099fc.gz
Diffstat (limited to 'Carpet/CarpetRegrid')
-rw-r--r--Carpet/CarpetRegrid/param.ccl15
-rw-r--r--Carpet/CarpetRegrid/src/regrid.cc23
2 files changed, 25 insertions, 13 deletions
diff --git a/Carpet/CarpetRegrid/param.ccl b/Carpet/CarpetRegrid/param.ccl
index 1de876c73..58ee1938c 100644
--- a/Carpet/CarpetRegrid/param.ccl
+++ b/Carpet/CarpetRegrid/param.ccl
@@ -1,5 +1,5 @@
# Parameter definitions for thorn CarpetRegrid
-# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/param.ccl,v 1.14 2004/01/25 14:57:30 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/param.ccl,v 1.15 2004/02/05 09:53:15 schnetter Exp $
@@ -19,7 +19,14 @@ CCTK_INT regrid_every "Regrid every n time steps" STEERABLE=always
-CCTK_INT activate_newlevels_on_regrid "When regridding, activate this many new levels (if possible). Note that this will steer the parameter refinement_levels." STEERABLE=always
+KEYWORD activate_levels_on_regrid "Whether to activate or deactivate new levels on regridding" STEERABLE=always
+{
+ "none" :: "do not activate or deactivate any levels"
+ "fixed" :: "activate or deactivate a fixed number of levels"
+ "activate or deactivate a variable number of levels, determined by a user-specified function. When this parameter is used, the parameters num_new_levels and activate_next must not be set."
+} "none"
+
+CCTK_INT num_new_levels "When regridding, activate this many new levels (if possible). Note that this will steer the parameter refinement_levels." STEERABLE=always
{
: :: "Number of new levels to activate (negative numbers deactivate)"
} 0
@@ -29,10 +36,6 @@ CCTK_INT activate_next "The next iteration at which new levels should be activat
0: :: "Note that this parameter is steered when new levels are activated"
} 1
-BOOLEAN regrid_from_function "Regridding criteria from the aliased function?"
-{
-} "no"
-
KEYWORD refined_regions "Regions where the grid is refined" STEERABLE=always
diff --git a/Carpet/CarpetRegrid/src/regrid.cc b/Carpet/CarpetRegrid/src/regrid.cc
index 3c6b8b0a7..8f48e7b99 100644
--- a/Carpet/CarpetRegrid/src/regrid.cc
+++ b/Carpet/CarpetRegrid/src/regrid.cc
@@ -13,7 +13,7 @@
#include "regrid.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.cc,v 1.34 2004/01/25 14:57:30 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.cc,v 1.35 2004/02/05 09:53:15 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetRegrid_regrid_cc);
}
@@ -78,11 +78,15 @@ namespace CarpetRegrid {
// Steer parameters
- if (activate_newlevels_on_regrid != 0) {
+ if (CCTK_EQUALS(activate_levels_on_regrid, "none")) {
+
+ // do nothing
+
+ } else if (CCTK_EQUALS(activate_levels_on_regrid, "fixed")) {
+
if (cctkGH->cctk_iteration >= activate_next) {
const int newnumlevels
- = min(refinement_levels + activate_newlevels_on_regrid,
- maxreflevels);
+ = min(refinement_levels + num_new_levels, maxreflevels);
assert (newnumlevels>0 && newnumlevels<=maxreflevels);
*const_cast<CCTK_INT*>(&activate_next) = cctkGH->cctk_iteration + 1;
@@ -98,9 +102,9 @@ namespace CarpetRegrid {
("refinement_levels", "CarpetRegrid", param.str().c_str());
}
- }
-
- if (regrid_from_function) {
+
+ } else if (CCTK_EQUALS(activate_levels_on_regrid, "activate or deactivate a variable number of levels, determined by a user-specified function. When this parameter is used, the parameters num_new_levels and activate_next must not be set.")) {
+
if (! CCTK_IsFunctionAliased("RegridLevel")) {
CCTK_WARN (0, "No thorn has provided the function \"RegridLevel\"");
}
@@ -113,6 +117,11 @@ namespace CarpetRegrid {
param << refinement_levels;
CCTK_ParameterSet
("refinement_levels", "CarpetRegrid", param.str().c_str());
+
+ } else {
+
+ assert (0);
+
}