diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2011-04-17 18:04:35 -0400 |
---|---|---|
committer | Barry Wardell <barry.wardell@gmail.com> | 2011-12-14 18:26:06 +0000 |
commit | 2c1495501189f7c53e7de3f1046d38d60cf8d97f (patch) | |
tree | c335b79e6e818bfe18e42a0df3f8cf0792dba996 /Carpet | |
parent | 1f0c516da0bc5f60d4da40b58118831db19ed363 (diff) |
Carpet: Use hg::baseextent instead of Carpet::maxspacereflevelfact
Use hg::baseextent instead of Carpet::maxspacereflevelfact to
determine the stride of a refinement level, because this works
independent of the stride on the finest level.
Diffstat (limited to 'Carpet')
-rw-r--r-- | Carpet/Carpet/src/Recompose.cc | 26 | ||||
-rw-r--r-- | Carpet/Carpet/src/SetupGH.cc | 16 |
2 files changed, 25 insertions, 17 deletions
diff --git a/Carpet/Carpet/src/Recompose.cc b/Carpet/Carpet/src/Recompose.cc index 29eba4337..dfdeec847 100644 --- a/Carpet/Carpet/src/Recompose.cc +++ b/Carpet/Carpet/src/Recompose.cc @@ -463,14 +463,16 @@ namespace Carpet { const rvect origin = domainspecs.AT(m).exterior_min; const rvect delta = (domainspecs.AT(m).exterior_max - domainspecs.AT(m).exterior_min) / rvect (domainspecs.AT(m).npoints - 1); const ibbox & ext = superregss.AT(rl).AT(c).extent; - const ivect & lower = ext.lower(); - const ivect & upper = ext.upper(); + const ivect & ilower = ext.lower(); + const ivect & iupper = ext.upper(); const ivect & levfact = spacereffacts.AT(rl); + const ibbox & base = hh.baseextent(0,0); + const ivect & bstride = base.stride(); cout << " [" << rl << "][" << m << "][" << c << "]" << " exterior: " - << origin + delta * rvect(lower) / rvect(maxspacereflevelfact) + << origin + delta * rvect(ilower) / rvect(bstride) << " : " - << origin + delta * rvect(upper) / rvect(maxspacereflevelfact) + << origin + delta * rvect(iupper) / rvect(bstride) << " : " << delta / rvect(levfact) << eol; } @@ -539,15 +541,17 @@ namespace Carpet { const rvect origin = domainspecs.AT(m).exterior_min; const rvect delta = (domainspecs.AT(m).exterior_max - domainspecs.AT(m).exterior_min) / rvect (domainspecs.AT(m).npoints - 1); const ibbox ext = hh.extent(ml,rl,c); - const ivect & lower = ext.lower(); - const ivect & upper = ext.upper(); + const ivect & ilower = ext.lower(); + const ivect & iupper = ext.upper(); const int convfact = ipow(mgfact, ml); const ivect levfact = spacereffacts.AT(rl); + const ibbox & base = hh.baseextent(ml,0); + const ivect & bstride = base.stride(); cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]" << " exterior: " - << origin + delta * rvect(lower) / rvect(maxspacereflevelfact) + << origin + delta * rvect(ilower) / rvect(bstride) << " : " - << origin + delta * rvect(upper) / rvect(maxspacereflevelfact) + << origin + delta * rvect(iupper) / rvect(bstride) << " : " << delta * rvect(convfact) / rvect(levfact) << eol; } @@ -564,11 +568,13 @@ namespace Carpet { const ivect upper = dd.light_boxes.AT(ml).AT(rl).AT(c).exterior.upper(); const int convfact = ipow(mgfact, ml); const ivect levfact = spacereffacts.AT(rl); + const ibbox & base = hh.baseextent(ml,0); + const ivect & bstride = base.stride(); cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]" << " exterior: " - << origin + delta * rvect(lower) / rvect(maxspacereflevelfact) + << origin + delta * rvect(lower) / rvect(bstride) << " : " - << origin + delta * rvect(upper) / rvect(maxspacereflevelfact) + << origin + delta * rvect(upper) / rvect(bstride) << " : " << delta * rvect(convfact) / rvect(levfact) << eol; } diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc index 99de6fdb1..76d0b182d 100644 --- a/Carpet/Carpet/src/SetupGH.cc +++ b/Carpet/Carpet/src/SetupGH.cc @@ -655,21 +655,23 @@ namespace Carpet { ivect const lower = ext.lower(); ivect const upper = ext.upper(); int const convfact = ipow(mgfact, ml); - assert (all(lower % maxspacereflevelfact == 0)); - assert (all(upper % maxspacereflevelfact == 0)); - assert (all(((upper - lower) / maxspacereflevelfact) % convfact == 0)); + ibbox const & base = vhh.AT(m)->baseextent(ml,0); + ivect const & bstride = base.stride(); + assert (all(lower % bstride == 0)); + assert (all(upper % bstride == 0)); + assert (all(((upper - lower) / bstride) % convfact == 0)); cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]" << " exterior: " << "proc " << vhh.AT(m)->processor(rl,c) << " " - << lower / maxspacereflevelfact + << lower / bstride << " : " - << upper / maxspacereflevelfact + << upper / bstride << " (" - << (upper - lower) / maxspacereflevelfact / convfact + 1 + << (upper - lower) / bstride / convfact + 1 << ") " - << prod ((upper - lower) / maxspacereflevelfact / convfact + 1) + << prod ((upper - lower) / bstride / convfact + 1) << endl; } } |