diff options
Diffstat (limited to 'src/ManualTerminationFile.c')
-rw-r--r-- | src/ManualTerminationFile.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/ManualTerminationFile.c b/src/ManualTerminationFile.c new file mode 100644 index 0000000..342ac3f --- /dev/null +++ b/src/ManualTerminationFile.c @@ -0,0 +1,48 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "cctk_Termination.h" +#include "cctk_Timers.h" +#include "ManualTermination.h" + + +int ManualTerminationFile (CCTK_ARGUMENTS) +{ + int retval = 0, terminate; + FILE *terminationfile; + + DECLARE_CCTK_PARAMETERS; + + /* only one processor needs to query the elapsed runtime */ + if (CCTK_MyProc (cctkGH) != 0) + { + return (0); + } + + if ( ((cctkGH->cctk_iteration-1) % check_file_every*1.0e0) != 0) + { + return(0); + } + + terminationfile = fopen(MT_get_terminate_filename(NULL),"r"); + + if(terminationfile!=NULL) + { + terminate=0; + fscanf(terminationfile,"%d",&terminate); + fclose(terminationfile); + + if (terminate==1) + { + CCTK_VInfo (CCTK_THORNSTRING, "OH MY GOD! Found termination signal " + "in termination file! TERMINATION NOW!!!!"); + CCTK_TerminateNext (cctkGH); + } + } + + return (retval); +} |