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