diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-04-04 12:16:31 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-04-04 12:16:31 -0400 |
commit | 7332bf6500d66a183beddd8078c864cc39bdafd0 (patch) | |
tree | 70d7123c31fb994ed6c09bad148c8c2dd26e131d /Carpet/Requirements | |
parent | a3e4d48ffc8ac3b3137f3ddfa476c01d529f2804 (diff) |
Requirements: Correct handling of timelevels in BeforeRoutine and AfterRoutine
Diffstat (limited to 'Carpet/Requirements')
-rw-r--r-- | Carpet/Requirements/src/all_state.cc | 34 |
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 |