Skip to contents

Estimates the wet season calendar, including the onset date, cessation date, and duration, based on an agroclimatic approach. The function relies on daily soil water balance parameters.

Usage

calcSeasCal(data, onsetWind.start, onsetWind.end, cessaWind.end, soilWHC)

Arguments

data

An R dataframe returned by calcWatBal or a dataframe with similar parameters.

onsetWind.start

The earliest possible start date for the onset window in "MM-DD" format.

onsetWind.end

The latest possible end date for the onset window in "MM-DD" format.

cessaWind.end

The latest possible end date for the cessation window in "MM-DD" format.

soilWHC

The available soil water holding capacity at root zone depth (in mm).

Value

A dataframe containing the following columns:

Year

The year of the season (YYYY).

OnsetDate

The onset date, formatted as "YYYY-MM-DD".

OnsetDOY

The Julian day (DOY) of the onset.

OnsetValue

The number of days since onsetWind.start.

CessationDate

The cessation date, formatted as "YYYY-MM-DD".

CessationDOY

The Julian day (DOY) of the cessation.

CessationValue

The number of days since onsetWind.start.

Duration

The duration of the wet season (in days).

Details

The agroclimatic approach defines the wet season based on the balance between precipitation and potential evapotranspiration (PET). The wet season begins when the moisture available to crops exceeds their evapotranspiration demands, ensuring optimal growth conditions.

Onset: The wet season onset is defined as the first day after onsetWind.start when the ratio of actual evapotranspiration (AET) to potential evapotranspiration (PET) exceeds 0.5 for at least 5 consecutive days, and the soil moisture remains above 25% of the available soil water holding capacity (soilWHC) for a minimum of 20 consecutive days, ensuring sufficient moisture availability for plant growth.

Cessation: The wet season ends on the first day after onsetWind.end when the AET/PET ratio falls below 0.5 for at least 5 consecutive days, and the soil moisture remains below 25% of the available soil water holding capacity (soilWHC) for a minimum of 12 consecutive days.

Duration: The total duration of the wet season is the number of days between onset and cessation.

References

FAO, 1977. Crop water requirements. FAO Irrigation and Drainage Paper No. 24, by Doorenbos J. and W.O. Pruitt. FAO, Rome, Italy.

FAO, 1978. Forestry for Local Community Development. FAO Forestry Paper No. 7, FAO, Rome.

FAO, 1986. Early Agrometeorological Crop Yield Forecasting. FAO Plant Production and Protection Paper No. 73, by M. Frère and G.F. Popov. FAO, Rome.

See also

Examples

# \donttest{
## Load example data:
data(AgroClimateData)

## Estimate daily PET:
PET <- calcEto(AgroClimateData, method = "PM", Zh = 10)
#> Adjusted 0 instances where Tmin was equal to or greater than Tmax.
#> Penman-Monteith FAO56 Reference Crop ET
#> Evaporative surface: FAO-56 hypothetical short grass, albedo = 0.23 ; surface resistance = 70 sm^-1; crop height = 0.12 m; roughness height = 0.02 m
#> Timestep: daily
#> Units: mm
#> Time duration: 1982-01-01 to 2022-12-31

## Add the estimated PET 'ET.Daily' to a new column in AgroClimateData:
AgroClimateData$Eto <- PET$ET.Daily

## Estimate daily water balance for the soil having 100mm of WHC:
watBal.list <- calcWatBal(data = AgroClimateData, soilWHC = 100)
watBal <- watBal.list$data

## seasonal calendar is estimated for the onset window ranges from
## 01 September to 31 January having a soil with 100mm of WHC:

soilWHC <- 100
onsetWind.start <- "09-01"
onsetWind.end <- "01-31"
cessaWind.end <- "06-30"

seasCal.dF <- calcSeasCal(
  data = watBal, onsetWind.start, onsetWind.end,
  cessaWind.end, soilWHC
)

str(seasCal.dF)
#> 'data.frame':	41 obs. of  8 variables:
#>  $ Year          : num  1982 1983 1984 1985 1986 ...
#>  $ OnsetDate     : Date, format: "1982-11-11" "1983-12-11" ...
#>  $ OnsetDOY      : chr  "315" "345" "314" "323" ...
#>  $ OnsetValue    : int  72 102 70 80 81 132 97 74 87 94 ...
#>  $ CessationDate : Date, format: "1983-05-11" "1984-04-17" ...
#>  $ CessationDOY  : chr  "131" "108" "128" "129" ...
#>  $ CessationValue: int  253 230 250 251 233 234 247 227 247 263 ...
#>  $ Duration      : num  181 128 180 171 152 102 150 153 160 169 ...
# }