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.2.4
Release Date: August 7, 2023
Download Size: 9.02 MB (64-bit)

SWMM 5 Versions

SWMM 5.2.4 August, 2023

Released: August 07, 2023
Download Size: 9.02 MB

Engine updates

  1. A potential mismatch between reported pollutant Surface Runoff mass and conveyance system Wet Weather Inflow mass in a run's Status Report was fixed.
  2. The test for invalid input data for an LID unit with an underdrain was fixed.
  3. Improvements and corrections were made to the calculation of water flux rates between layers in Bio-Retention, Permeable Pavement, and Infiltration Trench LID units.
  4. The hydraulic head seen by a storage layer underdrain in a Permeable Pavement LID unit with a soil layer above it was corrected.
  5. A bug in retrieving the backing parameters for a Street cross-section was fixed.
  6. The generation of transect points for a Street cross- section with a depressed gutter was corrected.
  7. The calculation of gutter slope for Street links with depressed gutters was corrected.
  8. The calculation of the effective hydraulic head seen within a curb inlet with an inclined throat opening was corrected.
  9. Conduit evaporation and seepage loss over a time step is now limited to the conduit's current volume instead of its flow rate under dynamic wave flow routing.
  10. A conduit's evaporation and seepage loss is now split evenly between its end nodes instead of just to the upstream node.
  11. The default values for Inertial Damping and Variable Time Step options were made compatible with those used by the GUI.

SWMM 5.2.3 February, 2023

Released: February 12, 2023
Download Size: 9.01 MB

Engine updates

  1. Double counting of initial moisture volume in the drainage mat layer of a green roof LID unit was fixed.

SWMM 5.2.2 December, 2022

Released: December 01, 2022
Download Size: 9.02 MB

Engine updates

  1. Long run times occurring when the simulation duration exceeded the end of an externally applied time series were eliminated.
  2. A bug introduced in 5.2.0 causing the math expression evaluator to compute a*b^c as (a*b)^c instead of a*(b^c) was fixed.
  3. A check was added to the dimensions supplied for the Modified Baskethandle and Round-Rectangular cross sections to insure that the computed height of the rounded portion does not exceed the total height.
  4. Additional performance statistics were added to the Street Flow Summary table in the project's report file.
  5. The warning messages removed in release 5.2.1 about raising a node's maximum depth and adjusting a conduit's elevation drop were restored.
  6. The values reported for storage unit evaporation and exfiltration loss as a percentage of total storage volume were corrected.
  7. The default number of threads used for dynamic wave flow routing was changed to 1 to be consistent with the User's Manual and with the GUI.

SWMM 5.2.1 August, 2022

Released: August 01, 2022
Download Size: n/a

Engine updates

  1. Use of the Normal Flow Limited feature for dynamic wave flow routing is now optional.
  2. A refactoring bug causing excessive execution times for projects with control rules has been fixed.
  3. For kinematic wave storage routing, after convergence is obtained the reported depth is based on the last volume value rather than the next trial depth.
  4. Corrections were made to the geometry tables for the Egg shaped cross section at the two lowest relative depth levels.
  5. The practice of setting a dry node's pollutant concentration to 0 even when it receives non-zero pollutant inflow (as introduced in release 5.2.0) has been dropped.
  6. When there is no inflow to a non-storage node its water quality concentration now remains unchanged rather than being set to 0.
  7. The definition of F_OFF in output.c was corrected for non-MS C/C++ compilers.
  8. To eliminate having an excessive number of warning messages appear in the Status Report:
    • a message is no longer issued when a node's maximum depth is raised to match the crown of the highest connecting conduit.
    • a message is no longer issued when a conduit's elevation drop or slope is adjusted to not fall below minimum allowed values.

SWMM 5.2.0 November, 2021

Released: November 01, 2021
Download Size: n/a

Engine updates

  1. Support has been added for modeling street runoff capture by inlet drains:
    • A new Street cross-section type, defined in the [STREETS] section of an input file, was added to the set of conduit cross-section shapes.
    • A new Inlet object, specified in the [INLETS] section of an input file, was added to select the type and sizing of an inlet structure that captures street runoff.
    • A new conduit property, defined in the [INLET_USAGE] section of an input file, was added to place inlets in a Street conduit and connect them to a sewer system node.
    • Inlet capture analysis using the HEC-22 equations or custom capture curves has been interfaced with SWMM's flow routing methods.
    • A Street Summary table that displays summary results for each Street conduit and Inlet, including peak flow depth and spread, has been added to the list of Summary Reports.
  2. A Type 5 variable speed pump that obeys the pump affinity laws relating head and flow to pump speed was added.
  3. Storage Curve options now include several pre-defined shapes (cylinders, paraboloids, cones and pyramids) whose geometry is based on analytical formulas.
  4. Several new quantities, including past n-hour rainfall, were added to the properties that can appear in control rule condition clauses.
  5. Control rule condition clauses were expanded to include named variables and math expressions.
  6. A listing of the nodes with the highest flow routing non- convergence frequency was added to the Status Report.
  7. Support was added for the latest version of NOAA's Climate Data Online service where GHCN climate files can be retrieved in either US or SI units.
  8. An additional validation check was added to the user-supplied Initial Deficit value for Green-Ampt infiltration.
  9. The conversion of runon flow into an equivalent ponded depth for Curve Number infiltration was fixed.
  10. A new parameter was added to Rain Barrel LIDs indicating whether the rain barrel is covered or not.
  11. The effect that the Impervious Surface Fraction parameter for Permeable Pavement LID has on the pavement layer's effective permeabilty is now accounted for.
  12. The values of water depth in a Permeable Pavement LID written to the detailed LID report file are now expressed as inches (or mm) instead of feet.
  13. The math expression parser was modified to allow exponents to be expressions instead of just constant numerical values.
  14. The way in which average flow is computed was changed for the time-step-average reporting option.
  15. The total reporting time value used to compute several statistics in the summary results tables was corrected.
  16. Shell sort replaces insertion sort for sorting event periods.
  17. The number of open files that SWMM can access was increased to 8192.
  18. The command line executable now supports binary output files larger than 2 Gbytes.
  19. A number of new functions were added to the SWMM 5 API.

