diff options
Diffstat (limited to 'src/apply.c')
-rw-r--r-- | src/apply.c | 170 |
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"); } |