Thursday, October 7, 2010

Adding New View Variables To the SWMM 5 Delphi and C Code

Subject: Adding New View Variables To SWMM 5 for Villemonte Correction for Downstream Submergence. A simple seven step procedure to modify the SWMM 5 GUI Delphi Code and the SWMM 5 C code.

Step 1: Add a new View Variable to the SWMM 5 GUI Delphi code UGLOBAL.PAS

You need to add a new variable name (LINKVILLEMONTE) and increase the index number of LINKVIEWS

LINKVILLEMONTE = 48; //Output // (5.0.022 - RED)

LINKQUAL = 49; //Output // (5.0.022 - RED)

LINKVIEWS = 48; //Max. display variable index // (5.0.022 - RED)

Step 2: Add a new BaseLinkUnits description to the SWMM 5 GUI Delphi code UGLOBAL.PAS

('',''), // Villemonte Correction // (5.0.022 - RED)

('mg/L','mg/L')); // Quality

Step 3: Add a new Link View Variable SourceIndex description to the SWMM 5 GUI Delphi code Viewvars.txt

(Name: 'Villemonte Correction';

SourceIndex: 43;

DefIntervals: (25,50,75,100)),

(Name:'Quality';

SourceIndex: 44;

DefIntervals:(0.25,0.5,0.75,1.0))

);

Step 4: Add a new Link View Variable LINK_VILLEMONTE to the SWMM 5 C code in enums.h

You also need to increase the number of Link Results in enums.h for the increased number of view variables

#define MAX_LINK_RESULTS 45 // (5.0.022 - RED)

LINK_VILLEMONTE, // Villemonte Correction // (5.0.022 - RED)

LINK_QUAL}; // concentration of each pollutant

Step 5: Add a new variable to objects.h for the structure Tlink to remember the Villemonte correction at each iteration for each Weir and Orifice

double Villemonte; //(5.0.022 - RED)

} TLink;

Step 6: In the SWMM 5 LINK.C code in procedure weir_getInflow save the current iteration value of the Villemonte correction to the new structure variable

// --- apply Villemonte eqn. to correct for submergence

Link[j].Villemonte = 1.0; //(5.0.022 - RED)

Link[j].head = head; //(5.0.022 - RED)

if ( h2 > hcrest )

{

ratio = (h2 - hcrest) / (h1 - hcrest);

q1 *= pow( (1.0 - pow(ratio, weirPower[Weir[k].type])), 0.385);

if ( q2 > 0.0 )

q2 *= pow( (1.0 - pow(ratio, weirPower[VNOTCH_WEIR])), 0.385);

Link[j].Villemonte = pow( (1.0 - pow(ratio, weirPower[Weir[k].type])), 0.385); //(5.0.022 - RED)

}

Step 7: Save the value of the saved Villemonte correction in LINK.C in the procedure link_getResults so it can be read and seen in the Delphi interface

x[LINK_VILLEMONTE] = (float)Link[j].Villemonte; // (5.0.022 - RED)

Bottom and Side Outlet Orifices in SWMM 5

Note: The main difference between an Bottom and Side Outlet orifice at the same offset elevation and the same diameter is the depth at which the flow in the orifice will switch between weir flow and orifice flow. The Side Outlet orifice has Weir flow until the Orifice is full but the Bottom Orifice has Weir flow until the Critical Height which is usually shorter than the maximum depth of the orifice.

For a circular orifice the Critical Height is:
Critical Height = Orifice Discharge Coefficient / 0.414 * Orifice Opening / 4
For a rectangular orifice the Critical Height is:
Critical Height = Orifice Discharge Coefficient / 0.414 * (Orifice Opening*Width) / (2.0*(Orifice Opening+Width))


St. Venant Terms in SWMM 5

St. Venant Terms in SWMM 5 and how they change for Force Mains

