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
18 — Simulation Options

What you'll do

Set everything the engine needs to run the active model: the process models it uses, the simulation window and time steps, the routing solver and its tolerances, the transport engine, threading, the project CRS, which 2D mesh is active, the 2D marcher, and the secondary files, report contents and plugins. Almost every control on this dialog maps to one [OPTIONS] key (or one [2D_OPTIONS], [REPORT], [FILES], [EVENTS] or [PLUGINS] entry) in the .inp file.

The Simulation Options dialog with the category sidebar and the Models / Processes page

Where to find it

Model → Simulation Options…, or Simulation Options on the ribbon Model tab. No default shortcut. The dialog needs an open project.

The layout is a category list down the left and one page per category on the right. Five of those pages carry inner tabs that group their controls by what they apply to, so no page is a single long scrolling column:

Page Tabs
Models / Processes Domains & Processes / Modules / Flags
Dates & Times Simulation Window / Time Steps / Events
Routing & Hydraulics Routing / Dynamic Wave / Finite Volume / Unsteady Friction
Quality & Transport General / Eulerian ARD / Lagrangian (LARD) / Reserved Species
2D Surface Routing Hydrodynamics / Wetting & Drying / Coupling / Processes / Performance & Output

Tabs and sidebar rows are activated contextually: a tab that does not apply to the current selection greys out rather than disappearing, and its tooltip says why ("Applies to Dynamic Wave routing only"). Nothing is hidden, so you can always see what a setting would look like before you switch to it. Switching a selector while you are looking at the tab it just disabled moves you to the nearest usable tab instead of leaving you on a dead one.

Two selectors sit in a page header above the tab bar rather than inside a tab, because each one gates tabs below it: Flow routing on Routing & Hydraulics and Solver on Quality & Transport.

The categories, in order:

  1. Title / Notes
  2. Models / Processes
  3. Dates & Times
  4. Routing & Hydraulics
  5. Quality & Transport
  6. System / Performance
  7. Spatial & CRS
  8. Mesh
  9. 2D Surface Routing — present only in a build compiled with the 2D module
  10. Files / Output / Plugins

The dialog re-reads every key from the active project's engine each time it opens, so the controls always reflect the current model rather than a snapshot. Options the running engine does not support are disabled with a tooltip saying why — a legacy SWMM 5.x engine, or a 6.x build that predates a given solver.

Step-by-step

Title / Notes

A rich-text editor for the model's [TITLE] section, with a small toolbar: Bold (Ctrl+B), Italic (Ctrl+I), Underline (Ctrl+U), Bulleted list and Numbered list. When the dialog was opened from a project window the formatted text is kept in the project's .oswp sidecar; the plain text always round-trips through the engine into [TITLE].

The Title / Notes page with its formatting toolbar

Models / Processes

The Models / Processes page — the Domains & Processes tab with the process models and the transport matrix

Three tabs: Domains & Processes, Modules and Flags.

Domains & Processes

Process models

Control Options Writes
Infiltration model Horton / Modified Horton / Green-Ampt / Modified Green-Ampt / Curve Number INFILTRATION
Flow routing Read-only mirror of the selector on Routing & Hydraulics —

Flow routing used to be edited here. It now lives in the Routing & Hydraulics page header, because it gates three of that page's four tabs and could neither sit inside one of them nor stay two sidebar rows away. What remains here is a one-line read-only mirror — "**Dynamic Wave** — change on Routing & Hydraulics" — whose link jumps to that row. One key, one editor.

Active processes — six check boxes whose sense is inverted relative to the .inp: checked means the process runs, and unchecking writes the legacy IGNORE_* key as YES.

Check box Writes when unchecked
Rainfall / runoff IGNORE_RAINFALL YES
Snowmelt IGNORE_SNOWMELT YES
Groundwater IGNORE_GROUNDWATER YES
RDII IGNORE_RDII YES
Water quality IGNORE_QUALITY YES
Flow routing IGNORE_ROUTING YES

Modules

Check box What it does
1D Hydraulics (always on) Always checked and disabled — the SWMM core cannot be turned off
2D Surface Routing A project-level flag stored with the project. When on, the Mesh and 2D Surface Routing pages become interactive; when off the 2D sidebar row is greyed out

The engine itself activates its 2D solver from the presence of mesh sections in the deck, not from this flag; a model that already carries [2D_OPTIONS], [2D_VERTICES], [2D_TRIANGLES] or [2D_MESH_FILE] opens with the box already checked. In a build without the 2D module the flag still toggles the Mesh page — mesh generation works regardless — but the coupled run does not.

Flags

Check box Writes
Allow ponding at nodes (ALLOW_PONDING) ALLOW_PONDING

Dates & Times

The Dates & Times page — the Simulation Window tab

Three tabs: Simulation Window, Time Steps and Events.

Simulation Window

