aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/periodic.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/periodic.c b/src/periodic.c
index b114919..38ed889 100644
--- a/src/periodic.c
+++ b/src/periodic.c
@@ -136,7 +136,7 @@ BndPeriodicVI (cGH const * restrict const cctkGH,
int source;
assert (domain_size > 0);
- if (f==0 && domain_size < step_size) {
+ if (domain_size < step_size) {
/* TODO: this could be made more efficient by taking
larger steps */
step_size = 1;
@@ -163,10 +163,20 @@ BndPeriodicVI (cGH const * restrict const cctkGH,
#endif
} else {
/* Fill in upper face */
+#if 0
xferinfo[dir].src.off = stencil[dir];
xferinfo[dir].src.len = stencil[dir];
xferinfo[dir].dst.off = data.gsh[dir] - stencil[dir];
xferinfo[dir].dst.len = stencil[dir];
+#else
+ source = stencil[dir] + step*step_size;
+ while (source + step_size > data.gsh[dir] - stencil[dir]) source -= domain_size;
+ assert (source >= stencil[dir]);
+ xferinfo[dir].src.off = source;
+ xferinfo[dir].src.len = step_size;
+ xferinfo[dir].dst.off = data.gsh[dir] - stencil[dir] + step*step_size;
+ xferinfo[dir].dst.len = step_size;
+#endif
}
ierr = Slab_Transfer
@@ -212,7 +222,7 @@ BndPeriodicGI (cGH const * restrict const cctkGH,
int vi;
int ierr;
assert (gi>=0 && gi<CCTK_NumGroups());
- nv = CCTK_NumVarsInGroup(gi);
+ nv = CCTK_NumVarsInGroupI(gi);
assert (nv>=0);
if (nv>0) {
v1 = CCTK_FirstVarIndexI(gi);
@@ -251,7 +261,6 @@ Periodic_ApplyBC (cGH const * restrict const cctkGH)
int dim;
int * restrict stencil;
int i;
- int d;
int ierr;
assert (cctkGH);