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)

Thursday, January 5, 2012

How to divide the Inflow at a Node in InfoSWMM

Subject:  How to Divide the Inflow at a Node in InfoSWMM

How to Divide the Inflow at a Node in InfoSWMM

by dickinsonre
Subject:  How to Divide the Inflow at a Node in InfoSWMM

In SWMM 5 only the Kinematic Wave solution allows a flow divider at a node to divide the Inflow to node to two  downstream  links, but you can use the Inflow/Outflow Outlet type in InfoSWMM to divide the inflow based on a Inflow/Outflow Diversion Table (Figure 1).  For example, in InfoSWMM it is possible to have two downstream links from a Node that are Outlet types Inflow/Outflow so that the low flow goes down one link and the high flow goes down the other link (Figure 2 and Figure 3).   The low flow and the high flow  link  use different diversion tables in which the tables are constructed so that the flow is positive in one link and zero in the other to a dividing flow value and then zero and positive for the same two links after the dividing flow value ( 5 cfs in the example). 
Figure 1.  Types of OUTLETS in InfoSWMM and SWMM 5
Figure 2.  Example low flow and high flow Outlet Links to divide the total  inflow at the upstream node at 5 cfs.
 Figure 3.   The flow is divided into the low and high flow links at the dividing flow of 5 cfs. 


Tuesday, January 3, 2012

CDM and Wilbur Smith Associates Proudly Serving Clients as CDM Smith

CDM and Wilbur Smith Associates Proudly Serving Clients as CDM Smith
New brand reflects emergence of a full service global leader

January 01, 2012
CAMBRIDGE, Massachusetts—What began in February 2011 with joining of two industry forces has culminated in a fully integrated provider of comprehensive water, environment, transportation, energy and facilities services united under the new brand CDM Smith.

According to Chief Executive Officer Richard D. Fox, “CDM Smith brings together CDM and Wilbur Smith Associates, two firms of rich heritage and world-wide reputation. With 123 years of combined cross-discipline expertise, our people bring a wealth of knowledge, experience and dedication to every client relationship and each project. While our name is different and our portfolio of services has expanded, we remain committed to doing what is right for our clients, our communities, each other and the future.”

Proving to be better together, CDM Smith represents almost 6000 employees excelling in 100 technical specialties, partnering with clients to solve challenges in 28 countries around the world.
CDM Smith provides lasting and integrated solutions in water, environment, transportation, energy and facilities to public and private clients worldwide. As a full-service consulting, engineering, construction, and operations firm, we deliver exceptional client service, quality results and enduring value across the entire project life cycle. 

Monday, January 2, 2012

Drawing features to show multiple attributes in InfoSWMM

Subject:   Drawing features to show multiple attributes in InfoSWMM

Drawing features to show multiple attributes in InfoSWMM and InfoSewer

by dickinsonre
Subject:   Drawing features to show multiple attributes in InfoSWMM
Your network data usually has a number of different attributes that describe the features it represents (Figure 3). While you'll commonly use one of the attributes to symbolize the
data—for example, showing one quantity in the InfoSWMM Map Display —you may sometimes want to use more than one.   One way to show multiple attributes inInfoSWMM is to copy layers and then use the Layer Properties to color, map or otherwise display the multivariable data (Figure 1).  For example, Figure 2 shows the important Subcatchment parameters of Slope, Imperviousness and Width as graduated colors, dots and a pie shape, respectively.
 Figure 1.  Use the Symbology Tab to select the attribute you want to show and the way to show the attribute. 

Figure 2.   The Subcatchment slope is shown in graduated colors, the percent impervious in scattered dots a a measels map and the Subcatchment Width is shown in a pie graph with the size of the pie a function  of the total  width.
 Figure 3.  Physical Data Estimated from a DEM using the Subcatchment Manager in InfoSWMM.




Create Watershed Data Using InfoSWMM Subcatchment Manager

Subject:  Create Watershed Data Using InfoSWMM Subcatchment Manager

