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
21
namespace
MC
22
{
23
RuntimeParameters
load_tuning_constant
();
24
33
struct
MonteCarloUnit
34
{
36
EventContainer
events
;
38
ReactorDomain
domain
;
39
40
AutoGenerated::ContainerVariant
container
;
42
MC::KPRNG
rng
;
44
double
init_weight
{};
45
46
// Non-copyable, movable
47
MonteCarloUnit
(
const
MonteCarloUnit
&) =
delete
;
48
MonteCarloUnit
&
operator=
(
const
MonteCarloUnit
&) =
delete
;
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
{
62
ar(
init_weight
,
events
,
domain
,
container
);
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__
MC::KPRNG
Utilities and wrap around kokkos random generator.
Definition
prng.hpp:73
MC::ReactorDomain
Represents the spatial domain where Monte Carlo particles can exist.
Definition
domain.hpp:54
MC
Namespace that contains classes and structures related to Monte Carlo (MC) simulations.
Definition
alias.hpp:15
MC::load_tuning_constant
RuntimeParameters load_tuning_constant()
Definition
unit.cpp:267
MC::EventContainer
Use to count events that occurs during Monte-Carlo processing cycles.
Definition
events.hpp:45
MC::MonteCarloUnit::MonteCarloUnit
MonteCarloUnit(const MonteCarloUnit &)=delete
MC::MonteCarloUnit::rng
MC::KPRNG rng
Random number generator used for Monte Carlo methods.
Definition
unit.hpp:42
MC::MonteCarloUnit::getRepartition
std::vector< uint64_t > getRepartition() const
Definition
unit.cpp:136
MC::MonteCarloUnit::domain
ReactorDomain domain
Domain in which the simulation is performed.
Definition
unit.hpp:38
MC::MonteCarloUnit::MonteCarloUnit
MonteCarloUnit(MonteCarloUnit &&) noexcept=default
MC::MonteCarloUnit::init_weight
double init_weight
Initial weight or factor used in the simulation.
Definition
unit.hpp:44
MC::MonteCarloUnit::serialize
void serialize(Archive &ar)
Definition
unit.hpp:60
MC::MonteCarloUnit::n_particle
uint64_t n_particle() const
Definition
unit.cpp:128
MC::MonteCarloUnit::container
AutoGenerated::ContainerVariant container
Definition
unit.hpp:40
MC::MonteCarloUnit::operator=
MonteCarloUnit & operator=(const MonteCarloUnit &)=delete
MC::MonteCarloUnit::events
EventContainer events
Container to manage and store simulation events.
Definition
unit.hpp:36
MC::RuntimeParameters
Definition
particles_container.hpp:25
apps
libs
mc
public
mc
unit.hpp
Generated by
1.14.0