Sunday, January 29, 2012

Philadelphia and Green Infrastructure

Category: Water
Posted on: January 18, 2012 4:14 PM, by
 Liz Borkowski
Philadelphia and Green Infrastructure
Aging US water infrastructure has meant more leaks, flooded basements, and massive sinkholes in cities across the US. Fixing the water and sewer systems in need of repair will take billions of dollars, and it's hard to find that kind of money in the budget these days.

Saqib Rahim reports for ClimateWire on Philadelphia's decision to use "green infrastructure" rather than building a larger pipe system to handle the water that's dumped on the city during severe storms. The combination of more intense storms and more paved area is a problem: Impervious surfaces like roads, sidewalks, and parking lots can't absorb rainfall, so it ends up in the city's stormwater collection system -- which, in many older cities, is combined with the sewage system. When these combined systems are overwhelmed by heavy rainfall, the result is often that a rainfall-and-sewage mixture gets discharged into a local waterway. (Read more about this problem here.) Rahim explains Philadelphia's solution to this problem:
Instead of building an even larger pipe system to address the issue, [Water Department Commissioner Howard] Neukrug pitched the most aggressive "green infrastructure" plan in the country. Through increased vegetation, rain barrels, sponge-like roads and other measures, the city would try to absorb more water where it fell. The ground would filter out pollutants, reduce strain on the pipelines and make the city a more attractive place.
Neukrug tells Rahim that the green infrastructure solution will cost Philadelphia $2 billion, compared to $8 billion to $10 billion for larger underground tunnels. But the part of the city's plan that's currently causing a controversy is what water customers will pay. They'll now be charged not just for the water they use, but for their contributions to stormwater problems -- that is, sites with a lot of impervious surfaces will pay more.
The average household will see an average bill rise from approximately $60 to around $63.50, Rahim reports. For some large businesses, though, costs could rise significantly over the next few years -- and 100 of these businesses have hired a lobbyist and met with the Water Department to oppose implementation of the new billing practices.
I can understand why these businesses are upset. When they invest and plan for their businesses' futures, they assume the rules will stay the same. Their extensive impervious surfaces are causing problems for public health, but they might not have realized that their decisions about what to pave were raising costs for the city's residents (and everyone else affected when its sewage ended up in local waterways).
Changing the rules isn't ideal, but it's the best solution if the current rules create incentives for behavior that harms public health. If this country had never changed the rules to make businesses start bearing more of the cost for problems they cause the general public (externalities, in economic language), we'd still have rivers so polluted that they catch fire. Governments can ease the pain by providing grants or low-interest loans to help businesses and individuals invest in greener setups -- and, Rahim reports, Philadelphia is offering loans to businesses that want to green their facilities. Increases in bills will also be capped at 10% or $100 per month.
Such an approach could also be used to address other public health issues like CO2 emissions -- but so far, opposition to a carbon tax has been stronger than support. In the meantime, I'll be watching Philadelphia's effort and hoping it succeeds with a green solution to water infrastructure challenges.

Saturday, January 28, 2012

Example SWMM 5 Model for Activated Sludge

Note:   Example SWMM 5 Model for Activated Sludge

Example SWMM 5 Model for Activated Slude

by dickinsonre