The Subcatchment Manager of InfoSWMM will  help calculate most of the  physical parameters associated with a Watershed or Subcatchment in SWMM 5 from a Digital Elevation Data (Step 1).  The Subcatchments slope is estimated from a slope raster (Step 2) and the Slope Calculator (Step 4). The created watershed area are calculated using the command Update DB from Map (Step 6) along with the Subcatchment Width (Step 3) and the Impervious Area (Step 5).   The physical parameters estimated from the DEM are shown in Figure 1.

Figure 1.  Physical Data Estimated from a DEM using the Subcatchment Manager in InfoSWMM.

Step 1.  Use the command Create Flow Stream to create a Flow Stream for the DTM or DEM that can be used later.

Step 2.   Create a Slope Raster from the DEM for later usage in the Slope Calculator.

Step 3.   Calculate the Width of the Subcatchment using one of five methods.

Step 4.   Calculate the Slope in percent from the Slope Raster created in Step 2.

Step 5.   Populate the Impervious area percentage using a Parcel shape file and the Created Subcatchments.

Step 6.   Use Arc Map to calculate the area of the Subcatchments using the command Update DB from Map and the following Operation Flags.


Create Watersheds Using InfoSWMM Subcatchment Manager

Subject:  Create Watersheds Using InfoSWMM Subcatchment Manager

Create Watersheds Using InfoSWMM Subcatchment Manager

by dickinsonre
Subject:  Create Watersheds Using InfoSWMM Subcatchment Manager  
The Subcatchment Manager of InfoSWMM will  help calculate most of the  physical parameters associated with a Watershed or Subcatchment in SWMM 5 from a Digital Elevation Data (Step 1).  The Subcatchments area created from a Flow Direction Raster (Step 2) and a Flow Accumulation Raster (Step 4) after filling in any Sinks in the DEM (Step 3).  The created watersheds (Step 5).   The physical parameters estimated from the DEM are shown in Figure 1. 
Figure 1.  Physical Data Estimated from a DEM using the Subcatchment Manager in InfoSWMM.

 Step 1.  Find, Create or Otherwise Locate a TIN, DEM or DTM for the project area with elevation data that you can  use with the InfoSWMM Subcatchment Manager.
 

Step 2.   Create a Flow Direction Raster using the Watershed Command.


Step 3.   Check to see if there are Sinks in the Elevation Data that have to be filled using the Filled Sink Command.

 Step 4.   Create a Flow Accumulation Raster

 Step 5.   Create the Watersheds from the Flow Direction and Flow Accumulation Rasters.
 



Sunday, January 1, 2012

Continuous Simulation Aids for InfoSWMM

Subject:   Continuous Simulation Aids for InfoSWMM

If you have a large network and especially if you are doing continuous simulation then you want to have many tools for helping you understand the network and the simulation results.  

v  In InfoSWMM and H2OMAP SWMM you can have a Base Network with many differenct Child Scenaio generations.  A Child can be either based on the Base Scenario of a different generation Child Scenario.

v  Facility Manager allows you to make inactive and active sets areas of your network, which makes simulating larger and smaller models a snap to do in InfoSWMM.   Run Manager lets you control which areas of the model  network gets save to the  binary graphics file (Figure 1). 

v  The Process Control in  Run Manager (similar to the process control in SWMM 5) allows the modeler to control  which processes are simulation to  help in her model  calibration.

Figure 1.  Scenarios, Facility Manager and Run Manger Options.

Figure 2.  Run Manager Process Controls.







Saturday, December 31, 2011

How to use SWMM 5 DOS to make an Output Table in the RPT file

Subject:   How to use SWMM 5 DOS to make an Output Table in the RPT file

You can make tables of the node,  link  and  Subcatchment output data in SWMM 5 if you use the DOS SWMM 5 program but not the Windows DLL.   Step 1 is to create the DOS batch file, Step 2 is to select the nodes, links and subcatchments, Step 3 is to run the batch file and Step 4 is to view the RPT tables or extract the data to Excel.  You can do this directly in the InfoSWMM and H2OMAP SWMM graphical user interfaces by using Run Manager, Step 5 to select the nodes, links and subcatchments and Step 6 to view the tables in the browser.

Step 1.   Make a Batch File to call the DOS SWMM 5

