EPANET↔SWMM5 Rosetta Stone

Every EPANET concept translated through what you already know from decades of SWMM5

🌧 SWMM 5.2 · Gravity · Collection 🚰 EPANET 2.2 · Pressure · Distribution ✓ Tech-reviewed 2026-07-20
Scope: Unless otherwise tagged, "EPANET" refers to the EPANET 2.2 Core engine (current official EPA release: 2.2.0). Features marked OWA 2.3 live in the OpenWaterAnalytics 2.3.x engine line (this page embeds and runs OWA 2.3.5 — see Run Both Engines), EPANET-UI features belong to that interface, and MSX is the multi-species extension. SWMM references target SWMM 5.2 (current official EPA release: 5.2.4, Aug 2023). Versions verified July 2026.

The One-Line Translation

EPANET is to pressurized water distribution what SWMM5 is to gravity-driven stormwater collection.

You already own the hard part — you think in networks, nodes, links, time steps, and hydraulic engines. EPANET uses the same mental model with one enormous flip: every pipe is full, all the time. No free-surface flow, no surcharging transition, no open channels. Always pressurized, always full-bore.

🔀 Visual: Gravity vs Pressure Networks

SWMM 5.2 — Gravity Collection Subcatchment 🌧 Rainfall→Runoff J1 Collects inflow Conduit (partly full) Manning's n J2 Storage Wet well OUT Outfall ⬇ Gravity drives flow downhill EPANET 2.2 — Pressure Distribution Reservoir Fixed head (∞ supply) Pump Pipe (always full) H-W / D-W / C-M J1 Demand = withdrawal ↗ J2 🏠 Tank Level varies PRV ⬆ Hydraulic-head gradients determine flow direction; pumps can sustain flow toward higher elevations

🗺️ Quick Translation Table

Core object and concept mapping between SWMM 5.2 and EPANET 2.2
SWMM 5.2EPANET 2.2MappingCore Difference
Junction nodeDirectEPANET junctions withdraw water (demand); SWMM junctions collect water (inflow)
ReservoirClosestMirror image in typical role — outfalls discharge out, reservoirs typically supply in (a fixed-head boundary can also receive flow). Both are boundary conditions with fixed or time-varying stage/head.
TankClosestSimilar: volume-vs-depth, min/max levels. EPANET adds mixing models for WQ; SWMM adds ponding, evaporation, seepage.
PipeClosestSWMM has 20+ cross-section shapes, can run partly full. EPANET always circular, always full.
PumpDirectBoth have pump curves and controls. EPANET adds efficiency curves & energy cost. SWMM 5.2 adds Type 5 variable-speed affinity-law pumps.
/ Valve (6 types)ClosestEPANET has PRV, PSV, FCV, TCV, PBV, GPV — active pressure/flow control for pressurized networks.
.inp text file.inp text fileDirectSame concept, different section names. Both human-readable.
+ Rainfall— (nothing)NoneEPANET has no rainfall-runoff generation. Water is supplied through fixed-head reservoirs, tanks, pumps, or prescribed nodal injections (negative demands); demand is assigned to nodes.
DWF (dry weather flow)Base Demand + PatternClosestSame baseline-×-pattern idea, opposite sign and different pattern architecture: DWF is an external inflow (SWMM stacks monthly/daily/hourly/weekend factors); demand is a withdrawal (EPANET assigns multiple demand categories, each with its own pattern).
Bulk & wall reactionsClosestSWMM: pollutants from land surfaces. EPANET: reactions inside pipes and tanks.
Continuity error %Mass-balance reportingClosestBoth measure mass balance. These are not equivalent to convergence status — see Solver tab.

🔍 What Has No Equivalent

🌧 SWMM 5.2 Only

Subcatchments & rainfall-runoff generation, infiltration models (Green-Ampt, Horton, SCS-CN), groundwater/aquifer coupling, snowmelt, LID controls (rain gardens, green roofs, permeable pavement), street/gutter routing, free-surface open-channel flow, surcharging/flooding transition, RDII/RTK unit hydrographs, pollutant buildup and washoff from land surfaces, evaporation, conduit seepage.

🚰 EPANET Only