Control Writes
Start START_DATE + START_TIME
End END_DATE + END_TIME
Duration Read-only End − Start, shown as Dd HH:MM:SS
Report start REPORT_START_DATE + REPORT_START_TIME — clamped so it can never precede Start

Date-times are entered with a calendar popup in yyyy-MM-dd HH:mm:ss; the engine always sees the legacy MM/DD/YYYY + HH:MM:SS form.

Sweep / antecedent

Control Writes
Start sweeping on SWEEP_START — MM/DD, no year
End sweeping on SWEEP_END
Antecedent dry days DRY_DAYS

Time Steps

All but the routing step are entered as a timespan:

Control Writes
Reporting step REPORT_STEP
Dry-weather step DRY_STEP
Wet-weather step WET_STEP
Control rule step RULE_STEP — 0 evaluates rules every routing step
Routing step ROUTING_STEP, in decimal seconds (a plain text box, 0.001–3600)

Reporting, wet-weather and dry-weather timespans show milliseconds, so 00:00:00.100 represents the Test 6A reporting interval of 0.1 seconds. The 2D reporting and infiltration intervals retain the same precision, including when they mirror the project schedule. Unedited engine values with finer precision are preserved when applying unrelated options. Control-rule steps retain whole-second editing.

Skip steady state used to sit here. It moved to Routing & Hydraulics › Routing, because it is a property of how the router spends its steps rather than of the schedule — and because the engine honours SKIP_STEADY_STATE under every routing method, not only dynamic wave.

Events

Events ([EVENTS]) — an optional list of routing-active windows. With Skip steady-periods on, the engine routes full hydraulics only inside these windows and steps quickly through the dry periods between them.

Action How
Add row Pre-filled with the simulation Start and End so you only edit the deltas
Remove selected Select one or more rows by their row headers and press it
Edit a time Click the cell and type, use the spin buttons, or drop the calendar popup — MM/DD/YYYY HH:MM

Validation: Start ≥ End on any row blocks Apply and OK until it is fixed. Overlapping rows and rows outside the simulation window raise a non-blocking warning you can override.

Routing & Hydraulics

The Routing & Hydraulics page — the FLOW_ROUTING header above four contextual tabs

The headline page of the dialog. Flow routing sits in a page header above the tab bar, always visible, and gates three of the four tabs below it:

Control Options Writes
Flow routing Steady / Kinematic Wave / Dynamic Wave / Finite Volume FLOW_ROUTING

The FV entry is disabled on an engine that does not carry the FV solver.

Tab Applies to Enabled when
Routing every solver always
Dynamic Wave DYNWAVE Flow routing is Dynamic Wave
Finite Volume FV Flow routing is Finite Volume, on an engine that carries it
Unsteady Friction DYNWAVE and FV either of those, on an engine that carries the keys

A greyed tab keeps its contents — the engine accepts every key on this page as inert under any other router, so a disabled tab never invalidates the project and your configuration survives switching routers mid-session.

Routing

The tab that applies under every solver.

Conduit / channel

Control Options Writes
Force-main equation Hazen-Williams (H-W) or Darcy-Weisbach (D-W) FORCE_MAIN_EQUATION
Normal-flow criterion Slope / Froude / Both / Neither NORMAL_FLOW_LIMITED
Inertial damping None / Partial / Full — dynamic-wave routing only INERTIAL_DAMPING
Numerical stability area Numerical area floor for legacy junction behavior; 0 selects 12.566 ft² (1.167 m²). A positive per-junction Storage Area specifies physical chamber geometry independently MIN_SURFAREA
Min conduit slope Lower clamp on conduit slope, percent MIN_SLOPE

Skip steady state — moved here from Dates & Times.

Control Writes
Skip steady-periods (SKIP_STEADY_STATE) SKIP_STEADY_STATE
Lateral flow tol LAT_FLOW_TOL — shown as a percentage, stored as a fraction
System flow tol SYS_FLOW_TOL — same conversion

Both tolerances grey out while Skip steady-periods is off; the values are kept, so turning it back on restores them.

It is on the shared Routing tab, not on Dynamic Wave, because the engine tests for a steady period from the main routing step with no routing-model guard — SKIP_STEADY_STATE is honoured under kinematic wave and steady flow too. The [EVENTS] windows it works with are edited on Dates & Times › Events.

Dynamic Wave

Surcharge handling

Control Options / meaning Writes
Method EXTRAN (legacy) / SLOT (Preissmann) / DYNAMIC_SLOT / TPA (two-component pressure, experimental) SURCHARGE_METHOD
DPS celerity Target wave celerity, m/s — DYNAMIC_SLOT only DPS_CELERITY
DPS alpha Alpha exponent, ≥ 2 — DYNAMIC_SLOT only DPS_ALPHA
DPS decay Decay time, s — DYNAMIC_SLOT only DPS_DECAY_TIME
TPA celerity Acoustic celerity a in project length units per second — TPA only TPA_CELERITY

