From 5acedb8a4f7fe90489359bc86392b6a732f41e5f Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Fri, 18 Oct 2024 17:30:31 +0200
Subject: [PATCH 1/8] refactor: change date management in crop parameter time
 series calculation (WIP)

Refs #6
---
 DESCRIPTION                                   |   5 +-
 R/CW_create_input.R                           |   7 +-
 R/calc_Kc.R                                   |  60 ++++---
 R/calc_RAW.R                                  |  17 +-
 R/calc_TAW.R                                  |  24 +--
 R/calc_isCycle.R                              |  11 +-
 R/calc_p.R                                    |  34 ++--
 R/calc_root_depth.R                           |  37 ++---
 R/utils.R                                     |  26 ++-
 README.Rmd                                    |   2 +-
 README.md                                     | 150 +++++++++---------
 man/CW_create_input.Rd                        |   9 +-
 man/calc_Kc.Rd                                |  30 ----
 man/calc_RAW.Rd                               |  29 ----
 man/calc_TAW.Rd                               |  47 ------
 man/calc_isCycle.Rd                           |   4 +-
 man/calc_p.Rd                                 |  28 ----
 man/calc_params.Rd                            |  79 +++++++++
 man/calc_root_depth.Rd                        |  31 ----
 tests/testthat.R                              |  12 ++
 tests/testthat/test-calc_interpolated_param.R |  13 ++
 21 files changed, 281 insertions(+), 374 deletions(-)
 delete mode 100644 man/calc_Kc.Rd
 delete mode 100644 man/calc_RAW.Rd
 delete mode 100644 man/calc_TAW.Rd
 delete mode 100644 man/calc_p.Rd
 create mode 100644 man/calc_params.Rd
 delete mode 100644 man/calc_root_depth.Rd
 create mode 100644 tests/testthat.R
 create mode 100644 tests/testthat/test-calc_interpolated_param.R

diff --git a/DESCRIPTION b/DESCRIPTION
index f07d184..bff441d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -21,7 +21,8 @@ RoxygenNote: 7.3.2
 Roxygen: list(markdown = TRUE)
 Suggests:
     knitr,
-    rmarkdown
+    rmarkdown,
+    testthat (>= 3.0.0)
 VignetteBuilder: knitr
 Imports:
     dplyr,
@@ -29,7 +30,9 @@ Imports:
     lubridate,
     readr,
     rlang,
+    stats,
     tibble,
     tidyr
 Depends:
     R (>= 2.10)
