-
Marco Matthies authored
`Weather` is now a type that stores the complete simulation data (previously it just stored the weather data for a single day). Weather data storage is now a struct-of-arrays, previously it was a dict-of-structs. Weather data can be accessed with functions such as `sunshine(weather, date)`. Missing weather input data for temperature (min/max/mean), precipitation, and evapotranspiration is now an error. In the future, missing values could perhaps be imputed. `AgricultureModel` and `Weather` are now defined with `@kwdef`, allowing their constructors to be called with keyword arguments.
Marco Matthies authored`Weather` is now a type that stores the complete simulation data (previously it just stored the weather data for a single day). Weather data storage is now a struct-of-arrays, previously it was a dict-of-structs. Weather data can be accessed with functions such as `sunshine(weather, date)`. Missing weather input data for temperature (min/max/mean), precipitation, and evapotranspiration is now an error. In the future, missing values could perhaps be imputed. `AgricultureModel` and `Weather` are now defined with `@kwdef`, allowing their constructors to be called with keyword arguments.
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.6.1] - unreleased
Plan: add soil maps, update GIS documentation, add more regions
Added
- user manual: documentation is now compiled to PDF (#91)
Changed
-
added soil map section to GIS docs
-
the
Weather
type now stores all weather information for the whole simulation as a "struct-of-arrays" and with a function interface, e.g.sunshine(weather, date)
(previously,Weather
was a struct that stored the weather data for one day only, andAgricultureModel
had a fieldweather::Dict{Date,Weather}
, making it a "dict-of-struct" data layout) -
AgricultureModel
andWeather
are now defined with@kwdef
, allowing for keyword arguments in their constructors -
when reading weather data, we now throw an error when there are missing values for the fields
min_temperature
,max_temperature
,mean_temperature
,precipitation
, andpotential_evapotranspiration
(in the future missing values could also be imputed)
Deprecated
Removed
Fixed
[0.6.0] - 13-01-2025
This point 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()
andinitialise()
now take aparams
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 foris_c4_plant
,sowingdensity
, andphase_before_harvest
Deprecated
Removed
-
crop.cropfile
andcrop.growthfile
parameters -> user configuration is now done viacrop.cropdirectory
, names of ALMaSS input files are specified as constants inalmass.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 forFarmPlot
s -
@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
, aDate
, or aTuple{Int64,Int64}
- automatic conversion from
Date
orTuple{Int64,Int64}
- can use operators:
==
,<
,+
,-
,:
-
thisyear()
,lastyear()
,nextyear()
functions and macros
- can be constructed from two
-
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