by dickinsonre
Note:  An explanation of the four StVenant Terms in SWMM 5 and how they change for Force Mains.  The HGL is the water surface elevation in the upstream and downstream nodes of the link.  The HGL for a full link goes from the pipe crown elevation up to the rim elevation of the node + the surcharge depth of the node.  dq1 is calculated differently based on full or partially full force mains and gravity mains

            dq2 = Time Step * Awtd * (Head Downstream – Head Upstream) /  Link Length  or

            dq2 = Time Step * Awtd * (HGL) /  Link Length

            Qnew = (Qold – dq2 + dq3 + dq4) / (  1 + dq1)

when the force 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

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 StVenant equation:

            dq2 = Time Step * Awtd * (Head Downstream – Head Upstream) /  Link Length

 



Orifice and Weir flow calculations

Note: Orifice and Weir Flow Computations

The orifice flow calculation proceeds as follows:

1. Initially and whenever the setting (i.e., the fraction opened) changes, flow coefficients for both orifice and weir behavior are computed as follows:

a. For side orifices:

Define Hcrit = h/2 where h is the opening height.

b. For bottom orifices:

i. For a circular orifice, compute area over length (i.e., circumference) as AL = h /4.

ii. For a rectangular orifice compute AL = h*w/(2*(h+w)) where w is the opening width.

iii. Compute Hcrit = Cd*AL/0.414 where Cd is the orifice discharge coefficient.

At step 1b, the critical head for the bottom orifice, where orifice flow turns into weir flow, is found by equating the result of the orifice equation to that of the weir equation

Cd*Area*sqrt(2g)*sqrt(Hcrit) = Cw*Length*sqrt(Hcrit)*Hcrit or

Hcrit = (Cd * Area) / (Cw/sqrt(2g) * Length) The value of Cw/sqrt(2g) for a sharp crested weir is 0.414.

c. Compute the flow coefficients (where A is the area of the opening):

Corif = A*sqrt(2g)*Cd

Cweir = A*sqrt(2g)*Cd*sqrt(Hcrit)

2. During flow routing, compute the degree of inlet submergence (f) and head (H) at the current time step:

a. Define:

H1 = upstream head (from node with higher head),

H2 = downstream head (from node with lower head) ,

Hcrest = elevation of bottom of opening,

Hcrown = elevation of top of opening,

Hmidpt = elevation of midpoint of opening

b. For side orifices:

f = min{1.0, (H1 - Hcrest) / (Hcrown - Hcrest)}

if f < 1.0 then H = H1 - Hcrest,

else if H2 < Hmidpt then H = H1 - Hmidpt

else H = H1 - H2

c. For bottom orifices:

if H2 > Hcrest then H = H1 - H2

else H = H1 - Hcrest

f = min{1.0, H/Hcrit}

3. Compute the flow through the orifice (Q):

if f < 1.0 then Q = Cweir*f^1.5

else Q = Corif*sqrt(H)

4: Villemonte correction

If f < 1.0 and H2 > Hcrest then:

r = (H2 - Hcrest) / (H1 - Hcrest)

Q = Q * (1 - r^1.5)^0.385

Weir Flow Computations

1. Weir head calculations

h1 = Upstream Node Depth + Upstream Invert Elevation

h2 = Downstream Node Depth + Downstream Invert Elevation

If h2 is greater than h1 then the flow is reversed and h2 = h1 and h1 = h2

Weir Crest = Upstream Node Invert Elevation + Weir Offset Depth

Head = h1 – Weir Crest

2. Center Weir flow for Transverse Weirs

Q = Cw * Weir Length * Head^3/2

3. Center Weir flow for Side Flow Weirs

Weir behaves as a transverse weir under reverse flow

Q = Cw * Weir Length * Head^3/2

And under normal flow

Q = Cw * Weir Length * Head^5/3

4. Center Weir flow for V Notch Weirs

Q = Cw * Weir Slope * Head^5/2

Wednesday, October 6, 2010

Villemonte Correction for Weir Submergence in SWMM 5

Subject: Villemonte Correction for Weir Submergence for weirs when the downstream head is greater than the weir crest elevation.

Tuesday, October 5, 2010

Node Continuity Error of 100 percent in SWMM5

Note: A continuity error of 100 percent for some nodes in SWMM5 simply means that the total lateral flow and total inflow from the upstream links and the outflow to downstream links is zero.

Saturday, October 2, 2010

