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 <variant>
7#include <vector>
8
9namespace Simulation
10{
11 class ScalarSimulation;
12};
13
15{
16
17 namespace Type
18 {
25
27 {
28 };
29
31 {
32 };
33
34 struct FixedKla
35 {
36 std::vector<double> value;
37 };
38
40 std::variant<FlowmapTurbulence, FixedKla, FlowmapKla>;
41 } // namespace Type
42
43 enum class Sign : int
44 {
47 };
48
49 static_assert(static_cast<float>(Sign::GasToLiquid) == -1., "Sign mtr");
50
51 struct MassTransferProxy;
52
54 {
55 public:
56 explicit MassTransferModel(
58 std::shared_ptr<Simulation::ScalarSimulation> _liquid_scalar,
59 std::shared_ptr<Simulation::ScalarSimulation> _gas_scalar);
60
61 void gas_liquid_mass_transfer() const;
62
63 void update(const CmaUtils::IterationStatePtrType& state);
64
65 [[nodiscard]] const std::shared_ptr<MassTransferProxy>& proxy() const;
66
67 [[nodiscard]] std::optional<std::span<const double>> mtr_data() const;
68
71
74
76
78
79 private:
81 std::shared_ptr<MassTransferProxy> _proxy;
82 std::shared_ptr<Simulation::ScalarSimulation> liquid_scalar;
83 std::shared_ptr<Simulation::ScalarSimulation> gas_scalar;
84 };
85
86} // namespace Simulation::MassTransfer
87
88#endif
const std::shared_ptr< MassTransferProxy > & proxy() const
Definition mass_transfer.cpp:173
std::optional< std::span< const double > > mtr_data() const
Definition mass_transfer.cpp:156
MassTransferModel()
Definition mass_transfer.cpp:166
void gas_liquid_mass_transfer() const
Definition mass_transfer.cpp:136
MassTransferModel(MassTransfer::Type::MtrTypeVariant _type, std::shared_ptr< Simulation::ScalarSimulation > _liquid_scalar, std::shared_ptr< Simulation::ScalarSimulation > _gas_scalar)
Definition mass_transfer.cpp:102
MassTransferModel & operator=(MassTransferModel &&rhs) noexcept
std::shared_ptr< Simulation::ScalarSimulation > liquid_scalar
Definition mass_transfer.hpp:82
MassTransferModel & operator=(const MassTransferModel &rhs)=delete
std::shared_ptr< MassTransferProxy > _proxy
Definition mass_transfer.hpp:81
MassTransfer::Type::MtrTypeVariant type
Definition mass_transfer.hpp:80
MassTransferModel(MassTransferModel &&rhs) noexcept
MassTransferModel(const MassTransferModel &rhs)=delete
void update(const CmaUtils::IterationStatePtrType &state)
Definition mass_transfer.cpp:125
std::shared_ptr< Simulation::ScalarSimulation > gas_scalar
Definition mass_transfer.hpp:83
Definition scalar_simulation.hpp:32
::rust::Box<::IterationStateWrapper > IterationStatePtrType
Opaque type for iteration state.
Definition alias.hpp:20
Definition mass_transfer.hpp:18
Names
Definition mass_transfer.hpp:20
@ FlowmapTurb
Definition mass_transfer.hpp:21
std::variant< FlowmapTurbulence, FixedKla, FlowmapKla > MtrTypeVariant
Definition mass_transfer.hpp:39
Definition impl_mass_transfer.hpp:25
Sign
Definition mass_transfer.hpp:44
@ GasToLiquid
Definition mass_transfer.hpp:45
@ LiquidToGas
Definition mass_transfer.hpp:46
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:14
Definition mass_transfer.hpp:35
std::vector< double > value
Definition mass_transfer.hpp:36
Definition mass_transfer.hpp:31