In some cases, users may not wish to provide a parameter value, but rather have a value calculated based on other parameters. Currently, the only parameters that can be provided as functions are:
nu_constant
in constants()
sh_constant
in constants()
T_sky
in enviro_par()
I plan to make more of these in the future, but I’ll briefly
demonstrate how one would change the T_sky
function. The
default function from Okajima et al.
(2012), which was hard-coded in versions 1.0.0 and 1.0.1, is:
library(tealeaves)
#> Loading required package: units
#> udunits database from /usr/local/share/udunits/udunits2.xml
<- make_leafpar() # leaf parameters
leaf_par <- make_enviropar() # environmental parameters
enviro_par <- make_constants() # physical constants
constants
$T_sky
enviro_par#> function (pars)
#> {
#> pars$T_air - set_units(20, K) * pars$S_sw/set_units(1000,
#> W/m^2)
#> }
#> <bytecode: 0x7fd3ca6a5238>
#> <environment: 0x7fd3ca6a5d28>
Let’s change it simply be the air temperature (T_air
).
The current requirements for this function as of version 1.0.2 are:
pars
as the only argument, where
pars
is the concatenated set of leaf
(leaf_par()
) and environmental parameters
(enviro_par()
)T_sky
in units K. You can ensure this by
using units::set_units(., K)
<- make_enviropar(
enviro_par replace = list(T_sky = function(pars) {pars$T_air})
)$T_sky
enviro_par#> function(pars) {pars$T_air}
<- tleaf(leaf_par, enviro_par, constants, quiet = TRUE)
T_leaf
::kable(T_leaf) knitr
T_leaf | value | convergence | R_abs | S_r | H | L | E | Ar | Gr | Re | g_bw |
---|---|---|---|---|---|---|---|---|---|---|---|
302.7549 [K] | 0 | 0 | 1469.209 [W/m^2] | 924.1651 [W/m^2] | 151.0922 [W/m^2] | 393.9514 [W/m^2] | 0.008996103 [mol/m^2/s] | 0.0062368 | 1010434 | 12728.37 | 0.0297597 |