The three DPS rows enable only under DYNAMIC_SLOT; the TPA row only under TPA.

Solver

Control Options / meaning Writes
Node continuity Explicit (legacy) or Semi-implicit — better on low-slope networks NODE_CONTINUITY
Anderson acceleration (ANDERSON_ACCEL) Accelerates the iterative solve ANDERSON_ACCEL
Max trials Iteration cap per routing step MAX_TRIALS
Head tolerance Convergence tolerance on node head HEAD_TOLERANCE
Lengthening step Conduit lengthening time step, s LENGTHENING_STEP
Variable step factor Courant safety fraction; 0 disables VARIABLE_STEP
Minimum step Smallest routing step the adaptive solver may take, s MINIMUM_STEP

Minimum step matters most in 1D–2D coupled runs: the coupling drives the 1D step toward this floor, and raising it (1.0–1.5 s) recovers most of the runtime. The System / Performance page has a one-click preset that does exactly that.

Finite Volume

Finite volume solver

Control Options / meaning Writes
Cell length Target cell length in project length units; the special value reads whole conduit (one cell per conduit) FV_CELL_LENGTH
Min cells per conduit Floor on cells per conduit FV_MIN_CELLS
CFL number Courant number the explicit substep targets FV_CFL
Riemann solver HLLC or HLL FV_RIEMANN
Spatial order 1st order, or 2nd order (MUSCL-Hancock) FV_ORDER
Slope limiter Minmod / van Leer / Superbee — enabled only at 2nd order FV_LIMITER
Time integration Euler or RK2 FV_TIME_INTEGRATION
Slot celerity Preissmann-slot pressure-wave celerity FV_SLOT_CELERITY
Pressure closure SLOT (Preissmann) or TPA — TPA carries a signed pressure head so sub-atmospheric full-pipe flow is representable FV_PRESSURE_CLOSURE
Implicit pressurized head solve (experimental) Solves surcharged-cell heads implicitly; CPU backend only and local time stepping stands down while it engages FV_PRESSURIZED_IMPLICIT
Structure coupling Re-evaluate weir / orifice / pump flows Every substep or Every routing step FV_STRUCTURE_COUPLING

Deliberately not on this page: FV_SCALAR_SCHEME (its only consumer is the Eulerian ARD transport engine, so it lives on Quality & Transport) and FV_DISPERSION, which is inert on every path — the engine warns at open when a deck sets it. Decks that set the retired FV_NODE_COUPLING, FV_NODE_DT, FV_NODE_PICARD or VIRTUAL_JUNCTION_MOMENTUM FULL still open; the engine warns once and uses the built-in behaviour.

The finite-volume solver and performance groups enabled under FV routing

Finite volume performance — also FV-only:

Control Options / meaning Writes
Backend Auto / CPU (serial) / OpenMP / CUDA / HIP / SYCL FV_BACKEND
Min parallel cells Cell count below which the solver stays serial FV_MIN_PARALLEL_CELLS
Compact dry-cell storage (FV_COMPACTION) Skip fully dry reaches in the substep loop FV_COMPACTION
Local time stepping (FV_LTS) Advance slow cells with larger substeps grouped in tiers FV_LTS
LTS max tiers Cap on the tier spread; enabled only while LTS is on FV_LTS_MAX_TIERS
CFL census interval Substeps between full Courant re-surveys; 1 = every substep FV_CFL_CENSUS_INTERVAL

Unsteady Friction

Its own tab, because both the dynamic-wave and the finite-volume solvers consume it — it belongs to neither alone.

Control Options / meaning Writes
Method None, or Vitkovsky (instantaneous-acceleration model) UNSTEADY_FRICTION
Coefficient k3 Brunone-type coefficient; enabled only when a method is selected UF_K3

Quality & Transport

The Quality & Transport page — the QUALITY_SOLVER header above four contextual tabs

The sidebar remains available on a new model so that water age and heat transport can be enabled. Individual solver tabs follow their prerequisites. The transport matrix previews pending choices as Planned. Saved child switches can remain On while their parent is Off; these display Inactive and retain their values for later use.

Solver sits in a page header above the tab bar, for the same reason Flow routing does on Routing & Hydraulics: it gates two of the four tabs.

Control Options Writes
Solver Legacy (complete mix) / Eulerian ARD (advection–reaction–dispersion) / Lagrangian (LARD) QUALITY_SOLVER
Tab Enabled when
General always — what applies under every solver, as Routing does on Routing & Hydraulics
Eulerian ARD Solver is Eulerian ARD
Lagrangian (LARD) Solver is Lagrangian
Reserved Species always

Every key is written whatever the solver selection, so you can configure LARD before switching to it and the settings survive.

General

Boundary quality

