diff options
Diffstat (limited to 'src/Output.c')
-rw-r--r-- | src/Output.c | 77 |
1 files changed, 50 insertions, 27 deletions
diff --git a/src/Output.c b/src/Output.c index aca20e9..58b29bb 100644 --- a/src/Output.c +++ b/src/Output.c @@ -14,6 +14,7 @@ #include "cctk.h" #include "cctk_Parameters.h" +#include "util_String.h" #include "ioStreamedHDF5GH.h" /* the rcs ID and its dummy function to use it */ @@ -163,15 +164,15 @@ int IOStreamedHDF5_TimeFor (const cGH *GH, int vindex) { int retval; char *fullname; - ioStreamedHDF5GH *myGH; + const ioStreamedHDF5GH *myGH; CheckSteerableParameters (GH); /* check if this variable should be output */ - myGH = (ioStreamedHDF5GH *) CCTK_GHExtension (GH, "IOStreamedHDF5"); - retval = myGH->out_every > 0 && myGH->requests[vindex] && - GH->cctk_iteration % myGH->out_every == 0; + myGH = (const ioStreamedHDF5GH *) CCTK_GHExtension (GH, "IOStreamedHDF5"); + retval = myGH->requests[vindex] && myGH->requests[vindex]->out_every > 0 && + GH->cctk_iteration % myGH->requests[vindex]->out_every == 0; if (retval) { /* check if variable was not already output this iteration */ @@ -274,45 +275,67 @@ int IOStreamedHDF5_TriggerOutput (const cGH *GH, int vindex) @@*/ static void CheckSteerableParameters (const cGH *GH) { - int times_set; + int i; ioStreamedHDF5GH *myGH; - static int out_vars_lastset = -1, user_was_warned = 0; + char *fullname, *msg; DECLARE_CCTK_PARAMETERS + /* how often to output */ myGH = (ioStreamedHDF5GH *) CCTK_GHExtension (GH, "IOStreamedHDF5"); + i = myGH->out_every_default; + myGH->out_every_default = out_every >= 0 ? out_every : io_out_every; - /* how often to output */ - if (out_every >= 0 || outHDF5_every >= 0) + /* report if frequency changed */ + if (myGH->out_every_default != i && ! CCTK_Equals (verbose, "none")) { - if (out_every < 0) + if (myGH->out_every_default > 0) { - if (! user_was_warned) - { - CCTK_WARN (1, "Parameter 'IOStreamedHDF5::outHDF5_every is depricated " - "in BETA12, please use 'IOStreamedHDF5::out_every' " - "instead"); - user_was_warned = 1; - } - myGH->out_every = outHDF5_every; + CCTK_VInfo (CCTK_THORNSTRING, "IOStreamedHDF5: Periodic output every %d " + "iterations", myGH->out_every_default); } else { - myGH->out_every = out_every; + CCTK_INFO ("IOStreamedHDF5: Periodic output turned off"); } } - else - { - myGH->out_every = io_out_every; - } /* re-parse the 'IOStreamedHDF5::out_vars' parameter if it was changed */ - times_set = CCTK_ParameterQueryTimesSet ("out_vars", CCTK_THORNSTRING); - if (times_set != out_vars_lastset) + if (strcmp (out_vars, myGH->out_vars) || myGH->out_every_default != i) { - IOUtil_ParseVarsForOutput (GH, out_vars, myGH->requests); + IOUtil_ParseVarsForOutput (GH, CCTK_THORNSTRING, "IOStreamedHDF5::out_vars", + out_vars, myGH->out_every_default, + myGH->requests); + + if (myGH->out_every_default == i || ! CCTK_Equals (verbose, "none")) + { + msg = NULL; + for (i = CCTK_NumVars () - 1; i >= 0; i--) + { + if (myGH->requests[i]) + { + fullname = CCTK_FullName (i); + if (! msg) + { + Util_asprintf (&msg, "IOStreamedHDF5: Periodic output requested " + "for '%s'", fullname); + } + else + { + Util_asprintf (&msg, "%s, '%s'", msg, fullname); + } + free (fullname); + } + } + if (msg) + { + CCTK_INFO (msg); + free (msg); + } + } - /* Save the last setting of 'out_vars' parameter */ - out_vars_lastset = times_set; + /* save the last setting of 'IOStreamedHDF5::out_vars' parameter */ + free (myGH->out_vars); + myGH->out_vars = strdup (out_vars); } } |