aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5>2005-10-14 15:16:50 +0000
committerschnetter <schnetter@c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5>2005-10-14 15:16:50 +0000
commiteccd90553f1c7eb81ed4733c03ca6a9da81d2618 (patch)
tree819469344ddfed21ef8b14f61ca5345849cf443a
parentf30e3a650b7073a0c945e85b216d1506b3bde1bd (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/RotatingSymmetry90/trunk@30 c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5
-rw-r--r--src/rotatingsymmetry90.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/rotatingsymmetry90.c b/src/rotatingsymmetry90.c
index a5abe48..a24c60e 100644
--- a/src/rotatingsymmetry90.c
+++ b/src/rotatingsymmetry90.c
@@ -68,6 +68,7 @@ int BndRot90VI (cGH const * restrict const cctkGH,
cGroupDynamicData data;
char * restrict fullname;
void * restrict * restrict varptrs;
+ int * restrict vartypes;
int firstvar;
char tensortypealias[100];
@@ -87,7 +88,6 @@ int BndRot90VI (cGH const * restrict const cctkGH,
int offset[3]; /* offset 0..1 due to avoid_origin */
struct xferinfo * restrict xferinfo;
- int * restrict vartypes;
int have_global_bbox, have_local_bbox;
@@ -129,6 +129,8 @@ int BndRot90VI (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());
@@ -144,6 +146,9 @@ int BndRot90VI (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) {
@@ -503,10 +508,7 @@ int BndRot90VI (cGH const * restrict const cctkGH,
assert (0);
}
- vartypes = malloc (nvars * sizeof *vartypes);
- assert (nvars==0 || vartypes);
for (var=0; var<nvars; ++var) {
- vartypes[var] = group.vartype;
}
ierr = Slab_MultiTransfer
@@ -514,8 +516,6 @@ int BndRot90VI (cGH const * restrict const cctkGH,
nvars, vartypes, srcptrs, vartypes, varptrs);
assert (!ierr);
- free (vartypes);
-
/* take parity into account */
have_local_bbox = 1;
for (q=0; q<ndirs; ++q) {
@@ -558,6 +558,7 @@ int BndRot90VI (cGH const * restrict const cctkGH,
free (gis);
free (varptrs);
+ free (vartypes);
free (parities);
free (srcptrs);