BioCMAMC-ST
unit.hpp
1#ifndef __MC_UNIT_HPP__
2#define __MC_UNIT_HPP__
3
4#include <mc/domain.hpp>
5#include <mc/events.hpp>
6#include <mc/particles_container.hpp>
7#include <mc/prng/prng.hpp>
8#include <mc/traits.hpp>
9#include <variant>
10#include <variant_model.hpp>
11
21namespace MC
22{
24
34 {
39
40 AutoGenerated::ContainerVariant container;
44 double init_weight{};
45
46 // Non-copyable, movable
49 MonteCarloUnit(MonteCarloUnit&&) noexcept = default;
50 MonteCarloUnit& operator=(MonteCarloUnit&&) noexcept = default;
51 MonteCarloUnit() = default;
52 ~MonteCarloUnit() = default;
53
54 [[nodiscard]] uint64_t n_particle() const;
55
56 [[nodiscard]] std::vector<uint64_t> getRepartition() const;
57
58 template <class Archive>
59 void
60 serialize(Archive& ar)
61 {
63
64 std::visit(
65 [&ar](auto& _container)
66 {
67 ar(_container);
68 _container.change_runtime(load_tuning_constant());
69 },
70 container);
71 }
72 };
73
74} // namespace MC
75
76#endif //__MC_UNIT_HPP__
Utilities and wrap around kokkos random generator.
Definition prng.hpp:73
Represents the spatial domain where Monte Carlo particles can exist.
Definition domain.hpp:54
Namespace that contains classes and structures related to Monte Carlo (MC) simulations.
Definition alias.hpp:15
RuntimeParameters load_tuning_constant()
Definition unit.cpp:267
Use to count events that occurs during Monte-Carlo processing cycles.
Definition events.hpp:45
MonteCarloUnit(const MonteCarloUnit &)=delete
MC::KPRNG rng
Random number generator used for Monte Carlo methods.
Definition unit.hpp:42
std::vector< uint64_t > getRepartition() const
Definition unit.cpp:136
ReactorDomain domain
Domain in which the simulation is performed.
Definition unit.hpp:38
MonteCarloUnit(MonteCarloUnit &&) noexcept=default
double init_weight
Initial weight or factor used in the simulation.
Definition unit.hpp:44
void serialize(Archive &ar)
Definition unit.hpp:60
uint64_t n_particle() const
Definition unit.cpp:128
AutoGenerated::ContainerVariant container
Definition unit.hpp:40
MonteCarloUnit & operator=(const MonteCarloUnit &)=delete
EventContainer events
Container to manage and store simulation events.
Definition unit.hpp:36
Definition particles_container.hpp:25