Control Options Writes
Outfall backflow Hold last concentration (legacy) or Fresh (zero concentration and age) OUTFALL_BACKFLOW_QUALITY

Under Hold last an outfall re-injects its held state, and under water age that water keeps ageing with the clock, so a permanently supplying outfall grows old without bound. Fresh makes a supplying outfall behave like an EPANET-style reservoir.

Eulerian ARD

Control Options Writes
Scalar scheme MUSCL / Upwind / QUICKEST-ULTIMATE FV_SCALAR_SCHEME

Dispersion and the transport-mesh spacing for the ARD engine are configured in its component file (model.ard: [TRANSPORT_OPTIONS], [CONDUIT_DISPERSION]), bound on the Files / Output / Plugins page. A bound component file's SCALAR_SCHEME overrides the combo above.

Lagrangian (LARD)

Control Meaning Writes
Quality step Transport substep in seconds; 0 follows the routing step QUALITY_STEP
Max segments per link Segment slab capacity per link MAX_SEGMENTS_PER_LINK
Dispersion Off, or RWPT (random-walk particle tracking) DISPERSION
RWPT seed Deterministic seed — the same seed reproduces a run bit-for-bit at any thread count; enabled only under RWPT RWPT_SEED

Reserved Species

Control Meaning Writes
Track water age Adds the reserved __WATER_AGE__ species, reported in hours WATER_AGE
Simulate heat transport Adds the reserved __TEMPERATURE__ species, reported in °C HEAT_TRANSPORT
Edit Source Ages... Opens the Water Age Sources editor — writes straight to the engine with its own OK/Cancel [WATER_AGE_SOURCES]
Edit Initial Quality... Opens the per-element Initial Quality editor — likewise [INITIAL_QUALITY]

QUALITY_SOLVER and WATER_AGE are written together on save: a deck carrying WATER_AGE ON without its transport-engine line reopens with age tracking silently off. See 16 — Water Quality, Reaction Systems, Water Age and Heat for the editors these two buttons open.

System / Performance

The System / Performance page with the thread spin and the effective-thread summary

Control Meaning Writes
Worker threads OpenMP team size for the 1D and 2D solvers. 0 = auto, and the spin's special value reads auto THREADS

Under the spin is a live Effective threads line reporting what the engine would actually use for the general, dynamic-wave and 2D teams at the requested count — read from the engine, so it never re-implements its heuristics. Asking for more threads than the machine has logical processors is allowed but flagged with a warning glyph, as is exceeding the performance-core count on a machine that has efficiency cores. The tooltip summarises the machine's logical CPUs, performance cores, any OMP_NUM_THREADS / affinity limit, and whether a 2D Kokkos backend has already fixed its thread count for this process.

Apply fast preset sets Worker threads to the machine's performance-core count and Minimum step (on Routing & Hydraulics) to 1.0 s — the conservative speed recipe for 1D–2D coupled runs, roughly 2.6× faster with mass balance as good as or better than the default. It only fills in the controls; you still press Apply or OK to commit.

The IGNORE_* flags are on Models / Processes, not here — they are about which models run, not how fast.

Spatial & CRS

The Spatial & CRS page showing the layer CRS and the model extent

Control What it shows Writes
Layer CRS Read-only authority code of the layer's stored CRS, e.g. EPSG:6595, or *(local)* / *(none)* —
Change… Opens the CRS picker; applies the choice to the layer and to [OPTIONS] CRS CRS
Detect from coordinates Inspects the model extent and suggests EPSG:4326 when every coordinate falls inside geographic bounds; non-destructive —
Model extent Read-only X: [min, max] Y: [min, max] in the stored CRS —

Changing the CRS here updates the stored CRS — it does not transform coordinates. To permanently reproject a model, use the CRS button in the status bar (see 06 — Coordinate Reference Systems).

Mesh

The Mesh page with the terrain-bowl input’s embedded inline mesh selected; external .2dm files appear in the same list when present

This page picks which 2D mesh configuration the engine reads. It lists every *.2dm file sitting next to the project .inp, plus a synthetic **(Inline mesh — embedded in project .inp)** row when the deck itself carries [2D_VERTICES] and [2D_TRIANGLES]. Above the list is the search directory; below it is the active reference read from [2D_MESH_FILE].

Button What it does
Set Active Patches [2D_MESH_FILE] to point at the selected configuration (or removes the reference when the inline row is chosen)
Remove Deletes the selected .2dm from disk
Import… Browses for a .2dm anywhere on disk, copies it into the project folder and loads it as the active mesh; needs a project window
Refresh Re-scans the directory and re-reads the reference

New meshes are created with Generate Mesh — see 19 — 2D Overland Flow: Meshes, Cell Parameters, Boundary Conditions and 1D–2D Coupling.

2D Surface Routing

