aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@082bdb00-0f4f-0410-b49e-b1835e5f2039>2010-04-01 18:07:32 +0000
committerschnetter <schnetter@082bdb00-0f4f-0410-b49e-b1835e5f2039>2010-04-01 18:07:32 +0000
commitf4b640f26b6e867402e23251206673fb40d431b7 (patch)
tree8e11852e6a5afaf4341e5ae74a93851277ae66c3
parent435cf8c8c7690786cf90fe069cdbb4a659491e2e (diff)
Correct symmetries for T_i(jk)
git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/ReflectionSymmetry/trunk@34 082bdb00-0f4f-0410-b49e-b1835e5f2039
-rw-r--r--src/apply.c27
1 files 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;