Two functions to generate daily profile properties then apply these to a time series
daily_evap_profile(eMin = 0, eMax = 3, max_day = 183)
evap_est(ts, daily_profile, daily_data = NULL, pet_name = "pet")Minimum daily PE total (m or mm)
Maximum daily PE total (m or mm)
Year day of maximum PET
as vector of POSIXct data/times
data.frame containing annual profile properties for PET calculation
data frame containing daily PET values for disaggregation
column of daily_data containing the PET values
daily_evap_profile returns a data.frame of year day, dawn (s since start of day), day length (s) and PET (units as eMin/eMax).
evap_est a data.frame with columns dateTime containing the time stamps of the data and pet containing the PET values.
Dynamic TOPMODEL requires a time series of potential evapotranspiration in order to calculate and remove actual evapotranspiration from the root zone during a run. Many sophisticated physical models have been developed for estimating potential and actual evapotranspiration, including the Priestly-Taylor (Priestley and Taylor, 1972) and Penman-Monteith (Montieth, 1965) methods. These, however, require detailed meteorological data such as radiation input and relative humidities that are, in general, difficult to obtain. Calder (1983) demonstrated that a simple approximation using a sinusoidal variation in potential evapotranspiration to be a good approximation to more complex schemes.
If the insolation is also taken to vary sinusoidally through the daylight hours then, ignoring diurnal meteorological variations, the potential evapotranspiration during daylight hours for each year day number can be calculated (for the catchment's latitude). Integration over the daylight hours allows the daily maximum to be calculated and thus a sub-daily series generated.
The daily_evap_profile function computes a profile properties based on a
simple sinusoid giving year day values for PET, dawn and day length.
The evap_est function takes a time series of steps and computes the aggregated PET
over each time step baed on the profile and optionally daily PET values.
All inputs times are handled as though they are UTC!
Beven, K. J. (2012). Rainfall-runoff modelling : the primer. Chichester, UK, Wiley-Blackwell.
Calder, I. R., Harding, R. J. and Rosier, P. T. W. (1983) An objective assessment of soil-moisture deficit models. Journal of Hydrology, 60(1-4) 329-355
## Generating daily and hourly PET data for 1970
## the values of eMin and eMax may not by not be realistic
st_day <- as.POSIXct("1970-01-02 00:00:00",tz='GMT')
st_hour <- as.POSIXct("1970-01-01 01:00:00",tz='GMT')
fn <- as.POSIXct("1971-01-01 00:00:00",tz='GMT')
daily_prof <- daily_evap_profile(0,1)
daily_ts <- seq(st_day,fn,by=24*60*60)
daily_pet <- evap_est(daily_ts,daily_prof)
hourly_ts <- seq(st_hour,fn,by=1*60*60)
hourly_pet <- evap_est(hourly_ts,daily_prof)
## the totals should be the same...
stopifnot(all.equal(sum(hourly_pet$pet), sum(daily_pet$pet)))