aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Requirements
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-04-04 12:16:31 -0400
committerErik Schnetter <schnetter@gmail.com>2013-04-04 12:16:31 -0400
commit7332bf6500d66a183beddd8078c864cc39bdafd0 (patch)
tree70d7123c31fb994ed6c09bad148c8c2dd26e131d /Carpet/Requirements
parenta3e4d48ffc8ac3b3137f3ddfa476c01d529f2804 (diff)
Requirements: Correct handling of timelevels in BeforeRoutine and AfterRoutine
Diffstat (limited to 'Carpet/Requirements')
-rw-r--r--Carpet/Requirements/src/all_state.cc34
1 files changed, 13 insertions, 21 deletions
diff --git a/Carpet/Requirements/src/all_state.cc b/Carpet/Requirements/src/all_state.cc
index ef113b540..135618918 100644
--- a/Carpet/Requirements/src/all_state.cc
+++ b/Carpet/Requirements/src/all_state.cc
@@ -390,17 +390,13 @@ namespace Requirements {
for (int m=min_m; m<max_m; ++m) {
timelevels_t const& tls = ms.AT(m);
- int const timelevels = int(tls.size());
+ int const ntls = int(tls.size());
+ assert(ntls >= clause.min_num_timelevels());
assert(timelevel != -1);
- assert(timelevels >= clause.min_num_timelevels());
- // TODO: properly handle timelevels the way enter_local_mode() does
- const int mintl =
- timelevel == 0 || timelevels == 1 ? 0 : timelevel;
- const int maxtl =
- timelevel == 0 || timelevels == 1 ? timelevels-1 : timelevel;
- const int tloff = timelevel_offset;
- for (int tl=mintl; tl<=maxtl; ++tl) {
- if (timelevel==-1 or clause.active_on_timelevel(tl-tloff)) {
+ for (int tl=0; tl<ntls; ++tl) {
+ if (tl >= timelevel_offset and
+ clause.active_on_timelevel(tl - timelevel_offset))
+ {
gridpoint_t const& gp = tls.AT(tl);
gp.check_state(clause, function_data, vi, rl, m, tl);
}
@@ -466,20 +462,16 @@ namespace Requirements {
min_m = map; max_m = min_m+1;
}
for (int m=min_m; m<max_m; ++m) {
-
loc.m = m;
+
timelevels_t& tls = ms.AT(m);
- int const timelevels = int(tls.size());
+ int const ntls = int(tls.size());
+ assert(ntls >= clause.min_num_timelevels());
assert(timelevel != -1);
- assert(timelevels >= clause.min_num_timelevels());
- // TODO: properly handle timelevels the way enter_local_mode() does
- const int mintl =
- timelevel == 0 || timelevels == 1 ? 0 : timelevel;
- const int maxtl =
- timelevel == 0 || timelevels == 1 ? timelevels-1 : timelevel;
- const int tloff = timelevel_offset;
- for (int tl=mintl; tl<=maxtl; ++tl) {
- if (timelevel==-1 or clause.active_on_timelevel(tl-tloff)) {
+ for (int tl=0; tl<ntls; ++tl) {
+ if (tl >= timelevel_offset and
+ clause.active_on_timelevel(tl - timelevel_offset))
+ {
loc.tl = tl;
gridpoint_t& gp = tls.AT(tl);
// TODO: If this variable is both read and written