21#include "pism/util/Component.hh"
22#include "pism/util/Profiling.hh"
23#include "pism/util/io/File.hh"
24#include "pism/util/Grid.hh"
25#include "pism/util/pism_utilities.hh"
26#include "pism/util/VariableMetadata.hh"
27#include "pism/util/Config.hh"
28#include "pism/util/MaxTimestep.hh"
29#include "pism/util/Time.hh"
30#include "pism/util/Context.hh"
31#include "pism/util/Logger.hh"
32#include "pism/util/io/IO_Flags.hh"
47 unsigned int record = 0;
49 std::string input_filename = config->get_string(
"input.file");
51 bool bootstrap = config->get_flag(
"input.bootstrap") and (not input_filename.empty());
52 bool restart = (not config->get_flag(
"input.bootstrap")) and (not input_filename.empty());
57 }
else if (bootstrap) {
66 if (not input_filename.empty()) {
70 unsigned int last_record = input_file.
nrecords();
71 if (last_record > 0) {
85 m_config(
g->ctx()->config()),
86 m_sys(
g->ctx()->unit_system()),
87 m_log(
g->ctx()->log()) {
112 return *
m_grid->ctx()->time();
116 return m_grid->ctx()->profiling();
155 auto regrid_file =
m_config->get_string(
"input.regrid.file");
158 if (regrid_file.empty()) {
164 if (((not regrid_vars.empty()) and
set_member(m[
"short_name"], regrid_vars)) or
168 " %s: regridding '%s' from file '%s' ...\n",
170 m.get_string(
"short_name").c_str(), regrid_file.c_str());
const Time & time() const
std::shared_ptr< const Grid > grid() const
std::shared_ptr< const Config > m_config
configuration database used by this component
RegriddingFlag
This flag determines whether a variable is read from the -regrid_file file even if it is not listed a...
@ REGRID_WITHOUT_REGRID_VARS
virtual DiagnosticList spatial_diagnostics_impl() const
TSDiagnosticList scalar_diagnostics() const
const std::shared_ptr< const Grid > m_grid
grid used by this component
void regrid(const std::string &module_name, array::Array &variable, RegriddingFlag flag=NO_REGRID_WITHOUT_REGRID_VARS)
DiagnosticList spatial_diagnostics() const
virtual TSDiagnosticList scalar_diagnostics_impl() const
Component(std::shared_ptr< const Grid > grid)
virtual void write_state_impl(const OutputFile &output) const
The default (empty implementation).
const Profiling & profiling() const
std::set< VariableMetadata > state() const
virtual MaxTimestep max_timestep_impl(double t) const
MaxTimestep max_timestep(double t) const
Reports the maximum time-step the model can take at time t.
void write_state(const OutputFile &output) const
Write model state variables to an output file.
std::shared_ptr< const Logger > m_log
logger (for easy access)
virtual std::set< VariableMetadata > state_impl() const
unsigned int nrecords() const
Get the number of records. Uses the length of an unlimited dimension.
High-level PISM I/O class.
Combines the max. time step with the flag indicating if a restriction is active. Makes is possible to...
void regrid(const std::string &filename, io::Default default_value)
VariableMetadata & metadata(unsigned int N=0)
Returns a reference to the VariableMetadata object containing metadata for the compoment N.
Abstract class for reading, writing, allocating, and accessing a DA-based PETSc Vec (2D and 3D fields...
@ PISM_READONLY
open an existing file for reading only
std::map< std::string, TSDiagnostic::Ptr > TSDiagnosticList
std::map< std::string, Diagnostic::Ptr > DiagnosticList
std::set< std::string > set_split(const std::string &input, char separator)
Transform a separator-separated list (a string) into a set of strings.
InputOptions process_input_options(MPI_Comm com, std::shared_ptr< const Config > config)
bool set_member(const std::string &string, const std::set< std::string > &set)