The BioCro C++ Library
c4_leaf_photosynthesis.h
Go to the documentation of this file.
1#ifndef C4_LEAF_PHOTOSYNTHESIS_H
2#define C4_LEAF_PHOTOSYNTHESIS_H
3
4#include "../framework/state_map.h"
5#include "../framework/module.h"
6
7namespace standardBML
8{
15class c4_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_shortwave{get_input(input_quantities, "absorbed_shortwave")},
26 alpha1{get_input(input_quantities, "alpha1")},
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{get_input(input_quantities, "beta")},
32 Catm{get_input(input_quantities, "Catm")},
33 gbw_canopy{get_input(input_quantities, "gbw_canopy")},
34 Gs_min{get_input(input_quantities, "Gs_min")},
35 incident_ppfd{get_input(input_quantities, "incident_ppfd")},
36 kparm{get_input(input_quantities, "kparm")},
37 leafwidth{get_input(input_quantities, "leafwidth")},
38 lowerT{get_input(input_quantities, "lowerT")},
39 rh{get_input(input_quantities, "rh")},
40 RL_at_25{get_input(input_quantities, "RL_at_25")},
41 StomataWS{get_input(input_quantities, "StomataWS")},
42 theta{get_input(input_quantities, "theta")},
43 upperT{get_input(input_quantities, "upperT")},
44 Vcmax_at_25{get_input(input_quantities, "Vcmax_at_25")},
45 windspeed{get_input(input_quantities, "windspeed")},
46
47 // Get pointers to output quantities
48 Assim_op{get_op(output_quantities, "Assim")},
49 Ci_op{get_op(output_quantities, "Ci")},
50 Cs_op{get_op(output_quantities, "Cs")},
51 EPenman_op{get_op(output_quantities, "EPenman")},
52 EPriestly_op{get_op(output_quantities, "EPriestly")},
53 gbw_op{get_op(output_quantities, "gbw")},
54 GrossAssim_op{get_op(output_quantities, "GrossAssim")},
55 Gs_op{get_op(output_quantities, "Gs")},
56 leaf_temperature_op{get_op(output_quantities, "leaf_temperature")},
57 RHs_op{get_op(output_quantities, "RHs")},
58 RH_canopy_op{get_op(output_quantities, "RH_canopy")},
59 RL_op{get_op(output_quantities, "RL")},
60 Rp_op{get_op(output_quantities, "Rp")},
61 TransR_op{get_op(output_quantities, "TransR")}
62 {
63 }
64 static string_vector get_inputs();
65 static string_vector get_outputs();
66 static std::string get_name() { return "c4_leaf_photosynthesis"; }
67
68 private:
69 // References to input quantities
70 double const& absorbed_longwave;
71 double const& absorbed_shortwave;
72 double const& alpha1;
73 double const& ambient_temperature;
74 double const& atmospheric_pressure;
75 double const& b0;
76 double const& b1;
77 double const& beta;
78 double const& Catm;
79 double const& gbw_canopy;
80 double const& Gs_min;
81 double const& incident_ppfd;
82 double const& kparm;
83 double const& leafwidth;
84 double const& lowerT;
85 double const& rh;
86 double const& RL_at_25;
87 double const& StomataWS;
88 double const& theta;
89 double const& upperT;
90 double const& Vcmax_at_25;
91 double const& windspeed;
92
93 // Pointers to output quantities
94 double* Assim_op;
95 double* Ci_op;
96 double* Cs_op;
97 double* EPenman_op;
98 double* EPriestly_op;
99 double* gbw_op;
100 double* GrossAssim_op;
101 double* Gs_op;
102 double* leaf_temperature_op;
103 double* RHs_op;
104 double* RH_canopy_op;
105 double* RL_op;
106 double* Rp_op;
107 double* TransR_op;
108
109 // Main operation
110 void do_operation() const;
111};
112
113} // namespace standardBML
114#endif
Uses the method from CanAC() to calculate leaf photosynthesis parameters for C4 plants.
c4_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