1#ifndef __SIMULATION__MOVE_INFO_HPP__
2#define __SIMULATION__MOVE_INFO_HPP__
4#include <Kokkos_Core_fwd.hpp>
5#include <common/common.hpp>
7#include <simulation/alias.hpp>
26 Kokkos::SharedHostPinnedSpace,
27 Kokkos::MemoryTraits<Kokkos::MemoryTraitsFlags::Aligned |
28 Kokkos::MemoryTraitsFlags::Restrict>>
36 MoveInfo(
const std::size_t n_compartments,
const std::size_t n_flows)
44 void update(std::span<const double> newliquid_volume,
45 std::span<const double> diag,
46 std::span<const double> proba)
48 KOKKOS_ASSERT(newliquid_volume.size() == this->liquid_volume.extent(0));
49 const auto n_c = diag.size();
50 const auto n_neighbors = proba.size() / n_c;
51 KOKKOS_ASSERT(proba.size() % n_c == 0);
53 Kokkos::View<const double*, HostSpace> hostli(newliquid_volume.data(),
54 newliquid_volume.size());
55 Kokkos::deep_copy(this->liquid_volume, hostli);
57 Kokkos::View<
const double*,
60 Kokkos::MemoryTraits<Kokkos::RandomAccess>>
61 _diag_transition(diag.data(), n_c);
65 const auto* chunk_proba = proba.data();
67 chunk_proba, n_c, n_neighbors);
69 Kokkos::create_mirror_view_and_copy(ComputeSpace(), cumproba_host);
73 set_flow(
const std::size_t i,
const std::size_t i_flow,
const double flow)
Definition kernels.hpp:11
Kokkos::View< double *, Kokkos::LayoutLeft, ExecSpace, Kokkos::MemoryTraits< Kokkos::RandomAccess > > DiagonalView
Definition alias.hpp:14
Kokkos::View< const double **, Kokkos::LayoutRight, Space, Kokkos::MemoryTraits< Kokkos::RandomAccess > > CumulativeProbabilityView
Definition alias.hpp:20
Definition move_info.hpp:13
double flow
Definition move_info.hpp:15
std::size_t index
Definition move_info.hpp:14
void set_flow(const std::size_t i, const std::size_t i_flow, const double flow)
Definition move_info.hpp:73
MoveInfo()
Definition move_info.hpp:32
Kokkos::View< LeavingFlow *, Kokkos::SharedHostPinnedSpace, Kokkos::MemoryTraits< Kokkos::MemoryTraitsFlags::Aligned|Kokkos::MemoryTraitsFlags::Restrict > > leaving_flow
Definition move_info.hpp:29
DiagonalView< ExecSpace > diag_transition
Definition move_info.hpp:21
MoveInfo(const std::size_t n_compartments, const std::size_t n_flows)
Definition move_info.hpp:36
CumulativeProbabilityView< ExecSpace > cumulative_probability
Definition move_info.hpp:22
void update(std::span< const double > newliquid_volume, std::span< const double > diag, std::span< const double > proba)
Definition move_info.hpp:44
ConstNeighborsView< ExecSpace > neighbors
Definition move_info.hpp:20
Kokkos::View< double *, ExecSpace > liquid_volume
Definition move_info.hpp:30