aboutsummaryrefslogtreecommitdiff
path: root/src/apply.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/apply.c')
-rw-r--r--src/apply.c170
1 files changed, 82 insertions, 88 deletions
diff --git a/src/apply.c b/src/apply.c
index 1f71e1b..918957e 100644
--- a/src/apply.c
+++ b/src/apply.c
@@ -47,12 +47,9 @@ CCTK_FILEVERSION(AEIDevelopment_ReflectionSymmetry_apply_c);
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; i<imax; ++i) \
- { \
+ for (k=kmin; k<kmax; ++k) { \
+ for (j=jmin; j<jmax; ++j) { \
+ for (i=imin; i<imax; ++i) { \
int const dstind = i + ni * (j + nj * k); \
int const ii = ioff + idir * i; \
int const jj = joff + jdir * j; \
@@ -167,24 +164,19 @@ BndReflectVI (cGH const * restrict const cctkGH,
/* Check arguments */
- if (! cctkGH)
- {
+ if (! cctkGH) {
CCTK_WARN (0, "Argument cctkGH is NULL");
}
- if (! stencil)
- {
+ if (! stencil) {
CCTK_WARN (0, "Argument stencil is NULL");
}
- if (vi < 0 || vi >= CCTK_NumVars())
- {
+ if (vi < 0 || vi >= CCTK_NumVars()) {
CCTK_WARN (0, "Illegal variable index");
}
- if (verbose)
- {
+ if (verbose) {
fullname = CCTK_FullName (vi);
- if (! fullname)
- {
+ if (! fullname) {
CCTK_WARN (0, "Internal error in CCTK_FullName");
}
CCTK_VInfo (CCTK_THORNSTRING,
@@ -197,8 +189,7 @@ BndReflectVI (cGH const * restrict const cctkGH,
/* Get and check group information */
gi = CCTK_GroupIndexFromVarI (vi);
- if (gi < 0 || gi > CCTK_NumGroups())
- {
+ if (gi < 0 || gi > CCTK_NumGroups()) {
CCTK_WARN (0, "Internal error in CCTK_GroupIndexFromVarI");
}
@@ -258,11 +249,14 @@ BndReflectVI (cGH const * restrict const cctkGH,
ttype = UNKNOWN;
tcomponent = 0;
- if (CCTK_EQUALS (tensortypealias, "scalar"))
- {
+ if (CCTK_EQUALS (tensortypealias, "scalar")) {
/* scalar */
ttype = SCALAR;
tcomponent = 0;
+ } else if (CCTK_EQUALS (tensortypealias, "4scalar")) {
+ /* 4-scalar */
+ ttype = SCALAR;
+ tcomponent = 0;
} else if (CCTK_EQUALS (tensortypealias, "u")
|| CCTK_EQUALS (tensortypealias, "d"))
{
@@ -270,12 +264,40 @@ BndReflectVI (cGH const * restrict const cctkGH,
assert (numvars == 3);
ttype = VECTOR;
tcomponent = vi - firstvar;
+ } else if (CCTK_EQUALS (tensortypealias, "4u")
+ || CCTK_EQUALS (tensortypealias, "4d"))
+ {
+ /* 4-vector */
+ assert (numvars == 4);
+ if (vi == firstvar) {
+ ttype = SCALAR;
+ tcomponent = 0;
+ } else {
+ ttype = VECTOR;
+ tcomponent = vi - firstvar - 1;
+ }
} else if (CCTK_EQUALS (tensortypealias, "uu_sym")
- || CCTK_EQUALS (tensortypealias, "dd_sym")) {
+ || CCTK_EQUALS (tensortypealias, "dd_sym"))
+ {
/* symmetric tensor */
assert (numvars == 6);
ttype = TENSOR;
tcomponent = vi - firstvar;
+ } else if (CCTK_EQUALS (tensortypealias, "4uu_sym")
+ || CCTK_EQUALS (tensortypealias, "4dd_sym"))
+ {
+ /* symmetric 4-tensor */
+ assert (numvars == 10);
+ if (vi == firstvar) {
+ ttype = SCALAR;
+ tcomponent = 0;
+ } else if (vi <= firstvar+3) {
+ ttype = VECTOR;
+ tcomponent = vi - firstvar - 1;
+ } else {
+ ttype = TENSOR;
+ tcomponent = vi - firstvar - 4;
+ }
} else if (CCTK_EQUALS (tensortypealias, "weylscalars_real")) {
/* Weyl scalars, stored as 10 real values. NOTE: This assumes
that Psi_0 comes first, which is NOT the default with
@@ -292,8 +314,7 @@ BndReflectVI (cGH const * restrict const cctkGH,
free (groupname);
}
- switch (ttype)
- {
+ switch (ttype) {
case SCALAR:
assert (tcomponent>=0 && tcomponent<1);
break;
@@ -342,21 +363,16 @@ BndReflectVI (cGH const * restrict const cctkGH,
/* Loop over all directions and faces */
- for (dir=0; dir<3; ++dir)
- {
- for (face=0; face<2; ++face)
- {
+ for (dir=0; dir<3; ++dir) {
+ for (face=0; face<2; ++face) {
/* If there is a reflection symmetry on that face */
- if (do_reflection[2*dir+face])
- {
+ if (do_reflection[2*dir+face]) {
/* If we have the outer boundary of that face */
- if (cctkGH->cctk_bbox[2*dir+face])
- {
+ if (cctkGH->cctk_bbox[2*dir+face]) {
/* Find parity */
parity = tensorparity;
- switch (ttype)
- {
+ switch (ttype) {
case SCALAR:
parity *= +1;
break;
@@ -364,8 +380,7 @@ BndReflectVI (cGH const * restrict const cctkGH,
parity *= dir == tcomponent ? -1 : +1;
break;
case TENSOR:
- switch (tcomponent)
- {
+ switch (tcomponent) {
case 0: parity *= +1; break;
case 1: parity *= (dir == 0 || dir == 1) ? -1 : +1; break;
case 2: parity *= (dir == 0 || dir == 2) ? -1 : +1; break;
@@ -375,44 +390,39 @@ BndReflectVI (cGH const * restrict const cctkGH,
default: assert (0);
}
break;
- case WEYLSCALARS_REAL:
- {
- static int const weylparities[10][3] =
- {{+1,+1,+1},
- {-1,-1,-1},
- {+1,+1,+1},
- {-1,-1,-1},
- {+1,+1,+1},
- {-1,-1,-1},
- {+1,+1,+1},
- {-1,-1,-1},
+ case WEYLSCALARS_REAL: {
+ static int const weylparities[10][3] =
+ {{+1,+1,+1},
+ {-1,-1,-1},
+ {+1,+1,+1},
+ {-1,-1,-1},
+ {+1,+1,+1},
+ {-1,-1,-1},
+ {+1,+1,+1},
+ {-1,-1,-1},
{+1,+1,+1},
- {-1,-1,-1}};
- parity *= weylparities[tcomponent][dir];
- }
+ {-1,-1,-1}};
+ parity *= weylparities[tcomponent][dir];
break;
+ }
default:
assert (0);
}
/* Find region extent */
- for (d=0; d<3; ++d)
- {
+ for (d=0; d<3; ++d) {
lsh[d] = cctkGH->cctk_lsh[d];
imin[d] = 0;
imax[d] = cctkGH->cctk_lsh[d];
ioff[d] = 0;
idir[d] = 1;
}
- if (face == 0)
- {
+ if (face == 0) {
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
- {
+ } else {
imin[dir] = cctkGH->cctk_lsh[dir] - cctkGH->cctk_nghostzones[dir];
ioff[dir] = (- 2*cctkGH->cctk_nghostzones[dir]
- (do_stagger[2*dir+face] ? 0 : 1));
@@ -420,8 +430,7 @@ BndReflectVI (cGH const * restrict const cctkGH,
}
/* Copy region */
- switch (group.vartype)
- {
+ switch (group.vartype) {
#ifdef HAVE_CCTK_INT1
case CCTK_VARIABLE_INT1:
@@ -725,86 +734,71 @@ ReflectionSymmetry_Apply (CCTK_ARGUMENTS)
int istat;
int ierr;
- if (! cctkGH)
- {
+ if (! cctkGH) {
CCTK_WARN (0, "Argument cctkGH is NULL");
}
nvars = Boundary_SelectedGVs (cctkGH, 0, NULL, NULL, NULL, NULL, NULL);
- if (nvars < 0)
- {
+ if (nvars < 0) {
CCTK_WARN (0, "Internal error in Boundary_SelectedGVs");
}
- if (nvars == 0)
- {
+ if (nvars == 0) {
/* Nothing to do */
return;
}
indices = malloc (nvars * sizeof *indices);
- if (! indices)
- {
+ if (! indices) {
CCTK_WARN (0, "Out of memory");
}
faces = malloc (nvars * sizeof *faces);
- if (! faces)
- {
+ if (! faces) {
CCTK_WARN (0, "Out of memory");
}
widths = malloc (nvars * sizeof *widths);
- if (! widths)
- {
+ if (! widths) {
CCTK_WARN (0, "Out of memory");
}
tables = malloc (nvars * sizeof *tables);
- if (! tables)
- {
+ if (! tables) {
CCTK_WARN (0, "Out of memory");
}
istat = Boundary_SelectedGVs
(cctkGH, nvars, indices, faces, widths, tables, 0);
- if (istat != nvars)
- {
+ if (istat != nvars) {
CCTK_WARN (0, "Internal error in Boundary_SelectedGVs");
}
- for (i=0; i<nvars; ++i)
- {
+ for (i=0; i<nvars; ++i) {
vi = indices[i];
- if (vi < 0 || vi >= CCTK_NumVars())
- {
+ if (vi < 0 || vi >= CCTK_NumVars()) {
CCTK_WARN (0, "Illegal variable index");
}
- if (widths[i] < 0)
- {
+ if (widths[i] < 0) {
CCTK_WARN (0, "Illegal boundary width");
}
dim = CCTK_GroupDimFromVarI (vi);
- if (dim < 0)
- {
+ if (dim < 0) {
CCTK_WARN (0, "Illegal dimension");
}
stencil = malloc (dim * sizeof *stencil);
- if (! stencil)
- {
+ if (! stencil) {
CCTK_WARN (0, "Out of memory");
}
ierr = CCTK_GroupnghostzonesVI (cctkGH, dim, stencil, vi);
- if (ierr)
- {
+ if (ierr) {
CCTK_WARN (0, "Internal error in CCTK_GroupnghostzonesVI");
}
CheckBoundaryParameters (cctkGH, vi, stencil);
ierr = BndReflectVI (cctkGH, stencil, vi);
- if (ierr)
- {
+ if (ierr) {
CCTK_WARN (0, "Internal error in BndReflectVI");
}