@@ -99,31 +99,56 @@ Base.broadcastable(m::PModelConstants) = tuple(m)
99
99
PModelConstants(FT)
100
100
101
101
Creates a `PModelConstants` object with default values for the P-model constants.
102
+ See Stocker et al. (2020) Table A2 and references within for more information.
102
103
"""
103
- function PModelConstants (FT)
104
- return PModelConstants (
105
- R = LP. gas_constant (LP. LandParameters (FT)),
106
- Kc25 = FT (39.97 ),
107
- Ko25 = FT (27480 ),
108
- To = FT (298.15 ),
109
- ΔHkc = FT (79430 ),
110
- ΔHko = FT (36380 ),
111
- Drel = FT (1.6 ),
112
- ΔHΓstar = FT (37830 ),
113
- Γstar25 = FT (4.332 ),
114
- Ha_Vcmax = FT (71513 ),
115
- Hd_Vcmax = FT (200000 ),
116
- aS_Vcmax = FT (668.39 ),
117
- bS_Vcmax = FT (1.07 ),
118
- Ha_Jmax = FT (49884 ),
119
- Hd_Jmax = FT (200000 ),
120
- aS_Jmax = FT (659.70 ),
121
- bS_Jmax = FT (0.75 ),
122
- Mc = FT (0.0120107 ),
123
- oi = FT (0.2095 ),
124
- aRd = FT (0.1012 ),
125
- bRd = FT (- 0.0005 ),
126
- fC3 = FT (0.015 ),
104
+ function PModelConstants {FT} (;
105
+ R = LP. gas_constant (LP. LandParameters (FT)),
106
+ Kc25 = FT (39.97 ), # Pa (see note on line 38 above)
107
+ Ko25 = FT (27480 ), # Pa (see note on line 38 above)
108
+ To = FT (298.15 ),
109
+ ΔHkc = FT (79430 ),
110
+ ΔHko = FT (36380 ),
111
+ Drel = FT (1.6 ),
112
+ ΔHΓstar = FT (37830 ),
113
+ Γstar25 = FT (4.332 ), # Pa (see note on line 38 above)
114
+ Ha_Vcmax = FT (71513 ),
115
+ Hd_Vcmax = FT (200000 ),
116
+ aS_Vcmax = FT (668.39 ),
117
+ bS_Vcmax = FT (1.07 ),
118
+ Ha_Jmax = FT (49884 ),
119
+ Hd_Jmax = FT (200000 ),
120
+ aS_Jmax = FT (659.70 ),
121
+ bS_Jmax = FT (0.75 ),
122
+ Mc = FT (0.0120107 ),
123
+ oi = FT (0.2095 ),
124
+ aRd = FT (0.1012 ),
125
+ bRd = FT (- 0.0005 ),
126
+ fC3 = FT (0.015 ),
127
+ ) where {FT <: AbstractFloat }
128
+
129
+ return PModelConstants {FT} (
130
+ R,
131
+ Kc25,
132
+ Ko25,
133
+ To,
134
+ ΔHkc,
135
+ ΔHko,
136
+ Drel,
137
+ ΔHΓstar,
138
+ Γstar25,
139
+ Ha_Vcmax,
140
+ Hd_Vcmax,
141
+ aS_Vcmax,
142
+ bS_Vcmax,
143
+ Ha_Jmax,
144
+ Hd_Jmax,
145
+ aS_Jmax,
146
+ bS_Jmax,
147
+ Mc,
148
+ oi,
149
+ aRd,
150
+ bRd,
151
+ fC3,
127
152
)
128
153
end
129
154
132
157
OPFT <: PModelParameters{FT},
133
158
OPCT <: PModelConstants{FT}
134
159
} <: AbstractPhotosynthesisModel{FT}
160
+
161
+ An implementation of the optimality photosynthesis model "P-model v1.0" of Stocker et al. (2020).
162
+
163
+ Stocker, B. D., Wang, H., Smith, N. G., Harrison, S. P., Keenan, T. F., Sandoval, D., Davis, T.,
164
+ and Prentice, I. C.: P-model v1.0: an optimality-based light use efficiency model for simulating
165
+ ecosystem gross primary production, Geosci. Model Dev., 13, 1545–1581,
166
+ https://doi.org/10.5194/gmd-13-1545-2020, 2020.
135
167
"""
136
168
struct PModel{FT, OPFT <: PModelParameters{FT} , OPCT <: PModelConstants{FT} } < :
137
169
AbstractPhotosynthesisModel{FT}
@@ -231,6 +263,9 @@ function compute_full_pmodel_outputs(
231
263
) = constants
232
264
233
265
# Compute intermediate values
266
+
267
+ # The quantum yield ϕ0 can either be taken as a constant or computed from the temperature
268
+ # dependent function. If ϕ0 is not NaN, it is used directly.
234
269
ϕ0 = isnan (ϕ0) ? intrinsic_quantum_yield (T_canopy, ϕc, ϕa0, ϕa1, ϕa2) : ϕ0
235
270
236
271
Γstar = co2_compensation_p (T_canopy, To, P_air, R, ΔHΓstar, Γstar25)
0 commit comments