EPA's Storm Water Management Model (SWMM) is used throughout the world for planning, analysis and design related to stormwater runoff, combined and sanitary sewers, and other
drainage systems in urban areas. There are many applications for drainage systems in non-urban areas as well.
SWMM is a dynamic hydrology-hydraulic water quality simulation model. It is used for single event or long-term (continuous)
simulation of runoff quantity and quality from primarily urban areas. The runoff component operates on a collection of
sub catchment areas that receive precipitation and generate runoff and pollutant loads. The routing portion transports this runoff
through a system of pipes, channels, storage/treatment devices, pumps, and regulators.
SWMM tracks the quantity and quality of runoff made within each sub catchment. It tracks the flow rate, flow depth, and quality of water
in each pipe and channel during a simulation period made up of multiple time steps.
SWMM also models the hydrologic performance of specific types of low impact development (LID) controls.
The direct.h header is now only #included in the swmm5.c file when compiled for Windows. (swmm5.c)
Engine Update #7 in Build 5.1.011 (internally aligning the wet time step with the reporting time step) was redacted since it caused problems for certain combinations of time steps. (runoff.c)
A subcatchment's bottom elevation is now used instead its parent aquifer's value when saving a water table value to the binary results file. (subcatch.c)
A bug that failed to limit surface inflitration into a saturated rain garden LID unit was fixed. (lidproc.c)
Calculation of the maximum limit on LID drain flows was modified to produce smoother results at low depths above the drain offset. (lidproc.c)
A variable used for reporting detailed LID results is now properly initialized. (lid.c & lid.h)
The occasional writing of duplicate lines to the detailed LID results file was fixed. (lidproc.c)
The conversion from conduit seepage rate per unit area to rate per unit of length was changed to use top width instead of wetted perimeter since only vertical seepage is assumed to occur. (link.c)
The coefficient of the evaporation/seepage term in the dynamic wave equation for updating conduit flow was corrected (from 1.5 to 2.5). (dwflow.c)
The Engels flow equation for side flow weirs was corrected (the original equation used in SWMM 3 & 4 was incorrect). (link.c)
Crest length reductions for end contractions are no longer used for trapezoidal weirs. (link.c)
The Slope Correction Factor for culverts with mitered inlets was corrected. (culvert.c)
An entry in the table of gravel roadway weir coefficients was corrected. (roadway.c)
The user supplied minimum slope option is now initialized to 0.0 (meaning none is provided). (project.c)
NO/YES are no longer accepted as attributes for the NORMAL_FLOW_LIMITED dynamic wave simulation option (only SLOPE/FROUDE/BOTH are valid). (project.c)
Changes were made so that the Routing Events and Skip Steady Flow options work correctly together. (routing.c & globals.h)
Steady state periods with no flow routing no longer contribute to the routing time step statistics. (stats.c and report.c)
When compiling statistics on the frequency of full conduit flow the number of barrels is now accounted for. (stats.c)
Under kinematic wave or steady flow routing, the water level in storage nodes that have no outflow links is now updated correctly over time. (flowrout.c)
The formula for the depth at maximum width for the Modified Basket Handle cross section was corrected. (xsect.c)
SWMM 5.1.011 September, 2016
Released: September 07, 2016
Download Size: 4.75 MB
Detailed flow routing can now be restricted to a set of pre-defined event periods. The event periods are listed in an [EVENTS] section of the SWMM input file, where each line contains a start date, start time, end date and end time for each event.
A bottom Seepage Rate can now be specified for Rain Garden LID controls. This fixes the problem of having no inflitration out of a Rain Garden.
Rule premises can now include SIMULATION DAYOFYEAR as a condition, where day of year is either in month/day format or a number between 1 and 365.
New functions, swmm_getError() and swmm_getWarnings(), were added to the API used for interfacing SWMM with other applications (see the updated Interfacing Guide for details).
The new format for precipitation amounts in rainfall files downloaded from the NCDC's Climate Data Online service are now recognized.
Monthly adjustments for hydraulic conductivity are now also applied to the internal Green-Ampt "Lu" parameter which varies with the square root of conductivity.
A check was added to insure that subcatchment imperviousness does not exceed 100 percent.
Runoff time steps are now adjusted to stay aligned with the Report time step (making model validation easier).
A time step correction was made when computing the outflow volume produced by an outfall that sends its outflow back onto a designated subcatchment.
The LID routines were modified so that native soil infiltration is satisfied first when it occurs along with underdrain flow, instead of the other way around.
The allowable offset height for an LID underdrain is no longer limited to the top of the storage layer thus allowing upturned drains to be modelled.
The detailed LID report file now lists results by both date/time and elapsed hours and reports water level instead of moisture content for permeable pavement.
If the offset of the opening of a regulator link is below its downstream node invert it is now raised to the invert level and a warning message is still issued.
A weir with an open rectangular shape and non-zero slope parameter will no longer generate an input error message - the slope value is now ignored.
Node surcharging is now only reported for dynamic wave flow routing and storage nodes are never classified as surcharged.
The Status Report no longer lists control actions taken by modulated controls since they occur continuously over time and can produce an enormous number of actions.
The error codes returned by the API functions (swmm_open, swmm_start, swmm_step, etc.) were corrected.
An illegal array index bug that could occur when checking the pump curve type for an Ideal Pump in dynamic wave flow routing was fixed.
A redundant unit conversion of max. reported depth from the Node Depth Summary table was removed.
A failure to convert a storage unit's surface area curve from metric to internal units when computing bottom exfiltration was fixed.
A bug that caused a link's TIMEOPEN variable (used in control rule conditions) to be re-set to 0 when its setting changed from one partly opened state to another was fixed.
A failure to convert a Roadway Weir's road width that was in metric units was fixed.
A bug that caused the saved link settings read from a hot start file to be incorrect in a model containing pollutants was fixed.
A refactoring bug that affected water quality mass balance results for Steady Flow routing was fixed.
The function that decodes the fractional part of a date/time value into hours:minutes:seconds was modified so that rounding doesn't cause the time to exceed 24 hours.
Microsoft exception handling statements are now only enabled when the engine is compiled with the Microsoft C compiler.
When the new events feature is used, computation of seepage/evaporation is continued during inter-event periods for storages/conduits, resulting in high routing continuity error reported.
When events are used, maximum routing time step can be more than specified routing time step.
Under some combinations of reporting/runoff time steps, detailed LID reports are not created.
SWMM 5.1.010 August, 2015
Released: August 05, 2015
Download Size: 4.74 MB
A modified version of Green-Ampt infiltration (MODIFIED GREEN AMPT) was added that no longer redistributes upper zone moisture deficit during low rainfall events. The original authors of SWMM's Green-Ampt model have endorsed this modified version. It will produce more infiltration for storm events that begin with low rainfall intensities, such as the SCS design storm distributions.
A new type of weir, a ROADWAY weir, has been added. It models roadway overtopping using the FHWA HDS-5 method and would typically be used in parallel with a culvert conduit.
Rule premises can now test whether a link has been open (or closed) for a specific period of time. See the Help file for more details.
Unsaturated hydraulic conductivity ("K") was added to the list of variables that can be used in a user-supplied groundwater flow equation.
The Hargreaves evaporation forumla was modified to use a 7-day running average of daily temperatures, instead of just single day values, as recommended by the formula's authors.
Daily potential evapotranspiration (PET) was added as a system output variable.
The qualrout.c module was refactored to make it more compact and easier to follow.
Storage seepage and evaporation losses are now based on the storage volume at the end, not the start, of the prior time step.
The command line used to build the engine included in the "makefile" for the GNU C/C++ compiler was corrected to include the OpenMP libraries.
A bug introduced in update 2 of release 5.1.008 that failed to include infiltration from LID units into the groundwater routine was fixed.
A bug that failed to properly initialize the flag indicating that one or more LID controls was initially wet was fixed.
Duplicate printing of the first line of an LID detailed report file was corrected.
Monthly adjustments for hydraulic conductivity used for rainfall infiltration and for exfiltration from storage nodes and conduits was added.
LID drains can now send their outflow to a different node or subcatchment than the parent subcatchment in which they were placed.
Conveyance system Outfall nodes now have the option to send their outflow onto a subcatchment, to simulate irrigation or complex LID treatment options.
A new LID practice, Rooftop Disconnection, has been added. It allows one to explicitly model roof runoff with an optional limit on the flow capacity of their downspouts. Disconnection is specified by setting the Return To Pervious Area field in the [LID_USAGE] section to 1.
An optional soil layer has been added to Permeable Pavement LIDs so that a sand filter or bedding layer beneath the pavement can be modeled.
Several new built-in variable names can now be used in custom groundwater flow equations for porosity, unsaturated hydraulic conductivity, infiltration rate, and percolation rate. See the Help file for more details.
A Groundwater Summary table has been added that reports several groundwater statistics for each subcatchment.
A new option, the Minimum Variable Time Step, was added that limits the smallest time step that can be computed under variable time stepping for dynamic wave flow routing. In previous releases it was fixed at 0.5 seconds which remains the default. The smallest value it can now have is 0.001 sec.
The dynamic wave routing procedure was parallelized to take advantage of multiple processors, making it run several times faster. A new option, THREADS, sets the number of parallel threads to use, where the default is 1.
A new column was added to the Node Depth Summary report table that shows the maximum depth recorded at the Reporting Time Step so it can be compared to the maximum depth attained over all routing time steps also shown in the table.
Control rule premises can now contain conditions that compare the values of a node or link variable at two different locations (e.g. IF NODE 123 HEAD > NODE 456 HEAD) and node volume was added as a condition clause variable.
When a subcatchment with LID controls receives runon from another source (e.g., a subcatchment, LID drain or outfall node) the runon is now distributed only across the non-LID area of the sub- catchment instead of the full area. If a single LID takes up the full subcatchment area then the runon is directed onto the LID.
Storage node HRT was added to the state variables saved in the Hot Start file.
The threshold value for reporting a non-zero runoff result was changed from 0.001 cfs to 0.001 inches/hr.
The calculation of overall flow routing mass balance was modified to account for cases where some flow streams, like total external inflow, are negative.
The "Surface Runoff" label in the Runoff Continuity Report was replaced with "Total Runoff" since the value reported consists of both surface runoff and LID drain flow.
The "Internal Outflow" label in the Flow Routing Continuity Report was replaced with "Flooding Losses" to improve clarity.
The pollutant washoff routines were moved to a new code module (surfqual.c) and revised to account for the reduction in pollutant load that results from runoff flow reduction by LID units.
Initial flows for Steady Flow routing are now ignored since they are not used in the routing calculation and the initial volume associated with them contributed to system mass balance error.
The various types of lateral inflows to conveyance system nodes are now evaluated at the date/time for the start of the routing time step instead of at the end of the time step.
The final runoff and routing time steps are adjusted to insure that the simulation's total duration is not exceeded.
When evaluating user-supplied math expressions, any NaN (Not a Number) result (caused by an underflow, overflow or divide by zero) is set to 0 so that the NaN doesn't propagate through subsequent calculations.
The evaporation rates read from a time series would only change when a new day was reached (even though values at more frequent intervals were present) and could cause a run to stop pre- maturely in some rare cases.
The runoff read from a Hot Start file should have been assigned to a subcatchment's newRunoff property, not to oldRunoff.
An indexing bug that caused Hot Start files with snowmelt parameters to be read incorrectly was fixed.
The setting for a non-conduit link read from a Hot Start file was not being used to initialize the link.
A bug in adjusting snowmelt for snow covered area derived from an areal depletion curve was fixed.
Snowmelt should not have been included in the total precipitation reported for a subcatchment since the snowfall which produced it was already accounted for.
When computing a flow rate through the Drainage Mat of a Green Roof LID unit, the mat's void ratio was being applied to the water depth instead of to the mat's area.
The state of LID controls was not being considered when choosing to use the wet or dry runoff time step which sometimes lead to excessive LID continuity errors.
A re-factoring bug that left reporting time in minutes instead of hours in the detailed LID results file was fixed and results are now written to the file at each runoff time step where the state of the LID unit changes.
Failure to initialize groundwater evaporation loss to 0 was causing problems with the reported groundwater mass balance for subcatchments that had no pervious area.
Excessive continuity errors for systems having conduits with large seepage rates was fixed.
Pollutant loss through seepage in conduits and storage nodes was not being included in the mass balance calculations.
Concentrations in conduits and storage nodes were not being increased to account for loss of water volume when evaporation was occurring.
Premature exiting of the routine that checks for capacity limited links whenever a non-conduit link was encountered was fixed.
A bug in identifying the percent of time that a conduit has either end full was fixed.
A re-factoring bug that prevented surcharged weirs (see Update 5 for 5.1.007) from passing any flow was fixed.
A bug in evaluating recursive calls to nodal water quality treatment functions was fixed.
SWMM 5.1.007 September, 2014
Released: September 15, 2014
Download Size: 4.5 MB
A new feature that provides monthly adjustments for temperature, evaporation rate, and rainfall was added.
Support for reading the new GHCN-Daily climate data files available from NCDC's Climate Data Online service was added.
In addition to lateral groundwater flow, a custom equation can now also be used for seepage flow to a deeper groundwater aquifer.
A new Weir parameter was added that specifies if the weir can surcharge using an orifice equation or not. Surcharging was the only option in SWMM 5.0 but was switched to no surcharging in earlier 5.1 releases. This new parameter accommodates both closed top weirs that can surcharge and open channel weirs that cannot.
Seepage from storage units can now be modeled using Green- Ampt infiltration, which makes the seepage rate a function of storage level. The constant seepage rate option can still be used by setting the G-A initial moisture deficit to 0.
The [GW_FLOW] section of the project file was renamed to [GWF] and its format was changed to accommodate both lateral and deep groundwater flow equations.
The formula used to recover infiltration capacity during dry periods for the Modified Horton method was revised.
All of the Green-Ampt infiltration functions were re-factored to make the code easier to follow.
The calculation of infiltration out of the bottom of a Bio-Retention Cell or Permeable Pavement LID unit with a zero-depth storage layer was corrected.
Most of the LID simulation routines were modified to provide more accurate results under flooded conditions.
Results written to the detailed LID results report now always correspond to a full reporting time step.
The initial cumulative infiltration into the upper soil zone for Green-Ampt infiltration had been incorrectly set to the maximum value instead of zero.
The name of the variable used to represent the height of the receiving channel bottom in a user-defined groundwater flow equation was corrected to match the name displayed in the GUI's Groundwater Editor dialog (Hcb).
A problem with the program crashing when a climate file was used to provide evaporation rates for open channels and storage nodes when runoff was not computed (as when there were no subcatchments in the project) was fixed.
Flow and pollutant routing mass balance accounting was modified to correctly handle negative external inflows.
The procedure for computing the area available for seepage out of a storage node that has a tabular storage curve was corrected.
The function that finds depth as a function of volume from a storage curve was corrected for the case where the depth falls within a portion of the curve where area is constant with depth (i.e., vertical side walls).
The updating of the next time that detailed LID results should be written to file during a simulation was modified to avoid an off-by-one error.
The number of decimal places for hourly evaporation written to a detailed LID report was increased.
The amount of soil water available for evaporation in LID units with soil layers wasn't being limited by the water remaining below the wilting point.
The equation that computes the rate of water infiltrating into permeable pavement LIDs had a misplaced parenthesis.
There was a units conversion error in computing the contribution of a pollutant in direct precipitation to the water quality on a subcatchment.
SWMM 5.1.005 April, 2014
Released: April 23, 2014
Download Size: 4.49 MB
A problem with reading hydraulic results from a hot start file was fixed.
SWMM 5.1.003 April, 2014
Released: April 08, 2014
Download Size: 4.49 MB
A new property, the Upper Zone Evap. Pattern, was added to the Aquifer object. It allows one to adjust the aquifer's upper zone evaporation fraction by month of the year.
A bug in writing/reading RDII flows to the new binary RDII file was fixed.
SWMM 5.1.002 March, 2014
Released: March 31, 2014
Download Size: 4.49 MB
A bug that prevented hotstart files with the latest format from being read was fixed.
Only non-ponded surface area is saved for use in the dynamic wave surcharge algorithm (when water depth is close to the node's crown elevation).
SWMM 5.1.001 March, 2014
Released: March 24, 2014
Download Size: 4.56 MB
SWMM can now read the new file format for precipitation data retrieved online from NOAA-NCDC.
A new choice of infiltration method, the Modified Horton method, has been added. This method uses the cumulative infiltration in excess of the minimum rate as its state variable (instead of time along the Horton curve), providing a more accurate infiltration estimate when low rainfall intensities occur.
RDII interface files created internally by SWMM are now saved in a binary format to reduce storage space. The ASCII text format for these files is still supported for users that find it desireable to create the files outside of SWMM.
Two new categories of LID controls, one for Green Roofs and another for Rain Gardens, have been added so they no longer have to be configured from the Bio-Retention Cell control (although that option still remains). The Green Roof uses a new Drainage Mat layer to store and convey the water that percolates through the soil layer.
Users can now add their own groundwater outflow equation to a subcatchment, to be used in place of or in addition to the standard equation. Similar to treatment functions, the equation can be any mathematical expression that uses the same ground- water variables that appear in the standard equation.
Evaporation of water from open channels has been added.
A new conduit property named Seepage Rate (in/hr or mm/hr) has been added to model uniform seepage along the bottom and sloped sides of a conduit.
Infiltration from storage units is now referred to as seepage, to be consistent with seepage from conduits. The only required parameter is a seepage rate (in/hr or mm/hr). Previous data files that supply a set of Green-Ampt infiltration parameters will still be recognized.
Separate accounting and reporting of evaporation and seepage losses in storage units is now made.
Open rectangular channels now have a new parameter that specifies if one or both side wall surfaces should be ignored when computing a hydraulic radius (to provide improved support for quasi-2D modeling of wide channels and overland flooding).
New Dynamic Wave Analysis options have been added for the maximum number of iterations and head tolerance used at each time step. The percentage of time steps where convergence is not achieved is also now reported.
Users can now set the flow tolerances that determine if flow routing calculations can be skipped because steady state conditions hold.
Control rules can now use a conduit's OPEN/CLOSED status in both premise conditions and action clauses.
The meaning of the link view variable "Capacity" has been changed. For conduits it is now the fraction of the full cross section area filled by the flow, while it is the control setting for all other types of links (the meaning of the control setting varies by link type -- see the Help file or the Users Manual).
The link Froude number view variable has been replaced with the link's flow volume, the subcatchment Losses variable has been replaced by two new variables - Evaporation and Infiltration, and upper groundwater zone Soil Moisture has been added as a new view variable.
The Node Inflows Summary table of the Status Report now includes a new column that lists the mass balance error in volume units for each node.
A new summary table, Link Pollutant Load, has been added that displays the total mass load of each pollutant that flows through each link.
Using a Drain Delay time of 0 for Rain Barrel LIDs now means that the barrel is allowed to drain continuously, even as it is filling during wet weather periods.
The requirement that an impervious surface must be dry (have no more than 0.05 inches of standing water) before it could be subjected to street sweeping has been dropped.
After runoff ceases and a land surface goes dry due to evaporation, any remaining mass of pollutant originating from direct deposition or upstream runon is assumed to be unavailabe for future washoff (it shows up as Remaining Buildup in the mass balance report).
The way that wet weather washoff inflow loads are interpolated across a flow routing time step was modified to produce a better match between the reported total runoff load and total quality routing inflow load.
The method used to select a time step for processing RDII unit hydrographs was modified to consider the case where K (the ratio of rising limb to falling limb duration) is below 1.0.
When the moisture content of the upper groundwater zone reaches saturation, the depth of the lower saturated zone is now set equal to the full aquifer depth (minus a small tolerance).
Conduits with negative slopes whose absolute value is below the Minimum Slope option will have their slope changed to the positive minimum value, thus allowing them to be analyzed using the Steady Flow and Kinematic Wave routing options.
The Avg. Froude Number and Avg. Flow Change columns in the Flow Classification Summary table have been replaced with the fraction of time steps that flow is limited to normal flow and the fraction of time steps that flow is inlet controlled (for culverts).
An error condition now occurs if a pump's startup depth is less than its shutoff depth.
Only the upstream node for orifice and weir links is now checked to see if its maximum depth needs to be increased to meet the top elevation of the orifice or weir opening.
Weirs are no longer allowed to operate as an orifice when they surcharge. Instead any excess flow will flood the upstream node.
A warning message is now written to the Status Report if the crest elevation of a regulator link is below its downstream node's invert.
When a reporting time falls in between a computational time step during which a pump's on/off status changes, the reported pump flow is the value at either the start or end of the time step depending on which is closer to the reporting time (i.e., no interpolation is used).
Control rule conditions can now accept elapsed time or time of day values as decimal hours in addition to hours: minutes:seconds.
The test for a control rule condition equaling a specified elapsed time or time of day was modified to more accurately capture its occurrence.
If the Water Quality analysis option is disabled then the binary results file no longer contains any pollutant values (of 0) for all time periods.
Hot Start files now contain the complete state of the watershed and conveyance system, so that future simulations can start up correctly where they left off.
The following changes to error reporting were made:
Error 319 was re-numbered to 320 and a new Error 319 was added for a rainfall data file with unknown format.
Format errors in external time series files are now listed as Error 363 (invalid data) instead of Error 173 (time series out of sequence).
Warning messages written to the Status Report are now single spaced instead of double spaced. See report.c.
The Link Summary table in the Status Report now lists conduits with negative slopes in their original orientation instead of in their reversed state.
A refactoring bug from 5.0.022 that prevented snowmelt from infiltrating has been fixed.
Snowmelt rate during rainfall conditions and the updating of the antecedent temperature index were were not being converted from the six hour time interval used in Anderson's original NWS snowmelt model to the hourly basis used in SWMM.
A refactoring bug that failed to set the maximum number of characters high enough for a line read from a user-prepared rainfall data file has been fixed.
The optional Maximum Volume parameter for Horton infiltration was not allowing any recovery of infiltration capacity between storm events.
Evaporation from the lower groundwater zone was being computed from the rate remaining after surface and upper zone evaporation was considered instead of from the unadjusted rate (with a reduction afterwards if it exceeds the remaining available rate).
An error in applying the Vegetation Volume Fraction parameter to swales was corrected.
The time from the last rainfall used to determine when a Rain Barrel should begin to empty wasn't being computed correctly.
An erroneous error message for Rain Barrel LIDs with a zero Void Ratio has been fixed (the Void Ratio parameter should be ignored for Rain Barrels).
The display of extraneous infiltration results in detailed reports for Rain Barrel LIDs has been eliminated.
The check on no street sweeping for a subcatchment during wet periods was checking rainfall over the entire study area instead of just the subcatchment.
An erroneous warning message regarding negative offsets for pumps when elevation offsets are used has been eliminated.
A possible divide by zero error for trapezoidal channels with zero bottom width has been eliminated.
A program crash that occurred when the Ignore Routing option was selected and results were to be saved to a Routing Interface file has been fixed.
Projects that had no subcatchments or had the Ignore Runoff switch selected were not able to evaporate water from storage units.
Weekday and weekend hourly time patterns for Dry Weather inflows are now correctly applied in a mutually exclusive manner.
The Node Flooding Summary table in the Status Report now correctly lists the peak depth of ponded water above the node's maximum depth (i.e., its rim or ground elevation) instead of above its invert elevation.
Occasional problems caused by the date/time functions not returning an hour between 0 and 23 (for hourly time patterns) and being off by 1 second (when writing results to outflow interface files) have been fixed.
A bug introduced in release 5.0.017 that caused the concentration after first-order decay in a storage node to be ignored has been fixed.
A bug in the Total Elapsed Time listed at the end of the Status Report for runs taking longer than 24 hours of computer time was fixed.
A correction was made for the slope correction factor used for mitered culvert inlets.
The procedure for finding the surface area of a storage unit given its volume was corrected for the case where the storage curve has a section of decreasing area with depth.
The procedure for finding a cross-section area given a section factor value was corrected for the case where the section factor table does not have its highest value as the last entry in the table.
An error in computing the hydraulic radius of the Rectangular- Triangular conduit shape as a function of flow depth was corrected.
SWMM 4 Versions
SWMM 4.4h [2005.10] - Oregon State University BETA version
This is the last public version of the older SWMM4 available. Posted by Dr. Wayne Huber from Oregon State University, it contains a number of improvements and additional capability (including larger array sizes). Earlier releases of 4.4 are also provided. For more information please click here.