Core Pressure-driven demand analysis (PDA), emitters (sprinkler/nozzle flow), tank mixing models (FIFO, LIFO, 2-compartment, complete), pipe wall reactions, chlorine/THM chemistry, water age tracking, source tracing, energy cost analysis, pump efficiency curves, specific gravity/viscosity settings, independent pressure units.

EPANET-UI Fire flow analysis, energy audit reporting.

MSX Multi-species water quality with user-defined reaction equations.

OWA 2.3 PCV (positional control valve), FAVAD pressure-dependent pipe leakage.

🌉 Where InfoWorks ICM Sits

For practitioners who bridge both worlds daily: InfoWorks ICM's native engine solves the full St. Venant equations and handles pressurized surcharge with a Preissmann slot — a single network passes between free-surface and pressurized flow without changing engines. The regime boundary that separates SWMM5 from EPANET runs through the middle of ICM. ICM also ships a SWMM engine option for direct SWMM5 compatibility, while the EPANET lineage lives on the distribution side in InfoWater Pro.

EPANET — always full ICM — both regimes, one network SWMM5 — gravity first, surcharge handled

📚 Sources & Versions

Last technical review: July 20, 2026, against the references below. Both embedded engines self-report their versions live in the Run Both Engines tab (EPANET EN_getversion → 20305; SWMM banner → 5.2 Build 5.2.2).

Authoritative sources and what each one covers on this page
SourceCovers hereLink
EPA EPANET 2.2 User Manual (online)Core hydraulics & WQ, analysis options, Status Report, [RULES] precedence, error codes, .inp formatusepa.github.io/EPANET2.2
EPA EPANET homepageDesktop releases and downloads (EPA 2.2.0 current)epa.gov/water-research/epanet
OWA EPANET releases (GitHub)OWA 2.3.x engine line — PCV valve, engine-level FAVADOpenWaterAnalytics/EPANET
epanet-js (GitHub)Provenance of the embedded OWA 2.3.5 WASM enginemodelcreate/epanet-js
EPA SWMM homepageSWMM 5.2 manuals and the current 5.2.4 desktop releaseepa.gov · SWMM
EPA SWMM engine source (GitHub)Engine files this page was verified against (report.c, swmm5.c)USEPA/Stormwater-Management-Model
@fileops/swmm-wasm-web (npm)Provenance of the embedded SWMM 5.2.2 WASM engine (newest published browser build)npm · swmm-wasm-web
EPANET-UI User Manual (2025)EPANET-UI-only features: fire-flow analysis, FAVAD UI, energy indicesDistributed with the EPANET-UI application

Which sections depend on extensions

Anything untagged is EPANET 2.2 Core or SWMM 5.2. Items tagged EPANET-UI (fire flow, FAVAD leakage editor, energy indices) need the EPANET-UI application; OWA 2.3.x items (PCV, engine-level FAVAD) need the Open Water Analytics engine line; MSX needs the multi-species extension. The Run Both Engines tab executes OWA 2.3.5 and SWMM 5.2.2 (web build) — embedded, offline, version-checked at boot.

📦 Interactive Object Lookup

Click any SWMM5 object to see its EPANET translation and property-level differences.

🔁 Property Transfer Matrix

When a model crosses dialects, every property lands in one of four buckets: Transfers copies as-is, Transforms needs a mechanical conversion, Judgment needs an engineering decision, and No path has no EPANET regime at all.

