From 44114cfde5a0bb4868747cd4b4890c474f3a2f09 Mon Sep 17 00:00:00 2001 From: Andreas Gattringer <gattringera@a772-cvl-ws23.biodiv.univie.ac.at> Date: Wed, 28 Jun 2023 14:14:59 +0200 Subject: [PATCH] butterflies: more debug info at start --- src/modules/butterflies/butterflies_actions.c | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/modules/butterflies/butterflies_actions.c b/src/modules/butterflies/butterflies_actions.c index ae86376..223647f 100644 --- a/src/modules/butterflies/butterflies_actions.c +++ b/src/modules/butterflies/butterflies_actions.c @@ -15,10 +15,52 @@ #include "butterflies_overlays.h" #include "butterflies_filenames.h" #include "inline.h" +#include "lambda/leslie_matrix.h" enum action_status bf_action_stats_reset(struct cats_grid *grid, struct cats_configuration *conf) { + // FIXME MOVE + if (conf->time.year_current == conf->time.year_start) { + log_message(LOG_INFO, "SUMMARY: Scale factor: %Lf", grid->param.scale_factor); + struct lambda_parameters l_param = {0}; + l_param.calculate_scale = true; + l_param.suitability = grid->param.OT; + l_param.N = 0; + l_param.K = (cats_dt_population) + (get_vital_rate_maximum(&conf->param[grid->id].carrying_capacity) * conf->param->max_adult_cc_fraction); + l_param.grid = 0; + l_param.row = 0; + l_param.col = 0; + l_param.param = &conf->param[grid->id]; + l_param.species_id = grid->id; + bool print_rate = false; + struct conf_data_butterflies *module_conf = CATS_MODULE_DATA; + cats_dt_rates female_fraction = module_conf->female_fraction; + cats_dt_rates stationary = module_conf->probability_to_stay; + cats_dt_rates mobile = 1.0 - stationary; + cats_dt_rates egg_fraction_source = module_conf->egg_fraction_source; + cats_dt_rates eggs_per_female = calculate_rate_for_matrix(&module_conf->eggs_per_female, &l_param, print_rate); + cats_dt_rates reproduction_rate = calculate_rate_for_matrix(&module_conf->reproduction_rate, &l_param, print_rate); + cats_dt_rates local_eggs = (stationary + mobile * egg_fraction_source ) * eggs_per_female; + // female -> female + // to achieve the target reproduction rate, the number of eggs per female laid in the cell + // that survive and become adult has to be the reproduction rate divided by the female fraction divided by the number of eggs + cats_dt_rates eggs_to_adults_rate = bf_egg_to_adult_survival_rate(reproduction_rate, local_eggs, female_fraction); + cats_dt_rates result = local_eggs * eggs_to_adults_rate * female_fraction; + + + log_message(LOG_INFO, "SUMMARY: reproduction rate at OT: %Lf", reproduction_rate); + log_message(LOG_INFO, "SUMMARY: eggs per female at OT: %Lf", eggs_per_female); + log_message(LOG_INFO, "SUMMARY: local eggs at OT: %Lf", local_eggs); + log_message(LOG_INFO, "SUMMARY: stationary females at OT: %Lf", stationary); + log_message(LOG_INFO, "SUMMARY: eggs to adult rate at OT: %Lf", eggs_to_adults_rate); + log_message(LOG_INFO, "SUMMARY: egg fraction source at OT: %Lf", egg_fraction_source); + log_message(LOG_INFO, "SUMMARY: carrying capacity at OT: %d", l_param.K); + log_message(LOG_INFO, "SUMMARY: effective female to female rate at OT: %Lf\n", result); + + } + return action_grid_stats_reset(grid, conf); } -- GitLab