5.1.007 bug: large conduit seepage rates can generate high continuity error

Rob James

Large conduit seepage rates can generate a high continuity error and potentially create a situation where total seepage is greater than the total inflow volume. SWMM5.1.007 does have a check to ensure total losses are less than the available conduit storage, but it doesn’t seem to trigger.

In conduit_getLossRate() in link.c:

    // --- total loss rate cannot exceed volume stored in conduit
    if ( totalLossRate > 0.0 )
    {
        maxLossRate = 0.5 * (Link[j].oldVolume + Link[j].newVolume) / tStep;
        if ( totalLossRate > maxLossRate )
        {
            evapLossRate = evapLossRate * maxLossRate / totalLossRate;
            seepLossRate = seepLossRate * maxLossRate / totalLossRate;
            totalLossRate = maxLossRate;
        }

Relatedly, when a conduit is dry, SWMM5 adds a minimum depth of 0.0001 ft. As a result, if conduit seepage is non-zero, this minimum depth could be contributing to seepage at every routing time step, resulting in a non-trivial contribution to continuity error (a 5 s time step would contribute 0.86 in/hr to seepage).