1#ifndef __TWOMETA_MODEL_HPP__
2#define __TWOMETA_MODEL_HPP__
4#include "Kokkos_Printf.hpp"
5#include "common/traits.hpp"
6#include "mc/macros.hpp"
7#include "models/utils.hpp"
8#include <mc/prng/prng_extension.hpp>
9#include <mc/traits.hpp>
10#include <models/uptake.hpp>
49 static constexpr std::string_view
name =
"simple";
85 KOKKOS_INLINE_FUNCTION
static void
100 KOKKOS_INLINE_FUNCTION
static void contribution(std::size_t idx,
101 std::size_t position,
111 static std::vector<std::string_view>
names()
142 KOKKOS_INLINE_FUNCTION
void
148 constexpr auto length_dist =
153 mu_nu_dist, mu_nu_dist / 7., 0.,
static_cast<double>(
nu_max_kg_s));
155 auto gen = random_pool.get_state();
159 random_pool.free_state(gen);
174 const auto o = Kokkos::max(
static_cast<float>(concentrations(1)), 0.F);
182 const float s_1_star = (1 /
y_sx_1 * nu_1_star);
184 const float phi_s_residual_1_star = Kokkos::max(phi_s - s_1_star, 0.F);
185 KOKKOS_ASSERT(phi_s_residual_1_star >= 0.F);
187 const float nu_2_star =
y_sx_2 * phi_s_residual_1_star;
193 const float phi_s_residual_1 = Kokkos::max(phi_s - s_1, 0.F);
199 const float s_overflow = phi_s - s_growth;
213 (s_overflow > 0. ?
y_sa * (s_overflow) : 0);
252 auto gen = random_pool.get_state();
266 random_pool.free_state(gen);
272 std::size_t position,
277 auto access = contributions.access();
Kokkos::Random_XorShift1024_Pool< Kokkos::DefaultExecutionSpace > pool_type
Definition prng.hpp:17
Model that can export properties.
Definition traits.hpp:159
Kokkos::Subview< KernelConcentrationType, int, decltype(Kokkos::ALL)> LocalConcentration
Definition alias.hpp:42
Kokkos::Experimental::ScatterView< double **, Kokkos::LayoutRight > ContributionView
Definition alias.hpp:31
Kokkos::View< F *[Nd]> ParticlesModel
Definition traits.hpp:34
Status
Definition alias.hpp:11
constexpr T glucose
Definition utils.hpp:21
constexpr T dioxygen
Definition utils.hpp:22
Models definition.
Definition config_loader.hpp:8
@ a_permease
Definition uptake.hpp:15
@ a_pts
Definition uptake.hpp:14
@ COUNT
Definition uptake.hpp:17
KOKKOS_INLINE_FUNCTION consteval F c_linear_density(F rho, F d)
Definition utils.hpp:39
Represents a TruncatedNormal (Gaussian) probability distribution.
Definition prng_extension.hpp:263
static KOKKOS_INLINE_FUNCTION F draw_from(Kokkos::Random_XorShift1024< DeviceType > &gen, F mu, F sigma, F lower, F upper)
Definition prng_extension.hpp:287
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition uptake.hpp:68
static KOKKOS_INLINE_FUNCTION FloatType uptake_step(FloatType phi_pts_max, FloatType phi_permease_specific, FloatType d_t, std::size_t idx, const SelfParticle &arr, const MC::LocalConcentration &c)
Definition uptake.hpp:105
static KOKKOS_INLINE_FUNCTION void division(const MC::KPRNG::pool_type &random_pool, std::size_t idx, std::size_t idx2, const SelfParticle &arr, const SelfParticle &buffer_arr)
Definition uptake.hpp:174