4#include "../framework/module.h"
5#include "../framework/state_map.h"
20 state_map
const& input_quantities,
21 state_map* output_quantities)
25 time_ip{get_ip(input_quantities,
"time")},
26 target_time_ip{get_ip(input_quantities,
"target_time")},
29 solar_op{get_op(output_quantities,
"solar")}
34 static std::string
get_name() {
return "fake_solar"; }
38 const double* time_ip;
39 const double* target_time_ip;
45 void do_operation()
const;
61void fake_solar::do_operation()
const
68 double time = *time_ip;
73 int d = std::floor(time / 24);
75 double hour = time - 24 * d;
80 double max_solar = 1000.0;
84 double ss_dusk = 21.0;
87 double ws_dusk = 17.0;
92 double dawn = ss_dawn + (doy - min_doy) * (ws_dawn - ss_dawn) / (max_doy - min_doy);
93 double dusk = ss_dusk + (doy - min_doy) * (ws_dusk - ss_dusk) / (max_doy - min_doy);
99 double mean = 0.5 * (dawn + dusk);
100 double sigma = (dusk - dawn) / 4.0;
104 if (doy >= min_doy && doy <= max_doy) solar += max_solar * exp(-(hour - mean) * (hour - mean) / (sigma * sigma));
124 update(solar_op, solar);
Class created by EBL for testing and experimentation ... not meant for real simulations!
fake_solar(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 ...