diff options
Diffstat (limited to 'src/Startup.c')
-rw-r--r-- | src/Startup.c | 147 |
1 files changed, 129 insertions, 18 deletions
diff --git a/src/Startup.c b/src/Startup.c index 6ec32df..722f4bb 100644 --- a/src/Startup.c +++ b/src/Startup.c @@ -11,26 +11,32 @@ #include <stdlib.h> #include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "util_Table.h" + +#include "CoordBase.h" #include "Symmetry.h" /* the rcs ID and its dummy function to use it */ static const char *rcsid = "$Header$"; -CCTK_FILEVERSION(CactusBase_CartGrid3D_Startup_c) +CCTK_FILEVERSION(CactusBase_CartGrid3D_Startup_c); /******************************************************************** - ******************** External Routines ************************ + ******************** External Prototypes ********************** ********************************************************************/ void SymmetryStartup (void); -int RegisterCartGrid3DCoords (void); - +int RegisterCartGrid3DCoords (CCTK_ARGUMENTS); /******************************************************************** - ******************** Internal Routines ************************ + ******************** Internal Prototypes ********************** ********************************************************************/ static void *SetupGH (tFleshConfig *config, int convlevel, cGH *GH); - +/******************************************************************** + ******************** External Routines ************************ + ********************************************************************/ /*@@ @routine SymmetryStartup @date Mon Mar 15 15:49:16 1999 @@ -41,6 +47,10 @@ static void *SetupGH (tFleshConfig *config, int convlevel, cGH *GH); @enddesc @calls CCTK_RegisterGHExtension CCTK_RegisterGHExtensionSetupGH + @history + @endhistory + + @returntype void @@*/ void SymmetryStartup (void) { @@ -53,8 +63,10 @@ void SymmetryStartup (void) @routine RegisterCartGrid3DCoords @date @author Gabrielle Allen - @desc - Routine registers the coordinates provided by CartGrid3D + @desc + Routine registers the coordinates provided by + CartGrid3D, using both the new and old APIs. The old + CCTK_ API is deprecated. @enddesc @calls CCTK_CoordRegisterSystem CCTK_CoordRegisterData @@ -64,37 +76,136 @@ void SymmetryStartup (void) 0 for success, or negative in case of errors @endreturndesc @@*/ -int RegisterCartGrid3DCoords (void) +int RegisterCartGrid3DCoords (CCTK_ARGUMENTS) { - int nerrors; + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + int ierr, coord_system_handle, retval; + retval = 0; + + /* Register coordinate systems */ + ierr = Coord_SystemRegister(cctkGH, 3, "cart3d"); + ierr += Coord_SystemRegister(cctkGH, 2, "cart2d"); + ierr += Coord_SystemRegister(cctkGH, 1, "cart1d"); + if (ierr < 0) + { + CCTK_WARN(0, "Error registering cartnd coordinate systems"); + retval = ierr; + } + else + { + + /* Register coordinates for cart3d */ + coord_system_handle = Coord_SystemHandle(cctkGH, "cart3d"); + if (coord_system_handle<0) + { + CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, + "Error obtaining system handle for cart3d"); + } + ierr = Coord_CoordRegister(cctkGH, coord_system_handle, 1, "x"); + ierr += Coord_CoordRegister(cctkGH, coord_system_handle, 2, "y"); + ierr += Coord_CoordRegister(cctkGH, coord_system_handle, 3, "z"); + if (ierr < 0) + { + CCTK_WARN(0, "Error registering cart3d coordinates"); + retval += ierr; + } + + /* Fill out rest of coordinate system table for cart3d */ + ierr = Util_TableSetString(coord_system_handle, "uniform", "TYPE"); + if (ierr < 0) + { + CCTK_WARN(1, "Error registering cart3d type"); + retval += ierr; + } + + /* Register coordinates for cart2d */ + coord_system_handle = Coord_SystemHandle(cctkGH, "cart2d"); + if (coord_system_handle<0) + { + CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, + "Error obtaining system handle for cart2d"); + } + ierr = Coord_CoordRegister(cctkGH, coord_system_handle, 1, "x"); + ierr += Coord_CoordRegister(cctkGH, coord_system_handle, 2, "y"); + if (ierr < 0) + { + CCTK_WARN(0, "Error registering cart2d coordinates"); + retval += ierr; + } + + /* Fill out rest of coordinate system table for cart2d */ + ierr = Util_TableSetString(coord_system_handle, "uniform", "TYPE"); + if (ierr < 0) + { + CCTK_WARN(1, "Error registering cart2d type"); + retval += ierr; + } + + /* Register coordinate for cart1d */ + coord_system_handle = Coord_SystemHandle(cctkGH, "cart1d"); + if (coord_system_handle<0) + { + CCTK_VWarn(0,__LINE__,__FILE__,CCTK_THORNSTRING, + "Error obtaining system handle for cart1d"); + } + ierr = Coord_CoordRegister(cctkGH, coord_system_handle, 1, "x"); + if (ierr < 0) + { + CCTK_WARN(0, "Error registering cart1d coordinate"); + retval += ierr; + } + + /* Fill out rest of coordinate system table for cart1d */ + ierr = Util_TableSetString(coord_system_handle, "uniform", "TYPE"); + if (ierr < 0) + { + CCTK_WARN(1, "Error registering cart1d type"); + retval += ierr; + } + + /* Register cartnd as the default coordinate systems */ + if (register_default_coordinate_systems) + { + ierr = Coord_SetDefaultSystem(cctkGH, "cart3d"); + ierr += Coord_SetDefaultSystem(cctkGH, "cart2d"); + ierr += Coord_SetDefaultSystem(cctkGH, "cart1d"); + if (ierr < 0) + { + CCTK_WARN(1, "Error registering cartnd as default coordinate systems"); + retval += ierr; + } + } + } - nerrors = 0; - CCTK_CoordRegisterSystem (3, "cart3d"); - CCTK_CoordRegisterSystem (3, "spher3d"); + /* Register coordinates under the old API */ + retval += CCTK_CoordRegisterSystem(3,"cart3d"); + retval += CCTK_CoordRegisterSystem(3,"spher3d"); if (CCTK_CoordRegisterData (1, "grid::x", "x", "cart3d") < 0) { CCTK_WARN (1, "Problem with registering coordinate x"); - nerrors--; + retval--; } if (CCTK_CoordRegisterData (2, "grid::y", "y", "cart3d") < 0) { CCTK_WARN (1, "Problem with registering coordinate y"); - nerrors--; + retval--; } if (CCTK_CoordRegisterData (3, "grid::z", "z", "cart3d") < 0) { CCTK_WARN (1, "Problem with registering coordinate z"); - nerrors--; + retval--; } if (CCTK_CoordRegisterData (1, "grid::r", "r", "spher3d") < 0) { CCTK_WARN (1, "Problem with registering coordinate r"); - nerrors--; + retval--; } - return (nerrors); + return retval; } |