1#ifndef __SIMULATION_MC_KERNEL_HPP
2#define __SIMULATION_MC_KERNEL_HPP
4#include <Kokkos_Assert.hpp>
5#include <Kokkos_Core.hpp>
6#include <Kokkos_Printf.hpp>
7#include <Kokkos_Random.hpp>
8#include <biocma_cst_config.hpp>
10#include <mc/domain.hpp>
11#include <mc/events.hpp>
12#include <mc/particles_container.hpp>
13#include <mc/prng/prng.hpp>
14#include <mc/traits.hpp>
15#include <simulation/alias.hpp>
16#include <simulation/probability_leaving.hpp>
17#include <simulation/probe.hpp>
43 KOKKOS_INLINE_FUNCTION
50 KOKKOS_INLINE_FUNCTION
56 KOKKOS_INLINE_FUNCTION
62 KOKKOS_INLINE_FUNCTION
69 KOKKOS_INLINE_FUNCTION
83 KOKKOS_INLINE_FUNCTION
88 KOKKOS_INLINE_FUNCTION
104 KOKKOS_INLINE_FUNCTION
125 this->
block = _block;
128 KOKKOS_INLINE_FUNCTION
163 Kokkos::printf(
"[KERNEL] Division Overflow\r\n");
Kokkos::Random_XorShift1024_Pool< Kokkos::DefaultExecutionSpace > pool_type
Definition prng.hpp:17
Main owning object for Monte-Carlo particles.
Definition particles_container.hpp:143
Kokkos::View< value_type, Space > result_view_type
Definition model_kernel.hpp:41
KOKKOS_INLINE_FUNCTION CycleReducer(const result_view_type &value_)
Definition model_kernel.hpp:89
KOKKOS_INLINE_FUNCTION bool references_scalar() const
Definition model_kernel.hpp:63
KOKKOS_INLINE_FUNCTION void init(value_type &val) const
Definition model_kernel.hpp:70
KOKKOS_INLINE_FUNCTION result_view_type view() const
Definition model_kernel.hpp:57
KOKKOS_INLINE_FUNCTION void join(value_type &dest, const value_type &src) const
Definition model_kernel.hpp:44
CycleReduceType value_type
Definition model_kernel.hpp:40
KOKKOS_INLINE_FUNCTION CycleReducer(value_type &value_)
Definition model_kernel.hpp:84
KOKKOS_INLINE_FUNCTION value_type & reference() const
Definition model_kernel.hpp:51
bool references_scalar_v
Definition model_kernel.hpp:96
CycleReducer reducer
Definition model_kernel.hpp:39
result_view_type value
Definition model_kernel.hpp:95
Kokkos::Experimental:: ScatterView< double **, Kokkos::LayoutRight > ContributionView
Definition alias.hpp:47
@ Overflow
Definition events.hpp:22
@ NewParticle
Spawn new particle.
Definition events.hpp:18
@ Division
Definition alias.hpp:13
@ Idle
Definition alias.hpp:12
Kokkos::View< const double **, Kokkos::LayoutLeft, ComputeSpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > > KernelConcentrationType
Definition alias.hpp:53
Use to count events that occurs during Monte-Carlo processing cycles.
Definition events.hpp:43
MC::ContributionView block
Definition model_kernel.hpp:181
void sblock(MC::ContributionView _block)
Definition model_kernel.hpp:123
MC::EventContainer events
Definition model_kernel.hpp:180
M::FloatType d_t
Definition model_kernel.hpp:173
MC::ContributionView contribs_scatter
Definition model_kernel.hpp:177
MC::KernelConcentrationType concentrations
Definition model_kernel.hpp:176
KOKKOS_INLINE_FUNCTION CycleFunctor(MC::ParticlesContainer< M > _particles, MC::KPRNG::pool_type _random_pool, MC::KernelConcentrationType &&_concentrations, MC::ContributionView _contribs_scatter, MC::EventContainer _event)
Definition model_kernel.hpp:105
MC::ParticlesContainer< M > particles
Definition model_kernel.hpp:174
TeamPolicy::member_type TeamMember
Definition model_kernel.hpp:101
CycleReduceType value_type
Definition model_kernel.hpp:102
MC::KPRNG::pool_type random_pool
Definition model_kernel.hpp:175
KOKKOS_INLINE_FUNCTION void operator()(const TagFirstPass _tag, const TeamMember &team_handle) const
Definition model_kernel.hpp:129
KOKKOS_INLINE_FUNCTION void operator()(const TagSecondPass _tag, const TeamMember &team_handle, value_type &reduce_val) const
Definition model_kernel.hpp:141
Kokkos::TeamPolicy< ComputeSpace > TeamPolicy
Definition model_kernel.hpp:100
void update(double _d_t, MC::ParticlesContainer< M > _particles)
Definition model_kernel.hpp:117
MC::KernelConcentrationType limitation_factor
Definition model_kernel.hpp:179
Definition model_kernel.hpp:30
std::size_t waiting_allocation_particle
Definition model_kernel.hpp:31
std::size_t dead_total
Definition model_kernel.hpp:32
Definition model_kernel.hpp:23