aboutsummaryrefslogtreecommitdiff
path: root/src/interpolate.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interpolate.c')
-rw-r--r--src/interpolate.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/interpolate.c b/src/interpolate.c
index 304ef80..16cb5a4 100644
--- a/src/interpolate.c
+++ b/src/interpolate.c
@@ -66,15 +66,34 @@ Rot180_CheckTensorTypes (CCTK_ARGUMENTS)
groupname);
free (groupname);
}
+ } else if (CCTK_EQUALS (tensortypealias, "4-scalar")) {
+ /* 4-scalar */
+ if (numvars != 1) {
+ char * groupname = CCTK_GroupName(gi);
+ assert (groupname);
+ CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Group \"%s\" has the tensor type alias \"4scalar\", but contains more than 1 element",
+ groupname);
+ free (groupname);
+ }
} else if (CCTK_EQUALS (tensortypealias, "u")
|| CCTK_EQUALS (tensortypealias, "d"))
{
/* vector */
assert (numvars == 3);
+ } else if (CCTK_EQUALS (tensortypealias, "4u")
+ || CCTK_EQUALS (tensortypealias, "4d"))
+ {
+ /* 4-vector */
+ assert (numvars == 4);
} else if (CCTK_EQUALS (tensortypealias, "uu_sym")
|| CCTK_EQUALS (tensortypealias, "dd_sym")) {
/* symmetric tensor */
assert (numvars == 6);
+ } else if (CCTK_EQUALS (tensortypealias, "4uu_sym")
+ || CCTK_EQUALS (tensortypealias, "4dd_sym")) {
+ /* symmetric 4-tensor */
+ assert (numvars == 10);
} else {
char * groupname = CCTK_GroupName(gi);
assert (groupname);
@@ -274,12 +293,32 @@ Rot180_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_,
free (groupname);
}
parities[0] = parities[1] = parities[2] = +1;
+ } else if (CCTK_EQUALS (tensortypealias, "4scalar")) {
+ if (numvars != 1) {
+ char * groupname = CCTK_GroupName(gi);
+ assert (groupname);
+ CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Group \"%s\" has the tensor type alias \"scalar\", but contains more than 1 element",
+ groupname);
+ free (groupname);
+ }
+ parities[0] = parities[1] = parities[2] = +1;
} else if (CCTK_EQUALS (tensortypealias, "u")
|| CCTK_EQUALS (tensortypealias, "d"))
{
assert (numvars == 3);
parities[0] = parities[1] = parities[2] = +1;
parities[index] = -1;
+ } else if (CCTK_EQUALS (tensortypealias, "4u")
+ || CCTK_EQUALS (tensortypealias, "4d"))
+ {
+ assert (numvars == 4);
+ if (vi == firstvar) {
+ parities[0] = parities[1] = parities[2] = +1;
+ } else {
+ parities[0] = parities[1] = parities[2] = +1;
+ parities[index] = -1;
+ }
} else if (CCTK_EQUALS (tensortypealias, "uu_sym")
|| CCTK_EQUALS (tensortypealias, "dd_sym")) {
assert (numvars == 6);
@@ -293,6 +332,26 @@ Rot180_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_,
case 5: break;
default: assert(0);
}
+ } else if (CCTK_EQUALS (tensortypealias, "4uu_sym")
+ || CCTK_EQUALS (tensortypealias, "4dd_sym")) {
+ assert (numvars == 10);
+ if (vi == firstvar) {
+ parities[0] = parities[1] = parities[2] = +1;
+ } else if (vi < firstvar + 4) {
+ parities[0] = parities[1] = parities[2] = +1;
+ parities[index] = -1;
+ } else {
+ parities[0] = parities[1] = parities[2] = +1;
+ switch (index) {
+ case 0: break;
+ case 1: parities[0] = parities[1] = -1; break;
+ case 2: parities[0] = parities[2] = -1; break;
+ case 3: break;
+ case 4: parities[1] = parities[2] = -1; break;
+ case 5: break;
+ default: assert(0);
+ }
+ }
} else {
char * groupname = CCTK_GroupName(gi);
assert (groupname);