preCICE v3.2.0
Loading...
Searching...
No Matches
ExportXML.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Core>
4#include <iosfwd>
5#include <string>
6#include <vector>
7#include "io/Export.hpp"
8#include "logging/Logger.hpp"
10
11namespace precice::mesh {
12class Mesh;
13class Edge;
14class Triangle;
15class Tetrahedron;
16} // namespace precice::mesh
17
18namespace precice::io {
19
21class ExportXML : public Export {
22public:
24 std::string_view participantName,
25 std::string_view location,
26 const mesh::Mesh &mesh,
27 ExportKind kind,
28 int frequency,
29 int rank,
30 int size);
31
32 void doExport(int index, double time) final override;
33
34 void exportSeries() const final override;
35
36 static void writeVertex(
37 const Eigen::VectorXd &position,
38 std::ostream &outFile);
39
40 static void writeLine(
41 const mesh::Edge &edge,
42 std::ostream &outFile);
43
44 static void writeTriangle(
45 const mesh::Triangle &triangle,
46 std::ostream &outFile);
47
48 static void writeTetrahedron(
49 const mesh::Tetrahedron &tetra,
50 std::ostream &outFile);
51
52private:
53 mutable logging::Logger _log{"io::ExportXML"};
54
57
60
61 virtual std::string getVTKFormat() const = 0;
62 virtual std::string getParallelExtension() const = 0;
63 virtual std::string getPieceExtension() const = 0;
64 virtual std::string getPieceAttributes(const mesh::Mesh &mesh) const = 0;
65
71
75 void writeParallelFile(int index, double time);
76
77 virtual void writeParallelCells(std::ostream &out) const = 0;
78
79 void writeParallelData(std::ostream &out) const;
80
84 void writeSubFile(int index, double time);
85
86 void exportPoints(
87 std::ostream &outFile,
88 const mesh::Mesh &mesh) const;
89
90 virtual void exportConnectivity(
91 std::ostream &outFile,
92 const mesh::Mesh &mesh) const = 0;
93
94 void exportData(
95 std::ostream &outFile,
96 const mesh::Mesh &mesh) const;
97
98 void exportGradient(const mesh::PtrData data, const int dataDim, std::ostream &outFile) const;
99
100 std::string parallelPieceFilenameFor(int index, int rank) const;
101 std::string serialPieceFilename(int index) const;
102};
103
104} // namespace precice::io
virtual std::string getPieceExtension() const =0
virtual std::string getPieceAttributes(const mesh::Mesh &mesh) const =0
void writeParallelData(std::ostream &out) const
std::string parallelPieceFilenameFor(int index, int rank) const
Definition ExportXML.cpp:98
static void writeLine(const mesh::Edge &edge, std::ostream &outFile)
virtual std::string getVTKFormat() const =0
void exportData(std::ostream &outFile, const mesh::Mesh &mesh) const
virtual void exportConnectivity(std::ostream &outFile, const mesh::Mesh &mesh) const =0
logging::Logger _log
Definition ExportXML.hpp:53
void exportPoints(std::ostream &outFile, const mesh::Mesh &mesh) const
void writeParallelFile(int index, double time)
Writes the primary file (called only by the primary rank)
std::string serialPieceFilename(int index) const
void exportSeries() const final override
Definition ExportXML.cpp:58
static void writeTriangle(const mesh::Triangle &triangle, std::ostream &outFile)
std::vector< std::string > _scalarDataNames
List of names of all scalar data on mesh.
Definition ExportXML.hpp:56
virtual std::string getParallelExtension() const =0
static void writeTetrahedron(const mesh::Tetrahedron &tetra, std::ostream &outFile)
std::vector< std::string > _vectorDataNames
List of names of all vector data on mesh.
Definition ExportXML.hpp:59
void exportGradient(const mesh::PtrData data, const int dataDim, std::ostream &outFile) const
void writeSubFile(int index, double time)
Writes the sub file for each rank.
void processDataNamesAndDimensions(const mesh::Mesh &mesh)
Stores scalar and vector data names in string vectors Needed for writing primary file and sub files.
Definition ExportXML.cpp:67
static void writeVertex(const Eigen::VectorXd &position, std::ostream &outFile)
void doExport(int index, double time) final override
Export the mesh and writes files.
Definition ExportXML.cpp:33
ExportXML(std::string_view participantName, std::string_view location, const mesh::Mesh &mesh, ExportKind kind, int frequency, int rank, int size)
Definition ExportXML.cpp:23
virtual void writeParallelCells(std::ostream &out) const =0
Export(std::string_view participantName, std::string_view location, const mesh::Mesh &mesh, ExportKind kind, int frequency, int rank, int size)
Definition Export.hpp:23
This class provides a lightweight logger.
Definition Logger.hpp:17
Linear edge of a mesh, defined by two Vertex objects.
Definition Edge.hpp:15
Container and creator for meshes.
Definition Mesh.hpp:38
Tetrahedron of a mesh, defined by 4 vertices.
Triangle of a mesh, defined by three vertices.
Definition Triangle.hpp:24
provides Import and Export of the coupling mesh and data.
provides Mesh, Data and primitives.
std::shared_ptr< Data > PtrData
contains the time interpolation logic.
Definition Sample.hpp:8