1#ifndef __SIMPLE_MODEL_HPP__
2#define __SIMPLE_MODEL_HPP__
4#include <Kokkos_Core_fwd.hpp>
5#include <Kokkos_Macros.hpp>
6#include <common/common.hpp>
7#include <common/traits.hpp>
9#include <mc/macros.hpp>
10#include <mc/prng/prng_extension.hpp>
11#include <mc/traits.hpp>
12#include <models/utils.hpp>
43 MODEL_CONSTANT std::size_t
n_c = 1;
45 MODEL_CONSTANT std::string_view
name =
"simple";
79 std::size_t position_index,
82 KOKKOS_INLINE_FUNCTION
static void
89 KOKKOS_INLINE_FUNCTION
static double
96 static std::vector<std::string_view>
99 return {
"length",
"t_div",
"phi_s" };
102 static std::vector<std::size_t>
110 static std::vector<std::string_view>
117 CHECK_MODEL(SimpleModel)
119 KOKKOS_INLINE_FUNCTION
void
125 static constexpr auto local_l =
l_dist;
128 auto gen = random_pool.get_state();
131 random_pool.free_state(gen);
143 const std::size_t position_index,
146 const auto s = GET_CLAMPED_CONCENTRATION_CAST(
FloatType, 0);
155 GET_CONTRIBS(0) = -
phi_s;
163 KOKKOS_INLINE_FUNCTION
void
178 = new_current_length;
182 auto gen = random_pool.get_state();
186 random_pool.free_state(gen);
Status
Definition alias.hpp:125
@ Division
Definition alias.hpp:127
@ Idle
Definition alias.hpp:126
gen_pool_type< Kokkos::DefaultExecutionSpace > pool_type
Definition alias.hpp:100
KernelConcentrationType LocalConcentration
Definition alias.hpp:173
Kokkos::View< F *[Nc], ComputeSpace::array_layout, ComputeSpace, Kokkos::MemoryTraits< Kokkos::MemoryTraitsFlags::Restrict > > ParticlesContribs
Definition alias.hpp:66
Kokkos::View< F *[Nd], ComputeSpace::array_layout, ComputeSpace, Kokkos::MemoryTraits< Kokkos::MemoryTraitsFlags::Restrict > > ParticlesModel
Definition alias.hpp:52
Models definition.
Definition acetate.hpp:18
KOKKOS_INLINE_FUNCTION consteval F c_linear_density(F rho, F d)
Definition utils.hpp:94
static F constexpr _get_phi_s_max(F density, F dl, F glucose_to_biomass_yield=0.5)
Definition utils.hpp:45
Represents a TruncatedNormal (Gaussian) probability distribution.
Definition prng_extension.hpp:354
Rod-shaped cell growing on glucose, dividing on a timer.
Definition simple_model.hpp:26
MODEL_CONSTANT std::size_t n_c
Definition simple_model.hpp:43
MODEL_CONSTANT auto t_div_dist
Definition simple_model.hpp:64
MODEL_CONSTANT FloatType lin_density
Definition simple_model.hpp:55
MODEL_CONSTANT FloatType phi_s_max
Definition simple_model.hpp:58
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:90
std::true_type uniform_weight
Definition simple_model.hpp:27
static KOKKOS_INLINE_FUNCTION MC::Status update(const MC::pool_type &random_pool, FloatType d_t, std::size_t idx, const SelfParticle &arr, const SelfContribs &arr_contribs, std::size_t position_index, const MC::LocalConcentration &c)
Definition simple_model.hpp:138
static std::vector< std::size_t > get_number()
Definition simple_model.hpp:103
MODEL_CONSTANT FloatType l_min_m
Definition simple_model.hpp:51
SimpleModel Self
Definition simple_model.hpp:28
static std::vector< std::string_view > names()
Definition simple_model.hpp:97
MODEL_CONSTANT std::size_t n_var
Definition simple_model.hpp:41
particle_var
Definition simple_model.hpp:33
@ phi_s
Definition simple_model.hpp:37
@ length
Definition simple_model.hpp:34
@ t_div
Definition simple_model.hpp:36
@ age
Definition simple_model.hpp:35
@ __COUNT__
Definition simple_model.hpp:38
MODEL_CONSTANT FloatType d_m
Definition simple_model.hpp:52
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:164
MC::ParticlesContribs< Self::n_c, Self::FloatType > SelfContribs
Definition simple_model.hpp:47
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition simple_model.hpp:46
static KOKKOS_INLINE_FUNCTION void init(const MC::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition simple_model.hpp:120
std::nullopt_t Config
Definition simple_model.hpp:30
MODEL_CONSTANT FloatType l_dot_max
Definition simple_model.hpp:49
float FloatType
Definition simple_model.hpp:29
MODEL_CONSTANT auto l_dist
Definition simple_model.hpp:60
MODEL_CONSTANT std::string_view name
Definition simple_model.hpp:45
MODEL_CONSTANT FloatType k_s
Definition simple_model.hpp:53
static std::vector< std::string_view > species()
Definition simple_model.hpp:111
MODEL_CONSTANT FloatType l_max_m
Definition simple_model.hpp:50