1#ifndef __CORE_GLOBAL_INITIALLISER_HPP__
2#define __CORE_GLOBAL_INITIALLISER_HPP__
5#include <cma_utils/alias.hpp>
6#include <common/execinfo.hpp>
7#include <common/logger.hpp>
8#include <core/scalar_factory.hpp>
9#include <core/simulation_parameters.hpp>
12#include <initializer_list>
16#include <simulation/feed_descriptor.hpp>
17#include <simulation/mass_transfer.hpp>
18#include <simulation/scalar_initializer.hpp>
47 template <
typename T>
using OptionalPtr = std::optional<std::unique_ptr<T>>;
58 std::shared_ptr<IO::Logger> =
nullptr);
102 init_simulation(std::optional<Core::ScalarFactory::ScalarVariant> variant);
121 std::optional<Simulation::ScalarInitializer>
init_scalar();
123 std::optional<Simulation::ScalarInitializer>
129 std::optional<Simulation::MassTransfer::Type::MtrTypeVariant>&&
137 bool init_feed(std::optional<Simulation::Feed::SimulationFeed>
feed
159 void set_logger(std::shared_ptr<IO::Logger> _logger);
199 template <
typename... Args>
218 template <
typename... Args>
223 (void)std::initializer_list<int>{ (
268 std::optional<Simulation::Feed::SimulationFeed>
feed;
OptionalPtr< Simulation::SimulationUnit > init_simulation(std::optional< Core::ScalarFactory::ScalarVariant > variant)
Initializes a simulation unit.
Definition global_initaliser.cpp:324
ExecInfo info
Definition global_initaliser.hpp:249
std::optional< CmaUtils::TransitionnerPtrType > init_transitionner()
Initializes a transitioner with the provided flow iterator.
Definition global_initaliser.cpp:201
void set_initial_number_particle(uint64_t np) noexcept
Definition global_initaliser.cpp:465
std::optional< Simulation::Feed::SimulationFeed > feed
Definition global_initaliser.hpp:268
bool f_init_gas_flow
Definition global_initaliser.hpp:267
double t_per_flowmap
Definition global_initaliser.hpp:265
std::optional< bool > host_init_state(const CmaUtils::TransitionnerPtrType &transiionner)
Retrieves path files based on the provided case path.
Definition global_initaliser.cpp:501
void validate_step(InitStep step, Args... args)
Validates the specified initialization step and any additional steps.
Definition global_initaliser.hpp:220
std::vector< std::size_t > flat_neighobrs
Definition global_initaliser.hpp:263
bool check_steps(InitStep step, Args... args) const
Checks the validity of specified initialization steps.
Definition global_initaliser.hpp:201
GlobalInitialiser(const ExecInfo &_info, UserControlParameters _user_params, std::shared_ptr< IO::Logger >=nullptr)
Constructs a GlobalInitialiser instance.
Definition global_initaliser.cpp:107
std::vector< double > gas_volume
Definition global_initaliser.hpp:260
std::optional< std::unique_ptr< T > > OptionalPtr
Type alias for an optional unique pointer.
Definition global_initaliser.hpp:47
std::vector< double > liquid_volume
Definition global_initaliser.hpp:259
void set_logger(std::shared_ptr< IO::Logger > _logger)
Definition global_initaliser.cpp:124
UserControlParameters user_params
Definition global_initaliser.hpp:252
std::array< bool, static_cast< size_t >(InitStep::Count)> validated_steps
Array to track validated initialization steps.
Definition global_initaliser.hpp:190
std::optional< bool > init_state(const CmaUtils::TransitionnerPtrType &transiionner)
Initializes a flow iterator.
Definition global_initaliser.cpp:180
OptionalPtr< MC::MonteCarloUnit > init_monte_carlo()
Initializes a Monte Carlo unit.
Definition global_initaliser.cpp:247
void mpi_broadcast()
Performs MPI broadcast for synchronization.
Definition global_initaliser.cpp:569
std::optional< Simulation::ScalarInitializer > init_scalar()
Initializes a scalar component of the simulation.
Definition global_initaliser.cpp:423
std::shared_ptr< IO::Logger > logger
Definition global_initaliser.hpp:269
SimulationParameters params
Definition global_initaliser.hpp:250
bool is_host
Flag indicating if this instance is the host.
Definition global_initaliser.hpp:273
std::optional< bool > init_mtr_model(Simulation::SimulationUnit &unit, std::optional< Simulation::MassTransfer::Type::MtrTypeVariant > &&variant)
Definition global_initaliser.cpp:389
SimulationParameters get_parameters() const
Definition global_initaliser.cpp:494
InitStep
Enum to define initialization steps.
Definition global_initaliser.hpp:175
@ InitState
Step for initializing the simulation state.
Definition global_initaliser.hpp:178
@ MTR
Definition global_initaliser.hpp:183
@ Feed
Step for initializing the simulation feed.
Definition global_initaliser.hpp:180
@ SimulationUnit
Step for initializing the simulation unit.
Definition global_initaliser.hpp:182
@ Count
Total number of steps in the initialization sequence.
Definition global_initaliser.hpp:184
@ Scalar
Step for initializing scalar values.
Definition global_initaliser.hpp:179
@ Transitioner
Step for initializing the transitioner.
Definition global_initaliser.hpp:177
bool init_feed(std::optional< Simulation::Feed::SimulationFeed > feed=std::nullopt)
Initializes a simulation feed.
Definition global_initaliser.cpp:145
bool check_init_terminate() const
Checks if all initialization steps have been validated.
Definition global_initaliser.cpp:471
interface to balance the number of particle accros ranks
Definition iload_balancer.hpp:13
Definition simulation.hpp:45
rust::Box< TransitionerWrapper > TransitionnerPtrType
Opaque type for flowmap transitioner.
Definition alias.hpp:14
std::variant< Uniform, Local, File, CustomScript, FullCase > ScalarVariant
Path to the custom script used for initializing scalar data.
Definition scalar_factory.hpp:132
Core component to perform simulation.
Definition data_exporter.hpp:19
Namespace that contains classes and structures related to Monte Carlo (MC) simulations.
Definition alias.hpp:15
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
Definition global_initaliser.hpp:255
Definition simulation_parameters.hpp:58
A structure to hold user-defined control parameters for simulation settings.
Definition simulation_parameters.hpp:24
Definition execinfo.hpp:12
Definition scalar_initializer.hpp:29