From 39d26a9cf2bf1d18377ada92c0c04b2b86435398 Mon Sep 17 00:00:00 2001 From: Andreas Gattringer <andreas.gattringer@univie.ac.at> Date: Wed, 11 Jan 2023 17:23:12 +0100 Subject: [PATCH] sigmoid vital rate: ensure density dependence correctness for edge cases --- src/cats/vital_rates/hybrid_functions.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cats/vital_rates/hybrid_functions.c b/src/cats/vital_rates/hybrid_functions.c index ceb1968..10615bf 100644 --- a/src/cats/vital_rates/hybrid_functions.c +++ b/src/cats/vital_rates/hybrid_functions.c @@ -143,7 +143,7 @@ sigmoid(const struct cats_vital_rate *rate_info, K = K - K * rate_info->density_ts; assert(N >= 0); assert(K >= 0); - + cats_dt_rates old_rate = rate; switch (rate_info->density) { case DENSITY_DEP_NEGATIVE: @@ -152,10 +152,12 @@ sigmoid(const struct cats_vital_rate *rate_info, if (K == 0) return 0.0; rate = rate * density + (N / K) * rate_at_OT; // was: max_rate * scale; + if (rate > old_rate) rate = old_rate; break; case DENSITY_DEP_POSITIVE: if (K == 0) return 0.0; rate = rate * density + (1.0 - (N / K)) * rate_at_OT; // was: max_rate * scale; + if (rate < old_rate) rate = old_rate; break; case NO_DENSITY_DEP: break; -- GitLab