Showing posts with label SWMM 5 Engine Updates between v13 and v22 by Category. Show all posts
Showing posts with label SWMM 5 Engine Updates between v13 and v22 by Category. Show all posts

Friday, January 13, 2012

SWMM 5 Engine Updates between v13 and v22 by Category

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, globals.h, text.h). Build 5.0.014 (1/21/09)
7.   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. Build 5.0.014 (1/21/09)
8.   Specific conduits can now be designated as Culverts and have Inlet
     Control flow computed for them under Dynamic Wave flow routing.
9.   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. Build 5.0.014 (1/21/09)
10.  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. Build 5.0.014 (1/21/09)
11.  A problem with the program not accepting an ideal pump when the
     connecting upstream conduit had an adverse slope was fixed.
12.  The formula used to compute conduit slope was modified to match that
     used by HEC-RAS. Build 5.0.014 (1/21/09)
13.  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). Build 5.0.014 (1/21/09)
14.  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.  Build 5.0.014 (1/21/09)
Dynamic Wave Flow Routing (dynwave.c, link.c, and node.c)
15.  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. Build 5.0.014 (1/21/09)
16.  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. Build 5.0.014 (1/21/09)
17.  The upstream/downstream Froude numbers used to check for normal
     flow are now computed using hydraulic depth rather than flow depth.   Build 5.0.014 (1/21/09)
18.  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.   Build 5.0.014 (1/21/09)
19.  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.  Build 5.0.014 (1/21/09)
20.  The possible closing of tide gates on outfalls directly connected
     to orifice, weir, or outlet links is now correctly accounted for.  Build 5.0.014 (1/21/09)
Conduit Cross-Sections (xsect.c)
21.  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.   Build 5.0.014 (1/21/09)
Control Rules (controls.c)
22.  "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.  Build 5.0.014 (1/21/09)

Groundwater Solution Changes

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. Build 5.0.022 (04/21/11
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.   Build 5.0.022 (04/21/11
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.  
    Build 5.0.022 (04/21/11)
10. The groundwater mass balance equations were returned to the form they
    had in release 5.0.013 since they were not correctly accounting for
    the water volume transferred between the saturated and unsaturated
   zones due only to a change in the water table depth. See gwater.c.
    Build 5.0.019 (07/30/10)
30.  The mass balance equations were re-formulated in a simpler fashion.
31.  The flow equation was re-expressed in terms of distances above the
     aquifer bottom instead of absolute elevations. Build 5.0.014 (1/21/09)
32.  The equation for computing the maximum infiltration rate that the
     upper zone can accept was corrected. Build 5.0.014 (1/21/09)

LID Solution Changes

1.  The following fixes and updates were made to the LID
    module of the code (lid.c):   Build 5.0.022 (04/21/11)

    a. The Drain Delay time for a Rain Barrel LID is now
       correctly converted internally from hours to seconds.
    b. 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.
    c. 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.
    d. 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.
    e. 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.
    f. The water initially stored in all LID units is now reported
       in the Status Report's Runoff Continuity table.
    g. 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.
1.  The ability to explicitly model five different types of Low Impact
    Development (LID) practices at the subcatchment level has been
    added. Consult the LID Controls topic in the Help file for details.
    See lid.c, lid.h, infil.c, infil.h, input.c, inputrpt.c, project.c,
    statsrpt.c, and subcatch.c.  Build 5.0.019 (07/30/10)

Rainfall Data Changes

2.  Missing values for accumulation periods within an NWS rain
    file are now processed correctly. See rain.c.  Build 5.0.022 (04/21/11)
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.   Build 5.0.022 (04/21/11)
1.  A refactoring bug that prevented SWMM from reading rainfall data
    from external rainfall files was fixed. See gage.c.  Build 5.0.020 (08/23/10)
22. Several bugs that prevented SWMM from detecting and reading Canadian
    DLY02/04 climate files correctly were fixed. See climate.c.  Build 5.0.019 (07/30/10)
23. An error message is now generated if a time series used for rainfall
    is also used for another purpose in a project (since it will cause
    the two uses to be out of synch). See error.h, error.c, gage.c,
    climate.c, control.c, and inflow.c. Build 5.0.019 (07/30/10)
24. An error message is now generated if two Rain Gages with files as
    their data source use the same Station IDs but different names for
    the data file. See rain.c, error.h, and error.c. Build 5.0.019 (07/30/10)
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. Build 5.0.018 (11/18/09)
6.  Comma delimited NCDC rainfall files, both with and without station
    name, can now be recognized and read correctly by SWMM. (See rain.c).  Build 5.0.016 (6/22/09)
7.  Space delimited NCDC rainfall files with empty spaces in the condition
    code fields can now be read correctly. (See rain.c). Build 5.0.016 (6/22/09)
25. When zero rainfall values appear in a rain file or time series they
    are now skipped over and treated as a dry period, the same as would
    occur had they not been entered in the first place. See gage.c. Build 5.0.019 (07/30/10)
19. The Ignore Snowmelt switch is now internally set to true whenever
    there are no snow pack objects defined, so that precipitation is not
    mistakenly converted to snow for a project with temperature data.
    See gage.c and project.c. Build 5.0.019 (07/30/10)
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). Build 5.0.015 (4/10/09)
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).  Build 5.0.015 (4/10/09)
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. 5.0.014 (1/21/09)
Snowmelt (snow.c)
33.  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.
34.  The "Depth at which removal begins" value is now correctly converted
     to internal units of feet. 5.0.014 (1/21/09)

Infilltration Changes

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.  Build 5.0.022 (04/21/11)
1.  A code refactoring error in Build 5.0.019 that resulted in no
    recovery of infiltration capacity during dry periods has been fixed.
    See subcatch.c.  Build 5.0.021 (09/30/10)
