20#ifndef PISM_IO_HELPERS_H
21#define PISM_IO_HELPERS_H
36class VariableMetadata;
43class DistributedGridInfo;
54 const std::string &variable_name);
58 const std::vector<double> &internal_z_levels,
59 bool allow_extrapolation);
62 const Grid& internal_grid,
70 unsigned int time,
double *output);
73 const std::string &units,
74 std::shared_ptr<units::System> unit_system);
77 const std::string &units,
78 std::shared_ptr<units::System> unit_system,
79 size_t start,
size_t count);
81std::vector<double>
read_bounds(
const File &file,
const std::string &bounds_variable_name,
82 const std::string &units,
83 std::shared_ptr<units::System> unit_system);
86 const std::string &time_name,
const std::string &time_units,
87 std::vector<double> ×, std::vector<double> &bounds);
90 std::shared_ptr<units::System> unit_system);
93 const std::set<VariableMetadata> &variables,
95 bool use_internal_units);
101void move_if_exists(MPI_Comm com,
const std::string &file_to_move,
int rank_to_use = 0);
103void remove_if_exists(MPI_Comm com,
const std::string &file_to_remove,
int rank_to_use = 0);
A class for storing and accessing PISM configuration flags and parameters.
High-level PISM I/O class.
Describes the PISM grid and the distribution of data across processors.
std::vector< double > read_timeseries_variable(const File &file, const std::string &variable_name, const std::string &units, std::shared_ptr< units::System > unit_system, size_t start, size_t count)
void read_spatial_variable(const VariableMetadata &variable, const Grid &grid, const File &file, unsigned int time, double *output)
Read a variable from a file into an array output.
VariableMetadata read_attributes(const File &file, const std::string &variable_name, std::shared_ptr< units::System > unit_system)
void check_input_grid(const grid::InputGridInfo &input_grid, const grid::DistributedGridInfo &internal_grid, const std::vector< double > &internal_z_levels, bool allow_extrapolation)
Check that x, y, and z coordinates of the input grid are strictly increasing.
void read_time_info(std::shared_ptr< units::System > unit_system, const File &file, const std::string &time_name, const std::string &time_units, std::vector< double > ×, std::vector< double > &bounds)
std::vector< double > read_1d_variable(const File &file, const std::string &variable_name, const std::string &units, std::shared_ptr< units::System > unit_system)
void write_config(const Config &config, const std::string &variable_name, const OutputFile &file)
void move_if_exists(MPI_Comm com, const std::string &file_to_move, int rank_to_use=0)
Moves the file aside (file.nc -> file.nc~).
void define_variables(const OutputFile &file, const std::set< VariableMetadata > &variables, const VariableMetadata &mapping, bool use_internal_units)
void regrid_spatial_variable(const VariableMetadata &variable, const Grid &target_grid, const LocalInterpCtx &interp_context, const File &file, const Logger &log, double *output)
Regrid from a NetCDF file into a distributed array output.
std::vector< double > read_bounds(const File &file, const std::string &bounds_variable_name, const std::string &internal_units, std::shared_ptr< units::System > unit_system)
void remove_if_exists(MPI_Comm com, const std::string &file_to_remove, int rank_to_use=0)
Check if a file is present are remove it.
std::string time_dimension(units::System::Ptr unit_system, const File &file, const std::string &variable_name)
std::shared_ptr< Grid > grid(std::shared_ptr< Context > ctx)