Peano
Loading...
Searching...
No Matches
PeanoBinaryPatchFileWriter.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 PeanoBinaryPatchFileWriter;
22 }
23 }
24 }
25}
26
95 protected:
97 static const std::string HEADER;
98
99 std::string _fileName;
100 std::string _indexFile;
101
103
105
107
108 std::stringstream _snapshotFileOut;
110
111 void writeMetaData(const std::string& metaData);
112 void writeMapping(int totalEntries, double* values);
113
116 void addNewDatasetToIndexFile(double timestamp);
117 void addNewFileToCurrentDataSetInIndexFile( const std::string& filename );
118
132
133 public:
135 protected:
137
138 const std::string _identifier;
142 std::vector<double> _out;
143
145 public:
147 const std::string& identifier,
148 int unknownsPerAxis,
149 int numberOfUnknowns, const std::string& description,
150 const std::string& metaData,
151 double* mapping,
153 );
155
159 void setPrecision(int precision);
160
161 int getCellsPerPatch() const;
162
171 virtual void plotCell( int index, double value ) override;
172 virtual void plotCell( int index, double* values ) override;
173
174 virtual void close() override;
175
176 virtual void assignRemainingCellsDefaultValues() override;
177
178 virtual int getFirstCellWithinPatch(int index) const override;
179 };
180
182 protected:
184
185 const std::string _identifier;
188
193 std::vector<double> _out;
194
196
197 public:
199 const std::string& identifier,
200 int unknownsPerAxis,
201 int numberOfUnknowns, const std::string& description,
202 const std::string& metaData,
203 double* mapping,
205 );
206
208
212 void setPrecision(int precision);
213
215
224 virtual void plotVertex( int index, double value ) override;
225 virtual void plotVertex( int index, double* values ) override;
226
232 template <typename T>
233 void plotVertex( int index, T* values );
234
235 virtual void close() override;
236
241
242 virtual int getFirstVertexWithinPatch(int index) const override;
243 };
244
245 enum class IndexFileMode {
246 CreateNew,
247 AppendNewData,
248 NoIndexFile
249 };
250
291 PeanoBinaryPatchFileWriter(int dimension, const std::string& fileName, const std::string& indexFileName, IndexFileMode appendToIndexFile, double timeStamp, int precision = 6);
292
301
305 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description ) override;
306 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description, const std::string& metaData ) override;
307 virtual CellDataWriter* createCellDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerCell, const std::string& description, const std::string& metaData, double* mapping ) override;
308
312 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description ) override;
313 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description, const std::string& metaData ) override;
314 virtual VertexDataWriter* createVertexDataWriter( const std::string& identifier, int unknownsPerAxis, int recordsPerVertex, const std::string& description, const std::string& metaData, double* mapping ) override;
315
316
317 virtual int plotPatch(
318 const tarch::la::Vector<2,double>& offset,
320 ) override;
321
322 virtual int plotPatch(
323 const tarch::la::Vector<3,double>& offset,
325 ) override;
326
330 virtual bool writeToFile() override;
331
335 virtual bool isOpen() override;
336
346 virtual void clear() override;
347};
348
349
350#include "PeanoBinaryPatchFileWriter_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.
void setPrecision(int precision)
Has no effect, as the quantities are written as raw doubles.
CellDataWriter(const std::string &identifier, int unknownsPerAxis, int numberOfUnknowns, const std::string &description, const std::string &metaData, double *mapping, tarch::plotter::griddata::blockstructured::PeanoBinaryPatchFileWriter &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::PeanoBinaryPatchFileWriter & _writer
virtual void plotVertex(int index, double value) override
Write data for one cell.
tarch::plotter::griddata::blockstructured::PeanoBinaryPatchFileWriter & _writer
void plotVertex(int index, T *values)
Plot a vertex whose values have another type than double.
VertexDataWriter(const std::string &identifier, int unknownsPerAxis, int numberOfUnknowns, const std::string &description, const std::string &metaData, double *mapping, tarch::plotter::griddata::blockstructured::PeanoBinaryPatchFileWriter &writer)
void setPrecision(int precision)
Has no effect, as the quantities are written as raw doubles.
Plot Peano's mesh data in Peano's patch file format with binary quantities.
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.
virtual CellDataWriter * createCellDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerCell, 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) override
Caller has to destroy this instance manually.
virtual int plotPatch(const tarch::la::Vector< 3, double > &offset, const tarch::la::Vector< 3, double > &size) override
virtual VertexDataWriter * createVertexDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerVertex, const std::string &description, const std::string &metaData, double *mapping) override
Create writer.
PeanoBinaryPatchFileWriter(int dimension, const std::string &fileName, const std::string &indexFileName, IndexFileMode appendToIndexFile, double timeStamp, int precision=6)
Create a new Peano text file output.
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 int plotPatch(const tarch::la::Vector< 2, double > &offset, const tarch::la::Vector< 2, double > &size) override
virtual VertexDataWriter * createVertexDataWriter(const std::string &identifier, int unknownsPerAxis, int recordsPerVertex, const std::string &description, const std::string &metaData) override
Create vertex data writer.
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