🔬

ICM SWMM Inference

Export via Exchange → analyse in-browser

Bridge Offline
1 Bridge
→
2 ICM Exchange
→
3 CSV Export
→
4 Post-Analysis
→
5 Findings
ICM SWMM · Network Inference

Know what's wrong with the network
before you start calibrating it.

Pull an ICM SWMM network out through Exchange and get back a ranked list of everything that is broken, missing, or quietly assumed on your behalf — with the reasoning shown and the thresholds under your control.

1
Your ICM network
Nodes, conduits, subcatchments, pumps, orifices, weirs
→
2
Ruby via Exchange
Pure extraction — no thresholds, no judgement
→
3
One wide CSV
A durable artifact you can archive, diff or hand on
→
4
Analysis, right here
Six passes in your browser, re-run in milliseconds

🔬 What it does

  • Runs six inference passes over the exported network — topology, conduit geometry, node elevations, subcatchments, hydraulic capacity, special elements
  • Separates structural faults from judgement calls, so a real defect never hides behind a stylistic one
  • Every finding says what is wrong, why it matters, and what to do about it — no bare error codes to go and look up
  • Thresholds are yours. Change one and the whole model is re-scored instantly, with no ICM round-trip

👷 Who it's for

  • Modellers who inherited a network they didn't build and need to know what they are standing on
  • Anyone about to calibrate — structure first, parameters second. You cannot tune your way out of an adverse pipe
  • Reviewers who have to sign off someone else's deliverable and want the evidence in writing
  • Teams coming off InfoSewer or InfoSWMM, checking what actually survived the migration

📋 What you get out of it

  • A findings list ranked error → warning → inference, filterable by module and searchable by object ID
  • Full-pipe Q and V for every conduit with a computable slope, flagged against self-cleansing and scour limits
  • Three exports: the raw network CSV, the findings CSV, and a plain-text log that drops into a report
  • It all runs on localhost. Your model never leaves the machine
Turn every dial you like — the error count will not move.

An orphan node, a dangling reference, an inverted manhole, a Horton maximum below its minimum: these are facts about the model, not opinions about it, so they sit in ERROR and stay there no matter how you set the thresholds. Only the judgement calls — is 0.6 m/s really your self-cleansing limit? is 20% too steep? — respond to the dials. That separation is the point: it means you can loosen the tuning to cut noise without ever quietly hiding a genuine defect.

TOPOLOGY
Orphans, dead ends, outfall reachability, parallel paths, reversed links, dangling references
CONDUIT
Diameter and length bounds, Manning's n, slope from inverts and offsets, crown against ground, shape
NODE
Ground and invert levels, inverted manholes, depth sanity, initial depth against capacity
SUBCATCH
Area, imperviousness, width, slope, outlet existence, Horton and CN consistency
CAPACITY
Manning's full-pipe Q and V, against self-cleansing and scour thresholds you set
SPECIAL
Pump curves and on/off chatter, orifice and weir coefficients, missing geometry
"Extraction and interpretation are different jobs. Mixing them means every threshold tweak costs you an ICM round-trip — and nobody tunes a model properly when each guess takes four minutes."
— the design note this app was built around

🔌 Export from ICM

The bridge invokes ICM Exchange, which runs the export Ruby against your live network and writes a CSV. The CSV comes back here — all analysis happens in this app, so you can retune thresholds and re-analyse instantly without touching ICM again.

Bridge

Database

— or —

📂 Load an Existing CSV

Ran icm_network_export.rb from ICM's script menu? Drop the CSV here and skip straight to analysis.

⚙️

Working…

⚙ Analysis Thresholds tune and re-analyse — no ICM round-trip
▶
Severity Distribution
Modules
— The Supervisor