calculate_crop_evapotranspiration() — Get ETc from ET0

Usage

 from swb import KcStage, calculate_crop_evapotranspiration

 calculate_crop_evapotranspiration(
    timeseries=a_pandas_dataframe,
    planting_date=dt.date(2019, 3, 21),
    kc_offseason=0.3,
    kc_plantingdate=0.7,
    kc_stages=(
       KcStage(35, 0.7),
       KcStage(45, 1.05),
       KcStage(40, 1.05),
       KcStage(15, 0.95),
    ),
)

timeseries is a pandas dataframe that contains a ref_evapotranspiration column with the reference evapotranspiration. Two time series will be calculated and added to the dataframe: kc and crop_evapotranspiration. kc_stages specifies the Kc stages, that is, a sequence of (number of days in stage, Kc at end of stage) pairs. KcStage is a named tuple whose items are ndays and kc_end. The planting_date corresponds to the beginning (day 1) of the first stage. At each stage, we do linear interpolation between the Kc at the end of the stage and the Kc at the end of the previous stage (or kc_plantingdate if there’s no previous stage).

This is a generalization of the methodology of FAO56, where three values are given for Kc (Kc ini, Kc mid, Kc end), and there are four development stages: initial, development, middle, and late. The example above is equivalent to Kc ini = 0.7, Kc mid = 1.05, Kc end = 0.95, initial = 35 days, development = 45 days, middle = 40 days, late = 15 days. It also assumes a Kc os (off-season) of 0.3, i.e. how much water is evaporated by the soil before planting. (Technically this isn’t “crop evapotranspiration” and the coefficient isn’t Kc; but in order to calculate depletion we need to know how much water has evaporated from the soil and put this in the resulting time series.)

References

R. G. Allen, L. S. Pereira, D. Raes, and M. Smith, Crop evapotranspiration - Guidelines for computing crop water requirements, FAO Irrigation and drainage paper no. 56, 1998.