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
meshinfil.h File Reference

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>
Include dependency graph for meshinfil.h:
This graph shows which files directly or indirectly include this file:

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
 

Detailed Description

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:

  • Resolution (engine D-I3): ‘per-cell override > tag row > ’*' row > none. 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.