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>
20 return (dl * density) * 0.5;
31 length = INDEX_FROM_ENUM(Uptakeparticle_var::COUNT),
39 static constexpr std::string_view
name =
"simple";
67 KOKKOS_INLINE_FUNCTION
static void
74 KOKKOS_INLINE_FUNCTION
static void
81 KOKKOS_INLINE_FUNCTION
static double
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
158 = new_current_length;
171 random_pool, idx, idx2, arr, buffer_arr);
174 KOKKOS_INLINE_FUNCTION
void
176 std::size_t position,
181 auto access = contributions.access();
Kokkos::Subview< KernelConcentrationType, int, decltype(Kokkos::ALL)> LocalConcentration
Definition alias.hpp:105
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
decltype( Kokkos::Experimental::create_scatter_view(kernelContribution())) ContributionView
Definition alias.hpp:88
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:17
Represents a TruncatedNormal (Gaussian) probability distribution.
Definition prng_extension.hpp:362
Definition simple_model.hpp:23
MODEL_CONSTANT FloatType lin_density
Definition simple_model.hpp:47
MODEL_CONSTANT FloatType phi_s_max
Definition simple_model.hpp:50
MODEL_CONSTANT FloatType frequency_division
Definition simple_model.hpp:54
MODEL_CONSTANT FloatType phi_perm_max
Definition simple_model.hpp:52
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:82
std::true_type uniform_weight
Definition simple_model.hpp:24
MODEL_CONSTANT FloatType l_min_m
Definition simple_model.hpp:45
SimpleModel Self
Definition simple_model.hpp:25
static constexpr std::string_view name
Definition simple_model.hpp:39
particle_var
Definition simple_model.hpp:30
@ phi_s
Definition simple_model.hpp:33
@ length
Definition simple_model.hpp:31
@ COUNT
Definition simple_model.hpp:35
@ t_div
Definition simple_model.hpp:34
@ age
Definition simple_model.hpp:32
MODEL_CONSTANT FloatType d_m
Definition simple_model.hpp:44
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:126
static constexpr std::size_t n_var
Definition simple_model.hpp:38
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:147
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:40
MODEL_CONSTANT FloatType l_c_m
Definition simple_model.hpp:43
static KOKKOS_INLINE_FUNCTION void init(const MC::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:101
std::nullopt_t Config
Definition simple_model.hpp:27
float FloatType
Definition simple_model.hpp:26
MODEL_CONSTANT FloatType l_max_m
Definition simple_model.hpp:42
Definition uptake_dyn.hpp:79