SWMM 5 Pump Curve Head/Flow Curves (1)

Subject: The Pump flow is based on the lookup table you enter for the pump (Figure 1). At each iteration during each time step of the solution SWMM 5 will look up the flow for the pump based on the current control variable across the pump. The control variable for the pump can be one of four variables:
1. The volume of the upstream wet well,
2. The depth of water at the upstream node or inlet node without interpolation between data points,
3. The downstream water surface elevation across the pump minus the upstream water surface elevation, and
4. The depth of water at the upstream node or inlet node with interpolation between data points.
The pump summary table in the rpt file will tell you how often the pump was used, the maximum flow, the average flow, the total volume of the pump, the power usage and the percent of the time off the entered pump curve. You can also plot the pump flow versus the inlet depth to see how often the pump was off the pump curve (Figure 2).

Figure 1: Plot of Head and Flow for Pump PUMP1@82309e-15009e over time along with the input and output table for the pump.

Figure 2: Plot of Head versus Flow for Pump PUMP1@82309e-15009e

Average Number of Node Iterations

Subject: SWMM 5 will iterate for the new node depth at each time for a minimum of 2 iterations to a maximum of 8 iterations based on the Node Continuity equation. If you plot the average number of iterations over time then typically the number of iterations go up as the Inflow increases. The nodes with the most iterations changes over time as the peak flow moves through the network as shown in this plan view. The iterations used during the simulation is a function of the node stop tolerance which has a default value of 0.005 feet in SWMM 5.

Link Area Types in SWMM 5

Note: There are 7 Link flow classification classes that are used to assign the area of the link to the upstream and downstream nodes of the link. The classes used during the simulation of the model are shown in the Link Classification Table in the RPT Report File. The supercritical class is the same as the subcritical assignment. The supercritical is a class of subcritical with a Froude number over 1.

Link Area Types in SWMM 5, InfoSWMM and H2OMap SWMM

by dickinsonre
Note:  There are 7 Link flow classification classes that are used to assign the area of the link to the upstream and downstream nodes of the link.  The classes used during the simulation of the model are shown in the Link Classification Table in the RPT Report File.  The supercritical class is the same as the subcritical assignment.  The supercritical is a class of subcritical with a Froude number over 1.
Class
Description
Link Area Assignment
      0      Dry conduit
1/2 Upstream and 1/2 Downstream Node
      1      Upstream end is dry
1/2 Downstream Node
      2      Downstream end is dry
1/2 Upstream Node
      3      Sub-critical flow
1/2 Upstream and 1/2 Downstream Node
      4      Super-critical flow
1/2 Upstream and 1/2 Downstream Node
      5      Free-fall at upstream end
1/2 Downstream Node
      6      Free-fall at downstream end
1/2 Upstream Node

Class Description Link Area Assignment
0 Dry conduit 1/2 Upstream and 1/2 Downstream Node
1 Upstream end is dry 1/2 Downstream Node
2 Downstream end is dry 1/2 Upstream Node
3 Sub-critical flow 1/2 Upstream and 1/2 Downstream Node
4 Super-critical flow 1/2 Upstream and 1/2 Downstream Node
5 Free-fall at upstream end 1/2 Downstream Node
6 Free-fall at downstream end 1/2 Upstream Node

Orifice Critical Depth for Separating Weir Flow from Orifice Flow for Bottom Outlet Orifices in SWMM5

Note: Orifice Critical Depth for Separating Weir Flow from Orifice Flow for Bottom Outlet Orifices
The Critical height is the opening where weir flow turns into orifice flow. It equals (Co/Cw)*(Area/Length) where Co is the orifice coeff., Cw is the weir coeff/sqrt(2g), Area is the area of the opening, and Length = circumference of the opening. For a basic sharp crested weir, Cw = 0.414. All of the units are based on the internal SWMM 5 units of American Standard.
For a circular orifice the Critical Height is:
Critical Height = Orifice Discharge Coefficient / 0.414 * Orifice Opening / 4
For a rectangular orifice the Critical Height is:
Critical Height = Orifice Discharge Coefficient / 0.414 * (Orifice Opening*Width) / (2.0*(Orifice Opening+Width))
The Orifice Critical Depth changes dynamically as the orifice is opening and closing for a bottom outlet orifice. The critical depth separating the orifice weir flow from orifice flow for a side outlet orifice is the height of the orifice.

