Thursday, April 2, 2009

Surcharge Level in SWMM 5

How does the surcharge depth work in SWMM 5?

The surcharge depth from the node attribute table is added to the maximum full depth in the routine dynwave.c as an upper bound check for the new iteration depth of yNew.

// --- determine max. non-flooded depth
yMax = Node[i].fullDepth;
if ( canPond == FALSE ) yMax += Node[i].surDepth;

If the new depth yNew is greater then yMax then the program will calculate either the amount of flooding from the node or the ponded depth and volume.  If the node cannot pond (canPond is False) then the amount of overflow is the excess flow in the node and the new depth yNew is set to yMax.

if ( canPond == FALSE )
{  Node[i].overflow = (Node[i].oldVolume + dV - Node[i].fullVolume) / dt;
Node[i].newVolume = Node[i].fullVolume;
yNew = yMax;    }
else    {
Node[i].newVolume = Node[i].fullVolume + (yNew-yMax)*Node[i].pondedArea;
Node[i].overflow = (Node[i].newVolume - Node[i].fullVolume) / dt;    }
if ( Node[i].overflow < FUDGE ) Node[i].overflow = 0.0;
return yNew;
 As an example, if the node floods then the depth will go above the manhole rim elevation as the following image shows.

 If the ponded area of the node is zero then any excess flow is lost as overflow and the depth only stays at the rim elevation.