Subject: SWMM 5 Engine Updates between v13 and v22 by Category
The complete list of engine and GUI changes can be found in this text file on the EPA Site http://www.epa.gov/nrmrl/wswrd/wq/models/swmm/epaswmm5_updates.txt
This note categorizes the engine changes by aggregating dynamic wave solution changes, surface ponding changes, RDII and Hydrology for example. The number preceding each change is the change number per engine update – the version of the engine update is shown at the end of each change paragraph. The Categories are General Changes, Dynamic Wave Changes, RDII Changes, Infiltration and Surface Runoff Changes, Climate Data Changes, Rainfall Changes, LID Changes and Water Quality Changes.
General Changes
6. The maximum trials used when evaluating the flow and head equations at
a given time period for dynamic wave routing was increased from 4 to 8.
See dynwave.c. Build 5.0.019 (07/30/10)
28. For models that only compute runoff and have a reporting time step
less than the wet time step, the latter is internally set equal to
the former. See swmm5.c. Build 5.0.019 (07/30/10)
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. Build 5.0.018 (11/18/09)
2. Double counting the final stored volume when finding the nodes with
the highest mass balance errors has been eliminated. See stats.c.
Build 5.0.018 (11/18/09)
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. Build 5.0.018 (11/18/09)
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. Build 5.0.018 (11/18/09)
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. Build 5.0.018 (11/18/09)
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. Build 5.0.018 (11/18/09)
8. The engine version number was updated to 50018 (this update had
been overlooked since release 5.0.010). See consts.h. Build 5.0.018 (11/18/09)
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. Build 5.0.017 (10/7/09)
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. Build 5.0.017 (10/7/09)
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). Build 5.0.015 (4/10/09)
Binary Output File (output.c)
41. 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. Build 5.0.014 (1/21/09)
Simulation Options
37. 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). Build 5.0.014 (1/21/09)
Status Report (statsrpt.c)
38. 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. Build 5.0.014 (1/21/09)
39. The labels “Mgal” and “Mltrs” were replaced with “10^6 gal” and
“10^6 ltr”, respectively. Build 5.0.014 (1/21/09)
40. The widths for the various types of flow volume fields (e.g., runoff
volume, node inflow volume, etc.) were increased in size. Build 5.0.014 (1/21/09)
Output Report (command line version) (report.c)
42. 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). Build 5.0.014 (1/21/09)
RDII Changes
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. Build 5.0.017 (10/7/09)
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). Build 5.0.016 (6/22/09)
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). Build 5.0.016 (6/22/09)
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). Build 5.0.015 (4/10/09)
35. A problem with no RDII being produced when two or more RDII unit
hydrographs utilized the same rain gage was fixed. Build 5.0.014 (1/21/09)
Time Series (table.c, error.c, error.h, objects.h)
36. 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. Build 5.0.014 (1/21/09)
Dynamic Wave Solution Changes
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. Build 5.0.022 (04/21/11)
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. Build 5.0.022 (04/21/11))
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. Build 5.0.022 (04/21/11)
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. Build 5.0.022 (04/21/11)
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. Build 5.0.022 (04/21/11)
5. The check to see if flow in a link should not exceed the normal flow
now uses just the upstream Froude number rather than both up and
downstream numbers. See dynwave.c. Build 5.0.019 (07/30/10)
6. The maximum trials used when evaluating the flow and head equations at
a given time period for dynamic wave routing was increased from 4 to 8.
See dynwave.c. Build 5.0.019 (07/30/10)
7. The Ponding calculation for dynamic wave flow routing was changed once
again to obtain better continuity results. The depth in a surcharged
node that can pond is not allowed to rise higher than just beyond full
depth in any single time step. After that, its change in depth is
determined by the node’s ponded area. Similarly, the depth of a ponded
node is not allowed to drop more than just below full depth in any
single time step. See dynwave.c and node.c. Build 5.0.019 (07/30/10)
8. For Kinematic Wave and Steady Flow routing, a node’s ponded area is
no longer used to infer a ponded depth when a node floods with Ponding
turned on. Instead, the water depth is simply set to the node’s maximum
depth and the ponded area parameter is simply used as a indicator as
to whether the node can pond or not. (This differs from dynamic wave
routing where the ponded area directly influences ponded depth through
the solution of the momentum and flow conservation equations.) See
flowrout.c. Build 5.0.019 (07/30/10)
9. As a consequence of the preceeding update, the Node Flooding Summary
table in the Status Report no longer displays the maximum ponded volume
in acre-inches (or hectare-mm). Instead it displays the maximum ponded
depth (ft or m) for Dynamic Wave flow routing or the maximum ponded
volume (1000 ft3 or 1000 m3) for other forms of routing. See stats.c
and statsrpt.c. Build 5.0.019 (07/30/10)
11. Controls based on flow rates now properly account for the direction of
flow when they are evaluated. This may require users to add an extra
condition clause to a rule that only applies for flow in the positive
direction (e.g., AND Link XXX FLOW >= 0.0). See controls.c. Build 5.0.019 (07/30/10)
12. The Villemonte correction for downstream submergence is now also used
for partly filled orifices (instead of just for weirs). See link.c and
dynwave.c. Build 5.0.019 (07/30/10)
13. A missing term in the equation used to check for submerged inlet
control for Culvert conduits was fixed. See culvert.c. Build 5.0.019 (07/30/10)
14. If a non-conduit link is connected to a storage node then its
contribution to the node’s surface area is now ignored. See
dynwave.c. Build 5.0.019 (07/30/10)
15. The automatic adjustment of the maximum depth of a link’s end nodes
to be at least as high as the link’s crown no longer applies when
the link is a bottom orifice. See link.c. Build 5.0.019 (07/30/10)
16. A fatal error message is now generated if a conduit’s entrance,
exit, or average loss coefficient value is negative. See link.c.
Build 5.0.019 (07/30/10)
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. Build 5.0.017 (10/7/09)
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). Build 5.0.016 (6/22/09)
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). Build 5.0.016 (6/22/09)
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). Build 5.0.016 (6/22/09)
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). Build 5.0.016 (6/22/09)
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). Build 5.0.015 (4/10/09)
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). Build 5.0.015 (4/10/09)
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). Build 5.0.015 (4/10/09)
9. A 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). Build 5.0.015 (4/10/09)
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). Build 5.0.015 (4/10/09)
Flow Routing (flowrout.c, node.c, inflow.c, link.c, and objects.h)
6. 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,