20#ifndef PISM_OUTPUTWRITER_H
21#define PISM_OUTPUTWRITER_H
34class VariableMetadata;
35class VariableAttributes;
115 void initialize(
const std::set<VariableMetadata> &array_variables,
bool relaxed_mode =
false);
130 const std::map<std::string, std::string> &strings,
131 const std::map<std::string, std::vector<double> > &numbers);
139 void append_history(
const std::string &file_name,
const std::string &text);
146 void append_time(
const std::string &file_name,
double time_seconds);
157 void write_array(
const std::string &file_name,
const std::string &variable_name,
158 const std::vector<unsigned int> &start,
const std::vector<unsigned int> &
count,
159 const std::vector<double> &input);
166 void write_text(
const std::string &file_name,
const std::string &variable_name,
167 const std::vector<unsigned int> &start,
const std::vector<unsigned int> &
count,
168 const std::string &input);
182 const double *input);
190 void write_timeseries(
const std::string &file_name,
const std::string &variable_name,
191 const std::vector<unsigned int> &start,
192 const std::vector<unsigned int> &
count,
const std::vector<double> &input);
200 void append(
const std::string &file_name);
207 void sync(
const std::string &file_name);
213 void close(
const std::string &file_name);
232 MPI_Comm
comm()
const;
247 void define_dimension(
const std::string &file_name,
const std::string &dimension_name,
248 unsigned int length);
258 void define_variable(
const std::string &file_name,
const std::string &variable_name,
259 const std::vector<std::string> &dims,
io::Type type,
283 bool &
already_written(
const std::string &file_name,
const std::string &variable_name,
284 bool time_dependent);
319 const std::map<std::string, std::string> &strings,
320 const std::map<std::string, std::vector<double> > &numbers) = 0;
326 unsigned int length) = 0;
332 const std::vector<std::string> &dims,
io::Type type,
358 virtual void write_array_impl(
const std::string &file_name,
const std::string &variable_name,
359 const std::vector<unsigned int> &start,
360 const std::vector<unsigned int> &
count,
const double *data) = 0;
365 virtual void write_text_impl(
const std::string &file_name,
const std::string &variable_name,
366 const std::vector<unsigned int> &start,
367 const std::vector<unsigned int> &
count,
368 const std::string &input) = 0;
374 const std::string &variable_name,
375 const double *data) = 0;
385 virtual void sync_impl(
const std::string &file_name) = 0;
416 OutputFile(std::shared_ptr<OutputWriter> writer,
const std::string &
name);
421 const std::map<std::string, std::vector<double> > &numbers)
const;
427 void write_array(
const std::string &variable_name,
const std::vector<unsigned int> &start,
428 const std::vector<unsigned int> &
count,
const std::vector<double> &input)
const;
432 void write_timeseries(
const std::string &variable_name,
const std::vector<unsigned int> &start,
433 const std::vector<unsigned int> &
count,
434 const std::vector<double> &input)
const;
436 void write_text(
const std::string &variable_name,
const std::vector<unsigned int> &start,
437 const std::vector<unsigned int> &
count,
const std::string &input)
const;
449 const std::string &
name()
const;
A class for storing and accessing PISM configuration flags and parameters.
void write_distributed_array(const std::string &variable_name, const double *input) const
void append_time(double time_seconds) const
void set_global_attributes(const std::map< std::string, std::string > &strings, const std::map< std::string, std::vector< double > > &numbers) const
const std::string & name() const
std::shared_ptr< OutputWriter > m_writer
void append_history(const std::string &text) const
unsigned int time_dimension_length() const
void write_text(const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::string &input) const
void write_timeseries(const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::vector< double > &input) const
void define_variable(const VariableMetadata &variable) const
void write_array(const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::vector< double > &input) const
double last_time_value() const
void write_text(const std::string &file_name, const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::string &input)
unsigned int time_dimension_length(const std::string &file_name)
void close(const std::string &file_name)
void append(const std::string &file_name)
void add_variable(const VariableMetadata &metadata)
void set_is_async(bool flag)
virtual void write_array_impl(const std::string &file_name, const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const double *data)=0
virtual double last_time_value_impl(const std::string &file_name)=0
const std::string & time_name() const
virtual void set_global_attributes_impl(const std::string &file_name, const std::map< std::string, std::string > &strings, const std::map< std::string, std::vector< double > > &numbers)=0
void write_dimensions(const std::string &file_name, const VariableMetadata &variable)
bool & already_written(const std::string &file_name, const std::string &variable_name, bool time_dependent)
void define_variable(const std::string &file_name, const VariableMetadata &variable)
virtual void define_variable_impl(const std::string &file_name, const std::string &variable_name, const std::vector< std::string > &dims, io::Type type, const VariableAttributes &attributes)=0
virtual void define_dimension_impl(const std::string &file_name, const std::string &name, unsigned int length)=0
void set_global_attributes(const std::string &file_name, const std::map< std::string, std::string > &strings, const std::map< std::string, std::vector< double > > &numbers)
double last_time_value(const std::string &file_name)
void define_dimension(const std::string &file_name, const std::string &dimension_name, unsigned int length)
virtual void initialize_impl(const std::set< VariableMetadata > &array_variables)=0
void write_timeseries(const std::string &file_name, const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::vector< double > &input)
void append_time(const std::string &file_name, double time_seconds)
virtual void write_distributed_array_impl(const std::string &file_name, const std::string &variable_name, const double *data)=0
virtual void append_time_impl(const std::string &file_name, double time_seconds)=0
virtual void write_text_impl(const std::string &file_name, const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::string &input)=0
void initialize(const std::set< VariableMetadata > &array_variables, bool relaxed_mode=false)
virtual unsigned int time_dimension_length_impl(const std::string &file_name)=0
const std::string & experiment_id() const
void sync(const std::string &file_name)
std::vector< std::string > define_dimensions(const std::string &file_name, const VariableMetadata &variable)
virtual void close_impl(const std::string &file_name)=0
void write_experiment_id(const std::string &file_name)
void write_distributed_array(const std::string &file_name, const std::string &variable_name, const double *input)
virtual void sync_impl(const std::string &file_name)=0
const VariableMetadata & variable_info(const std::string &variable_name) const
bool variable_info_is_available(const std::string &variable_name) const
void append_history(const std::string &file_name, const std::string &text)
virtual void append_history_impl(const std::string &file_name, const std::string &text)=0
void write_array(const std::string &file_name, const std::string &variable_name, const std::vector< unsigned int > &start, const std::vector< unsigned int > &count, const std::vector< double > &input)
virtual void append_impl(const std::string &file_name)=0