The BioCro C++ Library
cumulative_water_dynamics.h
Go to the documentation of this file.
1#ifndef STANDARDBML_CUMULATIVE_WATER_DYNAMICS_H
2#define STANDARDBML_CUMULATIVE_WATER_DYNAMICS_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6
7namespace standardBML
8{
20class cumulative_water_dynamics : public differential_module
21{
22 public:
24 state_map const& input_quantities,
25 state_map* output_quantities)
26 : differential_module{},
27
28 // Get references to input quantities
29 canopy_transpiration_rate{get_input(input_quantities, "canopy_transpiration_rate")},
30 precip{get_input(input_quantities, "precip")},
31 soil_evaporation_rate{get_input(input_quantities, "soil_evaporation_rate")},
32
33 // Get pointers to output quantities
34 canopy_transpiration_op{get_op(output_quantities, "canopy_transpiration")},
35 soil_evaporation_op{get_op(output_quantities, "soil_evaporation")},
36 total_precip_op{get_op(output_quantities, "total_precip")}
37 {
38 }
39 static string_vector get_inputs();
40 static string_vector get_outputs();
41 static std::string get_name() { return "cumulative_water_dynamics"; }
42
43 private:
44 // References to input quantities
45 double const& canopy_transpiration_rate;
46 double const& precip;
47 double const& soil_evaporation_rate;
48
49 // Pointers to output quantities
50 double* canopy_transpiration_op;
51 double* soil_evaporation_op;
52 double* total_precip_op;
53
54 // Main operation
55 void do_operation() const;
56};
57
59{
60 return {
61 "canopy_transpiration_rate", // Mg / ha / hr
62 "precip", // mm / hr
63 "soil_evaporation_rate" // Mg / ha / hr
64 };
65}
66
68{
69 return {
70 "canopy_transpiration", // Mg / ha / hr
71 "soil_evaporation", // Mg / ha / hr
72 "total_precip", // Mg / ha / hr
73 };
74}
75
76void cumulative_water_dynamics::do_operation() const
77{
78 // We will need to convert the rainfall rate from mm / hr to Mg / ha / hr.
79 // Across 1 ha, 1 mm of rain has a total volume of 10 m^3. We will assume a
80 // density of 1 g / mL, so this amount of rain has a mass of 10 Mg. In other
81 // words, 1 mm / hr of rainfall is equivalent to 10 Mg / ha / hr.
82
83 // Use `update` to set outputs
84 update(canopy_transpiration_op, canopy_transpiration_rate);
85 update(soil_evaporation_op, soil_evaporation_rate);
86 update(total_precip_op, precip * 10);
87}
88
89} // namespace standardBML
90#endif
Enables calculations of cumulative water dynamics.
cumulative_water_dynamics(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