Modular Megafauna Model 1.1.5
A physiological, dynamic herbivore simulator in C++.
Loading...
Searching...
No Matches
expenditure_components.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2020 W. Traylor <wolfgang.traylor@senckenberg.de>
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
11#ifndef FAUNA_EXPENDITURE_COMPONENTS_H
12#define FAUNA_EXPENDITURE_COMPONENTS_H
13
14#include <assert.h>
15#include <cmath>
16#include <stdexcept>
17
18namespace Fauna {
20
32inline double get_expenditure_taylor_1981(const double current_bodymass,
33 const double adult_bodymass) {
34 return 0.4 * current_bodymass * pow(adult_bodymass, -0.27);
35}
36
38
54inline double get_expenditure_zhu_et_al_2018(const double bodymass,
55 const double ambient_temperature) {
56 if (bodymass <= 0)
57 throw std::invalid_argument(
58 "Fauna::get_expenditure_zhu_et_al_2018() "
59 "Parameter `bodymass` is <=0.");
60 const double k1 = 0.0079;
61 const double k2 = 0.36;
62 return k2 / (exp(k1 * ambient_temperature)) * pow(bodymass, 0.75);
63}
64
66inline double watts_to_MJ_per_day(const double W) {
67 return W * 24 * 3600 * 10e-6;
68}
69
72
84inline double get_conductance_bradley_deavers_1980(const double bodymass) {
85 if (bodymass <= 0.0)
86 throw std::invalid_argument(
87 "Fauna::get_conductance_bradley_deavers_1980() "
88 "Parameter `bodymass` is <=0.");
89 return 0.224 * pow(bodymass, 0.574);
90}
91
93enum class FurSeason {
95 Summer,
97 Winter
98};
99
101
136inline double get_conductance_cuyler_oeritsland_2004(const double bodymass,
137 const FurSeason season) {
138 if (bodymass <= 0.0)
139 throw std::invalid_argument(
140 "Fauna::get_conductance_cuyler_oeritsland_2004() "
141 "Parameter `bodymass` is <=0.");
142 assert((season == FurSeason::Summer) || (season == FurSeason::Winter));
143 if (season == FurSeason::Summer)
144 return 0.29 * pow(bodymass, 0.57);
145 else // Winter:
146 return 0.08 * pow(bodymass, 0.57);
147}
148
150
163double get_thermoregulatory_expenditure(const double thermoneutral_rate,
164 const double conductance,
165 const double core_temperature,
166 const double ambient_temperature);
167} // namespace Fauna
168
169#endif // FAUNA_EXPENDITURE_COMPONENTS_H
Definition: average.h:16
FurSeason
Selector for winter or summer pelt.
Definition: expenditure_components.h:93
@ Summer
Summer fur.
@ Winter
Winter fur.
double get_expenditure_zhu_et_al_2018(const double bodymass, const double ambient_temperature)
Daily expenditure by Zhu et al (2018) .
Definition: expenditure_components.h:54
double get_thermoregulatory_expenditure(const double thermoneutral_rate, const double conductance, const double core_temperature, const double ambient_temperature)
Calculate additional energy requirements to keep body temperature.
Definition: expenditure_components.cpp:14
double get_expenditure_taylor_1981(const double current_bodymass, const double adult_bodymass)
Energy expenditure [MJ/ind/day] based on cattle from Taylor et al. (1981)
Definition: expenditure_components.h:32
double get_conductance_cuyler_oeritsland_2004(const double bodymass, const FurSeason season)
Extrapolate conductance from reindeer fur.
Definition: expenditure_components.h:136
double get_conductance_bradley_deavers_1980(const double bodymass)
Definition: expenditure_components.h:84
double watts_to_MJ_per_day(const double W)
Convert Watts (=J/s) to MJ/day.
Definition: expenditure_components.h:66