1#ifndef __SIMULATION_FEED_DESCRIPTOR_HPP__
2#define __SIMULATION_FEED_DESCRIPTOR_HPP__
17enum class FeedType : std::uint8_t
27constexpr decltype(
auto) move_allow_trivial(T&& t)
noexcept
64 std::variant<Constant, Step, Pulse, Custom, DelayedConstant>;
76 void update(
double t,
double d_t)
noexcept;
84 std::size_t species_index,
85 std::size_t input_position,
86 std::optional<std::size_t> _ouput_position = std::nullopt,
87 bool set_output =
true);
110 std::optional<std::vector<FeedDescriptor>>
liquid;
111 std::optional<std::vector<FeedDescriptor>>
gas;
126 return std::ranges::subrange(
liquid->begin(),
liquid->end());
128 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
129 std::vector<FeedDescriptor>::iterator());
136 return std::ranges::subrange(
gas->begin(),
gas->end());
138 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
139 std::vector<FeedDescriptor>::iterator());
144 return {.liquid = std::nullopt, .gas = std::nullopt};
Definition feed_descriptor.hpp:108
std::size_t n_gas_flow() const
Definition feed_descriptor.cpp:201
std::optional< std::vector< FeedDescriptor > > gas
Definition feed_descriptor.hpp:111
auto liquid_feeds()
Definition feed_descriptor.hpp:122
static SimulationFeed empty()
Definition feed_descriptor.hpp:142
void add_liquid(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:187
void add_feed(FeedDescriptor &&fd, Phase phase)
Definition feed_descriptor.cpp:175
std::size_t n_liquid_flow() const
Definition feed_descriptor.cpp:197
std::optional< std::vector< FeedDescriptor > > liquid
Definition feed_descriptor.hpp:110
void add_gas(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:192
auto gas_feeds()
Definition feed_descriptor.hpp:132
Definition feed_descriptor.hpp:33
std::variant< Constant, Step, Pulse, Custom, DelayedConstant > FeedTypeVariant
Definition feed_descriptor.hpp:63
FeedType get_type(const FeedTypeVariant &v)
Definition feed_descriptor.cpp:11
Definition feed_descriptor.hpp:36
Definition feed_descriptor.hpp:60
Definition feed_descriptor.hpp:40
double t_end
Definition feed_descriptor.hpp:42
double stored_value
Definition feed_descriptor.hpp:43
double t_init
Definition feed_descriptor.hpp:41
Definition feed_descriptor.hpp:69
std::size_t species_index
Definition feed_descriptor.hpp:72
std::size_t input_position
Definition feed_descriptor.hpp:73
FeedTypeVariant extra
Definition feed_descriptor.hpp:75
void update(double t, double d_t) noexcept
Definition feed_descriptor.cpp:40
double concentration
Definition feed_descriptor.hpp:71
std::optional< std::size_t > output_position
Definition feed_descriptor.hpp:74
double flow
Definition feed_descriptor.hpp:70
Definition feed_descriptor.hpp:80
static FeedDescriptor constant(double flow, double concentration, std::size_t species_index, std::size_t input_position, std::optional< std::size_t > _ouput_position=std::nullopt, bool set_output=true)
Definition feed_descriptor.cpp:121
Definition feed_descriptor.hpp:52
double t_init
Definition feed_descriptor.hpp:53
double frequency
Definition feed_descriptor.hpp:55
double stored_value
Definition feed_descriptor.hpp:56
double t_end
Definition feed_descriptor.hpp:54
Definition feed_descriptor.hpp:47
double t_init
Definition feed_descriptor.hpp:48
Definition mixture.hpp:10