The BioCro C++ Library
c3_leaf_photosynthesis.cpp
Go to the documentation of this file.
2#include "c3photo.h" // for c3photoC
3#include "leaf_energy_balance.h" // for leaf_energy_balance
4#include "c3_temperature_response.h" // for c3_temperature_response_parameters
5
7
8string_vector c3_leaf_photosynthesis::get_inputs()
9{
10 return {
11 "absorbed_longwave", // J / (m^2 leaf) / s
12 "absorbed_ppfd", // micromol / (m^2 leaf) / s
13 "absorbed_shortwave", // J / (m^2 leaf) / s
14 "atmospheric_pressure", // Pa
15 "b0", // mol / m^2 / s
16 "b1", // dimensionless
17 "beta_PSII", // dimensionless (fraction of absorbed light that reaches photosystem II)
18 "Catm", // micromol / mol
19 "electrons_per_carboxylation", // electron / carboxylation
20 "electrons_per_oxygenation", // electron / oxygenation
21 "gbw_canopy", // m / s
22 "Gs_min", // mol / m^2 / s
23 "Gstar_c", // dimensionless
24 "Gstar_Ea", // J / mol
25 "height", // m
26 "Jmax_at_25", // micromol / m^2 / s
27 "Jmax_c", // dimensionless
28 "Jmax_Ea", // J / mol
29 "Kc_c", // dimensionless
30 "Kc_Ea", // J / mol
31 "Ko_c", // dimensionless
32 "Ko_Ea", // J / mol
33 "leafwidth", // m
34 "O2", // mmol / mol
35 "phi_PSII_0", // dimensionless
36 "phi_PSII_1", // (degrees C)^(-1)
37 "phi_PSII_2", // (degrees C)^(-2)
38 "rh", // dimensionless
39 "RL_at_25", // micromol / m^2 / s
40 "RL_c", // dimensionless
41 "RL_Ea", // J / mol
42 "StomataWS", // dimensionless
43 "temp", // degrees C
44 "theta_0", // dimensionless
45 "theta_1", // (degrees C)^(-1)
46 "theta_2", // (degrees C)^(-2)
47 "Tp_at_25", // micromol / m^2 / s
48 "Tp_c", // dimensionless
49 "Tp_Ha", // J / mol
50 "Tp_Hd", // J / mol
51 "Tp_S", // J / K / mol
52 "Vcmax_at_25", // micromol / m^2 / s
53 "Vcmax_c", // dimensionless
54 "Vcmax_Ea", // J / mol
55 "windspeed" // m / s
56 };
57}
58
60{
61 return {
62 "Assim", // micromol / m^2 /s
63 "Ci", // micromol / mol
64 "Cs", // micromol / m^2 / s
65 "EPenman", // mmol / m^2 / s
66 "EPriestly", // mmol / m^2 / s
67 "gbw", // mol / m^2 / s
68 "GrossAssim", // micromol / m^2 /s
69 "Gs", // mol / m^2 / s
70 "leaf_temperature", // degrees C
71 "RHs", // dimensionless from Pa / Pa
72 "RH_canopy", // dimensionless
73 "RL", // micromol / m^2 / s
74 "Rp", // micromol / m^2 / s
75 "TransR" // mmol / m^2 / s
76 };
77}
78
79void c3_leaf_photosynthesis::do_operation() const
80{
81 // Combine temperature response parameters
83 Gstar_c,
84 Gstar_Ea,
85 Jmax_c,
86 Jmax_Ea,
87 Kc_c,
88 Kc_Ea,
89 Ko_c,
90 Ko_Ea,
91 phi_PSII_0,
92 phi_PSII_1,
93 phi_PSII_2,
94 RL_c,
95 RL_Ea,
96 theta_0,
97 theta_1,
98 theta_2,
99 Tp_c,
100 Tp_Ha,
101 Tp_Hd,
102 Tp_S,
103 Vcmax_c,
104 Vcmax_Ea};
105
106 // Make an initial guess for boundary layer conductance
107 double const gbw_guess{1.2}; // mol / m^2 / s
108
109 // Get an initial estimate of stomatal conductance, assuming the leaf is at
110 // air temperature
111 double const initial_stomatal_conductance =
112 c3photoC(
113 tr_param, absorbed_ppfd, ambient_temperature, ambient_temperature,
114 rh, Vcmax_at_25, Jmax_at_25, Tp_at_25, RL_at_25, b0,
115 b1, Gs_min, Catm, atmospheric_pressure, O2, StomataWS,
116 electrons_per_carboxylation,
117 electrons_per_oxygenation, beta_PSII, gbw_guess)
118 .Gs; // mol / m^2 / s
119
120 // Calculate a new value for leaf temperature using the estimate for
121 // stomatal conductance
123 absorbed_longwave,
124 absorbed_shortwave,
125 atmospheric_pressure,
126 ambient_temperature,
127 gbw_canopy,
128 leafwidth,
129 rh,
130 initial_stomatal_conductance,
131 windspeed);
132
133 double const leaf_temperature = ambient_temperature + et.Deltat; // degrees C
134
135 // Calculate final values for assimilation, stomatal conductance, and Ci
136 // using the new leaf temperature
137 const photosynthesis_outputs photo =
138 c3photoC(
139 tr_param, absorbed_ppfd, leaf_temperature, ambient_temperature,
140 rh, Vcmax_at_25, Jmax_at_25,
141 Tp_at_25, RL_at_25, b0, b1, Gs_min, Catm, atmospheric_pressure, O2,
142 StomataWS,
143 electrons_per_carboxylation, electrons_per_oxygenation, beta_PSII,
144 et.gbw_molecular);
145
146 // Update the outputs
147 update(Assim_op, photo.Assim);
148 update(Ci_op, photo.Ci);
149 update(Cs_op, photo.Cs);
150 update(EPenman_op, et.EPenman);
151 update(EPriestly_op, et.EPriestly);
152 update(gbw_op, et.gbw_molecular);
153 update(GrossAssim_op, photo.GrossAssim);
154 update(Gs_op, photo.Gs);
155 update(leaf_temperature_op, leaf_temperature);
156 update(RHs_op, photo.RHs);
157 update(RH_canopy_op, et.RH_canopy);
158 update(RL_op, photo.RL);
159 update(Rp_op, photo.Rp);
160 update(TransR_op, et.TransR);
161}
photosynthesis_outputs c3photoC(c3_temperature_response_parameters const tr_param, double const absorbed_ppfd, double const Tleaf, double const Tambient, double const RH, double const Vcmax_at_25, double const Jmax_at_25, double const TPU_rate_max, double const RL_at_25, double const b0, double const b1, double const Gs_min, double const Ca, double const AP, double const O2, double const StomWS, double const electrons_per_carboxylation, double const electrons_per_oxygenation, double const beta_PSII, double const gbw)
Definition: c3photo.cpp:25
Uses the method from c3CanAC() to calculate leaf photosynthesis parameters for C3 plants.
energy_balance_outputs leaf_energy_balance(double absorbed_longwave_energy, double absorbed_shortwave_energy, double air_pressure, double air_temperature, double gbw_canopy, double leaf_width, double relative_humidity, double stomatal_conductance, double wind_speed)
Calculates leaf-level temperature and transpiration rate for a leaf within a canopy using a Penman-Mo...
double EPriestly
Priestly transpiration rate (mmol / m^2 / s)
double TransR
Transpiration rate (mmol / m^2 / s)
double EPenman
Potential transpiration rate (mmol / m^2 / s)
double gbw_molecular
Total boundary layer conductance to water vapor, for molecular fluxes (mol / m^2 / s)
double RH_canopy
Relative humidity in the canopy, just outside the leaf boundary layer (dimensionless)
double Deltat
Temperature difference (leaf - air) (degrees C)
A simple structure for holding the output of photosynthesis calculations.
double RL
Rate of non-photorespiratory CO2 release in the light (micromol / m^2 / s)
double Rp
Rate of photorespiration (micromol / m^2 / s)
double Cs
CO2 concentration at the leaf surface (micromol / mol)
double Assim
Net CO2 assimilation rate (micromol / m^2 / s)
double RHs
Relative humidity at the leaf surface (dimensionless)
double Ci
CO2 concentration in intercellular spaces (micromol / mol)
double GrossAssim
Gross CO2 assimilation rate (micromol / m^2 / s)
double Gs
Stomatal conductance to water vapor (mol / m^2 / s)