|
BioCMAMC-ST
|
Classes | |
| struct | CycleFunctor |
| struct | CycleFunctors |
| class | CycleReducer |
| struct | CycleReducerType |
| struct | MoveFunctor |
| struct | MoveLeaveTally |
| struct | TagContribution |
| struct | TagContribution0D |
| struct | TagCycle |
| struct | TagLeave |
| struct | TagLeaveB0D |
| struct | TagMove |
| struct | TagMoveLeave |
Typedefs | |
| template<typename Space> | |
| using | cycle_reducer_view_type = KernelInline::CycleReducer<Space>::result_view_type |
| template<typename Space> | |
| using | move_reducer_view_type = Kokkos::View<MoveLeaveTally, Space> |
| using | fast_tag = void |
| using | precision_tag = int |
Functions | |
| KOKKOS_INLINE_FUNCTION std::size_t | __find_next_compartment (const MC::NeighborsView< ComputeSpace, true > &neighbors, const MC::CumulativeProbabilityView< ComputeSpace, true > &cumulative_probability, const std::size_t i_compartment, const double random_number) |
| probably overkill binary search to find next compartment | |
| template<typename ViewType1> | |
| KOKKOS_INLINE_FUNCTION void | find_flow (const ViewType1 &leaving_flow, const std::size_t position, MC::LeavingFlow::float_type &val_flow, MC::LeavingFlow::float_type &_liquid_volume) |
| template<typename T, typename FastSample = precision_tag> | |
| KOKKOS_INLINE_FUNCTION bool | probability_leaving (const T random_number, const double lambda) |
| template<typename T, typename FastSample = precision_tag> | |
| KOKKOS_INLINE_FUNCTION bool | probability_leaving (T random_number, double volume, double flow, double dt) |
| template<> | |
| KOKKOS_INLINE_FUNCTION bool | probability_leaving< float, fast_tag > (float random_number, double volume, double flow, double dt) |
| template<> | |
| KOKKOS_INLINE_FUNCTION bool | probability_leaving< double, fast_tag > (double random_number, double volume, double flow, double dt) |
Variables | |
| constexpr bool | enable_leave = true |
| constexpr bool | disable_leave = false |
| constexpr bool | disable_move = false |
| constexpr bool | enable_move = true |
| static constexpr bool | _use_kokkos_log = true |
| using Simulation::KernelInline::cycle_reducer_view_type = KernelInline::CycleReducer<Space>::result_view_type |
| using Simulation::KernelInline::fast_tag = void |
| using Simulation::KernelInline::move_reducer_view_type = Kokkos::View<MoveLeaveTally, Space> |
| using Simulation::KernelInline::precision_tag = int |
| KOKKOS_INLINE_FUNCTION std::size_t Simulation::KernelInline::__find_next_compartment | ( | const MC::NeighborsView< ComputeSpace, true > & | neighbors, |
| const MC::CumulativeProbabilityView< ComputeSpace, true > & | cumulative_probability, | ||
| const std::size_t | i_compartment, | ||
| const double | random_number ) |
probably overkill binary search to find next compartment
O(log n) over the cumulative transition probabilities of the current compartment, against the first impl which was O(n). Only reached by particles that actually leave, so no branchless mask here: the caller has already decided.
| KOKKOS_INLINE_FUNCTION void Simulation::KernelInline::find_flow | ( | const ViewType1 & | leaving_flow, |
| const std::size_t | position, | ||
| MC::LeavingFlow::float_type & | val_flow, | ||
| MC::LeavingFlow::float_type & | _liquid_volume ) |
| KOKKOS_INLINE_FUNCTION bool Simulation::KernelInline::probability_leaving | ( | const T | random_number, |
| const double | lambda ) |
| KOKKOS_INLINE_FUNCTION bool Simulation::KernelInline::probability_leaving | ( | T | random_number, |
| double | volume, | ||
| double | flow, | ||
| double | dt ) |
| KOKKOS_INLINE_FUNCTION bool Simulation::KernelInline::probability_leaving< double, fast_tag > | ( | double | random_number, |
| double | volume, | ||
| double | flow, | ||
| double | dt ) |
| KOKKOS_INLINE_FUNCTION bool Simulation::KernelInline::probability_leaving< float, fast_tag > | ( | float | random_number, |
| double | volume, | ||
| double | flow, | ||
| double | dt ) |
|
staticconstexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |