From 1c00c6ce68240415d449fd8d295428ccea1c5a06 Mon Sep 17 00:00:00 2001
From: Andreas Gattringer <andreas.gattringer@univie.ac.at>
Date: Wed, 21 Dec 2022 11:55:27 +0100
Subject: [PATCH] flush summary file after writing

---
 src/cats/configuration/configuration.c      | 1 +
 src/cats/configuration/load_configuration.c | 5 +++--
 src/cats/grids/cats_grid.c                  | 5 ++++-
 src/cats/grids/gdal_save.c                  | 5 ++++-
 src/cats/stats/global_stats.c               | 5 ++++-
 5 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/cats/configuration/configuration.c b/src/cats/configuration/configuration.c
index 3417514..87dd53d 100644
--- a/src/cats/configuration/configuration.c
+++ b/src/cats/configuration/configuration.c
@@ -218,6 +218,7 @@ void cleanup_configuration(struct cats_configuration **conf_orig)
         // THIS HAS TO BE THE FIRST ENTRY
         cleanup_module_registry(&conf->modules);
         if (conf->summary_file) {
+                fflush(conf->summary_file);
                 fclose(conf->summary_file);
                 free(conf->summary_file_name);
         }
diff --git a/src/cats/configuration/load_configuration.c b/src/cats/configuration/load_configuration.c
index 8cb7da8..48ca3d7 100644
--- a/src/cats/configuration/load_configuration.c
+++ b/src/cats/configuration/load_configuration.c
@@ -73,8 +73,9 @@ load_configuration_from_file(const char *filename, const struct program_options
         if (conf->summary_file_name) {
                 conf->summary_file = fopen(conf->summary_file_name, "w");
                 ENSURE_FILE_OPENED(conf->summary_file, conf->summary_file_name)
-                fprintf(conf->summary_file, "type,path,year\n");
-                if (conf->log_file_name) fprintf(conf->summary_file, "log,%s,\n",conf->log_file_name);
+                fprintf(conf->summary_file, "run.name,replicate,file.type,file.name,year\n");
+                if (conf->log_file_name) fprintf(conf->summary_file, "%s,%d,log,%s,NA\n", conf->run_name, conf->simulation.replicate, conf->log_file_name);
+                fflush(conf->summary_file);
         }
 #ifdef USEMPI
         mpi_setup(conf);
diff --git a/src/cats/grids/cats_grid.c b/src/cats/grids/cats_grid.c
index 8f71679..3960f6e 100644
--- a/src/cats/grids/cats_grid.c
+++ b/src/cats/grids/cats_grid.c
@@ -343,7 +343,10 @@ void initialize_grid_stats(struct cats_grid *grid, struct cats_configuration *co
         remove(filename);
         grid->stats.file = fopen(filename, "a+");
         ENSURE_FILE_OPENED(grid->stats.file, filename)
-        if (conf->summary_file) fprintf(conf->summary_file, "grid-stats,%s,\n",filename);
+        if (conf->summary_file) {
+                fprintf(conf->summary_file, "%s,%d,grid-stats,%s,NA\n", conf->run_name, conf->simulation.replicate, filename);
+                fflush(conf->summary_file);
+        }
         free(filename);
         write_grid_stats(conf, grid, true);
         fflush(grid->stats.file);
diff --git a/src/cats/grids/gdal_save.c b/src/cats/grids/gdal_save.c
index e86cd34..3166e56 100644
--- a/src/cats/grids/gdal_save.c
+++ b/src/cats/grids/gdal_save.c
@@ -70,7 +70,10 @@ void *save_population_to_gdal(struct cats_grid *grid, struct cats_configuration
                         (cats_dt_population) get_vital_rate_maximum(&grid->param.carrying_capacity));
                 fflush(stderr);
         }
-        if (conf->summary_file) fprintf(conf->summary_file, "population,%s,%d\n",filename, conf->time.year_current);
+        if (conf->summary_file){
+                fprintf(conf->summary_file, "%s,%d,population,%s,%d\n",conf->run_name, conf->simulation.replicate, filename, conf->time.year_current);
+                fflush(conf->summary_file);
+        }
 
         free(filename);
         return 0;
diff --git a/src/cats/stats/global_stats.c b/src/cats/stats/global_stats.c
index 5e26d55..2bcaa50 100644
--- a/src/cats/stats/global_stats.c
+++ b/src/cats/stats/global_stats.c
@@ -49,7 +49,10 @@ void initialize_global_stats(struct cats_configuration *conf)
 
         conf->statsfile_global = fopen(filename, "a+");
         ENSURE_FILE_OPENED(conf->statsfile_global, filename)
-        if (conf->summary_file) fprintf(conf->summary_file, "global-stats,%s,\n",filename);
+        if (conf->summary_file) {
+                fprintf(conf->summary_file, "%s,%d,global-stats,%s,NA\n",conf->run_name, conf->simulation.replicate,filename);
+                fflush(conf->summary_file);
+        }
 
 
         write_global_stats(conf, NULL, true);
-- 
GitLab