SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
inpmeshwriter.h
Go to the documentation of this file.
1
14#ifndef OPENSWMMVIS_MESH_INPMESHWRITER_H
15#define OPENSWMMVIS_MESH_INPMESHWRITER_H
16
17#include "meshresult.h"
18#include "meshedgebc.h"
19
20#include <QHash>
21#include <QString>
22#include <QVector>
23
24namespace mesh {
25
34{
36 QHash<int, QString> vertexToNode;
38 QHash<int, QString> triangleToNode;
41 QHash<int, double> triangleMannings;
42};
43
51enum class MeshOutputMode {
52 External,
53 Inline
54};
55
57{
58public:
74 struct UnitInfo
75 {
77 QString sourceCrsTag;
78
79 // User-declared (out-of-line) default ctor: makes UnitInfo a
80 // non-aggregate so the `const UnitInfo & = {}` default arguments
81 // below invoke this constructor instead of aggregate-initialising
82 // with the in-class member initializer — which clang rejects as
83 // "needed within definition of enclosing class outside of member
84 // functions" when the type is nested in InpMeshWriter.
86 };
87
114 [[nodiscard]] static QString buildSectionText(const MeshResult &mesh,
115 const CouplingMap &coupling,
116 double defaultMannings = 0.035,
117 const UnitInfo &units = {});
118
136 [[nodiscard]] static QString buildBCSectionText(const QVector<MeshEdgeBC> &bcs);
137
158 [[nodiscard]] static QString buildConveyanceSectionText(
159 const MeshResult &mesh, const QVector<MeshEdgeBC> &bcs);
160
176 [[nodiscard]] static bool writeExternal(const QString &inpPath,
177 const QString &meshFilePath,
178 const MeshResult &mesh,
179 const CouplingMap &coupling,
180 double defaultMannings = 0.035,
181 QString *errorOut = nullptr,
182 const UnitInfo &units = {});
183
187 [[nodiscard]] static bool writeExternal(const QString &inpPath,
188 const QString &meshFilePath,
189 const MeshResult &mesh,
190 const CouplingMap &coupling,
191 const QVector<MeshEdgeBC> &bcs,
192 double defaultMannings,
193 QString *errorOut = nullptr,
194 const UnitInfo &units = {});
195
201 [[nodiscard]] static bool writeInline(const QString &inpPath,
202 const MeshResult &mesh,
203 const CouplingMap &coupling,
204 double defaultMannings = 0.035,
205 QString *errorOut = nullptr,
206 const UnitInfo &units = {});
207
210 [[nodiscard]] static bool writeInline(const QString &inpPath,
211 const MeshResult &mesh,
212 const CouplingMap &coupling,
213 const QVector<MeshEdgeBC> &bcs,
214 double defaultMannings,
215 QString *errorOut = nullptr,
216 const UnitInfo &units = {});
217
231 [[nodiscard]] static bool writeMeshFileRef(const QString &inpPath,
232 const QString &meshFilePath,
233 QString *errorOut = nullptr);
234
254 [[nodiscard]] static bool patchBCSections(const QString &filePath,
255 const MeshResult &mesh,
256 const QVector<MeshEdgeBC> &bcs,
257 QString *errorOut = nullptr);
258
294 [[nodiscard]] static bool patchAttributeSections(const QString &filePath,
295 const MeshResult &mesh,
296 QString *errorOut = nullptr,
297 double defaultMannings = 0.035);
298
311 [[nodiscard]] static bool clearMeshFileRef(const QString &inpPath,
312 QString *errorOut = nullptr);
313
315 [[nodiscard]] static bool write(MeshOutputMode mode,
316 const QString &inpPath,
317 const QString &meshFilePath,
318 const MeshResult &mesh,
319 const CouplingMap &coupling,
320 double defaultMannings = 0.035,
321 QString *errorOut = nullptr,
322 const UnitInfo &units = {});
323};
324
325} // namespace mesh
326
327#endif // OPENSWMMVIS_MESH_INPMESHWRITER_H
Definition inpmeshwriter.h:57
static QString buildBCSectionText(const QVector< MeshEdgeBC > &bcs)
Slice §V.VD.1 — render the [2D_BOUNDARY_CONDITIONS] section for the per-edge BC vector....
Definition inpmeshwriter.cpp:819
static bool patchAttributeSections(const QString &filePath, const MeshResult &mesh, QString *errorOut=nullptr, double defaultMannings=0.035)
Replace the [2D_VERTICES], [2D_TRIANGLES], [2D_QUADS], [2D_VERTEX_NODE_MAP], [2D_TRIANGLE_NODE_MAP] a...
Definition inpmeshwriter.cpp:1017
static bool patchBCSections(const QString &filePath, const MeshResult &mesh, const QVector< MeshEdgeBC > &bcs, QString *errorOut=nullptr)
Replace the [2D_BOUNDARY_CONDITIONS] and [2D_EDGE_CONVEYANCE] sections of filePath (a ....
Definition inpmeshwriter.cpp:996
static bool writeMeshFileRef(const QString &inpPath, const QString &meshFilePath, QString *errorOut=nullptr)
Retarget the .inp's [2D_MESH_FILE] reference at an already-existing .2dm without writing any mesh geo...
Definition inpmeshwriter.cpp:724
static bool write(MeshOutputMode mode, const QString &inpPath, const QString &meshFilePath, const MeshResult &mesh, const CouplingMap &coupling, double defaultMannings=0.035, QString *errorOut=nullptr, const UnitInfo &units={})
Convenience dispatch on MeshOutputMode.
Definition inpmeshwriter.cpp:794
static bool writeInline(const QString &inpPath, const MeshResult &mesh, const CouplingMap &coupling, double defaultMannings=0.035, QString *errorOut=nullptr, const UnitInfo &units={})
Replace (or append) all four 2D sections in the .inp at inpPath. Existing 2D sections are stripped fi...
Definition inpmeshwriter.cpp:636
static QString buildSectionText(const MeshResult &mesh, const CouplingMap &coupling, double defaultMannings=0.035, const UnitInfo &units={})
Render the 2D mesh sections as a single text block.
Definition inpmeshwriter.cpp:541
static bool writeExternal(const QString &inpPath, const QString &meshFilePath, const MeshResult &mesh, const CouplingMap &coupling, double defaultMannings=0.035, QString *errorOut=nullptr, const UnitInfo &units={})
Default mode: write the mesh into a sibling .2dm file and patch the .inp with a [2D_MESH_FILE] refere...
Definition inpmeshwriter.cpp:664
static QString buildConveyanceSectionText(const MeshResult &mesh, const QVector< MeshEdgeBC > &bcs)
Engine §11A — render the [2D_EDGE_CONVEYANCE] section.
Definition inpmeshwriter.cpp:886
static bool clearMeshFileRef(const QString &inpPath, QString *errorOut=nullptr)
Strip any [2D_MESH_FILE] reference from the .inp so the engine falls back to the inline [2D_*] mesh s...
Definition inpmeshwriter.cpp:759
QuadRegionMode mode
Resolved mode.
Definition meshgenerator.cpp:154
Definition meshcommands.h:302
MeshOutputMode
Output strategy for the four 2D mesh sections.
Definition inpmeshwriter.h:51
@ Inline
Inline the four sections directly in the .inp.
@ External
Write .2dm next to the .inp; reference via [2D_MESH_FILE].
1D↔2D coupling map produced by the meshing dialog.
Definition inpmeshwriter.h:34
QHash< int, QString > triangleToNode
Definition inpmeshwriter.h:38
QHash< int, QString > vertexToNode
Definition inpmeshwriter.h:36
QHash< int, double > triangleMannings
Definition inpmeshwriter.h:41
Unit & provenance metadata written as ;; header comments.
Definition inpmeshwriter.h:75
QString sourceCrsTag
Goes into ;; SOURCE_CRS: (e.g. "EPSG:2249").
Definition inpmeshwriter.h:77
QString linearUnitName
Goes into ;; UNITS: (e.g. "metre", "US survey foot", "SI (m)").
Definition inpmeshwriter.h:76
Result of MeshGenerator::generate.
Definition meshresult.h:116