aboutsummaryrefslogtreecommitdiff
path: root/src/ManualTerminationFile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ManualTerminationFile.c')
-rw-r--r--src/ManualTerminationFile.c48
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);
+}