1#ifndef __SIMULATION_MC_KERNEL_HPP
2#define __SIMULATION_MC_KERNEL_HPP
3#include "Kokkos_Assert.hpp"
4#include "Kokkos_Printf.hpp"
5#include <mc/particles_container.hpp>
6#include <Kokkos_Core.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/prng/prng.hpp>
13#include <mc/traits.hpp>
14#include <simulation/alias.hpp>
15#include <simulation/probability_leaving.hpp>
16#include <simulation/probe.hpp>
40 std::size_t& waiting_allocation_particle,
41 [[maybe_unused]] std::size_t& dead_total)
const
60 waiting_allocation_particle += 1;
61 Kokkos::printf(
"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:128
Model::SelfParticle model
Definition particles_container.hpp:139
KOKKOS_INLINE_FUNCTION void get_contributions(std::size_t idx, const ContributionView &contributions) const
Definition particles_container.hpp:457
KOKKOS_INLINE_FUNCTION std::size_t n_particles() const
Gets the number of particles in the container.
Definition particles_container.hpp:161
KOKKOS_INLINE_FUNCTION bool handle_division(const MC::KPRNG::pool_type &random_pool, std::size_t idx1) const
Definition particles_container.hpp:228
MC::ParticlePositions position
Definition particles_container.hpp:140
MC::ParticleStatus status
Definition particles_container.hpp:141
@ NewParticle
Spawn new particle.
Kokkos::Experimental::ScatterView< double **, Kokkos::LayoutRight > ContributionView
Definition alias.hpp:30
Kokkos::View< const double **, Kokkos::LayoutLeft, ComputeSpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > > KernelConcentrationType
Definition alias.hpp:37
Definition move_kernel.hpp:19
Use to count events that occurs during Monte-Carlo processing cycles.
Definition events.hpp:43
KOKKOS_FORCEINLINE_FUNCTION constexpr void wrap_incr() const
Definition events.hpp:109
Definition simulation_kernel.hpp:23
MC::EventContainer events
Definition simulation_kernel.hpp:77
M::FloatType d_t
Definition simulation_kernel.hpp:72
MC::ContributionView contribs_scatter
Definition simulation_kernel.hpp:76
MC::KernelConcentrationType concentrations
Definition simulation_kernel.hpp:75
MC::ParticlesContainer< M > particles
Definition simulation_kernel.hpp:73
TeamPolicy::member_type TeamMember
Definition simulation_kernel.hpp:25
MC::KPRNG::pool_type random_pool
Definition simulation_kernel.hpp:74
KOKKOS_INLINE_FUNCTION void operator()(const TeamMember &team_handle, std::size_t &waiting_allocation_particle, std::size_t &dead_total) const
Definition simulation_kernel.hpp:39
Kokkos::TeamPolicy< ComputeSpace > TeamPolicy
Definition simulation_kernel.hpp:24
KOKKOS_INLINE_FUNCTION CycleFunctor(M::FloatType dt, MC::ParticlesContainer< M > _particles, MC::KPRNG::pool_type _random_pool, MC::KernelConcentrationType &&_concentrations, MC::ContributionView _contribs_scatter, MC::EventContainer _event)
Definition simulation_kernel.hpp:27