1#ifndef __SIMULATION_FEED_DESCRIPTOR_HPP__
2#define __SIMULATION_FEED_DESCRIPTOR_HPP__
17enum class FeedType : std::uint8_t
27constexpr decltype(
auto)
28move_allow_trivial(T&& t)
noexcept
65 = std::variant<Constant, Step, Pulse, Custom, DelayedConstant>;
82 void update(
double t,
double d_t)
noexcept;
89 std::size_t species_index,
90 std::size_t input_position,
91 std::optional<std::size_t> _ouput_position
93 bool set_output =
true);
116 std::optional<std::vector<FeedDescriptor>>
liquid;
117 std::optional<std::vector<FeedDescriptor>>
gas;
133 return std::ranges::subrange(
liquid->begin(),
liquid->end());
135 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
136 std::vector<FeedDescriptor>::iterator());
144 return std::ranges::subrange(
gas->begin(),
gas->end());
146 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
147 std::vector<FeedDescriptor>::iterator());
153 return { .liquid = std::nullopt, .gas = std::nullopt };
Definition feed_descriptor.hpp:113
std::size_t n_gas_flow() const
Definition feed_descriptor.cpp:205
std::optional< std::vector< FeedDescriptor > > gas
Definition feed_descriptor.hpp:116
auto liquid_feeds()
Definition feed_descriptor.hpp:128
static SimulationFeed empty()
Definition feed_descriptor.hpp:150
void add_liquid(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:188
void add_feed(FeedDescriptor &&fd, Phase phase)
Definition feed_descriptor.cpp:175
std::size_t n_liquid_flow() const
Definition feed_descriptor.cpp:200
std::optional< std::vector< FeedDescriptor > > liquid
Definition feed_descriptor.hpp:115
void add_gas(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:194
auto gas_feeds()
Definition feed_descriptor.hpp:139
Definition feed_descriptor.hpp:34
std::variant< Constant, Step, Pulse, Custom, DelayedConstant > FeedTypeVariant
Definition feed_descriptor.hpp:64
FeedType get_type(const FeedTypeVariant &v)
Definition feed_descriptor.cpp:12
Definition feed_descriptor.hpp:37
Definition feed_descriptor.hpp:61
Definition feed_descriptor.hpp:41
double t_end
Definition feed_descriptor.hpp:43
double stored_value
Definition feed_descriptor.hpp:44
double t_init
Definition feed_descriptor.hpp:42
Definition feed_descriptor.hpp:75
std::size_t input_position
Definition feed_descriptor.hpp:78
FeedTypeVariant extra
Definition feed_descriptor.hpp:80
std::vector< FeedValue > values
Definition feed_descriptor.hpp:77
void update(double t, double d_t) noexcept
Definition feed_descriptor.cpp:42
std::optional< std::size_t > output_position
Definition feed_descriptor.hpp:79
double flow
Definition feed_descriptor.hpp:76
Definition feed_descriptor.hpp:85
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:123
Definition feed_descriptor.hpp:69
double concentration
Definition feed_descriptor.hpp:70
std::size_t species_index
Definition feed_descriptor.hpp:71
Definition feed_descriptor.hpp:53
double t_init
Definition feed_descriptor.hpp:54
double frequency
Definition feed_descriptor.hpp:56
double stored_value
Definition feed_descriptor.hpp:57
double t_end
Definition feed_descriptor.hpp:55
Definition feed_descriptor.hpp:48
double t_init
Definition feed_descriptor.hpp:49
Definition mixture.hpp:10