/*@@ @file CactusDefaultInitialise.c @date Tue Sep 29 12:45:04 1998 @author Tom Goodale @desc Default cactus initialisation routine. @enddesc @@*/ /*#define DEBUG_CCTK*/ #include #include #include "cctk_Flesh.h" #include "cctk_GHExtensions.h" #include "cctk_Bindings.h" #include "cctk_Parameters.h" #include "CactusrfrInterface.h" #include "CactusMainDefaults.h" #include "CactusCommFunctions.h" static char *rcsid = "$Id$"; /* Local function prototypes */ int CactusInitialiseGH(cGH *GH); /*@@ @routine CactusDefaultInitialise @date Tue Sep 29 12:45:04 1998 @author Tom Goodale @desc Default initialisation routine. @enddesc @calls @calledby @history @endhistory @@*/ int CactusDefaultInitialise(tFleshConfig *config) { cGH *GH; int convergence_level; #if 0 CactusResetTimer(config->timer[INITIALISATION]); CactusResetTimer(config->timer[EVOLUTION]); CactusResetTimer(config->timer[ELLIPTIC]); CactusStartTimer(config->timer[INITIALISATION]); #endif convergence_level = 0; while((GH = CCTK_SetupGH(config, convergence_level))) { CCTKi_AddGH(config, convergence_level, GH); CactusInitialiseGH(GH); convergence_level++; }; #if 0 CactusStopTimer(config->timer[INITIALISATION]); #endif return 0; } /*@@ @routine CactusInitialiseGH @date Mon Feb 1 12:13:09 1999 @author Tom Goodale @desc Responsible for initialising a GH. @enddesc @calls @calledby @history @endhistory @@*/ int CactusInitialiseGH(cGH *GH) { DECLARE_CCTK_PARAMETERS int Rstep; /* SetupFortranArrays(GH); */ /* Initialise time */ GH->cctk_time = cctk_initial_time; /* Initialise iteration number */ GH->cctk_iteration = 0; #ifdef DEBUG_CCTK CCTK_PRINTSEPARATOR printf("In Cactus_Initialise\n--------------------\n"); printf(" Initializing GH->cctk_time = %f\n",GH->cctk_time); printf(" Initializing GH->cctk_iteration = %u\n",GH->cctk_iteration); CCTK_PRINTSEPARATOR #endif /* Do the rfr initialisation on this GH */ CCTKi_ScheduleGHInit((void *)GH); /* Initialise all the extensions. */ CCTKi_InitGHExtensions(GH); /* FIXME : PARAM_CHECK SHOULD BE BEFORE HERE */ CCTK_Traverse(GH, "CCTK_PARAMCHECK"); CCTKi_FinaliseParamWarn(); CCTK_Traverse(GH, "CCTK_BASEGRID"); /* Traverse routines setting up initial data */ CCTK_Traverse(GH, "CCTK_INITIAL"); /* Traverse poststep initial routines which should only be done once */ CCTK_Traverse(GH, "CCTK_POSTINITIAL"); /* Traverse recovery and ID checkpoint routines */ CCTK_Traverse(GH, "CCTK_RECOVER_VARIABLES"); CCTK_Traverse(GH, "CCTK_CPINITIAL"); CCTK_Traverse(GH, "CCTK_POSTSTEP"); return 1; USE_CCTK_PARAMETERS }