SWMM 5.1.015 July, 2020

Released: July 20, 2020
Download Size: 30.3 MB

Engine updates

  1. A mix of infiltration methods can now be used within a project.
  2. Monthly adjustments to depression storage are now applied only to the pervious area of subcatchments instead of to both pervious and impervious areas.
  3. The Status Report now includes a grouped frequency table of the variable routing time steps used during a simulation.
  4. An error in the average summary statistics reported for projects with a reporting start date later than the simulation start date was fixed.
  5. A fatal error is now issued if a storage node's area curve produces a negative volume when extrapolated to the node's full depth.
  6. A pollutant mass balance error occurring when very shallow storage units lost all inflow to flooding was fixed.
  7. Conduit evaporation and seepage losses are now applied directly to the conduit's flow rate instead of just to the downstream node's inflow to reduce water quality mass balance errors.
  8. Spurious values appearing for Final Water Table and Upper Mositure Content in the Groundwater Summary Results Table for completely impervious subcatchments were corrected.

SWMM 5.1.014 March, 2020

Released: March 16, 2020
Download Size: 29.8 MB

Engine updates

  1. Fixed a refactoring bug that produced incorrect rainfall when the same time series was used by one rain gage assigned to a RDII Unit Hydrograph and also by another gage assigned to a subcatchment.
  2. Fixed skipping the first rain gage in a project when checking if two gages have the same station ID but use different data files.
  3. Fixed a program crash when running projects with LID units but no subcatchments.
  4. Fixed having LID underdrain pollutant loads incorrectly added to the mass balance totals.
  5. Fixed the program from hanging when an LID unit sent its outflow back onto the pervious area of its own subcatchment.
  6. Fixed a failure to re-initialize layer volumes as each LID unit is evaluated (which could cause incorrect results for certain combinations of LID units).
  7. Fixed street sweeping being ignored when the sweeping period began with a higher day of the year than the end of the period.
  8. Fixed incorrect adjustments being made for conduit evaporation and seepage losses under dynamic wave flow routing.
  9. Fixed having soil moisture deficit recovery be ignored for Green-Ampt exfiltration from storage units.
  10. Fixed having node/link ID names be mistaken for option keywords in the [REPORT] section of an input file.
  11. Fixed a possible program crash when using the option to report average values within each reporting time interval instead of point values.

SWMM 5.1.013 July, 2018

Released: July 31, 2018
Download Size: 4.62 MB

Engine updates

  1. A subcatchment's depression storage depth, its pervious surface roughness (Mannings n) and its hydraulic conductivity can now be adjusted on a monthly basis by assigning monthly time patterns to these properties. For conductivity, a subcatchment-specific adjustment pattern will override any project-wide set of climate adjustment factors.
  2. LID controls can now treat a designated portion of a subcatchment’s pervious area runoff (previously they could only treat impervious area runoff).
  3. Permeable pavement LID units subjected to clogging over time can now have their permeability only partly restored at periodic time intervals
  4. The following options were added to control flow out of LID units through their underdrains:
    • A storage layer water depth above which a closed drain automatically opens.
    • A storage layer water depth below which an open drain automatically closes.
    • A control curve that specifies how the nominal drain flow rate is adjusted as a function of the head seen by the drain.
  5. Pollutant removal percentages can now be assigned to LID processes that have underdrains. The removals apply to flow leaving the unit through the drain and not to any surface overflow from the unit.
  6. The Subcatchment Runoff Summary Report now includes both pervious and impervious total runoff volumes (prior to any LID treatment) for each subcatchment.
  7. A choice of method used to handle surcharging has been added to the list of Dynamic Wave options. The EXTRAN method continues to use the traditional Surcharge Algorithm to update the head at surcharged nodes. The new SLOT option attaches a Preissmann Slot to closed conduits flowing more than 98.5% full that eliminates the need to switch to the Surcharge Algorithm for surcharged nodes.
  8. A closed vessel can now be modeled as a storage unit node that is allowed to pressurize up to a designated Surcharge Depth value. If this depth is 0 then the unit is modeled as before as an open vessel.
  9. A weir's discharge coefficient can now be allowed to vary with head across the weir by assigning it a Weir Curve (see Weir Properties). Weir curves tabulate coefficient values at specific head levels.
  10. When the upstream offset of a regulator link is below the invert of its downstream node it is now automatically raised only for Dynamic Wave flow routing with a warning message issued. For other flow routing choices only the warning message is issued and no automatic offset adjustment is made.
  11. Users can now choose to set a periodic time step for control rule evaluation. If this step is 0 then rules are tested as before at every routing time step.
  12. The option was added to have time series results for a project's nodes and links be reported as average values computed over a reporting time step instead of being interpolated point values at the end of the reporting time step.
  13. The following bugs were fixed:
    • Unused rain gages are no longer examined when adjusting the wet runoff time step.
    • The surface inflow rate to a permeable pavement LID unit is not allowed to exceed the pavement’s permeability.
    • The Minimum Nodal Surface Area dynamic wave routing option was being used as surface area always available at a node instead of an amount available only when the surface area of the node's connecting links fell below it.
    • The top width of a full closed rectangular cross section shape is now set to 0 since it can no longer supply any surface area.
    • The ‘C’ parameter value for a Mitered Corrugated Metal Arch culvert was corrected.
    • An incorrect reporting of flow continuity error for systems with backflow through outfall nodes was fixed.

