SWMM6 & SWMM5 Enablement

Stormwater modeling notes, decoded.

SWMM5, SWMM6, XPSWMM, InfoSWMM, InfoSewer, OpenSWMM, and ICM — engine internals, error messages, calibration, and hard-won field wisdom from Robert Dickinson.

SWMM5 Model Manager — How It Works (Detailed Guide) for Arc Gis Pro

 

SWMM5 Model Manager — How It Works (Detailed Guide)

A complete, plain-English guide to the SWMM5 Model Manager ArcGIS Pro Python Toolbox: what each piece does, how data flows through it, and the exact click-by-click workflow to catalog, search, map, run, and visualize thousands of EPA SWMM5 models — without leaving ArcGIS Pro.

This is the companion to README.md. The README is the quick reference; this guide explains the mechanics and walks the full workflow end to end.


Table of contents

  1. The idea in one paragraph
  2. Architecture & data flow
  3. The files and what each does
  4. Installation (one time)
  5. The SWMM engine for running models
  6. The six tools — full reference
  7. End-to-end worked example
  8. Showing a different model from the catalog
  9. Coordinates, CRS, and "Zoom To Layer"
  10. Symbolizing results (the thematic map)
  11. Database schema reference
  12. Cross-model SQL queries
  13. Command-line use (no ArcGIS Pro)
  14. Troubleshooting
  15. Path reference for this machine



1. The idea in one paragraph

You have a large library of SWMM5 .inp models (the 1729-SWMM5-Models-2030 repo — 3,798 models in practice). The toolbox parses every one of them into a single SQLite database so you can find models by their properties, draw any model on the ArcGIS Pro map as real feature classes, run it through the EPA SWMM engine, and paint the simulation results (peak depth, flow, runoff…) back onto the map. It is a Python Toolbox (.pyt), so it runs inside ArcGIS Pro's own Python with no compiling and is maintainable in plain Python.


2. Architecture & data flow

                    ┌──────────────────────────────────────────────┐
   .inp files       │           swmm5_inp.py  (parser)             │
   (your repo)  ───▶│  reads every section of every .inp           │
                    │  → catalog row + typed object tables + raw   │
                    └───────────────────┬──────────────────────────┘
                                        ▼
                        ┌───────────────────────────────┐
                        │     catalog.db  (SQLite)       │
                        │  • models       (1 row/model)  │
                        │  • junctions, conduits, …      │
                        │  • coordinates, vertices, …    │
                        │  • inp_sections_raw (lossless) │
                        │  • results_summary  (peaks)    │  ◀── Tool 6
                        └───────┬───────────────┬────────┘
                                │               │
              Tool 2: Search ◀──┘               └──▶ Tool 3: Import to Map
              (query the catalog)                    (geometry → feature classes)
                                                              │
   .inp ──▶ Tool 4: Run Model ──▶ <name>.rpt + <name>.out     ▼
            (runswmm.exe / pyswmm)        │            <model>_nodes (points)
                                          │            <model>_links (lines)
                                          ▼            <model>_subcatchments (polys)
                          Tool 5: Join Results ────────────────┘
                          (read .out via swmm5_results.py,
                           write max_depth / max_flow / … fields,
                           optional time-series table)
                                          │
                                          ▼
                              Symbolize by the result field
                              → flood / surcharge / runoff map

Two design choices make this robust:

  • The catalog has two layers of detail. A catalog (one row per model in the models table) for fast searching, and a full network parse (typed tables per object type, plus a lossless inp_sections_raw table that keeps every data line of every section). Nothing from the original .inp is thrown away.
  • Reading results needs no third-party libraries. swmm5_results.py is a pure-Python reader of the binary .out file, validated to match pyswmm exactly. Only running a model needs an engine; viewing results does not.

3. The files and what each does

File Role
SWMM5ModelManager.pyt The ArcGIS Pro Python Toolbox — the six tools you see in the Catalog pane.
swmm5_inp.py Parses .inp files and builds the SQLite catalog. Pure standard library. Also runs from a command line.
swmm5_results.py Dependency-free reader of the SWMM5 binary .out results file. Used by Tools 5 & 6.
swmm5_rpt.py Dependency-free parser of the SWMM5 text .rpt report (peak summaries + continuity). Used by Tool 6.
swmm5_results_db.py Ingests results (.out/.rpt) across the whole library into the catalog for cross-model ranking. Used by Tool 6.
swmm5_out.py Backwards-compatible shim — re-exports swmm5_results.py.
examples/ Three tiny sample models (Hydrology/Bob_Continuous.inp is rain-driven and runs end to end).
README.md / this guide Documentation.

Rule: the four .py modules must sit next to the .pyt. The toolbox adds its own folder to sys.path and imports them by name.


