Skip to contents

Simulation routine to realistically predict grass cutting events. This follows an implementation described in Petersen et al. (2021).

Details

The decision to cut is made based on two criteria. First, it is checked whether a target biomass is reached on given DOY. The defined target depends on the DOY and is given through :func:get_target_biomass. If said biomass is present, return TRUE.

Otherwise, it is checked whether a given amount of time has passed since the last cut. Depending on whether this is the first cut of the season or not, the relevant parameters are :int:last_DOY_for_initial_cut and :int:max_cut_period. If that amount of time has passed, return TRUE, otherwise return FALSE.

The target biomass for a given day is determined following the principles described in Petersen et al.

The exact regression for the target biomass is based on Fig. S2 in the supplementary material of Petersen et al.

A refinement to expected yield as function of altitude has been implemented according to Table 1a in Huguenin et al. (2017).

References

Huguenin-Elie I, Mosimann E, Schlegel P, Lüscher A, Kessler W, Jeangros B (2017). “Grundlagen für die Düngung landwirtschaftlicher Kulturen in der Schweiz (GRUD), Kapitel 9: Düngung von Grasland.” Agrarforschung Schweiz. https://www.agrarforschungschweiz.ch/2017/06/9-duengung-von-grasland-grud-2017/. Petersen K, Kraus D, Calanca P, Semenov MA, Butterbach-Bahl K, Kiese R (2021). “Dynamic Simulation of Management Events for Assessing Impacts of Climate Change on Pre-Alpine Grassland Productivity.” European Journal of Agronomy, 128, 126306. ISSN 1161-0301, doi:10.1016/j.eja.2021.126306 , https://www.sciencedirect.com/science/article/pii/S1161030121000782.

Huguenin-Elie I, Mosimann E, Schlegel P, Lüscher A, Kessler W, Jeangros B (2017). “Grundlagen für die Düngung landwirtschaftlicher Kulturen in der Schweiz (GRUD), Kapitel 9: Düngung von Grasland.” Agrarforschung Schweiz. https://www.agrarforschungschweiz.ch/2017/06/9-duengung-von-grasland-grud-2017/.

Petersen K, Kraus D, Calanca P, Semenov MA, Butterbach-Bahl K, Kiese R (2021). “Dynamic Simulation of Management Events for Assessing Impacts of Climate Change on Pre-Alpine Grassland Productivity.” European Journal of Agronomy, 128, 126306. ISSN 1161-0301, doi:10.1016/j.eja.2021.126306 , https://www.sciencedirect.com/science/article/pii/S1161030121000782.

See also

PhenologicalAutocut

get_relative_cut_contribution()

get_target_biomass()

Super class

growR::Autocut -> PetersenAutocut

Public fields

last_DOY_for_initial_cut

Start cutting after this DOY, even if yield target is not reached.

max_cut_period

Maximum period to wait between subsequent cuts.

dry_precipitation_limit

Maximum amount of allowed precipitation (mm) to consider a day.

dry_days_before_cut

Number of days that shold be dry before a cut is made.

dry_days_after_cut

Number of days that shold be dry after a cut is made.

max_cut_delay

Number of days a farmer is willing to wait for dry conditions before a cut is made anyways.

cut_delays

Vector to keep track of cut delay times.

dry_window

Logical that indicates if DOY at index is considered dry enough to cut.

target_biomass

Biomass amount that should to be reached by given DOY for a cut to be made.

end_of_cutting_season

Determined DOY after which no more cuts are made.

Methods

Inherited methods


Method new()

Constructor

Usage

Arguments

MVS

The ModvegeSite object for which cuts shall be determined.


Method get_annual_gross_yield()

Lookup table returning expected annual gross yields as function of elevation and management intensity.

Based on data from Table 1a in Lookup Table of expected yield as functions of height and management intensity after Olivier Huguenin et al. (2017).

Usage

