From 4bcc97f7dde003e2e5bf57342ccbce616f52fa16 Mon Sep 17 00:00:00 2001
From: Andreas Gattringer <andreas.gattringer@univie.ac.at>
Date: Mon, 3 Jul 2023 23:01:50 +0200
Subject: [PATCH] clean up log messages and module loading output

---
 src/cats/actions/setup_actions.c                       |  2 +-
 src/cats/cats.c                                        |  8 ++++----
 .../configuration/load_configuration_species_params.c  |  3 ++-
 src/cats/configuration/print_configuration.c           |  3 +++
 src/cats/grids/gdal_helper.c                           |  2 +-
 src/cats/lambda/leslie_matrix.c                        | 10 ++++++++--
 src/cats/modules/load_module.c                         |  2 +-
 7 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/cats/actions/setup_actions.c b/src/cats/actions/setup_actions.c
index 1c03f48..cbb02e1 100644
--- a/src/cats/actions/setup_actions.c
+++ b/src/cats/actions/setup_actions.c
@@ -160,7 +160,7 @@ append_action(struct cats_configuration *conf, action_function action, enum cats
 
 void list_actions_full(struct cats_configuration *conf)
 {
-        log_message(LOG_INFO, "Action functions: %d", conf->action_functions.count);
+        log_message(LOG_INFO, "Number of registered action functions: %d", conf->action_functions.count);
         for (int32_t i = 0; i < conf->action_functions.count; i++) {
                 log_message(LOG_INFO, "%d: %s %p ", i, conf->action_functions.names[i],
                             conf->action_functions.functions[i]);
diff --git a/src/cats/cats.c b/src/cats/cats.c
index c3950e5..3542168 100644
--- a/src/cats/cats.c
+++ b/src/cats/cats.c
@@ -130,8 +130,8 @@ void load_modules(struct cats_configuration *conf)
 {
         for (int32_t i = 0; i < conf->modules.found_count; i++) {
                 int32_t id = load_module(conf, &conf->modules.module[i]);
-                printf("%s: %d/%d-> %d (%d)\n", conf->modules.module[i].name, i, conf->modules.count, id,
-                       conf->modules.module[i].flags);
+                log_message(LOG_IMPORTANT, "Loaded module %d of %d: '%s' with id %d and flags %d",
+                            i + 1, conf->modules.count, conf->modules.module[i].name, id, conf->modules.module[i].flags);
         }
 
         for (int32_t i = 0; i < conf->param_count; i++) {
@@ -162,8 +162,8 @@ void load_modules(struct cats_configuration *conf)
 
                         }
 
+                        log_message(LOG_INFO, "%s: Loading vital rate functions for module id %d", __func__, j);
 
-                                printf("%s: %d\n", __func__, j);
                                 if (p->module_data[j].load_species_param_function) {
                                         p->module_data[j].load_species_param_function(conf, conf->ini, p->species_config_section, p);
                                 }
@@ -189,7 +189,7 @@ struct cats_configuration *load_main_configuration(const struct program_options
         load_modules(conf);
         setup_module_directories(conf);
 
-        print_modules(conf);
+
         setup_simulation_actions(conf);
         // which values of the configuration file did we ignore?
         return conf;
diff --git a/src/cats/configuration/load_configuration_species_params.c b/src/cats/configuration/load_configuration_species_params.c
index 6480603..7dd39c2 100644
--- a/src/cats/configuration/load_configuration_species_params.c
+++ b/src/cats/configuration/load_configuration_species_params.c
@@ -102,7 +102,8 @@ void load_conf_vital_rate(struct cats_vital_rate *vr, struct cats_configuration
         char *vital_rate_maximum = compound_string(vr_name, "maximum", " ");
 
         bool req = !vr->preset.have_maximum;
-        printf("%s: %s required %d\n", __func__, vr->name, req);
+        log_message(LOG_INFO, "%s: Loading vital rate '%s' (required: %d)", __func__, vr->name, req);
+
         if (vr == &p->carrying_capacity) req = true;
         bool have_max = load_conf_value(req, ini, species_section, vital_rate_maximum, &vr->max_rate);
         if (vr->is_integer_quantity) {
diff --git a/src/cats/configuration/print_configuration.c b/src/cats/configuration/print_configuration.c
index e257a4d..3544414 100644
--- a/src/cats/configuration/print_configuration.c
+++ b/src/cats/configuration/print_configuration.c
@@ -32,6 +32,7 @@
 #include "preset.h"
 #include "inline_vital_rates.h"
 #include "dispersal/dispersal.h"
+#include "modules/load_module.h"
 
 const char *get_dispersal_name(enum dispersal_type type);
 
@@ -204,6 +205,8 @@ void print_config_summary(struct cats_configuration *conf)
         printf("%s\n", TEXT_DIVIDER);
         print_environment_sets(conf);
         printf("%s\n", TEXT_DIVIDER);
+        print_modules(conf);
+        printf("%s\n", TEXT_DIVIDER);
 }
 
 
diff --git a/src/cats/grids/gdal_helper.c b/src/cats/grids/gdal_helper.c
index f0640ce..4a924ab 100644
--- a/src/cats/grids/gdal_helper.c
+++ b/src/cats/grids/gdal_helper.c
@@ -166,7 +166,7 @@ void verify_raster_geometry(GDALDatasetH dataset, struct simulation_geometry *ge
 
         char *projection = (char *) GDALGetProjectionRef(dataset);
         if (geometry->projection_string == NULL || strlen(geometry->projection_string) == 0) {
-                log_message(LOG_WARNING, "GEOM: global projection string not set, ignoring projection '%s", projection);
+                log_message(LOG_INFO, "GEOM: global projection string not set, ignoring projection '%s'", projection);
         } else {
                 if (strcmp(projection, geometry->projection_string) != 0) {
                         enum cats_log_level ll;
diff --git a/src/cats/lambda/leslie_matrix.c b/src/cats/lambda/leslie_matrix.c
index 9f047a6..dbc005b 100644
--- a/src/cats/lambda/leslie_matrix.c
+++ b/src/cats/lambda/leslie_matrix.c
@@ -60,8 +60,14 @@ calculate_rate_for_matrix(struct cats_vital_rate *rate,
         cats_dt_rates value = calculate_rate(rate, N, param, l_param->grid, l_param->row, l_param->col, &override);
 
         if (print) {
-                log_message(LOG_INFO, "%s: %Lf (maximum %Lf) for population %Lf/%Lf",
-                            rate->name, value, rate->max_rate, N, K);
+                if (param->parametrization == PARAM_HYBRID) {
+                        log_message(LOG_INFO, "%s: %Lf (maximum %Lf) for population %Lf/%Lf at suitability %Lf",
+                                    rate->name, value, rate->max_rate, N, K, l_param->suitability);
+                } else {
+                        log_message(LOG_INFO, "%s: %Lf (maximum %Lf) for population %Lf/%Lf",
+                                    rate->name, value, rate->max_rate, N, K);
+                }
+
         }
 
         return value;
diff --git a/src/cats/modules/load_module.c b/src/cats/modules/load_module.c
index f1960ba..0b8a734 100644
--- a/src/cats/modules/load_module.c
+++ b/src/cats/modules/load_module.c
@@ -149,7 +149,7 @@ void register_load_species_param_config_func(struct cats_configuration *conf, ca
 void register_create_leslie_matrix_func(struct cats_configuration *conf, cats_leslie_matrix_func func)
 {
         conf->modules.module[CATS_MODULE_ID].create_leslie_matrix = func;
-        printf("LESLIE MATRIX FUNC: %p\n", conf->modules.module[CATS_MODULE_ID].create_leslie_matrix);
+        log_message(LOG_INFO, "Using leslie matrix function at address %p", conf->modules.module[CATS_MODULE_ID].create_leslie_matrix);
 }
 
 
-- 
GitLab