Property-by-property transfer classification, SWMM 5.2 → EPANET 2.2
PropertySWMM 5.2 formEPANET 2.2 formClassWhat to do
Hazen–Williams C[XSECTIONS] FORCE_MAIN roughness[PIPES] roughness under HEADLOSS H-WTransfersCopy the value; confirm both files use H-W.
Darcy–Weisbach εFORCE_MAIN_EQUATION D-W roughness[PIPES] roughness under HEADLOSS D-WTransformsSame physics, different unit convention (millifeet US / mm SI) — convert, don't copy.
Manning's n[CONDUITS] n, partly-full open-channel flowC-M roughness on always-full pipesJudgmentSame symbol, different regime; C-M full-pipe flow is not open-channel Manning.
Pipe diameter[XSECTIONS] Geom1 in ft (m)[PIPES] diameter in inches (mm)Transforms×12 in US units — the classic silent error.
Pipe length[CONDUITS] length[PIPES] lengthTransfersSame units both sides.
Node elevationJunction invert elevationJunction reference elevationJudgmentInvert-of-pipe vs demand-node datum — choose the datum deliberately and document it.
Baseline flow[DWF] average value (external inflow)[JUNCTIONS] base demand (withdrawal)TransformsThe sign flips: into the network becomes out of it.
Diurnal patterns[PATTERNS] HOURLY/DAILY/MONTHLY/WEEKEND per pattern[PATTERNS] multipliers on one global Pattern StepTransformsFlatten stacked SWMM factors onto a single interval; EPANET patterns wrap automatically.
Pump curve (Type 3 ↔ HEAD)[CURVES] PUMP3 rows are (Head, Flow)[CURVES] rows are (Flow, Head)TransformsTranspose the columns — the engine-verified trap documented on this page.
Pump on/off logicStartup/shutoff depths on the [PUMPS] line[CONTROLS] / [RULES] statementsTransformsMove thresholds into control statements; the trigger side inverts with the storage side.
Storage geometry[STORAGE] area-vs-depth (FUNCTIONAL/TABULAR)[TANKS] diameter or volume-vs-level curveTransformsConvert area(depth) to volume(level); set min/max operating levels.
Orifices & weirs[ORIFICES]/[WEIRS] Cd + geometryValve family (PRV/PSV/PBV/FCV/TCV/GPV)JudgmentPick the valve whose setting matches the intent; a GPV takes a custom head-loss curve.
Free-surface routingDynamic wave, partly full, surcharge transitionNo pathEPANET has no partly-full regime; that half of SWMM stays behind.
Rainfall & subcatchments[SUBCATCHMENTS] + [RAINGAGES]No pathNothing generates flow from rain in EPANET.
Water-quality stateBuildup/washoff, node treatmentBulk/wall reactions, tank mixing, WQ sourcesJudgmentDifferent paradigms — map the intent (what enters vs what transforms), not the fields.

🧮 Solver Philosophy: Side by Side

SWMM 5.2 Dynamic Wave

Momentum-based, time-marching

Solves the full 1-D St. Venant equations at every time step — continuity + momentum with inertia, pressure gradient, gravity, and friction terms.

∂Q/∂t + ∂(Q²/A)/∂x + gA·∂H/∂x + gA·Sf = 0 ∂A/∂t + ∂Q/∂x = 0

Marches forward in small time steps (Δt typically constrained by Courant conditions). Handles surcharging, backwater, reverse flow, looped networks.

Key output: depth at nodes, flow in conduits.

EPANET 2.2 Gradient Method

Energy-based, quasi-steady-state

At each hydraulic time step, finds the steady-state solution using conservation of mass at nodes + energy equations across links (Todini-Pilati gradient algorithm).

Σ Q_in − Σ Q_out = Demand (mass balance) h_loss(Q) = H_i − H_j (energy balance)

Iterates via Newton-Raphson until flow changes converge. No inertia, no momentum, no dynamic-wave CFL restriction. Each hydraulic event represents a quasi-steady network solution.

Key output: pressure at nodes, flow in pipes.

🔑
EPANET hydraulic steps are commonly much longer (minutes to hours) because each step is a quasi-steady network solve. SWMM dynamic-wave routing requires much shorter steps (seconds) to resolve unsteady free-surface and pressurized transitions.

📐 Head Loss Formulas

SWMM 5.2 uses Manning's equation for open-channel flow and offers either Hazen-Williams or Darcy-Weisbach for force mains (controlled by the FORCE_MAIN_EQUATION option; Hazen-Williams is the default). In SWMM 5.2+, pair force mains with SURCHARGE_METHOD SLOT in [OPTIONS] for smoother pressurization transitions. EPANET lets you choose one formula for all pipes:

