20#include "pism/icemodel/IceModel.hh"
22#include "pism/util/pism_utilities.hh"
23#include "pism/util/Profiling.hh"
24#include "pism/util/io/io_helpers.hh"
57 double checkpoint_interval =
m_config->get_number(
"output.checkpoint.interval");
72 " [%s] Saving a checkpoint to '%s' (%1.3f hours after the beginning of the run)\n",
76 profiling.
begin(
"io.checkpoint");
98 profiling.
end(
"io.checkpoint");
105 " [%s] Done saving a checkpoint in %f seconds (%f minutes).\n",
107 checkpoint_end_time - checkpoint_start_time,
108 (checkpoint_end_time - checkpoint_start_time) / 60.0);
110 return m_config->get_flag(
"output.checkpoint.exit");
void init_checkpoints()
Initialize checkpointing (snapshot-on-wallclock-time) mechanism.
void define_variables(const OutputFile &file, const std::set< VariableMetadata > &variables) const
std::set< std::string > m_spatial_vars
std::shared_ptr< Config > m_config
Configuration flags and parameters.
void define_time(const OutputFile &file, bool with_bounds=false) const
void write_run_stats(const OutputFile &file) const
std::shared_ptr< Context > m_ctx
Execution context.
std::shared_ptr< Logger > m_log
Logger.
double m_last_checkpoint_time
virtual std::set< VariableMetadata > diagnostic_variables(const std::set< std::string > &variable_names) const
std::set< VariableMetadata > state_variables_diagnostics(const std::set< std::string > &variable_names) const
virtual std::set< VariableMetadata > state_variables() const
std::shared_ptr< Time > m_time
Time manager.
bool write_checkpoint()
Write a checkpoint (i.e. an intermediate result of a run).
std::set< std::string > m_checkpoint_vars
std::set< VariableMetadata > common_metadata() const
void write_state_diagnostics(const OutputFile &file, const std::set< std::string > &variable_names) const
void write_diagnostics(const OutputFile &file, const std::set< std::string > &variable_names) const
Writes variables listed in variable_names to file.
virtual std::set< std::string > output_variables(const std::string &keyword)
Assembles a list of diagnostics corresponding to an output file size.
std::string m_checkpoint_filename
std::shared_ptr< OutputWriter > m_output_writer
void scalar_diagnostics_flush_buffers()
Flush scalar time-series.
std::string m_output_filename
Name of the output file.
virtual void write_state(const OutputFile &file) const
std::set< VariableMetadata > m_checkpoint_file_contents
set of variables that will be written to checkpoint files
const std::shared_ptr< Grid > m_grid
Computational grid.
void append_time(double time_seconds) const
void begin(const char *name) const
void end(const char *name) const
void write_config(const Config &config, const std::string &variable_name, const OutputFile &file)
double get_time(MPI_Comm comm)
double wall_clock_hours(MPI_Comm com, double start_time)
Return time since the beginning of the run, in hours.
std::string filename_add_suffix(const std::string &filename, const std::string &separator, const std::string &suffix)
Adds a suffix to a filename.
std::string timestamp(MPI_Comm com)
Creates a time-stamp used for the history NetCDF attribute.
T combine(const T &a, const T &b)