PetersenAutocut$get_annual_gross_yield(elevation, intensity = "high")

Arguments

elevation

The elevation of the considered site in meters above sea level.

intensity

One of ("high", "middle", "low", "extensive"). Management intensity for considered site.

Returns

Annual gross yield in t / ha (metric tons per hectare). Note that 1 t/ha = 0.1 kg/m^2.


Method get_target_biomass()

Get target value of biomass on given DOY, which determines whether a cut is to occur.

The regression for the target biomass is based on Fig. S2 in the supplementary material of Petersen, Krischan, David Kraus, Pierluigi Calanca, Mikhail A. Semenov, Klaus Butterbach-Bahl, and Ralf Kiese. “Dynamic Simulation of Management Events for Assessing Impacts of Climate Change on Pre-Alpine Grassland Productivity.” European Journal of Agronomy 128 (August 1, 2021): 126306. https://doi.org/10.1016/j.eja.2021.126306.

A refinement to expected yield as function of altitude has been implemented according to Table 1a in Huguenen-Elie et al. "Düngung von Grasland", Agrarforschung Schweiz, 8, (6), 2017, https://www.agrarforschungschweiz.ch/2017/06/9-duengung-von-grasland-grud-2017/

Usage

PetersenAutocut$get_target_biomass(DOY, intensity = "high")

Arguments

DOY

Integer day of the year to consider.

intensity

One of ("high", "middle", "low") specifying management intensity.

Returns

target Biomass (kg / ha) that should be reached on day DOY for this management intensity.


Method get_relative_cut_contribution()

Relative cut contribution

Get the fraction of the total annual harvested biomass that a cut at given DOY is expected to contribute.

The regression for the target biomass is based on Fig. S2 in the supplementary material of Petersen et al. (2021).

Usage

PetersenAutocut$get_relative_cut_contribution(DOY)

Arguments

DOY

Integer representing the day of the year on which a cut occurs.

Returns

The fraction (between 0 and 1) of biomass harvested at the cut at given DOY divided by the total annual biomass.


Method get_end_of_cutting_season()

Last day of cutting season

Estimate the last day on which it still makes sense to cut. This is done by checking at which point the expected target biomass (see self$get_relative_cut_contribution()) goes below the minimally harvestable standing biomass.

Usage

PetersenAutocut$get_end_of_cutting_season(
  min_biomass,
  elevation,
  intensity = "high"
)

Arguments

min_biomass

float A standing biomass below this value cannot even be harvested,

elevation

float Altitude in m.a.s.l.

intensity

string Management intensity. One of "high", "middle", "low"

Returns

float Last (fractional) day of the year on which a cut still makes sense.


Method determine_cut()

Decide based on simple criteria whether day of year DOY would be a good day to cut.

This follows an implementation described in Petersen, Krischan, David Kraus, Pierluigi Calanca, Mikhail A. Semenov, Klaus Butterbach-Bahl, and Ralf Kiese. “Dynamic Simulation of Management Events for Assessing Impacts of Climate Change on Pre-Alpine Grassland Productivity.” European Journal of Agronomy 128 (August 1, 2021): 126306. https://doi.org/10.1016/j.eja.2021.126306.

The decision to cut is made based on two criteria. First, it is checked whether a target biomass is reached on given DOY. The defined target depends on the DOY and is given through :func:get_target_biomass. If said biomass is present, return TRUE.

Otherwise, it is checked whether a given amount of time has passed since the last cut. Depending on whether this is the first cut of the season or not, the relevant parameters are :int:last_DOY_for_initial_cut and :int:max_cut_period. If that amount of time has passed, return TRUE, otherwise return FALSE.

Usage

PetersenAutocut$determine_cut(DOY)

Arguments

DOY

Integer day of the year for which to make a cut decision.

Returns

Boolean TRUE if a cut happens on day DOY.


Method clone()

The objects of this class are cloneable with this method.

Usage

PetersenAutocut$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.