From 5739da7d68bf093893a59aa630472436d08aacec Mon Sep 17 00:00:00 2001 From: Ian Hawke Date: Fri, 4 Mar 2005 16:37:00 +0000 Subject: CarpetAdaptiveRegrid:Really fix the inheriting child errors this time, I hope. darcs-hash:20050304163739-58c7f-6e0236559166e77d7562b96370e4ffa95068eee1.gz --- CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc | 32 ++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'CarpetDev') diff --git a/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc b/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc index 8ed7229df..c5e8ec62f 100644 --- a/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc +++ b/CarpetDev/CarpetAdaptiveRegrid/src/CAR.cc @@ -398,13 +398,17 @@ namespace CarpetAdaptiveRegrid { CCTK_INT currentml = mglevel; CCTK_INT currentrl = reflevel; - CCTK_INT currentmap = carpetGH.map; - + CCTK_INT currentmap = carpetGH.map; + leave_singlemap_mode(const_cast (cctkGH)); leave_level_mode(const_cast (cctkGH)); enter_level_mode(const_cast (cctkGH), currentrl + 1); enter_singlemap_mode(const_cast (cctkGH), currentmap); + + const ibbox& child_baseext = + vdd.at(Carpet::map)->bases.at(mglevel).at(reflevel).exterior; + ivect child_levoff = child_baseext.lower()/(bb.stride()/reffact); if (verbose) { ostringstream buf; @@ -432,6 +436,18 @@ namespace CarpetAdaptiveRegrid { // FIXME: Why should the following assert be true? // assert(all(imax < ivect::ref(cctkGH->cctk_lsh))); assert(all(imin <= imax)); + + if (verbose) { + ostringstream buf; + buf << "Checking for errors on child level " + << reflevel << " map " << currentmap + << " component " << component << endl + << "Mask: " << imin << imax << endl + << "Component: " << ivect::ref(cctkGH->cctk_lbnd) + << ivect::ref(cctkGH->cctk_lsh) << endl + << "level offset: " << child_levoff; + CCTK_INFO(buf.str().c_str()); + } for (CCTK_INT k = 0; k < cctkGH->cctk_lsh[2]; ++k) { for (CCTK_INT j = 0; j < cctkGH->cctk_lsh[1]; ++j) { @@ -440,11 +456,17 @@ namespace CarpetAdaptiveRegrid { CCTK_REAL local_error = abs(error_var_ptr[index]); if (local_error > max_error) { // Correct for the change in level ! - CCTK_INT ii = (i + cctkGH->cctk_lbnd[0]) / reffact - + CCTK_INT ii = (i + cctkGH->cctk_lbnd[0] + - cctkGH->cctk_nghostzones[0] + + child_levoff[0]) / reffact - imin[0]; - CCTK_INT jj = (j + cctkGH->cctk_lbnd[1]) / reffact - + CCTK_INT jj = (j + cctkGH->cctk_lbnd[1] + - cctkGH->cctk_nghostzones[1] + + child_levoff[1]) / reffact - imin[1]; - CCTK_INT kk = (k + cctkGH->cctk_lbnd[2]) / reffact - + CCTK_INT kk = (k + cctkGH->cctk_lbnd[2] + - cctkGH->cctk_nghostzones[2] + + child_levoff[1]) / reffact - imin[2]; // Check that this point actually intersects with // this box (if this component was actually a -- cgit v1.2.3