BioCMAMC-ST
mass_transfer.hpp
1#ifndef __SIMULATION_HYDRO_MASS_TRANSFER_HPP__
2#define __SIMULATION_HYDRO_MASS_TRANSFER_HPP__
3
4#include <cma_utils/alias.hpp>
5#include <memory>
6#include <mixture/species_descriptor.hpp>
7#include <variant>
8#include <vector>
9
10namespace Simulation
11{
12 class ScalarSimulation;
13}; // namespace Simulation
14
16{
23
25 {
26 static constexpr double default_bubble_diameter = 5e-3;
28 };
29
31 {
32 };
33
34 struct FixedKla
35 {
36 std::vector<double> value;
37 };
38
39 struct Auto
40 {
41 };
42
44 = std::variant<FlowmapTurbulence, FixedKla, FlowmapKla, Auto>;
45
46 std::string mtr_variant_info(MtrTypeVariant& v) noexcept;
47
48} // namespace Simulation::MassTransfer::Type
49
51{
52
53 enum class Sign : int
54 {
57 };
58
59 struct MassTransferProxy;
60
62 {
63 public:
64 explicit MassTransferModel(
65 const Mixture::SpecieTable& species,
67 std::shared_ptr<Simulation::ScalarSimulation> _liquid_scalar,
68 std::shared_ptr<Simulation::ScalarSimulation> _gas_scalar);
69
70 void gas_liquid_mass_transfer() const;
71
72 void update(const CmaUtils::IterationStatePtrType& state);
73
74 [[nodiscard]] const std::shared_ptr<MassTransferProxy>& proxy() const;
75
76 [[nodiscard]] std::optional<std::span<const double>> mtr_data() const;
77
80
83
85
87
88 private:
90 std::shared_ptr<MassTransferProxy> _proxy;
91 std::shared_ptr<Simulation::ScalarSimulation> liquid_scalar;
92 std::shared_ptr<Simulation::ScalarSimulation> gas_scalar;
93 };
94
95 static_assert(static_cast<float>(Sign::GasToLiquid) == -1., "Sign mtr");
96
97} // namespace Simulation::MassTransfer
98
99#endif
Definition species_descriptor.hpp:36
const std::shared_ptr< MassTransferProxy > & proxy() const
Definition mass_transfer.cpp:277
std::optional< std::span< const double > > mtr_data() const
Definition mass_transfer.cpp:260
MassTransferModel()
Definition mass_transfer.cpp:270
void gas_liquid_mass_transfer() const
Definition mass_transfer.cpp:217
MassTransferModel(const Mixture::SpecieTable &species, MassTransfer::Type::MtrTypeVariant _type, std::shared_ptr< Simulation::ScalarSimulation > _liquid_scalar, std::shared_ptr< Simulation::ScalarSimulation > _gas_scalar)
Definition mass_transfer.cpp:162
MassTransferModel & operator=(MassTransferModel &&rhs) noexcept
std::shared_ptr< Simulation::ScalarSimulation > liquid_scalar
Definition mass_transfer.hpp:91
MassTransferModel & operator=(const MassTransferModel &rhs)=delete
std::shared_ptr< MassTransferProxy > _proxy
Definition mass_transfer.hpp:90
MassTransfer::Type::MtrTypeVariant type
Definition mass_transfer.hpp:89
MassTransferModel(MassTransferModel &&rhs) noexcept
MassTransferModel(const MassTransferModel &rhs)=delete
void update(const CmaUtils::IterationStatePtrType &state)
Definition mass_transfer.cpp:205
std::shared_ptr< Simulation::ScalarSimulation > gas_scalar
Definition mass_transfer.hpp:92
Definition scalar_simulation.hpp:29
::rust::Box<::IterationStateWrapper > IterationStatePtrType
Opaque type for iteration state.
Definition alias.hpp:20
Definition mass_transfer.hpp:16
std::variant< FlowmapTurbulence, FixedKla, FlowmapKla, Auto > MtrTypeVariant
Definition mass_transfer.hpp:43
std::string mtr_variant_info(MtrTypeVariant &v) noexcept
Definition mass_transfer.cpp:156
Names
Definition mass_transfer.hpp:18
@ FlowmapTurb
Definition mass_transfer.hpp:19
Definition impl_mass_transfer.hpp:23
Sign
Definition mass_transfer.hpp:54
@ GasToLiquid
Definition mass_transfer.hpp:55
@ LiquidToGas
Definition mass_transfer.hpp:56
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
Definition mass_transfer.hpp:40
Definition mass_transfer.hpp:35
std::vector< double > value
Definition mass_transfer.hpp:36
Definition mass_transfer.hpp:31
double db
Definition mass_transfer.hpp:27
static constexpr double default_bubble_diameter
Definition mass_transfer.hpp:26