# 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 multiple crop growth models, set up first experiments* ## [0.5.3] - in planning *Plan: basic farm model (#16), decouple CairoMakie (#81)* ## [0.5.2] - unreleased ### 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 - scientific documentation for Skylark (will become ODD) ### Changed - input files that are now copied to a separate `inputs` directory within the output directory - `EventType` renamed to `Management` for clarity ### Deprecated ### Removed - old skylark model (has been rewritten, see above) ### Fixed - all skylarks now migrate (#90) - `insectbiomass()` uses units ## [v0.5.1] - 13-06-2024 ### 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 ## [v0.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) ## [v0.4.1] - 2023-11-14 *Wrote tests for skylark migration -> made graphics output format configurable* ### 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 ## [v0.4.0] - 2023-10-28 *Refactored makieplots.jl -> Wrote tests for skylark migration* ### 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 -->