The ET0MassModels package provides 10 mass
transfer-based empirical models for estimating daily reference
evapotranspiration (ET0). The FAO Penman-Monteith method is included as
the standard reference against which the mass transfer-based models are
compared and evaluated.
Mass transfer-based models estimate evaporation from the vapor pressure deficit and wind speed, making them suitable where humidity and wind data are available but radiation data are limited.
| # | Model | Function | Primary Inputs |
|---|---|---|---|
| 1 | Dalton (1802) | et0_dalton() |
Tmin, Tmax, RH, u |
| 2 | Trabert (1896) | et0_trabert() |
Tmin, Tmax, RH, u |
| 3 | Meyer (1926) | et0_meyer() |
Tmin, Tmax, RH, u |
| 4 | Rohwer (1931) | et0_rohwer() |
Tmin, Tmax, RH, u |
| 5 | Penman (1948) | et0_penman() |
Tmin, Tmax, RH, u |
| 6 | Albrecht (1950) | et0_albrecht() |
Tmin, Tmax, RH, u |
| 7 | WMO (1966) | et0_wmo() |
Tmin, Tmax, RH, u |
| 8 | Brockamp-Wenner (1963) | et0_brockamp_wenner() |
Tmin, Tmax, RH, u |
| 9 | Romanenko (1961) | et0_romanenko() |
Tmean, Tmin, Tmax, RH |
| 10 | Mahringer (1970) | et0_mahringer() |
Tmin, Tmax, RH, u |
library(ET0MassModels)
data(jhansi_weather)
head(jhansi_weather)
#> Date J Tmax Tmin RH_morning RH_evening SSH WS
#> 1 2010-01-01 1 24.1 5.1 89 49 7.2 0.20
#> 2 2010-01-02 2 25.5 4.8 88 43 8.0 1.27
#> 3 2010-01-03 3 26.5 5.8 84 32 8.0 1.32
#> 4 2010-01-04 4 24.6 5.2 94 27 6.9 1.00
#> 5 2010-01-05 5 27.1 4.9 93 44 9.1 0.35
#> 6 2010-01-06 6 26.2 1.7 69 36 5.7 1.15# FAO Penman-Monteith (reference)
et0_fao_pm(Tmin = 15, Tmax = 35, RH_morning = 90, RH_evening = 40,
u2 = 1.5, n = 9, J = 172, lat = 25.43, z = 216)
#> [1] 5.611876
# Dalton (linear wind function)
et0_dalton(Tmin = 15, Tmax = 35, RH_morning = 90, RH_evening = 40, u = 1.5)
#> [1] 8.384469
# Romanenko (temperature and humidity based)
et0_romanenko(Tmean = 25, Tmin = 15, Tmax = 35,
RH_morning = 90, RH_evening = 40)
#> [1] 8.70556result <- et0_mass_all(
Tmin = jhansi_weather$Tmin[1:5],
Tmax = jhansi_weather$Tmax[1:5],
RH_morning = jhansi_weather$RH_morning[1:5],
RH_evening = jhansi_weather$RH_evening[1:5],
u2 = jhansi_weather$WS[1:5],
n = jhansi_weather$SSH[1:5],
J = jhansi_weather$J[1:5],
lat = 25.43,
z = 216
)
round(result, 2)
#> FAO_PM Dalton Trabert Meyer Rohwer Penman Albrecht WMO Brockamp_Wenner
#> 1 1.60 3.09 1.12 3.13 2.83 16.05 1.30 1.12 2.12
#> 2 2.54 4.48 3.40 4.31 4.35 19.57 4.69 1.77 5.94
#> 3 2.84 5.76 4.42 5.52 5.60 24.95 6.16 2.27 7.71
#> 4 2.38 5.05 3.55 4.91 4.84 22.97 4.59 1.96 6.27
#> 5 1.98 4.04 1.88 4.06 3.74 20.44 2.12 1.49 3.48
#> Romanenko Mahringer
#> 1 4.74 1.04
#> 2 5.53 3.16
#> 3 6.96 4.11
#> 4 6.66 3.30
#> 5 5.62 1.75full_result <- et0_mass_all(
Tmin = jhansi_weather$Tmin,
Tmax = jhansi_weather$Tmax,
RH_morning = jhansi_weather$RH_morning,
RH_evening = jhansi_weather$RH_evening,
u2 = jhansi_weather$WS,
n = jhansi_weather$SSH,
J = jhansi_weather$J,
lat = 25.43,
z = 216
)
obs <- full_result$FAO_PM
preds <- full_result[, c("Dalton", "Meyer", "WMO", "Mahringer")]
metrics <- evaluate_models(obs, preds)
print(metrics)
#> Model NSE d MSE RMSE NRMSE MAE
#> 1 Dalton -11.0745334 0.5145592 40.569413 6.369412 1.4871250 4.576065
#> 2 Meyer -9.1394406 0.5390250 34.067664 5.836751 1.3627597 4.237460
#> 3 WMO 0.3758223 0.8909920 2.097184 1.448166 0.3381165 1.193545
#> 4 Mahringer -3.4615148 0.6982560 14.990313 3.871733 0.9039688 2.502738
#> MBE r R2
#> 1 95.24875 0.8980270 0.8064524
#> 2 89.56579 0.8909122 0.7937246
#> 3 30.81095 0.9058781 0.8206152
#> 4 47.04053 0.9241537 0.8540601