aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@20f44201-0f4f-0410-9130-e5fc2714a787>2005-10-14 15:14:40 +0000
committerschnetter <schnetter@20f44201-0f4f-0410-9130-e5fc2714a787>2005-10-14 15:14:40 +0000
commit64038eb309dfc24313bf5db96853eef78722a386 (patch)
tree710251f080b35e226a75ab82850101ccd877570b
parent620a16066b234b5a8fcee17ab7a018e3d642ba95 (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.c16
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;