Using bigleaf functions

bigleaf package replacing GeoFunctions of REddyProc

REddyProc package included several utility functions that were somewhat out of the package scope. These functions are removed from package.

This vignette shows how to replace them by functions from the bigleaf package.

if (!require("bigleaf", quietly = TRUE)) stop(
  "bigleaf package must be installed to create this vignette.")
library(REddyProc)

Vapour pressure deficit (VPD)

Vapour pressure deficit (VPD) was computed with REddyProc in \(hPa\) from relative humidity in \(\%\) and air temperature in \(^{\circ}C\).

VPD0 <- fCalcVPDfromRHandTair(DEGebExample$rH, DEGebExample$Tair)

bigleaf package computes VPD in \(kPa\) and requires relative humidity as fraction .

VPD.hPa <- rH.to.VPD(DEGebExample$rH/100, DEGebExample$Tair)*10

Saturation vapor pressure (SVP) or eSat in \(hPa\) was computed from air temperature.

Tair <- seq(10,25,by = 5)
eSat0 <- fCalcSVPfromTair(Tair)

is replaced by Esat.slope which uses \(kPa\) as pressure unit:

(eSat <- Esat.slope(Tair)$Esat * 10)
## [1] 12.26030 17.01672 23.32596 31.60057

Actual vapor pressure (AVP) or e in \(hPa\) was also computed from Vapor mole fraction (VMF) in \(mol/mol\) and pressure in \(hPa\).

VMF <- seq(0.01,0.03,by = 0.005)
press.in.hPa <- 1000 
e0 <- fCalcAVPfromVMFandPress(VMF, press.in.hPa)

There is no replacement function, as this is just the multiplication of the two arguments.

(e <- VMF * press.in.hPa)
## [1] 10 15 20 25 30

Relative humidity (rH) in \(\%\) was computed from AVP in \(hPa\) and temperature.

e.in.hPa <- seq(0,30,by = 5)
Tair <- 25           
(rH0 <- fCalcRHfromAVPandTair(e.in.hPa, Tair))

Again this is replaced by a function using pressure units \(kPa\) and relative humidity as fraction.

(rH <- e.to.rH(e.in.hPa/10, Tair)*100)
## [1]  0.0000 15.8225 31.6450 47.4675 63.2900 79.1125 94.9350

Evapotranspiration from latent heat and air temperature

LE <- seq(300,500,by = 50)
Tair <- 25
ET0 <- fCalcETfromLE(LE, Tair)

The corresponding bigleaf function LE.to.ET returns a value in kg/m2/s. This needs to be converted to mmol/m2/s as returned by the former fCalcETfromLE.

ETkg <- LE.to.ET(LE, Tair)
(ETmmol <- kg.to.mol(ETkg)*1000)
## [1]  6.819916  7.956569  9.093222 10.229874 11.366527

Converting visible radiation from irradiance to photons flux

Photon flux density (PPFD) of visible light can be computed from energy in incoming radiation

Rg <- 200

bigleaf function Rg.to.PPFD combines the two former REddyProc functions fConvertVisibleWm2toPhotons and fConvertGlobalToVisible.

PPFDVis0 <- fConvertGlobalToVisible(fConvertVisibleWm2toPhotons(Rg))
(PPFDVis <- Rg.to.PPFD(Rg))
## [1] 460

The PPFD of light including non-visible parts, i.e. former fConvertVisibleWm2toPhotons, is obtained by setting argument frac_PAR to 1.

(PPFDAll <- Rg.to.PPFD(Rg, frac_PAR = 1))
## [1] 920

Potential and Extraterrestrial solar radiation

Potential radiation (\(W m^{-2}\)) depends on time and geo-location.

doy <- 160
hour <- seq(6,18,by = 0.2)
latDeg <- 39.94
longDeg <- -5.77
timezone <- +1

Formerly, REddyProc provided:

(potRad0 <- fCalcPotRadiation(doy, hour, latDeg, longDeg, timezone))

This is replaced by bigleaf:

head(potRad <- potential.radiation(doy, hour, latDeg, longDeg, timezone))
## [1]   1.722378  48.072563  95.193985 142.957488 191.232157 239.885672

Extraterrestrial solar radiation was formerly computed by REddyProc by:

(extRad0 <- fCalcExtRadiation(doy))

This is replaced by bigleaf:

(extRad <- extraterrestrial.radiation(doy))
## [1] 1324.598

Required computation of sun position (computeSunPosition) and difference between apparent local time time and time zone time (computeSolarToLocalTimeDifference) have been moved to package solartime.