This page exists only in a build compiled with the 2D module, and the sidebar row is selectable only while 2D Surface Routing is checked on Models / Processes › Modules. Every key here is stored in [2D_OPTIONS]. Where the project has no value for a key, the page shows the corresponding default from Preferences › Simulation Defaults › the 2D tabs (04 — Preferences) — the same value File → New would synthesise.

Five tabs: Hydrodynamics, Wetting & Drying, Coupling, Processes and Performance & Output.

The 2D Surface Routing page — the Hydrodynamics tab with the explicit marcher

Hydrodynamics

Time stepping

Control Meaning Writes
Max timestep Upper bound on the marcher's CFL substeps and on the 1D↔2D co-advance batch MAX_TIMESTEP

Explicit marcher — the local-inertial marcher is the only 2D integrator in this engine, so there is no solver selector and these settings are always live.

Control Meaning Writes
Momentum θ θ-weighting of the face discharge in the momentum update; 1.0 is the classic Bates scheme, below 1 damps thin-film checkerboarding THETA
Smoothing reference interval Per-step smoothing (zero) keeps the existing weight on every face step. A positive number of seconds makes θ the retention over that fixed interval, so shortening the routing step does not apply more smoothing per second. θ = 1 disables blending. This control is available when the selected engine supports it. THETA_REFERENCE_STEP
CFL number Courant safety factor α on each cell's stable step CFL_NUMBER
LTS tiers Local-timestepping tiers; cells march at power-of-two multiples of the finest step. 1 = a global timestep LTS_TIERS
Movement threshold Cells shallower than this exchange no flow with their neighbours; rain, infiltration and evaporation still act on them, so thin films cost nothing until water must move. A cell starts moving water a little above the threshold and stops a little below it H_MOVE
Max Froude number Froude cap on face discharge — the supercritical guard FROUDE_MAX
Convective momentum flux (ADVECTION) Local inertial only: optionally include convective momentum flux at interior faces (Stelling–Duinmeijer staggered upwind). Full shallow-water includes it automatically; diffusive wave omits it. The checkbox is replaced by an explanatory message for those equations. ADVECTION

For a laboratory timestep study, a reference interval of 1 s with Momentum θ 0.8 retains 80% of the momentum difference over one second. The engine scales that retention to each actual face step, including shorter steps at a coupling window boundary. Keep the interval fixed while reducing the routing step; changing both would change the numerical model during the comparison. Check exchange rates, water levels and water balance as well as a quiet final window. The reference interval is a numerical control and does not change the manhole's discharge coefficients. The hydraulic reference explains the scaling in §9.5.1.

Wetting & Drying

Everything that decides how a partially wet or drying cell is treated.

Depth thresholds

Control Meaning Writes
Dry depth threshold Depth below which a cell is treated as dry, m DRY_DEPTH
Limiter epsilon Limiter regularisation LIMITER_EPSILON
Flux head epsilon Head-difference regularisation for the diffusive-wave flux, m FLUX_DH_EPS

Cell closure

Control Options Writes
Cell closure Flat (η = z̄ + V/A, legacy) or VFR (planar-bed volume/free-surface) CELL_CLOSURE
Face reconstruction Mean (upwind cell depth, legacy) or VFR face (edge depth + wetting gate) FACE_RECONSTRUCTION
VFR min wet fraction Wetted-area-fraction floor that regularises the VFR closure as a cell dries; used only under VFR VFR_MIN_WET_FRAC

Flat overstates the surface on sloped and stepped cells, which lets water climb uphill and strand on slopes; VFR uses the exact planar-bed relation so a lake at rest stays at rest. The VFR face reconstruction blocks flow across an edge whose bed is above the water and pairs naturally with the VFR cell closure. Both work on every backend.

Coupling

1D ↔ 2D coupling

Control Meaning Writes
Coupling Cd Discharge coefficient at coupling points COUPLING_CD
Exchange interval How often exchange volumes are settled; the special value reads Every routing step (0) and the batching interval is clamped to [routing step, 60 s] COUPLING_SYNC
Derive exchange areas automatically (COUPLING_AREA AUTO) Overrides every coupling point's exchange area with 1.25 × the largest connected conduit area, clamped 0.05–2 m²; explicit AREA values in the input are replaced while this is on COUPLING_AREA

Coupling every routing step gives the tightest feedback and is what fill-and-spill ponds behind weirs and culverts need; a batching interval is much faster on large meshes but its one-span feedback delay can ring on rapidly filling ponds.

Processes

The 2D process switches — what the surface does with water besides move it.

