Skip to content

Utility functions for calculating point-based and spatial daily reference ET.

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

mt-climate-office/ETo

Repository files navigation

ETo: Quick and Easy Calculation of Daily Reference ET

R-CMD-check test-coverage

ETo provides basic utility functions for calculating point-based and spatial daily reference ET. While there are many R packages that calculate reference ET (like Evapotranspiration and bigleaf), many only provide monthly ET models, and none that we have found support raster inputs out-of-the-box. ETo provides a simple interface for calculating daily reference ET and works with terra::rast data out-of-the-box. Currently, the Penman-Monteith (FAO-56 model) and Hargreaves methods are implemented. Functions are also provided to calculate all necessary intermediate variables for calculating ETo. The only input variables needed to calculate ETo are daily average temperature, min temperature and max temperature (for Hargreaves), or daily average temperature, relative humidity, solar radiation and windspeed (for Penman-Monteith).

Installation

You can install the development version of ETo from GitHub with:

# install.packages("devtools")
devtools::install_github("mt-climate-office/ETo")

Example

Here, reference ET is calculated using the example dataset given in the FAO-56 documentation:

library(ETo)

etr_penman_monteith(
  t_max = 21.5, # Daily maximum temperature in degC
  t_min = 12.3, # Daily minimum temperature in degC
  rh_max = 84, # Daily maximum relative humidity (%)
  rh_min = 63, # Daily minimum relative humidity (%)
  srad = 255.4398, # The incoming shortwave radiation in W m^-2
  ws = 2.77778, # Wind speed in meters/second
  lat = 50.8, # Latitude of observation in decimal degrees
  days = 187, # The day of the year
  wind_height = 10, # The height in meters of the wind speed observation
  elev = 100, # The elevation of the observations in meters.
)
#> [1] 3.88004

It also works with vectors:

etr_penman_monteith(
  t_max = c(21.5, 23), # Daily maximum temperature in degC
  t_min = c(12.3, 15), # Daily minimum temperature in degC
  rh_max = c(84, 80), # Daily maximum relative humidity (%)
  rh_min = c(63, 50), # Daily minimum relative humidity (%)
  srad = c(255.4398, 325), # The incoming shortwave radiation in W m^-2
  ws = c(2.77778, 3), # Wind speed in meters/second
  lat = 50.8, # Latitude of observation in decimal degrees
  days = c(187, 188), # The day of the year
  wind_height = 10, # The height in meters of the wind speed observation
  elev = 100, # The elevation of the observations in meters.
)
#> [1] 3.880040 5.120389

And it works with terra::rast rasters!

r <- etr_penman_monteith(
  t_max = terra::rast(vals=c(21.5, 23), nrows=1, ncols=2), # Daily maximum temperature in degC
  t_min = terra::rast(vals=c(12.3, 15), nrows=1, ncols=2), # Daily minimum temperature in degC
  rh_max = terra::rast(vals=c(84, 80), nrows=1, ncols=2), # Daily maximum relative humidity (%)
  rh_min = terra::rast(vals=c(63, 50), nrows=1, ncols=2), # Daily minimum relative humidity (%)
  srad = terra::rast(vals=c(255.4398, 325), nrows=1, ncols=2), # The incoming shortwave radiation in W m^-2
  ws = terra::rast(vals=c(2.77778, 3), nrows=1, ncols=2), # Wind speed in meters/second
  lat = 50.8, # Latitude of observation in decimal degrees
  days = terra::rast(vals=c(187, 188), nrows=1, ncols=2), # The day of the year
  wind_height = 10, # The height in meters of the wind speed observation
  elev = 100, # The elevation of the observations in meters.
)

terra::plot(r)

About

Utility functions for calculating point-based and spatial daily reference ET.

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Packages

No packages published

Languages