diff options
author | allen <allen@57bc7290-fb3d-4efd-a9b1-28e84cce6043> | 2002-01-03 20:55:02 +0000 |
---|---|---|
committer | allen <allen@57bc7290-fb3d-4efd-a9b1-28e84cce6043> | 2002-01-03 20:55:02 +0000 |
commit | f6ec2a15cadc570bb4f2fa0980f9cd838c0c553d (patch) | |
tree | acc4e19497fb932a2cfe734a15eb285b1c6f6a17 | |
parent | d7003aadbb261388d6e238fca9fcd163ebd00fb5 (diff) |
Tidying of Elliptic infrastructure
git-svn-id: http://svn.cactuscode.org/arrangements/CactusElliptic/EllBase/trunk@61 57bc7290-fb3d-4efd-a9b1-28e84cce6043
-rw-r--r-- | interface.ccl | 4 | ||||
-rw-r--r-- | src/Ell_DBstructure.c | 255 | ||||
-rw-r--r-- | src/Ell_Interface.c | 14 | ||||
-rw-r--r-- | src/Ell_Register.c | 53 | ||||
-rw-r--r-- | src/Startup.c | 9 |
5 files changed, 214 insertions, 121 deletions
diff --git a/interface.ccl b/interface.ccl index 828fc4c..b8e3b1e 100644 --- a/interface.ccl +++ b/interface.ccl @@ -2,5 +2,5 @@ # $Header$ implements: ellbase -INCLUDES: EllBase.h in EllBase.h -INCLUDES: Ell_DBstructure.h in Ell_DBstructure.h +INCLUDES HEADER: EllBase.h in EllBase.h +INCLUDES HEADER: Ell_DBstructure.h in Ell_DBstructure.h diff --git a/src/Ell_DBstructure.c b/src/Ell_DBstructure.c index 0dd2e94..f3592ca 100644 --- a/src/Ell_DBstructure.c +++ b/src/Ell_DBstructure.c @@ -1,3 +1,12 @@ +/*@@ + @file Ell_DBstructure.c + @date + @author Gerd Lanfermann + @desc + Database for elliptic parameters + @enddesc + @version $Id$ + @@*/ #include <stdio.h> #include <stdlib.h> @@ -16,7 +25,29 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusElliptic_EllBase_Ell_DBstructure_c) -static pNamedData *EllInfoDB; +/******************************************************************** + ******************** External Routines ************************ + ********************************************************************/ +void CCTK_FCALL CCTK_FNAME(Ell_IsKey) + (int *ierr, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME(Ell_DeleteKey) + (int *ierr, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME(Ell_SetRealKey) + (int *ierr, CCTK_REAL *value, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME(Ell_SetIntKey) + (int *ierr, CCTK_INT *value, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME(Ell_SetStrKey) + (int *ierr, TWO_FORTSTRINGS_ARGS); +void CCTK_FCALL CCTK_FNAME(Ell_GetRealKey) + (int *ierr, CCTK_REAL *value, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME(Ell_GetIntKey) + (int *ierr, CCTK_INT *value, ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME(Ell_GetStrKey) + (int *nchar, char **cstring,ONE_FORTSTRING_ARG); + +/******************************************************************** + ******************** Internal Typedefs ************************ + ********************************************************************/ struct t_ellthingy { @@ -30,16 +61,30 @@ struct t_ellthingy } vals; }; -int Ell_CreateKey(int vartype, const char *keychain) { +/******************************************************************** + ******************** Static Variables ************************* + ********************************************************************/ + +static pNamedData *EllInfoDB; + +/******************************************************************** + ******************** Internal Routines ************************ + ********************************************************************/ + +int Ell_CreateKey(int vartype, const char *keychain) +{ DECLARE_CCTK_PARAMETERS struct t_ellthingy* new; int retval; - if ((struct t_ellthingy*)GetNamedData(EllInfoDB, keychain)) { + if ((struct t_ellthingy*)GetNamedData(EllInfoDB, keychain)) + { retval = ELLCREATE_TWICE; - } else { + } + else + { new = (struct t_ellthingy*)malloc(sizeof(struct t_ellthingy)); @@ -86,68 +131,86 @@ int Ell_CreateKey(int vartype, const char *keychain) { } -int Ell_IsKey(const char *keychain) { +int Ell_IsKey(const char *keychain) +{ int retval=ELL_ISNOKEY; - if ((struct t_ellthingy*)GetNamedData(EllInfoDB, keychain)) { + if ((struct t_ellthingy*)GetNamedData(EllInfoDB, keychain)) + { retval = 0; - } else + } + else + { retval = ELL_ISNOKEY; + } return(retval); } -void CCTK_FCALL CCTK_FNAME(Ell_IsKey)(int *ierr, ONE_FORTSTRING_ARG) { +void CCTK_FCALL CCTK_FNAME(Ell_IsKey)(int *ierr, ONE_FORTSTRING_ARG) +{ ONE_FORTSTRING_CREATE(key) *ierr = Ell_IsKey(key); free(key); } -int Ell_UnsetKey(const char *keychain) { +int Ell_UnsetKey(const char *keychain) +{ struct t_ellthingy* getme; int retval; getme = (struct t_ellthingy*)GetNamedData(EllInfoDB, keychain); - if (!(getme)) { - printf("Ell_GetRealKey: Cannot get structure with key >%s< \n",keychain); - printf("Ell_GetRealKey: Create first!\n"); + if (!(getme)) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetRealKey: Cannot get structure with key %s",keychain); retval = ELLGET_NOKEY; - } else { + } + else + { getme->been_set = ELL_NO; retval = 0; } return(retval); } -int Ell_DeleteKey(const char *keychain) { +int Ell_DeleteKey(const char *keychain) +{ int retval; - printf("NO IMPLEMENTED YET!"); + /* avoid compiler warnings */ + keychain = keychain; + CCTK_INFO("Ell_DeleteKey: Routine not implemented yet!"); retval = 1; return(retval); } -void CCTK_FCALL CCTK_FNAME(Ell_DeleteKey)(int *ierr, ONE_FORTSTRING_ARG){ +void CCTK_FCALL CCTK_FNAME(Ell_DeleteKey)(int *ierr, ONE_FORTSTRING_ARG) +{ ONE_FORTSTRING_CREATE(key); *ierr = Ell_DeleteKey(key); free(key); } -/*** SET OPERATIONS ***/ - -int Ell_SetRealKey(CCTK_REAL value, const char *keychain) { +int Ell_SetRealKey(CCTK_REAL value, const char *keychain) +{ int retval; struct t_ellthingy *setme; setme = GetNamedData(EllInfoDB, keychain); - if (!(setme)) { + if (!(setme)) + { retval = ELLSET_FAILED; - } else if (setme->type!=CCTK_VARIABLE_REAL) { + } + else if (setme->type!=CCTK_VARIABLE_REAL) + { retval = ELLSET_BADTYPE; - printf("Ell_SetRealKey: The key you try to set is not of type CCTK_REAL: >%s< (type %d)\n", - keychain,setme->type); + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_SetRealKey: Key %s not of type CCTK_REAL (type %d)", + keychain,setme->type); } - else { + else + { setme->type = CCTK_VARIABLE_REAL; setme->vals.r = value; setme->been_set = ELL_YES; @@ -158,21 +221,25 @@ int Ell_SetRealKey(CCTK_REAL value, const char *keychain) { } void CCTK_FCALL CCTK_FNAME(Ell_SetRealKey) - (int *ierr, CCTK_REAL *value, ONE_FORTSTRING_ARG) { + (int *ierr, CCTK_REAL *value, ONE_FORTSTRING_ARG) +{ ONE_FORTSTRING_CREATE(key) *ierr = Ell_SetRealKey(*value, key); free(key); } -int Ell_SetIntKey(CCTK_INT value, const char *keychain) { +int Ell_SetIntKey(CCTK_INT value, const char *keychain) +{ int retval; struct t_ellthingy *setme; setme = GetNamedData(EllInfoDB, keychain); - if (!(setme)) { + if (!(setme)) + { retval = ELLSET_FAILED; } - else if (setme->type!=CCTK_VARIABLE_INT) { + else if (setme->type!=CCTK_VARIABLE_INT) + { retval = ELLSET_BADTYPE; printf("Ell_SetIntKey: The key you try to set is not of type CCTK_INT: >%s< (type %d)\n", keychain,setme->type); @@ -187,35 +254,45 @@ int Ell_SetIntKey(CCTK_INT value, const char *keychain) { } void CCTK_FCALL CCTK_FNAME(Ell_SetIntKey) - (int *ierr, CCTK_INT *value, ONE_FORTSTRING_ARG) { + (int *ierr, CCTK_INT *value, ONE_FORTSTRING_ARG) +{ ONE_FORTSTRING_CREATE(key) *ierr = Ell_SetIntKey(*value, key); free(key); } -int Ell_SetStrKey(char *value, const char *keychain) { +int Ell_SetStrKey(char *value, const char *keychain) +{ int retval; struct t_ellthingy *setme; setme = GetNamedData(EllInfoDB, keychain); - if (!(setme)) { + if (!(setme)) + { retval = ELLSET_FAILED; - } else if (setme->type!=CCTK_VARIABLE_STRING) { + } + else if (setme->type!=CCTK_VARIABLE_STRING) + { retval = ELLSET_BADTYPE; - printf("Ell_SetStrKey: The key you try to set is not of type STRING: >%s< (type %d)\n", - keychain,setme->type); + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_SetStrKey: Key %s not of type STRING (type %d)", + keychain,setme->type); } - else { + else + { setme->type = CCTK_VARIABLE_STRING; - setme->vals.s = strdup(value); + setme->vals.s = strdup(value); setme->been_set = ELL_YES; - retval=0; + retval = 0; } + return(retval); + } -void CCTK_FCALL CCTK_FNAME(Ell_SetStringKey) - (int *ierr, TWO_FORTSTRINGS_ARGS) { +void CCTK_FCALL CCTK_FNAME(Ell_SetStrKey) + (int *ierr, TWO_FORTSTRINGS_ARGS) +{ TWO_FORTSTRINGS_CREATE(value,key) *ierr = Ell_SetStrKey(value, key); free(value); @@ -223,35 +300,37 @@ void CCTK_FCALL CCTK_FNAME(Ell_SetStringKey) } - - - - -/*** GET OPERATIONS ***/ - - -int Ell_GetRealKey(CCTK_REAL *value, const char *keychain) { +int Ell_GetRealKey(CCTK_REAL *value, const char *keychain) +{ struct t_ellthingy *getme=NULL; int retval; getme = (struct t_ellthingy*)GetNamedData(EllInfoDB, keychain); - if (!(getme)) { - printf("Ell_GetRealKey: Cannot get structure with key >%s< \n",keychain); - printf("Ell_GetRealKey: Create first!\n"); + if (!(getme)) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetRealKey: Cannot get structure for key %s",keychain); retval = ELLGET_NOKEY; } - else if (getme->type!=CCTK_VARIABLE_REAL) { - printf("Ell_GetRealKey: You are not getting a CCTK_REAL value off this key: >%s< type: %d (need %d)\n", - keychain,getme->type,CCTK_VARIABLE_REAL); + else if (getme->type!=CCTK_VARIABLE_REAL) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetRealKey: Not getting a CCTK_REAL value off key %s " + "type %d (need %d)\n", + keychain,getme->type,CCTK_VARIABLE_REAL); retval = ELLGET_BADTYPE; } - else if (getme->been_set==ELL_NO) { - printf("Ell_GetRealKey: This key has not been set to any value: >%s< \n",keychain); + else if (getme->been_set==ELL_NO) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetRealKey: Key %s has not been set to any value", + keychain); retval = ELLGET_NOTSET; } - else { + else + { *value=getme->vals.r; retval=0; } @@ -259,33 +338,44 @@ int Ell_GetRealKey(CCTK_REAL *value, const char *keychain) { } void CCTK_FCALL CCTK_FNAME(Ell_GetRealKey) - (int *ierr, CCTK_REAL *value, ONE_FORTSTRING_ARG) { + (int *ierr, CCTK_REAL *value, ONE_FORTSTRING_ARG) +{ ONE_FORTSTRING_CREATE(key) *ierr = Ell_GetRealKey(value, key); free(key); } -int Ell_GetIntKey(CCTK_INT *value,const char *keychain) { +int Ell_GetIntKey(CCTK_INT *value,const char *keychain) +{ struct t_ellthingy *getme=NULL; int retval; getme = (struct t_ellthingy*)GetNamedData(EllInfoDB, keychain); - if (!(getme)) { + if (!(getme)) + { printf("Ell_GetIntKey: Cannot get structure with key >%s< \n",keychain); printf("Ell_GetIntKey: Create first!\n"); retval = ELLGET_NOKEY; } - else if (getme->type!=CCTK_VARIABLE_INT) { - printf("Ell_GetIntKey: You are not getting a CCTK_INT value off this key: >%s< type: %d\n", - keychain,getme->type); + else if (getme->type!=CCTK_VARIABLE_INT) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetIntKey: Not getting a CCTK_INT value from key %s " + "(type %d)", + keychain,getme->type); retval = ELLGET_BADTYPE; } - else if (getme->been_set==ELL_NO) { - printf("Ell_GetIntKey: Key has not been set to any value: >%s< type %d\n",keychain,getme->type); + else if (getme->been_set==ELL_NO) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetIntKey: Key %s has not been set to any value (type %d)", + keychain,getme->type); retval = ELLGET_NOTSET; - } else { + } + else + { *value=getme->vals.i; retval=0; } @@ -294,13 +384,15 @@ int Ell_GetIntKey(CCTK_INT *value,const char *keychain) { } void CCTK_FCALL CCTK_FNAME(Ell_GetIntKey) - (int *ierr, CCTK_INT *value, ONE_FORTSTRING_ARG) { + (int *ierr, CCTK_INT *value, ONE_FORTSTRING_ARG) +{ ONE_FORTSTRING_CREATE(key) *ierr = Ell_GetIntKey(value, key); free(key); } -int Ell_GetStrKey(char **value, const char *keychain) { +int Ell_GetStrKey(char **value, const char *keychain) +{ struct t_ellthingy *getme=NULL; int retval; @@ -309,20 +401,27 @@ int Ell_GetStrKey(char **value, const char *keychain) { getme = (struct t_ellthingy*)GetNamedData(EllInfoDB, keychain); - if (!(getme)) { - printf("Ell_GetStrKey: Cannot get structure with key >%s< \n",keychain); - printf("Ell_GetStrKey: Create first!\n"); + if (!(getme)) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetStrKey: Cannot get structure with key %s",keychain); retval = ELLGET_NOKEY; } - else if (getme->type!=CCTK_VARIABLE_STRING) { - printf("You are not getting a CCTK_STRING value off this key: >%s< type: %d\n", - keychain,getme->type); + else if (getme->type!=CCTK_VARIABLE_STRING) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetStrKey: Not getting a CCTK_STRING from this key %s " + "type: %d", keychain,getme->type); retval = ELLGET_BADTYPE; } - else if (getme->been_set==ELL_NO) { - printf("Key has not been set\n"); + else if (getme->been_set==ELL_NO) + { + CCTK_VWarn(4,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_GetStrKey: Key %s has not been set", keychain); retval = ELLGET_NOTSET; - } else { + } + else + { *value=strdup(getme->vals.s); retval=0; } @@ -347,12 +446,12 @@ void CCTK_FCALL CCTK_FNAME(Ell_GetStrKey) *nchar = -1; } - for (i=0;i<strlen(*cstring);i++) + for (i=0;i<(int)strlen(*cstring);i++) { fptr[i] = (*cstring)[i]; } - for (i=strlen(*cstring);i<cctk_strlen1;i++) + for (i=(int)strlen(*cstring);i<(int)cctk_strlen1;i++) { fptr[i] = ' '; } diff --git a/src/Ell_Interface.c b/src/Ell_Interface.c index 6682810..f66f557 100644 --- a/src/Ell_Interface.c +++ b/src/Ell_Interface.c @@ -24,7 +24,7 @@ #include "cctk.h" #include "cctk_Parameters.h" #include "cctk_FortranString.h" -#include "StoreNamedData.h" +#include "StoreNamedData.h" #include "EllBase.h" @@ -38,6 +38,16 @@ static pNamedData *LinFlatSolverDB; static pNamedData *BrBrConfMetricSolverDB; static pNamedData *PolyConfMetricSolverDB; +int Ell_LinConfMetricRegistry(int (*function), const char *sname); +int Ell_LinConfMetricSolver(cGH *GH, + int *MetricPsi, + int FieldIndex, + int MIndex, + int NIndex, + CCTK_REAL *AbsTol, + CCTK_REAL *RelTol, + const char *sname); + /* ###################################################### ###### Elliptic Equation class: LinEllConfMetric ##### @@ -344,7 +354,7 @@ int Ell_BrBrConfMetricSolver(cGH *GH, } else { - CCTK_WARN(2,"Cannot find solver for BrBrConfMetric"); + CCTK_WARN(2,"Ell_BrBrConfMetricSolver: Cannot find solver for BrBrConfMetric"); retval = ELL_NOSOLVER; } diff --git a/src/Ell_Register.c b/src/Ell_Register.c index ce791d1..dcc50a7 100644 --- a/src/Ell_Register.c +++ b/src/Ell_Register.c @@ -44,39 +44,29 @@ int Ell_RegisterEq(void *(function)(const char *, void*), const char *eqname) DECLARE_CCTK_PARAMETERS int retval = ELL_FAILURE; + /* Register if function not already there with this name */ if (!GetNamedData(EqNameDB, eqname)) { - if (StoreNamedData(&EqNameDB, eqname, (void*)function)==0) { if CCTK_EQUALS(elliptic_verbose,"yes") { - char *msg; - msg = (char *)malloc( (200+strlen(eqname))*sizeof(char) ); - sprintf(msg,"Registered elliptic class: %s",eqname); - CCTK_INFO(msg); - free(msg); + CCTK_VInfo(CCTK_THORNSTRING,"Registered elliptic class: %s",eqname); } retval = ELL_SUCCESS; } else { - char *msg; - msg = (char *)malloc( (200+strlen(eqname))*sizeof(char) ); - sprintf(msg,"Failed to register elliptic class: %s",eqname); - CCTK_INFO(msg); - free(msg); + CCTK_VInfo(CCTK_THORNSTRING,"Failed to register elliptic class: %s", + eqname); } } else { - char *msg; - msg = (char *)malloc( (200+strlen(eqname))*sizeof(char) ); - sprintf(msg,"Elliptic class %s already registered",eqname); - CCTK_WARN(0,msg); - free(msg); + CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, + "Elliptic class %s already registered",eqname); retval = ELL_CLASSEXISTS; } @@ -108,7 +98,7 @@ int Ell_RegisterSolver(void (*function), int ierr; int (*fn)(void *, const char *); - fn = (int(*)(void (*function), const char *sname)) + fn = (int(*)(void (*func), const char *solvename)) GetNamedData(EqNameDB, eqname); if (fn) @@ -121,43 +111,32 @@ int Ell_RegisterSolver(void (*function), if CCTK_EQUALS(elliptic_verbose,"yes") { - char *msg; - msg = (char *)malloc((200+strlen(eqname)+strlen(sname))*sizeof(char)); - sprintf(msg,"Registered elliptic solver %s for %s",sname,eqname); - CCTK_INFO(msg); - free(msg); + CCTK_VInfo(CCTK_THORNSTRING, + "Registered elliptic solver %s for %s",sname,eqname); } retval = ELL_SUCCESS; } else if (ierr==ELL_SOLVEREXISTS) { - char *msg; - msg = (char *)malloc((200+strlen(eqname)+strlen(sname))*sizeof(char)); - sprintf(msg,"Registered second solver %s for %s",sname,eqname); - CCTK_WARN(0,msg); - free(msg); - + CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_RegisterSolver: " + "Registered second solver %s for %s",sname,eqname); retval = ELL_SOLVEREXISTS; } else { - char *msg; - msg = (char *)malloc((200+strlen(eqname)+strlen(sname))*sizeof(char)); - sprintf(msg,"Failed to register solver %s for %s",sname,eqname); - CCTK_WARN(1,msg); - free(msg); + CCTK_VWarn(1,__LINE__,__FILE__,CCTK_THORNSTRING, + "Ell_RegisterSolver: " + "Failed to register solver %s for %s",sname,eqname); } } else { - CCTK_WARN(0,"Cannot get function in EqName"); + CCTK_WARN(0,"Ell_RegisterSolver: Cannot get function in EqName"); retval = ELL_NOCLASS; } return retval; - - - } diff --git a/src/Startup.c b/src/Startup.c index ecad25f..732b236 100644 --- a/src/Startup.c +++ b/src/Startup.c @@ -61,11 +61,16 @@ void Ell_RegisterBaseEqTypes(cGH *GH) err += Ell_CreateKey(CCTK_VARIABLE_STRING, "EllLinFlat::Bnd"); err += Ell_CreateKey(CCTK_VARIABLE_STRING, - "EllLinFlat::Bnd::Robin"); - err += Ell_CreateKey(CCTK_VARIABLE_STRING, "EllLinConfMetric::Bnd"); err += Ell_CreateKey(CCTK_VARIABLE_STRING, "EllLinMetric::Bnd"); + + err += Ell_CreateKey(CCTK_VARIABLE_STRING, + "EllLinFlat::Bnd::Robin"); + err += Ell_CreateKey(CCTK_VARIABLE_STRING, + "EllLinConfMetric::Bnd::Robin"); + err += Ell_CreateKey(CCTK_VARIABLE_STRING, + "EllLinMetric::Bnd::Robin"); /* Register the variables needed to use these boundaries */ err += Ell_CreateKey(CCTK_VARIABLE_REAL, |