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";
66 KOKKOS_INLINE_FUNCTION
static void
73 KOKKOS_INLINE_FUNCTION
static void
80 KOKKOS_INLINE_FUNCTION
static double
97 CHECK_MODEL(SimpleModel)
99 KOKKOS_INLINE_FUNCTION
void
104 MODEL_CONSTANT
auto division_time_d
110 MODEL_CONSTANT
auto l_distribution
113 auto gen = random_pool.get_state();
116 random_pool.free_state(gen);
121 random_pool, idx, arr);
145 KOKKOS_INLINE_FUNCTION
void
157 = new_current_length;
170 random_pool, idx, idx2, arr, buffer_arr);
173 KOKKOS_INLINE_FUNCTION
void
175 std::size_t position,
180 auto access = contributions.access();
Kokkos::Subview< KernelConcentrationType, int, decltype(Kokkos::ALL)> LocalConcentration
Definition alias.hpp:95
decltype(Kokkos::Experimental::create_scatter_view( kernelContribution())) ContributionView
Definition alias.hpp:88
Status
Definition alias.hpp:58
@ Division
Definition alias.hpp:60
@ Idle
Definition alias.hpp:59
gen_pool_type< Kokkos::DefaultExecutionSpace > pool_type
Definition alias.hpp:39
Kokkos::View< F *[Nd], Kokkos::LayoutRight > ParticlesModel
Definition alias.hpp:19
Models definition.
Definition config_loader.hpp:9
KOKKOS_INLINE_FUNCTION consteval F c_linear_density(F rho, F d)
Definition utils.hpp:49
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:354
Definition simple_model.hpp:22
MODEL_CONSTANT FloatType lin_density
Definition simple_model.hpp:46
MODEL_CONSTANT FloatType phi_s_max
Definition simple_model.hpp:49
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
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 KOKKOS_INLINE_FUNCTION MC::Status update(const MC::pool_type &random_pool, FloatType d_t, std::size_t idx, const SelfParticle &arr, const MC::LocalConcentration &c)
Definition simple_model.hpp:125
static constexpr std::size_t n_var
Definition simple_model.hpp:37
static KOKKOS_INLINE_FUNCTION void division(const MC::pool_type &random_pool, std::size_t idx, std::size_t idx2, const SelfParticle &arr, const SelfParticle &buffer_arr)
Definition simple_model.hpp:146
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:174
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition simple_model.hpp:39
MODEL_CONSTANT FloatType l_c_m
Definition simple_model.hpp:42
static KOKKOS_INLINE_FUNCTION void init(const MC::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:100
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
Definition uptake_dyn.hpp:67