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.

To learn more, visit the US EPA SWMM website.
Latest Official Version of US EPA SWMM
Version: 5.1.012
Release Date: March 30, 2017
Download Size: 4.76 MB

SWMM 5 Versions

SWMM 5.1.012 March, 2017

Released: March 30, 2017
Download Size: 4.76 MB

New features

  1. The direct.h header is now only #included in the swmm5.c file when compiled for Windows. (swmm5.c)
  2. 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)
  3. 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)
  4. A bug that failed to limit surface inflitration into a saturated rain garden LID unit was fixed. (lidproc.c)
  5. Calculation of the maximum limit on LID drain flows was modified to produce smoother results at low depths above the drain offset. (lidproc.c)
  6. A variable used for reporting detailed LID results is now properly initialized. (lid.c & lid.h)
  7. The occasional writing of duplicate lines to the detailed LID results file was fixed. (lidproc.c)
  8. 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)
  9. 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)
  10. The Engels flow equation for side flow weirs was corrected (the original equation used in SWMM 3 & 4 was incorrect). (link.c)
  11. Crest length reductions for end contractions are no longer used for trapezoidal weirs. (link.c)
  12. The Slope Correction Factor for culverts with mitered inlets was corrected. (culvert.c)
  13. An entry in the table of gravel roadway weir coefficients was corrected. (roadway.c)
  14. The user supplied minimum slope option is now initialized to 0.0 (meaning none is provided). (project.c)
  15. 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)
  16. Changes were made so that the Routing Events and Skip Steady Flow options work correctly together. (routing.c & globals.h)
  17. Steady state periods with no flow routing no longer contribute to the routing time step statistics. (stats.c and report.c)
  18. When compiling statistics on the frequency of full conduit flow the number of barrels is now accounted for. (stats.c)
  19. 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)
  20. 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

New features

  1. 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.
  2. 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.
  3. 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.

Other improvements

  1. 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).
  2. The new format for precipitation amounts in rainfall files downloaded from the NCDC's Climate Data Online service are now recognized.
  3. Monthly adjustments for hydraulic conductivity are now also applied to the internal Green-Ampt "Lu" parameter which varies with the square root of conductivity.
  4. A check was added to insure that subcatchment imperviousness does not exceed 100 percent.
  5. Runoff time steps are now adjusted to stay aligned with the Report time step (making model validation easier).
  6. A time step correction was made when computing the outflow volume produced by an outfall that sends its outflow back onto a designated subcatchment.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. Node surcharging is now only reported for dynamic wave flow routing and storage nodes are never classified as surcharged.
  13. 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.

Bug fixes

  1. The error codes returned by the API functions (swmm_open, swmm_start, swmm_step, etc.) were corrected.
  2. 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.
  3. A redundant unit conversion of max. reported depth from the Node Depth Summary table was removed.
  4. A failure to convert a storage unit's surface area curve from metric to internal units when computing bottom exfiltration was fixed.
  5. 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.
  6. A failure to convert a Roadway Weir's road width that was in metric units was fixed.
  7. A bug that caused the saved link settings read from a hot start file to be incorrect in a model containing pollutants was fixed.
  8. A refactoring bug that affected water quality mass balance results for Steady Flow routing was fixed.
  9. 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.
  10. Microsoft exception handling statements are now only enabled when the engine is compiled with the Microsoft C compiler.

Potential bugs

  1. 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.
  2. When events are used, maximum routing time step can be more than specified routing time step.
  3. 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

New features

  1. 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.
  2. 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.
  3. 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.
  4. Unsaturated hydraulic conductivity ("K") was added to the list of variables that can be used in a user-supplied groundwater flow equation.

Other improvements

  1. 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.
  2. Daily potential evapotranspiration (PET) was added as a system output variable.
  3. The qualrout.c module was refactored to make it more compact and easier to follow.
  4. Storage seepage and evaporation losses are now based on the storage volume at the end, not the start, of the prior time step.
  5. 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.

Bug fixes

  1. 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.
  2. A bug that failed to properly initialize the flag indicating that one or more LID controls was initially wet was fixed.
  3. Duplicate printing of the first line of an LID detailed report file was corrected.

Documented bugs

  1. Maximum reported depth incorrect for SI units
  2. Rain garden has no infiltration
  3. Issue with hotstart files
  4. LID evaporation occurs only during dry weather
  5. Side slope for transverse weir issue

SWMM 5.1.009 April, 2015

Released: April 30, 2015
Download Size: 4.66 MB


  1. A new warning message was added for when a control rule premise compares two different types of variables.
  2. For quality routing the definition of a dry conduit/storage node was changed to <= 1 mm of depth to avoid concentrations from blowing up due to evaporation losses.

Bug fixes

  1. A re-factoring bug that prevented running simulations longer than 68 years was fixed.
  2. An input parsing error that prevented the program from recognizing a comparison between two variables in a control rule premise was fixed.
  3. When implementing 5.1.008 update 12, the runon to a subcatchment fully occupied by LIDs was not being included in the subcatchment's Summary Report.
  4. A bug was fixed that allowed LID units to return outflow to a subcatchment's pervious area even though LIDs occupied the entire subcatchment.
  5. The units label for Total Inflow Volume in the Node Inflow Summary table of a saved report file was corrected.

Documented bugs

  1. Missing groundwater recharge from LID infiltration.

