Something went wrong on our end
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
insects.jl 3.88 KiB
### Persefone.jl - a model of agricultural landscapes and ecosystems in Europe.
###
### This file contains the submodel that calculates insect biomass
###
## XXX THE CODE IN THIS FILE IS CURRENTLY NOT USED AND LIKELY WON'T BE IN FUTURE.
## HOWEVER, I PREFER TO KEEP IT FOR NOW IN CASE WE EVER DO. (DV, 29th July 2024)
"""
insectbiomass(pixel, model)
Calculate the insect biomass in this location, using the factors configured
in the `nature.insectmodel` settings (any combination of: "season", "habitat",
"weather", "pesticides"). Returns a float value in g/m².
**Biological note:** this is a very approximate calculation! Insect biomass
varies wildly in time and space and is hard to measure. This calculation is
based on the idea of a parabolic seasonal development of insect abundance,
modified by habitat suitability, weather, and pesticide application. Although it
is based on empirical studies, it can only deliver a rough, order-of-magnitude
estimation of likely insect biomass in a given location.
**Sources:**
- Odderskær et al. (1997). Skylark Reproduction in Pesticide Treated and Untreated Fields (32; Pesticides Research). Danish Environmental Protection Agency.
- Grüebler et al. (2008). A predictive model of the density of airborne insects in agricultural environments. Agriculture, Ecosystems & Environment, 123(1), 75–80. https://doi.org/10.1016/j.agee.2007.05.001
- Paquette et al. (2013). Seasonal patterns in Tree Swallow prey (Diptera) abundance are affected by agricultural intensification. Ecological Applications, 23(1), 122–133. https://doi.org/10.1890/12-0068.1
- Püttmanns et al. (2022). Habitat use and foraging parameters of breeding Skylarks indicate no seasonal decrease in food availability in heterogeneous farmland. Ecology and Evolution, 12(1), e8461. https://doi.org/10.1002/ece3.8461
"""
function insectbiomass(pixel::Pixel, model::SimulationModel)
## if no factors are configured, insect abundance defaults to 300 mg/m²,
## a value in the upper range of insect biomass density in agricultural landscapes
baseline = 300mg/m²
seasonfactor = 0.0mg/m²
habitatfactor = 1.0
weatherfactor = 1.0
pesticidefactor = 1.0
## parabolic curve of seasonal development (peaking on the 6th of July),
## based on fig. 3a in Paquette et al. (2013)
if "season" in @param(nature.insectmodel)
calendarday = dayofyear(model.date)
seasonfactor = (-0.085(calendarday-187)^2)mg/m²
end
## habitat dependence of insect biomass,
## based on fig. 1 in Grübler et al. (2008) and fig. 5c in Püttmanns et al. (2022)
if "habitat" in @param(nature.insectmodel)
if pixel.landcover == soil || pixel.landcover == forest
habitatfactor = 2.0
elseif pixel.landcover == grass
habitatfactor = 1.5
elseif pixel.landcover == agriculture
habitatfactor = 1.0
else
habitatfactor = 0.0
end
end
## temperature dependence of insect biomass,
## based on fig. 3b in Paquette et al. (2013)
##XXX (and possibly table 3 in Grübler et al. (2008))
if "weather" in @param(nature.insectmodel)
@warn "Weather effects on insect biomass are not yet implemented."
#TODO add this once we have a working weather module
end
## effect of pesticides on insect abundance,
## based on figs. 3.6 and 3.7 in Odderskær et al. (1997)
## Note that this is a simplification: it ignores that insect biomass
## tends to rise rapidly a few weeks after pesticide application.
if "pesticides" in @param(nature.insectmodel) && pesticide in pixel.events
pesticidefactor = 0.5
end
## calculate biomass using a parabolic equation in the vertex form
seasonfactor+baseline*habitatfactor*pesticidefactor*weatherfactor |> g/m²
#FIXME somehow this seems to throw a unit error?
# `DimensionError: and g m^-2 are not dimensionally compatible`
end