swmm5.exe Example1.inp  D:\swmm5.0.022\bob.rpt
pause

Step 2.  Add the nodes,  links and  subcatchments tables you want to generate in the RPT file

[REPORT]
CONTROLS         NO
LINKS                 ALL
NODES               ALL
SUBCATCHMENTS ALL

Step 3.  Run the Batch file

Step 4.  Extract the Tables from the RPT File of SWMM 5


  <<< Node 17 >>>
  ---------------------------------------------------------------------------------
                           Inflow  Flooding     Depth      Head       TSS      Lead
  Date        Time            CFS       CFS      feet      feet      MG/L      UG/L
  ---------------------------------------------------------------------------------
  JAN-01-1998 01:00:00      0.000     0.000     0.000   980.000     0.000     0.000
  JAN-01-1998 02:00:00      5.910     0.000     0.608   980.608    26.065     5.213
  JAN-01-1998 03:00:00     11.935     0.000     0.887   980.887    22.826     4.565
  JAN-01-1998 04:00:00     18.291     0.000     1.143   981.143    21.176     4.235
  JAN-01-1998 05:00:00     12.640     0.000     0.916   980.916    22.426     4.485
  JAN-01-1998 06:00:00      3.925     0.000     0.493   980.493    27.578     5.516
  JAN-01-1998 07:00:00      0.388     0.000     0.161   980.161    38.134     7.627
  JAN-01-1998 08:00:00      0.067     0.000     0.071   980.071    26.937     5.387
  JAN-01-1998 09:00:00      0.029     0.000     0.048   980.048     1.878     0.376

Step 5.  InfoSWMM and H2OMAP SWMM dialog for selecting nodes, links and subcatchments for generating a detailed RPT file table.


Step 6.  Sample InfoSWMM and H2OMAP SWMM RPT Tables if Report Options is used.



InfoSWMM and H2OMAP SWMM are different graphical  user interfaces with similar  tools to the current  version of SWMM 5.  They both use a C++ engine built around the C code engine of SWMM 5.  Most of these blogs apply to SWMM 5, InfoSWMM and H2OMAP SWMM.


Tuesday, December 27, 2011

RDII or Tri Triangular Unit Hydrograph in InfoSewer

Subject:  RDII or Tri Triangular Unit Hydrograph in InfoSewer

RDII or Tri Triangular Unit Hydrograph in InfoSewer

by dickinsonre
Subject:  RDII or Tri Triangular Unit Hydrograph in InfoSewer

The RDII method in InfoSewer is similar to the RDII or RTK  method in  InfoSWMM with some differences.    The RTK data for triangles 1, 2 and 3 are defined in the Unit Hydrograph but instead of individual R values, the overall R is set and the Percent R1,  R2 and R3 are defined based on the total  R.  R3 is calculated internally as 100 – R1 – R2.   Each loading manhole with RDII flow has a total  area, a hyetograph and a Unit Hydrograph.  The hyetograph has to be set at multiples of the unithydrograph, so you can define the time or X columns with integers and then use the Block Edit command to change X to minutes by multiplying  by the Unit Hydrograph time (Figure 1).   You can use only one component if you set R1 or R2 to 100 percent or R3 to 100 percent by setting R1 and R2 to 0 percent (Figure 2).  The overall area of the Unit Hydrograph is divided amongst the loading manhole using the Subbasin Area (Figure 3).   The storm flows generated can be viewed using a Group Graph (Figure 4).
 Figure 1.   Hyetograph Curve for the RDII Unit Hydrograph
 
 Figure 2.  The Unit Hydrograph is defined for various values of R, R1,  R2, T1,  T2,  T3, K1,  K2 and  K3. 


Figure 3.  The Unit Hydrograph and Hyetograph are tied to a particular loading manhole using a Subbasin Area.



Figure 4.  The Unit Hydrographs that are generated can be viewed using a Group loading Manhole Graph.  The R1, R2 and R3 have only one triangle.
 .

Saturday, December 24, 2011

How is the Maximum Link Flow Applied in SWMM 5?

Subject:  How is the Maximum Link Flow Applied in SWMM 5?

How is the Maximum Link Flow Applied in SWMM 5?

