# Defining parameters as functions of other parameters

#### 2022-07-19

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)
#> udunits database from /usr/local/share/udunits/udunits2.xml

leaf_par   <- make_leafpar()   # leaf parameters
enviro_par <- make_enviropar() # environmental parameters
constants  <- make_constants() # physical constants

enviro_par$T_sky #> 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: • It must take pars as the only argument, where pars is the concatenated set of leaf (leaf_par()) and environmental parameters (enviro_par()) • It must return T_sky in units K. You can ensure this by using units::set_units(., K)  enviro_par <- make_enviropar( replace = list(T_sky = function(pars) {pars$T_air})
)
enviro_par$T_sky #> function(pars) {pars$T_air}

T_leaf <- tleaf(leaf_par, enviro_par, constants, quiet = TRUE)

knitr::kable(T_leaf)
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