## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", warning = FALSE, message = FALSE, eval = TRUE ) ## ----message = FALSE---------------------------------------------------------- library(dplyr) library(magrittr) library(photosynthesis) # Leaving the make_* functions empty will automatically default to defaults # parameters. bake_par = make_bakepar() # temperature response parameters constants = make_constants(use_tealeaves = FALSE) # physical constants leaf_par = make_leafpar(use_tealeaves = FALSE) # leaf parameters enviro_par = make_enviropar(use_tealeaves = FALSE) # environmental parameters photo(leaf_par, enviro_par, bake_par, constants, quiet = TRUE, use_tealeaves = FALSE) ## ----replace-defaults--------------------------------------------------------- # Use the `replace` argument to replace defaults. This must be a named list, and # each named element must have the proper units specified. See `?make_parameters` # for all parameter names and proper units. # Temperature response parameters can be updated (but we won't do that here) bake_par = make_bakepar() # Physical constants probably do not need to be replaced in most cases, # that's why we call them 'constants'! constants = make_constants(use_tealeaves = FALSE) # First, we'll change photosynthetic photon flux density to 1000 umol / (m^2 s) enviro_par = make_enviropar( replace = list( PPFD = set_units(1000, "umol/m^2/s") ), use_tealeaves = FALSE ) # Next, we'll change stomatal conductance to 0.3 mol / m^2 / s. leaf_par = make_leafpar( replace = list( g_sc = set_units(0.3, mol / m^2 / s) ), use_tealeaves = FALSE ) photo <- photo(leaf_par, enviro_par, bake_par, constants, quiet = TRUE, use_tealeaves = FALSE) photo |> select(PPFD, C_chl, A) |> knitr::kable() ## ----environmental-gradients-------------------------------------------------- # As before, use the `replace` argument to replace defaults, but this time we # enter multiple values bake_par = make_bakepar() constants = make_constants(use_tealeaves = FALSE) # First, we'll change the PPFD to 1000 and 1500 umol / (m^2 s) enviro_par = make_enviropar( replace = list( PPFD = set_units(c(1000, 1500), umol / m^2 / s) ), use_tealeaves = FALSE ) # Next, we'll change stomatal conductance to to 0.2 and 0.4 mol / m^2 / s leaf_par = make_leafpar( replace = list( g_sc = set_units(c(0.2, 0.4), mol / m^2 / s) ), use_tealeaves = FALSE ) # Now there should be 4 combinations (high and low g_sc crossed with high and low PPFD) ph = photosynthesis(leaf_par, enviro_par, bake_par, constants, use_tealeaves = FALSE, progress = FALSE, quiet = TRUE) ph |> select(g_sc, PPFD, A) |> knitr::kable() ## ----parallel-example, eval = FALSE------------------------------------------- # # # NOTE: parallel example is not evaluated because it was causing an issue with CRAN, but you can copy-and-paste the code to run on your own machine. # # library(future) # plan("multisession") # Set up plan # # # We'll use the `replace` argument to enter multiple atmospheric CO2 concentrations # # bake_par = make_bakepar() # constants = make_constants(use_tealeaves = FALSE) # # enviro_par = make_enviropar( # replace = list( # C_air = set_units(seq(10, 2000, length.out = 20), umol / mol) # ), use_tealeaves = FALSE # ) # # leaf_par = make_leafpar(use_tealeaves = FALSE) # # ph = photosynthesis(leaf_par, enviro_par, bake_par, constants, # use_tealeaves = FALSE, progress = FALSE, # quiet = TRUE, parallel = TRUE) # # # Plot C_c versus A # library(ggplot2) # # ## Drop units for plotting # ph %<>% mutate_if(~ is(.x, "units"), drop_units) # ggplot(ph, aes(C_chl, A)) + # geom_line(size = 2) + # xlab(expression(paste(C[chl], " [ppm]"))) + # ylab(expression(paste("A [", mu, "mol ", m^-2~s^-1, "]"))) + # theme_bw() + # NULL # ## ----use-tealeaves-example, eval = FALSE-------------------------------------- # # # NOTE: parallel example is not evaluated because it was causing an issue with CRAN, but you can copy-and-paste the code to run on your own machine. # # # You will need to set use_tealeaves = TRUE when making parameters because additional parameters are needed for tealeaves. # # bake_par = make_bakepar() # constants = make_constants(use_tealeaves = TRUE) # # enviro_par = make_enviropar( # replace = list( # T_air = set_units(seq(288.15, 313.15, 1), K) # ), use_tealeaves = TRUE # ) # # leaf_par = make_leafpar(replace = list( # g_sc = set_units(c(0.2, 0.4), mol / m^2 / s) # ), use_tealeaves = TRUE # ) # # ph = photosynthesis(leaf_par, enviro_par, bake_par, constants, # use_tealeaves = TRUE, progress = FALSE, # quiet = TRUE, parallel = TRUE) # # # Plot temperature and photosynthesis # library(ggplot2) # # ## Drop units for plotting # ph %<>% # mutate_if(~ is(.x, "units"), drop_units) %>% # mutate(`g[s]` = ifelse(g_sc == 0.2, "low", "high")) # # ggplot(ph, aes(T_air, T_leaf, color = `g[s]`)) + # geom_line(size = 2, lineend = "round") + # geom_abline(slope = 1, intercept = 0, linetype = "dotted") + # scale_color_discrete(name = expression(g[s])) + # xlab(expression(paste(T[air], " [K]"))) + # ylab(expression(paste(T[leaf], " [K]"))) + # theme_bw() + # NULL # # ggplot(ph, aes(T_air, A, color = `g[s]`)) + # geom_line(size = 2, lineend = "round") + # scale_color_discrete(name = expression(g[s])) + # xlab(expression(paste(T[leaf], " [K]"))) + # ylab(expression(paste("A [", mu, "mol ", m^-2~s^-1, "]"))) + # theme_bw() + # NULL #