203 std::filesystem::path
const &path,
int mode,
207 std::string(
"Error while writing " +
classname +
" checkpoint: ");
209 auto const &comm = context.
get_comm();
213 auto failure =
false;
214 std::shared_ptr<CheckpointFile>
cpfile;
216 cpfile = std::make_shared<CheckpointFile>(path, std::ios_base::out,
binary);
217 failure = !
cpfile->stream;
218 boost::mpi::broadcast(comm, failure, 0);
220 throw std::runtime_error(
err_msg +
"could not open file " +
223 cpfile->stream.exceptions(std::ios_base::failbit | std::ios_base::badbit);
225 cpfile->stream.precision(16);
226 cpfile->stream << std::fixed;
229 boost::mpi::broadcast(comm, failure, 0);
238 }
catch (std::exception
const &error) {
242 if (
dynamic_cast<std::ios_base::failure
const *
>(&error)) {
243 throw std::runtime_error(
err_msg +
"could not write to " +
ScriptInterface::Context decorates ScriptInterface::ObjectHandle objects with a context: a creation p...
Context of an object handle.
virtual bool is_head_node() const =0
virtual boost::mpi::communicator const & get_comm() const =0
void save_checkpoint_common(Context const &context, std::string const classname, std::filesystem::path const &path, int mode, F1 const write_metadata, F2 const write_data, F3 const on_failure)
void load_checkpoint_common(Context const &context, std::string const classname, std::filesystem::path const &path, int mode, F1 const read_metadata, F2 const read_data, F3 const on_success)