The BioCro C++ Library
format_time.h
Go to the documentation of this file.
1#ifndef STANDARDBML_FORMAT_TIME_H
2#define STANDARDBML_FORMAT_TIME_H
3
4#include "../framework/module.h"
5#include "../framework/state_map.h"
6
7namespace standardBML
8{
16class format_time : public direct_module
17{
18 public:
20 state_map const& input_quantities,
21 state_map* output_quantities)
22 : direct_module{},
23
24 // Get references to input quantities
25 time{get_input(input_quantities, "time")},
26
27 // Get pointers to output quantities
28 doy_op{get_op(output_quantities, "doy")},
29 fractional_doy_op{get_op(output_quantities, "fractional_doy")},
30 hour_op{get_op(output_quantities, "hour")}
31 {
32 }
33 static string_vector get_inputs();
34 static string_vector get_outputs();
35 static std::string get_name() { return "format_time"; }
36
37 private:
38 // References to input quantities
39 double const& time;
40
41 // Pointers to output quantities
42 double* doy_op;
43 double* fractional_doy_op;
44 double* hour_op;
45
46 // Main operation
47 void do_operation() const;
48};
49
51{
52 return {
53 "time" // hours
54 };
55}
56
58{
59 return {
60 "doy", // days
61 "fractional_doy", // days
62 "hour" // hours
63 };
64}
65
66void format_time::do_operation() const
67{
68 double constexpr hr_per_day = 24.0;
69
70 int const d = std::floor(time / hr_per_day);
71 double const doy = 1 + d; // days
72 double const hour = time - hr_per_day * d; // hours
73
74 update(doy_op, doy);
75 update(fractional_doy_op, doy + hour / hr_per_day);
76 update(hour_op, hour);
77}
78
79} // namespace standardBML
80#endif
Converts time (expressed as the number of hours since midnight on January 1) to day of year (doy) and...
Definition: format_time.h:17
static string_vector get_outputs()
Definition: format_time.h:57
format_time(state_map const &input_quantities, state_map *output_quantities)
Definition: format_time.h:19
static string_vector get_inputs()
Definition: format_time.h:50
static std::string get_name()
Definition: format_time.h:35
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
Definition: aba_decay.h:8