photosynthesis
: simulate C3 photosynthesis over multiple parameter sets
photo
: simulate C3 photosynthesis over a single parameter set
photosynthesis(
leaf_par,
enviro_par,
bake_par,
constants,
use_tealeaves,
progress = TRUE,
quiet = FALSE,
assert_units = TRUE,
check = TRUE,
parallel = FALSE,
use_legacy_version = FALSE
)
photo(
leaf_par,
enviro_par,
bake_par,
constants,
use_tealeaves,
quiet = FALSE,
assert_units = TRUE,
check = TRUE,
prepare_for_tleaf = use_tealeaves,
use_legacy_version = FALSE
)
A list of leaf parameters inheriting class leaf_par
. This can be generated using the make_leafpar
function.
A list of environmental parameters inheriting class enviro_par
. This can be generated using the make_enviropar
function.
A list of temperature response parameters inheriting class bake_par
. This can be generated using the make_bakepar
function.
A list of physical constants inheriting class constants
. This can be generated using the make_constants
function.
Logical. Should leaf energy balance be used to calculate leaf temperature (T_leaf)? If TRUE, tleaf()
calculates T_leaf. If FALSE, user-defined T_leaf is used. Additional parameters and constants are required, see make_parameters()
.
Logical. Should a progress bar be displayed?
Logical. Should messages be displayed?
Logical. Should parameter units
be checked? The function is faster when FALSE, but input must be in correct units or else results will be incorrect without any warning.
Logical. Should arguments checks be done? This is intended to be disabled when photo()
is called from photosynthesis()
Default is TRUE.
Logical. Should parallel processing be used via furrr::future_map()
?
Logical. Should legacy model (<2.1.0) be used? See NEWS for further information. Default is FALSE.
Logical. Should arguments additional calculations for tleaf()
? This is intended to be disabled when photo()
is called from photosynthesis()
. Default is use_tealeaves
.
A data.frame with the following units
columns
Inputs:
Symbol | R | Description | Units | Default |
\(D_{\mathrm{c},0}\) | D_c0 | diffusion coefficient for CO2 in air at 0 °C | m\(^2\) / s | \(1.29\times 10^{-5}\) |
\(D_{\mathrm{h},0}\) | D_h0 | diffusion coefficient for heat in air at 0 °C | m\(^2\) / s | \(1.90\times 10^{-5}\) |
\(D_{\mathrm{m},0}\) | D_m0 | diffusion coefficient for momentum in air at 0 °C | m\(^2\) / s | \(1.33\times 10^{-5}\) |
\(D_{\mathrm{w},0}\) | D_w0 | diffusion coefficient for water vapor in air at 0 °C | m\(^2\) / s | \(2.12\times 10^{-5}\) |
\(\epsilon\) | epsilon | ratio of water to air molar masses | none | 0.622 |
\(G\) | G | gravitational acceleration | m / s\(^2\) | 9.8 |
\(eT\) | eT | exponent for temperature dependence of diffusion | none | 1.75 |
\(R\) | R | ideal gas constant | J / mol / K | 8.31 |
\(\sigma\) | sigma | Stephan-Boltzmann constant | W / m\(^2\) / K\(^4\) | \(5.67\times 10^{-8}\) |
\(f_\mathrm{Sh}\) | f_sh | function to calculate constant(s) for Sherwood number | none | NA |
\(f_\mathrm{Nu}\) | f_nu | function to calculate constant(s) for Nusselt number | none | NA |
\(D_\mathrm{s,gmc}\) | Ds_gmc | empirical temperature response parameter | J / mol / K | 487 |
\(D_\mathrm{s,Jmax}\) | Ds_Jmax | empirical temperature response parameter | J / mol / K | 388 |
\(E_\mathrm{a,\Gamma *}\) | Ea_gammastar | empirical temperature response parameter | J / mol | 24500 |
\(E_\mathrm{a,gmc}\) | Ea_gmc | empirical temperature response parameter | J / mol | 68900 |
\(E_\mathrm{a,Jmax}\) | Ea_Jmax | empirical temperature response parameter | J / mol | 56100 |
\(E_\mathrm{a,KC}\) | Ea_KC | empirical temperature response parameter | J / mol | 81000 |
\(E_\mathrm{a,KO}\) | Ea_KO | empirical temperature response parameter | J / mol | 23700 |
\(E_\mathrm{a,Rd}\) | Ea_Rd | empirical temperature response parameter | J / mol | 40400 |
\(E_\mathrm{a,Vcmax}\) | Ea_Vcmax | empirical temperature response parameter | J / mol | 52200 |
\(E_\mathrm{a,Vtpu}\) | Ea_Vtpu | empirical temperature response parameter | J / mol | 52200 |
\(E_\mathrm{d,gmc}\) | Ed_gmc | empirical temperature response parameter | J / mol | 149000 |
\(E_\mathrm{d,Jmax}\) | Ed_Jmax | empirical temperature response parameter | J / mol | 121000 |
\(C_\mathrm{air}\) | C_air | atmospheric CO2 concentration | umol/mol | 420 |
\(O\) | O | atmospheric O2 concentration | mol/mol | 0.21 |
\(P\) | P | atmospheric pressure | kPa | 101 |
\(\mathrm{PPFD}\) | PPFD | photosynthetic photon flux density | umol / m\(^2\) / s | 1500 |
\(\mathrm{RH}\) | RH | relative humidity | none | 0.5 |
\(u\) | wind | windspeed | m / s | 2 |
\(d\) | leafsize | leaf characteristic dimension | m | 0.1 |
\(\Gamma*_{25}\) | gamma_star25 | chloroplastic CO2 compensation point (25 °C) | umol/mol | 37.9 |
\(g_\mathrm{mc,25}\) | g_mc25 | mesophyll conductance to CO2 (25 °C) | mol / m\(^2\) / s | 0.4 |
\(g_\mathrm{sc}\) | g_sc | stomatal conductance to CO2 | mol / m\(^2\) / s | 0.4 |
\(g_\mathrm{uc}\) | g_uc | cuticular conductance to CO2 | mol / m\(^2\) / s | 0.01 |
\(J_\mathrm{max,25}\) | J_max25 | potential electron transport (25 °C) | umol / m\(^2\) / s | 200 |
\(k_\mathrm{mc}\) | k_mc | partition of g_mc to lower mesophyll | none | 1 |
\(k_\mathrm{sc}\) | k_sc | partition of g_sc to lower surface | none | 1 |
\(k_\mathrm{uc}\) | k_uc | partition of g_uc to lower surface | none | 1 |
\(K_\mathrm{C,25}\) | K_C25 | Michaelis constant for carboxylation (25 °C) | umol / mol | 268 |
\(K_\mathrm{O,25}\) | K_O25 | Michaelis constant for oxygenation (25 °C) | umol / mol | 165000 |
\(\phi_J\) | phi_J | initial slope of the response of J to PPFD | none | 0.331 |
\(R_\mathrm{d,25}\) | R_d25 | nonphotorespiratory CO2 release (25 °C) | umol / m\(^2\) / s | 2 |
\(\theta_J\) | theta_J | curvature factor for light-response curve | none | 0.825 |
\(T_\mathrm{leaf}\) | T_leaf | leaf temperature | K | 298 |
\(V_\mathrm{c,max,25}\) | V_cmax25 | maximum rate of carboxylation (25 °C) | umol / m\(^2\) / s | 150 |
\(V_\mathrm{tpu,25}\) | V_tpu25 | rate of triose phosphate utilization (25 °C) | umol / m\(^2\) / s | 200 |
\(\delta_\mathrm{ias,lower}\) | delta_ias_lower | effective distance through lower internal airspace | um | NA |
\(\delta_\mathrm{ias,upper}\) | delta_ias_upper | effective distance through upper internal airspace | um | NA |
\(A_\mathrm{mes} / A\) | A_mes_A | mesophyll surface area per unit leaf area | none | NA |
\(g_\mathrm{liq,c,25}\) | g_liqc25 | liquid-phase conductance to CO2 (25 °C) | mol / m\(^2\) / s | NA |
Baked Inputs: | ||||
Symbol | R | Description | Units | Default |
:---------------------------- | :------------------- | :------------------------------------------------------------------- | :-------------------- | :------- |
\(\Gamma*\) | gamma_star | chloroplastic CO2 compensation point (T_leaf) | umol/mol | NA |
\(g_\mathrm{mc}\) | g_mc | mesophyll conductance to CO2 (T_leaf) | mol / m\(^2\) / s | NA |
\(J_\mathrm{max}\) | J_max | potential electron transport (T_leaf) | umol / m\(^2\) / s | NA |
\(K_\mathrm{C}\) | K_C | Michaelis constant for carboxylation (T_leaf) | umol / mol | NA |
\(K_\mathrm{O}\) | K_O | Michaelis constant for oxygenation (T_leaf) | umol / mol | NA |
\(R_\mathrm{d}\) | R_d | nonphotorespiratory CO2 release (T_leaf) | umol / m\(^2\) / s | NA |
\(V_\mathrm{c,max}\) | V_cmax | maximum rate of carboxylation (T_leaf) | umol / m\(^2\) / s | NA |
\(V_\mathrm{tpu}\) | V_tpu | rate of triose phosphate utilisation (T_leaf) | umol / m\(^2\) / s | NA |
\(g_\mathrm{liq,c}\) | g_liqc | liquid-phase conductance to CO2 (T_leaf) | mol / m\(^2\) / s | NA |
\(g_\mathrm{ias,c,lower}\) | g_iasc_lower | internal airspace conductance to CO2 in lower part of leaf (T_leaf) | mol / m\(^2\) / s | NA |
\(g_\mathrm{ias,c,upper}\) | g_iasc_upper | internal airspace conductance to CO2 in upper part of leaf (T_leaf) | mol / m\(^2\) / s | NA |
Output: | |
A | |
photosynthetic rate at C_chl (\(\mu\)mol CO2 / m\(^2\) / s) | C_chl |
chloroplastic CO2 concentration where A_supply intersects A_demand (\(mu\)mol / mol) | C_i |
intercellular CO2 concentration where A_supply intersects A_demand (\(mu\)mol / mol) | g_tc |
total conductance to CO2 at T_leaf (mol / m\(^2\) / s)) | value |
A_supply - A_demand (\(\mu\)mol / (m\(^2\) s)) at C_chl | convergence |
photo
: This function takes simulates photosynthetic rate using the Farquhar-von Caemmerer-Berry (FvCB()
) model of C3 photosynthesis for single combined set of leaf parameters (leaf_par()
), environmental parameters (enviro_par()
), and physical constants (constants()
). Leaf parameters are provided at reference temperature (25 °C) and then "baked" to the appropriate leaf temperature using temperature response functions (see bake()
). photosynthesis
: This function uses photo
to simulate photosynthesis over multiple parameter sets that are generated using cross_df()
.
# Single parameter set with 'photo'
bake_par = make_bakepar()
constants = make_constants(use_tealeaves = FALSE)
enviro_par = make_enviropar(use_tealeaves = FALSE)
leaf_par = make_leafpar(use_tealeaves = FALSE)
photo(leaf_par, enviro_par, bake_par, constants,
use_tealeaves = FALSE
)
#>
#>
#> As of version 2.1.0, the CO2 conductance model changed slightly.
#> To implement legacy version, use:
#>
#> `> photosynthesis(..., use_legacy_version = TRUE)`.
#>
#> Solving for C_chl ...
#> done
#> C_chl value convergence g_tc
#> 1 258.1218 [umol/mol] -1.363227e-06 0 0.1726157 [mol/m^2/s]
#> A J_max J_max25 K_C
#> 1 27.94273 [umol/m^2/s] 200 [umol/m^2/s] 200 [umol/m^2/s] 268.3 [umol/mol]
#> K_C25 K_O K_O25 R_d
#> 1 268.3 [umol/mol] 165084.2 [umol/mol] 165084.2 [umol/mol] 2 [umol/m^2/s]
#> R_d25 T_leaf V_cmax V_cmax25 V_tpu
#> 1 2 [umol/m^2/s] 298.15 [K] 150 [umol/m^2/s] 150 [umol/m^2/s] 200 [umol/m^2/s]
#> V_tpu25 g_mc g_mc25 g_sc
#> 1 200 [umol/m^2/s] 0.4 [mol/m^2/s] 0.4 [mol/m^2/s] 0.4 [mol/m^2/s]
#> g_uc gamma_star gamma_star25 k_mc k_sc k_uc
#> 1 0.01 [mol/m^2/s] 37.9258 [umol/mol] 37.9258 [umol/mol] 1 [1] 1 [1] 1 [1]
#> leafsize phi_J theta_J C_air O P
#> 1 0.1 [m] 0.331 [1] 0.825 [1] 420 [umol/mol] 0.21 [1] 101.3246 [kPa]
#> PPFD RH wind Ds_Jmax Ds_gmc
#> 1 1500 [umol/m^2/s] 0.5 [1] 2 [m/s] 388.04 [J/K/mol] 487.29 [J/K/mol]
#> Ea_Jmax Ea_KC Ea_KO Ea_Rd
#> 1 56095.18 [J/mol] 80989.78 [J/mol] 23719.97 [J/mol] 40446.75 [J/mol]
#> Ea_Vcmax Ea_Vtpu Ea_gammastar Ea_gmc
#> 1 52245.78 [J/mol] 52245.78 [J/mol] 24459.97 [J/mol] 68901.56 [J/mol]
#> Ed_Jmax Ed_gmc D_c0 D_h0
#> 1 121244.8 [J/mol] 148788.6 [J/mol] 1.29e-05 [m^2/s] 1.9e-05 [m^2/s]
#> D_m0 D_w0 G R eT
#> 1 1.33e-05 [m^2/s] 2.12e-05 [m^2/s] 9.8 [m/s^2] 8.31446 [J/K/mol] 1.75 [1]
#> epsilon sigma C_i
#> 1 0.622 [1] 5.67e-08 [W/K^4/m^2] 350.1432 [umol/mol]
# Multiple parameter sets with 'photosynthesis'
leaf_par = make_leafpar(
replace = list(
T_leaf = set_units(c(293.14, 298.15), "K")
), use_tealeaves = FALSE
)
photosynthesis(leaf_par, enviro_par, bake_par, constants,
use_tealeaves = FALSE
)
#>
#>
#> As of version 2.1.0, the CO2 conductance model changed slightly.
#> To implement legacy version, use:
#>
#> `> photosynthesis(..., use_legacy_version = TRUE)`.
#> Solving for photosynthetic rate from 2 parameter sets ...
#> C_chl value convergence g_tc
#> 1 269.8118 [umol/mol] -3.407982e-06 0 0.1498162 [mol/m^2/s]
#> 2 258.1218 [umol/mol] -1.363227e-06 0 0.1726157 [mol/m^2/s]
#> A J_max J_max25
#> 1 22.50062 [umol/m^2/s] 143.6921 [umol/m^2/s] 200 [umol/m^2/s]
#> 2 27.94273 [umol/m^2/s] 200.0000 [umol/m^2/s] 200 [umol/m^2/s]
#> K_C K_C25 K_O K_O25
#> 1 153.505 [umol/mol] 268.3 [umol/mol] 140179.2 [umol/mol] 165084.2 [umol/mol]
#> 2 268.300 [umol/mol] 268.3 [umol/mol] 165084.2 [umol/mol] 165084.2 [umol/mol]
#> R_d R_d25 T_leaf V_cmax
#> 1 1.5133 [umol/m^2/s] 2 [umol/m^2/s] 293.14 [K] 104.6304 [umol/m^2/s]
#> 2 2.0000 [umol/m^2/s] 2 [umol/m^2/s] 298.15 [K] 150.0000 [umol/m^2/s]
#> V_cmax25 V_tpu V_tpu25 g_mc
#> 1 150 [umol/m^2/s] 139.5072 [umol/m^2/s] 200 [umol/m^2/s] 0.2844658 [mol/m^2/s]
#> 2 150 [umol/m^2/s] 200.0000 [umol/m^2/s] 200 [umol/m^2/s] 0.4000000 [mol/m^2/s]
#> g_mc25 g_sc g_uc gamma_star
#> 1 0.4 [mol/m^2/s] 0.4 [mol/m^2/s] 0.01 [mol/m^2/s] 32.04034 [umol/mol]
#> 2 0.4 [mol/m^2/s] 0.4 [mol/m^2/s] 0.01 [mol/m^2/s] 37.92580 [umol/mol]
#> gamma_star25 k_mc k_sc k_uc leafsize phi_J theta_J
#> 1 37.9258 [umol/mol] 1 [1] 1 [1] 1 [1] 0.1 [m] 0.331 [1] 0.825 [1]
#> 2 37.9258 [umol/mol] 1 [1] 1 [1] 1 [1] 0.1 [m] 0.331 [1] 0.825 [1]
#> C_air O P PPFD RH wind
#> 1 420 [umol/mol] 0.21 [1] 101.3246 [kPa] 1500 [umol/m^2/s] 0.5 [1] 2 [m/s]
#> 2 420 [umol/mol] 0.21 [1] 101.3246 [kPa] 1500 [umol/m^2/s] 0.5 [1] 2 [m/s]
#> Ds_Jmax Ds_gmc Ea_Jmax Ea_KC
#> 1 388.04 [J/K/mol] 487.29 [J/K/mol] 56095.18 [J/mol] 80989.78 [J/mol]
#> 2 388.04 [J/K/mol] 487.29 [J/K/mol] 56095.18 [J/mol] 80989.78 [J/mol]
#> Ea_KO Ea_Rd Ea_Vcmax Ea_Vtpu
#> 1 23719.97 [J/mol] 40446.75 [J/mol] 52245.78 [J/mol] 52245.78 [J/mol]
#> 2 23719.97 [J/mol] 40446.75 [J/mol] 52245.78 [J/mol] 52245.78 [J/mol]
#> Ea_gammastar Ea_gmc Ed_Jmax Ed_gmc
#> 1 24459.97 [J/mol] 68901.56 [J/mol] 121244.8 [J/mol] 148788.6 [J/mol]
#> 2 24459.97 [J/mol] 68901.56 [J/mol] 121244.8 [J/mol] 148788.6 [J/mol]
#> D_c0 D_h0 D_m0 D_w0
#> 1 1.29e-05 [m^2/s] 1.9e-05 [m^2/s] 1.33e-05 [m^2/s] 2.12e-05 [m^2/s]
#> 2 1.29e-05 [m^2/s] 1.9e-05 [m^2/s] 1.33e-05 [m^2/s] 2.12e-05 [m^2/s]
#> G R eT epsilon sigma
#> 1 9.8 [m/s^2] 8.31446 [J/K/mol] 1.75 [1] 0.622 [1] 5.67e-08 [W/K^4/m^2]
#> 2 9.8 [m/s^2] 8.31446 [J/K/mol] 1.75 [1] 0.622 [1] 5.67e-08 [W/K^4/m^2]
#> C_i
#> 1 363.7484 [umol/mol]
#> 2 350.1432 [umol/mol]