Note:   Example SWMM 5 Model for Activated Sludge
Here is one example of how to model an activated sludge tank.  The image is Wikipedia (  and is the watermark background in the SWMM 5 GUI.  There is 100 lps inflow, 20 percent recycle and 10 percent sludge drawoff.   You can adjust the amount of recycle and sludge altering the pump type 2 flows or if you want to increase the inflows – add more flow in the RawWater inflow node.

Three Flow Divider Link Example in SWMM 5

Subject:  Three Flow Divider Link Example in SWMM 5

Three Flow Divider Link Example in SWMM 5

by dickinsonre
Subject:  Three Flow Divider Link Example in SWMM 5 
You can have more than 2 downstream OUTLET Type links in the SWMM 5 dynamic wave solution.  Each link, Under5, Over5 and ReturnFlow is an OUTLET Link with a rating curve depth/flow table.  Depending on the depth in the storage node DIVIDER, the flow is computed from the table for links Under5, Over5 and Return Flow. 

Output Statstics Manager to find negative flows in InfoSWMM

Subject:  Output Statstics Manager to find negative flows in InfoSWMM

Output Statstics Manager to find negative flows in InfoSWMM

by dickinsonre
ubject:  Output Statstics Manager to find negative flows in InfoSWMM

Output Statstics Manager to find negative flows with these parameters:

1.       Pipe Features
2.       Use a Domain with your force mains
3.       Select Flow
4.       Event Dependent
5.       Total – NOT Mean or Peak to  find the negative and positive flows
6.       Large NEGATIVE Flow Threshold
7.       Large NEGATIVE Volume Threshold
8.       Zero for Interevent Time to pick up all values
9.       You will get a table that shows you the minimun flows, and a histogram of the flows



Flow Dividers in SWMM 5 Dynamic Routing

Note:  Flow Dividers in SWMM 5 Dynamic Routing

Flow Dividers in SWMM 5 Dynamic Routing

by dickinsonre
Note:  Flow Dividers in SWMM 5 Dynamic Routing 
You can  have flow dividers in SWMM 5 dynamic routing by using Storage Nodes for the dividers, OUTLET links for the downstream links and minimizing downstream HGL effects. The needed components are: 
1.   A Storage Node for the divider node as a OUTLET Link does not have a Surface Area,
2.   Two or More OUTLET Links as the downstream diversion and cutoff links,
3.   Two or More Rating Curves to divide the flow up based on either depth or head,
4.   Pumps, Outfalls or Steep Sloped Links Downstream of the diversion and cutoff links to minimize downstream HGL  effects

Tuesday, January 24, 2012

Keep and Dampen options and their effect on the four main terms of the St Venant equation

Note:  The Keep and Dampen options and their effect on the four main terms of the St Venant equation. 

The Keep and Dampen options and their effect on the four main terms of the St Venant equation in SWMM5

by dickinsonre
Note:  The Keep and Dampen options and their effect on the four main terms of the St Venant equation. 

The four terms are are used in the new flow for a time step of Qnew:

Qnew = (Qold – dq2 + dq3 + dq4) / ( 1 + dq1)
when the force main or gravity main is full dq3 and dq4 are zero and  Qnew = (Qold – dq2) / ( 1 + dq1)

The dq4 term in dynamic.c uses the area upstream (a1) and area downstream (a2), the midpoint velocity, the sigma factor (a function of the link Froude number), the link length and the time step or
dq4 = Time Step * Velocity * Velocity * (a2 – a1) / Link Length * Sigma
where Sigma is a function of the Froude Number and the Keep, Dampen and Ignore Inertial Term Options.  Keep sets Sigma to 1 always and Dampen set Sigma based on the Froude number, Ignore sets Sigma to 0 all  of the time during the simulation

the dq3 term in dynamic.c uses the current midpoint area (a function of the midpoint depth), the sigma factor and the midpoint velocity.

dq3 = 2 * Velocity * ( Amid(current iteration) – Amid (last time step) * Sigma
dq1 = Time Step * RoughFactor / Rwtd^1.333 * |Velocity|

The weighted area (Awtd) is used in the dq2 term of the St. Venant equation:
dq2 = Time Step * Awtd * (Head Downstream – Head Upstream) / Link Length or
dq2 = Time Step * Awtd * (Head Downstream – Head Upstream) / Link Length

Normally, dq1 (Friction Loss / Maroon in the Graph) balances dq2 (Water Surface Slope Term or Green in the Graph) but often for links with a large difference between upstream and  downstream depths dq4 (Red in the Graph) can have a significant value.  If dq4 or dq3 are important then the depth of water to increases to pass the same flow using the Keep option over the Ignore.   If you have a link with a Froude number near or over 1.0 (Supercritical) then using Keep or Dampen  for the Options may result in depth differences.   The effect of Keep is to increase the "loss" terms in the St VenantEquation.   The effect of Dampen and Ignore is to decrease the sum of the "loss" terms in the St. Venant Solution and lower the simulated depth.

Thursday, January 19, 2012

Rooftop gardens could solve Singapore's flooding problem

Rooftop gardens could solve Singapore’s flooding problem
By Tyler Falk | January 18, 2012, 9:09 AM PST
From SmartPlanet

In the last two years, rapid urbanization and changing weather patterns have lead to major flash floods in Singapore.
“[It] can be safely presumed that the weather patterns in Singapore have changed,” said Singapore’s Minister for the Environment and Water Resources last year after a flash flood where in one day Singapore received 77 percent of the amount of rainfall that usually falls in June. “It is very likely that our drainage systems will have to be redesigned to cope with such intense flashes.”
Singapore convened a panel to come up with the best options for dealing with flash floods and stormwater runoff. Their suggestion? Not an overhaul of the drainage system, but rooftop gardens.
Big infrastructure projects are costly and take time to replace. And while the upgrading the drainage system is likely necessary, the panel suggests a quick fix to Singapore: require rooftop gardens on all new and retrofitted buildings. Rooftop gardens don’t just add beauty to the city, they can also play a big role in mitigating floods by reducing and slowing stormwater runoff and filtering pollutants.
But it’s not just rooftop gardens, Singapore’s Today reports:
These measures are to be complemented with diversion canals, storage tanks along “pathways” of drains, drain capacity improvements, and finally, flood barriers, raised platform levels - some of which is already being done, but “could be carried further”, noted Prof Balmforth.
The panel also suggested storage tanks, rain gardens, and porous pavement.
Photo: HenryLeongHimWoh
Urbanisation has led to increase in storm water run-off: Expert panel [Today]

Monday, January 16, 2012

Surcharged Node and the Link Connection in SWMM 5

Subject:   Surcharged Node and the Link Connection in SWMM 5

Surcharged Node and the Link Connection in SWMM 5

by dickinsonre
Subject:   Surcharged Node and the Link Connection in SWMM 5
 surcharged node in SWMM 5 uses this point iteration equation (Figure 1): 
dY/dt = dQ / The sum of the Connecting Link values of  dQ/dH 
where Y is the depth in the node, dt is the time step, H is the head across the link (downstream – upstream), dQ is the net inflow into the node and dQ/dHis the derivative with respect to H of the link  St Venant equation.  If you are trying to calibrate the surcharged node depth, the main calibration variables are the time step and the link  roughness: 
1.   Mannings's N
2.   Hazen-Williams or
3.   Darcy-Weisbach 
The link roughness is part of the term dq1 in the St Venant solution and the other loss terms are included in the term dq5.  You can adjust the roughness of the surcharged link  to affect the node surcharge depth. 
Figure 1.  The Node Surcharge Equation is a function of the net inflow and the sum of the term dQ/dH in all connecting links. Generally, as you increase the roughness the value of dQ/dH increases and the denominator of the term dY/dt = dQ/dQdH increases. 
 Figure 2.  The value of dQ/dH in a link as the roughness of the link increases.

Sunday, January 15, 2012



Mariel Emrich in Talking Science:
ScreenHunter_05 Jan. 14 21.42Mosquitoes are as adept at flying in rainstorms as under clear skies. But how is that possible? Wouldn’t rain crush a mosquito to the ground since mosquitoes weigh 50 times less than raindrops?
David Hu, an assistant professor of mechanical engineering and biology at the Georgia Institute of Technology, and his graduate research assistantAndrew Dickerson have found that while mosquitoes do get hit by raindrops, they don’t get crushed by them.
Hu discussed their research in a talk at November's APS Division of Fluid Dynamics Meetingthat was entitled “How Mosquitoes Fly in the Rain”.
The researchers measured the impact forces of raindrops on both regular mosquitoes and custom-built mosquito mimics. The mimics were made from small Styrofoam spheres of mosquito-like size and mass. They used high-speed video to capture images of the mosquitoes getting hit with raindrops.
Since the bugs fly so slowly (a maximum of 1 meter per second) compared to the drops (which fall between 5 to 9 meters per second), the mosquitoes cannot react quickly enough for avoidance, and most likely cannot sense the imminent collision.
More here.
Posted by Abbas Raza at 03:42 PM | Permalink 

How to Make Icons and Expand the Toolbars in infoSWMM and InfoSewer

Subject:  How to Make Icons and Expand the Toolbars in InfoSWMM and InfoSewer

How to Make Icons and Expand the Toolbars in InfoSWMM and InfoSewer

by dickinsonre
Subject:  How to Make Icons and Expand the Toolbars in InfoSWMM and InfoSewer
You can customize the toolbars in InfoSWMM and InfoSewer by clicking on Customize and performing 4 steps:
Step 1.  Click on Customize
Step 2.  Move the tool from the Command list to the toolbar.
Step 3.  Change the Button Image for the Default Style.
Step 4.  The Toolbar now has a new Icon for the InfoSWMM command.
Step 1.  Click on Customize
Step 2.  Move the tool from the Command list to the toolbar.
Step 3.  Change the Button Image for the Default Style.
Step 4.  The Toolbar now has a new Icon for the InfoSWMM command.

How do I correct a fatal error resulting in automatic shutdown in ArcMap?

Subject:   How do I correct a fatal error resulting in automatic shutdown in ArcMap?

If you cannot open ArcMap, InfoSewer or InfoSWMM at all and get a fatal Esri error the problem may be the file normal.mxt

“If the startup file in ArcGIS Desktop or component applications (e.g., ArcMap, ArcGlobe, ArcScene) is corrupt, a fatal error can occur. Renaming or deleting the existing startup file will often resolve the error. Once the corrupted startup file is removed, ArcGIS will create a new startup file after the application is launched (”

To remove the startup file in Windows XP for Arc GIS 10 go to the directory C:\Documents and Settings\Your Name\Application Data\ESRI\Desktop10.0\ArcMap\Templates and delete the file Normal.mxt.   You then reopen Arc Map and the normal.mxt file will be recreated and smaller.  You will have to reset the ArcMap toolbars to better control InfoSewer and InfoSWMM.  

 How do I correct a fatal error resulting in automatic shutdown in ArcMap?

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

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)

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