VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
WbWriterVtkXmlBinary.h
Go to the documentation of this file.
1//=======================================================================================
2// ____ ____ __ ______ __________ __ __ __ __
3// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4// \ \ | | | | | |_) | | | | | | | / \ | |
5// \ \ | | | | | _ / | | | | | | / /\ \ | |
6// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8// \ \ | | ________________________________________________________________
9// \ \ | | | ______________________________________________________________|
10// \ \| | | | __ __ __ __ ______ _______
11// \ | | |_____ | | | | | | | | | _ \ / _____)
12// \ | | _____| | | | | | | | | | | \ \ \_______
13// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15//
16// This file is part of VirtualFluids. VirtualFluids is free software: you can
17// redistribute it and/or modify it under the terms of the GNU General Public
18// License as published by the Free Software Foundation, either version 3 of
19// the License, or (at your option) any later version.
20//
21// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24// for more details.
25//
26// SPDX-License-Identifier: GPL-3.0-or-later
27// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28//
33//=======================================================================================
34#ifndef WBWRITERVTKXMLBINARY_H
35#define WBWRITERVTKXMLBINARY_H
36
37#include <string>
38
40#include <basics/DataTypes.h>
41
42
43
45{
46public:
48 {
49 static WbWriterVtkXmlBinary instance;
50 return &instance;
51 }
52
55
56private:
58 {
59 if constexpr (sizeof(unsigned char) != 1)
60 throw UbException(UB_EXARGS, "machine error char type mismatch");
61 if constexpr (sizeof(int) != 4)
62 throw UbException(UB_EXARGS, "machine error int type mismatch");
63 if constexpr (sizeof(float) != 4)
64 throw UbException(UB_EXARGS, "machine error float type mismatch");
65 }
66
67 static const std::string pvdEndTag;
68
69public:
70 std::string getFileExtension() override { return ".bin.vtu"; }
71
72 // write a metafile
73 std::string writeCollection(const std::string &filename, const std::vector<std::string> &filenames,
74 const double &timeStep, const bool &separateGroups) const;
75 std::string writeCollectionForTimeSeries(const std::string &filename,
76 const std::map<uint, std::vector<std::string>> &filesNamesForTimeSteps, bool separateGroups) const;
77 std::string addFilesToCollection(const std::string &filename, const std::vector<std::string> &filenames,
78 const double &timeStep, const bool &separateGroups) const;
79 std::string writeParallelFile(const std::string &filename, std::vector<std::string> &pieceSources,
80 std::vector<std::string> &pointDataNames, std::vector<std::string> &cellDataNames) const;
81
83 // nodes
84 std::string writeNodes(const std::string &filename, std::vector<UbTupleFloat3> &nodes) override;
85 std::string writeNodesWithNodeData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
86 std::vector<std::string> &datanames,
87 std::vector<std::vector<double>> &nodedata) override;
88
90 // lines
91 // 0 ---- 1
92 // nodenumbering must start with 0!
93 std::string writeLines(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
94 std::vector<UbTupleInt2> &lines) override;
95 std::string writePolyLines(const std::string &filename, real* coordinatesX,
96 real* coordinatesY, real*coordinatesZ, uint numberOfCoordinates) override;
97 std::string writePolyLines(const std::string & filename, std::vector<real>& coordinatesX,
98 std::vector<real>& coordinatesY, std::vector<real>& coordinatesZ) override;
99 // std::string writeLinesWithNodeData(const std::string& filename,std::vector<UbTupleFloat3 >& nodes,
100 // std::vector<UbTupleInt2 >& lines, std::vector< std::string >& datanames, std::vector< std::vector< double > >&
101 // nodedata);
102 // FIXME: hides function in base class
103
104 std::string writeLinesWithLineData(const std::string &filename, std::vector<UbTupleFloat3> &nodes, std::vector<UbTupleInt2> &lines,
105 std::vector<std::string> &datanames, std::vector<std::vector<float>> &celldata) override;
106
108 // triangles
109 // 2
110 //
111 // 0---1
112 // nodenumbering must start with 0!
113 std::string writeTriangles(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
114 std::vector<UbTupleInt3> &triangles) override;
115 std::string writeTrianglesWithNodeData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
116 std::vector<UbTupleInt3> &cells, std::vector<std::string> &datanames,
117 std::vector<std::vector<double>> &nodedata) override;
118
120 // 2D
121 // cell numbering:
122 // 3---2
123 // | |
124 // 0---1
125 // nodenumbering must start with 0!
126
127 std::string writeQuads(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
128 std::vector<UbTupleInt4> &cells) override;
129 std::string writeQuadsWithNodeData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
130 std::vector<UbTupleInt4> &cells, std::vector<std::string> &datanames,
131 std::vector<std::vector<double>> &nodedata) override;
132 std::string writeQuadsWithCellData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
133 std::vector<UbTupleInt4> &cells, std::vector<std::string> &datanames,
134 std::vector<std::vector<double>> &celldata) override;
135 std::string writeQuadsWithNodeAndCellData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
136 std::vector<UbTupleInt4> &cells, std::vector<std::string> &nodedatanames,
137 std::vector<std::vector<double>> &nodedata,
138 std::vector<std::string> &celldatanames,
139 std::vector<std::vector<double>> &celldata) override;
140
142 // octs
143 // 7 ---- 6
144 // /| /|
145 // 4 +--- 5 |
146 // | | | |
147 // | 3 ---+ 2
148 // |/ |/
149 // 0 ---- 1
150 std::string writeOcts(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
151 std::vector<UbTupleInt8> &cells) override;
152 std::string writeOctsWithCellData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
153 std::vector<UbTupleInt8> &cells, std::vector<std::string> &datanames,
154 std::vector<std::vector<double>> &celldata) override;
155 std::string writeOctsWithNodeData(const std::string &filename, std::vector<UbTupleFloat3> &nodes,
156 std::vector<UbTupleUInt8> &cells, std::vector<std::string> &datanames,
157 std::vector<std::vector<double>> &nodedata) override;
158
159private:
160};
161
162#endif // WBWRITERVTKXMLBINARY_H
163
static WbWriterVtkXmlBinary * getInstance()
const WbWriterVtkXmlBinary & operator=(const WbWriterVtkXmlBinary &)=delete
std::string getFileExtension() override
WbWriterVtkXmlBinary(const WbWriterVtkXmlBinary &)=delete
std::shared_ptr< T > SPtr
float real
Definition DataTypes.h:42
unsigned int uint
Definition DataTypes.h:47
#define UB_EXARGS
Definition UbException.h:73
std::string writeOcts(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt8 > &cells) override
std::string writeOctsWithNodeData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleUInt8 > &cells, std::vector< std::string > &datanames, std::vector< std::vector< double > > &nodedata) override
std::string addFilesToCollection(const std::string &filename, const std::vector< std::string > &filenames, const double &timeStep, const bool &separateGroups) const
std::string writeTrianglesWithNodeData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt3 > &cells, std::vector< std::string > &datanames, std::vector< std::vector< double > > &nodedata) override
std::string writeNodes(const std::string &filename, std::vector< UbTupleFloat3 > &nodes) override
std::string writeParallelFile(const std::string &filename, std::vector< std::string > &pieceSources, std::vector< std::string > &pointDataNames, std::vector< std::string > &cellDataNames) const
std::string writeTriangles(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt3 > &triangles) override
std::string writeNodesWithNodeData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< std::string > &datanames, std::vector< std::vector< double > > &nodedata) override
std::string writeQuadsWithNodeData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt4 > &cells, std::vector< std::string > &datanames, std::vector< std::vector< double > > &nodedata) override
std::string writeOctsWithCellData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt8 > &cells, std::vector< std::string > &datanames, std::vector< std::vector< double > > &celldata) override
std::string writeQuadsWithNodeAndCellData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt4 > &cells, std::vector< std::string > &nodedatanames, std::vector< std::vector< double > > &nodedata, std::vector< std::string > &celldatanames, std::vector< std::vector< double > > &celldata) override
std::string writeLines(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt2 > &lines) override
std::string writeLinesWithLineData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt2 > &lines, std::vector< std::string > &datanames, std::vector< std::vector< float > > &celldata) override
std::string writeQuads(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt4 > &cells) override
std::string writePolyLines(const std::string &filename, real *coordinatesX, real *coordinatesY, real *coordinatesZ, uint numberOfCoordinates) override
std::string writeQuadsWithCellData(const std::string &filename, std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt4 > &cells, std::vector< std::string > &datanames, std::vector< std::vector< double > > &celldata) override
std::string writeCollection(const std::string &filename, const std::vector< std::string > &filenames, const double &timeStep, const bool &separateGroups) const
std::string writeCollectionForTimeSeries(const std::string &filename, const std::map< uint, std::vector< std::string > > &filesNamesForTimeSteps, bool separateGroups) const