The BioCro C++ Library
c3_leaf_photosynthesis.h
Go to the documentation of this file.
1#ifndef C3_LEAF_PHOTOSYNTHESIS_H
2#define C3_LEAF_PHOTOSYNTHESIS_H
3
4#include "../framework/state_map.h"
5#include "../framework/module.h"
6
7namespace standardBML
8{
15class c3_leaf_photosynthesis : public direct_module
16{
17 public:
19 state_map const& input_quantities,
20 state_map* output_quantities)
21 : direct_module{},
22
23 // Get references to input quantities
24 absorbed_longwave{get_input(input_quantities, "absorbed_longwave")},
25 absorbed_ppfd{get_input(input_quantities, "absorbed_ppfd")},
26 absorbed_shortwave{get_input(input_quantities, "absorbed_shortwave")},
27 ambient_temperature{get_input(input_quantities, "temp")},
28 atmospheric_pressure{get_input(input_quantities, "atmospheric_pressure")},
29 b0{get_input(input_quantities, "b0")},
30 b1{get_input(input_quantities, "b1")},
31 beta_PSII{get_input(input_quantities, "beta_PSII")},
32 Catm{get_input(input_quantities, "Catm")},
33 electrons_per_carboxylation{get_input(input_quantities, "electrons_per_carboxylation")},
34 electrons_per_oxygenation{get_input(input_quantities, "electrons_per_oxygenation")},
35 gbw_canopy{get_input(input_quantities, "gbw_canopy")},
36 Gs_min{get_input(input_quantities, "Gs_min")},
37 Gstar_c{get_input(input_quantities, "Gstar_c")},
38 Gstar_Ea{get_input(input_quantities, "Gstar_Ea")},
39 height{get_input(input_quantities, "height")},
40 Jmax_at_25{get_input(input_quantities, "Jmax_at_25")},
41 Jmax_c{get_input(input_quantities, "Jmax_c")},
42 Jmax_Ea{get_input(input_quantities, "Jmax_Ea")},
43 Kc_c{get_input(input_quantities, "Kc_c")},
44 Kc_Ea{get_input(input_quantities, "Kc_Ea")},
45 Ko_c{get_input(input_quantities, "Ko_c")},
46 Ko_Ea{get_input(input_quantities, "Ko_Ea")},
47 leafwidth{get_input(input_quantities, "leafwidth")},
48 O2{get_input(input_quantities, "O2")},
49 phi_PSII_0{get_input(input_quantities, "phi_PSII_0")},
50 phi_PSII_1{get_input(input_quantities, "phi_PSII_1")},
51 phi_PSII_2{get_input(input_quantities, "phi_PSII_2")},
52 rh{get_input(input_quantities, "rh")},
53 RL_at_25{get_input(input_quantities, "RL_at_25")},
54 RL_c{get_input(input_quantities, "RL_c")},
55 RL_Ea{get_input(input_quantities, "RL_Ea")},
56 StomataWS{get_input(input_quantities, "StomataWS")},
57 theta_0{get_input(input_quantities, "theta_0")},
58 theta_1{get_input(input_quantities, "theta_1")},
59 theta_2{get_input(input_quantities, "theta_2")},
60 Tp_at_25{get_input(input_quantities, "Tp_at_25")},
61 Tp_c{get_input(input_quantities, "Tp_c")},
62 Tp_Ha{get_input(input_quantities, "Tp_Ha")},
63 Tp_Hd{get_input(input_quantities, "Tp_Hd")},
64 Tp_S{get_input(input_quantities, "Tp_S")},
65 Vcmax_at_25{get_input(input_quantities, "Vcmax_at_25")},
66 Vcmax_c{get_input(input_quantities, "Vcmax_c")},
67 Vcmax_Ea{get_input(input_quantities, "Vcmax_Ea")},
68 windspeed{get_input(input_quantities, "windspeed")},
69
70 // Get pointers to output quantities
71 Assim_op{get_op(output_quantities, "Assim")},
72 Ci_op{get_op(output_quantities, "Ci")},
73 Cs_op{get_op(output_quantities, "Cs")},
74 EPenman_op{get_op(output_quantities, "EPenman")},
75 EPriestly_op{get_op(output_quantities, "EPriestly")},
76 gbw_op{get_op(output_quantities, "gbw")},
77 GrossAssim_op{get_op(output_quantities, "GrossAssim")},
78 Gs_op{get_op(output_quantities, "Gs")},
79 leaf_temperature_op{get_op(output_quantities, "leaf_temperature")},
80 RHs_op{get_op(output_quantities, "RHs")},
81 RH_canopy_op{get_op(output_quantities, "RH_canopy")},
82 RL_op{get_op(output_quantities, "RL")},
83 Rp_op{get_op(output_quantities, "Rp")},
84 TransR_op{get_op(output_quantities, "TransR")}
85 {
86 }
87 static string_vector get_inputs();
88 static string_vector get_outputs();
89 static std::string get_name() { return "c3_leaf_photosynthesis"; }
90
91 private:
92 // References to input quantities
93 double const& absorbed_longwave;
94 double const& absorbed_ppfd;
95 double const& absorbed_shortwave;
96 double const& ambient_temperature;
97 double const& atmospheric_pressure;
98 double const& b0;
99 double const& b1;
100 double const& beta_PSII;
101 double const& Catm;
102 double const& electrons_per_carboxylation;
103 double const& electrons_per_oxygenation;
104 double const& gbw_canopy;
105 double const& Gs_min;
106 double const& Gstar_c;
107 double const& Gstar_Ea;
108 double const& height;
109 double const& Jmax_at_25;
110 double const& Jmax_c;
111 double const& Jmax_Ea;
112 double const& Kc_c;
113 double const& Kc_Ea;
114 double const& Ko_c;
115 double const& Ko_Ea;
116 double const& leafwidth;
117 double const& O2;
118 double const& phi_PSII_0;
119 double const& phi_PSII_1;
120 double const& phi_PSII_2;
121 double const& rh;
122 double const& RL_at_25;
123 double const& RL_c;
124 double const& RL_Ea;
125 double const& StomataWS;
126 double const& theta_0;
127 double const& theta_1;
128 double const& theta_2;
129 double const& Tp_at_25;
130 double const& Tp_c;
131 double const& Tp_Ha;
132 double const& Tp_Hd;
133 double const& Tp_S;
134 double const& Vcmax_at_25;
135 double const& Vcmax_c;
136 double const& Vcmax_Ea;
137 double const& windspeed;
138
139 // Pointers to output quantities
140 double* Assim_op;
141 double* Ci_op;
142 double* Cs_op;
143 double* EPenman_op;
144 double* EPriestly_op;
145 double* gbw_op;
146 double* GrossAssim_op;
147 double* Gs_op;
148 double* leaf_temperature_op;
149 double* RHs_op;
150 double* RH_canopy_op;
151 double* RL_op;
152 double* Rp_op;
153 double* TransR_op;
154
155 // Main operation
156 void do_operation() const;
157};
158
159} // namespace standardBML
160#endif
Uses the method from c3CanAC() to calculate leaf photosynthesis parameters for C3 plants.
c3_leaf_photosynthesis(state_map const &input_quantities, state_map *output_quantities)
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
Definition: aba_decay.h:8