diff options
Diffstat (limited to 'src/apply.c')
-rw-r--r-- | src/apply.c | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/src/apply.c b/src/apply.c index 114c1f7..fa21a2b 100644 --- a/src/apply.c +++ b/src/apply.c @@ -29,13 +29,29 @@ CCTK_FILEVERSION(AEIDevelopment_ReflectionSymmetry_apply_c); int const idir, int const jdir, int const kdir, \ int const parity) \ { \ - int i, j, k; \ + int i, j, k, iimin, jjmin, kkmin, iimax, jjmax, kkmax; \ + \ + assert(imin>=0&&imax<=ni); \ + assert(jmin>=0&&jmax<=nj); \ + assert(kmin>=0&&kmax<=nk); \ + iimin = ioff + idir*imin; \ + jjmin = joff + jdir*jmin; \ + kkmin = koff + kdir*kmin; \ + iimax = ioff + idir*imax; \ + jjmax = joff + jdir*jmax; \ + kkmax = koff + kdir*kmax; \ + assert(iimin>=0&&iimax<=ni); \ + assert(jjmin>=0&&jjmax<=nj); \ + assert(kkmin>=0&&kkmax<=nk); \ + assert(iimax>=-1&&iimin<ni); \ + assert(jjmax>=-1&&jjmin<nj); \ + assert(kkmax>=-1&&kkmin<nk); \ \ for (k=kmin; k<kmax; ++k) \ { \ for (j=jmin; j<jmax; ++j) \ { \ - for (i=imin; j<imax; ++i) \ + for (i=imin; i<imax; ++i) \ { \ int const dstind = i + ni * (j + nj * k); \ int const ii = ioff + idir * i; \ @@ -342,18 +358,21 @@ BndReflectVI (cGH const * restrict const cctkGH, imin[d] = 0; imax[d] = cctkGH->cctk_lsh[d]; ioff[d] = 0; + idir[d] = 1; } if (face == 0) { - imax[d] = cctkGH->cctk_nghostzones[d]; - ioff[d] = (+ cctkGH->cctk_nghostzones[d] - + (do_stagger[2*d+face] ? 0 : 1)); + imax[dir] = cctkGH->cctk_nghostzones[dir]; + ioff[dir] = (+ 2*cctkGH->cctk_nghostzones[dir] - 1 + + (do_stagger[2*dir+face] ? 0 : 1)); + idir[dir] = -1; } else { - imin[d] = cctkGH->cctk_lsh[d] - cctkGH->cctk_nghostzones[d]; - ioff[d] = (- cctkGH->cctk_nghostzones[d] - - (do_stagger[2*d+face] ? 0 : 1)); + imin[dir] = cctkGH->cctk_lsh[dir] - cctkGH->cctk_nghostzones[dir]; + ioff[dir] = (- 2*cctkGH->cctk_nghostzones[dir] + - (do_stagger[2*dir+face] ? 0 : 1)); + idir[dir] = -1; } /* Copy region */ |