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{
17
18 namespace Type
19 {
26
28 {
29 };
30
32 {
33 };
34
35 struct FixedKla
36 {
37 std::vector<double> value;
38 };
39
40 struct Auto
41 {
42 };
43
45 = std::variant<FlowmapTurbulence, FixedKla, FlowmapKla, Auto>;
46
47 } // namespace Type
48
49 enum class Sign : int
50 {
53 };
54
55 static_assert(static_cast<float>(Sign::GasToLiquid) == -1., "Sign mtr");
56
57 struct MassTransferProxy;
58
60 {
61 public:
62 explicit MassTransferModel(
63 const Mixture::SpecieTable& species,
65 std::shared_ptr<Simulation::ScalarSimulation> _liquid_scalar,
66 std::shared_ptr<Simulation::ScalarSimulation> _gas_scalar);
67
68 void gas_liquid_mass_transfer() const;
69
70 void update(const CmaUtils::IterationStatePtrType& state);
71
72 [[nodiscard]] const std::shared_ptr<MassTransferProxy>& proxy() const;
73
74 [[nodiscard]] std::optional<std::span<const double>> mtr_data() const;
75
78
81
83
85
86 private:
88 std::shared_ptr<MassTransferProxy> _proxy;
89 std::shared_ptr<Simulation::ScalarSimulation> liquid_scalar;
90 std::shared_ptr<Simulation::ScalarSimulation> gas_scalar;
91 };
92
93} // namespace Simulation::MassTransfer
94
95#endif
Definition species_descriptor.hpp:36
const std::shared_ptr< MassTransferProxy > & proxy() const
Definition mass_transfer.cpp:236
std::optional< std::span< const double > > mtr_data() const
Definition mass_transfer.cpp:219
MassTransferModel()
Definition mass_transfer.cpp:229
void gas_liquid_mass_transfer() const
Definition mass_transfer.cpp:176
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:123
MassTransferModel & operator=(MassTransferModel &&rhs) noexcept
std::shared_ptr< Simulation::ScalarSimulation > liquid_scalar
Definition mass_transfer.hpp:89
MassTransferModel & operator=(const MassTransferModel &rhs)=delete
std::shared_ptr< MassTransferProxy > _proxy
Definition mass_transfer.hpp:88
MassTransfer::Type::MtrTypeVariant type
Definition mass_transfer.hpp:87
MassTransferModel(MassTransferModel &&rhs) noexcept
MassTransferModel(const MassTransferModel &rhs)=delete
void update(const CmaUtils::IterationStatePtrType &state)
Definition mass_transfer.cpp:164
std::shared_ptr< Simulation::ScalarSimulation > gas_scalar
Definition mass_transfer.hpp:90
Definition scalar_simulation.hpp:29
::rust::Box<::IterationStateWrapper > IterationStatePtrType
Opaque type for iteration state.
Definition alias.hpp:20
Definition mass_transfer.hpp:19
std::variant< FlowmapTurbulence, FixedKla, FlowmapKla, Auto > MtrTypeVariant
Definition mass_transfer.hpp:44
Names
Definition mass_transfer.hpp:21
@ FlowmapTurb
Definition mass_transfer.hpp:22
Definition impl_mass_transfer.hpp:23
Sign
Definition mass_transfer.hpp:50
@ GasToLiquid
Definition mass_transfer.hpp:51
@ LiquidToGas
Definition mass_transfer.hpp:52
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
Definition mass_transfer.hpp:41
Definition mass_transfer.hpp:36
std::vector< double > value
Definition mass_transfer.hpp:37
Definition mass_transfer.hpp:32