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
meshcellstats.h
Go to the documentation of this file.
1
11#ifndef OPENSWMMVIS_MESH_MESHCELLSTATS_H
12#define OPENSWMMVIS_MESH_MESHCELLSTATS_H
13
14#include "meshresult.h"
15
16#include <QHash>
17#include <QPair>
18
19namespace mesh {
20
23{
24 double min = 0.0;
25 double max = 0.0;
26 double mean = 0.0;
27 double median = 0.0;
28 int count = 0;
29};
30
40[[nodiscard]] double triangleArea(const MeshResult &mesh, int tri);
41
45[[nodiscard]] QPointF cellCentroid(const MeshResult &mesh, int cell);
46
50{
51 int count = 0;
52 double minAngleDeg = 360.0;
53 double maxAngleDeg = 0.0;
57 double maxNonPlanarity = 0.0;
58 // QUAD_MESHING_REDESIGN_PLAN_2026-09-06.md §5 — shape metrics
59 // (mesh::quadQuality). All 0 when count == 0.
60 double minScaledJacobian = 1.0;
61 double medianRectangularity = 0.0;
62 double maxAspect = 1.0;
63 int nonConvex = 0;
66 int sjHistogram[10] = {0,0,0,0,0,0,0,0,0,0};
67};
68
69[[nodiscard]] QuadStats computeQuadStats(const MeshResult &mesh);
70
77[[nodiscard]] CellAreaStats computeCellAreaStats(const MeshResult &mesh);
78
80using EdgeVertexPair = QPair<int, int>;
81
89[[nodiscard]] QHash<EdgeVertexPair, QVector<int>>
91
118{
119 double min = 0.0;
120 double p10 = 0.0;
121 double p50 = 0.0;
122 double p90 = 0.0;
123 double max = 0.0;
124 double ratio = 0.0;
125
129
137 double ltsWork = 0.0;
138
139 int count = 0;
142};
143
146[[nodiscard]] QVector<double> computeCellLchar(const MeshResult &mesh);
147
150[[nodiscard]] CflStats computeCflStats(const MeshResult &mesh, int ltsTiers = 4);
151
152} // namespace mesh
153
154#endif // OPENSWMMVIS_MESH_MESHCELLSTATS_H
std::vector< int > cell
Definition mesh2dresultsexport.cpp:609
Definition meshcommands.h:302
CellAreaStats computeCellAreaStats(const MeshResult &mesh)
Compute cell-area statistics over all triangles in mesh.
Definition meshcellstats.cpp:144
QPointF cellCentroid(const MeshResult &mesh, int cell)
Area centroid of cell cell (mesh::cellGeom — the vertex mean for a triangle, the area-weighted sub-tr...
Definition meshcellstats.cpp:48
double triangleArea(const MeshResult &mesh, int tri)
Unsigned area of triangle tri (|cross| / 2), in project CRS units². Returns 0 for an out-of-range tri...
Definition meshcellstats.cpp:38
QuadStats computeQuadStats(const MeshResult &mesh)
Definition meshcellstats.cpp:56
QVector< double > computeCellLchar(const MeshResult &mesh)
Per-cell L_char for mesh, indexed like mesh.triangles. Cells with invalid indices get 0.
Definition meshcellstats.cpp:225
QPair< int, int > EdgeVertexPair
Undirected mesh edge, as (min, max) vertex indices.
Definition meshcellstats.h:80
QHash< EdgeVertexPair, QVector< int > > buildEdgeTriangles(const MeshResult &mesh)
Map every undirected edge to the triangles incident on it.
Definition meshcellstats.cpp:210
CflStats computeCflStats(const MeshResult &mesh, int ltsTiers=4)
Summarise computeCellLchar. ltsTiers mirrors the engine's [2D_OPTIONS] LTS_TIERS (1....
Definition meshcellstats.cpp:302
Min / max / mean / median of triangle areas (project CRS units²).
Definition meshcellstats.h:23
double mean
Definition meshcellstats.h:26
double median
Definition meshcellstats.h:27
int count
Triangles measured; 0 = stats invalid.
Definition meshcellstats.h:28
double min
Definition meshcellstats.h:24
double max
Definition meshcellstats.h:25
The 2D marcher's CFL characteristic length, per cell and summarised.
Definition meshcellstats.h:118
int impliedTiers
Definition meshcellstats.h:128
double p50
Definition meshcellstats.h:121
double p10
Definition meshcellstats.h:120
double max
Definition meshcellstats.h:123
double ratio
p50 / min. Reportable, not a gate — see ltsWork.
Definition meshcellstats.h:124
int count
Cells measured; 0 = stats invalid.
Definition meshcellstats.h:139
int isolatedCells
No interior face; used the 2A/xi_max fallback.
Definition meshcellstats.h:141
int interiorFaces
Definition meshcellstats.h:140
double p90
Definition meshcellstats.h:122
double min
The cell that sets dt0.
Definition meshcellstats.h:119
double ltsWork
Definition meshcellstats.h:137
Result of MeshGenerator::generate.
Definition meshresult.h:116
Quadrilateral-cell statistics (workplans/TRI_QUAD_MESHING_PLAN §5): count, interior-angle range and b...
Definition meshcellstats.h:50
int nonConvex
Quads failing the convexity test.
Definition meshcellstats.h:63
double maxAspect
max over quads of opposite-side-mean ratio.
Definition meshcellstats.h:62
double minAngleDeg
Smallest interior corner angle (0 when count == 0).
Definition meshcellstats.h:52
int count
Quads with valid vertex ids.
Definition meshcellstats.h:51
double maxNonPlanarity
Definition meshcellstats.h:57
int irregularVertices
Interior vertices (not on a boundaryEdge) touched only by quads with valence != 4.
Definition meshcellstats.h:64
double medianRectangularity
median of 1 - max|theta-90|/90.
Definition meshcellstats.h:61
int sjHistogram[10]
Definition meshcellstats.h:66
double minScaledJacobian
min over quads of min_i sin(theta_i).
Definition meshcellstats.h:60
double maxAngleDeg
Largest interior corner angle.
Definition meshcellstats.h:53