The BioCro C++ Library
total_biomass.h
Go to the documentation of this file.
1#ifndef TOTAL_BIOMASS_H
2#define TOTAL_BIOMASS_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6
7namespace standardBML
8{
15class total_biomass : public direct_module
16{
17 public:
19 const state_map& input_quantities,
20 state_map* output_quantities)
21 : direct_module{},
22
23 // Get pointers to input parameters
24 Grain{get_input(input_quantities, "Grain")},
25 Leaf{get_input(input_quantities, "Leaf")},
26 LeafLitter{get_input(input_quantities, "LeafLitter")},
27 Rhizome{get_input(input_quantities, "Rhizome")},
28 RhizomeLitter{get_input(input_quantities, "RhizomeLitter")},
29 Root{get_input(input_quantities, "Root")},
30 RootLitter{get_input(input_quantities, "RootLitter")},
31 Shell{get_input(input_quantities, "Shell")},
32 Stem{get_input(input_quantities, "Stem")},
33 StemLitter{get_input(input_quantities, "StemLitter")},
34
35 // Get pointers to output parameters
36 total_intact_biomass_op{get_op(output_quantities, "total_intact_biomass")},
37 total_litter_biomass_op{get_op(output_quantities, "total_litter_biomass")}
38 {
39 }
40 static string_vector get_inputs();
41 static string_vector get_outputs();
42 static std::string get_name() { return "total_biomass"; }
43
44 private:
45 // Pointers to input parameters
46 const double& Grain;
47 const double& Leaf;
48 const double& LeafLitter;
49 const double& Rhizome;
50 const double& RhizomeLitter;
51 const double& Root;
52 const double& RootLitter;
53 const double& Shell;
54 const double& Stem;
55 const double& StemLitter;
56
57 // Pointers to output parameters
58 double* total_intact_biomass_op;
59 double* total_litter_biomass_op;
60
61 // Main operation
62 void do_operation() const;
63};
64
66{
67 return {
68 "Grain", // Mg / ha
69 "Leaf", // Mg / ha
70 "LeafLitter", // Mg / ha
71 "Rhizome", // Mg / ha
72 "RhizomeLitter", // Mg / ha
73 "Root", // Mg / ha
74 "RootLitter", // Mg / ha
75 "Shell", // Mg / ha
76 "Stem", // Mg / ha
77 "StemLitter" // Mg / ha
78 };
79}
80
82{
83 return {
84 "total_intact_biomass", // Mg / ha
85 "total_litter_biomass" // Mg / ha
86 };
87}
88
89void total_biomass::do_operation() const
90{
91 update(total_intact_biomass_op,
92 Grain + Leaf + Rhizome + Root + Shell + Stem);
93
94 update(total_litter_biomass_op,
95 LeafLitter + RhizomeLitter + RootLitter + StemLitter);
96}
97
98} // namespace standardBML
99#endif
Calculates the total intact and senesced biomass and returns them as 'total_intact_biomass' and 'tota...
Definition: total_biomass.h:16
total_biomass(const state_map &input_quantities, state_map *output_quantities)
Definition: total_biomass.h:18
static string_vector get_outputs()
Definition: total_biomass.h:81
static string_vector get_inputs()
Definition: total_biomass.h:65
static std::string get_name()
Definition: total_biomass.h:42
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
Definition: aba_decay.h:8