![]() |
SWMMVis
6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
|
Per-cell 2D infiltration: value types, tag/override resolution and method↔parameter masks. More...
#include <QByteArray>#include <QHash>#include <QString>#include <QStringList>#include <QVector>#include <QtGlobal>#include <QtNumeric>Go to the source code of this file.
Classes | |
| struct | mesh::InfilRow |
| One infiltration specification: method + positional parameters + destination. More... | |
| struct | mesh::InfilDefaultRow |
One [2D_INFILTRATION_DEFAULTS] row. tag == "*" is the mesh-wide fallback and may appear anywhere in the section. More... | |
| struct | mesh::InfilOptions |
[2D_INFILTRATION_OPTIONS]. More... | |
| struct | mesh::ResolvedInfil |
| Result of resolving one triangle's infiltration. More... | |
| struct | mesh::InfilLookupEntry |
| One row of a classified lookup: a key (or key pair, for the Curve-Number landuse×HSG case) mapping to a full InfilRow. More... | |
| struct | mesh::InfilLookupTable |
| An editable, reusable classified lookup table. Saved/loaded as CSV so an agency's standard table travels between projects. More... | |
Namespaces | |
| namespace | mesh |
Enumerations | |
| enum class | mesh::InfilMethod : int { mesh::None = -1 , mesh::Horton = 0 , mesh::ModHorton = 1 , mesh::GreenAmpt = 2 , mesh::ModGreenAmpt = 3 , mesh::CurveNumber = 4 , mesh::Constant = 5 } |
| enum class | mesh::InfilDest : int { mesh::Lost = 0 , mesh::SubcatchAquifer = 1 , mesh::Aquifer2D = 2 } |
| enum class | mesh::InfilProvenance : int { mesh::None = 0 , mesh::Star = 1 , mesh::Tag = 2 , mesh::Override = 3 } |
Functions | |
| ResolvedInfil | mesh::resolveInfil (const MeshResult &mesh, int tri) |
| Resolve one triangle's infiltration per engine D-I3 precedence: ‘override > tag row > ’*' row > none`. | |
| InfilRow | mesh::starDefault (const MeshResult &mesh) |
Convenience: the '*' row from mesh, or a None row when absent. | |
| int | mesh::indexOfDefault (const MeshResult &mesh, const QString &tag) |
Index of tag in MeshResult::infilDefaults, or -1. | |
| bool | mesh::infilUsesParam (InfilMethod method, int slot) |
True when method uses positional slot slot. | |
| int | mesh::infilParamCount (InfilMethod method) |
Number of meaningful positional parameters for method. | |
| QString | mesh::infilParamLabel (InfilMethod method, int slot) |
Display label for positional slot slot under method, e.g. ("Horton", 0) → "Max Rate (f0)". Empty when unused. | |
| QByteArray | mesh::infilParamKey (InfilMethod method, int slot) |
Registry key for positional slot slot under method, e.g. "infil.f0". Empty when unused. | |
| int | mesh::infilSlotForKey (InfilMethod method, const QByteArray &key) |
Inverse of infilParamKey(): maps a registry key to the positional slot it occupies under method, or -1 when method does not use it. | |
| const QVector< QByteArray > & | mesh::infilParamKeys () |
| Every named parameter key, in registration order. The attribute table and the assign dialog iterate this. | |
| QString | mesh::infilMethodToken (InfilMethod m) |
| "HORTON", "CURVE_NUMBER", "NONE", … | |
| InfilMethod | mesh::infilMethodFromToken (const QString &token, bool *ok=nullptr) |
| QString | mesh::infilMethodLabel (InfilMethod m) |
| Translated UI label. | |
| QStringList | mesh::infilMethodLabels () |
| For EnumComboDelegate, in enum order. | |
| QString | mesh::infilDestToken (InfilDest d) |
| "LOST", … | |
| InfilDest | mesh::infilDestFromToken (const QString &token, bool *ok=nullptr) |
| QString | mesh::infilDestLabel (InfilDest d) |
| QStringList | mesh::infilDestLabels () |
| QString | mesh::infilDestHint (InfilDest d) |
A one-sentence tooltip for destination d: where the water goes and what the choice needs. | |
| bool | mesh::saveLookupTableCsv (const InfilLookupTable &table, const QString &path, QString *err) |
CSV round-trip. Column order: key1[,key2],method,p0,p1,p2,p3,p4,dest, # comments, header row optional. | |
| bool | mesh::loadLookupTableCsv (InfilLookupTable *table, const QString &path, QString *err) |
Variables | |
| constexpr int | mesh::kInfilMaxParams = 5 |
Per-cell 2D infiltration: value types, tag/override resolution and method↔parameter masks.
Implements workplans/INTEGRATED2D_GW_GUI_PLAN_2026-08-15.md §3.2a (phase GG0). Mirrors the engine contract in openswmm.engine/src/engine/2d/infil/Infil2D.hpp — the two MUST agree on method tokens, positional parameter order, destination tokens and resolution precedence, because they read and write the same [2D_INFILTRATION*] sections.
Key invariants:
. The GUI never flattens tag inheritance into per-cell rows.**Units (user decision 2026-08-20):** parameters are in PROJECT units — the same numbers a user types into[INFILTRATION]. The GUI stores and displays them verbatim and performs no conversion.**Destination (engine D-I4, as amended by U3 and G1 on 2026-09-07):** all three destinations are routed.Lostleaves the model, SubcatchAquiferrecharges the containing subcatchment's legacy aquifer, andAquifer2Drecharges the integrated two-zone kernel. Aquifer2Dis accepted exactly when the model carries a[2D_AQUIFER]` section — a property of the MODEL, not of the release, so the UI offers it with a hint and lets the engine judge it at resolve.