1#ifndef STANDARDBML_CUMULATIVE_CARBON_DYNAMICS_H
2#define STANDARDBML_CUMULATIVE_CARBON_DYNAMICS_H
4#include "../framework/module.h"
5#include "../framework/state_map.h"
38 state_map
const& input_quantities,
39 state_map* output_quantities)
40 : differential_module{},
43 canopy_assimilation_rate{get_input(input_quantities,
"canopy_assimilation_rate")},
44 canopy_gross_assimilation_rate{get_input(input_quantities,
"canopy_gross_assimilation_rate")},
45 canopy_photorespiration_rate{get_input(input_quantities,
"canopy_photorespiration_rate")},
46 canopy_RL_rate{get_input(input_quantities,
"canopy_non_photorespiratory_CO2_release_rate")},
47 Grain_gr_rate{get_input(input_quantities,
"Grain_gr_rate")},
48 Grain_mr_rate{get_input(input_quantities,
"Grain_mr_rate")},
49 Leaf_gr_rate{get_input(input_quantities,
"Leaf_gr_rate")},
50 Leaf_mr_rate{get_input(input_quantities,
"Leaf_mr_rate")},
51 Leaf_WS_loss_rate{get_input(input_quantities,
"Leaf_WS_loss_rate")},
52 Rhizome_gr_rate{get_input(input_quantities,
"Rhizome_gr_rate")},
53 Rhizome_mr_rate{get_input(input_quantities,
"Rhizome_mr_rate")},
54 Root_gr_rate{get_input(input_quantities,
"Root_gr_rate")},
55 Root_mr_rate{get_input(input_quantities,
"Root_mr_rate")},
56 Shell_gr_rate{get_input(input_quantities,
"Shell_gr_rate")},
57 Shell_mr_rate{get_input(input_quantities,
"Shell_mr_rate")},
58 Stem_gr_rate{get_input(input_quantities,
"Stem_gr_rate")},
59 Stem_mr_rate{get_input(input_quantities,
"Stem_mr_rate")},
60 whole_plant_growth_respiration_rate{get_input(input_quantities,
"whole_plant_growth_respiration_rate")},
63 canopy_assimilation_op{get_op(output_quantities,
"canopy_assimilation")},
64 canopy_gross_assimilation_op{get_op(output_quantities,
"canopy_gross_assimilation")},
65 canopy_photorespiration_op{get_op(output_quantities,
"canopy_photorespiration")},
66 canopy_RL_op{get_op(output_quantities,
"canopy_non_photorespiratory_CO2_release")},
67 Grain_gr_op{get_op(output_quantities,
"Grain_gr")},
68 Grain_mr_op{get_op(output_quantities,
"Grain_mr")},
69 Leaf_gr_op{get_op(output_quantities,
"Leaf_gr")},
70 Leaf_mr_op{get_op(output_quantities,
"Leaf_mr")},
71 Leaf_WS_loss_op{get_op(output_quantities,
"Leaf_WS_loss")},
72 Rhizome_gr_op{get_op(output_quantities,
"Rhizome_gr")},
73 Rhizome_mr_op{get_op(output_quantities,
"Rhizome_mr")},
74 Root_gr_op{get_op(output_quantities,
"Root_gr")},
75 Root_mr_op{get_op(output_quantities,
"Root_mr")},
76 Shell_gr_op{get_op(output_quantities,
"Shell_gr")},
77 Shell_mr_op{get_op(output_quantities,
"Shell_mr")},
78 Stem_gr_op{get_op(output_quantities,
"Stem_gr")},
79 Stem_mr_op{get_op(output_quantities,
"Stem_mr")},
80 whole_plant_growth_respiration_op{get_op(output_quantities,
"whole_plant_growth_respiration")}
85 static std::string
get_name() {
return "cumulative_carbon_dynamics"; }
89 double const& canopy_assimilation_rate;
90 double const& canopy_gross_assimilation_rate;
91 double const& canopy_photorespiration_rate;
92 double const& canopy_RL_rate;
93 double const& Grain_gr_rate;
94 double const& Grain_mr_rate;
95 double const& Leaf_gr_rate;
96 double const& Leaf_mr_rate;
97 double const& Leaf_WS_loss_rate;
98 double const& Rhizome_gr_rate;
99 double const& Rhizome_mr_rate;
100 double const& Root_gr_rate;
101 double const& Root_mr_rate;
102 double const& Shell_gr_rate;
103 double const& Shell_mr_rate;
104 double const& Stem_gr_rate;
105 double const& Stem_mr_rate;
106 double const& whole_plant_growth_respiration_rate;
109 double* canopy_assimilation_op;
110 double* canopy_gross_assimilation_op;
111 double* canopy_photorespiration_op;
112 double* canopy_RL_op;
117 double* Leaf_WS_loss_op;
118 double* Rhizome_gr_op;
119 double* Rhizome_mr_op;
126 double* whole_plant_growth_respiration_op;
129 void do_operation()
const;
135 "canopy_assimilation_rate",
136 "canopy_gross_assimilation_rate",
137 "canopy_non_photorespiratory_CO2_release_rate",
138 "canopy_photorespiration_rate",
152 "whole_plant_growth_respiration_rate"
159 "canopy_assimilation",
160 "canopy_gross_assimilation",
161 "canopy_non_photorespiratory_CO2_release",
162 "canopy_photorespiration",
176 "whole_plant_growth_respiration"
180void cumulative_carbon_dynamics::do_operation()
const
182 update(canopy_assimilation_op, canopy_assimilation_rate);
183 update(canopy_gross_assimilation_op, canopy_gross_assimilation_rate);
184 update(canopy_photorespiration_op, canopy_photorespiration_rate);
185 update(canopy_RL_op, canopy_RL_rate);
186 update(Grain_gr_op, Grain_gr_rate);
187 update(Grain_mr_op, Grain_mr_rate);
188 update(Leaf_gr_op, Leaf_gr_rate);
189 update(Leaf_mr_op, Leaf_mr_rate);
190 update(Leaf_WS_loss_op, Leaf_WS_loss_rate);
191 update(Rhizome_gr_op, Rhizome_gr_rate);
192 update(Rhizome_mr_op, Rhizome_mr_rate);
193 update(Root_gr_op, Root_gr_rate);
194 update(Root_mr_op, Root_mr_rate);
195 update(Shell_gr_op, Shell_gr_rate);
196 update(Shell_mr_op, Shell_mr_rate);
197 update(Stem_gr_op, Stem_gr_rate);
198 update(Stem_mr_op, Stem_mr_rate);
199 update(whole_plant_growth_respiration_op, whole_plant_growth_respiration_rate);
Enables calculations of cumulative carbon dynamics.
cumulative_carbon_dynamics(state_map const &input_quantities, state_map *output_quantities)
static string_vector get_outputs()
static string_vector get_inputs()
static std::string get_name()
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...