Control Options Writes
Rainfall mode Natural neighbour (all gages) / Nearest neighbour (closest gage) / System (uniform gage mean) / None (no direct rainfall) RAINFALL_MODE
Infiltration Automatic (on when per-cell rows exist) / On / Off INFILTRATION
Infiltration step Same as wet-weather step, or an explicit cadence INFIL_STEP
Default method None / Horton / Modified Horton / Green-Ampt / Modified Green-Ampt / Curve Number / Constant rate INFIL_DEFAULT_METHOD
Destination Lost / Subcatchment aquifer / 2D aquifer INFIL_DESTINATION
Evaporation Forced only / Project climate rate / Off EVAPORATION
Transport on the mesh Four check boxes: Pollutants, MSX species, Water age, Temperature TRANSPORT_POLLUTANTS, TRANSPORT_MSX, TRANSPORT_AGE, TRANSPORT_TEMPERATURE

Natural neighbour spatially interpolates every located gage onto each cell (inverse-distance outside the gage hull). See 19 — 2D Overland Flow: Meshes, Cell Parameters, Boundary Conditions and 1D–2D Coupling for assigning gages to cells, and Edit per-cell infiltration… on this tab for per-cell methods and parameters.

The four Transport on the mesh boxes are the 2D column of the Transport by domain matrix on Models / Processes — one model, two views, kept in step while the dialog is open.

Groundwater (subsurface) — the process enables for the two-zone subsurface column under every mesh cell. The aquifer parameters are edited in Mesh 2D › Groundwater (2D), and both places write the same [2D_AQUIFER_OPTIONS] values.

Control Options Writes
Subsurface Automatic (on when aquifer rows exist) / On / Off GROUNDWATER
Evapotranspiration Automatic / None / Capillary rise / Boundary ET / Both GW_ET

Automatic ET resolves to Both in MESH mode and None in PER_SUBCATCH mode. Boundary ET uses project climate demand; wilting suction applies to that boundary process. The climate-editor link opens its demand sources. The dry-only evaporation switch applies to lumped runoff and LID surfaces; it does not gate mesh evaporation or groundwater ET.

With Subsurface on, Destination above locks to the 2D aquifer: infiltrated water enters the column under the cell, which is the mutual exclusion the engine validates.

Performance & Output

Performance

Control Options Writes
Backend Auto / CPU (built-in marcher) / OpenMP (Kokkos) / CUDA / HIP / SYCL BACKEND

Auto prefers an installed GPU plugin above the device mesh-size floor, then the OpenMP plugin above its own floor, else the built-in CPU marcher. A named backend loads that plugin outright; if it is missing or has no usable device the run falls back to CPU with a notice. The OPENSWMM_2D_BACKEND environment variable overrides this setting.

Output

Control Meaning Writes
Write 2D results to output (REPORT_2D) Write 2D results to the output file at all REPORT_2D
2D results file HDF5 file receiving 2D results; relative paths resolve against the input file's folder. Blank uses <model>.2d.h5 next to the input OUTPUT_FILE

Retired keys. MIN_TIMESTEP, REL_TOLERANCE, ABS_TOLERANCE, MAX_CVODE_STEPS, MAX_KRYLOV_DIM, LINEAR_SOLVER, PRECONDITIONER, JACOBIAN, ATOL_AREA_REF, COUPLING_INTERVAL, COUPLING_WINDOW, ACTIVE_SET, ACTIVE_SET_HALO and MOMENTUM configured the deleted CVODE/ARKODE 2D stack. A deck that still carries them opens with a warning and the keys are ignored; nothing on this page writes them. Older manuals and tutorials that mention a CVODE solver, linear solver or preconditioner for the 2D module are describing a solver that no longer exists.

Files / Output / Plugins

This page has three nested sub-tabs so the unrelated concerns do not compete for vertical space.

The Files sub-tab with the secondary file references and the scheduled hot-start saves

Files sub-tab. Secondary file references (.inp [FILES] section) — each row is a path picker showing the path relative to the project directory, with a browse button and, where applicable, a mode combo:

Row Mode combo Writes
Rainfall (off) / USE / SAVE [FILES] RAINFALL
Runoff (off) / USE / SAVE [FILES] RUNOFF
RDII (off) / USE / SAVE [FILES] RDII
Inflows (USE only) — [FILES] USE INFLOWS
Outflows (SAVE only) — [FILES] SAVE OUTFLOWS
Hot-start file (USE) — [FILES] USE HOTSTART

Leave a row blank to omit it from [FILES].

Scheduled hot-start saves (.inp [FILES] SAVE HOTSTART) — an uncapped table, one row per save, with Path, Datetime and Format columns and Add…, Browse…, Remove, Move up and Move down. Leave the Datetime cell as *(end of run)* to write at the end of the simulation; otherwise the engine writes the file from the state at the end of the first time step that reaches that time, and not at all if the run ends first (the report then warns). All three cells are always-open editors, so no click-to-edit is needed.

