1#ifndef __SIMULATION_FEED_DESCRIPTOR_HPP__
2#define __SIMULATION_FEED_DESCRIPTOR_HPP__
17enum class FeedType : std::uint8_t
29constexpr decltype(
auto)
30move_allow_trivial(T&& t)
noexcept
99 void update(
double t,
double d_t)
noexcept;
105 double concentration,
106 std::size_t species_index,
107 std::size_t input_position,
108 std::optional<std::size_t> _ouput_position
110 bool set_output =
true);
114 double concentration,
115 std::size_t species_index,
116 std::size_t input_position,
117 std::optional<std::size_t> _ouput_position
119 bool set_output =
true);
125 std::optional<std::vector<FeedDescriptor>>
m_liquid;
126 std::optional<std::vector<FeedDescriptor>>
m_gas;
136 [[nodiscard]] std::
size_t n_gas_flow() const noexcept;
170 return std::vector<FeedDescriptor>();
180 return std::vector<FeedDescriptor>();
190 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
191 std::vector<FeedDescriptor>::iterator());
199 return std::ranges::subrange(
m_gas->begin(),
m_gas->end());
201 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
202 std::vector<FeedDescriptor>::iterator());
Definition feed_descriptor.hpp:123
std::size_t n_liquid_flow() const noexcept
Definition feed_descriptor.cpp:169
auto liquid_feeds() const
Definition feed_descriptor.hpp:164
std::optional< std::vector< FeedDescriptor > > m_gas
Definition feed_descriptor.hpp:126
std::size_t n_gas_flow() const noexcept
Definition feed_descriptor.cpp:174
static SimulationFeed empty() noexcept
Definition feed_descriptor.cpp:180
auto liquid_feeds()
Definition feed_descriptor.hpp:184
auto gas_feeds() const
Definition feed_descriptor.hpp:174
void add_liquid(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:157
void add_feed(FeedDescriptor &&fd, Phase phase)
Definition feed_descriptor.cpp:142
void add_gas(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:163
std::optional< std::vector< FeedDescriptor > > m_liquid
Definition feed_descriptor.hpp:125
auto gas_feeds()
Definition feed_descriptor.hpp:195
Definition feed_descriptor.hpp:36
std::variant< Constant, Linear, Exponential > FeedTypeVariant
Definition feed_descriptor.hpp:81
FeedType get_type(const FeedTypeVariant &v)
Definition feed_descriptor.cpp:91
Definition feed_descriptor.hpp:39
Definition feed_descriptor.hpp:43
double alpha
Definition feed_descriptor.hpp:45
double f0
Definition feed_descriptor.hpp:44
Definition feed_descriptor.hpp:92
std::size_t input_position
Definition feed_descriptor.hpp:95
FeedTypeVariant extra
Definition feed_descriptor.hpp:97
bool use_relative_time
Definition feed_descriptor.hpp:98
std::vector< FeedValue > values
Definition feed_descriptor.hpp:94
void update(double t, double d_t) noexcept
Definition feed_descriptor.cpp:100
std::optional< std::size_t > output_position
Definition feed_descriptor.hpp:96
double flow
Definition feed_descriptor.hpp:93
Definition feed_descriptor.hpp:103
static FeedDescriptor linear(double flow, double df, 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:124
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:106
Definition feed_descriptor.hpp:86
double concentration
Definition feed_descriptor.hpp:87
std::size_t species_index
Definition feed_descriptor.hpp:88
Definition feed_descriptor.hpp:49
double f0
Definition feed_descriptor.hpp:50
double df
Definition feed_descriptor.hpp:51
Definition mixture.hpp:10