Orifice Critical Depth for Separating Weir Flow from Orifice Flow for Bottom Outlet Orifices in SWMM 5

by dickinsonre
Note:  Orifice Critical Depth for Separating Weir Flow from Orifice Flow for Bottom Outlet Orifices

The Critical height is the opening where weir flow turns into orifice flow. It equals (Co/Cw)*(Area/Length) where Co is the orifice coeff., Cw is the weir coeff/sqrt(2g), Area is the area of the opening, and Length = circumference of the opening. For a basic sharp crested weir, Cw = 0.414.  All of the units are based on the internal SWMM 5 units of American Standard.

For a circular orifice the Critical Height is:

Critical Height = Orifice Discharge Coefficient / 0.414 * Orifice Opening / 4

For a rectangular orifice the Critical Height is:

Critical Height = Orifice Discharge Coefficient / 0.414 * (Orifice Opening*Width) / (2.0*(Orifice Opening+Width))

The Orifice Critical Depth changes dynamically as the orifice is opening and closing for a bottom outlet orifice.  The critical depth separating the orifice weir flow from orifice flow for a side outlet orifice is the height of the orifice.


Friday, October 1, 2010

The four cross sectional areas in a link of SWMM 5 and InfoSWMM

Note: Four cross sectional areas are used in a link of SWMM 5. The weighted hydraulic radius (Rwtd) is a function of the Froude Number of the link and the upstream and downstream hydraulic radius. The Rwtd value is used in the computation of the friction slope or the dq1 term in the file dynamic.c

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


Possible Link Graph and Computational Variables

The 4 Areas of a  Link in SWMM 5 - Rising Limb

The 4 Areas of a  Link in SWMM 5 - Rising Limb and Falling Limb

Three Depths in a Link in SWMM 5















Note: An explanation of the three depths in a Link in SWMM 5 and a plot of the upstream, middle and downstream link depth. The middle depth is an average of the upstream and downstream link depths. The plot of the variable depth or the middle depth is always between the upstream and downstream depths. All three depths are used in the computation of the St. Venant Flow in SWMM 5. The upstream area is a function of the upstream depth and the downstream area is a function of the downstream depth.
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
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

Time Base is T + T*K from the Time(T) and Storage (K) values

Note: Each of the RDII UH’s has a base time for the convolution of the RDII from each UH. The Time Base is T + T*K from the Time(T) and Storage (K) values used in the RTK data. In this particular case:
· The Fast UH has a time base of 22 hours,
· The Medium UH has a time base of 430 hours, and
· The Slow UH has a time base of 4212 hours.
If this is altered as in the bottom image you can see the difference in the total RDII I&I Flow
· The Fast UH has a time base of 22 hours,
· The Medium UH has a time base of 36 hours, and
· The Slow UH has a time base of 52 hours.

H2OMAP-Sewer - FM Split Issue

Note: One method would be to add a duplicate Wet Well/Pump/Force Main set of links to pass the flow from the upstream Force Main to the two downstream Force Mains (FM). The pump should be fixed capacity to handle all of the split GM flows. In this particular example the flows are split 50/50 to links 25 and 35 after leaving the loading manhole 24.

Pumps and Force Mains in InfoSWMM

Note: A pump is modeled in InfoSWMM somewhat akin to InfoSewer. You have a Wetwell connected to a Pump which in turn is connected to a Force Main. You can decide wheter a pipe is a Force Main or a Gravity Main by using the Atribute Browser and selecting Yes for Force Main and entering a FM Roughness.

You can also use the PickAx tool in the Attibrute Browser to convert the node from a Manhole to a WetWell / Storage node.

RDII UH Storage Sensitivity

Note: The initial abstraction in the three RDII UH’s vary between 0 storage and maximum storage (Dmax). The speed of storage recovery is governed by the parameter Drec. You can see the sensitivity of this parameter in this graph of the UH Storage.


The Effect of the Hydrology Time Step on RDII Flow