2.  The pervious area adjustment used in 5.0.019 for evaporation and
    infiltration to a subcatchment's groundwater zone was corrected.
    See gwater.c. Build 5.0.021 (09/30/10)
4.  The rainfall + runon used to compute infiltration is no longer
    pre-adjusted by subtracting any evaporation loss. See subcatch.c. 
    Build 5.0.021 (09/30/10)
5.  The rate for Green-Ampt infiltration is no longer allowed to be
    less than the smaller of the saturated hydraulic conductivity and
    the available surface moisture. See infil.c.  Build 5.0.021 (09/30/10)
6.  The available surface moisture for Green-Ampt infiltration is
    considered 0 if its value is less than a small tolerance. See
    infil.c.  Build 5.0.021 (09/30/10)
4.  Storage node losses from evaporation and infiltration are now computed
    directly within the flow routing routines to produce better
    conservation of mass. See objects.h, routing.c, dynwave.c and node.c.
    Build 5.0.019 (07/30/10)
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.  Build 5.0.017 (10/7/09)
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.     Build 5.0.017 (10/7/09)
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).  Build 5.0.015 (4/10/09)
Infiltration (infil.c)
3.   The Green-Ampt infiltration rate was corrected for the case when
     the surface becomes saturated part way through the current time step.
4.   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). 5.0.014 (1/21/09)
5.   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). 5.0.014 (1/21/09)

Climate Data Changes

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.  Build 5.0.022 (04/21/11)
3.  The accounting of evaporation loss from just the pervious area of a
    subcatchment has been corrected. See subcatch.c.  Build 5.0.021 (09/30/10)
7.  Evaporation and infiltration losses from Storage nodes under
    Kinematic Wave and Steady Flow routing are now accounted for
    properly. See flowrout.c.  Build 5.0.021 (09/30/10)
3.  An option was added to allow evaporation of standing water to occur
    only during periods with no precipitation (the default is the current
    practice of allowing evaporation in both wet and dry periods). See
    climate.c, enums.h, keywords.c, objects.h, project.c, subcatch.c,
    and text.h.    Build 5.0.019 (07/30/10)
4.  Storage node losses from evaporation and infiltration are now computed
    directly within the flow routing routines to produce better
    conservation of mass. See objects.h, routing.c, dynwave.c and node.c.
    Build 5.0.019 (07/30/10)
19. The Ignore Snowmelt switch is now internally set to true whenever
    there are no snow pack objects defined, so that precipitation is not
    mistakenly converted to snow for a project with temperature data.
    See gage.c and project.c. Build 5.0.019 (07/30/10)
20. When reading min/max daily temperatures from a climate file, the
    values are now swapped if the minimum is greater than the maximum.
    See climate.c.  Build 5.0.019 (07/30/10)
21. When the Hargreaves method is used to compute an evaporation rate
    from daily temperature values, negative rates are no longer allowed.
    See climate.c. Build 5.0.019 (07/30/10)
26. A bug that caused the data in an evaporation time series to be out
    of synch with the simulation time clock has been fixed. This only
    affected evaporation data supplied from time series and not monthly
    average data or data from climate files. See climate.c.  Build 5.0.019 (07/30/10)
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.     Build 5.0.017 (10/7/09)
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).   Build 5.0.016 (6/22/09)
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).  Build 5.0.015 (4/10/09)

Water Quality Changes

8.  The Pollutant Loading summary tables in the Status Report now
    lists results for all pollutants in a single table instead of
    listing just 5 pollutants per table. See report.c.  Build 5.0.021 (09/30/10)
2.  Pollutant buildup over a given landuse can now be specified by a time
    series instead of just a buildup function. Consult the Land Uses /
    Buildup topic in the Help index for more details. See landuse.c and
    keywords.c.   Build 5.0.019 (07/30/10)
27. The water quality mass balance now correctly accounts for any initial
    mass in the system created by using a hot start file. See massbal.c. Build 5.0.019 (07/30/10)
17. Requests to do internal routing of runoff between impervious and
    pervious sub-areas of a subcatchment when only one type of sub-area
    exists are now ignored. See subcatch.c. Build 5.0.019 (07/30/10)
18. The check on the error condition of a node having both incoming and
    outgoing dummy conduits was modified so as not to get fooled by
    Outlet-type links. See toposort.c.  Build 5.0.019 (07/30/10)
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.  Build 5.0.017 (10/7/09)
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.   Build 5.0.017 (10/7/09)
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.
    Build 5.0.017 (10/7/09)
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. Build 5.0.017 (10/7/09)    
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. 
    5.0.017 (10/7/09)
Pollutant Buildup/Washoff (subcatch.c,  landuse.c, and consts.h)
23.  Washoff of a user-specified initial buildup when there is no buildup
     function specified now works correctly.  Build 5.0.014 (1/21/09)
24.  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. 
     Build 5.0.014 (1/21/09)
Water Quality Routing (qualrout.c, routing.c, treatmnt.c)
25.  For storage units, the finite difference form of the mass balance
     equation was replaced with the analytical CSTR solution.  Build 5.0.014 (1/21/09)
26.  An inflow rate adjustment was added when routing quality through
     conduits under Dynamic Wave flow routing to help lower the mass
     continuity error. Build 5.0.014 (1/21/09)
27.  The formula for updating the hydraulic residence time (HRT) in a
     storage node was revised. Build 5.0.014 (1/21/09)
28.  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. Build 5.0.014 (1/21/09)
29.  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. Build 5.0.014 (1/21/09)

AI Rivers of Wisdom about ICM SWMM

Here's the text "Rivers of Wisdom" formatted with one sentence per line: [Verse 1] 🌊 Beneath the ancient oak, where shadows p...