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 {
19 enum class Names
20 {
21 Flowmap,
23 };
24
25 struct Flowmap
26 {
27 };
28 struct FixedKla
29 {
30 std::vector<double> value;
31 };
32
33 using MtrTypeVariant = std::variant<Flowmap, FixedKla>;
34 } // namespace Type
35
36 enum class Sign : int
37 {
38 GasToLiquid = -1,
39 LiquidToGas = 1,
40 };
41
42 static_assert(static_cast<float>(Sign::GasToLiquid) == -1., "Sign mtr");
43
44 struct MassTransferProxy;
45
47 {
48 public:
50 std::shared_ptr<Simulation::ScalarSimulation> _liquid_scalar,
51 std::shared_ptr<Simulation::ScalarSimulation> _gas_scalar);
52
54
55 [[nodiscard]] const std::shared_ptr<MassTransferProxy>& proxy() const;
56
57 [[nodiscard]] std::optional<std::span<const double>> mtr_data() const;
58
61
64
66
68
69 private:
71 std::shared_ptr<MassTransferProxy> _proxy;
72 std::shared_ptr<Simulation::ScalarSimulation> liquid_scalar;
73 std::shared_ptr<Simulation::ScalarSimulation> gas_scalar;
74 };
75
76} // namespace Simulation::MassTransfer
77
78#endif
Definition mass_transfer.hpp:47
const std::shared_ptr< MassTransferProxy > & proxy() const
Definition mass_transfer.cpp:149
void gas_liquid_mass_transfer(const CmaUtils::IterationState &state) const
Definition mass_transfer.cpp:97
std::optional< std::span< const double > > mtr_data() const
Definition mass_transfer.cpp:134
MassTransferModel()
Definition mass_transfer.cpp:144
MassTransferModel & operator=(MassTransferModel &&rhs) noexcept
std::shared_ptr< Simulation::ScalarSimulation > liquid_scalar
Definition mass_transfer.hpp:72
MassTransferModel & operator=(const MassTransferModel &rhs)=delete
std::shared_ptr< MassTransferProxy > _proxy
Definition mass_transfer.hpp:71
MassTransfer::Type::MtrTypeVariant type
Definition mass_transfer.hpp:70
MassTransferModel(MassTransferModel &&rhs) noexcept
MassTransferModel(const MassTransferModel &rhs)=delete
std::shared_ptr< Simulation::ScalarSimulation > gas_scalar
Definition mass_transfer.hpp:73
std::variant< Flowmap, FixedKla > MtrTypeVariant
Definition mass_transfer.hpp:33
Names
Definition mass_transfer.hpp:20
Definition impl_mass_transfer.hpp:17
Sign
Definition mass_transfer.hpp:37
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
Structure to store information about the reactor state during simulation.
Definition iteration_state.hpp:21
Definition mass_transfer.hpp:29
std::vector< double > value
Definition mass_transfer.hpp:30
Definition mass_transfer.hpp:26