4. Installation (one time)

  1. Put SWMM5ModelManager.pyt and the four swmm5_*.py modules in one folder (here: C:\Users\rober\OneDrive\Documents\SWMM5_Model_Manager\).
  2. In ArcGIS Pro, open or create a project.
  3. Catalog pane → Toolboxes → right-click → Add Toolbox → browse to SWMM5ModelManager.pyt → OK. (Pro asks once to trust the Python toolbox — click Yes, it's your code.)
  4. Expand Toolboxes → SWMM5ModelManager.pyt and you'll see the six tools.

Tip — make it stick: after adding the toolbox, save the project (Ctrl+S). The toolbox connection lives in the .aprx; if you don't save, you re-add it next time.

The Catalog pane lives on the right side of the Pro window (tabs along the bottom-right: Catalog / Geoprocessing / Symbology). If it's hidden: ribbon View → Catalog Pane.


5. The SWMM engine for running models

Tool 4 (Run Model) is the only part that needs a compute engine. You have two options:

Option A — point at runswmm.exe (simplest; what we used). EPA SWMM ships a command-line engine. On this machine it is at:

C:\Program Files\EPA SWMM 5.2.4 (64-bit)\runswmm.exe

Note the folder name carries the patch version (5.2.4), which is why a guess at C:\Program Files\EPA SWMM 5.2\ fails — browse to the real one.

Option B — pyswmm in a cloned Pro Python environment. Pro's base arcgispro-py3 env is read-only, so clone it first:

"%PROGRAMFILES%\ArcGIS\Pro\bin\Python\Scripts\conda" create --clone arcgispro-py3 --name swmm
"%PROGRAMFILES%\ArcGIS\Pro\bin\Python\Scripts\proswap" swmm
"%PROGRAMFILES%\ArcGIS\Pro\bin\Python\envs\swmm\python" -m pip install pyswmm

If you leave Tool 4's engine parameter blank it tries pyswmm; otherwise it shells out to the .exe you give it. Reading results (Tool 5) needs neither.


6. The six tools — full reference

Tool 1 — Build / Refresh Model Database

Purpose: parse every .inp under a root folder into one SQLite catalog.

Parameter Meaning
Root folder containing .inp models Top of your repo. The top-level subfolder name becomes each model's category (e.g. Hydrology/… → category Hydrology).
Output SQLite database (.db) Where to write the catalog.
Rebuild from scratch Checked = delete and rebuild; unchecked = append.

Behavior: recursive; defensive — a malformed file is still cataloged with the reason recorded in models.parse_errors, and the build keeps going. On the real repo this produced 3,798 models, 0 errors, ~2.5 minutes (writing to a OneDrive-synced folder; a plain local path is faster).

Tool 2 — Search Models

Purpose: find models by their catalog properties.

Parameter Meaning
Model database The .db from Tool 1.
Category / Flow units / Flow routing Drop-downs that auto-populate from the database (e.g. routing shows DIFWAVE, DYNWAVE, KINWAVE, STEADY, STEADYFLOW).
Name contains Substring match on the model name.
Minimum node count Only models with ≥ N nodes.
Only models that have coordinates Restrict to models that will actually draw on a map.
Output CSV Optional — save the result list.

Results print to the tool Messages. Example run: DYNWAVE + has-coordinates returned 3,572 matches in 0.62 s from the 3,798-model catalog.

Tool 3 — Import Model To Map

Purpose: turn one model's parsed geometry into ArcGIS feature classes.

Parameter Meaning
Model database The .db.
Model (relative path) Drop-down of model relpaths from the .db (type to filter).
Output geodatabase Usually the project gdb (…\SWMM5_Models.gdb).
Coordinate system Optional — SWMM stores none (see §9).
Create subcatchment polygons On by default.

Produces three layers, added to the map:

  • <model>_nodes — points (junctions, outfalls, storage, dividers; field swmm_type)
  • <model>_links — polylines (conduits, pumps, orifices, weirs, outlets; built from end-node coords + any vertices)
  • <model>_subcatchments — polygons (from [POLYGONS])

Models with no [COORDINATES] are skipped here (with a warning) but stay fully queryable in the database.

Tool 4 — Run Model (SWMM5 engine)

Purpose: run an .inp and produce .rpt + .out.

Parameter Meaning
SWMM5 input file (.inp) The model to run.
Output folder Default = same folder as the .inp.
SWMM engine executable runswmm.exe path, or blank to use pyswmm.
Ensure [REPORT] ALL On by default.

Key detail: if the model has no [REPORT] section, the tool injects [REPORT] NODES ALL / LINKS ALL / SUBCATCHMENTS ALL into a run copy first — otherwise the .out would contain no elements and nothing could be mapped. Continuity errors from the report are echoed to the Messages. Example: Bob_Continuous.inp ran via runswmm.exe in 1 second.rpt + .out.

Tool 5 — Join Results To Map

Purpose: read a .out and paint results onto the imported layers.

Parameter Meaning
Results file (.out) From Tool 4 (or a committed .out).
Node / Link / Subcatchment feature class The layers from Tool 3 (any subset).
Node / Link / Subcatchment variable Which quantity to summarize.
Summary statistic max / mean / min / last.
Also build a time-series table Optional — for the Pro time slider.

Writes a DOUBLE field named <stat>_<variable> on each feature class — e.g. max_depth on nodes, max_flow on links, max_runoff on subcatchments — then you symbolize by it. With the time-series option it builds a long table (element, category, variable, dtime, value) you relate on element and enable time on to animate the simulation.

Variable menus:

  • Nodes: depth, head, total_inflow, lateral_inflow, flooding, volume
  • Links: flow, depth, velocity, capacity, volume
  • Subcatchments: runoff, rainfall, infil_loss, evap_loss

Tool 6 — Ingest Results Into Database

Purpose: load peak results for the whole library at once so you can rank across models. For each model it finds a sibling .out (preferred, exact) or .rpt (text summary) and writes a tidy results_summary table plus a model_results table (continuity per model). No per-model run needed when the results files already exist beside the .inps.


7. End-to-end worked example

This is the exact sequence proven in the session, with real numbers.

  1. Build the catalog. Tool 1, root = the repo, output = catalog.db, Rebuild ✓ → 3,798 models, 0 errors.
  2. Search. Tool 2 on catalog.db, Flow routing = DYNWAVE, Only models that have coordinates ✓ → 3,572 matches in 0.62 s.
  3. Run a model. Tool 4, input examples\Hydrology\Bob_Continuous.inp, engine C:\Program Files\EPA SWMM 5.2.4 (64-bit)\runswmm.exe → produced Bob_Continuous.rpt and Bob_Continuous.out in 1 s.
  4. Import to map. Tool 3 with examples.db, model Hydrology/Bob_Continuous.inp, output = the project gdb → three layers (Bob_Continuous_nodes/_links/_subcatchments).
  5. Join results. Tool 5 with Bob_Continuous.out and the three layers, stat = max → wrote max_depth, max_flow, max_runoff.
  6. Render. Right-click Bob_Continuous_subcatchmentsSymbology → Graduated Colors → field max_runoff → the three subcatchments shade S2 red (0.97), S1 orange (0.63), S3 yellow (0.44) — matching the engine output, with conduit C1 and nodes J1/OF1 overlaid.

8. Showing a different model from the catalog

The map accumulates a layer set per imported model; you change what's shown by importing another model and toggling visibility. To display any of the 3,798 repo models:

  1. Catalog → Toolboxes → SWMM5ModelManager.pyt → double-click 3. Import Model To Map.
  2. Model database (.db): C:\Users\rober\OneDrive\Documents\SWMM5_Model_Manager\catalog.db
  3. Model (relative path): open the drop-down, type to filter (3,798 entries), pick one.
    • To be sure it draws, run Tool 2 (Search) on the same .db first with Only models that have coordinates ✓ (and maybe Minimum node count ~50 for a real network), note a relpath from the Messages, then choose it here.
  4. Output geodatabase: C:\Users\rober\OneDrive\Documents\ArcGIS\Projects\SWMM5_Models\SWMM5_Models.gdb
  5. Run.
  6. In the Contents pane (left), uncheck the previous model's layers (e.g. Bob_Continuous_*) to hide them, or right-click → Remove (drops the layer from the map; the data stays in the gdb). Then right-click the new <model>_subcatchments (or _nodes) layer → Zoom To Layer.
  7. (Optional results) Run the new model (Tool 4) → Join Results (Tool 5) → symbolize.

There is no single "current model" selector — each model is its own set of feature classes, and you control display with the checkboxes in the Contents pane.


9. Coordinates, CRS, and "Zoom To Layer"

SWMM stores raw X/Y with no coordinate system. So:

  • The database/search covers 100% of models regardless of coordinates.
  • A map only works for models that have a [COORDINATES] section, and the features sit in schematic space (the model's own X/Y units), not on the basemap, unless you assign a real projection.
  • After importing, the layers won't appear over the world basemap — they're at schematic coordinates near the map origin. Right-click the layer → Zoom To Layer to jump to them.
  • The catalog's has_coordinates flag and x_min/x_max/y_min/y_max bounding box tell you up front which models will draw.

If you know a model's true projection, set the Coordinate system parameter in Tool 3; otherwise leave it blank and use Zoom To Layer.


10. Symbolizing results (the thematic map)

After Tool 5 has written the result fields:

  1. Right-click the layer (e.g. <model>_subcatchments) → Symbology.
  2. Primary symbology → Graduated Colors.
  3. Field → the result field (max_runoff, max_depth, max_flow, …).
  4. Pick a color scheme (yellow→red reads naturally as low→high).

Typical thematic maps:

  • Nodes by max_depth → flood / surcharge depth.
  • Links by max_flow or max_capacity → conveyance / surcharge.
  • Subcatchments by max_runoff → runoff intensity.

For animation, re-run Tool 5 with "Also build a time-series table", relate the <name>_results_ts table to the layer on element, enable Time on the table, and scrub the Time slider.


11. Database schema reference

models — catalog, one row per file: id, name, filename, relpath, category, subcategory, file_size, file_mtime, title, flow_units, infiltration, flow_routing, link_offsets, start_date, end_date, report_step, routing_step, n_raingages, n_subcatchments, n_junctions, n_outfalls, n_storage, n_dividers, n_nodes, n_conduits, n_pumps, n_orifices, n_weirs, n_outlets, n_links, n_pollutants, n_lid_usage, n_controls, has_coordinates, x_min, y_min, x_max, y_max, parse_errors

optionsmodel_id, key, value (every [OPTIONS] line).

Typed object tables (each with a model_id foreign key): raingages, subcatchments, subareas, infiltration, junctions, outfalls, dividers, storage, conduits, pumps, orifices, weirs, outlets, xsections, coordinates, vertices, polygons.

inp_sections_rawmodel_id, section, row_index, content: the complete, lossless record of every data line of every section.

Results tables (after Tool 6):

  • results_summary(model_id, category, element, variable, value, time_of_max, source)
  • model_results(model_id, source, runoff_continuity, routing_continuity, n_elements, status, ingested_at)

12. Cross-model SQL queries

Open the .db in any SQLite tool (or Python) and ask questions across the whole library:

-- Every dynamic-wave model with more than 100 nodes
SELECT name, category, n_nodes, n_links
FROM   models
WHERE  flow_routing = 'DYNWAVE' AND n_nodes > 100
ORDER  BY n_nodes DESC;

-- Inventory by category and routing method
SELECT category, flow_routing, COUNT(*) AS models
FROM   models GROUP BY category, flow_routing;

-- Distribution of circular pipe diameters across the entire library
SELECT geom1 AS diameter, COUNT(*) AS n
FROM   xsections WHERE shape = 'CIRCULAR'
GROUP  BY geom1 ORDER BY n DESC;

-- After Tool 6: the 50 nodes with the most flooding anywhere
SELECT m.name, r.element, r.value AS flood_volume
FROM   results_summary r JOIN models m ON m.id = r.model_id
WHERE  r.category='node' AND r.variable='max_flooding'
ORDER  BY r.value DESC LIMIT 50;

13. Command-line use (no ArcGIS Pro)

swmm5_inp.py builds the catalog by itself — handy for scheduled refreshes:

python swmm5_inp.py  "C:\Users\rober\GitHub\1729-SWMM5-Models-2030"  catalog.db --rebuild

swmm5_results_db.py ingests results across the library:

python swmm5_results_db.py  catalog.db  "C:\Users\rober\GitHub\1729-SWMM5-Models-2030" --prefer auto

Reading one .out in Python:

from swmm5_results import SwmmOut
o = SwmmOut("Bob_Continuous.out")
print(o.flow_units, o.n_periods, o.nodes)
print(o.summary("node", "depth", "max"))   # {node: peak depth, ...}

14. Troubleshooting

"This project is read-only" (yellow banner / [Read-Only] in the title). A leftover file lock — usually a second Pro instance still has the project open. Fix: close every ArcGIS Pro window (check Task Manager for ArcGISPro.exe), wait ~10 s, reopen the project. If it persists it's OneDrive holding the .aprx: right-click the project folder → OneDrive → Always keep on this device, or Project → Save As to a local folder like C:\ArcGIS\SWMM5_Models (also makes SQLite writes faster).

Imported a model but nothing shows on the map. Expected — schematic coordinates. Right-click the layer → Zoom To Layer (see §9).

Import says it skipped a model / created nothing. That model has no [COORDINATES]. Use Search with Only models that have coordinates ✓ to pick one that draws.

Run Model produced an empty .out / Join finds no elements. The model had a [REPORT] section that didn't request elements. Tool 4 injects [REPORT] … ALL only when there is no [REPORT] at all; if one exists it's respected. Add NODES ALL / LINKS ALL / SUBCATCHMENTS ALL to that model, or run a copy without a [REPORT] section.

runswmm.exe path is invalid. The EPA SWMM folder is version-specific (EPA SWMM 5.2.4 (64-bit)), so browse to it rather than typing a guessed path.

Toolbox missing after reopening the project. It wasn't saved into the .aprx. Re-add it (Catalog → Toolboxes → Add Toolbox) and Ctrl+S.

Full-library build is slow. Writing the SQLite file into a OneDrive-synced folder is the bottleneck. Point Tool 1's output at a plain local folder (e.g. C:\SWMM\catalog.db).


15. Path reference for this machine

Thing Path
Toolbox + modules C:\Users\rober\OneDrive\Documents\SWMM5_Model_Manager\
Full repo catalog (3,798 models) C:\Users\rober\OneDrive\Documents\SWMM5_Model_Manager\catalog.db
Examples catalog (3 models) C:\Users\rober\OneDrive\Documents\SWMM5_Model_Manager\examples.db
Model repo C:\Users\rober\GitHub\1729-SWMM5-Models-2030
ArcGIS project + gdb C:\Users\rober\OneDrive\Documents\ArcGIS\Projects\SWMM5_Models\SWMM5_Models.gdb
SWMM engine C:\Program Files\EPA SWMM 5.2.4 (64-bit)\runswmm.exe

Validation note: the .out reader (swmm5_results.py) was checked against pyswmm's Output API — node depth, link flow, subcatchment runoff, and every reporting datetime match. The full pipeline (build → search → run → import → join → symbolize) was exercised end to end in ArcGIS Pro on the real 3,798-model library.

My thoughts on Teams or Not Teams inside and now outside of Autodesk


My thoughts on Teams or Not Teams

Three Weeks Without Teams

I left Autodesk three weeks ago. The thing I notice most is that the Microsoft Teams messages stopped.
At a company, Teams runs all day. Messages come in, people post ideas, you react. I liked things, commented, added my own ideas, and did a lot of it. When you work from home or travel as much as I do, it is hard to know what is going on inside a company. Teams answered that. It gave me a sense of community and kept me involved without my having to be in a building. That part was good.
Three weeks out, I see the other side.

Without the constant reminder that I work somewhere, I focus more. I can go for long stretches thinking about nothing but the thing in front of me, usually while vibe coding. That sounds like all upside. It isn't. When you stop thinking about other people, you do your own thing and lose the thread of what everyone else is doing. The same messages that gave me community also kept me tied to that thread. Take them away and I keep the focus but lose the continuity.

The bigger surprise is about rhythm. Out here it is my wife and me. My sons are not around for a few months, and they both work every day. When I used to see them working in the house, it made me want to work, and that pull is gone now. So is the company rhythm. I am putting in fewer hours because nothing outside me sets the clock. My wife runs on her own clock too, mostly Korean and Chinese dramas and tennis, so most of the structure in my day is taking care of her and the ordinary work of getting through it.

So Teams is a plus and a minus. The plus is real: it gives you community and the feeling that you belong to something while you sit alone at a keyboard. The minus shows up if you are wired like me. I like to communicate, so I overdo it. The likes and the comments add up, and the tool that keeps you connected also pulls at your attention all day.

Three weeks in, I miss the community, and I do not miss the interruptions. I did not expect to feel both, but I do.




Stein Variational Gradient Descent (SVGD) for SWMM5

of functional gradient descent that minimizes the KL divergence.12:01 PMClaude responded: Yes, but the fit depends on what you're trying to estimate.Yes, but the fit depends on what you're trying to estimate. Here's where SVGD makes sense for SWMM5 and where it doesn't. Good fit: SWMM5 calibration as Bayesian parameter inference. Treat the target distribution as the posterior over calibration parameters (Manning's n, subcatchment width, % imperviousness, RTK triplets, infiltration params, conduit roughness) given observed flow/depth/volume. Run an ensemble of particles, where each particle is a full SWMM5 parameter vector, push them toward the high-posterior region while keeping them spread out. The kernel repulsion term is the selling point: unlike a single least-squares calibration, you get a population of equally-plausible parameter sets, which is exactly the equifinality problem stormwater modelers live with. SVGD gives you uncertainty bands on predictions almost for free. Mechanics you'd need: Each SVGD iteration requires the gradient of log-posterior w.r.t. parameters. SWMM5 has no analytic gradient, so you finite-difference it — N+1 engine runs per gradient per particle, or use a surrogate/emulator. With 20–50 particles and 10+ parameters this gets expensive fast. This is the real bottleneck, not the math. Bound/transform parameters (log for roughness, logit for fractions) so particles don't wander into physically invalid space where the engine fails to converge. The kernel bandwidth (median heuristic) controls the diversity-vs-accuracy tradeoff. Where it's weaker: SVGD assumes a differentiable, reasonably smooth target. SWMM5's dynamic-wave output can be locally non-smooth (regime switches, surcharge onset, weir/orifice transitions), which makes finite-difference gradients noisy and can stall particles. For low-dimensional problems plain MCMC (DREAM, which the hydrology community already uses heavily) or even Latin Hypercube + GLUE may be more robust and is better-understood by reviewers. Practical recommendation: build it as a surrogate-accelerated SVGD — train a fast emulator (Gaussian process or small neural net) on a design of SWMM5 runs, do SVGD on the differentiable emulator, then validate the resulting particle cloud against the real engine. That sidesteps the gradient cost and the non-smoothness, and it pairs naturally with the RL-for-SWMM work you've been doing.
SVGD SWMM5 Calibration Explorer

SVGD SWMM5 Calibration Explorer

Stein Variational Gradient Descent over a 2-parameter posterior: Manning’s n vs. subcatchment width. Particles transport toward the target; a kernel repulsion term preserves diversity — the equifinality story made visible.

0 = median heuristic. Higher = stronger spread / more repulsion.

Higher σ → broader, flatter posterior → more uncertainty.

Couples n and width so many (n, width) pairs fit equally well — the classic non-identifiability in rainfall-runoff calibration.

Iteration
0
Mean log-post
n — mean ± sd
width — mean ± sd

Parameter space — posterior + particle cloud

x: Manning’s n  |  y: subcatchment width (ft)
particle high posterior low posterior true value

The update being applied each iteration

xi ← xi + ε φ(xi),   φ(xi) = (1/N) Σj [ k(xj,xi) ∇xj log p(xj) + ∇xj k(xj,xi) ]

First term is an attraction toward high posterior density (the calibration gradient); the second is a repulsion from the RBF kernel that stops the cloud collapsing to one mode. Together they minimize KL divergence to the target. Here log p is a synthetic SWMM5-style calibration surface — in practice you’d swap in a surrogate-accelerated SWMM5 likelihood.

Educational toy: the posterior is a synthetic 2-parameter surface, not a live engine run. Production use needs a finite-difference or surrogate gradient of the real SWMM5 likelihood.

Expanding the Luck Surface Area for Supporting EPA SWMM 6

 I recently published an interactive web app called SWMM 6 — Luck Surface Area for Supporting SWMM 6, designed to explore how different forms of effort can widen the opportunity to help advance EPA SWMM 6. The app is built as an interactive strategy builder where sliders let you allocate effort across eleven abilities, then show how those abilities combine into a weighted “luck surface area.”

The core idea is simple but powerful: luck is not treated as random chance alone, but as the product of Doing and Telling. In the app, “Doing” includes abilities such as Engine Knowledge, AI Apps, Apps, and New Code, while “Telling” includes Journal Articles, LinkedIn Articles, Newsletter writing, posts, blogs, videos, and tweets. The app explains that these factors multiply rather than add, which means meaningful impact comes from strengthening both execution and communication.

What makes the app especially relevant for the SWMM community is its framing around long-term technical contribution. It highlights deep engine knowledge, AI-assisted tools, deployed apps, and peer-reviewed articles as the highest-leverage ways to build support for SWMM 6, while also recognizing the role of broader outreach through blogging, LinkedIn, and video.
The published site is available at my-swmm-luck-surface-area.netlify.app, and the Netlify project overview confirms that this is the live URL for the project my-swmm-luck-surface-area.
The app presents a clear message for technical developers and modelers: expertise alone is not enough, and visibility alone is not enough either. Sustainable progress comes from combining domain knowledge, new tools, and public communication into one deliberate strategy for supporting the future of SWMM.

InfoSWMM: A 2030 AI-Assisted Study Guide

 


InfoSWMM: A 2030 AI-Assisted Study Guide

 InfoSWMM: A 2030 AI-Assisted Study Guide

A comprehensive study guide for someone in 2030 who needs to understand InfoSWMM without direct access to the software, leveraging the power of AI.
Based on the information provided in the sources, InfoSWMM is a hydraulic and hydrology modeling software that integrates with ArcGIS (specifically ArcMap). It is built upon the SWMM5 engine and extends its capabilities within the GIS environment. InfoSWMM is used for analyzing and simulating various aspects of urban stormwater and wastewater systems, including network analysis, hydraulic modeling, and potentially water quality. The knowledge base I have access to includes numerous blog posts from an Autodesk Technologist with extensive experience in SWMM and related software like ICM SWMM, InfoWorks, InfoSewer, InfoDrainage, and Civil 3D. These posts cover a wide range of topics, from importing SWMM5 models and dynamic wave routing to showing link attributes in InfoSewer, using ArcGIS data in SWMM5, and modeling siphons and force mains. The sources also discuss various features of InfoSWMM like the hydraulic analysis tool, 1D and 2D mass balance reports, and integration with tools like Ruby and SQL.
Here is a study guide tailored for someone in 2030 with AI access but without direct InfoSWMM software:
InfoSWMM Study Guide (for 2030 with AI Assistance)
Goal: To develop a strong conceptual understanding of InfoSWMM's capabilities, its relationship with SWMM5 and ArcGIS, and how to leverage AI for learning in the absence of direct software access.
I. Foundational Concepts:
Understanding SWMM5:
InfoSWMM is built upon the Storm Water Management Model (SWMM) version 5, developed by the U.S. Environmental Protection Agency (EPA). Therefore, a strong understanding of SWMM5's fundamentals is crucial.
Familiarize yourself with SWMM5's core components:
Hydrology: Rainfall-runoff processes, infiltration (e.g., Horton model), evaporation, snowmelt. Understand different runoff modeling methods available in InfoSWMM and SWMM5.
Hydraulics: Flow routing through the drainage network (conduits, nodes, pumps, weirs, orifices). Learn about different flow routing methods, especially dynamic wave routing which is a key feature.
Nodes and Links: Understand how sewer networks are conceptualized in SWMM5 as a collection of nodes (junctions, outfalls, storage units, dividers) connected by links (conduits, pumps, orifices, weirs).
Subcatchments: Areas that receive rainfall and contribute runoff to the drainage system.
Controls (Rules and RTC): Learn how to simulate the operation of pumps and flow regulators using simple rules or Real-Time Control (RTC) logic.
Water Quality: Understand SWMM5's capabilities for modeling pollutant buildup and washoff on land surfaces and their transport through the drainage system.
RDII (Rainfall-Dependent Inflow and Infiltration): Understand how to model infiltration of groundwater into the sewer system due to rainfall.
LIDs (Low Impact Development): Study the various LID controls (e.g., bio-retention cells, infiltration trenches) that can be modeled in SWMM5 to manage stormwater runoff.
AI Assistance: Use the AI to ask specific questions about any of these SWMM5 components. For example: "Explain the Horton infiltration model in SWMM5" or "What are the different types of flow routing in SWMM5 and when is dynamic wave routing most appropriate?".
InfoSWMM as an Extension of ArcGIS (ArcMap):
Understand that InfoSWMM is not a standalone software but rather a toolset that operates within the ESRI ArcMap geographic information system.
This integration allows for leveraging spatial data (e.g., land use, topography, sewer network GIS layers) directly within the modeling environment.
Key aspects of the ArcGIS integration include:
Geodatabase: InfoSWMM likely stores its model data within the ArcGIS geodatabase structure.
Mapping and Visualization: ArcMap's mapping capabilities are used to visualize the sewer network, input data, and simulation results (e.g., maximum Hydraulic Grade Line (HGL)).
Spatial Analysis: Tools within ArcGIS can be used to prepare input data for InfoSWMM and analyze the spatial distribution of simulation results.
AI Assistance: Ask the AI how the integration with ArcMap enhances the capabilities of SWMM5. For example: "How does using GIS data improve the accuracy of a SWMM5 model in InfoSWMM?" or "What are the advantages of visualizing HGL on a map using ArcGIS?".
II. Key Features and Functionality of InfoSWMM:
Hydraulic Analysis:
InfoSWMM provides tools for performing detailed hydraulic analysis of sewer and stormwater networks under various conditions (e.g., rainfall events, dry weather flow).
Understand concepts like flow capacity, hydraulic grade line, flooding, and surcharge.
Learn about the St. Venant equations which govern unsteady flow in conduits and how InfoSWMM (and SWMM5) solve them.
AI Assistance: Ask the AI to explain hydraulic concepts in the context of sewer modeling. For example: "Explain the concept of surcharge in a sewer pipe and how InfoSWMM would identify it" or "What are the limitations of assuming steady-state flow versus using dynamic wave routing in InfoSWMM?".
1D and 2D Modeling Capabilities:
InfoSWMM might offer 2D modeling capabilities in addition to the traditional 1D network modeling of SWMM5. 2D modeling allows for simulating overland flow and flooding in a spatially distributed manner.
Understand the difference between 1D (flow within pipes) and 2D (surface flow) modeling approaches and their applications.
Learn about mass balance in 1D to 2D and back to 1D simulations.
AI Assistance: Ask the AI: "What are the benefits of using 2D modeling in InfoSWMM compared to 1D modeling?" or "How does InfoSWMM handle the exchange of flow between the 1D pipe network and the 2D surface model?".
Integration with InfoSewer:
InfoSewer is another modeling software for sanitary sewer systems. Understand that while related, InfoSewer focuses on sanitary systems, while InfoSWMM focuses on stormwater and combined systems.
Be aware that there might be methodologies for data exchange or model conversion between InfoSewer and InfoSWMM, although newer approaches might be recommended.
AI Assistance: Ask: "What are the key differences between InfoSWMM and InfoSewer?" or "Are there ways to import data from an InfoSewer model into an InfoSWMM model, and what are the potential challenges?".
Real-Time Control (RTC):
InfoSWMM allows for simulating the dynamic operation of control structures (pumps, gates, etc.) based on real-time conditions using RTC rules.
Understand the concept of control rules, condition clauses, and action clauses.
AI Assistance: Ask: "Explain how RTC rules can be used to prevent flooding in an InfoSWMM model" or "What are some common applications of RTC in urban drainage systems modeled with InfoSWMM?".
Sediment and Water Quality Modeling:
InfoSWMM (based on SWMM5) can model the transport of sediment and various water quality constituents.
Understand the basic processes involved, such as pollutant buildup, washoff, and transport.
AI Assistance: Ask: "How can InfoSWMM be used to assess the impact of stormwater runoff on receiving water bodies?" or "What are the key parameters needed to model sediment transport in InfoSWMM?".
Other Advanced Features:
Be aware of features like siphon modeling, force main analysis, and the use of external tools or scripting (like Ruby and SQL) to extend InfoSWMM's capabilities.
AI Assistance: Ask: "How are siphons typically modeled in hydraulic software like InfoSWMM?" or "What are the benefits of using Ruby scripting within the InfoSWMM environment?".
III. Understanding Data Structures and Input/Output:
Input Data:
Understand the types of input data required for an InfoSWMM model, such as:
Network Layout: Spatial representation of pipes, nodes, and other hydraulic structures (likely managed within ArcGIS).
Physical Properties: Diameters, lengths, roughness of pipes; invert elevations of nodes; pump curves; weir and orifice dimensions, etc..
Hydrologic Data: Rainfall time series, subcatchment characteristics (area, imperviousness, slope), infiltration parameters.
Water Quality Data: Pollutant buildup/washoff parameters, initial concentrations, boundary conditions.
Control Rules: Logic for operating pumps and regulators.
AI Assistance: Ask: "What are the essential input data layers required for setting up an InfoSWMM model of a stormwater network?" or "How is rainfall data typically incorporated into an InfoSWMM simulation?".
Output Data:
Familiarize yourself with the types of output generated by InfoSWMM simulations, including:
Flows and Velocities: Time series of flow rates and velocities in conduits.
Water Levels and HGL: Time series of water surface elevations and hydraulic grade lines at nodes.
Flooding: Identification of nodes where water levels exceed capacity.
Pollutant Concentrations and Loads: Time series of pollutant concentrations and loads at various locations in the network.
Mass Balance Reports: Tracking the conservation of water and pollutants within the system.
AI Assistance: Ask: "How can InfoSWMM output be used to identify bottlenecks in a sewer system?" or "What information is typically included in a mass balance report generated by InfoSWMM?".
IV. Exploring Alternative Tools and Concepts:
ICM (InfoWorks ICM): Understand that ICM is another powerful hydraulic modeling platform from Innovyze (now part of Autodesk) that also works with SWMM5 and offers advanced capabilities, potentially including more robust 2D modeling and integrated catchment management. Concepts learned about InfoSWMM will likely be transferable to ICM.
InfoDrainage: This is another Autodesk software focused on sustainable drainage design (SuDS/LID) and stormwater management. Understanding its capabilities can provide a broader context for stormwater modeling.
Direct Use of SWMM5: Recognize that SWMM5 is open-source and can be used as a standalone tool or integrated into other platforms. Learning SWMM5 independently can provide a deeper understanding of the underlying engine of InfoSWMM.
Civil 3D and InfraWorks: These are Autodesk tools used for civil engineering design, and understanding their workflows for managing infrastructure data can be relevant.
Open Standards: Familiarize yourself with open data standards and exchange formats used in the water resources modeling field.
V. Leveraging AI for Learning:
Information Retrieval: Use the AI to search and summarize information from available documentation, research papers, and online resources related to InfoSWMM, SWMM5, and urban hydrology/hydraulics.
Terminology Clarification: Ask the AI to define any unfamiliar terms or concepts encountered during your study. For example: "What is the definition of 'soffit level' in sewer modeling?".
Conceptual Explanations: Request the AI to explain complex processes or features of InfoSWMM in simpler terms or using analogies.
Workflow Simulation (Conceptual): Describe a specific modeling task (e.g., importing a shapefile of a sewer network, running a simulation, visualizing results), and ask the AI to outline the likely steps involved in InfoSWMM, even though you cannot perform them directly.
Troubleshooting (Conceptual): If you encounter a theoretical problem or question about modeling behavior, describe the scenario to the AI and ask for potential causes or solutions within the InfoSWMM context.
Code Snippet Understanding: If you encounter examples of Ruby or SQL scripts used with InfoSWMM, ask the AI to explain what the code does and how it might interact with the software.
Staying Updated: Ask the AI to find information on recent advancements or trends in stormwater modeling and related software.
By focusing on these areas and actively engaging with the AI as a knowledgeable assistant, someone in 2030 without direct access to InfoSWMM can still develop a strong theoretical understanding of its principles, functionalities, and applications.