aboutsummaryrefslogtreecommitdiff
path: root/CarpetDev
diff options
context:
space:
mode:
authorih <schnetter@cct.lsu.edu>2005-02-21 19:54:00 +0000
committerih <schnetter@cct.lsu.edu>2005-02-21 19:54:00 +0000
commit32bbcc0dfd528ebd3945236e2dcab93a32b28320 (patch)
tree9bd7f3938ee7270e7f6b868b60ee5feb5f173efd /CarpetDev
parent86b60b8dd5b498779ee004369ff665a51ff41698 (diff)
Correct padding
Correct the way the errors are padded (an off-by-one error). Also be a bit more careful with F90 intent statements. darcs-hash:20050221195416-0ff1f-9a41dbe1c6c26563fb6b69513fdcabfa887f29d7.gz
Diffstat (limited to 'CarpetDev')
-rw-r--r--CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc35
-rw-r--r--CarpetDev/CarpetAdaptiveRegrid/src/CAR_utils.F9015
2 files changed, 30 insertions, 20 deletions
diff --git a/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc b/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc
index 7ad17ed66..6923d9188 100644
--- a/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc
+++ b/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc
@@ -219,7 +219,8 @@ namespace CarpetAdaptiveRegrid {
for (CCTK_INT j = 0; j < cctkGH->cctk_lsh[1]; ++j) {
for (CCTK_INT i = 0; i < cctkGH->cctk_lsh[0]; ++i) {
CCTK_INT index = CCTK_GFINDEX3D(cctkGH, i, j, k);
- if (abs(error_var_ptr[index]) > max_error) {
+ CCTK_REAL local_error = abs(error_var_ptr[index]);
+ if (local_error > max_error) {
CCTK_INT ii = i + cctkGH->cctk_lbnd[0] - imin[0];
CCTK_INT jj = j + cctkGH->cctk_lbnd[1] - imin[1];
CCTK_INT kk = k + cctkGH->cctk_lbnd[2] - imin[2];
@@ -262,22 +263,22 @@ namespace CarpetAdaptiveRegrid {
// Pad the errors: stage 1 - buffer points marked as 2.
- for (CCTK_INT k = 0; k < imax[2] - imin[2]; k++) {
- for (CCTK_INT j = 0; j < imax[1] - imin[1]; j++) {
- for (CCTK_INT i = 0; i < imax[0] - imin[0]; i++) {
+ for (CCTK_INT k = 0; k < imax[2] - imin[2] + 1; k++) {
+ for (CCTK_INT j = 0; j < imax[1] - imin[1] + 1; j++) {
+ for (CCTK_INT i = 0; i < imax[0] - imin[0] + 1; i++) {
CCTK_INT index = i +
(imax[0] - imin[0] + 1)*(j + (imax[1] - imin[1] + 1) * k);
if (mask[index] == 1) {
- for (CCTK_INT kk = max(k-pad, 0);
- kk < min(k+pad+1, imax[2] - imin[2]);
+ for (CCTK_INT kk = max(k - pad, 0);
+ kk < min(k + pad + 1, imax[2] - imin[2] + 1);
++kk)
{
- for (CCTK_INT jj = max(j-pad, 0);
- jj < min(j+pad+1, imax[1] - imin[1]);
+ for (CCTK_INT jj = max(j - pad, 0);
+ jj < min(j + pad + 1, imax[1] - imin[1] + 1);
++jj)
{
- for (CCTK_INT ii = max(i-pad, 0);
- ii < min(i+pad+1, imax[0] - imin[0]);
+ for (CCTK_INT ii = max(i - pad, 0);
+ ii < min(i + pad + 1, imax[0] - imin[0] + 1);
++ii)
{
CCTK_INT mindex = ii +
@@ -294,9 +295,9 @@ namespace CarpetAdaptiveRegrid {
// stage 2: all buffer points marked truly in error.
// Also mark if there are any errors.
bool should_regrid = false;
- for (CCTK_INT k = 0; k < imax[2] - imin[2]; k++) {
- for (CCTK_INT j = 0; j < imax[1] - imin[1]; j++) {
- for (CCTK_INT i = 0; i < imax[0] - imin[0]; i++) {
+ for (CCTK_INT k = 0; k < imax[2] - imin[2] + 1; k++) {
+ for (CCTK_INT j = 0; j < imax[1] - imin[1] + 1; j++) {
+ for (CCTK_INT i = 0; i < imax[0] - imin[0] + 1; i++) {
CCTK_INT index = i +
(imax[0]-imin[0] + 1)*(j + (imax[1] - imin[1] + 1) * k);
if (mask[index] > 1) mask[index] = 1;
@@ -474,6 +475,14 @@ namespace CarpetAdaptiveRegrid {
vector<bbvect> obs;
while (! final.empty()) {
ibbox bb = final.top(); final.pop();
+
+ if (veryverbose) {
+ ostringstream buf;
+ buf << "Looping over the final list. Box is:"
+ << endl << bb;
+ CCTK_INFO(buf.str().c_str());
+ }
+
ivect ilo = bb.lower();
ivect ihi = bb.upper();
rvect lo = int2pos(cctkGH, hh, ilo, reflevel);
diff --git a/CarpetDev/CarpetAdaptiveRegrid/src/CAR_utils.F90 b/CarpetDev/CarpetAdaptiveRegrid/src/CAR_utils.F90
index 1b2c9f80f..81669571e 100644
--- a/CarpetDev/CarpetAdaptiveRegrid/src/CAR_utils.F90
+++ b/CarpetDev/CarpetAdaptiveRegrid/src/CAR_utils.F90
@@ -188,9 +188,10 @@ subroutine find_hole(nx, lsum, min_width, ihole)
implicit none
- CCTK_INT :: nx
- CCTK_INT :: lsum(nx)
- CCTK_INT :: min_width, ihole
+ CCTK_INT, intent(in) :: nx
+ CCTK_INT, intent(in) :: lsum(nx)
+ CCTK_INT, intent(in) :: min_width
+ CCTK_INT, intent(out) :: ihole
CCTK_INT :: i
@@ -225,11 +226,11 @@ subroutine split_box_at_hole(nx, ny, nz, sum_x, sum_y, sum_z, &
implicit none
- CCTK_INT :: nx, ny, nz
- CCTK_INT :: sum_x(nx), sum_y(ny), sum_z(nz)
+ CCTK_INT, intent(in) :: nx, ny, nz
+ CCTK_INT, intent(in) :: sum_x(nx), sum_y(ny), sum_z(nz)
CCTK_INT :: bbox(3,3), newbbox1(3,3), newbbox2(3,3)
- CCTK_INT :: min_width
- CCTK_INT :: didit
+ CCTK_INT, intent(in) :: min_width
+ CCTK_INT, intent(out) :: didit
CCTK_INT :: ihole