PISM, A Parallel Ice Sheet Model 2.3.0-79cae578d committed by Constantine Khrulev on 2026-03-22
Loading...
Searching...
No Matches
VecBundleWriter.cc
Go to the documentation of this file.
1// See here for useful changes:
2// https://github.com/pism/pism/commit/443050f30743d6c2ef431c53e87dc6eb19a73dfd
3
4#include "pism/icebin/VecBundleWriter.hh"
5
6#include "pism/util/Config.hh"
7#include "pism/util/Context.hh"
8#include "pism/util/Grid.hh"
9#include "pism/util/array/Array.hh"
10#include "pism/util/io/io_helpers.hh"
11#include "pism/util/Time.hh"
12#include "pism/util/io/SynchronousOutputWriter.hh"
13
14using namespace pism;
15
16namespace pism {
17namespace icebin {
18
19VecBundleWriter::VecBundleWriter(std::shared_ptr<pism::Grid> _grid, std::string const &_fname,
20 std::vector<pism::array::Array const *> &_vecs)
21 : m_grid(_grid),
22 fname(_fname),
23 vecs(_vecs),
24 output_writer(new SynchronousOutputWriter(m_grid->com, *m_grid->ctx()->config())) {
25 output_writer->initialize({}, true);
26}
27
30
31 file.define_variable(m_grid->ctx()->time()->metadata());
32
33 for (const auto *vec : vecs) {
34 for (const auto &var : vec->all_metadata()) {
35 file.define_variable(var);
36 }
37 }
38}
39
40/** Dump the value of the Vectors at curent PISM simulation time. */
41void VecBundleWriter::write(double time_s) {
43
44 file.append_time(time_s);
45 for (const auto *vec : vecs) {
46 vec->write(file);
47 }
48}
49
50} // end of namespace icebin
51} // end of namespace pism
void append_time(double time_seconds) const
Definition OutputFile.cc:41
void define_variable(const VariableMetadata &variable) const
Definition OutputFile.cc:31
std::shared_ptr< OutputWriter > output_writer
std::shared_ptr< const pism::Grid > m_grid
VecBundleWriter(std::shared_ptr< pism::Grid > grid, std::string const &_fname, std::vector< pism::array::Array const * > &_vecs)
std::vector< pism::array::Array const * > vecs