Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • development
  • precompile-statements
  • precompile-tools
  • tmp-faster-loading
  • skylark
  • testsuite
  • code-review
  • v0.7.0
  • v0.6.1
  • v0.6.0
  • v0.5.5
  • v0.5.4
  • v0.5.3
  • v0.5.2
  • v0.2
  • v0.3.0
  • v0.4.1
  • v0.5
19 results

CHANGELOG.md

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    To find the state of this project's repository at the time of any of these versions, check out the tags.
    CHANGELOG.md 12.20 KiB

    Changelog

    All notable changes to this project will be documented in this file.

    The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

    [1.0.0] - in planning

    Aim: 4 species, 2 crop growth models, farm model, GAEC scenarios, experimental analysis

    Plan: decouple CairoMakie (#81), fix & test ALMaSS, set up first experiments

    [0.8.0] - unreleased

    This minor release adds the first butterfly model (marbled white), and adds grassland management.

    Added

    • Marbled white (Melanargia galathea) species model with associated data outputs

    • implemented management of extensive and intensive grassland in the farm model (new parameters: farm.extensivegrassland, farm.mowingthreshold, farm.mowingperiod)

    • added cropgroup() functions

    • added macros for weather functions (@humidity(), @maxtemp(), etc.)

    Changed

    • Skylark model parameters can be set via configuration file

    • Skylark model validation completed

    • ALMaSS grassland data expanded to allow continued growth after mowing

    • crop rotation on all fields can now be set via parameter farm.croprotation

    • the model now attempts to fix misclassifications in the land cover map if the world.fixlandcover parameter is true

    • DataOutputs can now be passed a string with an AnnualDate instead of a frequency to specify on which date they should be run

    • the world.mapdirectory parameter has been split up into world.mapdirectory and world.region

    Deprecated

    Removed

    Fixed

    • fixed post-mowing grass growth in ALMaSS

    • fixed isvalidstart() bug in almass.jl

    • fixed a bug in initpopulations!()

    • interpolated missing weather data in Eichsfeld

    [0.7.1] - 17-6-2025

    Added

    • AquaCrop can now estimate crop height from dry biomass using the rational function regression y = a * (x/x0)^b / (c + (x/x0)^b) with parameters fitted for maize, winter wheat, winter barley, and winter rapeseed. AquaCrop by itself does not model plant height.

    [0.7.0] - 14-03-2025

    This minor release adds support for the AquaCrop crop model.

    Added

    • Add AquaCrop crop model

    • Simple linear crop height estimation for AquaCrop plants from biomass (AquaCrop does not model plant height)

    • Read soil type map, controlled with the setting "world.soiltypesmap"

    • Landscape Pixels store their soil type (enum SoilType)

    • FarmPlots store the most common soil type of their landscape Pixels (AquaCrop needs the soil type as an input parameter).

    Changed

    • Allow multiple crop models to be used in one simulation. The settings "crop.cropmodel" and "crop.cropdirectory" are now comma-separated lists of crop models and their data directories.

    Deprecated

    Removed

    Fixed

    [0.6.1] - 14-03-2025

    Added

    • user manual: documentation is now compiled to PDF (#91)

    • added soil maps to region data, but not used yet

    • added mean_cloud_cover and potential_evapotranspiration fields to weather data csv files

    Changed

    • added soil map section to GIS docs

    • Changed weather internal representation to struct-of-arrays (previously a dict-of-struct representation). The Weather type now stores all weather information for the whole simulation, with a function interface, e.g. sunshine(weather, date).

    • When reading weather data, we now throw an error when there are missing days or any missing values for the fields min_temperature, max_temperature, mean_temperature, precipitation, and potential_evapotranspiration. In the future missing values could also be imputed.

    • The script for weather data extraction at data/regions/auxiliary/extract_weather_data.R has been reworked to always return an output row for each day in the date range, even if the day is missing in the original data source. It now also accepts the stations to download as command-line arguments. The renv lockfile for the R environment used to run the script can be found at data/regions/auxiliary/renv.lock.

    Deprecated

    Removed

    Fixed

    [0.6.0] - 13-01-2025

    This minor release re-implements the ALMaSS crop model

    Added

    • crop.cropdirectory parameter specifies folder in which all crop data files for the selected crop model can be found.

    Changed

    • preprocessparameters() checks whether the map and crop directories are reachable from the current working directory. If not, it checks whether it can be reached from the package directory. This makes running simulations easier when Persefone has been installed as a package.

    • simulate() and initialise() now take a params keyword argument that can be used to override parameters from other input sources

    • The ALMaSS crop data config file data/crops/almass/crop_data_general.csv now has extra columns for is_c4_plant, sowingdensity, and phase_before_harvest

    Deprecated

    Removed

    • crop.cropfile and crop.growthfile parameters -> user configuration is now done via crop.cropdirectory, names of ALMaSS input files are specified as constants in almass.jl

    Fixed

    • The implementation of the ALMaSS vegetation model in Persefone has been completely rewritten, hopefully more faithfully reproducing the logic in ALMaSS. The resulting plant heights are now more realistic and do not produce the extreme plant heights seen previously (which was due to an erroneous interpretation of the ALMaSS growth curves).

    [0.5.5] - 09-08-2024

    This point release implements the first basic farm model

    Added

    • basic farm model that assigns a crop rotation to each field, sowing and harvesting when appropriate

    • new parameters: farm.farmmodel, farm.setaside, farm.fieldoutfreq

    • visualisation of cropped area and crop growth over time

    • farm.setaside setting to configure what proportion of land farmers let lie fallow

    • isharvestable() function for FarmPlots

    • @areaof macro to calculate the area of a given number of landscape pixels

    • data/farm/standard_gross_margins.csv from KTBL data

    Changed

    • expanded & adapted general crop data and crop growth curve tables

    Fixed

    • bug fixes in the ALMaSS crop model

    [0.5.4] - 08-08-2024

    Skylark data analysis and new internal utility functions

    Added

    • AnnualDate type and associated functions for working with recurring dates (#101)

      • can be constructed from two Int64, a Date, or a Tuple{Int64,Int64}
      • automatic conversion from Date or Tuple{Int64,Int64}
      • can use operators: ==, <, +, -, :
      • thisyear(), lastyear(), nextyear() functions and macros
    • new file core/utils.jl for utility functions that fit in no other file

    • irregular data logging using record!()/@record() (#103)

    • data outputs & visualisation for the skylark model (#97)

    • randn() function and macro to sample from a vector using a normal distribution

    • make install to download and install Julia and package dependencies (on Linux, #67)

    • weather file for the Thüringer Becken

    Changed

    • moved random number functions and macros from input.jl to utils.jl

    • expanded weather data for Jena to 1990-2023

    • Non-breeding skylarks only search for neighbours to follow once (-> huge performance improvement!)

    Fixed

    • bug fixes in the skylark model

    [0.5.3] - 31-07-2024

    Switchable crop models

    Added

    • Support for switchable crop models (#70), crop models can be set with the cropmodel setting in the [crop] section of parameters.toml.

    • New submodules ALMaSS for the ALMaSS crop model, and SimpleCrop for testing switchable crop models.

    Changed

    • All functionality specific to the ALMaSS crop model has been moved to the submodule ALMaSS.

    • Due to switchable crop models, some types are now parametric: AgricultureModel{Tcroptype,Tcropstate} and FarmPlot{Tcropstate}.

    • FarmPlot{Tcropstate} now only stores basic information about which pixels are part of the farm plot, all crop-specific information is now stored in the field cropstate. Many functions acting on a FarmPlot now mostly forward to functions of the same name acting on the cropstate field of a FarmPlot.

    • The type of height in ALMaSS.CropState and ALMaSS.CropCurveParams is now a unitful number ::Length{Float64}.

    • Both crop models ALMaSS and SimpleCrop now also support the functions cropcover and cropyield in addition to croptype, cropname, cropheight.

    • cropheight now returns a unitful number ::Length{Float64}, and returns height 0cm if the landscape at that position is not a FarmPlot.