1#ifndef __SIMPLE_MODEL_HPP__
2#define __SIMPLE_MODEL_HPP__
4#include "common/traits.hpp"
5#include "models/uptake_dyn.hpp"
6#include "models/utils.hpp"
7#include <mc/prng/prng_extension.hpp>
8#include <mc/traits.hpp>
9#include <models/uptake.hpp>
15 template <FloatingPo
intType F>
19 return (dl * density) * 0.5;
30 length = INDEX_FROM_ENUM(Uptakeparticle_var::COUNT),
38 static constexpr std::string_view
name =
"simple";
55 KOKKOS_INLINE_FUNCTION
static void
67 KOKKOS_INLINE_FUNCTION
static void
74 KOKKOS_INLINE_FUNCTION
static void
81 KOKKOS_INLINE_FUNCTION
static double mass(std::size_t idx,
98 CHECK_MODEL(SimpleModel)
100 KOKKOS_INLINE_FUNCTION
void
105 MODEL_CONSTANT
auto division_time_d =
111 MODEL_CONSTANT
auto l_distribution =
114 auto gen = random_pool.get_state();
117 random_pool.free_state(gen);
122 random_pool, idx, arr);
146 KOKKOS_INLINE_FUNCTION
void
171 random_pool, idx, idx2, arr, buffer_arr);
174 KOKKOS_INLINE_FUNCTION
void
176 std::size_t position,
181 auto access = contributions.access();
182 access(position, 0) +=
Kokkos::Random_XorShift1024_Pool< Kokkos::DefaultExecutionSpace > pool_type
Definition prng.hpp:33
Status
Definition alias.hpp:37
@ Division
Definition alias.hpp:39
@ Idle
Definition alias.hpp:38
decltype(Kokkos::Experimental::create_scatter_view(kernelContribution())) ContributionView
Definition alias.hpp:64
Kokkos::Subview< KernelConcentrationType, int, decltype(Kokkos::ALL)> LocalConcentration
Definition alias.hpp:72
Kokkos::View< F *[Nd], Kokkos::LayoutRight > ParticlesModel
Definition traits.hpp:34
Models definition.
Definition config_loader.hpp:9
KOKKOS_INLINE_FUNCTION consteval F c_linear_density(F rho, F d)
Definition utils.hpp:47
static F consteval get_phi_s_max(F density, F dl)
Definition simple_model.hpp:16
Represents a TruncatedNormal (Gaussian) probability distribution.
Definition prng_extension.hpp:277
Definition simple_model.hpp:22
MODEL_CONSTANT FloatType lin_density
Definition simple_model.hpp:45
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 simple_model.hpp:147
MODEL_CONSTANT FloatType phi_s_max
Definition simple_model.hpp:48
MODEL_CONSTANT FloatType frequency_division
Definition simple_model.hpp:53
MODEL_CONSTANT FloatType phi_perm_max
Definition simple_model.hpp:51
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:81
std::true_type uniform_weight
Definition simple_model.hpp:23
MODEL_CONSTANT FloatType l_min_m
Definition simple_model.hpp:44
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:101
SimpleModel Self
Definition simple_model.hpp:24
static constexpr std::string_view name
Definition simple_model.hpp:38
particle_var
Definition simple_model.hpp:29
@ phi_s
Definition simple_model.hpp:32
@ length
Definition simple_model.hpp:30
@ COUNT
Definition simple_model.hpp:34
@ t_div
Definition simple_model.hpp:33
@ age
Definition simple_model.hpp:31
MODEL_CONSTANT FloatType d_m
Definition simple_model.hpp:43
static constexpr std::size_t n_var
Definition simple_model.hpp:37
static KOKKOS_INLINE_FUNCTION void contribution(std::size_t idx, std::size_t position, double weight, const SelfParticle &arr, const MC::ContributionView &contributions)
Definition simple_model.hpp:175
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition simple_model.hpp:39
MODEL_CONSTANT FloatType l_c_m
Definition simple_model.hpp:42
std::nullopt_t Config
Definition simple_model.hpp:26
float FloatType
Definition simple_model.hpp:25
MODEL_CONSTANT FloatType l_max_m
Definition simple_model.hpp:41
static KOKKOS_INLINE_FUNCTION MC::Status update(const MC::KPRNG::pool_type &random_pool, FloatType d_t, std::size_t idx, const SelfParticle &arr, const MC::LocalConcentration &c)
Definition simple_model.hpp:126
Definition uptake_dyn.hpp:64