From df25e2773ea0673793ac9a783d790898fd8d3fe3 Mon Sep 17 00:00:00 2001 From: schnetter Date: Thu, 19 Oct 2006 00:27:48 +0000 Subject: Add tensor types to handle the Weyl scalars. git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/RotatingSymmetry180/trunk@37 20f44201-0f4f-0410-9130-e5fc2714a787 --- src/interpolate.c | 33 +++++++++++++++++++++++++-------- src/rotatingsymmetry180.c | 24 ++++++++++++++++++++---- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/src/interpolate.c b/src/interpolate.c index 764fd7d..b673895 100644 --- a/src/interpolate.c +++ b/src/interpolate.c @@ -77,13 +77,11 @@ Rot180_CheckTensorTypes (CCTK_ARGUMENTS) free (groupname); } } else if (CCTK_EQUALS (tensortypealias, "u") - || CCTK_EQUALS (tensortypealias, "d")) - { + || CCTK_EQUALS (tensortypealias, "d")) { /* vector */ assert (numvars == 3); } else if (CCTK_EQUALS (tensortypealias, "4u") - || CCTK_EQUALS (tensortypealias, "4d")) - { + || CCTK_EQUALS (tensortypealias, "4d")) { /* 4-vector */ assert (numvars == 4); } else if (CCTK_EQUALS (tensortypealias, "uu_sym") @@ -94,6 +92,9 @@ Rot180_CheckTensorTypes (CCTK_ARGUMENTS) || CCTK_EQUALS (tensortypealias, "4dd_sym")) { /* symmetric 4-tensor */ assert (numvars == 10); + } else if (CCTK_EQUALS (tensortypealias, "weylscalars_real")) { + /* Weyl scalars, stored as 10 real values */ + assert (numvars == 10); } else { char * groupname = CCTK_GroupName(gi); assert (groupname); @@ -306,14 +307,12 @@ Rot180_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_, } parities[0] = parities[1] = parities[2] = +1; } else if (CCTK_EQUALS (tensortypealias, "u") - || CCTK_EQUALS (tensortypealias, "d")) - { + || 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")) - { + || CCTK_EQUALS (tensortypealias, "4d")) { assert (numvars == 4); if (vi == firstvar) { parities[0] = parities[1] = parities[2] = +1; @@ -354,6 +353,24 @@ Rot180_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_, default: assert(0); } } + } else if (CCTK_EQUALS (tensortypealias, "weylscalars_real")) { + assert (numvars == 10); + { + 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}}; + for (d=0; d<3; ++d) { + parities[d] = weylparities[index][d]; + } + } } else { char * groupname = CCTK_GroupName(gi); assert (groupname); diff --git a/src/rotatingsymmetry180.c b/src/rotatingsymmetry180.c index 9cbde1d..cf20492 100644 --- a/src/rotatingsymmetry180.c +++ b/src/rotatingsymmetry180.c @@ -164,14 +164,12 @@ int BndRot180VI (cGH const * restrict const cctkGH, } else if (CCTK_EQUALS (tensortypealias, "4scalar")) { paritiess[var][0] = paritiess[var][1] = paritiess[var][2] = +1; } else if (CCTK_EQUALS (tensortypealias, "u") - || CCTK_EQUALS (tensortypealias, "d")) - { + || CCTK_EQUALS (tensortypealias, "d")) { assert (numvars == 3); paritiess[var][0] = paritiess[var][1] = paritiess[var][2] = +1; paritiess[var][index] = -1; } else if (CCTK_EQUALS (tensortypealias, "4u") - || CCTK_EQUALS (tensortypealias, "4d")) - { + || CCTK_EQUALS (tensortypealias, "4d")) { assert (numvars == 4); if (index == 0) { paritiess[var][0] = paritiess[var][1] = paritiess[var][2] = +1; @@ -212,6 +210,24 @@ int BndRot180VI (cGH const * restrict const cctkGH, default: assert(0); } } + } else if (CCTK_EQUALS (tensortypealias, "weylscalars_real")) { + assert (numvars == 10); + { + 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}}; + for (d=0; d<3; ++d) { + paritiess[var][d] = weylparities[index][d]; + } + } } else { char * groupname = CCTK_GroupName(gis[var]); assert (groupname); -- cgit v1.2.3