8. Project dialogs

The Project menu opens one dialog per section that is not a map object. The menu item and the window it opens:

Menu item Window
Title/Notes… Title / Notes
Options… Simulation Options
Rain Gages… Rain Gages
Curves… Curves
Time Series → Edit… Time Series
Patterns… Time Patterns
Controls… Control Rules
Pollutants… Pollutants
Land Uses… Land Uses
LID Controls…, LID Usage…, Aquifers…, Groundwater…, Snow Packs… chapter 21
Buildup / Washoff…, Land Use Coverages…, Initial Loadings…, Treatment… chapter 21
Unit Hydrographs…, RDII Inflow… chapter 21

Every OK or Apply is one command and one undo step; Cancel or closing the window discards the draft. The same dialogs open from the Project browser's Edit… button and by double-clicking an entry there.

8.1 Title/Notes

The [TITLE] section as free text. Lines beginning with ; and blank lines are not part of the title as the engine reads it (it skips them), so the browser's count is of data lines only.

8.2 Options

[OPTIONS] grouped the way the EPA GUI groups them, then [REPORT], six tabs:

Tab Keys
General FLOW_UNITS (CFS, GPM, MGD, CMS, LPS, MLD), INFILTRATION (HORTON, MODIFIED_HORTON, GREEN_AMPT, MODIFIED_GREEN_AMPT, CURVE_NUMBER), FLOW_ROUTING (STEADY, KINWAVE, DYNWAVE), LINK_OFFSETS (DEPTH, ELEVATION), FORCE_MAIN_EQUATION, MIN_SLOPE, ALLOW_PONDING, SKIP_STEADY_STATE, IGNORE_RAINFALL, IGNORE_SNOWMELT, IGNORE_GROUNDWATER, IGNORE_RDII, IGNORE_ROUTING, IGNORE_QUALITY
Dates START_DATE, START_TIME, REPORT_START_DATE, REPORT_START_TIME, END_DATE, END_TIME, SWEEP_START, SWEEP_END, DRY_DAYS
Time Steps REPORT_STEP, WET_STEP, DRY_STEP, ROUTING_STEP, RULE_STEP
Dynamic Wave LENGTHENING_STEP, VARIABLE_STEP, MINIMUM_STEP, INERTIAL_DAMPING (NONE, PARTIAL, FULL), NORMAL_FLOW_LIMITED (SLOPE, FROUDE, BOTH), SURCHARGE_METHOD (EXTRAN, SLOT), MIN_SURFAREA, MAX_TRIALS, HEAD_TOLERANCE, SYS_FLOW_TOL, LAT_FLOW_TOL, THREADS
Reporting the [REPORT] section: INPUT (YES makes the engine print its own summary of the model's inputs in the report file, which the Model Report then carries), CONTINUITY, FLOWSTATS, CONTROLS, AVERAGES, and SUBCATCHMENTS / NODES / LINKS (ALL, NONE or a list of names: what the results file holds; with no line at all it holds none of that kind). A list the file spreads over several lines, as the EPA interface writes long ones, shows here as one list. An edited list replaces all of those lines. The map's right-click Results File submenu edits the same lists from a selection (§3.6)
Files the [FILES] section as text (USE/SAVE RAINFALL/RUNOFF/HOTSTART/RDII/INFLOWS/OUTFLOWS lines)

A key the file does not have is written when you set it; a key it has keeps its spelling and its place, including the blank-line grouping the GUI writes. Every value is written as text; the engine's own rules for each (UM §3.4 and Appendix D [OPTIONS]) decide what is valid.

Three of these change how AquaSWMM itself reads the file:

The unit-switch wizard. Changing FLOW_UNITS changes only a keyword: the engine reads every number in the file as if it were already in the new system. So when you OK a change of FLOW_UNITS, the Flow units changed window opens and says so (FLOW_UNITS is now CMS (was CFS).). A change within one system (CFS to GPM) affects only flow-valued fields; a change of system (US customary to SI) affects lengths, areas, depths, rates and coefficients as well. The wizard lists each group of values the engine does not convert, with how many rows it would touch:

Node elevations and depths · Conduit geometry · Weirs, orifices, outlets · Storage units · Pump start/stop depths · Subcatchment area, width, storage · Infiltration parameters · Rain gage time series · External inflows · Dry-weather flows · Evaporation · Curves (by type).

Tick what to convert and click Convert ticked: one undo step, using 1 ft = 0.3048 m, 1 acre = 0.40468564 ha, 1 in = 25.4 mm, 1 cfs = 0.028316847 m³/s = 448.83117 gpm = 0.64631689 mgd. Manning's n is the same in both systems; orifice discharge coefficients are dimensionless; weir coefficients are not (3.33 ft^0.5/s against 1.84 m^0.5/s) and are in the Weirs, orifices, outlets group. Copy report puts the list on the clipboard; Revert puts FLOW_UNITS back and changes nothing else. §16.7 is the checklist behind the groups.

The offsets note. On the General tab, next to LINK_OFFSETS, a note explains that DEPTH means each link offset is a height above its node's invert and ELEVATION means an absolute elevation, and that the keyword alone changes what every offset means. Changing it offers Convert existing offsets with the node inverts (same undo step): every InOffset/OutOffset is rewritten with its node's invert (conduits from the from-node and to-node; orifices, weirs and outlets from their inlet node) so the pipes stay where they are. Leave it unticked only if the numbers in the file are already in the new convention.

8.3 Rain Gages

The list of [RAINGAGES] on the left; + adds one (Add a rain gage), − deletes the chosen one. The fields are the row's columns: Format (INTENSITY, VOLUME, CUMULATIVE), Interval, SCF, Source (TIMESERIES with a series picker, or FILE with a file name, station id and rain units).

A new gage has no map position: SWMM reads the gage's row and the subcatchments that name it, never where its symbol sits. Place on Map closes the dialog and puts the chosen gage (or moves it) wherever you click next, as one undo step; Escape cancels. A placed gage draws, selects and drags like any other symbol.

8.4 Curves

[CURVES]. + adds a curve (Add a curve), − deletes. Choose the Type: STORAGE, SHAPE, DIVERSION, TIDAL, PUMP1–PUMP5, RATING, CONTROL, WEIR. The points are a draft table with Add row, plotted beside it; Apply writes the whole curve back as one undo step, keeping its rows in their place in the file; Revert discards the draft; Close closes. The type is written on the first row only, as the engine expects.

Storage curves by elevation

A STORAGE curve is depth above the storage node's invert against surface area. For a STORAGE curve the dialog has an Enter as elevation section:

Nothing is stored beside the curve: the depths are the model and the elevations are worked out from the node's invert when you ask. Both tools change only the draft; Apply writes the curve as one undo step.

8.5 Time Series

Project → Time Series is a submenu: Edit…, Import…, Export to File….

Edit… — [TIMESERIES]. + adds a series (Add a time series), − deletes. Rows are time value or date time value; edit them in the draft table (Add row) or paste a block into Paste rows and click Replace with pasted or Append pasted. From an external file turns the series into a FILE reference the engine reads at run time (UM §11.5 for the file format). Apply writes the series back; Revert; Close. The plot under the table draws the draft. Times are the engine's hours:minutes (or days:hours:minutes past 24 h); a series without dates is relative to the simulation start.

Import… — the Import Time Series window. Load file… or paste a delimited table: a date column, a time column (or a combined date time cell), and one value column per series, so a hundred radar cells import as a hundred series in one go. Detected without options: comma, tab, semicolon or space delimiters; an optional header row; dates M/D/YYYY, MM/DD/YYYY, YYYY-MM-DD, YYYYMMDD, D.M.YYYY; times H:MM or HH:MM:SS; a table with no date column is a relative series. A NOAA GHCN-Daily station csv (STATION, DATE, PRCP in tenths of a millimetre) is recognised and imported as a daily VOLUME series. Names longer than SWMM's limit are cut and suffixed, and the preview says so. Tick Also add a rain gage per series (and place on the map) to get [RAINGAGES] rows whose format and interval match; click Import. One undo step.

Export to File… — the Export Time Series to File window: choose a series, Save As… writes it as SWMM's external time-series file (date time value lines with ; comments), and, when asked, replaces its rows in the .inp with a FILE reference. For series too long to keep in the model.

8.6 Patterns

[PATTERNS]. + adds (Add a pattern), − deletes. Kind is MONTHLY (12 factors), DAILY (7), HOURLY (24) or WEEKEND (24); the table has that many cells. Apply, Revert, Close as for curves.

8.7 Controls

The [CONTROLS] section as text, with OK and Cancel. The rule syntax is the engine's (UM §3.3 and Appendix C); AquaSWMM does not parse it, except that a rename patches the object name after NODE, LINK, PUMP, ORIFICE, WEIR, OUTLET, CONDUIT or GAGE. Each IF needs its own RULE name line; a second IF inside a rule is the usual cause of the engine's clause invalid or out of sequence error (chapter 16).

8.8 Pollutants and Land Uses

[POLLUTANTS] and [LANDUSES] as grids with OK and Cancel. The related [BUILDUP] and [WASHOFF] rows are edited per land use in Project → Buildup / Washoff… (§21.7), [COVERAGES] and [LOADINGS] per subcatchment (§21.8, §21.9) and [TREATMENT] per node (§21.10).

8.9 Design Storm…

Builds a hyetograph and writes it as a [TIMESERIES] plus a [RAINGAGES] row in one undo step. The Distribution choices, each with its source printed on the dialog:

Distribution Inputs Source
NRCS (SCS) 24-hour Type I / IA / II / III 24-hour depth, time step NRCS TR-20 tabular distributions; NEH 630 Ch. 4 (2019) §630.0403, fig. 4-36
NRCS NOAA Atlas 14 regional 24-hour (A–D) region, 24-hour depth, time step NEH 630 Ch. 4 §630.0408, fig. 4-72 ratios, nested (no WinTR-20 smoothing)
Alternating block from an IDF curve a, b, c, duration, time step Chow, Maidment & Mays, Applied Hydrology §14.4
Alternating block from a NOAA Atlas 14 PFDS row the PFDS csv (fetched from NOAA or pasted), return period, duration, time step depths from the PFDS csv; same method
Chicago (Keifer–Chu) from an IDF curve a, b, c, peak position r, duration, time step Keifer & Chu (1957)
Uniform depth, duration, time step constant intensity

The plot shows the hyetograph and its cumulative curve; the table lists each interval; the line under them totals the depth and names the peak. Name the Series and the Gage, choose the Series format (INTENSITY or VOLUME), and optionally Assign to every subcatchment (or to the selected ones) and Place the gage symbol on the map. Add to Model writes it all. Depths are in the model's rain unit — inches for a CFS/GPM/MGD model, millimetres otherwise — and nothing is converted. §15.7 has the equations.

Fetch from NOAA (PFDS)

With Alternating block from a NOAA Atlas 14 PFDS row, the dialog can ask NOAA for the table instead of you pasting it:

Fetching needs a licence or trial, like Download DEM. The PFDS data are a U.S. Government work in the public domain.

The NRCS NOAA Atlas 14 regional distribution's region (A–D) stays your choice. NEH 630 Ch. 4 draws the regions as a map, not as a table of states, counties or coordinates, so AquaSWMM does not infer a region from the location: doing so would mean digitising region boundaries the handbook does not publish as data.

Observed Rainfall (MRMS)…

Project → Observed Rainfall (MRMS)… writes the rain that fell, hour by hour, as a dated [TIMESERIES] and a [RAINGAGES] row in one undo step, for running a model against a real event.

The rain is NOAA's Multi-Radar Multi-Sensor precipitation, MultiSensor QPE 1H Pass 2: radar corrected by rain gauges, on 1 km cells, over the contiguous United States, from 14 Oct 2020. Each hour is published about an hour after it ends.

Timing. An MRMS file stamped HH:00 holds the hour ending at HH:00 UTC. SWMM applies a series value to the interval starting at its time. Each row is therefore written at the start of its hour, in the local standard time typed, and the series comment says so.

What is missing is said, not hidden. A negative value in the data means no coverage or bad data; such an hour is counted and written as no rain, never taken as zero silently. An hour Pass 2 does not have (not out yet, or a gap in the archive) is taken from Pass 1, NOAA's earlier gauge-corrected run with fewer gauges; those hours are counted in the dialog, the status line and the series comment.

Depths are written in the model's rain unit: inches for a CFS/GPM/MGD model, millimetres otherwise. Fetching needs a licence or trial and the internet.

8.10 Compute Conduit Lengths…

The geometric length of every conduit from the map against its stored Length, with a factor from [MAP] Units, and one batch that writes the ticked ones. Described in §3.10. Nothing runs on its own: drawing writes a length once and nothing touches it again until you ask.

Compute Subcatchment Widths…

Width for every subcatchment by one of three rules, previewed beside the stored width, and one batch (one undo step) that writes the ticked ones:

Method Width
Area ÷ flow length A / L
K × flow length K · L
K × √Area K · √A

A is the stored Area in ft² (acres × 43,560) or m² (hectares × 10,000). L is measured on the map, times the same map-units factor as Compute Conduit Lengths: from the outlet node to the farthest corner of the outline, or the outline's longest corner-to-corner span where the outlet is a subcatchment or has no coordinates. The Flow length column says which.

L is a straight line to the outlet, so it includes any gutter, channel or pipe travel. True sheet flow is usually shorter (rarely more than about 500 ft), so A / L from this tool tends to give a narrower width and a slower response than a sheet-flow length would. Treat the result as a starting value to calibrate, as §16.8 describes. With a selection of subcatchments, only they are ticked (Selected subcatchments only, on by itself when there is a selection).

Compute Curve Numbers…

An area-weighted SCS curve number for every subcatchment from the land cover and soils downloaded with File → Download Land Cover (NLCD 2021)… and File → Download Soils (SSURGO)… (§19.13, §19.14), previewed beside the stored CurveNum, and one batch (one undo step) that writes the ticked ones. The curve numbers are those of TR-55 (USDA Soil Conservation Service, Urban Hydrology for Small Watersheds, Technical Release 55, 2nd ed., June 1986), Tables 2-2a to 2-2d, for antecedent runoff condition II.

How the composite is made. Each outline is sampled on a regular grid: the land-cover cell (30 m), or finer for a small subcatchment so that it gets at least 100 samples (and no more than 250,000). Each sample takes the NLCD class under it and the SSURGO polygon it falls in; its CN is the TR-55 value for that class's cover row and that polygon's group. The composite is the mean over the samples where both are known, which is the area-weighted CN of that part of the subcatchment.

Area with data is that part as a percentage. The rest — a map unit with no hydrologic group (Urban land, water), an area SSURGO has not surveyed, or ground outside the downloaded extent — is left out, not estimated. A composite over 60 % of the area is a composite of that 60 %: look at the column before applying, and treat a low figure as a site that needs its soils from somewhere else (a geotechnical report, the soil survey text, a judgement for fill).

No soil group. SSURGO gives no hydrologic group to Urban land and similar map units, and there are gaps with no soil polygon at all. In a built-up area that can be most of a subcatchment: in a test near uptown Charlotte, 82 % of one outline was Urban land. No soil group chooses what happens there: leave out (the default) computes the CN over the rest of the outline only, and the % data column says how much that is; treat as A–D assumes that group there (C or D is usual for disturbed urban soil, but it is an assumption, and it is yours). A known group is never overridden. A subcatchment with under 50 % of its area covered is shown but not ticked by itself.

Dual groups (A/D, B/D, C/D). NRCS gives the first letter for the soil drained and the second (D) for it undrained (NEH Part 630, chapter 7). Undrained (D), the default, uses D, the conservative choice without evidence of drainage. Drained (A, B or C) uses the first letter; use it only for a site known to be drained.

NLCD class → TR-55 cover. NLCD classes are not TR-55 cover types, so each class is assigned one TR-55 row. The assignment is a judgement; it is shown under NLCD class → TR-55 cover, each row can be changed there (any of the 36 rows of Tables 2-2a to 2-2d, or the one wetland row marked not TR-55, with its A–D values beside it), and TR-55 defaults restores these:

NLCD class TR-55 row (table) A B C D Why
11 Open Water Impervious areas (2-2a) 98 98 98 98 TR-55 has no water row; a water surface sheds all rain
12 Perennial Ice/Snow Impervious areas (2-2a) 98 98 98 98 As water
21 Developed, Open Space Open space, fair condition (2-2a) 49 69 79 84 Mostly lawn, under 20 % impervious
22 Developed, Low Intensity Residential 1/4 acre, 38 % impervious (2-2a) 61 75 83 87 20–49 % impervious
23 Developed, Medium Intensity Residential 1/8 acre or less, 65 % impervious (2-2a) 77 85 90 92 50–79 % impervious
24 Developed, High Intensity Commercial and business, 85 % impervious (2-2a) 89 92 94 95 80–100 % impervious
31 Barren Land Newly graded areas (2-2a) 77 86 91 94 Bare, no vegetation
41, 42, 43 Forest Woods, fair condition (2-2c) 36 60 73 79 Condition unknown: fair
52 Shrub/Scrub Brush, fair condition (2-2c) 35 56 70 77 In the arid West, Desert shrub (2-2d) fits better
71 Grassland/Herbaceous Pasture, grassland, or range, fair (2-2c) 49 69 79 84
81 Pasture/Hay Pasture, grassland, or range, fair (2-2c) 49 69 79 84
82 Cultivated Crops Row crops, straight row, good (2-2b) 67 78 85 89 Practice unknown: straight row
90 Woody Wetlands Wetland, saturated ground (not TR-55) 87 94 97 98 TR-55 has no wetland row. These are the values the HydroCN plugin uses for saturated ground; Woods, fair (2-2c) is the TR-55 row nearest in cover if the wetland drains
95 Emergent Herbaceous Wetlands Wetland, saturated ground (not TR-55) 87 94 97 98 As 90; Pasture, fair (2-2c) is the nearest TR-55 row

"Fair" is used where NLCD says nothing about condition. Change it where the site is known.

Writing. The CN is written to [INFILTRATION] CurveNum, to one decimal. That column exists only under [OPTIONS] INFILTRATION CURVE_NUMBER. Under another method the dialog says so, ticks nothing, and offers Switch to CURVE_NUMBER: one undo step that sets the option and rewrites every [INFILTRATION] row as CurveNum Conductivity DryTime (a curve-number row keeps its CN; others start at 80, conductivity 0.5 and the old DryTime where the method had one, else 7), adding a row for any subcatchment without one. Undo puts the old method and rows back. A row that names its own method (a trailing keyword) other than CURVE_NUMBER is shown as another method and is not written.

% Impervious (off by default). Also set % Impervious from NLCD developed classes writes PctImperv too: the area-weighted midpoint of each class's impervious range in MRLC's class definitions — 21: 10, 22: 35, 23: 65, 24: 90, every other class 0 — over the part of the outline with a land-cover class (soils are not needed for it). SWMM applies the curve number to the pervious part of a subcatchment only, while the TR-55 rows for 22–24 are composites that already include TR-55's assumed impervious share. With % Impervious set this way, press Developed as open space (21–24 to Open space, fair) so the impervious area is not counted twice.

With a selection of subcatchments, only they are ticked. Rows whose composite differs from the stored value (or has none) are ticked.

Assign Rain Gages…

Each subcatchment to the rain gage nearest its area centroid, which puts it in the Thiessen polygon its centroid falls in. The centroid is the outline's area centroid, not the average of its corners (a detailed edge would drag that toward itself). Gages without map coordinates take no part. Rows whose nearest gage differs from the current one are ticked; one batch writes them.

This tool assigns one gage to each subcatchment. It does not blend gages by inverse distance: for that, build a weighted series and a gage for it.

Dry Weather Flow Generator…

[DWF] FLOW rows for junctions from a population and a per-capita rate, previewed, and one batch (one undo step) that writes them.

The baseline written is the average flow, population × rate, converted to FLOW_UNITS:

FLOW_UNITS Baseline from P × q per day
CFS gallons × 231/1728 ft³ ÷ 86,400 s
GPM gallons ÷ 1,440 min
MGD gallons ÷ 10⁶
CMS litres ÷ 1,000 ÷ 86,400 s
LPS litres ÷ 86,400 s
MLD litres ÷ 10⁶

For example 1,000 people at 100 gal/cap/day is 0.15472 cfs, 69.444 gpm or 0.1 MGD. Baselines are written to five significant figures.

No peaking factor is applied. Peaks come from time patterns, which SWMM multiplies the baseline by: choose an existing Hourly pattern and Daily pattern, or tick Add a generic example diurnal pattern named and give it a name, to add a new HOURLY pattern of 24 multipliers averaging 1.0 (low overnight, 1.5 at 09:00 and 19:00) and use it. That pattern is a generic shape for trying a model; it is not from any agency or measured record, and its first row carries a comment saying so. Replace it with a pattern from local flow monitoring.

The preview lists each junction's current DWF FLOW row(s) and whether the new row adds or replaces. A junction's existing FLOW rows are replaced: the first is rewritten in place (keeping its comment) and any further FLOW rows for it are removed. DWF rows for pollutants are not touched.

8.11 Backdrop and Map Dimensions

View → Backdrop → Load Image…, Georeference…, Show, Remove; and View → Map Dimensions…. They edit [BACKDROP] and [MAP]. Described in §3.9.

8.12 LID, groundwater, snow, water quality and RDII

[LID_CONTROLS], [LID_USAGE], [AQUIFERS], [GROUNDWATER], [GWF], [SNOWPACKS] (with [TEMPERATURE] and [ADJUSTMENTS]), [BUILDUP], [WASHOFF], [COVERAGES], [LOADINGS], [TREATMENT], [HYDROGRAPHS] and [RDII] each have a dialog on the Project menu's second group, and the per-object ones open from the subcatchment and node property sheets. Chapter 21 describes every field.

8.13 What has no dialog

[EVAPORATION], [TRANSECTS], [STREETS], [INLETS], [REPORT], [PROFILES], [EVENTS]. All are kept byte for byte and listed in the Project browser where they have a node; edit them in a text editor. The engine reads them; AquaSWMM's validator does not check their contents.