All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog by Olivier Lacan, and this project adheres to Semantic Versioning.
1.1.6 - 2023-10-27
- Updated Catch test framework to version 2.13.10
1.1.5 - 2022-11-30
- Floating point rounding error in
Fauna::GetForageDemands::add_eaten()
- Fix wrong ORCID in
CITATION.cff
andcodemeta.json
1.1.4 - 2022-07-01
- Error
initial_fatmass > maximum_fatmass
#35 - Nitrogen mass was not considered in
Fauna::ForageBase::merge_base()
.
1.1.3 - 2021-12-14
- Option to reset date in
Fauna::World
- e.g. to start simulation from the beginning in the next location/gridcell
- Move quickstart guide from Doxygen docs to
README.md
#52 - Update PlantUML from 1.2019.09 to 1.2021.15
- Restore library interface for backward compatibility:
Fauna::World::World()
andFauna::World::is_activated()
- Exception if started without HFTs
- Now HFT table files won’t be created if there are no HFTs defined.
- Too low digestibility values in output, due to wrong weights in aggregation.
- CI doxygen generation failing with error "sh: 1: /usr/sbin/dot: not found".
dot
is now disabled.
1.1.2 - 2021-07-27
demo_results.Rmd
now only tries to plot those files that are available #39
- Allow
simulation.one_hft_per_habitat
only forherbivore_type = "Cohort"
- Issue that only one HFT got created and outputted if
simulation.one_hft_per_habitat = true
1.1.1 - 2021-07-26
- Implement
simulation.one_hft_per_habitat
option
1.1.0 - 2021-06-15
- Code coverage badge with codecov.io
- Software metadata in codemeta format
- Add parameter sanity checks: mortality must not exceed reproduction; expenditure must not exceed intake #45
- New text table output:
individual_density
andbody_fat
#43 - The parameter
hft.breeding_season.start
can now take a month name (alternative to the Julian day).
- Rename output file
mass_density_per_hft
tomass_density
#44
- When configuring CMake with
BUILD_DEMO_SIMULATOR=ON
butBUILD_TESTING=OFF
, themegafauna.toml
instruction file was not copied even thoughrun_demo
needs it. - Valgrind memory check in CI didn’t fail
- Doxygen issues with ReadTheDocs #34 #41 [#42]
1.0.3 - 2021-05-10
- Anabolism efficiency was forced to be lower than catabolism efficiency, but for no apparent reason.
1.0.2 - 2021-05-05
- Increase demo simulation years so we can see some population ups and downs.
- The unit tests were broken after the last release.
- cpptoml wouldn’t compile with latest
g++
(11.1.0).
1.0.1 - 2021-04-29
DigestiveLimit::FixedFraction
scaled likeDigestiveLimit::Allometric
. Fixed fraction is now fixed and not scaling. As a result, the newborns of the example herbivore (example.toml
) now die if their intake is set to a fixed fraction. Therefore the example uses the allometric limit.- The exponent of
Hft::digestion_allometric
was wrong. It was set to the exponent ofHft::expenditure_basal_rate
, but it must be 1 minus that because the digestion-limited intake is relative to body mass. - If
DigestiveLimit::Allometric
was used, the calculated intake rates were far too low because the fraction was not multiplied with body mass.
- Check code format in continuous integration.
1.0.0 - 2021-04-26
- R scripts and LibreOffice document to reproduce figures in
docs/images/
. #31 - Minor additions to docs.
- Integration for readthedocs.org
- CI check for Git tag matching version in CMakeLists.txt
- Use sward density for
Fauna::HalfMaxIntake
(instead of whole-habitat grass density). This requires the vegetation model to provide correct “FPC” values (fractional area covered by grass in the habitat). #12 - Use modern
rmarkdown
package to render demo results.
- Demo simulator has now monthly ambient air temperature.
- Replace copyrighted figure
docs/images/thermoregulation.png
with my own. #32
- Snow depth. It is not used anywhere. #14
0.6.0 - 2021-04-08
- Invitation to Matrix room in README.
- Add licensing information. #22
- Nitrogen retention by herbivores. The function
Habitat::add_excreted_nitrogen()
has been removed. The vegetation model must now handle recycling of nitrogen itself. This simplifies the code and reduces the number of parameters. Compare #15
0.5.5 - 2020-08-04
0.5.4 - 2020-08-03
- Misleading error message if TOML parameter has wrong type. #25
- Group parameter
expenditure.components
cannot be re-used. #28 - No error if an HFT group is defined twice. [#27]
- No instruction file check that catabolism must be smaller than anabolism coefficient. #26
0.5.3 - 2020-06-05
- Crash when reading instruction file without parameter
hft.digestion.i_g_1992_ijk
.
- Single values in TOML file can be parsed like a single-element array.
0.5.2 - 2020-06-02
- Crash if not all HFTs were established immediately at the start of the start of the simulation.
0.5.1 - 2020-05-29
- Executable
megafauna_insfile_linter
for checking if a TOML instruction file is valid.
- Herbivores are now only established if the
do_herbivores==true
flag is passed into MMM. - Parameter
hft.digestion.i_g_1992_ijk
is not mandatory anymore. - Fix compiling errors under GCC 10.1.0 about not finding
std
exception.
0.5.0 - 2020-04-10
- Revised and expanded Doxygen page on model description/discussion.
- Parameter
hft.expenditure.fmr_multiplier
. #9
- Output
eaten_nitrogen_per_ind
is now in milligram, not kilogram, per day and individual. - Remove
Fauna::Parameters
from the library’s include interface. - The Doxygen documentation of the library’s include interface can be parsed without errors.
- Reproductive success at parturition is now based on body condition at day of conception. #10
- Scale maximum daily intake (DMI) allometrically from fraction of adult mass. #8
- Parameter
hft.digestion.allometric.coefficient
changed to.value_male_adult
.
- Parameter
- Expenditure component
Allometric
is nowBasalMetabolicRate
andFieldMetabolicRate
. #9- Parameter
hft.expenditure.allometric
changed to.basal_rate
.
- Parameter
- Individual mode. #7
0.4.0 - 2020-03-27
- New output tables:
available_forage
,eaten_forage_per_ind
,eaten_nitrogen_per_ind
.
0.3.1 - 2020-03-26
Fauna::World
can be constructed without an instruction file. #4- Correctly plot demo results with
demo_results.Rmd
if output is daily or decadal. - Fix “First day before last” error in decadal output. #3
0.3.0 - 2020-03-17
- Net energy content model:
NetEnergyModel::GrossEnergyFraction
- Parameter
forage.gross_energy
- Parameter
hft.digestion.digestibility_multiplier
- Parameter
hft.digestion.k_fat
- Parameter
hft.digestion.k_maintenance
- Parameter
hft.digestion.me_coefficient
- Parameter
- Model description of forage energy and digestion.
- Parameter
hft.body_mass.empty
. - Parameter
hft.body_fat.catabolism_efficiency
.
- Fractional body fat now refers to the empty body (i.e. without ingesta, blood, etc.) and not the live body mass.
- HFT is made optional. New implementations of
HerbivoreInterface
don’t require an HFT. #5
- Order of HFT names in text table output is now guaranteed.
- Compiler flags specific to GCC are removed. #1
- Unknown TOML parameters/keys now issue an error. #2
- Parse TOML parameter
hft.body_fat.gross_energy
. - Run directory is now created in script
tools/run_valgrind_memcheck
.
- The old “default” net energy model
get_net_energy_content_default()
. - Parameter
hft.digestion.efficiency
(less efficient digestion of hindgut fermenters is now inhft.digestion.digestibility_multiplier
).
0.2.0 - 2019-12-06
- New instruction file parameters, which were constants before:
hft.digestion.anabolism_coefficient
(formerlyFauna::FatMassEnergyBudget::FACTOR_ANABOLISM
)hft.digestion.catabolism_coefficient
(formerlyFauna::FatMassEnergyBudget::FACTOR_CATABOLISM
)hft.digestion.efficiency
(formerlyFauna::DIGESTION_EFFICIENCY_HINDGUTS
)hft.digestion.i_g_1992_ijk
(formerly constants in the function objectFauna::GetDigestiveLimitIlliusGordon1992
)simulation.metabolizable_energy
(formerlyFauna::ME_COEFFICIENT_GRASS
)hft.reproduction.logistic.growth_rate
and.midpoint
(formerly constant parameters inFauna::ReprIlliusOConnor2000
).
- Default HFT groups “ruminants” and “hindguts” (replacing parameter
hft.digestion.type
) - Simple bash script
run_demo
produced in the build folder to execute demo simulator with results in one command.
- Replaced
std::map
withstd::array
inFauna::ForageValues
to improve speed. - Various little performance improvements.
- Turned
Fauna::GetNetEnergyContent
interface (strategy design pattern) to a function. - Turned
Fauna::GetDigestiveLimitIlliusGordon1992
into the functionFauna::get_digestive_limit_illius_gordon_1992()
. - Renamed TOML parameter
hft.foraging.net_energy_model
tohft.digestion.net_energy_model
- Renamed
Fauna::ReproductionModel::IlliusOConnor2000
toLogistic
.
- The parameter
hft.mortality.factors
was not parsed.
- Instruction file parameter
hft.digestion.type
and the correspondingFauna::DigestionType
andFauna::Hft::digestion_type
.
0.1.0 - 2019-11-07
- Herbivores in cohort and individual mode.
- Energy expenditure components:
- Allometric
- Based on Taylor et al. (1981)
- Thermoregulation
- Diet composer: only grass
- Reproduction models:
- Constant annual reproduction rate
- Based on Illius & O’Connor (2000)
- Linear relationship with body condition
- Mortality factors:
- Constant annual background mortality
- Death at end of lifespan
- Starvation mortality based on Illius & O’Connor (2000)
- Starvation at a threshold value of body condition
- Foraging limits:
- Functional response based on Illius & O’Connor (2000)
- General Holling Type II functional response
- Net energy in forage: formula used by Illius & O’Connor (2000)
- Energy expenditure components:
- Continuous integration (CI) for GitLab.
- Output in tab-separated text tables.
- TOML instruction file reader.
- Demo simulator with simple logistic grass growth.