Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
skylark.jl 11.73 KiB
### Persefone.jl - a model of agricultural landscapes and ecosystems in Europe.
###
### This file holds the code for the Eurasian Skylark (Alauda arvensis).
###

"""
    Skylark

*Alauda arvensis* is a common and charismatic species of agricultural landscapes.
At the moment, this implementation is still in development.

**Sources:**
    - Bauer, H.-G., Bezzel, E., & Fiedler, W. (Eds.). (2012). Das Kompendium
      der Vögel Mitteleuropas: Ein umfassendes Handbuch zu Biologie, Gefährdung
      und Schutz (Einbändige Sonderausg. der 2., vollständig überarb. und erw.
      Aufl. 2005). AULA-Verlag
    - Delius, J. D. (1965). A Population Study of Skylarks Alauda Arvensis.
      Ibis, 107(4), 466–492. https://doi.org/10.1111/j.1474-919X.1965.tb07332.x
    - Donald et al. (2002). Survival rates, causes of failure and productivity
      of Skylark Alauda arvensis nests on lowland farmland. Ibis, 144(4), 652–664.
      https://doi.org/10.1046/j.1474-919X.2002.00101.x
    - Glutz von Blotzheim, Urs N. (Ed.). (1985). Handbuch der Vögel Mitteleuropas.
      Bd. 10. Passeriformes (Teil 1) 1. Alaudidae - Hirundidae. AULA-Verlag, Wiesbaden.
      ISBN 3-89104-019-9
    - Jenny, M. (1990). Territorialität und Brutbiologie der Feldlerche Alauda
      arvensis in einer intensiv genutzten Agrarlandschaft. Journal für Ornithologie,
      131(3), 241–265. https://doi.org/10.1007/BF01640998
    - 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
"""
@species Skylark begin
    # species parameters
    const movementrange::Length = 500m #XXX arbitrary
    const visionrange::Length = 200m #XXX arbitrary
    
    const eggtime::Int64 = 11 # days from laying to hatching
    const nestlingtime::UnitRange{Int64} = 7:11 # days from hatching to leaving nest
    const fledglingtime::UnitRange{Int64} = 25:30 # days from hatching to independence

    const eggpredationmortality::Float64 = 0.03 # per-day egg mortality from predation
    const nestharvestmortality::Float64 = 1.0 # egg/nestling mortality after a harvest event
    const nestlingpredationmortality::Float64 = 0.03 # per-day nestling mortality from predation
    const fledglingharvestmortality::Float64 = 0.5 # fledgling mortality after harvest
    const fledglingpredationmortality::Float64 = 0.01 # per-day fledgling mortality from predation
    const firstyearmortality::Float64 = 0.38 # total mortality in the first year after independence
    const migrationmortality::Float64 = 0.33 # chance of dying during the winter

    const minimumterritory = 5000m² # size of territory under ideal conditions
    const maxforageheight = 50cm # maximum preferred vegetation height for foraging
    const maxforagecover = 0.7 # maximum preferred vegetation cover for foraging
    const nestingheight = (15cm, 25cm) # min and max preferred vegetation height for nesting
    const nestingcover = (0.2, 0.5) # min and max preferred vegetation cover for nesting
    
    const nestingbegin::Tuple{Int64,Int64} = (April, 10) # begin nesting in the middle of April
    const nestbuildingtime::UnitRange{Int64} = 4:5 # 4-5 days needed to build a nest (doubled for first nest)
    const eggsperclutch::UnitRange{Int64} = 2:5 # eggs laid per clutch
    const breedingdelay::Int64 = 18 # days after hatching before starting a new brood #XXX ??
    const nestingend::Int64 = July # last month of nesting

    # individual variables
    #FIXME check what needs to be rewritten
    timer::Int64 = 0 # a count-down timer that can be used for different purposes
    migrationdates::Tuple = () # is defined by each individual in @create(Skylark)
    mate::Int64 = -1 # the agent ID of the mate (-1 if none)
    nest::Tuple = () # coordinates of current nest
    nestcompletion::Int64 = 0 # days left until the nest is built
    clutch::Int64 = 0 # number of offspring in current clutch
end