#include #include #include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" #include "util_String.h" static void callback (int idx, const char * optstring, void * callback_arg); /** Ensure that all HydroBase initial data that are supposed to be read from a file are actually scheduled for the file reader. */ void HydroBase_ParamCheck (CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; const struct { const char * paramname; const char * paramvalue; const char * varname; } vars_to_read[] = { {"initial_hydro", initial_hydro, "HydroBase::rho"}, {"initial_hydro", initial_hydro, "HydroBase::vel[0]"}, {"initial_hydro", initial_hydro, "HydroBase::vel[1]"}, {"initial_hydro", initial_hydro, "HydroBase::vel[2]"}, {"initial_hydro", initial_hydro, "HydroBase::eps"}, {"initial_hydro", initial_hydro, "HydroBase::press"}, {"initial_Aphi", initial_Aphi, "HydroBase::Aphi"}, {"initial_Avec", initial_Avec, "HydroBase::Avec[0]"}, {"initial_Avec", initial_Avec, "HydroBase::Avec[1]"}, {"initial_Avec", initial_Avec, "HydroBase::Avec[2]"}, {"initial_Bvec", initial_Bvec, "HydroBase::Bvec[0]"}, {"initial_Bvec", initial_Bvec, "HydroBase::Bvec[1]"}, {"initial_Bvec", initial_Bvec, "HydroBase::Bvec[2]"}, {"initial_Y_e", initial_Y_e, "HydroBase::Y_e"}, {"initial_temperature", initial_temperature, "HydroBase::temperature"}, {"initial_entropy", initial_entropy, "HydroBase::entropy"}, }; char *variable_is_read = malloc (CCTK_NumVars()); assert (variable_is_read); for (int i=0; i= 0); for (size_t i=0; i= 0); if (! variable_is_read[ivar]) { char * msg; size_t written = Util_asprintf(&msg, "'%s' is initialised using the file reader by '%s', but has not been scheduled to be read. Please set the parameter \"IO::filereader_ID_vars\" accordingly.", vars_to_read[i].varname, vars_to_read[i].paramname); assert(written > 0); CCTK_PARAMWARN (msg); free(msg); } } } free (variable_is_read); } /** Mark a variable as to be read from the file reader. */ static void callback (int idx, const char * optstring, void * callback_arg) { assert (idx>=0 && idx