From a9293d60f260e7f38125e2305b13c519633aaa35 Mon Sep 17 00:00:00 2001 From: ih Date: Mon, 21 Feb 2005 19:54:00 +0000 Subject: 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 --- CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc | 35 +++++++++++++++--------- CarpetDev/CarpetAdaptiveRegrid/src/CAR_utils.F90 | 15 +++++----- 2 files changed, 30 insertions(+), 20 deletions(-) (limited to 'CarpetDev') 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 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 -- cgit v1.2.3