diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-04-03 17:51:26 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-04-03 17:52:58 -0400 |
commit | 8962dacf32642a82eee8f61d07f4122cc1ddbbb1 (patch) | |
tree | da90bf0bf599e38d5bedd4e2b9890b91cbddbc32 /Carpet/Carpet | |
parent | e99efd951ab3138230abd50966bf28b764b03c22 (diff) |
Carpet, Requirements: Pass timelevel_offset
Introduce global variable timelevel_offset in Carpet.
Pass timelevel_offset from Carpet to Requirements.
Use timelevel_offset when determining which timelevels are accessed.
Diffstat (limited to 'Carpet/Carpet')
-rw-r--r-- | Carpet/Carpet/interface.ccl | 7 | ||||
-rw-r--r-- | Carpet/Carpet/src/CallFunction.cc | 6 | ||||
-rw-r--r-- | Carpet/Carpet/src/SetupGH.cc | 5 | ||||
-rw-r--r-- | Carpet/Carpet/src/helpers.cc | 7 | ||||
-rw-r--r-- | Carpet/Carpet/src/modes.hh | 3 | ||||
-rw-r--r-- | Carpet/Carpet/src/variables.cc | 2 | ||||
-rw-r--r-- | Carpet/Carpet/src/variables.hh | 2 |
7 files changed, 26 insertions, 6 deletions
diff --git a/Carpet/Carpet/interface.ccl b/Carpet/Carpet/interface.ccl index 6b5143e91..577cbb059 100644 --- a/Carpet/Carpet/interface.ccl +++ b/Carpet/Carpet/interface.ccl @@ -316,6 +316,13 @@ PROVIDES FUNCTION GetTimeLevel \ WITH Carpet_GetTimeLevel \ LANGUAGE C +CCTK_INT FUNCTION \ + GetTimeLevelOffset \ + (CCTK_POINTER_TO_CONST IN cctkGH) +PROVIDES FUNCTION GetTimeLevelOffset \ + WITH Carpet_GetTimeLevelOffset \ + LANGUAGE C + # Get pointer to grid variable for a specific map and refinement level diff --git a/Carpet/Carpet/src/CallFunction.cc b/Carpet/Carpet/src/CallFunction.cc index deefa523c..345436fc2 100644 --- a/Carpet/Carpet/src/CallFunction.cc +++ b/Carpet/Carpet/src/CallFunction.cc @@ -360,7 +360,8 @@ namespace Carpet { user_timer.start(); #ifdef REQUIREMENTS_HH - Requirements::BeforeRoutine(attribute, reflevel, map, timelevel); + Requirements::BeforeRoutine + (attribute, reflevel, map, timelevel, timelevel_offset); #endif timer.start(); if (CCTK_IsFunctionAliased("Accelerator_PreCallFunction")) { @@ -379,7 +380,8 @@ namespace Carpet { } timer.stop(); #ifdef REQUIREMENTS_HH - Requirements::AfterRoutine(attribute, reflevel, map, timelevel); + Requirements::AfterRoutine + (attribute, reflevel, map, timelevel, timelevel_offset); #endif user_timer.stop(); diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc index 896194651..138e0f63a 100644 --- a/Carpet/Carpet/src/SetupGH.cc +++ b/Carpet/Carpet/src/SetupGH.cc @@ -549,8 +549,9 @@ namespace Carpet { cctkGH->cctk_mode = CCTK_MODE_META; #endif - timelevels = prolongation_order_time + 1; - timelevel = 0; + timelevels = prolongation_order_time + 1; + timelevel = 0; + timelevel_offset = 0; // Say hello diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc index a52eb5acd..6938fd658 100644 --- a/Carpet/Carpet/src/helpers.cc +++ b/Carpet/Carpet/src/helpers.cc @@ -101,6 +101,13 @@ namespace Carpet { return timelevel; } + // Get current map level + extern "C" + CCTK_INT Carpet_GetTimeLevelOffset (CCTK_POINTER_TO_CONST const cctkGH) + { + return timelevel_offset; + } + // Enable or disable prolongating diff --git a/Carpet/Carpet/src/modes.hh b/Carpet/Carpet/src/modes.hh index 3d6c0c76b..23a20ed5d 100644 --- a/Carpet/Carpet/src/modes.hh +++ b/Carpet/Carpet/src/modes.hh @@ -254,8 +254,10 @@ namespace Carpet { assert (do_allow_past_timelevels); \ do_allow_past_timelevels = false; \ assert (timelevel == 0); \ + assert (timelevel_offset == 0); \ assert (not adaptive_stepsize); \ for (timelevel = timelevels - 1; timelevel >= 0; -- timelevel) { \ + timelevel_offset = timelevel; \ cctkGH->cctk_time = tt->get_time (mglevel, reflevel, timelevel); \ { #define END_TIMELEVEL_LOOP \ @@ -264,6 +266,7 @@ namespace Carpet { assert (timelevel_loop_); \ timelevel_loop_ = false; \ timelevel = 0; \ + timelevel_offset = 0; \ /* cctkGH->cctk_time = tt->get_time (mglevel, reflevel, timelevel); */ \ do_allow_past_timelevels = true; \ } while (false) diff --git a/Carpet/Carpet/src/variables.cc b/Carpet/Carpet/src/variables.cc index d7fef9e80..7351e4073 100644 --- a/Carpet/Carpet/src/variables.cc +++ b/Carpet/Carpet/src/variables.cc @@ -57,7 +57,7 @@ namespace Carpet { int map; int component; int local_component; - int timelevel; + int timelevel, timelevel_offset; // Current refinement factors int timereflevelfact; diff --git a/Carpet/Carpet/src/variables.hh b/Carpet/Carpet/src/variables.hh index 60f934dd3..c8eecaaf1 100644 --- a/Carpet/Carpet/src/variables.hh +++ b/Carpet/Carpet/src/variables.hh @@ -88,7 +88,7 @@ namespace Carpet { extern int map; extern int component; extern int local_component; // -1 for non-local - extern int timelevel; + extern int timelevel, timelevel_offset; // Current refinement factors extern int timereflevelfact; |