2#ifndef __FIXED_LENGTH_MODEL_HPP__
3#define __FIXED_LENGTH_MODEL_HPP__
5#include <Kokkos_Core_fwd.hpp>
6#include <Kokkos_Macros.hpp>
7#include <common/common.hpp>
8#include <common/traits.hpp>
10#include <mc/macros.hpp>
11#include <mc/prng/prng_extension.hpp>
12#include <mc/traits.hpp>
13#include <models/utils.hpp>
24 using Config = Kokkos::View<const FloatType*, ComputeSpace>;
35 MODEL_CONSTANT std::size_t
n_c = 1;
37 MODEL_CONSTANT std::string_view
name =
"fixed-length";
69 std::size_t position_index,
72 KOKKOS_INLINE_FUNCTION
static void
79 KOKKOS_INLINE_FUNCTION
static double
85 static std::vector<std::string_view>
94 static std::vector<std::size_t>
101 static std::vector<std::string_view>
108 CHECK_MODEL(FixedLength)
110 KOKKOS_INLINE_FUNCTION
void
116 auto gen = random_pool.get_state();
117 const auto linit = config(idx);
118 random_pool.free_state(gen);
130 const std::size_t position_index,
135 const auto s =
static_cast<FloatType>(GET_CONCENTRATION(0));
136 auto& c_phi_s = GET_CONTRIBS(0);
144 const auto alpha = 0.F;
147 l += d_t * ldot + alpha;
152 KOKKOS_INLINE_FUNCTION
void
171 = new_current_length;
Status
Definition alias.hpp:125
gen_pool_type< Kokkos::DefaultExecutionSpace > pool_type
Definition alias.hpp:100
KernelConcentrationType LocalConcentration
Definition alias.hpp:170
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 MC::Status check_div(const T l, const T lc)
Definition utils.hpp:64
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
Definition execinfo.hpp:21
Definition fixed_length.hpp:19
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition fixed_length.hpp:38
MODEL_CONSTANT std::size_t n_c
Definition fixed_length.hpp:35
FixedLength Self
Definition fixed_length.hpp:21
particle_var
Definition fixed_length.hpp:27
@ length
Definition fixed_length.hpp:28
@ l_max
Definition fixed_length.hpp:29
@ __COUNT__
Definition fixed_length.hpp:30
MODEL_CONSTANT std::string_view name
Definition fixed_length.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 fixed_length.hpp:153
double FloatType
Definition fixed_length.hpp:22
MODEL_CONSTANT FloatType l_max_m
Definition fixed_length.hpp:42
static std::vector< std::size_t > get_number()
Definition fixed_length.hpp:95
MODEL_CONSTANT FloatType l_dot_max
Definition fixed_length.hpp:41
MODEL_CONSTANT FloatType l_min_m
Definition fixed_length.hpp:43
static bool use_contribs
Definition fixed_length.hpp:56
static std::vector< std::string_view > species()
Definition fixed_length.hpp:102
MODEL_CONSTANT std::size_t n_var
Definition fixed_length.hpp:33
MODEL_CONSTANT FloatType d_m
Definition fixed_length.hpp:45
MODEL_CONSTANT FloatType phi_s_max
Definition fixed_length.hpp:50
MODEL_CONSTANT FloatType lin_density
Definition fixed_length.hpp:47
static std::vector< std::string_view > names()
Definition fixed_length.hpp:86
static MC::ContribIndexBounds get_bounds()
MODEL_CONSTANT FloatType k
Definition fixed_length.hpp:44
MC::ParticlesContribs< Self::n_c, Self::FloatType > SelfContribs
Definition fixed_length.hpp:39
std::true_type uniform_weight
Definition fixed_length.hpp:20
static Self::Config get_config(const ExecInfo &info, std::size_t n)
Definition config_loader.cpp:76
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 fixed_length.hpp:125
static KOKKOS_INLINE_FUNCTION void init(const MC::pool_type &random_pool, std::size_t idx, const SelfParticle &arr, const Config ¶ms)
Definition fixed_length.hpp:111
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition fixed_length.hpp:80
Kokkos::View< const FloatType *, ComputeSpace > Config
Definition fixed_length.hpp:24