aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorallen <allen@57bc7290-fb3d-4efd-a9b1-28e84cce6043>2002-01-03 20:55:02 +0000
committerallen <allen@57bc7290-fb3d-4efd-a9b1-28e84cce6043>2002-01-03 20:55:02 +0000
commitf6ec2a15cadc570bb4f2fa0980f9cd838c0c553d (patch)
treeacc4e19497fb932a2cfe734a15eb285b1c6f6a17
parentd7003aadbb261388d6e238fca9fcd163ebd00fb5 (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.ccl4
-rw-r--r--src/Ell_DBstructure.c255
-rw-r--r--src/Ell_Interface.c14
-rw-r--r--src/Ell_Register.c53
-rw-r--r--src/Startup.c9
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,