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
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 );
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
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
220
221 virtual int getFirstVertexWithinPatch(int index) const override;
222 };
223
224 enum class IndexFileMode {
225 CreateNew,
226 AppendNewData,
227 NoIndexFile
228 };
229
274 PeanoTextPatchFileWriter(int dimension, const std::string& fileName, const std::string& indexFileName, IndexFileMode appendToIndexFile, double timeStamp, int precision = 6);
275
284
288 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description ) override;
289 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description, const std::string& metaData ) override;
290 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description, const std::string& metaData, double* mapping ) override;
291
295 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description ) override;
296 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description, const std::string& metaData ) override;
297 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description, const std::string& metaData, double* mapping ) override;
298
299
300 virtual int plotPatch(
301 const tarch::la::Vector<2,double>& offset,
303 ) override;
304
305 virtual int plotPatch(
306 const tarch::la::Vector<3,double>& offset,
308 ) override;
309
313 virtual bool writeToFile() override;
314
318 virtual bool isOpen() override;
319
329 virtual void clear() override;
330};
331
332#include "PeanoTextPatchFileWriter_VertexDataWriter.cpph"
Log Device.
Definition Log.h:517
Abstract base class for a patch plotter.
Definition PatchWriter.h:26
virtual void plotCell(int index, double value) override
Write data for one cell.
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
virtual void plotVertex(int index, double value) override
Write data for one cell.
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< 3, double > &offset, const tarch::la::Vector< 3, double > &size) override
virtual int plotPatch(const tarch::la::Vector< 2, double > &offset, const tarch::la::Vector< 2, double > &size) override
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.
virtual VertexDataWriter * createVertexDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerVertex, const std::string &description, const std::string &metaData) override
Create vertex data writer.
double getLatestTimeStepInIndexFile() const
Find latest time step in index file.
PeanoTextPatchFileWriter(int dimension, const std::string &fileName, const std::string &indexFileName, IndexFileMode appendToIndexFile, double timeStamp, int precision=6)
Create a new Peano text file output.
void addNewFileToCurrentDataSetInIndexFile(const std::string &filename)
virtual VertexDataWriter * createVertexDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerVertex, const std::string &description, const std::string &metaData, double *mapping) override
Create writer.
virtual CellDataWriter * createCellDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerCell, const std::string &description, const std::string &metaData) override
Create cell data writer.
virtual CellDataWriter * createCellDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerCell, const std::string &description, const std::string &metaData, double *mapping) override
Create writer.
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:159