BioCMAMC-ST
udf_model.hpp
1// #ifdef DECLARE_EXPORT_UDF
2#ifndef __BIO_MODEL_USER_HPP__
3# define __BIO_MODEL_USER_HPP__
4# include "mc/alias.hpp"
5# include <mc/traits.hpp>
6
7namespace Models
8{
9 struct UdfModel
10 {
11
12 static std::size_t n_var;
13 static std::size_t n_c;
14 static constexpr std::string_view name = "udf_model";
15 using uniform_weight = std::true_type; // Using type alias
16 using Self = UdfModel;
17 using FloatType = float;
20 using Config = Kokkos::View<float**>;
21
22 KOKKOS_FUNCTION static void
23 init([[maybe_unused]] const MC::pool_type& random_pool,
24 [[maybe_unused]] std::size_t idx,
25 [[maybe_unused]] const SelfParticle& arr,
26 const Self::Config& config);
27
28 KOKKOS_FUNCTION static double
29 mass([[maybe_unused]] std::size_t idx,
30 [[maybe_unused]] const SelfParticle& arr);
31
33
34 static Self::Config get_config(std::size_t n);
35
36 KOKKOS_FUNCTION static MC::Status
37 update([[maybe_unused]] const MC::pool_type& random_pool,
38 [[maybe_unused]] FloatType d_t,
39 [[maybe_unused]] std::size_t idx,
40 [[maybe_unused]] const SelfParticle& arr,
41 [[maybe_unused]] const SelfContribs& arr_contribs,
42 std::size_t position_index,
43 [[maybe_unused]] const MC::LocalConcentration& c);
44
45 KOKKOS_FUNCTION static void
46 division([[maybe_unused]] const MC::pool_type& random_pool,
47 [[maybe_unused]] std::size_t idx,
48 [[maybe_unused]] std::size_t idx2,
49 [[maybe_unused]] const SelfParticle& arr,
50 [[maybe_unused]] const SelfParticle& buffer_arr);
51
52 static std::vector<std::string_view> names();
53
54 static std::vector<std::size_t> get_number();
55
56 static void set_nvar();
57 };
58 inline std::size_t UdfModel::n_var = 0; // Need to be overwritte
59 inline std::size_t UdfModel::n_c = 0; // Need to be overwritte
60 static_assert(ModelType<UdfModel>, "Check Pimpl");
61 static_assert(ConfigurableModel<UdfModel>, "Check Pimpl");
62 static_assert(HasExportProperties<UdfModel>, "Check Pimpl");
63} // namespace Models
64
65#endif
66// #endif
Definition traits.hpp:147
Model that can export properties.
Definition traits.hpp:172
Model type.
Definition traits.hpp:141
Kokkos::View< F **, ComputeSpace::array_layout, ComputeSpace, Kokkos::MemoryTraits< Kokkos::MemoryTraitsFlags::Restrict > > DynParticlesContribs
Definition alias.hpp:78
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 **, ComputeSpace::array_layout, ComputeSpace, Kokkos::MemoryTraits< Kokkos::MemoryTraitsFlags::Restrict > > DynParticlesModel
Definition alias.hpp:72
Models definition.
Definition config_loader.hpp:9
Definition alias.hpp:133
Definition udf_model.hpp:10
static std::size_t n_c
Definition udf_model.hpp:13
Kokkos::View< float ** > Config
Definition udf_model.hpp:20
static std::vector< std::size_t > get_number()
Definition udfmodel_user.cpp:72
static KOKKOS_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 udfmodel_user.cpp:42
static void set_nvar()
Definition udfmodel_user.cpp:52
static KOKKOS_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 udfmodel_user.cpp:29
static constexpr std::string_view name
Definition udf_model.hpp:14
static MC::ContribIndexBounds get_bounds()
static KOKKOS_FUNCTION void init(const MC::pool_type &random_pool, std::size_t idx, const SelfParticle &arr, const Self::Config &config)
Definition udfmodel_user.cpp:14
MC::DynParticlesModel< FloatType > SelfParticle
Definition udf_model.hpp:18
MC::DynParticlesContribs< FloatType > SelfContribs
Definition udf_model.hpp:19
float FloatType
Definition udf_model.hpp:17
UdfModel Self
Definition udf_model.hpp:16
std::true_type uniform_weight
Definition udf_model.hpp:15
static Self::Config get_config(std::size_t n)
Definition udfmodel_user.cpp:65
static KOKKOS_FUNCTION double mass(std::size_t idx, const SelfParticle &arr)
Definition udfmodel_user.cpp:23
static std::size_t n_var
Definition udf_model.hpp:12
static std::vector< std::string_view > names()
Definition udfmodel_user.cpp:59