The BioCro C++ Library
maintenance_respiration.h
Go to the documentation of this file.
1#ifndef MAINTENANCE_RESPIRATION_H
2#define MAINTENANCE_RESPIRATION_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6
7namespace standardBML
8{
19class maintenance_respiration : public differential_module
20{
21 public:
23 state_map const& input_quantities,
24 state_map* output_quantities)
25 : differential_module{},
26
27 // Get references to input quantities
28 Grain_mr_rate{get_input(input_quantities, "Grain_mr_rate")},
29 Leaf_mr_rate{get_input(input_quantities, "Leaf_mr_rate")},
30 Rhizome_mr_rate{get_input(input_quantities, "Rhizome_mr_rate")},
31 Root_mr_rate{get_input(input_quantities, "Root_mr_rate")},
32 Shell_mr_rate{get_input(input_quantities, "Shell_mr_rate")},
33 Stem_mr_rate{get_input(input_quantities, "Stem_mr_rate")},
34
35 // Get pointers to output quantities
36 Grain_op{get_op(output_quantities, "Grain")},
37 Leaf_op{get_op(output_quantities, "Leaf")},
38 Rhizome_op{get_op(output_quantities, "Rhizome")},
39 Root_op{get_op(output_quantities, "Root")},
40 Shell_op{get_op(output_quantities, "Shell")},
41 Stem_op{get_op(output_quantities, "Stem")}
42 {
43 }
44 static string_vector get_inputs();
45 static string_vector get_outputs();
46 static std::string get_name() { return "maintenance_respiration"; }
47
48 private:
49 // References to input quantities
50 const double& Grain_mr_rate;
51 const double& Leaf_mr_rate;
52 const double& Rhizome_mr_rate;
53 const double& Root_mr_rate;
54 const double& Shell_mr_rate;
55 const double& Stem_mr_rate;
56
57 // Pointers to output quantities
58 double* Grain_op;
59 double* Leaf_op;
60 double* Rhizome_op;
61 double* Root_op;
62 double* Shell_op;
63 double* Stem_op;
64
65 // Implement the pure virtual function do_operation():
66 void do_operation() const override final;
67};
68
70{
71 return {
72 "Grain_mr_rate", // Mg / ha / hr
73 "Leaf_mr_rate", // Mg / ha / hr
74 "Rhizome_mr_rate", // Mg / ha / hr
75 "Root_mr_rate", // Mg / ha / hr
76 "Shell_mr_rate", // Mg / ha / hr
77 "Stem_mr_rate" // Mg / ha / hr
78 };
79}
80
82{
83 return {
84 "Grain", // Mg / ha / hr
85 "Leaf", // Mg / ha / hr
86 "Rhizome", // Mg / ha / hr
87 "Root", // Mg / ha / hr
88 "Shell", // Mg / ha / hr
89 "Stem" // Mg / ha / hr
90 };
91}
92
93void maintenance_respiration::do_operation() const
94{
95 update(Grain_op, -Grain_mr_rate); // Mg / ha / hr
96 update(Leaf_op, -Leaf_mr_rate); // Mg / ha / hr
97 update(Rhizome_op, -Rhizome_mr_rate); // Mg / ha / hr
98 update(Root_op, -Root_mr_rate); // Mg / ha / hr
99 update(Shell_op, -Shell_mr_rate); // Mg / ha / hr
100 update(Stem_op, -Stem_mr_rate); // Mg / ha / hr
101}
102
103} // namespace standardBML
104#endif
Includes maintenance respiration losses in the rate of change of each organ biomass.
maintenance_respiration(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