BioCMAMC-ST
impl_mass_transfer.hpp
1#ifndef __IMPL_HYDRO_MASS_TRANSFER_HPP__
2#define __IMPL_HYDRO_MASS_TRANSFER_HPP__
3
4#include <common/eigen_diag.hpp>
5EIGEN_DIAG_PUSH
6#include <Eigen/Core>
7#include <Eigen/Dense>
8#include <Eigen/Sparse>
9#include <kokkos_eigen.hpp>
11
12#include <cma_utils/alias.hpp>
13
14#include <mc/domain.hpp>
15#include <simulation/mass_transfer.hpp>
16
17namespace Simulation
18{
19 class ScalarSimulation;
20};
21
23{
25 {
27 Eigen::ArrayXXd kla;
28 Eigen::ArrayXd Henry;
29 Eigen::ArrayXd flag_transfer;
30 double db;
31 };
32
33 namespace Impl
34 {
35
38 const Eigen::ArrayXXd& liquid_concentration,
39 const Eigen::ArrayXXd& gas_concentration,
40 const Eigen::MatrixXd& liquid_volume,
42
45 const Eigen::ArrayXXd& liquid_concentration,
46 const Eigen::ArrayXXd& gas_concentration,
47 const Eigen::MatrixXd& liquid_volume,
49
52 const Eigen::ArrayXXd& liquid_concentration,
53 const Eigen::ArrayXXd& gas_concentration,
54 const Eigen::MatrixXd& liquid_volume,
56
57 }; // namespace Impl
58
59 struct KlFonctor
60 {
61 double operator()(double kl);
62 Eigen::ArrayXXd operator()(const Eigen::ArrayXd& energy_dissipation_array,
63 const Eigen::ArrayXd& diffusion);
64 double operator()(double kla, bool _a);
65 };
66
68 {
69 double
71 {
72 return 1;
73 }
74 double operator()(double a);
75 Eigen::ArrayXXd operator()(const Eigen::ArrayXd& a);
76 Eigen::ArrayXXd operator()(double diameter, const Eigen::ArrayXd& a);
77 };
78
80 {
81 double operator()(double cstar);
82 Eigen::ArrayXXd operator()(const Eigen::ArrayXXd& cstar);
83 Eigen::ArrayXXd operator()(const Eigen::ArrayXXd& henry, bool _henry);
84 };
85
86} // namespace Simulation::MassTransfer
87
88#endif //__SIMULATION_HYDRO_MASS_TRANSFER_HPP__ __SIM_HYDRO_MASS_TRANSFER__
Definition scalar_simulation.hpp:29
::rust::Box<::IterationStateWrapper > IterationStatePtrType
Opaque type for iteration state.
Definition alias.hpp:20
Definition impl_mtr.cpp:16
MatrixType< Kokkos::LayoutLeft, ftype > ColMajorMatrixtype
Template type for colmajor eigen matrix object.
Definition kokkos_eigen.hpp:245
Definition impl_mass_transfer.hpp:34
void flowmap_kla_gas_liquid_mass_transfer(MassTransferProxy &mtr, const Eigen::ArrayXXd &liquid_concentration, const Eigen::ArrayXXd &gas_concentration, const Eigen::MatrixXd &liquid_volume, const CmaUtils::IterationStatePtrType &state)
Definition impl_mtr.cpp:169
void fixed_kla_gas_liquid_mass_transfer(MassTransferProxy &mtr, const Eigen::ArrayXXd &liquid_concentration, const Eigen::ArrayXXd &gas_concentration, const Eigen::MatrixXd &liquid_volume, const CmaUtils::IterationStatePtrType &state)
Definition impl_mtr.cpp:150
void flowmap_gas_liquid_mass_transfer(MassTransferProxy &mtr, const Eigen::ArrayXXd &liquid_concentration, const Eigen::ArrayXXd &gas_concentration, const Eigen::MatrixXd &liquid_volume, const CmaUtils::IterationStatePtrType &state)
Definition impl_mtr.cpp:105
Definition impl_mass_transfer.hpp:23
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
Definition impl_mass_transfer.hpp:80
Eigen::ArrayXXd operator()(const Eigen::ArrayXXd &cstar)
Eigen::ArrayXXd operator()(const Eigen::ArrayXXd &henry, bool _henry)
Definition impl_mass_transfer.hpp:68
Eigen::ArrayXXd operator()(const Eigen::ArrayXd &a)
Eigen::ArrayXXd operator()(double diameter, const Eigen::ArrayXd &a)
double operator()()
Definition impl_mass_transfer.hpp:70
Definition impl_mass_transfer.hpp:60
Eigen::ArrayXXd operator()(const Eigen::ArrayXd &energy_dissipation_array, const Eigen::ArrayXd &diffusion)
double operator()(double kla, bool _a)
Definition impl_mass_transfer.hpp:25
double db
Definition impl_mass_transfer.hpp:30
Eigen::ArrayXd Henry
Definition impl_mass_transfer.hpp:28
Eigen::ArrayXXd kla
Definition impl_mass_transfer.hpp:27
Eigen::ArrayXd flag_transfer
Definition impl_mass_transfer.hpp:29
KokkosEigen::Alias::ColMajorMatrixtype< double > mtr
Definition impl_mass_transfer.hpp:26