GridFormat 0.6.0
I/O-Library for grid-like data structures
Loading...
Searching...
No Matches
xml_time_series_writer.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2022-2023 Dennis Gläser <dennis.glaeser@iws.uni-stuttgart.de>
2// SPDX-License-Identifier: MIT
8#ifndef GRIDFORMAT_VTK_XML_TIME_SERIES_WRITER_HPP_
9#define GRIDFORMAT_VTK_XML_TIME_SERIES_WRITER_HPP_
10
11#include <iomanip>
12#include <sstream>
13#include <utility>
14#include <string>
15#include <type_traits>
16
18
19namespace GridFormat {
20
26template<typename VTKWriter>
27class VTKXMLTimeSeriesWriter : public TimeSeriesGridWriter<typename VTKWriter::Grid> {
28 using ParentType = TimeSeriesGridWriter<typename VTKWriter::Grid>;
29
30 public:
31 explicit VTKXMLTimeSeriesWriter(VTKWriter&& writer, std::string base_filename)
32 : ParentType(writer.grid(), writer.writer_options())
33 , _vtk_writer{std::move(writer)}
34 , _base_filename{std::move(base_filename)}
35 {}
36
37 private:
38 std::string _write(double _time) override {
39 this->copy_fields(_vtk_writer);
40 _vtk_writer.set_meta_data("TimeValue", _time);
41 const auto filename = _vtk_writer.write(_get_filename(this->_step_count));
42 _vtk_writer.clear();
43 return filename;
44 }
45
46 std::string _get_filename(const std::integral auto index) const {
47 return _base_filename + "-" + _get_file_number_string(index);
48 }
49
50 std::string _get_file_number_string(const std::integral auto index) const {
51 std::ostringstream file_number;
52 file_number << std::setw(5) << std::setfill('0') << index;
53 return file_number.str();
54 }
55
56 VTKWriter _vtk_writer;
57 std::string _base_filename;
58 std::string _pvd_filename;
59};
60
61template<typename VTKWriter>
63
64} // namespace GridFormat
65
66#endif // GRIDFORMAT_VTK_XML_TIME_SERIES_WRITER_HPP_
Writer for time series of a VTK-XML file format. Populates the "TimeValue" metadata field supported b...
Definition xml_time_series_writer.hpp:27
Base classes for grid data writers.