# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.0.0] - in planning *Aim: 3 species, 2 crop growth models, farm model, GAEC scenarios, experimental analysis* ## [0.6.0] - in planning *Plan: integrate AquaCrop (#79), set up first experiments* --- ## [0.5.5] - unreleased *Plan: basic farm model (#16), decouple CairoMakie (#81)* ## [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`. ## [0.5.2] - 30-07-2024 **Rewrote the skylark model** ### Added - Skylark model is largely rewritten to follow a new phase structure (#9) - animals can occupy territories (see `@occupy`, `@isoccupied`, `@vacate` macros/functions) (#94) - `@cropcover` macro and function - ODD documentation for Skylark ### Changed - input files that are now copied to a separate `inputs` directory within the output directory - `EventType` renamed to `Management` for clarity - documentation website now has a "Scientific Documentation" section ### Removed - old skylark model (has been rewritten, see above) ### Fixed - all skylarks now migrate (#90) - `insectbiomass()` uses units ## [0.5.1] - 13-06-2024 **Added Unitful.jl** ### Added - Unitful.jl now used to add units to quantities - `world.mapdirectory` parameter specifies the path to the directory in which `landcovermap`, `farmfieldsmap`, and `weatherfile` are located - `world.mapresolution` parameter specifies the input maps' spatial resolution in meters ### Changed - spatial functions now work with explicit distances (using Unitful.jl) rather than using the number of pixels - all species definitions and tests updated to use units --- ## [0.5.0] - 07-06-2024 **This release doesn't add much new functionality, but represents a major restructuring of the code base. Specifically, it removes the Agents.jl dependency and changes the way the species definition macros work and are used.** ### Added - `SimulationModel` type, extended by `AgricultureModel` struct - `@create` macro defines a special phase function that is called when an individual animal is created (at birth or on model initialisation) - functions (and associated macros) to replace Agents.jl functionality: - `move!()` and `walk!()` - `nearby_ids()`, `nearby_animals()`, `countanimals()`, `neighbours()` - `directionto()`, `distanceto()`, `randomdirection()` - `nagents()`, `killallanimals!()` - `@here` macro to return the pixel currently occupied by the active animal - `core.logoutput` parameter to define whether logs are printed to screen, file, none, or both - large logo and model structure diagram - Changelog ### Changed - `SimulationModel` replaces `AgentBasedModel` - Species definition macros revamped: - `@species` now only defines parameters and variables and creates a mutable struct - `@phase` must now be defined in the top-level code and creates a global function - `@initialise` renamed to `@populate`, must also be called in the top-level code - `initindividual()` renamed to `create!()` - Skylark, Wolpertinger, and Wyvern updated to match the new macros - requires Julia 1.10 ### Removed - Agents.jl dependency (including `AgentBasedModel` and functions for adding/moving/removing agents) --- ## [0.4.1] - 2023-11-14 **Initial version of the skylark model** ### Added - initial version of the Skylark species - small Jena map - animal individuals keep track of their parents' IDs - several new functions and macros for animals - installation instructions for Windows ### Changed - graphics output is more configurable ## [0.4.0] - 2023-10-28 **Functions for animal populations** ### Added - initialisation functions for individuals (not just species) - migration function / migrant pool for animals that disappear from the landscape during winter - skylark migration ### Changed - online documentation was expanded and restructured - nature macros moved to a separate file *Started changelog at this point, earlier versions are not included.* <!-- Template ## [version] - unreleased <comments> ### *PLANNED* ### Added ### Changed ### Deprecated ### Removed ### Fixed -->