Note: The wet hydrology time step and the report time step should be adjusted together to generate the smoothest RDII flow at your nodes. The three images show below show;

1. If you hydrology time step equals your rainfall time step then the RDII flow will have a step function appearance or your flows in this case will be constant for one hour or the rainfall interval,

2. If you choose a smaller hydrology time step then the flows will be smoother (2nd image), but

3. If the report time step is much less than the hydrology time step then the flows will still be stepwise linear for the hydrology time step size.

When picking a hydrology time step for continuous simulation you should probably pick a value of about 5 minutes so that the generated flows are smooth but not so small that a lot of time is used in the RDIi convolution process to generate the 3 units hydrographs for RDII.

Utilities/Locate/Element in InfoSWMM

You can use the command Utilities/Locate/Element to search for a number or string using Contains

 You will have to pick Contains each time.



Sunday, September 26, 2010

SWMM 5 Related Websites

MY BLOG LIST

Conduit Lengthening in SWMM 5

Conduit Lengthening in SWMM 5
If you use the conduit lengthening option in SWMM 5 then your short conduits will be lengthened based on the CFL or explicit time step criterion. Any conduits in which the Length Factor or the courant time step link length over the original length is greater than 1 will be lengthened and will have its roughness lowered so that the conduit is hydraulically the same at full conduit depth. The full area, full width and full hydraulic radius stay the same in the modified link – only the length, slope and roughness are altered.
Length Factor = (Wave Celerity + Full Depth Velocity) * Time Step / Conduit Length, and for those links in which the Length Factor is greater than 1
New Roughness = Old Roughness / (Length Factor) ^1/2
New Slope = Old Slope / Length Factor
A few metric's for showing how this option has altered the network are shown in the figure below:
1. The most important is the increase in Network full volume as you never want to drastically alter the volume of your network,
2. The number of conduits modified along with the new mean slope (lower) and the new total conduit length are important indicators,
3. The mean wave celerity, full flow velocity and courant time step mean give the user some idea of the optimal time step for the simulation.

SWMM 5 Flooding Volumes for Ponding and Without Ponding


SWMM 5 Flooding Volumes for Ponding and Without Ponding

No Ponded Area for a Flooded Node

Ponded Area for a Flooded Node

Mud Flow in SWMM 5

Comment: A method to model Mud flow and other Non Newtonian Fluids in a modified SWMM 5.  You will have to modify the code as described in the link to actually model mud flow. Link Here

Tuesday, September 21, 2010

LPS Output Units when the Inflow is CMS

LPS Output Units when the Inflow is CMS
1. The inflow time series is in units of CMS,
2. If you set the internal units to LPS in Run Manager,
3. Set the output units to LPS in Output Unit Manager,
4. Add a Scale multiplier of 1000 in the Inflows DB Table then
The inflows do not have to be altered, the internal model flows will LPS, the velocity will be m/s with 6 decimal places in the RPT file and the flows will be LPS with 3 decimal places in the RPT file.

Sunday, September 19, 2010

The Three Flows in SWMM 5 for a Link

The Three Flows in SWMM 5 for a Link
There are actually three flows computed or used for a link in SWMM 5:
1. The St. Venant Flow equation flow
2. The Upstream Normal Flow Manning’s equation based on the link roughness, slope, upstream cross sectional area and upstream hydraulic Radius,
3. The flow actually used in the model which is either the flow computed from St. Venant or Manning’s equation
The following three links shows how this works in a real model:
· Link 8040 almost always uses the St. Venant Equation because it is dominated by backwater and surcharge
· Link 8100 almost always uses Manning’s equation except at the beginning and end of the simulation,
· Link 1600 is an adverse slope link and it mainly uses the St. Venant equation.
· Flow = the flow actually used during the simulation
· Qdynamic = the flow computed from the St. Venant Equation
· QNormUp = Flow based on Manning's equation at the upstream end of the link.
· QNormDown = Flow based on Manning's equation at the downstream end of the link.


Link 8100 almost always uses Manning’s equation except at the beginning and end of the simulation. The beginning and end of the simulation is when the non linear terms dominant.


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