From f4b640f26b6e867402e23251206673fb40d431b7 Mon Sep 17 00:00:00 2001 From: schnetter Date: Thu, 1 Apr 2010 18:07:32 +0000 Subject: Correct symmetries for T_i(jk) git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/ReflectionSymmetry/trunk@34 082bdb00-0f4f-0410-b49e-b1835e5f2039 --- src/apply.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/apply.c b/src/apply.c index c070012..b4745e2 100644 --- a/src/apply.c +++ b/src/apply.c @@ -178,7 +178,8 @@ BndReflectVI (cGH const * restrict const cctkGH, int table; char tensortypealias[1000]; enum tensortype { UNKNOWN, - SCALAR, VECTOR, SYMTENSOR, TENSOR, WEYLSCALARS_REAL, MANUALCARTESIAN }; + SCALAR, VECTOR, SYMTENSOR, SYMTENSOR3, TENSOR, + WEYLSCALARS_REAL, MANUALCARTESIAN }; enum tensortype ttype; CCTK_INT tensorparity; int tcomponent; @@ -343,8 +344,8 @@ BndReflectVI (cGH const * restrict const cctkGH, } else if (CCTK_EQUALS (tensortypealias, "ddd_sym")) { /* 3rd rank tensor, symmetric in last 2 indices */ assert (numvars == 18); - ttype = SYMTENSOR; - tcomponent = (vi - firstvar) % 6; + ttype = SYMTENSOR3; + tcomponent = vi - firstvar; } 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 @@ -375,6 +376,9 @@ BndReflectVI (cGH const * restrict const cctkGH, case SYMTENSOR: assert (tcomponent>=0 && tcomponent<6); break; + case SYMTENSOR3: + assert (tcomponent>=0 && tcomponent<18); + break; case TENSOR: assert (tcomponent>=0 && tcomponent<9); break; @@ -449,6 +453,23 @@ BndReflectVI (cGH const * restrict const cctkGH, default: assert (0); } break; + case SYMTENSOR3: + switch (tcomponent % 6) { + 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; + case 3: parity *= +1; break; + case 4: parity *= (dir == 1 || dir == 2) ? -1 : +1; break; + case 5: parity *= +1; break; + default: assert (0); + } + switch (tcomponent / 6) { + case 0: parity *= dir == 0 ? -1 : +1; break; + case 1: parity *= dir == 1 ? -1 : +1; break; + case 2: parity *= dir == 2 ? -1 : +1; break; + default: assert (0); + } + break; case TENSOR: switch (tcomponent) { case 0: parity *= +1; break; -- cgit v1.2.3