Peano
Loading...
Searching...
No Matches
PeanoTextPatchFileWriter.h
Go to the documentation of this file.
1// This file is part of the Peano project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
5#include "tarch/logging/Log.h"
6#include "PatchWriter.h"
7
8#include <fstream>
9#include <vector>
10
11#include <iostream>
12#include <sstream>
13#include <string>
14#include <cctype>
15#include <filesystem>
16
17namespace tarch {
18 namespace plotter {
19 namespace griddata {
20 namespace blockstructured {
21 class PeanoTextPatchFileWriter;
22
23 int restartPreprocess(const std::string fileName, double restarTime);
24 }
25 }
26 }
27}
28
74 protected:
76 static const std::string HEADER;
77
78 std::string _fileName;
79 std::string _indexFile;
80
82
84
86
87 std::stringstream _snapshotFileOut;
89
90 void writeMetaData(const std::string& metaData);
91 void writeMapping(int totalEntries, double* values);
92
95 void addNewDatasetToIndexFile(double timestamp);
96 void addNewFileToCurrentDataSetInIndexFile( const std::string& filename );
97
110 double getLatestTimeStepInIndexFile() const;
111
112 public:
114 protected:
116
117 const std::string _identifier;
121 std::stringstream _out;
122
124 public:
126 const std::string& identifier,
127 int unknownsPerAxis,
128 int numberOfUnknowns, const std::string& description,
129 const std::string& metaData,
130 double* mapping,
132 );
133 virtual ~CellDataWriter();
134
138 void setPrecision(int precision);
139
140 int getCellsPerPatch() const;
141
150 virtual void plotCell( int index, double value ) override;
151 virtual void plotCell( int index, double* values ) override;
152
153 virtual void close() override;
154
155 virtual void assignRemainingCellsDefaultValues() override;
156
157 virtual int getFirstCellWithinPatch(int index) const override;
158 };
159
161 protected:
163
164 const std::string _identifier;
167
172 std::stringstream _out;
173
175
176 public:
178 const std::string& identifier,
179 int unknownsPerAxis,
180 int numberOfUnknowns, const std::string& description,
181 const std::string& metaData,
182 double* mapping,
184 );
185
187
191 void setPrecision(int precision);
192
193 int getVerticesPerPatch() const;
194
203 virtual void plotVertex( int index, double value ) override;
204 virtual void plotVertex( int index, double* values ) override;
205
206 /*
207 * Somewhat hacky, added to overload the plotVertex function in order to allow plotting of patches with
208 * different variable types. Should likely have been handled more cleanly but since template functions cannot
209 * be virtual this needed to be handled on the lowest level.
210 */
211 template <typename T>
212 void plotVertex( int index, T* values );
213
214 virtual void close() override;
215
219 virtual void assignRemainingVerticesDefaultValues() override;
220
221 virtual int getFirstVertexWithinPatch(int index) const override;
222 };
223
224 enum class IndexFileMode {
225 CreateNew,
228 };
229
245 PeanoTextPatchFileWriter(int dimension, const std::string& fileName, const std::string& indexFileName, IndexFileMode appendToIndexFile, double timeStamp);
246
255
259 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description ) override;
260 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description, const std::string& metaData ) override;
261 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description, const std::string& metaData, double* mapping ) override;
262
266 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description ) override;
267 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description, const std::string& metaData ) override;
268 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description, const std::string& metaData, double* mapping ) override;
269
270 virtual int plotPatch(
271 const tarch::la::Vector<2,double>& offset,
273 ) override;
274
275 virtual int plotPatch(
276 const tarch::la::Vector<3,double>& offset,
278 ) override;
279
283 virtual bool writeToFile() override;
284
288 virtual bool isOpen() override;
289
299 virtual void clear() override;
300};
301
Log Device.
Definition Log.h:516
Abstract base class for a patch plotter.
Definition PatchWriter.h:26
tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter & _writer
CellDataWriter(const std::string &identifier, int unknownsPerAxis, int numberOfUnknowns, const std::string &description, const std::string &metaData, double *mapping, tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter &writer)
virtual void close() override
If you close your writer, each cell/vertex has to be assigned a value, i.e.
tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter & _writer
VertexDataWriter(const std::string &identifier, int unknownsPerAxis, int numberOfUnknowns, const std::string &description, const std::string &metaData, double *mapping, tarch::plotter::griddata::blockstructured::PeanoTextPatchFileWriter &writer)
virtual int plotPatch(const tarch::la::Vector< 2, double > &offset, const tarch::la::Vector< 2, double > &size) override
PeanoTextPatchFileWriter(int dimension, const std::string &fileName, const std::string &indexFileName, IndexFileMode appendToIndexFile, double timeStamp)
Create a new Peano text file output.
virtual CellDataWriter * createCellDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerCell, const std::string &description) override
Caller has to destroy this instance manually.
virtual VertexDataWriter * createVertexDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerVertex, const std::string &description) override
Caller has to destroy this instance manually.
double getLatestTimeStepInIndexFile() const
Find latest time step in index file.
int restartPreprocess(const std::string fileName, double restarTime)
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.
Definition accelerator.h:19
Simple vector class.
Definition Vector.h:150