SWMM 5.1.012 March, 2017

Released: March 14, 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 August, 2016

Released: August 22, 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 5.1.006 May, 2014

Released: May 19, 2014
Download Size: 4.49 MB

Engine Updates

  1. 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.
  2. The number of decimal places for hourly evaporation written to a detailed LID report was increased.
  3. 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.
  4. The equation that computes the rate of water infiltrating into permeable pavement LIDs had a misplaced parenthesis.
  5. 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

Engine Updates

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

Engine Updates

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

Engine Updates

  1. A bug that prevented hotstart files with the latest format from being read was fixed.
  2. 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

New Features

  1. SWMM can now read the new file format for precipitation data retrieved online from NOAA-NCDC.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Evaporation of water from open channels has been added.
  7. 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.
  8. 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.
  9. Separate accounting and reporting of evaporation and seepage losses in storage units is now made.
  10. 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).
  11. 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.
  12. Users can now set the flow tolerances that determine if flow routing calculations can be skipped because steady state conditions hold.
  13. Control rules can now use a conduit's OPEN/CLOSED status in both premise conditions and action clauses.
  14. 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).
  15. 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.
  16. 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.
  17. A new summary table, Link Pollutant Load, has been added that displays the total mass load of each pollutant that flows through each link.


  1. 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.
  2. 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.
  3. 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).
  4. 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.
  5. 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.
  6. 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).
  7. 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.
  8. 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).
  9. An error condition now occurs if a pump's startup depth is less than its shutoff depth.
  10. 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.
  11. Weirs are no longer allowed to operate as an orifice when they surcharge. Instead any excess flow will flood the upstream node.
  12. 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.
  13. 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).
  14. Control rule conditions can now accept elapsed time or time of day values as decimal hours in addition to hours: minutes:seconds.
  15. The test for a control rule condition equaling a specified elapsed time or time of day was modified to more accurately capture its occurrence.
  16. 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.
  17. 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.
  18. 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).
  19. Warning messages written to the Status Report are now single spaced instead of double spaced. See report.c.
  20. The Link Summary table in the Status Report now lists conduits with negative slopes in their original orientation instead of in their reversed state.

Bug Fixes

  1. A refactoring bug from 5.0.022 that prevented snowmelt from infiltrating has been fixed.
  2. 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.
  3. 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.
  4. The optional Maximum Volume parameter for Horton infiltration was not allowing any recovery of infiltration capacity between storm events.
  5. 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).
  6. An error in applying the Vegetation Volume Fraction parameter to swales was corrected.
  7. The time from the last rainfall used to determine when a Rain Barrel should begin to empty wasn't being computed correctly.
  8. 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).
  9. The display of extraneous infiltration results in detailed reports for Rain Barrel LIDs has been eliminated.
  10. 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.
  11. An erroneous warning message regarding negative offsets for pumps when elevation offsets are used has been eliminated.
  12. A possible divide by zero error for trapezoidal channels with zero bottom width has been eliminated.
  13. 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.
  14. Projects that had no subcatchments or had the Ignore Runoff switch selected were not able to evaporate water from storage units.
  15. Weekday and weekend hourly time patterns for Dry Weather inflows are now correctly applied in a mutually exclusive manner.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. A correction was made for the slope correction factor used for mitered culvert inlets.
  21. 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.
  22. 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.
  23. An error in computing the hydraulic radius of the Rectangular- Triangular conduit shape as a function of flow depth was corrected.

SWMM 5.0.022 April, 2011

Released: April 21, 2011
Download Size: 2.96 MB