SWMM 5.1.008 April, 2015

Released: April 02, 2015
Download Size: 4.63 MB

New features

  1. Monthly adjustments for hydraulic conductivity used for rainfall infiltration and for exfiltration from storage nodes and conduits was added.
  2. LID drains can now send their outflow to a different node or subcatchment than the parent subcatchment in which they were placed.
  3. Conveyance system Outfall nodes now have the option to send their outflow onto a subcatchment, to simulate irrigation or complex LID treatment options.
  4. 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.
  5. 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.
  6. 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.
  7. A Groundwater Summary table has been added that reports several groundwater statistics for each subcatchment.
  8. 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.
  9. 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.
  10. 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.
  11. 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.

Other Improvements

  1. 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.
  2. Storage node HRT was added to the state variables saved in the Hot Start file.
  3. The threshold value for reporting a non-zero runoff result was changed from 0.001 cfs to 0.001 inches/hr.
  4. The calculation of overall flow routing mass balance was modified to account for cases where some flow streams, like total external inflow, are negative.
  5. 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.
  6. The "Internal Outflow" label in the Flow Routing Continuity Report was replaced with "Flooding Losses" to improve clarity.
  7. 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.
  8. 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.
  9. 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.
  10. The final runoff and routing time steps are adjusted to insure that the simulation's total duration is not exceeded.
  11. 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.

Bug fixes

  1. 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.
  2. The runoff read from a Hot Start file should have been assigned to a subcatchment's newRunoff property, not to oldRunoff.
  3. An indexing bug that caused Hot Start files with snowmelt parameters to be read incorrectly was fixed.
  4. The setting for a non-conduit link read from a Hot Start file was not being used to initialize the link.
  5. A bug in adjusting snowmelt for snow covered area derived from an areal depletion curve was fixed.
  6. Snowmelt should not have been included in the total precipitation reported for a subcatchment since the snowfall which produced it was already accounted for.
  7. 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.
  8. 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.
  9. 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.
  10. Failure to initialize groundwater evaporation loss to 0 was causing problems with the reported groundwater mass balance for subcatchments that had no pervious area.
  11. Excessive continuity errors for systems having conduits with large seepage rates was fixed.
  12. Pollutant loss through seepage in conduits and storage nodes was not being included in the mass balance calculations.
  13. Concentrations in conduits and storage nodes were not being increased to account for loss of water volume when evaporation was occurring.
  14. Premature exiting of the routine that checks for capacity limited links whenever a non-conduit link was encountered was fixed.
  15. A bug in identifying the percent of time that a conduit has either end full was fixed.
  16. A re-factoring bug that prevented surcharged weirs (see Update 5 for 5.1.007) from passing any flow was fixed.
  17. 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

New features

  1. A new feature that provides monthly adjustments for temperature, evaporation rate, and rainfall was added.
  2. Support for reading the new GHCN-Daily climate data files available from NCDC's Climate Data Online service was added.
  3. In addition to lateral groundwater flow, a custom equation can now also be used for seepage flow to a deeper groundwater aquifer.
  4. 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.
  5. 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.

Other improvements

  1. 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.
  2. The formula used to recover infiltration capacity during dry periods for the Modified Horton method was revised.
  3. All of the Green-Ampt infiltration functions were re-factored to make the code easier to follow.
  4. 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.
  5. Most of the LID simulation routines were modified to provide more accurate results under flooded conditions.
  6. Results written to the detailed LID results report now always correspond to a full reporting time step.

Bug fixes

  1. The initial cumulative infiltration into the upper soil zone for Green-Ampt infiltration had been incorrectly set to the maximum value instead of zero.
  2. 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).
  3. 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.
  4. Flow and pollutant routing mass balance accounting was modified to correctly handle negative external inflows.
  5. The procedure for computing the area available for seepage out of a storage node that has a tabular storage curve was corrected.
  6. 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).

Documented bugs

  1. Subcatchment runoff under reported for long durations of very small flows (<0.001cfs) issue.
  2. Custom groundwater flow equation variable name issue.
  3. Conduit capacity limited check issue.
  4. Surcharged weirs compute flow incorrectly.
  5. Empty detailed LID reports issue.
  6. Detailed LID report time step in minutes, not hours.
  7. Large conduit seepage rates can generate high continuity error.
  8. Hourly evaporation time series can stop a SWMM run.


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.

SWMM4.4h (2005.10) (5.9MB)
SWMM4.4h (2005.07) (5.9MB)
SWMM4.4h (2004.07) (5.6MB)
SWMM4.4h (2003.07) (5.2MB)
SWMM4.4h (2002.05) (1.4MB)
SWMM4.4h (2001.05) (5.0MB)
SWMM4.4gu (1999.11) (5.2MB)
SWMM4.4 (1997.08) (5.2MB)

SWMM 4.31 [1997.01] - Oregon State University BETA version

Posted by Dr. Wayne Huber from Oregon State University, it contains updates and bug-fixes not included in the official SWMM4 release below.

SWMM4.31 (1997.01) (2.4MB)

SWMM 4.3 [1994.05] - Official US EPA version

This version is the official release of the older SWMM4 program, but it's somewhat out of date. The zipped file contains the self-installing program, support files, example files, and release notes.

SWMM4.3 (1994.05) (2.5MB)