aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschnetter <schnetter@c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5>2004-08-06 07:57:23 +0000
committerschnetter <schnetter@c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5>2004-08-06 07:57:23 +0000
commitdc8659f50b4a2a573a34f490e2bbf9719f6b5ed3 (patch)
treec5a087986654645552b0a398ec64f0c3ca10e7bb
parent1f2da65826fcdc52d4ffa70fa2d3cca20d0dca29 (diff)
Check tensor type aliases at paramcheck time, and be less verbose at
run time. git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/RotatingSymmetry90/trunk@15 c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5
-rw-r--r--src/interpolate.c66
-rw-r--r--src/rotatingsymmetry90.c15
2 files changed, 67 insertions, 14 deletions
diff --git a/src/interpolate.c b/src/interpolate.c
index f0e032b..5392293 100644
--- a/src/interpolate.c
+++ b/src/interpolate.c
@@ -235,6 +235,9 @@ CheckTensorType (struct tensor const * restrict const atensor)
void
Rot90_CheckTensorTypes (CCTK_ARGUMENTS)
{
+ int gi;
+
+ /* Check all internal tensor type definitions */
CheckTensorType (&scalar);
CheckTensorType (&vector);
CheckTensorType (&tensor);
@@ -242,6 +245,69 @@ Rot90_CheckTensorTypes (CCTK_ARGUMENTS)
CheckTensorType (&symmtensor3a);
CheckTensorType (&symmtensor3b);
CheckTensorType (&symmtensor4);
+
+ /* Check tensor types of all groups */
+ for (gi=0; gi<CCTK_NumGroups(); ++gi) {
+
+ char tensortypealias[100];
+ int numvars, firstvar;
+ int table;
+ int ierr;
+
+ numvars = CCTK_NumVarsInGroupI(gi);
+ assert (numvars>0);
+ firstvar = CCTK_FirstVarIndexI(gi);
+ assert (firstvar>=0);
+ table = CCTK_GroupTagsTableI(gi);
+ assert (table>=0);
+
+ ierr = Util_TableGetString
+ (table, sizeof tensortypealias, tensortypealias, "tensortypealias");
+ if (ierr == UTIL_ERROR_TABLE_NO_SUCH_KEY) {
+ char * groupname = CCTK_GroupName(gi);
+ assert (groupname);
+ CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Tensor type alias not declared for group \"%s\" -- assuming a scalar",
+ groupname);
+ free (groupname);
+ strcpy (tensortypealias, "");
+ } else if (ierr<0) {
+ char * groupname = CCTK_GroupName(gi);
+ assert (groupname);
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Error in tensor type alias declaration for group \"%s\"",
+ groupname);
+ free (groupname);
+ }
+
+ if (CCTK_EQUALS (tensortypealias, "")) {
+ /* do nothing */
+ } else if (CCTK_EQUALS (tensortypealias, "scalar")) {
+ /* 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 \"scalar\", but contains more than 1 element",
+ groupname);
+ free (groupname);
+ }
+ } else if (CCTK_EQUALS (tensortypealias, "u")) {
+ /* vector */
+ assert (numvars == 3);
+ } else if (CCTK_EQUALS (tensortypealias, "dd_sym")) {
+ /* symmetric tensor */
+ assert (numvars == 6);
+ } else {
+ char * groupname = CCTK_GroupName(gi);
+ assert (groupname);
+ CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Illegal tensor type alias for group \"%s\"",
+ groupname);
+ free (groupname);
+ }
+
+ }
}
diff --git a/src/rotatingsymmetry90.c b/src/rotatingsymmetry90.c
index 7dfbb02..a253d28 100644
--- a/src/rotatingsymmetry90.c
+++ b/src/rotatingsymmetry90.c
@@ -150,12 +150,7 @@ int BndRot90VI (cGH const * restrict const cctkGH,
ierr = Util_TableGetString
(table, sizeof tensortypealias, tensortypealias, "tensortypealias");
if (ierr == UTIL_ERROR_TABLE_NO_SUCH_KEY) {
- char * groupname = CCTK_GroupName(gi);
- assert (groupname);
- CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
- "Tensor type alias not declared for group \"%s\" -- assuming a scalar",
- groupname);
- free (groupname);
+ /* assume a scalar */
strcpy (tensortypealias, "scalar");
} else if (ierr<0) {
char * groupname = CCTK_GroupName(gi);
@@ -168,14 +163,6 @@ int BndRot90VI (cGH const * restrict const cctkGH,
if (CCTK_EQUALS (tensortypealias, "scalar")) {
/* scalar */
- 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);
- }
} else if (CCTK_EQUALS (tensortypealias, "u")) {
/* vector */
assert (numvars == 3);