1#ifndef __SIMPLE_MODEL_HPP__
2#define __SIMPLE_MODEL_HPP__
4#include "common/traits.hpp"
5#include "models/utils.hpp"
6#include <mc/prng/prng_extension.hpp>
7#include <mc/traits.hpp>
8#include <models/uptake.hpp>
13 template <FloatingPo
intType F>
static F
consteval get_phi_s_max(F density, F dl)
16 return (dl * density) * 0.5;
34 static constexpr std::string_view
name =
"simple";
49 KOKKOS_INLINE_FUNCTION
static void
64 KOKKOS_INLINE_FUNCTION
static void contribution(std::size_t idx,
89 CHECK_MODEL(SimpleModel)
91 KOKKOS_INLINE_FUNCTION
void
97 500, 500./2.,10,1200);
100 auto gen = random_pool.get_state();
103 random_pool.free_state(gen);
139 500., 500./2.,10,1200);
149 auto gen = random_pool.get_state();
151 division_time_d.draw(gen);
153 random_pool.free_state(gen);
159 std::size_t position,
164 auto access = contributions.access();
Kokkos::Random_XorShift1024_Pool< Kokkos::DefaultExecutionSpace > pool_type
Definition prng.hpp:17
Kokkos::Subview< KernelConcentrationType, int, decltype(Kokkos::ALL)> LocalConcentration
Definition alias.hpp:41
Kokkos::Experimental::ScatterView< double **, Kokkos::LayoutRight > ContributionView
Definition alias.hpp:30
Kokkos::View< F *[Nd]> ParticlesModel
Definition traits.hpp:33
Status
Definition alias.hpp:11
Models definition.
Definition simple_model.hpp:12
@ COUNT
Definition uptake.hpp:17
KOKKOS_INLINE_FUNCTION consteval F c_linear_density(F rho, F d)
Definition utils.hpp:39
static F consteval get_phi_s_max(F density, F dl)
Definition simple_model.hpp:13
Represents a TruncatedNormal (Gaussian) probability distribution.
Definition prng_extension.hpp:262
Definition simple_model.hpp:19
MODEL_CONSTANT FloatType lin_density
Definition simple_model.hpp:41
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:128
MODEL_CONSTANT FloatType phi_s_max
Definition simple_model.hpp:43
MODEL_CONSTANT FloatType frequency_division
Definition simple_model.hpp:47
MODEL_CONSTANT FloatType phi_perm_max
Definition simple_model.hpp:45
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:70
std::true_type uniform_weight
Definition simple_model.hpp:20
MODEL_CONSTANT FloatType l_min_m
Definition simple_model.hpp:40
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:92
static constexpr std::string_view name
Definition simple_model.hpp:34
particle_var
Definition simple_model.hpp:25
MODEL_CONSTANT FloatType d_m
Definition simple_model.hpp:39
static constexpr std::size_t n_var
Definition simple_model.hpp:33
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:158
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition simple_model.hpp:35
MODEL_CONSTANT FloatType l_c_m
Definition simple_model.hpp:38
float FloatType
Definition simple_model.hpp:22
MODEL_CONSTANT FloatType l_max_m
Definition simple_model.hpp:37
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:110
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition uptake.hpp:67
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:104
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:173