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
98 void update(
double t,
double d_t)
noexcept;
104 double concentration,
105 std::size_t species_index,
106 std::size_t input_position,
107 std::optional<std::size_t> _ouput_position
109 bool set_output =
true)
noexcept;
115 std::optional<std::vector<FeedDescriptor>>
liquid;
116 std::optional<std::vector<FeedDescriptor>>
gas;
125 [[nodiscard]] std::
size_t n_gas_flow() const noexcept;
132 return std::ranges::subrange(
liquid->begin(),
liquid->end());
134 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
135 std::vector<FeedDescriptor>::iterator());
143 return std::ranges::subrange(
gas->begin(),
gas->end());
145 return std::ranges::subrange(std::vector<FeedDescriptor>::iterator(),
146 std::vector<FeedDescriptor>::iterator());
Definition feed_descriptor.hpp:113
std::size_t n_liquid_flow() const noexcept
Definition feed_descriptor.cpp:142
std::optional< std::vector< FeedDescriptor > > gas
Definition feed_descriptor.hpp:116
std::size_t n_gas_flow() const noexcept
Definition feed_descriptor.cpp:147
static SimulationFeed empty() noexcept
Definition feed_descriptor.cpp:153
auto liquid_feeds()
Definition feed_descriptor.hpp:128
void add_liquid(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:130
void add_feed(FeedDescriptor &&fd, Phase phase)
Definition feed_descriptor.cpp:115
std::optional< std::vector< FeedDescriptor > > liquid
Definition feed_descriptor.hpp:115
void add_gas(FeedDescriptor &&fd)
Definition feed_descriptor.cpp:136
auto gas_feeds()
Definition feed_descriptor.hpp:139
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:82
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
std::vector< FeedValue > values
Definition feed_descriptor.hpp:94
void update(double t, double d_t) noexcept
Definition feed_descriptor.cpp:91
std::optional< std::size_t > output_position
Definition feed_descriptor.hpp:96
double flow
Definition feed_descriptor.hpp:93
Definition feed_descriptor.hpp:102
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) noexcept
Definition feed_descriptor.cpp:97
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