BioCMAMC-ST
m_default.hpp
1#ifndef __DEFAULT_MODEL_IMPLEMENTATION_HPP__
2#define __DEFAULT_MODEL_IMPLEMENTATION_HPP__
3
4#include <mc/traits.hpp>
5#include <optional>
6
7
8/***
9DEFAULT MODEL IMPLEMENTATION
10***/
11
13{
14 enum class particle_var : int
15 {
16 mass = 0,
17 };
18 static constexpr std::size_t n_var = 1;
19
20 static constexpr std::string_view name = "simple";
21 using uniform_weight = std::true_type; // Using type alias
23 using FloatType = float;
25 using Config = std::nullopt_t;
26 static constexpr bool uniform_weigth = false;
27
28 KOKKOS_INLINE_FUNCTION static void init([[maybe_unused]] const MC::KPRNG::pool_type& random_pool,
29 [[maybe_unused]] std::size_t idx,
30 [[maybe_unused]] const SelfParticle& arr)
31 {
32 }
33
34 KOKKOS_INLINE_FUNCTION static double mass([[maybe_unused]] std::size_t idx,
35 [[maybe_unused]] const SelfParticle& arr)
36 {
37 return 1.;
38 }
39
40 KOKKOS_INLINE_FUNCTION static MC::Status
41 update([[maybe_unused]] const MC::KPRNG::pool_type& random_pool,
42 [[maybe_unused]] FloatType d_t,
43 [[maybe_unused]] std::size_t idx,
44 [[maybe_unused]] const SelfParticle& arr,
45 [[maybe_unused]] const MC::LocalConcentration& c)
46 {
47
48 return MC::Status::Idle;
49 }
50
51 KOKKOS_INLINE_FUNCTION static void
52 division([[maybe_unused]] const MC::KPRNG::pool_type& random_pool,
53 [[maybe_unused]] std::size_t idx,
54 [[maybe_unused]] std::size_t idx2,
55 [[maybe_unused]] const SelfParticle& arr,
56 [[maybe_unused]] const SelfParticle& buffer_arr)
57 {
58 }
59
60 KOKKOS_INLINE_FUNCTION static void
61 contribution([[maybe_unused]] std::size_t idx,
62 [[maybe_unused]] std::size_t position,
63 [[maybe_unused]] double weight,
64 [[maybe_unused]] const SelfParticle& arr,
65 [[maybe_unused]] const MC::ContributionView& contributions)
66 {
67 }
68};
69
70CHECK_MODEL(DefaultModel)
71
73{
74 enum class particle_var : int
75 {
76 mass = 0,
77 };
78 static constexpr std::size_t n_var = 1;
79 static constexpr std::string_view name = "simple";
80 using uniform_weight = std::true_type; // Using type alias
82 using FloatType = float;
84 using Config = float;
85 static constexpr bool uniform_weigth = false;
86
87 KOKKOS_INLINE_FUNCTION static void init([[maybe_unused]] const MC::KPRNG::pool_type& random_pool,
88 [[maybe_unused]] std::size_t idx,
89 [[maybe_unused]] const SelfParticle& arr,[[maybe_unused]] const Config& config)
90 {
91 }
92
93 KOKKOS_INLINE_FUNCTION static double mass([[maybe_unused]] std::size_t idx,
94 [[maybe_unused]] const SelfParticle& arr)
95 {
96 return 1.;
97 }
98
99 KOKKOS_INLINE_FUNCTION static MC::Status
100 update([[maybe_unused]] const MC::KPRNG::pool_type& random_pool,
101 [[maybe_unused]] FloatType d_t,
102 [[maybe_unused]] std::size_t idx,
103 [[maybe_unused]] const SelfParticle& arr,
104 [[maybe_unused]] const MC::LocalConcentration& c)
105 {
106
107 return MC::Status::Idle;
108 }
109
110 KOKKOS_INLINE_FUNCTION static void
111 division([[maybe_unused]] const MC::KPRNG::pool_type& random_pool,
112 [[maybe_unused]] std::size_t idx,
113 [[maybe_unused]] std::size_t idx2,
114 [[maybe_unused]] const SelfParticle& arr,
115 [[maybe_unused]] const SelfParticle& buffer_arr)
116 {
117 }
118
119 KOKKOS_INLINE_FUNCTION static void
120 contribution([[maybe_unused]] std::size_t idx,
121 [[maybe_unused]] std::size_t position,
122 [[maybe_unused]] double weight,
123 [[maybe_unused]] const SelfParticle& arr,
124 [[maybe_unused]] const MC::ContributionView& contributions)
125 {
126 }
127};
128
129CHECK_MODEL(DynamicDefaultModel)
130
131
132
133#endif
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
Kokkos::View< F ** > DynParticlesModel
Definition traits.hpp:35
Definition m_default.hpp:13
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr)
Definition m_default.hpp:28
float FloatType
Definition m_default.hpp:23
static KOKKOS_INLINE_FUNCTION void contribution(std::size_t idx, std::size_t position, double weight, const SelfParticle &arr, const MC::ContributionView &contributions)
Definition m_default.hpp:61
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 m_default.hpp:41
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition m_default.hpp:34
static constexpr std::size_t n_var
Definition m_default.hpp:18
std::true_type uniform_weight
Definition m_default.hpp:21
static constexpr bool uniform_weigth
Definition m_default.hpp:26
MC::ParticlesModel< Self::n_var, Self::FloatType > SelfParticle
Definition m_default.hpp:24
particle_var
Definition m_default.hpp:15
static constexpr std::string_view name
Definition m_default.hpp:20
std::nullopt_t Config
Definition m_default.hpp:25
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 m_default.hpp:52
Definition m_default.hpp:73
static KOKKOS_INLINE_FUNCTION void init(const MC::KPRNG::pool_type &random_pool, std::size_t idx, const SelfParticle &arr, const Config &config)
Definition m_default.hpp:87
static KOKKOS_INLINE_FUNCTION void contribution(std::size_t idx, std::size_t position, double weight, const SelfParticle &arr, const MC::ContributionView &contributions)
Definition m_default.hpp:120
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 m_default.hpp:111
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 m_default.hpp:100
static KOKKOS_INLINE_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition m_default.hpp:93
float FloatType
Definition m_default.hpp:82
particle_var
Definition m_default.hpp:75
MC::DynParticlesModel< FloatType > SelfParticle
Definition m_default.hpp:83
std::true_type uniform_weight
Definition m_default.hpp:80
float Config
Definition m_default.hpp:84