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


    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)