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.

farm.jl

This file is responsible for managing the farm module(s).

Persefone.BasicFarmerType
BasicFarmer

The BasicFarmer type simply applies a set crop rotation to his fields and keeps track of income.

source
Persefone.findsetasidesMethod
findsetasides(farmer, model)

Return a vector of field IDs that this farmer should keep fallow to satisfy the configured set-aside rules.

source
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.

source
Persefone.initfarms!Method
initfarms!(model)

Initialise the model with a set of farm agents, depending on the configured farm model.

source
Persefone.stepagent!Method
stepagent!(farmer, model)

Update a farmer by one day. Cycle through all fields and see what management is needed.

source

farmdata.jl

This file collects relevant output data from the farm model.

Persefone.savefielddataMethod
savefielddata(model)

Return a data table (to be printed to fields.csv), giving the current date, and the area and average 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.

source