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>
14 template <FloatingPo
intType F>
static F
consteval get_phi_s_max(F density, F dl)
17 return (dl * density) * 0.5;
36 static constexpr std::string_view
name =
"simple";
51 KOKKOS_INLINE_FUNCTION
static void
66 KOKKOS_INLINE_FUNCTION
static void contribution(std::size_t idx,
91 CHECK_MODEL(SimpleModel)
93 KOKKOS_INLINE_FUNCTION
void
99 500, 500./2.,10,1200);
102 auto gen = random_pool.get_state();
105 random_pool.free_state(gen);
141 500., 500./2.,10,1200);
151 auto gen = random_pool.get_state();
153 division_time_d.draw(gen);
155 random_pool.free_state(gen);
161 std::size_t position,
166 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: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
Models definition.
Definition config_loader.hpp:8
@ 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:14
Represents a TruncatedNormal (Gaussian) probability distribution.
Definition prng_extension.hpp:263
Definition simple_model.hpp:20
MODEL_CONSTANT FloatType lin_density
Definition simple_model.hpp:43
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:130
MODEL_CONSTANT FloatType phi_s_max
Definition simple_model.hpp:45
MODEL_CONSTANT FloatType frequency_division
Definition simple_model.hpp:49
MODEL_CONSTANT FloatType phi_perm_max
Definition simple_model.hpp:47
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:72
std::true_type uniform_weight
Definition simple_model.hpp:21
MODEL_CONSTANT FloatType l_min_m
Definition simple_model.hpp:42
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:94
static constexpr std::string_view name
Definition simple_model.hpp:36
particle_var
Definition simple_model.hpp:27
MODEL_CONSTANT FloatType d_m
Definition simple_model.hpp:41
static constexpr std::size_t n_var
Definition simple_model.hpp:35
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:160
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition simple_model.hpp:37
MODEL_CONSTANT FloatType l_c_m
Definition simple_model.hpp:40
std::nullopt_t Config
Definition simple_model.hpp:24
float FloatType
Definition simple_model.hpp:23
MODEL_CONSTANT FloatType l_max_m
Definition simple_model.hpp:39
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:112
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