Modular Megafauna Model 1.1.5
A physiological, dynamic herbivore simulator in C++.
Loading...
Searching...
No Matches
Fauna::GetStarvationIlliusOConnor2000 Class Reference

#include <mortality_factors.h>

Public Member Functions

 GetStarvationIlliusOConnor2000 (const double fat_standard_deviation=.0125, const bool shift_body_condition=true)
 Constructor. More...
 
double operator() (const double body_condition, double &new_body_condition) const
 Get today’s mortality. More...
 

Static Private Member Functions

static double cumulative_normal_distribution (double x)
 Function Φ (phi) More...
 

Private Attributes

const double fat_standard_deviation
 
bool shift_body_condition
 

Detailed Description

Function object to calculate herbivore mortality after Illius & O’Connor (2000) After Illius & O'Connor (2000)[35] :

“Mean body fat is assumed to be normally distributed with standard deviation σ (sigma). Mortality occurs in the proportion of animals in the tail of this distribution that projects below zero.”

Starvation mortality

after Illius & O’Connor (2000). The red area indicates the dying part of the cohort. SD = standard deviation." <H1> Shift Body Condition </H1> \note The following extension to the mortality model is by Wolfgang :w When the herbivores with a “negative body condition” die, the cohort mean would increase. To account for that, the switch <tt>shift_body_condition</tt> can be turned on in the constructor. This will change the body condition <tt>b</tt> to the following new value <tt>b_new</tt>. \iline 101 \iline 102 \_form#70@_fakenl@_fakenl \_form#71 is the fraction that died. <H2> Idea </H2> Body fat of the dying animals is considered zero, even though the normal distribution curve suggests mathematically negative values. But in reality, there is no negative body fat. The total amount of body fat (kg/km²) in the cohort stays the same after starvation death. It gets “redistributed” among the surviving animals. Be \_form#72 the individual density [ind/km²] and \_form#73 the body fat as kg/ind. Then \_form#74 is the fat in kg/km². \_form#75 is the density of the survivors. \iline 121 \iline 122 \_form#76@_fakenl@_fakenl Since all animals of one cohort have the same structural body mass (kg/ind) and fractional maximum body fat, the potential total fat mass (kg/kg) is the same for all individuals. Therefore: \iline 128 \iline 129 \iline 130 \_form#77@_fakenl@_fakenl@_fakenl The two figures below show how the body condition gets shifted after applying mortality. The absolute shift in body condition, \_form#78, has a peak where both starvation mortality and body reserves are relatively high. The curve tapers down towards lower mortality (to the right) as well as towards lower body fat (to the left). The absolute shift is the indicator for the effect of the shift on the population dynamic. Once the fat reserves of the cohort drop below the peak, chances for recovery are lower. @image html starvation_body_condition_shift_abs.png "Absolute change in body condition after removing the dead fraction of the cohort. Standard deviation = 0.125" @image html starvation_body_condition_shift_rel.png "Relative change in body condition after removing the dead fraction of the cohort. Standard deviation = 0.125"

Note
This class only makes sense for herbivore cohorts.

Constructor & Destructor Documentation

◆ GetStarvationIlliusOConnor2000()

GetStarvationIlliusOConnor2000::GetStarvationIlliusOConnor2000 ( const double  fat_standard_deviation = .0125,
const bool  shift_body_condition = true 
)

Constructor.

Parameters
fat_standard_deviationStandard deviation of fat mass in a herbivore cohort as fraction of potential maximum fat mass. The default standard deviation is 12.5%, taken from Illius & O’Connor (2000)[35], who are citing Ledger (1968)[38].
shift_body_conditionWhether to shift body condition up to compensate for dead herbivores (see class documentation).
Exceptions
std::invalid_argumentIf fat_standard_deviation not in interval [0,1].

Member Function Documentation

◆ cumulative_normal_distribution()

double GetStarvationIlliusOConnor2000::cumulative_normal_distribution ( double  x)
staticprivate

Function Φ (phi)

Implementation by John D. Cook: https://www.johndcook.com/blog/cpp_phi/

◆ operator()()

double GetStarvationIlliusOConnor2000::operator() ( const double  body_condition,
double &  new_body_condition 
) const

Get today’s mortality.

Parameters
[in]body_conditionCurrent fat mass divided by potential maximum fat mass [kg/kg].
[out]new_body_conditionUpdated body mean body condition in the cohort after starved individuals are ‘removed’. If shift_body_condition in the constructor is turned off, this equals body_condition without change.
Returns
Fractional [0,1] daily mortality due to starvation.
Exceptions
std::invalid_argumentIf body_condition is not in interval [0,1].

Member Data Documentation

◆ fat_standard_deviation

const double Fauna::GetStarvationIlliusOConnor2000::fat_standard_deviation
private

◆ shift_body_condition

bool Fauna::GetStarvationIlliusOConnor2000::shift_body_condition
private

The documentation for this class was generated from the following files: