1#ifndef THERMAL_TIME_BILINEAR_H
2#define THERMAL_TIME_BILINEAR_H
4#include "../framework/module.h"
5#include "../framework/state_map.h"
84 state_map
const& input_quantities,
85 state_map* output_quantities)
86 : differential_module{},
89 fractional_doy{get_input(input_quantities,
"fractional_doy")},
90 sowing_fractional_doy{get_input(input_quantities,
"sowing_fractional_doy")},
91 temp{get_input(input_quantities,
"temp")},
92 tbase{get_input(input_quantities,
"tbase")},
93 topt{get_input(input_quantities,
"topt")},
94 tmax{get_input(input_quantities,
"tmax")},
97 TTc_op{get_op(output_quantities,
"TTc")}
102 static std::string
get_name() {
return "thermal_time_bilinear"; }
106 double const& fractional_doy;
107 double const& sowing_fractional_doy;
117 void do_operation()
const;
124 "sowing_fractional_doy",
139void thermal_time_bilinear::do_operation()
const
142 double const rate_per_day =
143 fractional_doy < sowing_fractional_doy ? 0.0
144 : temp <= tbase ? 0.0
145 : temp <= topt ? temp - tbase
146 : temp <= tmax ? (tmax - temp) * (topt - tbase) / (tmax - topt)
150 double const rate_per_hour = rate_per_day / 24.0;
153 update(TTc_op, rate_per_hour);
Calculates the rate of thermal time accumulation using a bilinear model.
thermal_time_bilinear(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 ...