BioCMAMC-ST
mass_transfer.hpp
1#ifndef __SIMULATION_HYDRO_MASS_TRANSFER_HPP__
2#define __SIMULATION_HYDRO_MASS_TRANSFER_HPP__
3
4#include <cma_utils/iteration_state.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
62
63 [[nodiscard]] const std::shared_ptr<MassTransferProxy>& proxy() const;
64
65 [[nodiscard]] std::optional<std::span<const double>> mtr_data() const;
66
69
72
74
76
77 private:
79 std::shared_ptr<MassTransferProxy> _proxy;
80 std::shared_ptr<Simulation::ScalarSimulation> liquid_scalar;
81 std::shared_ptr<Simulation::ScalarSimulation> gas_scalar;
82 };
83
84} // namespace Simulation::MassTransfer
85
86#endif
const std::shared_ptr< MassTransferProxy > & proxy() const
Definition mass_transfer.cpp:154
void gas_liquid_mass_transfer(const CmaUtils::IterationState &state) const
Definition mass_transfer.cpp:125
std::optional< std::span< const double > > mtr_data() const
Definition mass_transfer.cpp:137
MassTransferModel()
Definition mass_transfer.cpp:147
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:80
MassTransferModel & operator=(const MassTransferModel &rhs)=delete
std::shared_ptr< MassTransferProxy > _proxy
Definition mass_transfer.hpp:79
MassTransfer::Type::MtrTypeVariant type
Definition mass_transfer.hpp:78
MassTransferModel(MassTransferModel &&rhs) noexcept
MassTransferModel(const MassTransferModel &rhs)=delete
std::shared_ptr< Simulation::ScalarSimulation > gas_scalar
Definition mass_transfer.hpp:81
Definition scalar_simulation.hpp:31
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:13
Structure to store information about the reactor state during simulation.
Definition iteration_state.hpp:25
Definition mass_transfer.hpp:35
std::vector< double > value
Definition mass_transfer.hpp:36
Definition mass_transfer.hpp:31