3#ifndef __CORE__SERDE_HPP__
4#define __CORE__SERDE_HPP__
5#include <core/global_initaliser.hpp>
7#include <core/case_data.hpp>
15 std::string_view ser_filename);
21# include <cereal/archives/binary.hpp>
29template <
typename T =
void>
30 requires AutoGenerated::FlagCompileTime::use_cereal_serde
33 std::cout <<
"Serialization..." << std::endl;
34 SerDe::save_simulation(case_data);
37template <
typename T =
void>
38 requires AutoGenerated::FlagCompileTime::use_cereal_serde
39std::optional<Core::CaseData> impl_load(
const ExecInfo& exec,
41 std::optional<Simulation::Feed::SimulationFeed> feed)
51 auto transition = gi.init_transitionner();
52 if (!transition.has_value())
58 gi.init_feed(std::move(feed));
61 if (!params.serde_file.has_value())
65 std::string serde_filename = *params.serde_file + std::to_string(exec.current_rank) +
".raw";
66 std::cout << serde_filename << std::endl;
67 const bool ok_init = SerDe::load_simulation(gi, case_data, serde_filename);
69 if (!gi.check_init_terminate() || !ok_init)
74 catch (std::exception& e)
76 auto err =
"CORE::load::load_simulation:" + std::string(e.what());
77 throw std::runtime_error(err);
80 case_data.
params = gi.get_parameters();
89template <
typename T =
void>
90 requires(!AutoGenerated::FlagCompileTime::use_cereal_serde)
96template <
typename T =
void>
97 requires(!AutoGenerated::FlagCompileTime::use_cereal_serde)
98[[maybe_unused]] std::optional<Core::CaseData>
99impl_load([[maybe_unused]]
const ExecInfo& exec,
101 [[maybe_unused]] std::optional<Simulation::Feed::SimulationFeed> feed)
A class responsible for initializing various components of a simulation framework.
Definition global_initaliser.hpp:36
Holds the data required to execute a simulation case.
Definition case_data.hpp:28
ExecInfo exec_info
Information about the execution environment.
Definition case_data.hpp:61
SimulationParameters params
Parameters that configure the simulation.
Definition case_data.hpp:43
std::unique_ptr< CmaUtils::FlowMapTransitionner > transitioner
Unique pointer to the flow map transitioner.
Definition case_data.hpp:52
A structure to hold user-defined control parameters for simulation settings.
Definition simulation_parameters.hpp:24
Definition execinfo.hpp:12