Farm submodel
Eventually, the aim is to create a full socio-economic farm decision model for Persefone. However, for the time being, we will restrict ourselves to a simple model that executes typical farm operations and crop rotations.
farmevents.jl
This file provides the interface for handling management events (e.g. tillage, harvest).
Persefone.FarmEvent — Type
FarmEventA data structure to define a landscape event, giving its type, spatial extent, and duration.
Persefone.Management — Type
The types of management event that can be simulated
Persefone.updateevents! — Method
updateevents!(model)Cycle through the list of events, removing those that have expired.
farm.jl
This file is responsible for managing the farm module(s).
Persefone.BasicFarmer — Type
BasicFarmerThe BasicFarmer type simply applies a set crop rotation to his fields and keeps track of income.
Persefone.Farmer — Type
This is the agent type for the farm ABM.
Persefone.initbasicfarms! — Method
initbasicfarms!(model)Initialise the basic farm model. All fields are controlled by a single farmer actor and are assigned as grassland, set-aside, or arable land with a crop rotation.
Persefone.initfarms! — Method
initfarms!(model)Initialise the model with a set of farm agents, depending on the configured farm model.
Persefone.stepagent! — Method
stepagent!(farmer, model)Update a farmer by one day. Cycle through all fields and see what management is needed.
Persefone.updatefarmsandfields! — Method
updatefarmsandfields!(model)Call the step function on all farms and fields, and run any scenarios.
farmdata.jl
This file collects relevant output data from the farm model.
Persefone.initfarmdata — Method
initfarmdata()Create output files for each data group collected by the farm model.
Persefone.savefielddata — Method
savefielddata(model)Return a data table (to be printed to fields.csv), giving the current date, and the area and average height and cover of each crop in the landscape. May be called never, daily, monthly, yearly, or at the end of a simulation, depending on the parameter farm.fieldoutfreq.
scenarios.jl
This file contains management scenarios that can modify the functioning of the farm component.
Persefone.applyscenarios — Method
applyscenarios(model)Calls functions that can change settings or otherwise manipulate the model to implement different simulation scenarios.
Persefone.sc_thuringian_fallows — Method
sc_thuringian_fallows(model)This scenario changes the amount of set-aside/fallow area over time, based on historical developments in Thuringia following changes in the CAP (2007: abolishment of set-asides (used as a market instrument); 2015: introduction of Greening). Note: does not include the most recent changes (CAP post-2022).
Based on data from Thüringer Landesamt für Statistik, via Jungmann (2018): https://wirtschaft.thueringen.de/fileadmin/Landwirtschaft/Agrarpolitik/oevfbiodiversitatthueringen_nov2018.pdf