diff --git a/R/miniSTICS.R b/R/miniSTICS.R index 298cb1b..9ac4e18 100644 --- a/R/miniSTICS.R +++ b/R/miniSTICS.R @@ -123,6 +123,10 @@ #' \item parsurg: PAR fraction #' \item extin: Light extinction coefficient #' \item rue: Radiation use efficiency (g MJ-1) +#' \item temin: minimal temperature for plant growth (°C) +#' \item teopt: minimum range of optimal temperature for plant growth (°C) +#' \item teoptbis: maximum range of optimal temperature for plant growth (°C) +#' \item temax: Maximal temperature above which plant growth stops (°C) #' } #' #' Water stress: @@ -243,6 +247,7 @@ miniSTICS <- function(soil, weather_station, practices, plant, weather) { practices = c("sowing_year", "doy_sowing", "doy_stop_sim", "zrac0", "density"), plant = c( "tcmin", "tcopt", "tcxstop", + "temin","teopt","teoptbis","temax", "flag_vern", "jvc", "tfroid", "ampfroid", "flag_photo", "phobase", "phosat", "st2germinate", "st2emerge", "stlevamf", "stamflax", "stlevdrp", "stdrpmat", @@ -516,6 +521,7 @@ miniSTICS <- function(soil, weather_station, practices, plant, weather) { ministics$HUR1 <- vector("numeric", sz) ministics$HUR2 <- vector("numeric", sz) ministics$SWFAC <- vector("numeric", sz) + ministics$FTEMP <- vector("numeric",sz) ministics$DELTAMS <- vector("numeric", sz) ministics$DELTAMS_unstressed <- vector("numeric", sz) @@ -766,10 +772,23 @@ miniSTICS <- function(soil, weather_station, practices, plant, weather) { # TOTAL BIOMASS GROWTH # -------------------- + if (i==1){ + ministics$FTEMP[i] <- 1 + }else{ + if (ministics$Temp[i] < teopt){ + ministics$FTEMP[i] <- 1 - ((ministics$UDEVCULT[i-1]-teopt)/(temin-teopt))^2 + }else if (teopt <= ministics$UDEVCULT[i-1] & ministics$UDEVCULT[i-1] <= teoptbis){ + ministics$FTEMP[i] <- 1 + }else{ + ministics$FTEMP[i] <- 1-((ministics$UDEVCULT[i-1]-teoptbis)/(temax-teoptbis))^2 + } + + } + # ministics$FTEMP[i] <- 1 if (ministics$DOY_2EMERG[i] == 1 & ministics$DOY_2Z89[i] == 0) { - ministics$DELTAMS[i] <- 0.95 * parsurg * ministics$Radiation[i] * rue * (1 - exp(-extin * ministics$LAI[i])) - ministics$DELTAMS_unstressed[i] <- 0.95 * parsurg * ministics$Radiation[i] * rue * (1 - exp(-extin * ministics$LAI_unstressed[i])) + ministics$DELTAMS[i] <- 0.95 * parsurg * ministics$Radiation[i] * rue * (1 - exp(-extin * ministics$LAI[i])) * ministics$FTEMP[i] + ministics$DELTAMS_unstressed[i] <- 0.95 * parsurg * ministics$Radiation[i] * rue * (1 - exp(-extin * ministics$LAI_unstressed[i])) * ministics$FTEMP[i] } else { ministics$DELTAMS[i] <- 0 ministics$DELTAMS_unstressed[i] <- 0 diff --git a/R/plant_parameters.R b/R/plant_parameters.R index d61eb29..7efdf13 100644 --- a/R/plant_parameters.R +++ b/R/plant_parameters.R @@ -65,6 +65,10 @@ #' \item parsurg: PAR fraction #' \item extin: Light extinction coefficient #' \item rue: Radiation use efficiency (g MJ-1) +#' \item temin: minimal temperature for plant growth (°C) +#' \item teopt: minimum range of optimal temperature for plant growth (°C) +#' \item teoptbis: maximum range of optimal temperature for plant growth (°C) +#' \item temax: Maximal temperature above which plant growth stops (°C) #' } #' #' Water stress: @@ -102,6 +106,10 @@ plant_parameters <- function(...) { params <- list( tcmin = 0, tcopt = 35, + temin=0, + teopt=12, + teoptbis=17, + temax=40, tcxstop = 45, flag_vern = TRUE, jvc = 45, @@ -148,7 +156,6 @@ plant_parameters <- function(...) { tminremp = 0, tmaxremp = 38 ) - overrides <- list(...) if (length(overrides) > 0) { diff --git a/man/miniSTICS.Rd b/man/miniSTICS.Rd index bbd682f..8e958c7 100644 --- a/man/miniSTICS.Rd +++ b/man/miniSTICS.Rd @@ -110,6 +110,10 @@ Biomass: \item parsurg: PAR fraction \item extin: Light extinction coefficient \item rue: Radiation use efficiency (g MJ-1) +\item temin: minimal temperature for plant growth (°C) +\item teopt: minimum range of optimal temperature for plant growth (°C) +\item teoptbis: maximum range of optimal temperature for plant growth (°C) +\item temax: Maximal temperature above which plant growth stops (°C) } Water stress: diff --git a/man/plant_parameters.Rd b/man/plant_parameters.Rd index 3224ced..6249d4d 100644 --- a/man/plant_parameters.Rd +++ b/man/plant_parameters.Rd @@ -74,6 +74,10 @@ Biomass: \item parsurg: PAR fraction \item extin: Light extinction coefficient \item rue: Radiation use efficiency (g MJ-1) +\item temin: minimal temperature for plant growth (°C) +\item teopt: minimum range of optimal temperature for plant growth (°C) +\item teoptbis: maximum range of optimal temperature for plant growth (°C) +\item temax: Maximal temperature above which plant growth stops (°C) } Water stress: diff --git a/tests/testthat/fixtures/miniSTICS_example_reference.rds b/tests/testthat/fixtures/miniSTICS_example_reference.rds index e0ebab4..28b68f3 100644 Binary files a/tests/testthat/fixtures/miniSTICS_example_reference.rds and b/tests/testthat/fixtures/miniSTICS_example_reference.rds differ diff --git a/tests/testthat/test-parameter-validation.R b/tests/testthat/test-parameter-validation.R index aee2a37..23f2e39 100644 --- a/tests/testthat/test-parameter-validation.R +++ b/tests/testthat/test-parameter-validation.R @@ -71,6 +71,10 @@ valid_plant <- function() { extin = 1, rue = 1, tetstomate = 1, + temin = 1, + teopt = 1, + teoptbis = 1, + temax = 1, nbjgrain = 1, cgrain = 1, nbgrainmax = 1,