3#ifndef __CORE__SERDE_HPP__
4#define __CORE__SERDE_HPP__
5#include <core/global_initaliser.hpp>
7#include <core/case_data.hpp>
12 void save_simulation(
const Core::CaseData& case_data);
13 bool load_simulation(Core::GlobalInitialiser& gi,
14 Core::CaseData& case_data,
15 std::string_view ser_filename);
21# include <cereal/archives/binary.hpp>
29template <
typename T =
void>
30 requires AutoGenerated::FlagCompileTime::use_cereal_serde
34 std::cout <<
"Serialization..." << std::endl;
35 SerDe::save_simulation(case_data);
38template <
typename T =
void>
39 requires AutoGenerated::FlagCompileTime::use_cereal_serde
40std::optional<Core::CaseData>
41impl_load(std::shared_ptr<IO::Logger>& logger,
44 std::optional<Simulation::Feed::SimulationFeed> feed)
54 auto transition = gi.init_transitionner();
55 if (!transition.has_value())
61 gi.init_feed(std::move(feed));
64 if (!params.serde_file.has_value())
68 std::string serde_filename
69 = *params.serde_file + std::to_string(exec.current_rank) +
".raw";
72 logger->print(
"Serde", serde_filename);
74 const bool ok_init = SerDe::load_simulation(gi, case_data, serde_filename);
76 if (!gi.check_init_terminate() || !ok_init)
81 catch (std::exception& e)
83 auto err =
"CORE::load::load_simulation:" + std::string(e.what());
84 throw std::runtime_error(err);
87 case_data.
params = gi.get_parameters();
97template <
typename T =
void>
98 requires(!AutoGenerated::FlagCompileTime::use_cereal_serde)
105template <
typename T =
void>
106 requires(!AutoGenerated::FlagCompileTime::use_cereal_serde)
107[[maybe_unused]] std::optional<Core::CaseData>
108impl_load([[maybe_unused]]
const ExecInfo& exec,
110 [[maybe_unused]] std::optional<Simulation::Feed::SimulationFeed> feed)
A class responsible for initializing various components of a simulation framework.
Definition global_initaliser.hpp:41
Holds the data required to execute a simulation case.
Definition case_data.hpp:39
ExecInfo exec_info
Information about the execution environment.
Definition case_data.hpp:77
SimulationParameters params
Parameters that configure the simulation.
Definition case_data.hpp:57
CmaUtils::TransitionnerPtrType transitioner
Unique pointer to the flow map transitioner.
Definition case_data.hpp:68
A structure to hold user-defined control parameters for simulation settings.
Definition simulation_parameters.hpp:24
Definition execinfo.hpp:12