Format chooses the file written. Native is the OpenSWMM file, which also keeps water age, reaction species, the aquifer with its species (and the 2D surface state saved with it), LID units in storage nodes and snow; EPA SWMM 5 cannot read it. Legacy is always the SWMM 5 file; when OpenSWMM reads one it restores the node, link and subcatchment state. Auto, the meaning of a row without a format in the .inp, is the SWMM 5 file, or Native when storage nodes carry LID units. A new row starts as Native when the model has state only the native file keeps (water age, reaction species, an aquifer or storage-node LIDs) or a 2D mesh, and as Auto otherwise. The Hot-start file (USE) row reads either format.

The Output sub-tab with writer combos and the report contents group

Output sub-tab. Writer / Container selects which plugin drives each of the three writer roles:

Control What it does
Input writer Plugin that writes the model file; empty id = the built-in .inp writer
Output writer Plugin that writes results; empty id = the built-in .out writer
Report writer Plugin that writes the report; empty id = the built-in .rpt writer
Single container (write input, output, and report to one file) Enabled only when the chosen input-writer plugin advertises all three roles for one extension (a GeoPackage, for instance); checking it locks the other two combos to that plugin

Writer choices are stored separately for each role, including an explicit built-in choice. Output paths and single-container mode travel with the model and project. Single-container mode uses one destination for model configuration, results and report data. Separate native .out and .rpt companions are also produced for viewing results in the GUI.

HDF5 model saves now include the complete editable native configuration. Older column-only HDF5 exports cannot be reopened because they omitted model fields.

Report contents ([REPORT]) — what the engine prints to the .rpt text file. This is independent of the Reporting step on Dates & Times, which controls how often rows are written to the binary output.

Check box Writes
Disable all reporting (DISABLED) RPT_DISABLED — greys out the six flags and the three selectors below, because none of them matter then
Echo input summary (INPUT) RPT_INPUT
Continuity errors (CONTINUITY) RPT_CONTINUITY — on by default
Flow statistics (FLOWSTATS) RPT_FLOWSTATS — on by default
Control rule actions (CONTROLS) RPT_CONTROLS
Time-averaged results (AVERAGES) RPT_AVERAGES
Conduit time step summary (LINK_STEPS) RPT_LINK_STEPS — adds the per-conduit Conduit Time Step Summary table (minimum / average / maximum local time step, percent of time in each step range, percent converged); off by default
Report signed piezometric heads (sub-atmospheric) REPORT_SIGNED_HEADS — an [OPTIONS] key that shapes the .out, not the .rpt, so it stays live even when reporting is disabled

Three element selectors — Subcatchments, Nodes and Links — each a None / All / Selected: radio group plus a name list that is enabled only under Selected:. The list accepts comma- or space-separated names and round-trips comma-separated; an empty list collapses to NONE. They write RPT_SUBCATCHMENTS, RPT_NODES and RPT_LINKS.

Report file and Results output file override the per-project .rpt and .out paths. Leaving either blank derives the path from the input file (same folder, matching extension). The Browse… filters follow the extension the selected writer plugin advertises.

The Plugins sub-tab editing the model's PLUGINS section

Plugins sub-tab. A two-column table over the model's [PLUGINS] section:

Column Contents
Plugin The id of an installed plugin, an id:version pin, or a shared-library path
Arguments Free-form whitespace-tokenised arguments passed to the plugin's initialisation

Add appends a blank row; Remove drops the current one. A row naming a plugin that is statically linked into this build is annotated as such. The first input-capable row provides a fallback for File → Save As when no explicit input writer has been chosen. See A3 — Plugins.

Apply, OK and Cancel

  • Apply validates, writes only the keys that changed, then re-reads them so the dialog shows whatever the engine actually accepted. The dialog stays open.
  • OK does the same and closes.
  • Cancel discards pending edits; the engine is untouched.

Validation runs before either write:

  • Blocking — an [EVENTS] row with Start ≥ End, a plugin row with an empty plugin id, or a hot-start save row with an empty path. Apply and OK refuse until the highlighted row is fixed.
  • Non-blocking — overlapping or out-of-window events, a [REPORT] selector set to Selected with an empty list (it will be written as NONE), or a .rpt / .out override whose parent directory does not exist. These appear as a Yes/No prompt so you can override deliberately.

An Apply or OK that wrote at least one key marks the project dirty.

Tips and gotchas

  • Only changed keys are written. Apply without touching anything writes nothing and does not dirty the project.
  • The dialog re-reads after every Apply. If the engine clamped or normalised a value, the control shows the clamped value — that is the engine's answer, not a display bug.
  • Active processes are inverted. A checked box means the process runs; the .inp still carries the legacy IGNORE_* key.
  • Percent versus fraction. The lateral and system flow tolerances are typed and read as percentages; the engine stores fractions and the dialog converts.
  • FV keys survive a router change. They are only written under FLOW_ROUTING FV, but the dialog keeps them, so switching to dynamic wave and back does not lose your setup.
  • The 2D page is defaults-aware. Keys the project never set show your 2D Defaults from Preferences, not the engine's built-ins.
  • Water age needs its transport engine. Ticking Track water age without selecting a transport solver that carries it produces a run with no age.
  • The Spatial page's buttons are inert in this build. Use the status-bar CRS control instead.
  • The 2D CVODE knobs are gone. If you are following an older document that tells you to tune a linear solver or preconditioner for the 2D module, ignore it — those keys are retired and only produce a warning.
  • **Ctrl+, is Preferences, not this dialog.** Application-wide settings live in 04 — Preferences; everything here belongs to the model.

