diff options
author | schnetter <schnetter@20f44201-0f4f-0410-9130-e5fc2714a787> | 2005-10-14 15:14:40 +0000 |
---|---|---|
committer | schnetter <schnetter@20f44201-0f4f-0410-9130-e5fc2714a787> | 2005-10-14 15:14:40 +0000 |
commit | 64038eb309dfc24313bf5db96853eef78722a386 (patch) | |
tree | 710251f080b35e226a75ab82850101ccd877570b | |
parent | 620a16066b234b5a8fcee17ab7a018e3d642ba95 (diff) |
Set the variable types correctly when more than one group are
involved.
The code used to use the last group's variable type.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/RotatingSymmetry180/trunk@29 20f44201-0f4f-0410-9130-e5fc2714a787
-rw-r--r-- | src/rotatingsymmetry180.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/rotatingsymmetry180.c b/src/rotatingsymmetry180.c index b2a8a52..c88779a 100644 --- a/src/rotatingsymmetry180.c +++ b/src/rotatingsymmetry180.c @@ -30,6 +30,7 @@ int BndRot180VI (cGH const * restrict const cctkGH, cGroupDynamicData data; char * restrict fullname; void * restrict * restrict varptrs; + int * restrict vartypes; int (*paritiess)[3]; @@ -43,7 +44,6 @@ int BndRot180VI (cGH const * restrict const cctkGH, int offset[3]; /* offset 0..1 due to avoid_origin */ struct xferinfo * restrict xferinfo; - int * restrict vartypes; int var; @@ -82,6 +82,8 @@ int BndRot180VI (cGH const * restrict const cctkGH, assert (nvars==0 || gis); varptrs = malloc (nvars * sizeof *varptrs); assert (nvars==0 || varptrs); + vartypes = malloc (nvars * sizeof *vartypes); + assert (nvars==0 || vartypes); for (var=0; var<nvars; ++var) { gis[var] = CCTK_GroupIndexFromVarI (vis[var]); assert (gis[var]>=0 && gis[var]<CCTK_NumGroups()); @@ -97,6 +99,9 @@ int BndRot180VI (cGH const * restrict const cctkGH, varptrs[var] = CCTK_VarDataPtrI (cctkGH, 0, vis[var]); assert (varptrs[var]); + + vartypes[var] = group.vartype; + assert (vartypes[var] >= 0); } for (d=0; d<group.dim; ++d) { @@ -319,19 +324,11 @@ int BndRot180VI (cGH const * restrict const cctkGH, xferinfo[ dir].flip = 1; xferinfo[otherdir].flip = 1; - vartypes = malloc (nvars * sizeof *vartypes); - assert (nvars==0 || vartypes); - for (var=0; var<nvars; ++var) { - vartypes[var] = group.vartype; - } - ierr = Slab_MultiTransfer (cctkGH, group.dim, xferinfo, -1, nvars, vartypes, varptrs, vartypes, varptrs); assert (!ierr); - free (vartypes); - /* take parity into account */ if (cctkGH->cctk_bbox[2*dir]) { for (var=0; var<nvars; ++var) { @@ -371,6 +368,7 @@ int BndRot180VI (cGH const * restrict const cctkGH, free (gis); free (varptrs); + free (vartypes); free (paritiess); return 0; |