From 884f627ed8f8d12b6a48f19a82e4d7f3a4fa178e Mon Sep 17 00:00:00 2001 From: jthorn Date: Tue, 25 Apr 2006 15:05:50 +0000 Subject: detect whether we're in a checkpoint-recover recovery, and if so *append* to BH_diagnostics files rather than truncating them -- thanks to Luca for reporting this bug and pesting us for a fix, to Erik for helpful discussions, and to Steve for a patch which forms the basis for this commit (tweaked to be in AHFinderDirect style) git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@1443 f88db872-0e4f-0410-b76b-b9085cfa78c5 --- interface.ccl | 15 +++++++++++++++ src/driver/BH_diagnostics.cc | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/interface.ccl b/interface.ccl index 4c683c1..707a8de 100644 --- a/interface.ccl +++ b/interface.ccl @@ -10,14 +10,29 @@ USES INCLUDE: SpaceMask.h ################################################################################ +# +# ***** aliased functions used from other thorns ***** +# + # we use an aliased function maybe provided by DriftCorrect SUBROUTINE SetDriftCorrectPosition \ (CCTK_POINTER_TO_CONST IN GH, \ CCTK_REAL IN x, CCTK_REAL IN y, CCTK_REAL IN z) USES FUNCTION SetDriftCorrectPosition +# +# This IOUtil function is used to determine whether the diagnostics file +# should be truncated or appended (as in a recovery run ) +# +CCTK_INT FUNCTION IO_TruncateOutputFiles(CCTK_POINTER_TO_CONST IN GH) +USES FUNCTION IO_TruncateOutputFiles + ################################################################################ +# +# ***** aliased functions provided by this thorn ***** +# + # # This thorn provides an aliased-function interface which other thorns # can use to find out about the horizons. Each function returns a status diff --git a/src/driver/BH_diagnostics.cc b/src/driver/BH_diagnostics.cc index 8cc4bf6..125177c 100644 --- a/src/driver/BH_diagnostics.cc +++ b/src/driver/BH_diagnostics.cc @@ -418,7 +418,11 @@ snprintf(file_name_buffer, IO_info::file_name_buffer_size, "%s/%s.ah%d.%s", directory, IO_info.BH_diagnostics_base_file_name, hn, IO_info.BH_diagnostics_file_name_extension); -FILE *fileptr = fopen(file_name_buffer, "w"); + +const char *const file_open_mode = IO_TruncateOutputFiles(state.cgi.GH) + ? "w" : "a"; + +FILE *fileptr = fopen(file_name_buffer, file_open_mode); if (fileptr == NULL) then CCTK_VWarn(FATAL_ERROR, __LINE__, __FILE__, CCTK_THORNSTRING, "\n" -- cgit v1.2.3