1#ifndef __MC_REACTORDOMAIN_HPP__
2#define __MC_REACTORDOMAIN_HPP__
4#include <Kokkos_Core.hpp>
6#include <common/common.hpp>
9#include <mc/traits.hpp>
14 template <
typename Space>
16 View<std::size_t**, Kokkos::LayoutRight, Space, Kokkos::MemoryTraits<Kokkos::RandomAccess>>;
73 void setVolumes(std::span<double const> volumes_liq);
93 [[nodiscard]] ConstNeighborsView<ComputeSpace>
getNeighbors() const;
99 reduce(std::span<const
size_t> data,
size_t original_size,
size_t n_rank);
101 [[deprecated("Not needed anymore")]]
void
102 in_place_reduce(std::span<const
size_t> data,
size_t original_size,
size_t n_rank);
104 template <class Archive>
void save(Archive& ar)
const
110 template <
class Archive>
void load(Archive& ar)
Represents the spatial domain where Monte Carlo particles can exist.
Definition domain.hpp:37
double _total_volume
Domain total volume.
Definition domain.hpp:116
void setLiquidNeighbors(const NeighborsView< HostSpace > &data)
Update neigbors of compartments.
Definition domain.cpp:47
ConstNeighborsView< ComputeSpace > getNeighbors() const
Return a const reference to neighbors.
Definition domain.hpp:122
ReactorDomain & operator=(const ReactorDomain &)=delete
~ReactorDomain()=default
Default destructor.
Kokkos::View< uint64_t *, ComputeSpace > n_cells_view_type
Definition domain.hpp:39
void load(Archive &ar)
Definition domain.hpp:110
double getTotalVolume() const noexcept
Return total volume of domain.
Definition domain.hpp:132
static ReactorDomain reduce(std::span< const size_t > data, size_t original_size, size_t n_rank)
Return a unique domain from data obtained with MPI gather.
Definition domain.cpp:86
ReactorDomain()
Default constructor.
Definition domain.cpp:31
NeighborsView< ComputeSpace > k_neighbor
Definition domain.hpp:119
size_t size
Number of compartment.
Definition domain.hpp:118
void save(Archive &ar) const
Definition domain.hpp:104
void in_place_reduce(std::span< const size_t > data, size_t original_size, size_t n_rank)
Definition domain.cpp:66
void setVolumes(std::span< double const > volumes_liq)
Set volume of liquid and gas of each compartment.
Definition domain.cpp:15
ReactorDomain(const ReactorDomain &)=delete
size_t getNumberCompartments() const noexcept
Return the number of compartment in the domain.
Definition domain.hpp:127
ReactorDomain(ReactorDomain &&other) noexcept=default
Move constructor.
Namespace that contains classes and structures related to Monte Carlo (MC) simulations.
Definition alias.hpp:9
Kokkos:: View< std::size_t **, Kokkos::LayoutRight, Space, Kokkos::MemoryTraits< Kokkos::RandomAccess > > NeighborsView
Definition domain.hpp:15