Related

Optional Coriolis and horizontal turbulent mixing

The 2D Hydrodynamics tab offers independent Coriolis effect and Horizontal turbulent mixing controls. Both default to off. These options require Full shallow-water, one timestep tier, and the CPU solver. Coupled groundwater, heat, snow, species transport and node exchanges are not yet qualified with these options; the engine refuses such combinations.

Choose Coriolis From latitude and enter signed degrees north, or choose the advanced direct parameter input in inverse seconds. Latitude and parameter drafts are retained when changing mode; only the selected mode acts. No latitude is inferred from map coordinates or the heat configuration.

Smagorinsky is a depth-averaged horizontal subgrid mixing closure. It represents unresolved horizontal shear mixing while Manning's roughness remains the bed-friction model. Its dimensionless coefficient defaults to 0.10 when enabled; investigate 0.05–0.20 and mesh/timestep sensitivity. The filter width is the square root of each cell's area. It does not provide vertical turbulence or a three-dimensional LES. Wall and open-boundary turbulent traction is zero in this implementation.

Background eddy viscosity (m²/s) adds a constant horizontal eddy viscosity to the closure's value (EDDY_VISCOSITY_BACKGROUND, default 0). With a Smagorinsky coefficient of 0 it gives constant-viscosity mixing. On a fine mesh the Smagorinsky term alone can be far smaller than the mixing in a jet or shear layer, because its length scale is the cell rather than the shear-layer width. The background value is a model parameter, not a measured constant: report it and test sensitivity. A physically equivalent value grows with model scale (as length^1.5 under Froude similarity), so a value suited to a laboratory flume does not transfer to field scale. The row appears whenever a turbulence closure is selected; a stored value is kept but inactive when mixing is off. Engines without this option hide the row.

Mixing length (depth) uses the same mixing as Smagorinsky but with a shear-based mixing length set by the flow rather than the cell. The eddy viscosity is l² times the vorticity, where l is c times the water depth, capped at 0.41 times the distance to the nearest mesh boundary. Mixing-length coefficient c defaults to 0.5, the depth-averaged horizontal mixing length reported by Stansby (2003, 2006).

  • Because the cell size does not enter, refining the mesh does not shrink the mixing the way it does with Smagorinsky.
  • Because it acts on vorticity, smoothly converging or accelerating flow into an opening is not damped.
  • It is intended for shallow flows, where horizontal eddies are limited by depth.
  • The background viscosity still adds to it, and its viscosity and strain maps are written like Smagorinsky's.
  • Engines without this closure do not offer it.

Select Turbulent viscosity and strain in the output variable list to write viscosity (m²/s) and strain rate (1/s) maps. These fields appear in the general 2D results variable selector when present. Old result files remain readable. Optional-process velocities are published from accepted cell momentum; edge discharges retain their flux/continuity meaning.

Enabling these processes selects conservative shared-face stresses, nonlinear stage checks and global stepping. Mixing may require shorter steps. The engine reports the effective Coriolis parameter, coefficient and filter convention; results files retain the corresponding metadata. The coefficient is not a universal calibration, and improved agreement at one gauge alone does not establish correctness.

Friction on selected 2D wall edges

Select solid boundary edges with the mesh edge tool and choose Wall. Wall drag Cw defaults to Free slip (zero). A positive dimensionless coefficient adds tangential traction tau/rho = -Cw |ut| ut, using wetted wall area. It does not change bed Manning roughness or allow water through the wall. Use separate boundary groups to test throat and obstruction walls independently. Bulk edits use one undo entry; the edge attribute table exposes the same value. INP/sidecar saves use WALL_DRAG Cw; GeoPackage saves preserve the coefficient. Assignments transfer with surviving and subdivided edges during supported mesh edits; inspect any reported dropped assignments after geometry changes.

Positive wall drag currently requires CPU Full SWE with one timestep tier and uncoupled surface hydraulics. Smagorinsky mixing is independent and optional. No material coefficient is assumed. A prescribed Cw is a diagnostic partial-slip closure; a roughness-based wall function needs separate wall-material evidence.

Wall-friction save/reopen qualification covers triangular meshes. For quad walls on local edge 3, use INP: the existing GeoPackage boundary table is restricted to edge indices 0–2. Solver wall-friction tests cover triangles and quads independently of that file-format limitation.