GAI: Internal function to calculate the GAI (Green Area Index)...

View source: R/GAI.R View source: R/GAI.R

GAIR Documentation

Internal function to calculate the GAI (Green Area Index) based on yields and agronomical data.

Description

The function distributes the biomass growth (considering its proxy GAI and LAI) according to a gaussian function with parameters defined relatively to the crop. It is used for determining the effect of increased ET due to the presence of plant and the effect of shading on soil temperature.

Usage

GAI(
  yield,
  crop,
  year,
  variance,
  seeding,
  harvest,
  tillage,
  minimum_cover,
  yield2 = NULL,
  harvest2 = NULL
)

Arguments

yield

annual yields (kg/ha)

crop

crop id, either "spring_small_grains", "spring_oil_seeds","winter_small_grains", "winter_oil_seeds","root_crop", "fodder", "fodder maize" or "ley"

year

sequence of the years to run the simulation for

variance

the variance of the gaussian used to simulate the GAI, in days

seeding

day of seeding (day number of the year)

harvest

day of harvest (day number of the year)

tillage

day of tillage (day number of the year)

minimum_cover

forcing a minimum GAI cover, useful for leys (dimensionless)

yield2

OPTIONAL, in case there is more than one harvest per year (kg/ha)

harvest2

OPTIONAL, in case there is more than one harvest per year (days)

Details

The function relies on an input matrix which must follow a precise format, please refer to the attached aboveground_testdata.

The function is used to simulate the development of crops and their green area index (G.A.I.). The function uses among the inputs a vector of different crops, which will be simulated with different parameters. These are spring_small_grains, spring_oil_seeds, winter_small_grains, winter_oil_seeds,root_crop, fodder, fodder maize and ley. The function loops in annual steps through the years of the simulation and then runs a nested loop to simulate the crop growth in daily steps. The function initially calls the is.leapyear function to decide if to use 365 or 366 days in the simulation. Different crops are simulated in different ways. The functions returns also the LAI, calculated as

0.8 \cdot GAI

until maximum GAI. After maximum GAI, before harvest the LAI is set to never fall below

0.7 \cdot max(LAI)

, and between harvest and tillage never below

0.2 \cdot max(LAI)

according to Kätterer & Andrén 2009.

First of all the function checks if the crop of that year is not "fodder", "fodder maize" or "ley". if not, then sets the maximum GAI (j is the index used in the main function loop, looping through the simulation years):

GAI_{max}=0.0129 \cdot (\frac{yield_j}{1000})^2 + 0.1964 \cdot(\frac{yield_j}{1000})

For root crops the maximum GAI is set differently (see below the specific section) The function then proceeds to simulate the growth according to a gausssian function subsequently modified. The gaussian function is controlled by the parameters defining where it is centered and its variance. Its center is calculated according to seeding and harvest dates, which are in the input data. Then the GAI outside the area covered by such function is either set to zero or to the minimum coverage specified in the input data. The main function used to simulate the crop growth, after first having calculated the center of the gausian with

middle=seeding_j + \frac{harvest_j-seeding_j}{2}

is the following:

GAI=GAI_{max} \cdot exp(-\frac{(day-middle)^2)}{(2\cdot variance_j)})

Most crops are considered covering the soil even after being fully mature, except root crops fodder (including silage maize). Please not that this does not imply that such crops are returned as C inputs to the soil in the ICBM model, this concerns just the calculation of the climatic reduction coefficients.

Exceptions

root_crops

Root crops have a specific function, which is based on the average yields (yield_vec) and maximum LAI (LAI_max_vec) obtained in the Ultuna experiment during the three years when root crops were planted. The maximum GAI is also calculated with a different function:

GAI_{max}=min(5.6,\frac{1}{0.8} \cdot mean(\frac{LAI_max_vec}{yield_vec}) \cdot \frac{1}{0.75} \cdot yield_j)

fodder

The maximum GAI is calculated according to data for fodder rape (https://www.agronomysociety.org.nz/files/2010_11._Seed_yield_of_forage_rape.pdf)

GAI_{max}=min(10,0.0004615385 \cdot yield_j)

fodder_maize

The maximum GAI is calculated according to data from the Ultuna experiment, where silage maize has been planted since 2000

GAI_{max}=min(10,\frac{1}{0.8} \cdot 0.000533 \cdot yield_j)

ley

Leys are complicated by the fact that there might be two subsequent cuts, so two harvests. The command considers this possibility with 2 optional parameters, harvest2 and yields2, which are otherwise set to NULL. If these two parameters are present another if condition takes care of them when they are not set to zero.

Value

A data frame of 5 variables: date, GAI, crop, yields_at_harvest and LAI. The other dimension of the data frame is as long as the combination of the treatments and the days of the simulation.

Author(s)

Lorenzo Menichetti ilmenichetti@gmail.com

References

W. Mazurczyk, Anna Teresa Wierzbicka, Anna Teresa Wierzbicka, C. Trawczyński,2009,. HARVEST INDEX OF POTATO CROP GROWN UNDER DIFFERENT NITROGEN AND WATER SUPPLY.

T. Kätterer and O. Andrén, “Predicting daily soil temperature profiles in arable soils in cold temperate regions from air temperature and leaf area index,” Acta Agric. Scand. Sect. B - Plant Soil Sci., vol. 59, no. 1, pp. 77–86, 2009, doi: 10.1080/09064710801920321.

Examples

data(aboveground_testdata) #load the example dataset

selected_aboveground<-aboveground_testdata[aboveground_testdata$treat=="CONVENTIONAL",]

GAI_test<-GAI(yield=selected_aboveground$total_dm_kg_ha, crop=selected_aboveground$crop_id,
       year=selected_aboveground$year, variance=selected_aboveground$variance,
       seeding=selected_aboveground$seeding, harvest=selected_aboveground$harvest,
       tillage=selected_aboveground$tillage, minimum_cover=selected_aboveground$minimum_cover)

plot(GAI_test$date, GAI_test$GAI, type="l") # plotting the results to test


ilmenichetti/reclim documentation built on June 28, 2024, 3:27 p.m.