Calculating Vapour Pressure Deficit and other atmospheric things

2018-12-05

I needed to calculate Vapour Pressure Deficit for a productivity model that I’m running, using ECMWF spatial data timeseries as an input. I wrote some functions in R that I think do the right thing:

# Saturation vapour pressure (millibars)
vps <- function(T_k){
  T_c <- T_k - 273.15
  return(0.6108 * exp(17.27 * T_c / (T_c + 273.15))) 
}

# Relative humidity (%)
rh <- function(T_k, Td_k){
  es_calc <- vps(T_k)  # Saturation vp
  ea_calc <- vps(Td_k)  # Actual vp
  return((ea_calc / es_calc) * 100) 
}

# Vapour pressure of air (millibars)
vpa <- function(T_k, Td_k){
  rh_calc <- rh(T_k, Td_k)
  vps_calc <- vps(T_k)
  return(rh_calc / 100 * vps_calc)
}

# Vapour pressure deficit (kPa)
vpd <- function(T_k, Td_k){ 
  vps_calc <- vps(T_k)
  vpa_calc <- vpa(T_k, Td_k)
  return(vpa_calc - vps_calc)
}