5#include "../framework/module.h"
6#include "../framework/state_map.h"
14 state_map
const& input_quantities,
15 state_map* output_quantities)
16 : differential_module{},
19 mass{get_input(input_quantities,
"mass")},
20 spring_constant{get_input(input_quantities,
"spring_constant")},
21 position{get_input(input_quantities,
"position")},
22 velocity{get_input(input_quantities,
"velocity")},
25 position_op{get_op(output_quantities,
"position")},
26 velocity_op{get_op(output_quantities,
"velocity")}
31 static std::string
get_name() {
return "harmonic_oscillator"; }
36 double const& spring_constant;
37 double const& position;
38 double const& velocity;
45 void do_operation()
const;
66void harmonic_oscillator::do_operation()
const
68 update(position_op, velocity);
69 update(velocity_op, -1.0 * spring_constant * position / mass);
76 state_map
const& input_quantities,
77 state_map* output_quantities)
81 mass{get_input(input_quantities,
"mass")},
82 spring_constant{get_input(input_quantities,
"spring_constant")},
83 position{get_input(input_quantities,
"position")},
84 velocity{get_input(input_quantities,
"velocity")},
87 kinetic_energy_op{get_op(output_quantities,
"kinetic_energy")},
88 spring_energy_op{get_op(output_quantities,
"spring_energy")},
89 total_energy_op{get_op(output_quantities,
"total_energy")}
94 static std::string
get_name() {
return "harmonic_energy"; }
99 double const& spring_constant;
100 double const& position;
101 double const& velocity;
104 double* kinetic_energy_op;
105 double* spring_energy_op;
106 double* total_energy_op;
109 void do_operation()
const;
131void harmonic_energy::do_operation()
const
133 double const kinetic_energy = 0.5 * mass * pow(velocity, 2);
134 double const spring_energy = 0.5 * spring_constant * pow(position, 2);
136 update(kinetic_energy_op, kinetic_energy);
137 update(spring_energy_op, spring_energy);
138 update(total_energy_op, kinetic_energy + spring_energy);
static string_vector get_outputs()
harmonic_energy(state_map const &input_quantities, state_map *output_quantities)
static string_vector get_inputs()
static std::string get_name()
static string_vector get_outputs()
static string_vector get_inputs()
static std::string get_name()
harmonic_oscillator(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 ...