![]() |
SWMMVis
6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
|
#include <QString>#include <array>#include <cstdint>#include <map>#include <string>#include <vector>Go to the source code of this file.
Classes | |
| struct | openswmmvis::io::CoordinateReference |
| How a 2D result source's XY coordinates relate to the model's CRS. More... | |
| class | openswmmvis::io::Mesh2DH5Reader |
Namespaces | |
| namespace | openswmmvis |
| namespace | openswmmvis::io |
Slice CF.MVP — reads the CF-1.11 / UGRID-1.0 HDF5 file produced by the engine's Default2DOutputPlugin (openswmm.engine, src/engine/2d/output/). The reader is used by SWMM2DResultsLayer's post-run HDF5Mesh2DSource to scrub a time slider back through inundation history.
Layout consumed (per Default2DOutputPlugin.hpp §37-65): /Mesh2_node_x [nNode] vertex X coordinates /Mesh2_node_y [nNode] vertex Y coordinates /Mesh2_node_z [nNode] vertex elevations /Mesh2_face_nodes [nFace, 3|4] cell connectivity (int); width 4 with attribute _FillValue (−1) and dataset /Mesh2_face_nv [nFace] (int8, 3|4) once the mesh holds a quadrilateral /time [nTime] seconds since simulation start /Mesh2_face_depth [nTime, nFace] overland flow depth (m), per CELL /Mesh2_node_head [nTime, nNode] reconstructed vertex head (m; engine pseudo-Laplacian, VertexReconstruction — SOLVER field, no longer rendered) /Mesh2_node_depth [nTime, nNode] SIGNED vertex depth η_v − z_v (m; engine wet-masked render reconstruction) /Mesh2_edge_flux [nTime, nFace, 3|4] signed normal flux per edge (m^2 s^-1) /Mesh2_edge_length [nFace, 3|4] edge length (m, CF.2 / new in engine 6.0+) /Mesh2_edge_nx [nFace, 3|4] edge outward unit normal x (CF.2) /Mesh2_edge_ny [nFace, 3|4] edge outward unit normal y (CF.2)
Older files written before the engine's CF.2 step (which added the static edge-geometry datasets) are tolerated: readEdgeGeometry transparently reconstructs length / outward normal from /Mesh2_node_x / /Mesh2_node_y
/Mesh2_face_nodes when the cached datasets are absent. The local-edge convention matches the engine's MeshBuilder: edge e of an nv-gon runs between vertices v[(e+1)nv] and v[(e+2)nv] (for a triangle: "edge
\c e is opposite vertex \c e").Mixed triangle/quad contract (workplans/TRI_QUAD_MESHING_PLAN_2026-09-06.md phase G0; engine plans/2D_TRI_QUAD_MESH_PLAN_2026-09-06.md §2.5):
_FillValue / negative entries and /Mesh2_face_nv are honoured as padding).[cell * 4 + localEdge], the same layout as mesh::edgeSlot — regardless of the file's own width (edgeStride, 3 or 4): width-3 files are repacked on read, slot 3 of a triangle is 0. Consumers use ONE layout.The reader is intentionally Qt-light (QString only for the path); the data interfaces use std::vector + std::array so the same wrapper can be exercised from a non-Qt unit test.