Engine Updates

  1. The following fixes and updates were made to the LID module of the code (lid.c):
    1. The Drain Delay time for a Rain Barrel LID is now correctly converted internally from hours to seconds.
    2. The meaning of the Conductivity property of an LID's Storage layer has been changed. It is now defined as the saturated hydraulic conductivity of the native soil below the layer instead of the conductivity of the layer itself.
    3. Storage layers are now optional for Bio-Retention Cells and Permeable Pavement LIDs by allowing the layer height to be zero. One should still enter a non-zero conductivity for the layer if infiltration into native soil is allowed.
    4. If the top width of the overland flow surface for an LID is zero then any excess water above the surface storage depth simply spills out instantaneously.
    5. The calculation of infiltration in a Vegetative Swale was corrected so that a swale with vertical sides will produce the same results as a fully pervious subcatchment with the same dimensions, roughness, and slope.
    6. The water initially stored in all LID units is now reported in the Status Report's Runoff Continuity table.
    7. Error messages are now generated if the surface layer vegetation volume fraction is less than 1, if the area of all LIDs in a subcatchment is greater than the total area or if the total capture area of all LIDs is greater than the subcatchment's total impervious area.
  2. Missing values for accumulation periods within an NWS rain file are now processed correctly. See rain.c.
  3. A new error message (318) is now generated if a user-prepared rainfall file has its dates out of sequence. See rain.c, err.h, and err.c.
  4. Evaporation during wet time periods was including rainfall and run-on as moisture available for evaporation when it should only be the current ponded depth. See subcatch.c.
  5. Curve Number infiltration was modified to use only direct precipitation, not including runon or internally routed flow, to compute an infiltration rate. See infil.h, infil.c, subcatch.c and lid.c.
  6. A new error message (110) is now generated if the ground elevation of a subcatchment is less than the initial water table elevation of its groundwater aquifer. See gwater.c, err.h, and err.c.
  7. A check was added to the tailwater term of the groundwater flow equation to insure that the term is zero when no tailwater depth exists. See gwater.c.
  8. Checks were added to the solution of the governing groundwater mass balance equations to catch conditions where the lower zone depth is greater than the total depth or when the upper zone moisture content is greater than the porosity. See gwater.c.
  9. A divide by zero error no longer occurs when computing the hydraulic radius of an empty Filled Circular pipe whose filled depth is zero. A similar error for the hydraulic radius of an empty trapezoidal channel whose bottom width was zero was also eliminated. See xsect.c.
  10. The critical or normal depth adjustment made for a conduit is no longer allowed to set the depth to zero -- some small depth level is always maintained. See dynwave.c.
  11. The Pump Summary Report was expanded to include number of start- ups, minimum flow, and time off both the low and high ends of the pump curve. See objects.h, link.c, stats.c, and statsrpt.c.
  12. When the setting of an orifice or weir was changed to 0 (to completely block flow) the flow depth in the element wasn't being set to 0. This was only a reporting error and had no effect on the flow routing calculations. See link.c.
  13. The Node Surcharge Summary in the Status Report did not report a ponded node as being surcharged. This was only a reporting error and had no effect on the flow routing calculations. See stats.c.

SWMM 5.0.018 November, 2009

Released: November 18, 2009
Download Size: 2.66 MB

Engine Updates

  1. Reporting of the total infiltration + evaporation loss for each Storage Unit (as a percent of total inflow to the unit) was added to the Storage Volume Summary table in the Status Report. See objects.h, node.c, stats.c, and statsrpt.c.
  2. Double counting the final stored volume when finding the nodes with the highest mass balance errors has been eliminated. See stats.c.
  3. A warning message was added for when a Rain Gage's recording interval is less than the smallest time interval appearing in its associated rainfall time series. (An error message is issued if the recording interval is greater than the smallest time series interval.) See gage.c and text.h.
  4. Hot Start interface files now contain the final state of each subcatchment's groundwater zone in addition to the node and link information they have always had. See routing.c.
  5. To avoid confusion, the actual conduit slope is now listed in the Link Summary table of the Status Report rather than the adjusted slope that results from any conduit lengthening. See link.c and dynwave.c.
  6. The Status Report now displays only those summary tables for which results have been obtained (e.g., if the Flow Routing option is turned off, then no node or link tables are displayed). See massbal.c and statsrpt.c.
  7. Some code re-factoring was done to place rain gage validation and initialization in separate functions. See project.c, gage.c, and funcs.h.
  8. The engine version number was updated to 50018 (this update had been overlooked since release 5.0.010). See consts.h.

SWMM 5.0.017 October, 2009

Released: October 07, 2009
Download Size: 2.65 MB

