diff options
author | schnetter <schnetter@c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5> | 2004-08-06 07:57:23 +0000 |
---|---|---|
committer | schnetter <schnetter@c3c03602-0f4f-0410-b3fa-d2c81c8a7dc5> | 2004-08-06 07:57:23 +0000 |
commit | dc8659f50b4a2a573a34f490e2bbf9719f6b5ed3 (patch) | |
tree | c5a087986654645552b0a398ec64f0c3ca10e7bb /src | |
parent | 1f2da65826fcdc52d4ffa70fa2d3cca20d0dca29 (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
Diffstat (limited to 'src')
-rw-r--r-- | src/interpolate.c | 66 | ||||
-rw-r--r-- | src/rotatingsymmetry90.c | 15 |
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); |