+Config/testthat/edition: 3
diff --git a/R/CW_create_input.R b/R/CW_create_input.R
index 382b034..853f71c 100644
--- a/R/CW_create_input.R
+++ b/R/CW_create_input.R
@@ -28,8 +28,7 @@
 #' plot(cw_input)
 #'
 CW_create_input <- function(crop,
-                            year,
-                            DatesR = seq(as.Date(paste0(year, "-01-01")), as.Date(paste0(year, "-12-31")), by = "1 day"),
+                            DatesR,
                             ETo,
                             P,
                             soil_depth,
@@ -37,8 +36,8 @@ CW_create_input <- function(crop,
                             cp = get_crop_params(crop),
                             sowing_date = cp$sowing_date) {
   year <- lubridate::year(DatesR[1])
-  Kc <- calc_Kc(cp, year = year, sowing_date = sowing_date)
-  isCycle <- calc_isCycle(cp, year = year, sowing_date = sowing_date)
+  Kc <- calc_Kc(cp, DatesR = DatesR, sowing_date = sowing_date)
+  isCycle <- calc_isCycle(cp, DatesR = DatesR, sowing_date = sowing_date)
   Zr <- calc_root_depth(cp,
                         soil_depth,
                         year,
diff --git a/R/calc_Kc.R b/R/calc_Kc.R
index cc413dd..1f2fca0 100644
--- a/R/calc_Kc.R
+++ b/R/calc_Kc.R
@@ -1,37 +1,59 @@
-#' Compute crop coefficient time series for one crop cycle or calendar year
+#' Compute crop parameters time series from crop parameters pivot points
+#'
+#' These functions compute the following parameters:
+#'
+#' - `Calc_Kc`: crop coefficient $K_c$
+#' - `calc_p`: critical depletion fraction $p=RAW/TAW$
+#' - `calc_root_depth`: root depth in m
+#' - `calc_RAW`: Readily Available Water (RAW) in mm
+#' - `calc_TAW`:  Total Available Water (TAW) in mm
 #'
 #' @param cp Crop parameters (See [get_crop_params])
-#' @param year Year of simulation (Only used for detecting leap year).
+#' @param AWC Available Water Capacity (mm)
+#' @param root_depth Root depth time series (m). See [calc_root_depth]
+#' @param TAW Total Available Water (mm). See [calc_TAW]
+#' @param p fraction of Readily Available Water time series. See [calc_p]
+#' @param DatesR A [vector] of continuous [Date]
 #' If `NULL`, the calculation is limited to the crop cycle of the plant
 #' @param sowing_date Sowing date in format "MM-DD"
 #'
-#' @return A [vector] of Kc for each day of the year or the crop cycle.
+#' @return A [vector] of the parameter for each day of the crop cycle or the period defined by `DatesR`.
+#'
+#' @details
+#' For `calc_TAW`, parameters `cp`, `year`, and `sowing_date` are useless if `root_depth` is
+#' provided.
+#'
+#'
 #' @export
+#' @rdname calc_params
 #'
 #' @examples
-#' Kc <- calc_Kc(get_crop_params("SB2023-soja"), year = NULL)
+#' # Compute Kc for the crop cycle
+#' Kc <- calc_Kc(get_crop_params("SB2023-soja"))
 #' plot(Kc, type = "l")
 #'
-#' Kc <- calc_Kc(get_crop_params("SB2023-soja"), year = 2024)
+#' # Compute Kc for a given period (less than one year)
+#' # with default sowing date defined in crop parameters
+#' DatesR <- seq(as.Date("2010-03-01"), as.Date("2010-10-31"), by = "1 day")
+#' Kc <- calc_Kc(get_crop_params("SB2023-soja"), DatesR = DatesR)
 #' plot(Kc, type = "l")
 #'
+#' # Compute Kc for a given period with user defined sowing date
+#' Kc <- calc_Kc(get_crop_params("FAO-MAIZE"),
+#'               DatesR = DatesR,
+#'               sowing_date = "05-01")
+#' plot(Kc, type = "l")
 calc_Kc <- function(cp,
-                    year,
+                    DatesR = NULL,
                     sowing_date = cp$sowing_date) {
-
   # TODO: stopifnot cp, year, sowing_date format
 
-  kc <- c(
-    rep(cp$Kini, cp$Lini),
-    cp$Kini + ((0:(cp$Ldev - 1)) / (cp$Ldev)) * (cp$Kmax -
-                                                   cp$Kini),
-    #pb dernière valeur égale à Kc_mid, 1 j trop tôt
-    rep(cp$Kmax, cp$Lmid),
-    cp$Kmax + ((1:cp$Lend) / cp$Lend) * (cp$Kend - cp$Kmax)
+  calc_interpolated_param(
+    DatesR,
+    sowing_date,
+    x = c(cp$Lini, cp$Ldev, cp$Lmid, cp$Lend),
+    y = c(cp$Kini, cp$Kmax, cp$Kmax, cp$Kend),
+    yleft = cp$Kini,
+    yright = cp$Kini
   )
-
-  if (!is.null(year)) {
-    kc <- complete_year(kc, year, sowing_date)
-  }
-  return(kc)
 }
diff --git a/R/calc_RAW.R b/R/calc_RAW.R
index 180f2bb..64ce44c 100644
--- a/R/calc_RAW.R
+++ b/R/calc_RAW.R
@@ -1,20 +1,5 @@
-#' Calculation of Readily Available Water (RAW)
-#'
-#' @param TAW Total Available Water (mm). See [calc_TAW]
-#' @param p fraction of Readily Available Water time series. See [calc_p]
-#'
-#' @return A [vector] of Readily Available Water.
 #' @export
-#'
-#' @examples
-#' cp <- get_crop_params("SB2023-soja")
-#' TAW <- calc_TAW(cp,
-#'                 AWC = 140,
-#'                 soil_depth = 1.2,
-#'                 year = 2024)
-#' p <- calc_p(cp, year = 2024)
-#' RAW <- calc_RAW(TAW, p)
-#' plot(RAW, type = "l")
+#' @rdname calc_params
 calc_RAW <- function(TAW, p) {
   return(p * TAW)
 }
diff --git a/R/calc_TAW.R b/R/calc_TAW.R
index 54e6061..c15c724 100644
--- a/R/calc_TAW.R
+++ b/R/calc_TAW.R
@@ -1,29 +1,11 @@
-#' Calculation of Total Available Water (TAW)
-#'
-#' @details
-#' Parameters `cp`, `year`, and `sowing_date` are useless if `root_depth` is
-#' provided.
-#'
-#' @inheritParams calc_root_depth
-#' @param AWC Available Water Capacity (mm)
-#' @param root_depth Root depth time series (m). See [calc_root_depth].
-#'
-#' @return A [vector] of Total Available Water (mm) for each day of the year or the crop cycle.
 #' @export
-#'
-#' @examples
-#' TAW <- calc_TAW(get_crop_params("SB2023-soja"),
-#'                 AWC = 140,
-#'                 soil_depth = 1.2,
-#'                 year = 2024)
-#' plot(TAW, type = "l")
-#'
+#' @rdname calc_params
 calc_TAW <- function(cp,
                      AWC,
                      soil_depth,
-                     year,
+                     DatesR = NULL,
                      sowing_date = cp$sowing_date,
-                     root_depth = calc_root_depth(cp, soil_depth, year, sowing_date)) {
+                     root_depth = calc_root_depth(cp, soil_depth, DatesR, sowing_date)) {
 
   return(AWC / soil_depth * root_depth)
 }
diff --git a/R/calc_isCycle.R b/R/calc_isCycle.R
index 3fbd390..62ab734 100644
--- a/R/calc_isCycle.R
+++ b/R/calc_isCycle.R
@@ -8,10 +8,11 @@
 #' @examples
 #' isCycle <- calc_isCycle(get_crop_params("SB2023-soja"), year = 2024)
 #'
-calc_isCycle <- function(cp, year, sowing_date = cp$sowing_date) {
-  isCycle <- rep(TRUE, cp$Lini + cp$Ldev + cp$Lmid + cp$Lend)
-  if (!is.null(year)) {
-    isCycle <- complete_year(isCycle, year, sowing_date)
-  }
+calc_isCycle <- function(cp, DatesR, sowing_date = cp$sowing_date) {
+  Ltot <-  c(cp$Lini, cp$Ldev, cp$Lmid, cp$Lend)
+  l <- get_period(DatesR, sowing_date, Ltot)
+  isCycle <- c(rep(FALSE, l$doy_start),
+               rep(TRUE, sum(Ltot)),
+               rep(FALSE, max(0, length(DatesR) - sum(Ltot) - l$doy_start)))
   return(isCycle)
 }
diff --git a/R/calc_p.R b/R/calc_p.R
index 1a68c48..775183e 100644
--- a/R/calc_p.R
+++ b/R/calc_p.R
@@ -1,30 +1,14 @@
-#' Compute critical depletion fraction (p) time series for one crop cycle or calendar year
-#'
-#' *p* is the fraction RAW / TAW
-#'
-#' @inheritParams calc_Kc
-#'
-#' @return A [vector] of critical depletion fraction for each day of the year or the crop cycle.
 #' @export
-#'
-#' @examples
-#' p <- calc_p(get_crop_params("SB2023-soja"),
-#'                       year = 2024)
-#' plot(p, type = "l")
-#'
+#' @rdname calc_params
 calc_p <- function(cp,
-                   year,
+                   DatesR = NULL,
                    sowing_date = cp$sowing_date) {
-  p <- c(
-    cp$p_ini + (0:(cp$Lini + cp$Ldev - 1
-    )) * (cp$p_mid - cp$p_ini) / (cp$Lini + cp$Ldev - 1)
-    ,
-    rep(cp$p_mid, cp$Lmid)
-    ,
-    cp$p_mid + (1:(cp$Lend)) * (cp$p_end - cp$p_mid) / (cp$Lend)
+  calc_interpolated_param(
+    DatesR,
+    sowing_date,
+    x = c(1, cp$Lini + cp$Ldev - 1, cp$Lmid, cp$Lend),
+    y = c(cp$p_ini, cp$p_mid, cp$p_mid, cp$p_end),
+    yleft = cp$p_ini,
+    yright = cp$p_ini
   )
-  if (!is.null(year)) {
-    p <- complete_year(p, year, sowing_date)
-  }
-  return(p)
 }
diff --git a/R/calc_root_depth.R b/R/calc_root_depth.R
index 88965a9..15d8a5a 100644
--- a/R/calc_root_depth.R
+++ b/R/calc_root_depth.R
@@ -1,30 +1,17 @@
-#' Compute root depth time series for one crop cycle or calendar year
-#'
-#' @inheritParams calc_Kc
-#' @param soil_depth Soil depth (m)
-#'
-#' @return A [vector] of root depth (m) for each day of the year or the crop cycle.
 #' @export
-#'
-#' @examples
-#' Zr <- calc_root_depth(get_crop_params("SB2023-soja"),
-#'                       soil_depth = 1.2,
-#'                       year = 2024)
-#' plot(Zr, type = "l")
-#'
+#' @rdname calc_params
 calc_root_depth <- function(cp,
                             soil_depth,
-                            year,
+                            DatesR = NULL,
                             sowing_date = cp$sowing_date) {
-  Zr <- c(cp$Zini + (0:(cp$Lini + cp$Ldev - 1) / (cp$Lini + cp$Ldev)) * (cp$Zend - cp$Zini),
-          rep(cp$Zend, cp$Lmid + cp$Lend))
-
-  if (!is.null(year)) {
-    Zr <- complete_year(Zr, year, sowing_date)
-  }
-
-  # Root depth is limited by soil depth
-  Zr[Zr > soil_depth] <- soil_depth
-
-  return(Zr)
+  Zini <- min(cp$Zini, soil_depth)
+  Zend <- min(cp$Zend, soil_depth)
+  calc_interpolated_param(
+    DatesR,
+    sowing_date,
+    x = c(1, cp$Lini + cp$Ldev - 1, cp$Lmid + cp$Lend),
+    y = c(Zini, Zend, Zend),
+    yleft = cp$Zini,
+    yright = cp$Zini
+  )
 }
diff --git a/R/utils.R b/R/utils.R
index f6f612e..8221392 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -12,11 +12,23 @@ CW_data <- function(file) {
   system.file("extdata", file, package = "CropWat")
 }
 
-complete_year <- function(x, year, sowing_date) {
-  # Cycle starting day (DOY)
-  doy_start <- julian(as.Date(paste0(year, "-", sowing_date)), origin = as.Date(paste0(year, "-01-01"))) + 1
-  nb_days_year <- ifelse(lubridate::leap_year(year), 366, 365)
-  x_year <- rep(ifelse(is.logical(x), FALSE, x[1]), nb_days_year)
-  x_year[doy_start:(doy_start + length(x) - 1)] <- x
-  return(x_year)
+calc_interpolated_param <- function(DatesR, sowing_date, x, y, yleft, yright) {
+  l <- get_period(DatesR, sowing_date, x)
+  stats::approx(x = l$doy_start + cumsum(x), y = y, xout = l$xout, yleft = yleft, yright = yright)$y
+}
+
+get_period <- function(DatesR, sowing_date, x) {
+  if (!is.null(DatesR)) {
+    stopifnot(inherits(DatesR, 'Date'),
+              length(DatesR) < 367,
+              !is.na(sowing_date),
+              grepl("^[0-9]{1,2}-[0-9]{1,2}$", sowing_date))
+    year <- lubridate::year(DatesR[1])
+    doy_start <- julian(as.Date(paste0(year, "-", sowing_date)), origin = DatesR[1])
+    xout <- seq_along(DatesR)
+  } else {
+    doy_start <- 0
+    xout <- seq(sum(x))
+  }
+  return(list(doy_start = doy_start, xout = xout))
 }
diff --git a/README.Rmd b/README.Rmd
index 4a1c5a5..9c177ff 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -65,7 +65,7 @@ X <- CW_create_state(cw_input = cw_input)
 
 # Choose an irrigation management
 # Example: Fill Soil moisture depletion when half of RAW is reached
-fun_irrig_half_RAW <- CW_irrig_fun_factory(RAW_ratio = 0.5, apply_Dr = TRUE)
+fun_irrig_half_RAW <- CW_irrig_fun_factory(RAW_ratio = 1.25, apply_Dr = TRUE)
 
 # Simulate water balance with an irrigation management
 cw_output <- CW_run_simulation(X, cw_input, FUN_IRRIG = fun_irrig_half_RAW)
diff --git a/README.md b/README.md
index 963042f..0a6efce 100644
--- a/README.md
+++ b/README.md
@@ -1,75 +1,75 @@
-
-<!-- README.md is generated from README.Rmd. Please edit that file -->
-
-# CropWat
-
-<!-- badges: start -->
-<!-- badges: end -->
-
-CropWat is an R Implementation of the FAO CropWat Model.
-
-This implements the functions describing water balance on an irrigated
-crop as described in FAO publications of the Irrigation and Drainage
-Series, namely, No. 56 “Crop Evapotranspiration - Guidelines for
-computing crop water requirements” and No. 33 titled “Yield response to
-water”.
-
-## Installation
-
-You can install the development version of CropWat like so:
-
-``` r
-# install.packages("remotes")
-remotes::install_git("https://forgemia.inra.fr/umr-g-eau/cropwat.git")
-```
-
-## Example
-
-This is a basic example which shows you how to simulate water balance of
-an irrigated crop.
-
-``` r
-# Load library
-library(CropWat)
-
-# Import example climate dataset
-data(ZH_3_clim)
-
-# Selecting year 2010
-meteo <- ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") &
-                   ZH_3_clim$Date <= as.Date("2010-12-31"), ]
-
-# Formatting model input
-cw_input <- CW_create_input("SB2023-soja",
-                            DatesR = meteo$Date,
-                            ETo = meteo$ETP,
-                            P = meteo$Ptot,
-                            soil_depth = 1.2,
-                            AWC = 140)
-plot(cw_input)
-```
-
-<img src="man/figures/README-example-1.png" width="100%" />
-
-``` r
-
-# Initial state of the model set up
-X <- CW_create_state(cw_input = cw_input)
-
-# Choose an irrigation management
-# Example: Fill Soil moisture depletion when half of RAW is reached
-fun_irrig_half_RAW <- CW_irrig_fun_factory(RAW_ratio = 0.5, apply_Dr = TRUE)
-
-# Simulate water balance with an irrigation management
-cw_output <- CW_run_simulation(X, cw_input, FUN_IRRIG = fun_irrig_half_RAW)
-plot(cw_output)
-```
-
-<img src="man/figures/README-example-2.png" width="100%" />
-
-``` r
-
-# Total amount of irrigation applied (mm)
-sum(cw_output$Ir)
-#> [1] 375.3663
-```
+
+<!-- README.md is generated from README.Rmd. Please edit that file -->
+
+# CropWat
+
+<!-- badges: start -->
+<!-- badges: end -->
+
+CropWat is an R Implementation of the FAO CropWat Model.
+
+This implements the functions describing water balance on an irrigated
+crop as described in FAO publications of the Irrigation and Drainage
+Series, namely, No. 56 “Crop Evapotranspiration - Guidelines for
+computing crop water requirements” and No. 33 titled “Yield response to
+water”.
+
+## Installation
+
+You can install the development version of CropWat like so:
+
+``` r
+# install.packages("remotes")
+remotes::install_git("https://forgemia.inra.fr/umr-g-eau/cropwat.git")
+```
+
+## Example
+
+This is a basic example which shows you how to simulate water balance of
+an irrigated crop.
+
+``` r
+# Load library
+library(CropWat)
+
+# Import example climate dataset
+data(ZH_3_clim)
+
+# Selecting year 2010
+meteo <- ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") &
+                   ZH_3_clim$Date <= as.Date("2010-12-31"), ]
+
+# Formatting model input
+cw_input <- CW_create_input("SB2023-soja",
+                            DatesR = meteo$Date,
+                            ETo = meteo$ETP,
+                            P = meteo$Ptot,
+                            soil_depth = 1.2,
+                            AWC = 140)
+plot(cw_input)
+```
+
+<img src="man/figures/README-example-1.png" width="100%" />
+
+``` r
+
+# Initial state of the model set up
+X <- CW_create_state(cw_input = cw_input)
+
+# Choose an irrigation management
+# Example: Fill Soil moisture depletion when half of RAW is reached
+fun_irrig_half_RAW <- CW_irrig_fun_factory(RAW_ratio = 0.5, apply_Dr = TRUE)
+
+# Simulate water balance with an irrigation management
+cw_output <- CW_run_simulation(X, cw_input, FUN_IRRIG = fun_irrig_half_RAW)
+plot(cw_output)
+```
+
+<img src="man/figures/README-example-2.png" width="100%" />
+
+``` r
+
+# Total amount of irrigation applied (mm)
+sum(cw_output$Ir)
+#> [1] 375.3663
+```
diff --git a/man/CW_create_input.Rd b/man/CW_create_input.Rd
index 9e8fc84..412e5c7 100644
--- a/man/CW_create_input.Rd
+++ b/man/CW_create_input.Rd
@@ -6,9 +6,7 @@
 \usage{
 CW_create_input(
   crop,
-  year,
-  DatesR = seq(as.Date(paste0(year, "-01-01")), as.Date(paste0(year, "-12-31")), by =
-    "1 day"),
+  DatesR,
   ETo,
   P,
   soil_depth,
@@ -20,17 +18,12 @@ CW_create_input(
 \arguments{
 \item{crop}{The code of the crop}
 
-\item{year}{Year of simulation (Only used for detecting leap year).
-If \code{NULL}, the calculation is limited to the crop cycle of the plant}
-
 \item{DatesR}{Simulation period (\link{vector} of \link{Date})}
 
 \item{ETo}{Potential Evaporation (mm/day)}
 
 \item{P}{Precipitation (mm/day)}
 
-\item{soil_depth}{Soil depth (m)}
-
 \item{AWC}{Available Water Capacity (mm)}
 
 \item{cp}{Crop parameters (See \link{get_crop_params})}
diff --git a/man/calc_Kc.Rd b/man/calc_Kc.Rd
deleted file mode 100644
index 712604f..0000000
--- a/man/calc_Kc.Rd
+++ /dev/null
@@ -1,30 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/calc_Kc.R
-\name{calc_Kc}
-\alias{calc_Kc}
-\title{Compute crop coefficient time series for one crop cycle or calendar year}
-\usage{
-calc_Kc(cp, year, sowing_date = cp$sowing_date)
-}
-\arguments{
-\item{cp}{Crop parameters (See \link{get_crop_params})}
-
-\item{year}{Year of simulation (Only used for detecting leap year).
-If \code{NULL}, the calculation is limited to the crop cycle of the plant}
-
-\item{sowing_date}{Sowing date in format "MM-DD"}
-}
-\value{
-A \link{vector} of Kc for each day of the year or the crop cycle.
-}
-\description{
-Compute crop coefficient time series for one crop cycle or calendar year
-}
-\examples{
-Kc <- calc_Kc(get_crop_params("SB2023-soja"), year = NULL)
-plot(Kc, type = "l")
-
-Kc <- calc_Kc(get_crop_params("SB2023-soja"), year = 2024)
-plot(Kc, type = "l")
-
-}
diff --git a/man/calc_RAW.Rd b/man/calc_RAW.Rd
deleted file mode 100644
index 4759abf..0000000
--- a/man/calc_RAW.Rd
+++ /dev/null
@@ -1,29 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/calc_RAW.R
-\name{calc_RAW}
-\alias{calc_RAW}
-\title{Calculation of Readily Available Water (RAW)}
-\usage{
-calc_RAW(TAW, p)
-}
-\arguments{
-\item{TAW}{Total Available Water (mm). See \link{calc_TAW}}
-
-\item{p}{fraction of Readily Available Water time series. See \link{calc_p}}
-}
-\value{
-A \link{vector} of Readily Available Water.
-}
-\description{
-Calculation of Readily Available Water (RAW)
-}
-\examples{
-cp <- get_crop_params("SB2023-soja")
-TAW <- calc_TAW(cp,
-                AWC = 140,
-                soil_depth = 1.2,
-                year = 2024)
-p <- calc_p(cp, year = 2024)
-RAW <- calc_RAW(TAW, p)
-plot(RAW, type = "l")
-}
diff --git a/man/calc_TAW.Rd b/man/calc_TAW.Rd
deleted file mode 100644
index 2fef094..0000000
--- a/man/calc_TAW.Rd
+++ /dev/null
@@ -1,47 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/calc_TAW.R
-\name{calc_TAW}
-\alias{calc_TAW}
-\title{Calculation of Total Available Water (TAW)}
-\usage{
-calc_TAW(
-  cp,
-  AWC,
-  soil_depth,
-  year,
-  sowing_date = cp$sowing_date,
-  root_depth = calc_root_depth(cp, soil_depth, year, sowing_date)
-)
-}
-\arguments{
-\item{cp}{Crop parameters (See \link{get_crop_params})}
-
-\item{AWC}{Available Water Capacity (mm)}
-
-\item{soil_depth}{Soil depth (m)}
-
-\item{year}{Year of simulation (Only used for detecting leap year).
-If \code{NULL}, the calculation is limited to the crop cycle of the plant}
-
-\item{sowing_date}{Sowing date in format "MM-DD"}
-
-\item{root_depth}{Root depth time series (m). See \link{calc_root_depth}.}
-}
-\value{
-A \link{vector} of Total Available Water (mm) for each day of the year or the crop cycle.
-}
-\description{
-Calculation of Total Available Water (TAW)
-}
-\details{
-Parameters \code{cp}, \code{year}, and \code{sowing_date} are useless if \code{root_depth} is
-provided.
-}
-\examples{
-TAW <- calc_TAW(get_crop_params("SB2023-soja"),
-                AWC = 140,
-                soil_depth = 1.2,
-                year = 2024)
-plot(TAW, type = "l")
-
-}
diff --git a/man/calc_isCycle.Rd b/man/calc_isCycle.Rd
index 53f5642..757a6a2 100644
--- a/man/calc_isCycle.Rd
+++ b/man/calc_isCycle.Rd
@@ -4,12 +4,12 @@
 \alias{calc_isCycle}
 \title{Compute cycle period extend during the year}
 \usage{
-calc_isCycle(cp, year, sowing_date = cp$sowing_date)
+calc_isCycle(cp, DatesR, sowing_date = cp$sowing_date)
 }
 \arguments{
 \item{cp}{Crop parameters (See \link{get_crop_params})}
 
-\item{year}{Year of simulation (Only used for detecting leap year).
+\item{DatesR}{A \link{vector} of continuous \link{Date}
 If \code{NULL}, the calculation is limited to the crop cycle of the plant}
 
 \item{sowing_date}{Sowing date in format "MM-DD"}
diff --git a/man/calc_p.Rd b/man/calc_p.Rd
deleted file mode 100644
index 9438c02..0000000
--- a/man/calc_p.Rd
+++ /dev/null
@@ -1,28 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/calc_p.R
-\name{calc_p}
-\alias{calc_p}
-\title{Compute critical depletion fraction (p) time series for one crop cycle or calendar year}
-\usage{
-calc_p(cp, year, sowing_date = cp$sowing_date)
-}
-\arguments{
-\item{cp}{Crop parameters (See \link{get_crop_params})}
-
-\item{year}{Year of simulation (Only used for detecting leap year).
-If \code{NULL}, the calculation is limited to the crop cycle of the plant}
-
-\item{sowing_date}{Sowing date in format "MM-DD"}
-}
-\value{
-A \link{vector} of critical depletion fraction for each day of the year or the crop cycle.
-}
-\description{
-\emph{p} is the fraction RAW / TAW
-}
-\examples{
-p <- calc_p(get_crop_params("SB2023-soja"),
-                      year = 2024)
-plot(p, type = "l")
-
-}
diff --git a/man/calc_params.Rd b/man/calc_params.Rd
new file mode 100644
index 0000000..4cea212
--- /dev/null
+++ b/man/calc_params.Rd
@@ -0,0 +1,79 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/calc_Kc.R, R/calc_RAW.R, R/calc_TAW.R,
+%   R/calc_p.R, R/calc_root_depth.R
+\name{calc_Kc}
+\alias{calc_Kc}
+\alias{calc_RAW}
+\alias{calc_TAW}
+\alias{calc_p}
+\alias{calc_root_depth}
+\title{Compute crop parameters time series from crop parameters pivot points}
+\usage{
+calc_Kc(cp, DatesR = NULL, sowing_date = cp$sowing_date)
+
+calc_RAW(TAW, p)
+
+calc_TAW(
+  cp,
+  AWC,
+  soil_depth,
+  DatesR = NULL,
+  sowing_date = cp$sowing_date,
+  root_depth = calc_root_depth(cp, soil_depth, DatesR, sowing_date)
+)
+
+calc_p(cp, DatesR = NULL, sowing_date = cp$sowing_date)
+
+calc_root_depth(cp, soil_depth, DatesR = NULL, sowing_date = cp$sowing_date)
+}
+\arguments{
+\item{cp}{Crop parameters (See \link{get_crop_params})}
+
+\item{DatesR}{A \link{vector} of continuous \link{Date}
+If \code{NULL}, the calculation is limited to the crop cycle of the plant}
+
+\item{sowing_date}{Sowing date in format "MM-DD"}
+
+\item{TAW}{Total Available Water (mm). See \link{calc_TAW}}
+
+\item{p}{fraction of Readily Available Water time series. See \link{calc_p}}
+
+\item{AWC}{Available Water Capacity (mm)}
+
+\item{root_depth}{Root depth time series (m). See \link{calc_root_depth}}
+}
+\value{
+A \link{vector} of the parameter for each day of the crop cycle or the period defined by \code{DatesR}.
+}
+\description{
+These functions compute the following parameters:
+}
+\details{
+\itemize{
+\item \code{Calc_Kc}: crop coefficient $K_c$
+\item \code{calc_p}: critical depletion fraction $p=RAW/TAW$
+\item \code{calc_root_depth}: root depth in m
+\item \code{calc_RAW}: Readily Available Water (RAW) in mm
+\item \code{calc_TAW}:  Total Available Water (TAW) in mm
+}
+
+For \code{calc_TAW}, parameters \code{cp}, \code{year}, and \code{sowing_date} are useless if \code{root_depth} is
+provided.
+}
+\examples{
+# Compute Kc for the crop cycle
+Kc <- calc_Kc(get_crop_params("SB2023-soja"))
+plot(Kc, type = "l")
+
+# Compute Kc for a given period (less than one year)
+# with default sowing date defined in crop parameters
+DatesR <- seq(as.Date("2010-03-01"), as.Date("2010-10-31"), by = "1 day")
+Kc <- calc_Kc(get_crop_params("SB2023-soja"), DatesR = DatesR)
+plot(Kc, type = "l")
+
+# Compute Kc for a given period with user defined sowing date
+Kc <- calc_Kc(get_crop_params("FAO-MAIZE"),
+              DatesR = DatesR,
+              sowing_date = "05-01")
+plot(Kc, type = "l")
+}
diff --git a/man/calc_root_depth.Rd b/man/calc_root_depth.Rd
deleted file mode 100644
index 305afe7..0000000
--- a/man/calc_root_depth.Rd
+++ /dev/null
@@ -1,31 +0,0 @@
-% Generated by roxygen2: do not edit by hand
-% Please edit documentation in R/calc_root_depth.R
-\name{calc_root_depth}
-\alias{calc_root_depth}
-\title{Compute root depth time series for one crop cycle or calendar year}
-\usage{
-calc_root_depth(cp, soil_depth, year, sowing_date = cp$sowing_date)
-}
-\arguments{
-\item{cp}{Crop parameters (See \link{get_crop_params})}
-
-\item{soil_depth}{Soil depth (m)}
-
-\item{year}{Year of simulation (Only used for detecting leap year).
-If \code{NULL}, the calculation is limited to the crop cycle of the plant}
-
-\item{sowing_date}{Sowing date in format "MM-DD"}
-}
-\value{
-A \link{vector} of root depth (m) for each day of the year or the crop cycle.
-}
-\description{
-Compute root depth time series for one crop cycle or calendar year
-}
-\examples{
-Zr <- calc_root_depth(get_crop_params("SB2023-soja"),
-                      soil_depth = 1.2,
-                      year = 2024)
-plot(Zr, type = "l")
-
-}
diff --git a/tests/testthat.R b/tests/testthat.R
new file mode 100644
index 0000000..80d0692
--- /dev/null
+++ b/tests/testthat.R
@@ -0,0 +1,12 @@
+# This file is part of the standard setup for testthat.
+# It is recommended that you do not modify it.
+#
+# Where should you do additional test configuration?
+# Learn more about the roles of various files in:
+# * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
+# * https://testthat.r-lib.org/articles/special-files.html
+
+library(testthat)
+library(CropWat)
+
+test_check("CropWat")
diff --git a/tests/testthat/test-calc_interpolated_param.R b/tests/testthat/test-calc_interpolated_param.R
new file mode 100644
index 0000000..560597b
--- /dev/null
+++ b/tests/testthat/test-calc_interpolated_param.R
@@ -0,0 +1,13 @@
+test_that("calc_interpolated_param works", {
+  x <- c(2, 2, 1)
+  y <- c(1, 3, 2)
+  expect_equal(calc_interpolated_param(NULL, NA, x, y, 1, 1),
+               c(1, 1, 2, 3, 2))
+  DatesR <- seq(as.Date("2000-01-01"), as.Date("2000-01-07"), by = "1 day")
+  expect_error(calc_interpolated_param(DatesR, NA, x, y, 1, 1))
+  expect_error(calc_interpolated_param(DatesR, "1-223", x, y, 1, 1))
+  expect_error(calc_interpolated_param(DatesR, "04/04", x, y, 1, 1))
+  expect_error(calc_interpolated_param(seq(as.Date("2000-01-01"), as.Date("2001-01-02"), by = "1 day"), "04-04", x, y, 1, 1))
+  expect_equal(calc_interpolated_param(DatesR, "01-02", x, y, 1, 1),
+               c(1,1,1,2,3,2,1))
+})
-- 
GitLab


From 1dc5eee6f633eb522ef066ccc39f7a568029a86e Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Fri, 18 Oct 2024 18:38:27 +0200
Subject: [PATCH 2/8] fix: debugging CW_create_input

And some doc fixes

Refs #6
---
 R/CW_create_input.R    | 18 ++++++++++++------
 R/calc_Kc.R            |  1 +
 R/calc_isCycle.R       |  4 +++-
 man/CW_create_input.Rd |  2 ++
 man/calc_isCycle.Rd    |  4 +++-
 man/calc_params.Rd     |  2 ++
 6 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/R/CW_create_input.R b/R/CW_create_input.R
index 853f71c..03fd416 100644
--- a/R/CW_create_input.R
+++ b/R/CW_create_input.R
@@ -35,15 +35,21 @@ CW_create_input <- function(crop,
                             AWC,
                             cp = get_crop_params(crop),
                             sowing_date = cp$sowing_date) {
-  year <- lubridate::year(DatesR[1])
   Kc <- calc_Kc(cp, DatesR = DatesR, sowing_date = sowing_date)
   isCycle <- calc_isCycle(cp, DatesR = DatesR, sowing_date = sowing_date)
   Zr <- calc_root_depth(cp,
-                        soil_depth,
-                        year,
-                        sowing_date)
-  TAW <- calc_TAW(cp, AWC, soil_depth, year, sowing_date)
-  p <- calc_p(cp, year, sowing_date)
+                        soil_depth = soil_depth,
+                        DatesR = DatesR,
+                        sowing_date = sowing_date)
+  TAW <- calc_TAW(
+    cp,
+    AWC = AWC,
+    soil_depth = soil_depth,
+    DatesR = DatesR,
+    sowing_date = sowing_date,
+    root_depth = Zr
+  )
+  p <- calc_p(cp, DatesR, sowing_date)
   cw_input <- tibble(
     DatesR = DatesR,
     isCycle = isCycle,
diff --git a/R/calc_Kc.R b/R/calc_Kc.R
index 1f2fca0..202e2b0 100644
--- a/R/calc_Kc.R
+++ b/R/calc_Kc.R
@@ -10,6 +10,7 @@
 #'
 #' @param cp Crop parameters (See [get_crop_params])
 #' @param AWC Available Water Capacity (mm)
+#' @param soil_depth Soil depth (m)
 #' @param root_depth Root depth time series (m). See [calc_root_depth]
 #' @param TAW Total Available Water (mm). See [calc_TAW]
 #' @param p fraction of Readily Available Water time series. See [calc_p]
diff --git a/R/calc_isCycle.R b/R/calc_isCycle.R
index 62ab734..ec44829 100644
--- a/R/calc_isCycle.R
+++ b/R/calc_isCycle.R
@@ -6,7 +6,9 @@
 #' @export
 #'
 #' @examples
-#' isCycle <- calc_isCycle(get_crop_params("SB2023-soja"), year = 2024)
+#' DatesR <- seq(as.Date("2010-03-01"), as.Date("2010-10-31"), by = "1 day")
+#' isCycle <- calc_isCycle(get_crop_params("SB2023-soja"), DatesR)
+#' plot(isCycle)
 #'
 calc_isCycle <- function(cp, DatesR, sowing_date = cp$sowing_date) {
   Ltot <-  c(cp$Lini, cp$Ldev, cp$Lmid, cp$Lend)
diff --git a/man/CW_create_input.Rd b/man/CW_create_input.Rd
index 412e5c7..41bb05e 100644
--- a/man/CW_create_input.Rd
+++ b/man/CW_create_input.Rd
@@ -24,6 +24,8 @@ CW_create_input(
 
 \item{P}{Precipitation (mm/day)}
 
+\item{soil_depth}{Soil depth (m)}
+
 \item{AWC}{Available Water Capacity (mm)}
 
 \item{cp}{Crop parameters (See \link{get_crop_params})}
diff --git a/man/calc_isCycle.Rd b/man/calc_isCycle.Rd
index 757a6a2..d7b0daf 100644
--- a/man/calc_isCycle.Rd
+++ b/man/calc_isCycle.Rd
@@ -21,6 +21,8 @@ A \link{vector} of \link{logical} of the crop cycle for each day of the year.
 Compute cycle period extend during the year
 }
 \examples{
-isCycle <- calc_isCycle(get_crop_params("SB2023-soja"), year = 2024)
+DatesR <- seq(as.Date("2010-03-01"), as.Date("2010-10-31"), by = "1 day")
+isCycle <- calc_isCycle(get_crop_params("SB2023-soja"), DatesR)
+plot(isCycle)
 
 }
diff --git a/man/calc_params.Rd b/man/calc_params.Rd
index 4cea212..ab605bd 100644
--- a/man/calc_params.Rd
+++ b/man/calc_params.Rd
@@ -40,6 +40,8 @@ If \code{NULL}, the calculation is limited to the crop cycle of the plant}
 
 \item{AWC}{Available Water Capacity (mm)}
 
+\item{soil_depth}{Soil depth (m)}
+
 \item{root_depth}{Root depth time series (m). See \link{calc_root_depth}}
 }
 \value{
-- 
GitLab


From 5e6b815f2bcb2cf14bd02b1cea720be0a7a5c93e Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Fri, 18 Oct 2024 18:58:10 +0200
Subject: [PATCH 3/8] docs: update README

---
 README.Rmd                       |   1 +
 README.md                        |   6 +++---
 man/figures/README-example-1.png | Bin 12709 -> 12756 bytes
 man/figures/README-example-2.png | Bin 10593 -> 10266 bytes
 4 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/README.Rmd b/README.Rmd
index 9c177ff..8933259 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -17,6 +17,7 @@ knitr::opts_chunk$set(
 # CropWat
 
 <!-- badges: start -->
+
 <!-- badges: end -->
 
 CropWat is an R Implementation of the FAO CropWat Model.
diff --git a/README.md b/README.md
index 0a6efce..bd60af1 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ CropWat is an R Implementation of the FAO CropWat Model.
 
 This implements the functions describing water balance on an irrigated
 crop as described in FAO publications of the Irrigation and Drainage
-Series, namely, No. 56 “Crop Evapotranspiration - Guidelines for
+Series, namely, No. 56 “Crop Evapotranspiration - Guidelines for
 computing crop water requirements” and No. 33 titled “Yield response to
 water”.
 
@@ -58,7 +58,7 @@ X <- CW_create_state(cw_input = cw_input)
 
 # Choose an irrigation management
 # Example: Fill Soil moisture depletion when half of RAW is reached
-fun_irrig_half_RAW <- CW_irrig_fun_factory(RAW_ratio = 0.5, apply_Dr = TRUE)
+fun_irrig_half_RAW <- CW_irrig_fun_factory(RAW_ratio = 1.25, apply_Dr = TRUE)
 
 # Simulate water balance with an irrigation management
 cw_output <- CW_run_simulation(X, cw_input, FUN_IRRIG = fun_irrig_half_RAW)
@@ -71,5 +71,5 @@ plot(cw_output)
 
 # Total amount of irrigation applied (mm)
 sum(cw_output$Ir)
-#> [1] 375.3663
+#> [1] 212.4834
 ```
diff --git a/man/figures/README-example-1.png b/man/figures/README-example-1.png
index c6bb85000f3bbf6c9358008cd15ccca8ebc9f82e..9f8f587a5bdc8ff8ff63d3c933904a6506e083bd 100644
GIT binary patch
literal 12756
zcmbVyc|29$*YLU5<)XO8WG<As!H`_!nv(gNXGNK($UGj2zLFthk(@H-nljHSO6F_I
zoXlJyqLAS|>ic`1=ks~q_n-GT=Qw-sHSV?U*=wz{qww0QG}LU=007Xa-B8v803-we
zh_94naF3SWMGCkvjMp?!ftvt;1pqq$8xPo30k4mMCVQZ{m6cVVmDPq-K8)2SlZ}l{
zTwELm!U9+<U<Y4VEPRj0+EroW;d2}Ym1mWgXSIPZd3pFACU27|9|oU|TE~Z*mR78m
z8$l};K0n#~p=-lxWAg{WMm`LFvVo7xQM*5K*a3ESf7sYz<KZVe_^3L9Nw{gbxoO3^
z9Ut(W;6{MYPi};{pkg3Qo;B<b*RU{{ZCF@iW>{lmSmS8yAI7m-v9ZUPgxF7?Vm}?l
zV}bZT(#OZc;>X92SH+Ky$B!Rn+OTHY$Y(Z&WsWvxj*b%Cv<Sy+VhOQY1i~i*VeZfE
z6Jc(SFn3gC2UOW%tH$H2#*eCw#;cBw8pGuO@N8@x9c>Fb`V_16DHg`~!}HVJr=w4w
zj^O)IcM33?X*1dwHaZG3fni6-<FSAE!<5FykB;UDZgYg#x#Qyq{+l~GT3K1y@o_z}
z?t;0(bdNp}j){%OAG3uq<_LcX!y>@sj|m(d9fj>~v%rR>x_iU)9stm`9AAhw_xw8m
za0XCQRxt2;zM2tzo1@LLExC2G@{I>IQ(g|uwQ(&y%1S||!j$YM&v9?kQPL4JD3Lt8
z6LaZ1hTz&VZ)73Rlvpfj$TxZTrmL%`$=5FA#|W&&l+?!L>e{z8cYFE0?m)Y<iZ79$
z6~`$cyx3VNABq59-9LqVL~TYXAmnh|VS92(;L^(>E?erDFgl{qkQRX+Pxk-W9z$$R
zN9RRd+h#Fd9$sEt4~!P)y)7Rqe9&lkSt?Y5k8r}~y4y`T+u*Yo^c_wPGC<4bm4VID
z{-psDb-x^KR?*~&GGt3XhcrG9tKEU+c@J#$3FpascdI^s#-<_5Z~dc>FnD7#SH4Cf
zVCTc{E~kK`{hbQdT&|fkdBv{0@P8uHSCth2bzb*Qv6t>WPBt@H7pK@JWs*m0ykqyd
z%@0cE5ZA7%#zoqCFVi2!ZY=Y>nzobCP4~yM>7T^2EC<~)(#Jhp;cz|2bS+@@@Zqox
zVORIjUAz$s_w>Ey;Jv|5mXRGyY-Hrq3TmFqf<2ls=R$S)95q)bLRQR6CgZ9Fpb{cO
zrf$db+2T>&2EVmF;l&AMiDW?u3TiSUQBL51N9}eRnsf4ZN3HIHLU)6Gxsfr~^z>r!
zOY~4w>BPmo4%gXYX+o5(#MJepoE*Qss@sI4D?Q<C3*Tg0B|{(dEq(d%%Tifl!iC>S
z922moXRp4&{XDjFSxs)~=XiC^Py>^@L({_=ZLY9=1-Vdejg6xAk|E4Z&wCkeA0?4a
zXG)Bw?oCJL*Rc*$=7$lT;>038;;<l>2+c*=8&}3+v&wG85v!7Iy$47*gxucG42NGc
zj7>v69LeN?kyS+^gmfb`_0l_bomW}D3@q5#<e)g3>TNR09#Ae^N;uF}lIX%Owh1*~
zAAG73BUE8LsYM_om%!Ft)70OIms@%##WlCuoxa+wjv9R8m9SGX6_v~KUS}q+K|spf
zJjUmyc2i;DbzJoLU5COP#8T4E*|e@UvBwn)h)LO_gOTw5eKC*R{mu?2R7DNV!;fYN
zKVp;>M_8htQU33roQKSB3dOffL*4lOvhUyFs!m=_e$_RD#pBe*q-8U&5@~@BxsZ1o
zN=5s%hqvdpe%zIFpl^SHFpIa&u3T1-gc;{lUxMc&48T4i2Q0<x$HIcSBt&qNjw*Gm
zuL4dkxwuMS_;7J0b*2T$<W#x$;#_JJSA`^QSw1=dk1_~2aqQEoI8KuoP~F}7kNbMv
z2d~f#4*|?)G-UQr`7&Ccju>@*-EVS&!K3YN>M1NKI9Jo-mqj&SUd9W6+I$FHs+Y63
zJVNwG6!;#<I0MDB!e*m$6eXihwsa22cik|=Y1GpZs}K=p(igdy5Gpu1v!XhF<Regw
z6*0Dd6--V8DD#CF_$dVvA9?_dXs@czxKKPQslDwg_=T*lwgZcRr&NL!V#IT7GvfJY
z0j7c#3zndVG8xuw%TN7;mIy|Trl_ROcUOU3Ib#xXt38~nVMFdkYdr^x{7ae*#?PnM
za}}<MT7IK_Z8Z8T;=7E9%xUzQW_wXcMNx)!sb46%$t3d0=NhzV(uJq;Jkp5<c;Ruf
zidtERBSdgkm~~sCa$(!2RxaZE^qhqrw<*{LPPT#I*kiKzsq$YSSL5($=(aC->hSTB
z@OiasT1&i*)@|P%JiM#IJ%G)pBsoZ;$m>O`3|iu5-K{CFtDz*7mqtHJ&pGB?!({^J
zLI+3pp~xq>fY;1mxLvZ1+BGJpb4a1a2nvZRr}}e(WD>hVF^Sdf;cgfB1L^UoL6>o9
zsJ36_d8xh>_P4;k)A?T>F(8|=nTJeEKP%MW_3jb7hkA2*`Wv*9?Ga!}Pi`XUs^oTT
z;5~FcBmBDjYralUn~u0J!-kOjM}iJw++cmLQCC^#3l>w7oq-ZuQG=<ijVZ|W-odq2
znv+C_1fSC{kIIkI^rT=@iq`T6;Imc}&|3TO1OFfXX>>$2iluC6+)L7A>21`YLp}9U
zwkZx)wL84{2C^`z3h~!n2g76O@qcAzLykd1Gl4u1@dhJV+FNM_9Os8W{zK^yZggV3
zmgfWrKB`s$wIA41UR?fs?1sl)n~fIWeDcxuwBuheX(@1xHiL}qEYwqY>We<LLoBhF
zEa3ZIeGD1fhwbed;e0FaD`Sr_|E#x)NoZgHabjJXAM9~Ex+TiW<tXi;G%@x<qOq-0
zK-1H8bHTVLCOWRo|Fl-iJUd=0Yggr$#S`=r4OHLRvk4_`4OF7LKk{w7e4b%K-Pi39
z(kHiwB8E%7@B)Y~2K?M~?o}L8vS!bpui8m8-+093t>9ZT07&$3o+CS_L@vS3(u;2O
zwUKs%36uY_&_yjpqhmOX#CN|#n(2fLlh|>X<U2V-uz)P7TJmhU?m8ekx3DC$X2CTW
zB+>l!#XXdRcH|QZa)aB;wKIgCj~{*@HvS8Z9v^eVnS(e{<9F>$lhQVnlC`_C{<_D8
z2TES8Daz*}zTt$l3)l2D7?1^wjvGHw@UPL@2|-k2C0<63-LT+=D4s-uR~)<#<Pby8
zALZtDRKY8OleLAcvw!CIo4a=YpU?N2FS4_-VS<O`kWBsQ#c?3pb+e?$I5r(I3|3pt
zVWM78P<dH7t@Fn65bOj7!u^||_9HNs5jR?eHHsd0E4q$>UHh0UGro!p;VM*2j}N~=
zK(ejdukg(S-IOZ0A{42B>27E)1aR^~7iQB|fo_*@E{W=lo?Z~-ft+^9yxv#OgRm2!
zJu=1->Fk=<9A1~X!v5VrmZoJS3{=o@a5=)9{(V3GSueUDa_Ufnu>)3_l=(6Q=QSz|
z+gui~KjfAdpQ6a*jZQMGBLlI}m-8r`^vQFAL7}L)c2O3A&Ea$!=qs&zVn^#>oqK*-
zltH*0(a_Fqpqet9Lh0n)Ew@O8FYxlq{&}M%+dD(DLTBgOR&9%}0SArz>s|7)OPsRr
zj-a|Sj%sB*fdCtv{441M<aGy`YLu<D$tB_Fmnk4CFqN~c5FNhosiat>P4tP81&dD?
zE2KKCe=VH6;!?-cLxt{b&xs%8OYahvy+lO)iQh0zR>m@sNTH1Bs=6XXOp%w}srDbQ
znH?D!akF21BVPEHnV<KWr}(~bl9mh4um8euUD_Bt|D*WBeO0z~p3H4CBr?sX0<B_Z
zV|xWm{V^IfUo)xcZ&bVZNC>w_z<{U7<0=Y&@ULeT(kx{MwWqBPmU;p1ZaghtQ)hj|
z=S}BdPzszTGD+3xGZLdt!9L~YPGWCQvKQV%Huo@(%uff^=rMx1lX6S@6^gilFTAqf
zEyzfA9pWQ$E53zzek?!NAPqE|{lTj8n<_WpEk4is?Zvjt0zFal9IlNr{}QI-&eebW
zFvRw&E#=fpH5A16<k8>))haLKmMa@RSsv2XfWQhOu~$%D-%jK68>GCk&o)o~W4s#s
z1tHYOXUSom@RRD9a!}5LtEj0bGI^d)ww~{>83_w#-)|x{Rq(wd+oC1b@&ChqzI@Fq
z(Zh_w*q^AL^qu;^<-rY-%I~MG^>5gGdiOYKf#ALOH#1F5Y7|4_OCrjHet#SATil3=
zh_GLO&vi8~5>ASKCK32D&}1F=nGy5ZywLUQg2)<RtLt7|R)+mLm(_XMgmu5bvtRs!
zW>KSRA<iAVP$CkFztM$ATTrIQD`goVj5q-G#>Ep-p(=uWQyW*NYIPd<m5g<I0Il(n
zHtCd2F!%K}S%wqkbKk%4CaNWIc4b)GRXVUElC55T(Y$~5XoO#FUtFr(b@NU6Tdz|;
zTc2?t((YUx*vm!{^HKRme7U>CLXRXwhx6~<WO{tOZUL|c$TjSDX)P$607-dknr?uW
zrTxO<M`m2xbug9yE;t#rQ3?zS7y`cFn*OO@8eB;(EnHQ6<~ZRy3o@axZ4v&b&)-(U
zm9L#M?KD^@`b(4+kwd$sNkyDxN12nU7a_VUZ9UEUjWm7=e9+9}f<|K>>^$zyrghe%
zkRVJiG-Ka%sQxZnFGxbxYI{OcjX^np0Krb|`ztKCFy%#0OoA#<ynYvR!CaOu&${Ij
z_?;K9w|O(eWYy$C{!nQkwa-W(@p?AG!J~bt)#eL5D;vMhlTQ+Ahl>@bZhC+2ynjS$
zRlnz{P!u_-Uy=0#JQX;ReM$-IjEz=q%F6ZCx3T@K6LVCsviJL5P9cwBuzw@_PSki0
znVH|fXANbkoWi_|NAry<CECD<c!Zrd1fKd*;h0^!0ZEQWB{N{0+$51^6Ol@{MR_sm
z@Ol(OMmmpiay^G6-T3K`Z&Y>TApVC!)R5=D1iWfGir6iR&???qAGaX^12x-UGCtF8
z<|fqiL;C+K=ZPTyo9`I9pGOKYnyu<?+wnkRaKdBgp38y1ViGd_thx3bMQ@m@z*(rM
zAl)b(vG=S#`6lqUC4<=dF6MxuM2;2IIab0;w2C4w&fOyFCxS}uZ=VWR5>Go2k^6(v
zfk4U~x{$Dw*GwgR{y*qUat``N@<AICebOwcP7|b&&pJ~)^4yI9t`d7+`yDF0(?Xtm
zx>ucoBrw!rOo*Y+Exl7SCF53F=G`uwlYxiV6gGwD+(}#qsrz?bukc|yaxtr#f`@&n
zN8h&co;NtGgKjq)=Vr{b%sI)_<*TRmK0E(X#Weec{w|Ww<2LHEI#yGu^2CyG@6?pd
za$MuSX}8s0ORslVID>@R-r-VbHCN+LclRltskQDkUMTf?N@(ZneN)cGmFHLSI{x^y
z_lXi2b24f!@<CB^%IyyW%L6GL65M^ygc`M3wa27YrH$38+|wO5o_*insPXGUOjXaQ
zt->NTkv4!Bi@?^YzU32?{XuS?cdg+{z)t@|pC?xCb{ItP{Gda0t~~8rFR2Gn7rf21
z@toJFdTZ$y<?C_x;CE~Er0#ELp_0Q8V~vg2!3sFjIht8-=q4x%7Pcmv4c+fygkqOC
zyeqYG(~aPTchkO71I}V<5ra8!no}Ufh)8}dWyF1)=m_+P4^|~J52;>23hCc0%w@D#
zvkKCC>fY!oEL;$0filQtWAuHfM0%|FQ^hcARHSg7$zIZRyyFq+3FQgm+?uU3ymt0t
z(gqfU4kXOxTgKFH6Kc^#>8A2t$=uTZdctaemK<hVxn<gERZIdwhOO_m3tt;M+36vI
zmMd=pYd70x6~6{8_8xS+y=^^=zYKjaw9n0P(M1F2+|v$Cy}MXAgATMM8o!@edbS+{
zbUQvQ4r;JEGYAmxFTV5`iV=JpU6SV42L<a6Ik~wJL#9T;8G6-5WcSI&ba!_?CT|OS
zIWVl$YQ`mS_ZnSdCNtY%&wWwu!<v?;PUQ~7?~w}FU5c^WDrDVKuc`5jt8dV*)^-Of
zfjB~^Ld*}4D`eZP;vNsXYeQ(tK6jk_AqKg$XBtq!cNy~UZE5OGc`5D47{xzrPl@m*
zMW>-9(r6zpu0Jih<YYVeiVWwROqNvJ;~@X?`*-KKP(N|)2{?zo#6)aZeCd*QLFt}e
zK!XDAbzgbh#2ya@d^8obh{%~uSW^Gg{?F{}ujb#CZ5yY^w>A~KJ<CgFmlizlG@R6O
z2K&d*!%dWk<foR`{4FTEq80dpb$&p7J(<sA#4u(XFAU1`f=K=|)af%~5^t~m^HD`H
zn13Vorgtd9((4Jjh*@5pF8i6z-bK+5ZJk~N8*N8SiwcCqX@M1m(fdjs@7+u=kH9gr
zRi)@Td5vQ$_L~gq7hi0h-^%9N+L7_y-MMY`sDxJeCo$mxSmi3ohnwZ9(AJSB1o?1l
zW$>SC%VD|t+9PuL-jd_j#Vh9=TPr=lE5Ib8YvPhU=wxD9pH<D})u$%sP;{$TfB{K8
zdYt9zi3<;xCZvAR<p0n{kH;7h$VA{E%#dTqrI#1-wrq1LGD0t%g|K3-an(+3CCuNu
zE59jp{#QS&X0;A=To$^hpx?Xevy&~Tau@~%P$ccWT$A)Rs*8Qr#9Ml50K@**EB)Cv
zJ@mXRe8Lj3_JeG-8e;df88x^;qx#rUv!auiesNWt!(psKeTQ6amdS`t!<WqohKN&%
zI;cTmsC-=B<euzYi>iiR<;qhlixo5uC$1QbtgF{d^v#RPiA8hfBL~eb2ae@11W*;s
zxTuxq%(D4SL&=<6K+!VR&bd+ur;6x)<xur8;BYgF?lDg{Kuk2VH&~4$G^Cn$hO;5f
zc+CmS2%BqiTj-p|B;oK_CM1o_m&c49emtm_8v`v`M<=JnE3V9uAw*HRV1G}0+WnKe
zQ1dIV<6&nS;%Ab=Bx0=al*ZIYp*FS6>^GFq<;=I_2{mWJ7ihoiaB0o#DpTrOk6bp{
zn~j^4^73KEn-k^{HDun?3dTZgi@*WPM}Dtow=aAuoee){H29VA?9=OMMo;)<-gSh3
zZhe_Ml*37x-}>#(?>Fz_{vNU$RAgD6yYEjd<aoZI6y^bf6t^lRaPRGB!57kje!C(;
zFf}~amK+P{R9Toe%}M4Yobf2YH+gT*qlo@3JLF}te?n@~pJ=h{n|N*`hzB)$;{*a9
zOo)~thO2j7$dtW+vb(h=`|EUF*JT!$kqvL7qjrA9OR*9$m(y;qrs<E&vYA+pOlO^Q
z>|Pm^63l!-QpgPaR=`w3cZrq`Z%LR{w|D1EX+$^)pqR>5>G4*}--^m_R0ET6^i@Vi
z$U=Tpu>Q@5ET~8`#{MRiHkkY#(44=j_F_<-95<Z#ySLLA?9O>>91S{|bqi+%dz<ud
zIG|;hrssv{jvSh?-9;m5@rVpsVPV>5CK*%HE#YEfFwk|}33L8nq<Z<??B{)B@t79b
zr9i7ZV4Vr-qt%)*^$u0)cd+suV9@#EF<dwPA-U%TR%CJK8xnFcYal<J`S$9ipHN-6
zGO37fy{7UkcciFVL;t9boWn3M1nZ?f&fka(C{^xgv1H$z7AZy`PHC`H=HJBeE`Fdv
z8QA#j&b<-2Wbi?;AE|#YBD>$Es*G_07+VnHRzTL77#uq6fFEa^Bl7Q@cH~0LI|gDR
zgK82B#hS>Nx8K~F%m^!~(!z{w3UN>S6JNE7pqCz@UCX$<EKElT%Y0vAh7N#=_x7p?
zOZWb8Ma0kxx063>B8`3_i62z_!S9Iqi0tfgD_e_(#Q7R}{E?A3{n4m5F1p}xv~LAR
zwarG49ir0k;lm(-UFXxpmXgC{ZPj^Yw%Hj@(Y8q;DAI^uhJs60AhY>{hXzAu=oMNA
zZ$XmC_v!gXu9inq<T>E^WXMs@!PX*Z)pKI+zGRuyWr1rX6tq#QJS<0I88VVuRk(OF
zDt2nv=Os+FJ7u=mt<yL)!xz(G&vkbq-I4y5_W;<xx9$B<f6CzF2lfkXmZNK@pzwWK
z47j;#KJhajJ@ih>LRSY-xee*`&L!-0)cC3T!}TpENmwdJmeg!y#XR5PgPtU*s7;V-
z>S|z6__k>-te})-Y<-!irR9|`pKqE{{jAwD`c09fTGM&qf+Klwr`kUEc*=}mTCHTg
z@a#+mT(odB)$za2h{L3e+_CqWpH2b1pP?-c$Zv#8zCaHdvl25HX{5aSG4h}uTA4w!
zbF-8RB0GWG-4~^;uMsIg-i^RGRP-!8h>@YVt``kzFaNImsgeTHI+5Kd^!f6^_A(ug
z#t=xlqnPD=>pJ4J+Sq<=claqG?#CT1;b9I+p4vZ6L+{)1CR$tE!@blUMc}+qkNL!L
zG^f57OD3F8N|~P?ab)u+zB8FqKtGbrPp`3)Ic12@I}43g@#Er(FPdMBVn#xz%pMH8
zMNV1Qwj<ik37Uy<#z<SeDvGS~Cj!7wHFi|@8*<DaQ&(PE3b;liuP59xx4^9TgntYg
zE8f&4_lh4cZdSyB1<1KU1TN|`OAu2+1He|2SRo{Y!6c>LAxS{d1;B2M8=zkC#ZPX@
zMC?_IEf;JH<d_<6I4mocp15(<50`U$PDlm|2wV-8imUK4mykM*B)RRrX+orVF(Rl=
zt6c}x0~1XUX^f?14Q9HT<7aC=LRT*Be5r3S<mXHg4xg)|%})WJFr9{K_3v*(=#u7o
z(yJCv?|2SmLAj`jt=$?TWAgA_S|V*{9rL<Y$&f$AHE$bjXuf9m>V@?A8p1fGL*r0=
zr-Xm?da1=Mo%uH8!pe4VL5pbJR(mn}#tC|2*!P4DYe7itunVx2YcY0ZcW4Vk7Bq87
z-5I&e-DX?O;p<%=veEMv;Jk|T0>~xYtW2tU!avi9!!f^t$}A7$C8{i^K+(P7Vd2y1
zVSLW*uDe5*#~?W_>*{LRTImEeR5_zME1Tb<n^9}swsG}B=X{OuxFSY~+c0ld;Tc9x
z!utwh=`9<6Jb*an@qLwlWADBnKG*Xa6P;SY>e!I2B@&xsi`9*Jb(*M9CzlUkFCo1k
zatD=ubjj2UGF)`l<9f=ah28Z5`q29m7A1(H%>0)(LA%;B*J3+;q}MupX1S8W1PgRI
zl9~vrOBe6o2}!S_oi|UQs4P<SSka$IXhnxGDM`xBDP5v%x(O~sa{lnJsDf3gS}{uX
zrp?d4PQRw0A8Nd!fcDR#XkQx)r`_>(k<G7qOqys}*LAni+5sOqF`*qd3Fsvp3o+~$
zpOu8J5`k+FUxYNP_RG76BljmF;7YJibub{5ue(L#&}3U_jf)VEIs<6~hFy0FC-R}|
zmmL?sQ#ic9qnHYP5Jjd91A-6(AsC4zA_fEKH&jp(_F5Q#6GfhXz%w)R+HHXvFNHN7
z`1Zv@qd^b~f84wv=WwU?pPD-b>9t6v)98ZL4pNzw>=KT`A+{|As5DcasKGL>D6CWw
zz=BhHWymDww`>tJK2XPlTj5^4U^O32*^fulqs#^6(eoE%zvi8M^zP2bQBj@?>Csej
z`G-EX$M4AbygOW8_(cUOoqd+|>8C%S@aO0ljiux@?XGZI5!w81o*7DqzO+~}>?g7g
zdUeJl9>`-Da{{NYh!(=R+DWS5qCcCEnNgI9;?T3%8|Bit#AbjMN{RkQga3pQuAXcO
zLJ1so(-t5&=l+S67D-A&fwX5pv!2q&U`pY#02Iyug^NK^{BxtKWH@vsxJfu|O7oBT
zu8U6*k`1$a>xWQ|bHM7r*)zZS@AMXne;XMR;?CjB$@N_XKkvN4;_jIk0i4RS6*mmY
zy&wvS`e{EmgzbUCD3bDbsAtOltD^*N8^@C}J{4mgwyG`Q=gRgZL^q%w+V(DC!imBm
zNImK0Y3>^*Or#4Kap-UldZNX);Ek^}hFx|n0JQaE=U_c#)njW*ikrLnXn0ErOVqzT
z@`jMS&>{0kIc2wkqM}&V0wuv8BGOUYe3GcZ3GIuW!-?OG2G57mQ1z7=-#$aA^FcFj
zM>8iQa=4Npwf<i%C12$B$3lY_FYKmR8o=bThGGdq7ruV`{$A7DRgCIE`{J#5gUPnv
zWmCHcY6pRC?B98PpXA?_ui42o+}<Ak3N3Sb>fH?S==&I6CM%#dt(K;}nbCUh+JQ)W
zR08IiL?mau+3JWGSd8|rBjv0B{l5AkKi-+RK5tzg7?q22Z;i;w5SB51bx^)3lHXH$
z+nB&<PC*PFx?tSs#f95*(~GdH^yl(=2&(D%8AVRXZ?vTM4fG!3uMPk6v2-?f6G}r^
z%qfKX5B2*d3P})L7woVKvi7Z{6xySI;sf>%-9MoNo!~jI8hc|29OyNa8(y45$2X;K
zrei)jrR(iKo7$r-q0T8So0rPzXZ5kjN3X_WoqP-n?!PYkI(8S3h9aG6Tg23r{(d_Z
zNQ$7t8xR$7x(X){D&$3_04I6wHS<aOvyj;KC@B`sR$liSwP8)vSze1_*Ur3c^Sz@=
zkAJr3A~~@2K79GR?T=Ynq;mSA?E|<1u|4V}^x1iTsV<&-$ODad<?u`AKmF&gtSv0<
zl`X^FH~xA30A7n>Hr-;O`YH0+8ErJN^;DOB|3W|ccYxFW@QP_>;rsiqzs|-Y@ljOC
z$d0|f^0VAn_&WhHg*?VJWp{k8Gl7-Eml<@z7Gj_+DCjI(hC*8r0O#EjLqC40##uF9
zVGF+NC^3fBlGm0zDsWw+bB<;W?KxD`B#y+2ho-l@gp!J|Ya*cLC0r#1XZ5@ScgW$X
zgRwno|Gr;K&2y>)C1V|=uKixid-u)?K##gIH*4YmCSuH^0?>&D>&8M{t!~;LJLqe<
z_+=_&rFZ$^kom7$-mg{(i`OyD-|I7*Y(oXXcE{CP05jyljj(wqoBtV_^+B9-NZ2~)
zOLdnESe^RPq|(G5GE`;6U#IHHkGa_}H>2kieXnw{@|pZGQVk9y9rMB`<R%93Z#>7`
z<dN3h?E6Njs!DT?uG4;@_9nUiD?nOAFz>wi3(Jf*GU2)S`%6w>>UHzQZ)MOS5WLlq
z^F$t}l%HvA{Iv~<D3DsJF~q4+_jY{$?;-{{24mE=_tjtz^;6GWq(sh``xiZU0=e|&
z3p8tlXjGM>SDWQN;5zI5yXfLbqX))F-1W)HrB95|!1Udq+ejM#z@#4U1u!)VEXJ<!
z;<SZuF@s#txch+d{?d^1xbbV9y|)FY2HBwohF?h-Tpmj%he**Q=U&6MVALmqDtHAt
zH0`G5_tIukSgj?&b4`BihP_T#W=9PkNBma@(TP-d$16YfH)T8vT>j80I{)B?u%7`;
z<i-QAV^E*qo65W;a6EkMzIjILA^Hk&GcdWR_ehD_z)`mD)rCd0x3zcRk8tgWo>xh6
zM>DZJ;786u1jFAv^DNYDvfM$+3eBIA{~g%AF>3aCCI1jvo++>nVB+)lKeZ>CQ6XGE
zs%sGJx!ckCy`TAbNAd^-FVg$o^`}=ei>3-O76{3EZe|-P;?m#r_mgzKB%ddgkC#L*
zKP$2fdd0W3w3mLw8z&S&CHWVQ8bNfD|EBoRrQUe8l~e}=GK`vQ4U_*9BKYciBKMn+
zXRl@}3=`;u8gLcAQw!&KY2kw3^?6loIL$$Hxm8<xebQV5CKFMms3bc&!P{t!ZNoW<
zjU2g$Ds5S#ZA#bkFTL&Co{q?5Q2bzwe~Kqyu`0ckMgW(W633Zan6WcZeZ^#;kkwAu
zxu%4sRj)ot_54f96YH}}d#Mi&<PFXb794B+am>CY){t{aSP>Uylv2%(l6aLN-oz)^
zddahOKX^0ihi~?6@ue|4)NE+O;bv$wS-V!g{_c}R{_d?UazpgqqcOCX62ln_+^;(b
z5g=#fl~{!jdE>)`R^x)#&+%2otd{ZxM(T{pf9B+Mto!qr7l$9YuMtQpnJh@^^0J0W
zCMdlu`<Z&mj<#`P&THlfzt3c*g9uZ{`!~GF+un<p<;3<{^wkOc1wILRY(GI^7ABRW
zE)s6OS`OrUCh){+dgiE@>bI|u79HVOr}JZZ#fdr>kwz<^+b1OIgu^o(V=$!aE#1sJ
zQrss6>ph);5R#ld_d#J(T4E%0W`J39g-k&6uN!!BTIDt|BDP=2MQ7RQuAe8rz31t*
z)f0Da-uL>j*N)condzD!zMd8#t@!*7yXo#$vbj2nrAUdlLH@)MdG+Y2sh!a=l8cs}
zpY@CNTWTYeOeMb?gt5g}6kcue^6RiUXWqf_qAFMkoiab?5L<|hvOAJL<Ak_{-1&@i
zy3?7~>Ne>|P%k^;p34d{W`=A$aK??^<hXgUrqt!q_aPpLj$pb$@s&Gjy?#e|>Ci@y
zGJ~o^^)BOszfPwIU^zDtdG#0hZ>l(pASUC{Pg!t@E-(A#uLFKba?eoWmvCBie=KjN
zMtdANGGf#<f?5+dOI}Idqgr~w15!bSepx@`=vLWw<pUXy<#?TZMom_9moxY`?GcYm
zXw0Xzswk#L1>~woKLC03yQI~eQnoj{l$b;1?G+mgsE><MKHDca#AKi+@hHlHaG_ms
z;ScGOQ&*ESsQx<mbuI~e8l)2g^o3N+XcjUzr&feQz#roUkY@1(ezOXQr+6k5er!D=
zc_x)Jb!KJf1UFGGNB5&vM&t+fRO+`6?wb{%T^Wd7BjGvI<QmQERQMk=G2-O66m?yz
z_*?~aE}<m|6*;2|lXI9(qSH+-CPUquh;Fg2LYLI7$;%bk=G!{V0K)rq6Ee+E`VQBi
z)~YB(NN{vNZ(t~jtb2Lw9S6}O$MxEZi-TkU@$;ZDP8_42{vwa%`MHh20s#K-owG;n
zkb)MK09nmqz^dGz=iR`H^7QHt_Q_Rla!W6S03^w1)t^Z7mg@61R4DxJuHTokuu}+E
zts+F-OX_%(=UxF#k+$!**GRsXba+)o+*vqVasKz8(+MJtAt+&R16+HJ%zpRZ<4#n^
z10tu9*x_T)pf;Eh3zDRL2In8A{_sEn-Z{W@o)T)1k8knVU@rhH!n(Urt2qxEpG{C9
z1=e+!?`rBfgKTD;>m&N)Hy&^eW=O!viN^-<%Foh|A9x{A$|Q7*c;?#25AOL$KI)F}
zWB!V`NvfpQwu7*Vm}pfTJwE>o=sCQ60j^E*KzK(#y#4HqlmS970tKs$JC7R7!1?39
zWc3@$2_Op`w`B<tDSYkkE$3ZPUTYDcVpZFG@;n{>=D(_LV)9+4i#vR}w|w6kXV^Zq
zcfRnE?<};MUji;*X^A-pg^P9xMV#iNVPKs;Y(gQ|6V3&H=KTEn?96uBa18tGJ@M#2
zdqK>%&Jb5JkCkn&M<-thHW|J06EbZ>U}w*n1H|{Fjt<Wyh2YmPWx4$D*Y5C!l{t2z
zSSHsdv_48^W?FLsv7G}u#LCrD$IMn<sOT7S!H%cdWiekBXP#(}6LxO9LXodQAP9G!
zg_`DAh@}4KlmhBPD1%1J7Iq{_gEBvW9pS1Ao5T0S3T@}ziLG8xt~hFl(jgs*VDqgm
z&8&Hu4t^G$hyeE(94vw+Cf|n;Ign0v+p;IFlvA#_S<88ZEA(Q9#idRIX7v{sV47!e
zvume5GfFvZ#r0<NSD{sK=FEO>x$aYMUeufga5Q&_zO?n@wTuFoy%&j5>`ti*C%=S$
zzBm!VHJA$J_|05%<#)s3w2EHXEAV5=Gv8K)%qyXo&LuaeWV<1SOiXDJ+viXQO|Tb>
zxP#Ow3(7cMxSr7O+SlPpnSb&4302{`i!`W^upa@bS=JPB!R^DXG?6hR(Q4RbiU`$Q
z5;q++WT@FpVHy{7K<eRGS8Af-;?U$vR%qsru}Q+vZY&v`!AFBWhQZ_#!`n_iztJ8H
zC6m!Z6~+ud?L7JA!AF1aEMPp_7TNqew$fWr6a33Nk@)Z|G?~nTI|t8xCVG-nPjtmR
z28@K7kY-B_P74aQf2@H*B{ka29zvo(TDt5>#A+D`_NOV&dTf;CNVAhwSh2w$U=%1R
z1PE#pT#18PxSYRO>3fkwd}*=K)s8yuC8AbM|C#bM<pGb4{>t0o+YqJ0X=H44CbO&n
z^S&W3RAtm#eg@o3Q-*~Ma_qq)3`LI3nQ&b)ak|D2H8@7{H=5ms9wlSw@ks_%qH65w
z%MGI)RePK4>=Y#dI)VcZ2&*rf6!)@EeU7d^`4!HUHGqMUOzz_tB?`ncAjcjjQ|9yj
z+e}z3y=|D7SEe?o1RUtUuL!sh0baQW7r>v;5$)Fg!gtBh<5f2$w`r(t`A|&E75_5>
z5S4+8Sr=p-WZ+0Y`=M4bYwpkwL18#l<I;S1v6}tNm~6@KV#DE+10?BW8n~wJ>u}L-
zBl<htnMXcH20ttbe-MO(F?DME->%j*P1pepHU+!?!H|adSR`#(i^5BW+bS}F^3YJa
z<p$>=$(D+M5L;S-ZWY(E%j)R_R|=@#Z@9oY(s6sgg9D!uJ;qnelb%M%01O7KgMov;
z1MkDjECv_u3J4VkocKEU?NZT;o2+C7T`CcDxT7Svb(<BDW~3B7BmDr_%X{Fs{k#)J
zw2<@)z995(M?)t-q=N%z!|A%?@rlmX@JPITNip^CwR4(;MaxLFAim;AT0Zbl(ArFH
zy`S7m-Pr4iq0+;@46ZwpVH<bmZaEt2(QqpMnQb=aWn_ovu2(ExSJI0Tv86*b;KY>7
z1-Vdsf6W)7L<xneKQ+qAmq_#@k!AOB{0E6Oc}C5k(^*~dFF<djCSYmQ>iL%dsWz1g
znlktwO$0RXk|$+_Z2vfFJrFI_rh-2brXnEKqcc}8{SH(E;czuH?~uAYGv6IS3&@{y
zAuL+m#lexPYCvMDAnS>1mWDqs$(RKEsCq?%cMLyPFGd}O-b(bHUmp1Ob7kh&C384l
z*e#ALZr+vmxw4eWkUx~K%%&!5sd;5D=eu{vChzAKT_#XeRb#4hhq^wry@PHBP-lk~
z9&%!0@ye;qY`wU0OASA)nRs~&ZOrj?_H5wrdq8#gAxnt*7Z^q87<RzPKpThibtK!A
zFsFROlk!+CAgb4G>ZR(3vol;ws>98E-_%}KC>&e!`aDW!M(W|sgk*{l8M@|noe;0X
zSg#~9%WvtxM%?htL-*T%xf}2R5Fc~&R9|sEyLQ53HOb^==PII<C4Q7haiD*{g3XWt
zAZnSiwee|u%q29GJS(``wYT}GZnMCZD1Yt-LHC>>B4)+<&PLb%0|D0Cl9CcRkNNaz
z`-Ls`rzEX))GBHA@=%VF1w4`vclqg*RK_J;Yjt&fUD89l;|TG6d?a*(qmj4Zo9^ge
zYYXWi)F&UvM&?~qRbAgV(POY%cf{`J-mP)9=%-tx7&@Na?4kSuCh%kIb+%sge*(gj
zx30~>0paua>TG?*OIP2*(ksH!^InGZQ?7l8y}qn8-`!nc;Ff5kXWS2t!_4qTS;`E^
zjt(k7RjDFyBZ~N>Rj*;?8I=9f8n*FS(-;Qzgx0oQ;hZdMclB+yq~QCgd#vEG+9Cv9
zWIJFxkE+Z<I1YCuo*wzy?-FX1g-SS;;J~(cKKa$XQ%~F9QrO!CR<aoi`wL!sfR!a<
zM_!Tv828SqNa|B=JbutqZos^KwhQHQO9`+;-%{kxb|FcK@Lx?1qd`371gYfWsqsHN
z@5```(1D|fr$qF$=fwYIGj{~o;T3c{jHDbgb#zcJF!J8iJ+eEF4*v|!25d8X<+Od}
zf~RxOm~3rzF}tU9$G{_3{U4@^Z}NfHSNMe<;!_lHw(6h8r4<f%wOW@KO;d8^15?-Q
z;cct}aMj^K!@(k#_{F*(-z-TAaqe^szApm18U)ow{7VnWHD@wTAd&^iw?^xmUyb4w
z`64_s19TL>4fIaTznf8H*j%=v%-590sB_M}e=mNLn2}9v;!6E)TAF8HN;d_<qIf>*
zZ0YQs(3D-$HY$*B&=kw^xTHCqP6y|y#Z25XeIwxsB_b!KKZO^`2Uc^6{}zEovXB#q
z*j#>Q@1|#x$SHDB{U5Crg*Qy=7BH)ZEymxf31kNsUf#>NBeNVrQkiveG-8i%RqOd*
gyWs!d9Y>hk8gJJfRK4N7`v9P(qODx4c<cWE0cMpNtpET3

literal 12709
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

diff --git a/man/figures/README-example-2.png b/man/figures/README-example-2.png
index 606f7e098a670e0967f2f68d1f06767df333a118..fbb354504bcd7097d6a3cefcc919f4fb96cccf40 100644
GIT binary patch
literal 10266
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

literal 10593
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

-- 
GitLab


From e509fb3833154910c2e162618bbac7f85a1e89f6 Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Sat, 19 Oct 2024 17:28:56 +0200
Subject: [PATCH 4/8] feat(CW_create_input): multi years support

Refs #6
---
 R/CW_create_input.R                     | 65 ++++++++++++++-----------
 R/utils.R                               | 21 +++++++-
 man/CW_create_input.Rd                  |  4 +-
 tests/testthat/test-get_yearly_cycles.R | 46 +++++++++++++++++
 4 files changed, 105 insertions(+), 31 deletions(-)
 create mode 100644 tests/testthat/test-get_yearly_cycles.R

diff --git a/R/CW_create_input.R b/R/CW_create_input.R
index 03fd416..f2d37ea 100644
--- a/R/CW_create_input.R
+++ b/R/CW_create_input.R
@@ -13,9 +13,9 @@
 #' # Import example climate dataset
 #' data(ZH_3_clim)
 #' str(ZH_3_clim)
-#' # Selecting year 2010
+#' # Selecting years 2010 and 2011
 #' meteo <-
-#'   ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") & ZH_3_clim$Date <= as.Date("2010-12-31"), ]
+#'   ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") & ZH_3_clim$Date <= as.Date("2011-12-31"), ]
 #' # Create model input
 #' cw_input <- CW_create_input("SB2023-soja",
 #'                             DatesR = meteo$Date,
@@ -35,32 +35,41 @@ CW_create_input <- function(crop,
                             AWC,
                             cp = get_crop_params(crop),
                             sowing_date = cp$sowing_date) {
-  Kc <- calc_Kc(cp, DatesR = DatesR, sowing_date = sowing_date)
-  isCycle <- calc_isCycle(cp, DatesR = DatesR, sowing_date = sowing_date)
-  Zr <- calc_root_depth(cp,
-                        soil_depth = soil_depth,
-                        DatesR = DatesR,
-                        sowing_date = sowing_date)
-  TAW <- calc_TAW(
-    cp,
-    AWC = AWC,
-    soil_depth = soil_depth,
-    DatesR = DatesR,
-    sowing_date = sowing_date,
-    root_depth = Zr
-  )
-  p <- calc_p(cp, DatesR, sowing_date)
-  cw_input <- tibble(
-    DatesR = DatesR,
-    isCycle = isCycle,
-    P = P,
-    Kc = Kc,
-    Zr = Zr,
-    ETc = Kc * ETo,
-    p = p,
-    TAW = TAW,
-    RAW = calc_RAW(TAW, p)
-  )
+
+  cycles <- get_yearly_cycles(DatesR)
+
+  l <- lapply(cycles, function(cycle) {
+    dates <- cycle$dates
+    Kc <- calc_Kc(cp, DatesR = dates, sowing_date = sowing_date)
+    isCycle <- calc_isCycle(cp, DatesR = dates, sowing_date = sowing_date)
+    Zr <- calc_root_depth(
+      cp,
+      soil_depth = soil_depth,
+      DatesR = dates,
+      sowing_date = sowing_date
+    )
+    TAW <- calc_TAW(
+      cp,
+      AWC = AWC,
+      soil_depth = soil_depth,
+      DatesR = dates,
+      sowing_date = sowing_date,
+      root_depth = Zr
+    )
+    p <- calc_p(cp, dates, sowing_date)
+    cw_input <- tibble(
+      DatesR = dates,
+      isCycle = isCycle,
+      P = P[cycle$which],
+      Kc = Kc,
+      Zr = Zr,
+      ETc = Kc * ETo[cycle$which],
+      p = p,
+      TAW = TAW,
+      RAW = calc_RAW(TAW, p)
+    )
+  })
+  cw_input <- bind_rows(l)
   attr(cw_input, "crop_params") <- cp
   attr(cw_input, "soil_params") <- list(soil_depth = soil_depth, AWC = AWC)
   class(cw_input) <- c("CW_input", "CW_TS", class(cw_input))
diff --git a/R/utils.R b/R/utils.R
index 8221392..21b3a2a 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -20,7 +20,7 @@ calc_interpolated_param <- function(DatesR, sowing_date, x, y, yleft, yright) {
 get_period <- function(DatesR, sowing_date, x) {
   if (!is.null(DatesR)) {
     stopifnot(inherits(DatesR, 'Date'),
-              length(DatesR) < 367,
+              DatesR[length(DatesR)] <= DatesR[1] + lubridate::years(),
               !is.na(sowing_date),
               grepl("^[0-9]{1,2}-[0-9]{1,2}$", sowing_date))
     year <- lubridate::year(DatesR[1])
@@ -32,3 +32,22 @@ get_period <- function(DatesR, sowing_date, x) {
   }
   return(list(doy_start = doy_start, xout = xout))
 }
+
+get_yearly_cycles <- function(DatesR) {
+  years <- unique(lubridate::year(DatesR))
+  start_dates <- rep(DatesR[1], length(years))
+  lubridate::year(start_dates) <- years
+  end_dates <- start_dates - lubridate::days() + lubridate::years()
+  end_dates[length(end_dates)] <- last(DatesR)
+  if (last(end_dates) <= last(start_dates)) {
+    years <- years[- length(years)]
+  }
+  lapply(setNames(seq_along(years), years), function(i) {
+    dates <- seq(start_dates[i], end_dates[i], by = "1 day")
+    list(year = years[i],
+         start = start_dates[i],
+         end = end_dates[i],
+         dates = dates,
+         which = which(DatesR %in% dates))
+  })
+}
diff --git a/man/CW_create_input.Rd b/man/CW_create_input.Rd
index 41bb05e..dee6296 100644
--- a/man/CW_create_input.Rd
+++ b/man/CW_create_input.Rd
@@ -42,9 +42,9 @@ Create CropWat model input
 # Import example climate dataset
 data(ZH_3_clim)
 str(ZH_3_clim)
-# Selecting year 2010
+# Selecting years 2010 and 2011
 meteo <-
-  ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") & ZH_3_clim$Date <= as.Date("2010-12-31"), ]
+  ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") & ZH_3_clim$Date <= as.Date("2011-12-31"), ]
 # Create model input
 cw_input <- CW_create_input("SB2023-soja",
                             DatesR = meteo$Date,
diff --git a/tests/testthat/test-get_yearly_cycles.R b/tests/testthat/test-get_yearly_cycles.R
new file mode 100644
index 0000000..2947a9f
--- /dev/null
+++ b/tests/testthat/test-get_yearly_cycles.R
@@ -0,0 +1,46 @@
+test_that("get_yearly_cycles works", {
+  # Regular calendar year
+  DatesR <- seq(as.Date("2019-01-01"), as.Date("2019-12-31"), by = "1 day")
+  expect_equal(get_yearly_cycles(DatesR), list("2019" =
+                                                 list(
+                                                   year = 2019,
+                                                   start = DatesR[1],
+                                                   end = last(DatesR),
+                                                   dates = DatesR,
+                                                   which = seq(365)
+                                                 )))
+  # Calendar leap year
+  DatesR <- seq(as.Date("2020-01-01"), as.Date("2020-12-31"), by = "1 day")
+  expect_equal(get_yearly_cycles(DatesR), list("2020" =
+                                                 list(
+                                                   year = 2020,
+                                                   start = DatesR[1],
+                                                   end = last(DatesR),
+                                                   dates = DatesR,
+                                                   which = seq(366)
+                                                 )))
+  # Not calendar year
+  DatesR <- seq(as.Date("2020-06-01"), as.Date("2021-05-31"), by = "1 day")
+  expect_equal(get_yearly_cycles(DatesR), list("2020" =
+                                                 list(
+                                                   year = 2020,
+                                                   start = DatesR[1],
+                                                   end = last(DatesR),
+                                                   dates = DatesR,
+                                                   which = seq(365)
+                                                 )))
+  # Not complete year into calendar year
+  DatesR <- seq(as.Date("2020-06-01"), as.Date("2020-12-31"), by = "1 day")
+  expect_equal(get_yearly_cycles(DatesR), list("2020" =
+                                                 list(
+                                                   year = 2020,
+                                                   start = DatesR[1],
+                                                   end = last(DatesR),
+                                                   dates = DatesR,
+                                                   which = seq(length(DatesR))
+                                                 )))
+  # 2 years
+  DatesR <- seq(as.Date("2019-01-01"), as.Date("2020-12-31"), by = "1 day")
+  cycles <- get_yearly_cycles(DatesR)
+
+})
-- 
GitLab


From 2be79863b01d700786ebdb0b0574efa6b3270050 Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Sat, 19 Oct 2024 18:53:20 +0200
Subject: [PATCH 5/8] fix(CW_model): Ks and ETc_adj should not be impacted
 outside crop cycles

---
 R/CW_model.R | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/R/CW_model.R b/R/CW_model.R
index d56564e..351a836 100644
--- a/R/CW_model.R
+++ b/R/CW_model.R
@@ -27,13 +27,13 @@
 CW_model <- function(X, input, FUN_IRRIG = CW_irrig_Dr) {
   Dr <- X$Dr
 
-  if (input$isCycle == 0 && X$isCycle == 1) {
-    # TODO Check what does that mean
+  if (!input$isCycle && X$isCycle) {
+    # What happens during the harvest day?
     Dr <- Dr * input$TAW / X$TAW - input$P # ???
   }
   Dr <- max(0, Dr - input$P)
 
-  if (Dr > input$RAW) {
+  if (input$isCycle && Dr > input$RAW) {
     Ks <- max(0, (input$TAW - Dr) / (input$TAW - input$RAW))
   } else {
     Ks <- 1
-- 
GitLab


From e3003fcd9c59c4ac67faffc768a9d81b2137786b Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Sat, 19 Oct 2024 18:53:50 +0200
Subject: [PATCH 6/8] docs: update README with multi years simulation

Refs #6
---
 README.Rmd                       |   5 +++--
 README.md                        |  22 +++++++++++++++++++---
 man/figures/README-example-1.png | Bin 12756 -> 12238 bytes
 man/figures/README-example-2.png | Bin 10266 -> 9539 bytes
 4 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/README.Rmd b/README.Rmd
index 8933259..ddef639 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -44,13 +44,14 @@ irrigated crop.
 ```{r example}
 # Load library
 library(CropWat)
+library(dplyr)
 
 # Import example climate dataset
 data(ZH_3_clim)
 
 # Selecting year 2010
 meteo <- ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") &
-                   ZH_3_clim$Date <= as.Date("2010-12-31"), ]
+                   ZH_3_clim$Date <= as.Date("2014-12-31"), ]
 
 # Formatting model input
 cw_input <- CW_create_input("SB2023-soja",
@@ -73,6 +74,6 @@ cw_output <- CW_run_simulation(X, cw_input, FUN_IRRIG = fun_irrig_half_RAW)
 plot(cw_output)
 
 # Total amount of irrigation applied (mm)
-sum(cw_output$Ir)
+cw_output |> group_by(lubridate::year(DatesR)) |> summarise(irrig_volume = sum(Ir))
 ```
 
diff --git a/README.md b/README.md
index bd60af1..6c63728 100644
--- a/README.md
+++ b/README.md
@@ -31,13 +31,22 @@ an irrigated crop.
 ``` r
 # Load library
 library(CropWat)
+library(dplyr)
+#> 
+#> Attaching package: 'dplyr'
+#> The following objects are masked from 'package:stats':
+#> 
+#>     filter, lag
+#> The following objects are masked from 'package:base':
+#> 
+#>     intersect, setdiff, setequal, union
 
 # Import example climate dataset
 data(ZH_3_clim)
 
 # Selecting year 2010
 meteo <- ZH_3_clim[ZH_3_clim$Date >= as.Date("2010-01-01") &
-                   ZH_3_clim$Date <= as.Date("2010-12-31"), ]
+                   ZH_3_clim$Date <= as.Date("2014-12-31"), ]
 
 # Formatting model input
 cw_input <- CW_create_input("SB2023-soja",
@@ -70,6 +79,13 @@ plot(cw_output)
 ``` r
 
 # Total amount of irrigation applied (mm)
-sum(cw_output$Ir)
-#> [1] 212.4834
+cw_output |> group_by(lubridate::year(DatesR)) |> summarise(irrig_volume = sum(Ir))
+#> # A tibble: 5 × 2
+#>   `lubridate::year(DatesR)` irrig_volume
+#>                       <dbl>        <dbl>
+#> 1                      2010         212.
+#> 2                      2011         191.
+#> 3                      2012         287.
+#> 4                      2013         213.
+#> 5                      2014         139.
 ```
diff --git a/man/figures/README-example-1.png b/man/figures/README-example-1.png
index 9f8f587a5bdc8ff8ff63d3c933904a6506e083bd..d62834a14498b9cdd3eb6d90a38d1534e19ac27f 100644
GIT binary patch
literal 12238
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
Fe*n6Qvi<-7

literal 12756
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

diff --git a/man/figures/README-example-2.png b/man/figures/README-example-2.png
index fbb354504bcd7097d6a3cefcc919f4fb96cccf40..5b4f760f3d13b51e0c1ed62638d01263517166ba 100644
GIT binary patch
literal 9539
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
JIehN7{|8Z6FHQge

literal 10266
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

-- 
GitLab


From 8a5d039c247729b0277303efee94d56734755c76 Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Sun, 20 Oct 2024 17:06:13 +0200
Subject: [PATCH 7/8] tests: various combinations of crop cycles and sowing
 dates

Refs #6
---
 R/CW_create_input.R                           |  5 +++
 man/CW_create_input.Rd                        |  5 +++
 tests/testthat/test-calc_interpolated_param.R | 31 +++++++++++++++++++
 3 files changed, 41 insertions(+)

diff --git a/R/CW_create_input.R b/R/CW_create_input.R
index f2d37ea..9e67d4e 100644
--- a/R/CW_create_input.R
+++ b/R/CW_create_input.R
@@ -1,5 +1,10 @@
 #' Create CropWat model input
 #'
+#' @details
+#' The crop cycle begins at the first matching sowing date in the simulation
+#' period. So, first time steps of simulation if are not in a crop cycle even
+#' if they occur during the crop cycle.
+#'
 #' @inheritParams get_crop_params
 #' @inheritParams calc_TAW
 #' @param DatesR Simulation period ([vector] of [Date])
diff --git a/man/CW_create_input.Rd b/man/CW_create_input.Rd
index dee6296..7fc559e 100644
--- a/man/CW_create_input.Rd
+++ b/man/CW_create_input.Rd
@@ -38,6 +38,11 @@ A \link{tibble} containing the input times series.
 \description{
 Create CropWat model input
 }
+\details{
+The crop cycle begins at the first matching sowing date in the simulation
+period. So, first time steps of simulation if are not in a crop cycle even
+if they occur during the crop cycle.
+}
 \examples{
 # Import example climate dataset
 data(ZH_3_clim)
diff --git a/tests/testthat/test-calc_interpolated_param.R b/tests/testthat/test-calc_interpolated_param.R
index 560597b..6cca315 100644
--- a/tests/testthat/test-calc_interpolated_param.R
+++ b/tests/testthat/test-calc_interpolated_param.R
@@ -11,3 +11,34 @@ test_that("calc_interpolated_param works", {
   expect_equal(calc_interpolated_param(DatesR, "01-02", x, y, 1, 1),
                c(1,1,1,2,3,2,1))
 })
+test_that("calc_interpolated_param works over new year's day :)", {
+  cp <- get_crop_params("SB2023-soja")
+  sowing_date = "11-01"
+  x <- c(cp$Lini, cp$Ldev, cp$Lmid, cp$Lend)
+  y <- c(cp$Kini, cp$Kmax, cp$Kmax, cp$Kend)
+  yleft <- cp$Kini
+  yright <- cp$Kini
+  DatesR <-  seq(as.Date("2000-10-01"), as.Date("2001-09-30"), by = "1 day")
+  p <- calc_interpolated_param(
+    DatesR,
+    sowing_date = sowing_date,
+    x = x,
+    y = y,
+    yleft = yleft,
+    yright = yright
+  )
+  expect_equal(p[cp$Lini + 31], cp$Kini) # 10-31
+  expect_gt(p[cp$Lini + 32], cp$Kini) # 11-01 = sowing date
+  expect_lt(p[cp$Lini + cp$Ldev + 30], cp$Kmax) # Day before end of dev
+  expect_equal(p[cp$Lini + cp$Ldev + 31], cp$Kmax) # Max plateau
+  DatesR <-  seq(as.Date("2001-01-01"), as.Date("2001-10-31"), by = "1 day")
+  p <- calc_interpolated_param(
+    DatesR,
+    sowing_date = sowing_date,
+    x = x,
+    y = y,
+    yleft = yleft,
+    yright = yright
+  )
+  expect_true(all(p == cp$Kini))
+})
-- 
GitLab


From 0088e701fdfd63c162cfafd536ce1db005fbecb7 Mon Sep 17 00:00:00 2001
From: David Dorchies <david.dorchies@inrae.fr>
Date: Sun, 20 Oct 2024 19:03:45 +0200
Subject: [PATCH 8/8] chore: upgrade to v0.1.0.9000

Refs #14
---
 DESCRIPTION | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index bff441d..2fbd176 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: CropWat
 Type: Package
 Title: R Implementation of the FAO CropWat Model
-Version: 0.1.0
+Version: 0.1.0.9000
 Authors@R: c(
     person("David", "Dorchies", , "david.dorchies@inrae.fr", role = c("aut", "cre"),
            comment = c(ORCID = "0000-0002-6595-7984")),
-- 
GitLab