photosynthesis
: simulate C3 photosynthesis over multiple parameter sets
photo
: simulate C3 photosynthesis over a single parameter set
Usage
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
)
Arguments
- leaf_par
A list of leaf parameters inheriting class
leaf_par
. This can be generated using themake_leafpar
function.- enviro_par
A list of environmental parameters inheriting class
enviro_par
. This can be generated using themake_enviropar
function.- bake_par
A list of temperature response parameters inheriting class
bake_par
. This can be generated using themake_bakepar
function.- constants
A list of physical constants inheriting class
constants
. This can be generated using themake_constants
function.- use_tealeaves
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, seemake_parameters()
.- progress
Logical. Should a progress bar be displayed?
- quiet
Logical. Should messages be displayed?
- assert_units
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.- check
Logical. Should arguments checks be done? This is intended to be disabled when
photo()
is called fromphotosynthesis()
Default is TRUE.- parallel
Logical. Should parallel processing be used via
furrr::future_map()
?- use_legacy_version
Logical. Should legacy model (<2.1.0) be used? See NEWS for further information. Default is FALSE.
- prepare_for_tleaf
Logical. Should arguments additional calculations for
tleaf()
? This is intended to be disabled whenphoto()
is called fromphotosynthesis()
. Default isuse_tealeaves
.
Value
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 |
Details
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()
.
Examples
# 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 [mol/mol] 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
#> 1 420 [umol/mol] 0.21 [mol/mol] 101.3246 [kPa] 1500 [umol/m^2/s] 0.5 [1]
#> 2 420 [umol/mol] 0.21 [mol/mol] 101.3246 [kPa] 1500 [umol/m^2/s] 0.5 [1]
#> wind Ds_Jmax Ds_gmc Ea_Jmax Ea_KC
#> 1 2 [m/s] 388.04 [J/K/mol] 487.29 [J/K/mol] 56095.18 [J/mol] 80989.78 [J/mol]
#> 2 2 [m/s] 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]