Engine Updates

  1. The Ponding routine for dynamic wave flow routing was once again modified, this time to account for the special case where a node transitions between surcharged and ponded conditions within a single time step. This should correct the large continuity errors experienced with ponding under release 5.0.016. See dynwave.c.
  2. Error 112 (a conduit's elevation drop exceeds its length) is now treated as a Warning condition and not a fatal error. In this case the conduit's slope is computed as in earlier versions of SWMM (elevation drop / length) instead of using the more rigorous right-triangle method of HEC-RAS. See link.c and text.h.
  3. Inflow interface files no longer have to contain data for all of the same pollutants defined in the current project (e.g., they can contain just flows or some subset of the pollutants). See iface.c.
  4. Instead of using the rain gage's recording interval as the time step for processing a set of RDII unit hydrographs, the smaller of the wet runoff time step and the time to peak of the shortest unit hydrograph in the set is now used. As a result, it is now permissible to use hydrographs whose time to peak is shorter than the rain gage recording interval. See rdii.c.
  5. Under Curve Number infiltration, infiltration now stops when the maximum capacity (initially equal to 1000/CN - 10 inches) is completely used up. See infil.c.
  6. The small tolerance used to determine how much ponded depth in excess of depression storage is needed to initiate runoff was removed. This produces a smoother runoff response for some data sets. See subcatch.c.
  7. A default concentration for dry weather flow has been added to the Pollutant object. It can be overriden for any specific node by editing the node's Inflows property. See landuse.c, routing.c, and objects.h.
  8. For water quality routing, the simplified analytical solution to the CSTR mixing equation was replaced with a more robust finite difference approximation. This seems to avoid numerical problems with high decay rates. See qualrout.c.
  9. First order decay was not being applied to pollutants transported through conduits under Steady Flow routing. To do this correctly required writing a special water quality routine just for Steady Flow routing. See qualrout.c.
  10. A small minimum depth tolerance was introduced for treatment to occur at nodes and to have non-zero concentrations in conduits. See qualrout.c.
  11. Large water quality mass balance errors in systems that provide treatment at nodes were eliminated by correctly accounting for both the inflow mass and mass in storage when computing the mass lost to treatment. See treatmnt.c.

SWMM 5.0.016 June, 2009

Released: June 22, 2009
Download Size: 2.65 MB

Engine Updates

  1. A new option was added to compute daily evaporation from the daily temperature values contained in a climate file using Hargreaves' method. (See climate.c, enums.h, keywords.h, and text.h).
  2. When the Ponding option is turned on, nodes that can pond are no longer always treated like storage nodes that never surcharge. Now they are only treated this way after ponding occurs. Otherwise they behave like a normal node. (See dynwave.c).
  3. The small tolerance used to decide when a storage node was full or not has been removed since for very small time steps it could cause a currently full storage unit to remain full even if there was some small net outflow from it. (See node.c).
  4. Spurious warnings for negative elevation offsets no longer appear when the "*" entry is used for the offset value or when the offset elevation value is within a small tolerance of the node invert elevation. (See link.c).
  5. When the water level at a storage node exceeds the highest level supplied in its Storage Curve, an extrapolated surface area from the curve is now used only if the curve is sloping outward (i.e., surface area is increasing with depth at the top of the curve). If instead it slopes inward then the last surface area entry in the curve is used. (See table .c).
  6. Comma delimited NCDC rainfall files, both with and without station name, can now be recognized and read correctly by SWMM. (See rain.c).
  7. Space delimited NCDC rainfall files with empty spaces in the condition code fields can now be read correctly. (See rain.c).
  8. A bug created in release 5.0.015 that caused incorrect RDII inflows to be computed when the rain gage recording interval was less than the runoff wet time step has been fixed. (See rdii.c).
  9. A new error check was added to detect if the time base of an RDII unit hydrograph is less than its rain gage recording interval. (See rdii.c).

SWMM 5.0.015 April, 2009

Released: April 10, 2009
Download Size: 2.64 MB

Engine Updates

  1. Storage unit nodes have a new optional property named Infiltration that can store Green-Ampt infiltration parameters for the unit and thus allow it to serve as an infiltration basin. The Green-Ampt infiltration model was modified to explicitly include the effect of ponded water depth on infiltration rate. (See infil.c, massbal.c, node.c, and objects.h).
  2. Different sets of Initial Abstraction parameters (maximum depth, initial depth, and recovery rate) can now be specified for each of the three unit hydrographs (short term, medium term, and long term) that comprise an RDII Unit Hydrograph group (see keywords.h, keywords.c, objects.h, rdii.c, and text.h).
  3. A Meander Modifier was added to a Transect's parameters. It is the ratio of the length of a meandering main channel to the length of the overbank area that surrounds it. This modifier is applied to all conduits that use this particular transect for their cross section. It assumes that the length supplied for these conduits is that of the longer main channel. SWMM will use the shorter overbank length in its calculations while internally increasing the main channel roughness to account for its longer length. (See dynwave.c, flowrout.c, link.c, objects.h, and transect.c).
  4. NWS files in space delimited TD 3240 or 3260 format that include a station name field have been added to the types of rainfall files that are automatically recognized by SWMM (see rain.c).
  5. The 2 GB binary output file size limit for runs made under the GUI that was inadvertently added into release 5.0.014 was removed (see output.c).
  6. Any backflow that flows into an outfall node due to the head condition at the node is now correctly reported as part of the node's Total Inflow result (see node.c).
  7. A fatal error is now generated if the smallest time interval between values in a rainfall time series does not match the recording time interval specified for the associated rain gage object (instead of internally adjusting the gage interval and issuing a warning message) (see error.c, error.h, and gage.c).
  8. The normal flow limitation for dynamic wave flow routing based on the Froude number now requires that the latter be greater or equal to 1.0 for both the upstream and downstream flow depths rather just for either of these (see dynwave.c).
  9. An reporting error for the overflow rate into the ponded volume for a node that floods under dynamic wave flow routing was corrected (see dynwave.c).
  10. The practice of not allowing a computed top surface width to be less than the width at 4% of the full conduit depth for dynamic wave flow routing has been dropped in favor of using the actual width, no matter how small (see dynwave.c).

SWMM 5.0.014 January, 2009

Released: January 21, 2009
Download Size: 2.64 MB

Engine Updates

Rain Gages (gage.c, table.c, error.c, error.h, and objects.h)

  1. The recording interval for a rain gage is now automatically adjusted to be no greater than the smallest time interval for the gage's time series data (with a warning message written to the Status Report).
  2. When two or more rain gages reference the same time series data, a fatal error message is now generated if the Rainfall Formats (intensity, volume, or cumulative volume) for the gages are not all the same.

Infiltration (infil.c)

  1. The Green-Ampt infiltration rate was corrected for the case when the surface becomes saturated part way through the current time step.
  2. The saturated hydraulic conductivity is no longer needed by the Curve Number method to compute a regeneration rate for infiltration capacity. The latter is now set simply to the reciprocal of the user supplied drying time. Thus the CN method now requires only two param- eters (the CN and the drying time).
  3. An optional monthly adjustment pattern can now be used to modify the recovery rate of infiltration capacity by month of year. The name of this pattern is specified as part of the Evaporation data. See the Help file or the Users Manual for details. (This also affects files climate.c, keywords.c, project.c, enums.h, objects.h, and text.h).

Flow Routing (flowrout.c, node.c, inflow.c, link.c, and objects.h)

  1. A new Minimum Slope option has been added. When this option is non- zero a computed conduit slope is not allowed to be below this value. The default is 0. (Note: the slope of a conduit whose elevation difference is below 0.001 ft is first computed using this elevation difference and then is compared to the Minimum Slope value.) (The following files were also changed for this feature: keywords.c, project.c, enums.h, globals.h, text.h).
  2. An optional Baseline Time Pattern was added for external inflows at nodes. It can be used to apply a periodic adjustment to the baseline inflow value by month of year, day of week, etc. See the Help file or the Users Manual for more details.
  3. Specific conduits can now be designated as Culverts and have Inlet Control flow computed for them under Dynamic Wave flow routing.
  4. The rating curve used to determine flow through an Outlet can now be based on either the freeboard depth above the outlet bottom (as before) or on the head difference between the upstream and downstream nodes.
  5. The calculation of the maximum outflow that a node can release over a time step should be based on the initial volume, not the final volume, at the node.
  6. A problem with the program not accepting an ideal pump when the connecting upstream conduit had an adverse slope was fixed.
  7. The formula used to compute conduit slope was modified to match that used by HEC-RAS.
  8. A problem with the program crashing when the No Routing option was selected in combination with the Save Outflows Interface File option was fixed (see output.c).
  9. Under Steady Flow and Kinematic Wave routing one can now use a Dummy conduit that connects to a node at higher elevation without having to specify an inlet offset.

Dynamic Wave Flow Routing (dynwave.c, link.c, and node.c)

  1. Under-relaxation of flows for pumps between iterations of the governing equations is no longer used since it can produce a solution that does not conform to the pump's operating curve.
  2. Instead of the average area, the upstream weighted area that accounts for near-supercritical flow is now used in the dQ/dH term for conduits.
  3. The upstream/downstream Froude numbers used to check for normal flow are now computed using hydraulic depth rather than flow depth.
  4. When ponding is allowed, ponded volume is now computed from the computed nodal depth rather than adjusting the depth to accommodate the ponded volume based on the excess of inflow versus outflow. This is a return to the original method that was used up until Release 5.0.010 and makes ponding (which is actually a form of storage) consistent with the way that storage nodes are normally treated.
  5. The volume at the inlet node of Type I pumps (where an implicit wet well is assumed to occur) is now determined on the basis of computed depth, just as with storage nodes, rather than computing depth from the change in volume.
  6. The possible closing of tide gates on outfalls directly connected to orifice, weir, or outlet links is now correctly accounted for.

Conduit Cross-Sections (xsect.c)

  1. The modified baskethandle (MODBASKETHANDLE) cross-section shape was extended to allow the circular top to have any desired radius equal or greater than half the section's width. It thus becomes an upside down version of the Rectangular-Round shape. The section geometry functions for both shapes received extensive revision.

Control Rules (controls.c)

  1. "SIMULATION MONTH" and "SIMULATION DAY" (meaning month of the year and day of the week, respectively) have been added to the types of time conditions that can be used in a control rule condition clause.

Pollutant Buildup/Washoff (subcatch.c, landuse.c, and consts.h)

  1. Washoff of a user-specified initial buildup when there is no buildup function specified now works correctly.
  2. The way that concentrations in runoff are combined with those from runon and direct rainfall was modified so as to produce more consistent results, especially when a BMP removal value is appled.

Water Quality Routing (qualrout.c, routing.c, treatmnt.c)

  1. For storage units, the finite difference form of the mass balance equation was replaced with the analytical CSTR solution.
  2. An inflow rate adjustment was added when routing quality through conduits under Dynamic Wave flow routing to help lower the mass continuity error.
  3. The formula for updating the hydraulic residence time (HRT) in a storage node was revised.
  4. Quality routing under Steady Flow routing is now treated as a special case where the concentration within a conduit simply equals that of the upstream node.
  5. Any reverse flow into the system that occurs at an Outfall node is now treated as an external inflow with respect to water quality and will therefore contain whatever pollutant concentration was specified for external inflows at the node even if no external flow inflow was defined. This feature can be used to model saltwater or contaminant intrusion in tidally influenced channels.

Groundwater (gwater.c):

  1. The mass balance equations were re-formulated in a simpler fashion.
  2. The flow equation was re-expressed in terms of distances above the aquifer bottom instead of absolute elevations.
  3. The equation for computing the maximum infiltration rate that the upper zone can accept was corrected.

Snowmelt (snow.c)

  1. Snow removal for a subcatchment now works by removing snow once the "Depth at which removal begins" is reached. The fraction of this amount that remains on the surface is whatever is left over after all of the redistribution options are satisfied.
  2. The "Depth at which removal begins" value is now correctly converted to internal units of feet.

RDII (rdii.c)

  1. A problem with no RDII being produced when two or more RDII unit hydrographs utilized the same rain gage was fixed.

Time Series (table.c, error.c, error.h, objects.h)

  1. Time Series data can now be imported from an external file instead of having to be listed in the project's input file. See the Users Manual or the Help file for details.

Simulation Options

  1. A user can now choose to ignore any combination of the following process models when running a simulation: Rainfall/Runoff, Snowmelt, Groundwater, Flow Routing and Water Quality (swmm5.c, project.c, runoff.c, subcatch.c, routing.c, keywords.c, keywords.h, text.h, and globals.h).

Status Report (statsrpt.c)

  1. The heading for the maximum flow column in the Link Flow Summary table was changed to "|Flow|" to show that the flows listed are absolute values.
  2. The labels "Mgal" and "Mltrs" were replaced with "10^6 gal" and "10^6 ltr", respectively.
  3. The widths for the various types of flow volume fields (e.g., runoff volume, node inflow volume, etc.) were increased in size.

Binary Output File (output.c)

  1. The Report Start Time written to the binary results is now adjusted to be be one reporting period prior to when the first result is reported so that the GUI uses the correct date when it displays results.

Output Report (command line version) (report.c)

  1. Time series tables for reported subcatchments now report Snow Depth, Groundwater Elevation, and Groundwater Flow (provided that snowmelt and groundwater processes are included in the simulation).

SWMM 5.0.013 March, 2008

Released: March 11, 2008
Download Size: 2.60 MB

Engine Updates

  1. The check on acceptable values for site latitude was corrected (see climate.c).
  2. The definition and implementation of the PID controller was changed. See the Help file or the Users Manual for details (see controls.c).
  3. The following changes were made to the dynamic wave flow routing routine in dynwave.c:
    1. A new method that places more weight on upstream conduit geometry as the Froude number approaches 1 was added.
    2. A code re-factoring error that crept into the inertial term of the momentum equation was corrected.
    3. The flow in a fully flowing open channel can no longer be greater than the full normal flow.
    4. The Normal Flow Limit based on both slope and Froude number was modified to simply implement the two criteria together in the same fashion as they are done individually.
    5. A check was added that prevents any flow out of a node that is dry.
    6. The ponding computation was reverted back to that of 5.0.009 (depth is computed from volume rather than volume computed from depth) to better maintain flow continuity.
    7. Using the maximum allowable change in depth at a node as a criterion for selecting a variable time step was restored.
  4. The crown elevations of any connecting non-conduit links are now considered when determining a node's crown elevation (see flowrout.c).
  5. The possibility that the initial setting of an orifice was not being made correctly was eliminated (see link.c).
  6. Error checks were added to test for invalid numbers in a hot start file (see routing.c).

SWMM 5.0.012 February, 2008

Released: February 04, 2008
Download Size: 2.60 MB

Engine Updates

  1. The summary results tables written to the Status Report file have been updated and expanded. See the Users Manual for more details. Code changes to support this were made to dynwave.c, flowrout.c, funcs.h, inputrpt.c (a new module), keywords.c, keywords.h, link.c, objects.h, output.c, report.c, stats.c, statsrpt.c (a new module), and text.h.
  2. Conduit offsets can now be specified as an absolute elevation or, as before, a relative depth above the node invert. The same is true for the bottom of orifices, weirs, and outlets. The "Link Offsets" setting in the GUI and the corresponding LINK_OFFSETS entry in the project's input file determine which option, DEPTH or ELEVATION, is in effect. (see project.c, link.c, keywords.c, keywords.h, globals.h, and text.h).
  3. A PID-type controller has been added to the types of modulated control rules that are available. See the Help file or the Users Manual for instructions on how to use this feature (see controls.c and keywords.c).
  4. In the simulation results, "flooding" is now considered to occur whenever the water level exceeds the top of a node, whether ponding occurs or not. Before, flooding was only recorded when there was no ponding and node overflow was lost from the system (see dynwave.c, flowrout.c, massbal.c, node.c, stats.c, and statsrpt.c).
  5. The point at which the time to drain the upper soil zone for Green-Ampt infiltration is first calculated was moved from time 0 to the time when the first rainfall period occurs. This fixes a problem where different runoff hydrographs were being produced when a project's start date was shifted slightly (see infil.c).
  6. The criteria used to determine when steady state flow conditions exist were changed to more closely follow those used in SWMM 4 (see routing.c and the Help File or Users Manual for the Skip Steady Periods option).
  7. The optional user-assigned maximum flow limit for conduits was made operational for all flow routing options, not just Dynamic Wave routing (see link.c).
  8. SI unit conversion problems for both a pump's on/off depth settings and its pump curve slope values were fixed (see link.c).
  9. The possibility that ponding could occur at the inlet (wet well) node for a Type I pump was added (see dynwave.c).
  10. A mistake in the Hazen-WIlliams head loss formula for force main conduits was corrected (see forcmain.c).
  11. The minimum limit of 0.0001 on flow area and hydraulic radius computed from flow depth during dynamic wave routing was removed since flow depth is already limited by this amount (see dynwave.c).
  12. The flow direction test added for checking UPSTREAM CRITICAL and DOWNSTREAM CRITICAL flow conditions in dynamic wave flow routing was removed to prevent solutions from becoming stuck (see dynwave.c).
  13. The use of a maximum allowable change in depth at a node as a criterion for selecting a variable time step for dynamic wave flow routing was dropped (see dynwave.c).
  14. A more refined method for computing the flow across a bottom orifice at low heads was implemented. (see link.c).
  15. The head loss calculation caused by flap gates in weirs was extended to orifices as well (see link.c).
  16. The computation of depth as a function of area for a trapezoidal channel was extended to consider the case where the user used 0 for the side slopes (making it a rectangular channel - a holdover from SWMM 4) (see xsect.c).
  17. A bug introduced in 5.0.010 that was preventing RDII from being computed for unit hydrographs that used the same rain gage as another unit hydrograph was fixed (see rdii.c and objects.h).
  18. Pollutant loading from RDII was corrected to be based on the pollutant's specified RDII quality rather than its rainfall quality (see routing.c).
  19. The "Snow Only" option for the buildup of a pollutant was never actually implemented and has now been added (see subcatch.c).
  20. Additional error checking for valid snow melt and snow pack input parameters was added (see snow.c, error.c, and error.h).
  21. The same runoff threshold is now used for both pollutant washoff (when above the threshold) and buildup (when below the threshold) to avoid non-zero runoff concentrations from being reported during periods with negligible runoff (see subcatch.c).
  22. The values for total system outflow and system flooding that are saved to the binary results file at each reporting time step are now set equal to the same values that are used for computing the overall flow continuity error, thus avoiding inconsistent system outflow values being generated for some data sets (see output.c).
  23. For the command line version of SWMM, the default END_TIME option was corrected from being 24 days to 0 days (i.e., midnight of the END_DATE value) (see project.c and swmm5.c).

SWMM 5.0.011 July, 2007

Released: July 16, 2007
Download Size: 2.46 MB

Engine Updates

  1. A bug that prevented Weir and Outlet settings from being updated after they were changed by control rules was fixed (see link.c).
  2. The control setting for a Weir was not being accounted for when computing an equivalent orifice coefficient for surcharged flow or when computing flow through a V-notch weir (see link.c).
  3. The reported depth of flow through a Weir was not taking into account the Weir's control setting (see link.c).
  4. An update made in 5.0.010 to how ponded depths and volumes are computed under dynamic wave flow routing was corrected (see dynwave.c).
  5. The equations used to mix the quality of runon, rainfall and ponded water over a subcatchment were revised to prevent numerical instability at very low volumes (see subcatch.c).
  6. Missing values in NCDC rainfall files that use the 'M' flag are now added to the total number of missing records reported (see rain.c).

SWMM 5.0.009 September, 2006

Released: September 19, 2006
Download Size: 2.24 MB

Engine Updates

  1. A climate file in the user-prepared format will no longer be confused with one using the Canadian format (see climate.c).
  2. The minimum runoff which can generate pollutant washoff was changed from 0.001 in/hr to 0.001 cfs (see subcatch.c).
  3. A new RDII event now begins when the duration of a continuous run of dry weather exceeds the base time of the longest unit hydrograph rather than arbitrarily being set at 12 hours (see rdii.c).
  4. Problems with dynamic flow routing through long force mains connected to Type 3 and Type 4 pumps have been corrected (see dynwave.c and link.c).

SWMM 5.0.008 July, 2006

Released: July 05, 2006
Download Size: 2.24 MB

Engine Updates

  1. The conversion from the Horton infiltration drying time input parameter to an equivalent regeneration curve constant was corrected.
  2. Pipe invert elevations at outfalls are now measured relative to the outfall stage elevation rather than the outfall's invert elevation.
  3. Entrance/exit minor loss terms for dynamic wave flow routing are now adjusted by the ratio of the mid-point to entrance/exit areas to improve the energy balance.
  4. A possible error in computing flow depth from head when checking the normal flow limitation based on the Froude number for dynamic wave flow routing was corrected.
  5. A potential problem with converting the units of rainfall read from an external file was corrected.
  6. The equivalent length of orifices and weirs was changed from being a minimum of 200 ft to a maximum of 200 ft.
  7. Problems in displaying washoff mass balance results for pollutants expressed as Counts/Liter were fixed.
  8. The reporting of total system maximum runoff rate in the Status Report's Subcatchment Runoff Summary table has been corrected.
  9. The subcatchment pollutant washoff process was reprogrammed to provide more rigorous mass balance results for the case where runoff from one subcatchment is routed over another subcatchment or when there is direct deposition from rainfall.
  10. Checks for non-negative conduit offsets and orifice/ weir/outlet heights have been added.
  11. A constant value and a scaling factor have been added to Direct External inflows. See the Inflows Editor - Direct Page topic in the Help file for more details.
  12. A listing of total washoff loads for each pollutant for each subcatchment has been added to the Status Report. A new summary table of Node Inflows and Flooding has been added to the Status Report.
  13. A new summary table of Outfall flows and pollutant loads has been added to the Status Report.
  14. The 5.0.006 Engine Update #12 has been revoked.

SWMM 5.0.007 March, 2006

Released: March 10, 2006
Download Size: 2.19 MB

Engine Updates

  1. An "Ignore Rainfall" analysis option was added that causes the program to only consider user-supplied external inflow time series and dry weather flows and ignore any rainfall inputs that would otherwise produce runoff.
  2. The hydraulic radius calculations for Rectangular-Closed, Rectangular-Triangular, and Rectangular-Round conduit shapes were modified to account for the increase in wetted perimeter that occurs under full flow due to the top surface.
  3. Refinements were made in several places in the code that need to distinguish between Full Flow and Maximum Flow conditions in closed conduits.
  4. The code now properly accounts for the case where the depth at which the maximum normal flow occurs through an irregular shaped cross section is less than the full depth.
  5. The final volume of any ponded water (caused by node flooding) is now included in the reported flow continuity error. Peak runoff flow was added to the Subcatchment Summary table in the Status Report.
  6. Non-conduit links are now included in the Link Flow Summary table of the Status Report.

SWMM 5.0.003 November, 2004

Released: November 10, 2004
Download Size: 2.17 MB

Engine Updates

  1. Modifications were made to full depth entries of width tables for closed rounded cross-section shapes to improve the numerical stability for dynamic wave flow routing.
  2. Error 405 was added to detect if the size of the binary results file would exceed the 2.1 Gbyte system limit.
  3. A units problem for RDII inflows under metric flow units was corrected.
  4. A problem reading the TEMPDIR option when it contained spaces was corrected.
  5. Support for Canadian DLY02 and DLY04 temperature files was added.
  6. Rule-based control of crest height for weirs was corrected (previously the control setting adjusted flow rather than the relative distance between weir crest and crown).

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)