Head loss formula comparison
FormulaRoughnessEquationSWMM 5.2 Connection
Hazen-Williams
EPANET default
C-factor (unitless)
100–150 typical
h_f = 10.67·L·Q^1.852 / (C^1.852·D^4.87) Also the default for SWMM 5.2 force mains. C-factors transfer directly when both use H-W.
Darcy-Weisbach Roughness height ε (mm) h_f = f·(L/D)·V²/(2g)
f from Colebrook-White
Available for SWMM 5.2 force mains via FORCE_MAIN_EQUATION D-W. Physical roughness framework is directly comparable; confirm unit conventions.
Chezy-Manning Manning's n h_f = 10.29·n²·L·Q² / D^5.33 Same n as SWMM5 open-channel flow — but applied to full-pipe flow in EPANET. Values transfer; the flow context differs.
💡
Pro tip: When transferring a SWMM 5.2 force-main model to EPANET, match the head-loss formula (H-W or D-W) and the roughness values transfer directly, subject to confirming units. Starting fresh in US water distribution? Hazen-Williams is the industry convention.

🔧 Convergence & Stability: Three Separate Concepts

These are often conflated. They are distinct in both engines:

Convergence, mass balance, and temporal stability compared
ConceptSWMM 5.2EPANET 2.2
Mass balanceContinuity error % (simulation-wide metric)Hydraulic continuity is enforced within each network solution. The full Status Report lists per-trial convergence error; a final mass-balance accounting is reported when water quality is analyzed [EPA 2.2 §8.1]
Nonlinear convergenceIterative (Picard) nodal solution per routing step: MAX_TRIALS (default 8) and HEAD_TOLERANCE (default 0.005 ft)Gradient-method trials (engine default 200; the UI suggests 40) with Accuracy (default 0.001), Max. Head Error, Max. Flow Change; "If Unbalanced: CONTINUE" grants 10 extra trials with link statuses frozen [EPA 2.2 §8.1]
Temporal stabilityRouting step size + variable-step adjustment. Small steps needed for CFL/Courant stability.Hydraulic event step (typically 1 hr). No dynamic-wave CFL restriction. DAMPLIMIT damps flow changes to 60% below a threshold to cure oscillations.
Link-status chatteringSeparated on/off thresholds (hysteresis) and control-rule timing prevent cycling; smaller routing steps sharpen transition resolution but do not by themselves eliminate chatteringCHECKFREQ (how often to check status during iteration) and MAXCHECK (after which checks occur only at convergence) control iterative status evaluation — status checking inside the gradient solution, not an analogue of SWMM’s variable routing step
Failure modeOscillatory flows or heads, repeated nodal non-convergence, excessive time-step reductions, elevated continuity error"System Unbalanced" warning (solver couldn't converge), negative pressures (physically impossible demand)
⚠️
Common mistake: SWMM continuity error and EPANET "System Unbalanced" are not equivalents. Continuity error is a mass-balance metric; System Unbalanced is a nonlinear convergence failure. They indicate different problems and have different fixes.

💧 Demand-Driven vs Pressure-Driven Analysis

This concept has no SWMM5 parallel — SWMM5 doesn't have "demand" because water enters from subcatchments and gravity pulls it through. In EPANET:

DDA — Demand-Driven (Classic)

Every node gets exactly the demand you assigned, regardless of pressure. If the system can't deliver, you get negative pressures — mathematically valid but physically impossible.

PDA — Pressure-Driven (Modern)

Demand varies with pressure: zero below minimum pressure, full above service pressure, power-law in between. More realistic. Parameters: minimum pressure, service pressure, pressure exponent (typically 0.5).

⚙️ Control Architecture Comparison

SWMM 5.2 has a single rule-based system. EPANET splits into two tiers — and adds priority-based conflict resolution:

Tier 1: Simple Controls EPANET only

One-liners — no SWMM5 equivalent:

LINK Pump1 OPEN IF NODE Tank1 BELOW 17.0 LINK Pump1 CLOSED AT TIME 8.5 LINK Valve3 0.5 AT CLOCKTIME 6:00

Fast to write, easy to read, limited to one condition per action.

Tier 2: Rule-Based Controls (both)

EPANET's rule syntax is nearly identical to SWMM5's:

RULE 1 IF TANK 1 LEVEL ABOVE 19.1 THEN PUMP 335 STATUS IS CLOSED AND PIPE 330 STATUS IS OPEN

Same IF/AND/OR/THEN/ELSE logic. EPANET adds PRIORITY keyword for conflict resolution. Note: OR has higher precedence than AND in EPANET — IF A OR B AND C means (A OR B) AND C (unusual; watch out) [EPA 2.2 [RULES]].

📋 Condition Syntax: Word-for-Word Mapping

Control rule condition syntax comparison
What You're TestingSWMM 5.2 SyntaxEPANET 2.2 Syntax
Node water levelNODE xxx DEPTH > valueTANK xxx LEVEL ABOVE value
Node pressure / headNODE xxx HEAD > valueNODE xxx PRESSURE ABOVE value
NODE xxx HEAD ABOVE value
Link flowLINK xxx FLOW > valueLINK xxx FLOW ABOVE value
Link statusLINK xxx STATUS = ONLINK xxx STATUS IS OPEN
Pump speed / settingPUMP xxx SETTING > valueLINK xxx SETTING ABOVE value
Elapsed timeSIMULATION TIME > valueSYSTEM TIME > value
Clock timeSIMULATION CLOCKTIME > valueSYSTEM CLOCKTIME >= 8 AM
Day / monthSIMULATION MONTH > value— (not available; EPANET has no calendar dates)
Tank fill/drain time— (not available)TANK xxx FILLTIME BELOW 4
TANK xxx DRAINTIME BELOW 6
System total demand— (not available)SYSTEM DEMAND ABOVE value

⏱️ Rule Evaluation Timing

In SWMM 5.2, control rules are evaluated at every routing time step. In EPANET, rules are evaluated at a separate Rule Step (default: 1/10 of the hydraulic time step). Between hydraulic steps, EPANET advances the clock in Rule Step increments, updates tank levels linearly, and checks all rules at each increment. If a rule fires, a new full hydraulic solution is triggered immediately at that point.

🧪 The Paradigm Shift: Surface → Pipe

SWMM 5.2 Water Quality

Source-to-outfall pollutant tracking

Pollutants generated on subcatchment surfaces (buildup), washed off by rainfall, routed through pipes. Focus: what enters the system from the land.

Typical: TSS, BOD, nutrients, metals, bacteria. First-order decay or treatment at nodes.

EPANET 2.2 Water Quality

In-pipe reactions and mixing

Water enters from reservoirs with known quality. Undergoes bulk reactions (water column) and wall reactions (pipe surface). Focus: what happens inside the system.

Typical: chlorine residual, THMs, water age, source tracing. Per-pipe bulk + wall coefficients.

🔬 EPANET-Specific Quality Concepts

Click each to expand — these have no SWMM5 equivalent:

⏱️ Time Step Mapping

Time option comparison between SWMM 5.2 and EPANET 2.2
EPANET Time OptionTypicalSWMM 5.2 EquivalentKey Insight
Duration24–168 hrsTotal DurationDirect Both engines support arbitrary durations. SWMM is routinely used for multiyear continuous simulations.
Hydraulic Step1 hourRouting StepClosest EPANET's step is much longer because each step is a quasi-steady solve with no CFL restriction. SWMM dynamic-wave routing requires seconds-scale steps.
Quality Step5 min— (none)None Sub-step for advecting water quality parcels. SWMM routes quality at the same step as hydraulics.
Pattern Step1 hourDWF pattern intervalDirect Interval between demand pattern multipliers.
Report Step1 hourReporting StepDirect Identical — how often results are written to output.
Rule Step6 minControl Rule StepClosest EPANET evaluates rules at this sub-interval within hydraulic steps.
Clock Start12:00 AMStart Date/TimeClosest EPANET uses time-of-day only (no calendar dates). SWMM uses actual dates.
StatisticNONE— (none)None Post-processing: AVERAGED, MIN, MAX, RANGE, or NONE. You'd do this yourself after SWMM.

📏 Unit Systems

Measurement unit comparison
ParameterSWMM 5.2EPANET 2.2
FlowCFS, GPM, MGD, CMS, LPS, MLDCFS, GPM, MGD, IMGD, AFD (US)
LPS, LPM, MLD, CMH, CMD (SI)
Pipe diameterfeet (US) / meters (SI)inches (US) / mm (SI)
Pressureft or m of headpsi, m, or kPa — independent of flow units
Velocityft/s or m/sft/s or m/s
RoughnessManning's n; H-W C or D-W ε for force mainsC-factor (H-W), ε in mm (D-W), or n (C-M)
ℹ️
Nice EPANET feature: Pressure units are decoupled from the flow system. You can use GPM for flow but kPa for pressure. SWMM locks you into one consistent system. Also: changing flow units in EPANET-UI auto-converts all existing data.

Energy Options EPANET 2.2

EPANET has a full energy cost analysis framework. SWMM 5.2 reports pump power usage (kW·hr in the Pumping Summary) but does not compute operating costs.

EPANET provides: global pump efficiency (default 75%), energy price per kWh, price patterns for time-of-use rates, and demand charges for peak kW. The Pumping Report totals cost across the simulation.

Hydraulic Power Equation (US units)

Hydraulic power (kW) = H(ft) × Q(gpm) / 5310 Input energy (kWh) = Hydraulic power × time(hr) / efficiency

Where efficiency is a decimal (e.g., 0.75). The /5310 constant converts ft·gpm to kW.

EPANET-UI also reports energy-based performance metrics: Efficiency Index, Friction Loss Index, Leakage Loss Index, Excess Supply/Usage indices.

🔧 EPANET Valve Types 6 in EPA 2.2

In SWMM5, flow restriction comes from orifices (fixed opening) and weirs (overflow). In EPANET's pressurized world, you need active pressure and flow control:

PRV — Pressure Reducing

Limits downstream pressure to a set value. Opens/closes automatically.

SWMM5: No equivalent. Gravity flow doesn't need downstream pressure limiting.
PSV — Pressure Sustaining

Maintains minimum upstream pressure. Mirror image of PRV.

SWMM5: No equivalent.
PBV — Pressure Breaker

Forces a fixed pressure drop across the valve. Altitude control between zones.

SWMM5: Closest to a fixed head-loss orifice, but specified as ΔP rather than Cd.
FCV — Flow Control

Limits flow to a maximum specified rate.

SWMM5: Closest to an orifice capped at max flow, but orifice uses Cd·A, not a flow target.
TCV — Throttle Control

Simulates a partially closed valve by adjusting minor loss coefficient.

SWMM5: Closest analog — like a conduit with entrance/exit loss coefficients.
GPV — General Purpose

User supplies a custom head-loss vs. flow curve. Maximum flexibility.

SWMM5: Like a SWMM5 outlet with a custom rating curve, in pressure terms.
ℹ️
OWA 2.3 adds a seventh type: PCV (Positional Control Valve) — loss coefficient varies as a function of percent-open setting. Not part of EPA EPANET 2.2.

Pump Feature Comparison

Pump capabilities in SWMM 5.2 vs EPANET 2.2
FeatureSWMM 5.2 PumpEPANET 2.2 Pump
Pump curve types Type 1 — fixed/volume (stepped by inlet volume)
Type 2 — fixed/depth (stepped by inlet depth)
Type 3 — variable/head (Q vs H characteristic curve)
Type 4 — variable/depth (Q varies by inlet depth)
Type 5 — variable-speed affinity-law pump SWMM 5.2
Ideal — unconstrained transfer
Head vs flow curve. Auto-fits a continuous function from 1 or 3 points. Constant-power alternative (specify kW directly).
Variable speedType 5 pump uses affinity laws. Pump setting can be modulated via controls.Relative speed setting (e.g., 1.2 = 120%) + speed pattern over time. Affinity-law scaling built in.
On/off controlStart/shutoff depths at wet well, plus control rulesSimple controls (by tank level, pressure, time) or rule-based controls
Energy reportingPumping Summary reports Power Usage in kW·hr SWMM 5.2Efficiency curve (% vs flow), energy price per kWh, price pattern for TOU rates, demand charge. Full operating-cost framework.
Check valveInherent (no reverse flow)Inherent (closes at shutoff head)

💦 Emitters & Leakage

Emitters EPANET 2.2

Flow through a nozzle/sprinkler at a junction:

Q = C · P^n

C = discharge coefficient, P = pressure, n = exponent (typically 0.5). Used for sprinkler systems, fire hydrants, or simplified leakage. No SWMM5 equivalent.

FAVAD Leakage OWA 2.3

Per-pipe leak area and expansion rate:

Leakage = Cd·(A₀·H^0.5 + m·H^1.5)

A₀ = crack area at zero pressure; m = expansion rate. More physically based than the emitter shortcut. In SWMM5, leakage = RDII, groundwater exchange, or seepage — not pressure-driven pipe cracks.

🏔️ The Same Hill, Two Stories

One physical system: water at elevation 90 ft must reach elevation 130 ft through a pump. SWMM5 tells it as a collection story — inflow → wet well → pump → force main → outfall. EPANET tells it as a supply story — source → pump → pipes → customers → elevated tank. Below, each .inp dialect side by side, abridged to the key lines.

ℹ️
Watch two things as you read: where the storage sits relative to the pump, and which way the control logic points. Both flip between worlds.

1️⃣ Boundaries — The Mirror

🌧 SWMM 5.2 — water exits at the top
[OUTFALLS]
;;Name    Elev    Type
Outfall   130.0   FREE
🚰 EPANET 2.2 — water enters at the bottom
[RESERVOIRS]
;;Name    Head
Source    90.0
🔑
Same physical world, opposite ends of the model. SWMM's boundary is where water leaves (top of the hill); EPANET's is where water enters (bottom of the hill).

2️⃣ Storage — Swaps Sides of the Pump

🌧 Wet well — suction side
[STORAGE]
;;Name   Elev  MaxD  InitD  Shape       Coef Exp Const
WetWell  90.0  14.0  3.0    FUNCTIONAL  0    0   200
🚰 Tank — discharge side
[TANKS]
;;Name  Elev   InitLvl  MinLvl  MaxLvl  Diam
T1      130.0  5.0      2.0     12.0    16.0
🔑
The SWMM wet well sits on the pump's suction side and fills from upstream inflow. The EPANET tank sits on the discharge side and floats on the system. Storage swaps sides when you cross worlds — this drives the control-logic inversion in section 6.

3️⃣ Nodes — Inflow vs Demand

🌧 Water arrives at the node
[JUNCTIONS]
;;Name  InvertEl  MaxDepth
J1      100.0     8.0
J2      118.0     6.0

[INFLOWS]
;;Node  Type  Tseries
J1      FLOW  InflowTS
🚰 Water is withdrawn at the node
[JUNCTIONS]
;;Name  Elev    Demand  Pattern
J1      100.0   50      Diurnal
J2      118.0   0
🔑
Flow direction flips at the node: SWMM junctions collect external inflow into the system; EPANET junctions withdraw demand out of it. EPANET's base demand + pattern is the structural sibling of SWMM DWF — same baseline-×-pattern machinery, opposite sign.

4️⃣ Links — Force Main vs Pipe

🌧 Force main = friction-law selection
[CONDUITS]
;;Name  From     To       Len  N
GRAV1   J1       WetWell  350  0.013
FM1     J2       Outfall  600  0.013

[XSECTIONS]
;;Link  Shape       Diam(ft)  C
FM1     FORCE_MAIN  0.67      130
🚰 Every pipe is a "force main"
[PIPES]
;;Name  From  To  Len  Diam(in)  Rough
P1      J2    J1  350  8         130
P2      J1    T1  600  8         130
🔑
Worth internalizing: any closed SWMM conduit pressurizes when it flows full — surcharge handling is built into the dynamic wave solver, no special object needed. The FORCE_MAIN cross-section does not enable pressurization; it selects the full-flow friction law (H-W C or D-W ε via FORCE_MAIN_EQUATION) in place of Manning's n. In EPANET, full-bore flow is the only mode — note the C-factor of 130 appears in both files. Watch units: SWMM diameter in feet, EPANET in inches.

5️⃣ Pump — Same Curve, Different Wiring

🌧 Type 3 curve + on-line depths
[PUMPS]
;;Name From    To  Curve Status Start Shutoff
P1     WetWell J2  PC1   OFF    6.0   2.0

[CURVES]
;;Name  Type   Head  Flow   <-- X = head!
PC1     PUMP3  25    600
PC1            48    300
PC1            62    0
🚰 HEAD curve + separate controls
[PUMPS]
;;Name  From    To  Parameters
PMP1    Source  J2  HEAD PC1

[CURVES]
;;Name  Flow  Head
PC1     0     62
PC1     300   48
PC1     600   25
🔑
Same three numbers, transposed axes — engine-verified. An EPANET HEAD curve is entered as (flow, head) pairs; SWMM's Type 3 pump curve is entered as (head, flow) — the engine looks flow up from the head difference. Feed SWMM the EPANET column order and the interpolation reads garbage. Beyond the curve: SWMM puts startup/shutoff depths right on the pump line; EPANET moves on/off logic to [CONTROLS]. Both files run live on the Run Both Engines tab.

6️⃣ Controls — The Logic Inverts

🌧 Pump ON when suction side is FULL
[CONTROLS]
RULE R1
IF NODE WetWell DEPTH > 6
THEN PUMP P1 STATUS = ON

RULE R2
IF NODE WetWell DEPTH < 2
THEN PUMP P1 STATUS = OFF
🚰 Pump ON when discharge side is EMPTY
[CONTROLS]
LINK PMP1 OPEN   IF NODE T1 BELOW 3.0
LINK PMP1 CLOSED IF NODE T1 ABOVE 11.0
⚠️
The single most disorienting flip for a SWMM veteran: the SWMM pump turns ON when its wet well (suction side) fills up. The EPANET pump turns ON when its tank (discharge side) runs low. Same pump, opposite trigger — because the storage swapped sides in section 2.

7️⃣ Patterns — Nearly Identical

🌧 DWF pattern, interval declared
[PATTERNS]
;;Name   Type    Multipliers
Diurnal  HOURLY  0.5 0.6 0.9 1.3 1.5 1.2
🚰 Demand pattern, interval is global
[PATTERNS]
;;Name   Multipliers
Diurnal  0.5 0.6 0.9 1.3 1.5 1.2
🔑
SWMM declares the interval per pattern (HOURLY/DAILY/MONTHLY/WEEKEND); EPANET's interval is a single global Pattern Step. EPANET patterns wrap around automatically when exhausted.

⚙️ The Same Hill, Live — Two Real Engines in Your Browser

The Worked Example tab tells the story; this tab runs it. Both models below are complete, verified input files executed by genuine compiled engines — EPA SWMM 5.2 (Build 5.2.2) and OWA EPANET 2.3.5 — embedded in this page as WebAssembly. Nothing leaves your browser.

🌧 SWMM side — collection

Engine: EPA SWMM 5.2 (Build 5.2.2), WebAssembly build.
Honest label The current EPA desktop release is 5.2.4 (Aug 2023); 5.2.2 is the newest engine published as a browser build. The deltas are bug fixes, not solver changes.

Engine loads on first run.

🚰 EPANET side — supply

Engine: OWA EPANET 2.3.5 via the epanet-js engine build.
OWA 2.3 The version shown after load is read live from the engine with EN_getversion — not a label taken on faith.

Engine loads on first run.

🔑
The claim this app keeps making — storage swaps sides of the pump, so the control logic inverts — is not asserted here. It is measured. Run both sides and read the trigger levels the engines actually produce.

▶️ Run the Models

24 simulated hours each. SWMM takes a few seconds — 17,000+ dynamic-wave steps at Δt = 5 s; EPANET finishes in a blink (~300 quasi-steady solves). If WebAssembly is blocked in an embedded preview, use the deployed copy.

📈 Same Curve, Two Operating Points

Both files carry the identical three-point characteristic — 62 ft shutoff, 300 GPM @ 48 ft, 600 GPM runout @ 25 ft — yet the engines report different pump flows, because the static lifts differ: the SWMM wet well (water at el. 92–96 ft) pushes to an outfall at 128 ft (≈ 32–36 ft of lift → ≈ 440 GPM), while the EPANET source at 90 ft fills a tank riding at 133–141 ft (≈ 43–51 ft → ≈ 290 GPM). One curve, two systems, two operating points — read them off the charts above.

⚠️
And the trap these engines caught during development: SWMM's Type 3 pump curve is entered as (head, flow) pairs — the transpose of EPANET's (flow, head). Same numbers, swapped columns. Feed SWMM the EPANET column order and the lookup reads garbage. The Worked Example tab's snippets show the correct orientation for each dialect.

EPANET Questions → SWMM5 Answers

Common EPANET scenarios explained through your SWMM5 experience:

No matching questions found. Try different keywords.