The BioCro C++ Library
thermal_time_linear.h
Go to the documentation of this file.
1#ifndef THERMAL_TIME_LINEAR_H
2#define THERMAL_TIME_LINEAR_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6
7namespace standardBML
8{
70class thermal_time_linear : public differential_module
71{
72 public:
74 state_map const& input_quantities,
75 state_map* output_quantities)
76 : differential_module{},
77
78 // Get references to input quantities
79 fractional_doy{get_input(input_quantities, "fractional_doy")},
80 sowing_fractional_doy{get_input(input_quantities, "sowing_fractional_doy")},
81 temp{get_input(input_quantities, "temp")},
82 tbase{get_input(input_quantities, "tbase")},
83
84 // Get pointers to output quantities
85 TTc_op{get_op(output_quantities, "TTc")}
86 {
87 }
88 static string_vector get_inputs();
89 static string_vector get_outputs();
90 static std::string get_name() { return "thermal_time_linear"; }
91
92 private:
93 // References to input quantities
94 double const& fractional_doy;
95 double const& sowing_fractional_doy;
96 double const& temp;
97 double const& tbase;
98
99 // Pointers to output quantities
100 double* TTc_op;
101
102 // Main operation
103 void do_operation() const;
104};
105
107{
108 return {
109 "fractional_doy", // days
110 "sowing_fractional_doy", // days
111 "temp", // degrees C
112 "tbase" // degrees C
113 };
114}
115
117{
118 return {
119 "TTc" // degrees C * day / hr
120 };
121}
122
123void thermal_time_linear::do_operation() const
124{
125 // Find the rate of change on a daily basis
126 double const rate_per_day =
127 fractional_doy < sowing_fractional_doy ? 0.0
128 : temp <= tbase ? 0.0
129 : temp - tbase; // degrees C
130
131 // Convert to an hourly rate
132 double const rate_per_hour = rate_per_day / 24.0; // degrees C * day / hr
133
134 // Update the output quantity list
135 update(TTc_op, rate_per_hour);
136}
137
138} // namespace standardBML
139#endif
Calculates the rate of thermal time accumulation using a linear model.
thermal_time_linear(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