From 926445aafaf5e85e219ebe3c3e9c8b852a981c87 Mon Sep 17 00:00:00 2001 From: schnetter Date: Sun, 21 Mar 2010 16:41:51 +0000 Subject: Add tensor type ddd_sym, corresponding to T_i(jk). git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/RotatingSymmetry90/trunk@51 c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5 --- src/interpolate.c | 18 ++++++++++++++++++ src/rotatingsymmetry90.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/src/interpolate.c b/src/interpolate.c index 16370f2..50e3b70 100644 --- a/src/interpolate.c +++ b/src/interpolate.c @@ -355,10 +355,16 @@ Rot90_CheckTensorTypes (CCTK_ARGUMENTS) { /* 4-vector */ assert (numvars == DIM+1); + } else if (CCTK_EQUALS (tensortypealias, "du")) { + /* tensor */ + assert (numvars == DIM*DIM); } else if (CCTK_EQUALS (tensortypealias, "uu_sym") || CCTK_EQUALS (tensortypealias, "dd_sym")) { /* symmetric tensor */ assert (numvars == DIM*(DIM+1)/2); + } else if (CCTK_EQUALS (tensortypealias, "ddd_sym")) { + /* 3rd rank tensor, symmetric in last 2 indices */ + assert (numvars == DIM*DIM*(DIM+1)/2); } else if (CCTK_EQUALS (tensortypealias, "4uu_sym") || CCTK_EQUALS (tensortypealias, "4dd_sym")) { /* symmetric 4-tensor */ @@ -712,6 +718,12 @@ Rot90_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_, basevar = firstvar + off; var = vi - basevar; } + } else if (CCTK_EQUALS (tensortypealias, "du")) { + /* tensor */ + assert (numvars == DIM*DIM); + tensortype = &tensor; + basevar = firstvar; + var = vi - basevar; } else if (CCTK_EQUALS (tensortypealias, "uu_sym") || CCTK_EQUALS (tensortypealias, "dd_sym")) { /* symmetric tensor */ @@ -719,6 +731,12 @@ Rot90_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_, tensortype = &symmtensor; basevar = firstvar; var = vi - basevar; + } else if (CCTK_EQUALS (tensortypealias, "ddd_sym")) { + /* 3rd rank tensor, symmetric in last 2 indices */ + assert (numvars == DIM*DIM*(DIM+1)/2); + tensortype = &symmtensor3b; + basevar = firstvar; + var = vi - basevar; } else if (CCTK_EQUALS (tensortypealias, "4uu_sym") || CCTK_EQUALS (tensortypealias, "4dd_sym")) { /* symmetric 4-tensor */ diff --git a/src/rotatingsymmetry90.c b/src/rotatingsymmetry90.c index 397797f..c58c7aa 100644 --- a/src/rotatingsymmetry90.c +++ b/src/rotatingsymmetry90.c @@ -293,10 +293,16 @@ int BndRot90VI (cGH const * restrict const cctkGH, || CCTK_EQUALS (tensortypealias, "4d")) { /* 4-vector */ assert (numvars == DIM+1); + } else if (CCTK_EQUALS (tensortypealias, "du")) { + /* tensor */ + assert (numvars == DIM*DIM); } else if (CCTK_EQUALS (tensortypealias, "uu_sym") || CCTK_EQUALS (tensortypealias, "dd_sym")) { /* symmetric tensor */ assert (numvars == DIM*(DIM+1)/2); + } else if (CCTK_EQUALS (tensortypealias, "ddd_sym")) { + /* 3rd rank tensor, symmetric in last 2 indices */ + assert (numvars == DIM*DIM*(DIM+1)/2); } else if (CCTK_EQUALS (tensortypealias, "4uu_sym") || CCTK_EQUALS (tensortypealias, "4dd_sym")) { /* symmetric 4-tensor */ @@ -345,6 +351,19 @@ int BndRot90VI (cGH const * restrict const cctkGH, = off + convert_index (step, index-off, alldirs, &parities[var]); srcvi = firstvar + srcindex; } + } else if (CCTK_EQUALS (tensortypealias, "du")) { + /* tensor */ + assert (numvars == DIM*DIM); + int index1, index2; + int srcindex1, srcindex2; + int srcindex; + assert (index>=0 && index=0 && index