by dickinsonre
Subject:  How is the Maximum Link Flow Applied in SWMM 5?
The maximum flow limit for a link applies to the kinematic wave and the dynamic wave solution.   The inflow to the link  in the kinematic wave solution is limited (Figure 1) but the calculated link flow is limited in the dynamic wave solution after the link flow (Figure 2):
1.       Is checked using the Culvert Inlet Equations (optional)
2.      The normal flow equation is checked (internally optional depending on the Normal flow options) and
3.      The Picard iteration solution under relaxation parameter (always 0.5) is applied (Figure 3).
Figure 1.  Kinematic Wave Solution Limits the Inflow to  the Link Maximum limit.
Figure 2. Dynamic Wave Solution link  flow limit.
Figure 3.  The Link  flow in the dynamic wave solution has three checks at each iteration in a time step.

Adverse Slope Convention in SWMM 5

Subject:  Adverse Slope Convention  in  SWMM 5

If the slope of a link  is negative and the solution  is dynamic wave then the following data will be switched in link.c in SWMM 5.  All upstream data for the  link  is switched to the downstream end of the link  and  vice versa.   The means that if the flow  is from the original upstream node to the downstream node the flow  will  be negative in the output of  SWMM 5. 

Negative flow in SWMM 5 means:

1.   The link has an adverse or negative slope,
2.   The link  has reverse flow if the link slope is positive.
Adverse Slope Convention  in  SWMM 5



Friday, December 16, 2011

How to make a shape file from a Output Relate in InfoSWMM

Note:   How to make a shape file from a Output Relate in InfoSWMM:

How to make a shape file from a Output Relate in InfoSWMM

by dickinsonre
Note:   How to make a shape file from a Output Relate in InfoSWMM
Step 1.  Make an Output Relate for the Conduit Summary Table using the Operation Tab in Attribute Browser.
Step 2:  Using the GIS Gateway you can save q/Q and d/D to a shape file that can then be added to the Arc GIS Table of  Contents
Step 3.   You now have a Shape File for the value of q/Q or Flow over Full Flow.  You can also use the Symbology Tab in Data Properties to color and/or make bar charts and bubble charts from the summary q/Q and d/D values during the simulation for each link.


Tuesday, December 13, 2011

InfoSWMM and H2OMAP SWMM Facility Manager

InfoSWMM and H2OMap SWMM Facility Manager

by dickinsonre
The InfoSWMM Facility Manager offers the knowledgeable engineer complete control what elements are simulated in her or his model.  You can make active or inactivate elements based the type of Network Element, A Network Path, A Mouse Drawn Map Selection, The Domain, A selection set, a DB Query, a Query Set and a Special Query.  You can make the simulated network smaller or larger depending on your simulation or calibration requirements.  For example, you can have a whole basin network but model only a branch or a subset of the network if you are using the Calibrator or Designer Addons.


 

Monday, December 12, 2011

How to Find the Proportional loading to a link or manhole in InfoSewer

Subject:  How to Find the Proportional loading to a link  or manhole in InfoSewer

How to Make Contours in InfoSWMM and H2oMAP SWMM

by dickinsonre
Subject:  How  to Make Contours in InfoSWMM and H2OMAP SWMM
It is easy to make contours out of node input data or node output data in InfoSWMM and H2oMAP SWMM using the Contour Tool in the Contour Tab of the Attribute Browser.  You can control the resolution and the type of smoothing for the created contour (Figure 1).  If you haveInfoSWMM Suite you can use the Contour to DEM command in the Subcatchment Manager to convert the created Contour to an Elevation or DEM file (Figure 2 and Figure 3).   The Layer properties for the created elevation can be altered in Arc GIS to make a better visual depiction of the elevation (Figure 4).
Figure 1.  Contour Tool in the Contour Tab of the Attribute Browser.
Figure 2.  Contour to DEM command in the InfoSWMM Subcatchment Manager will convert the created Contour to an Elevation or DEM file.
Figure 3.  Convert the Value Field and  NOT the level Field of the contour.
Figure 4.  The Arc GIS Layer properties can be used to alter the default color ramp and the number of classes used in the color ramp.

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