SWMM5 Cross-Section Data Explorer

The eight tabulated closed conduits, straight from xsect.dat and xsect.c. Area, hydraulic radius, top width and section factor are computed the way the engine computes them — including the four shapes that ship no area or radius table at all.

1 · Shape

2 · Size and hydraulics

0.0050
0.50

3 · Export

At this depth

Flow
—
—
Velocity
—
—
Area
—
—
Hydraulic radius
—
—
Top width
—
—

Section outline, drawn from the width table

Part-full curves — everything relative to its brim-full value

The flow curve crossing 1.0 before the crown is the reason a sewer carries more than its full-bore flow when running just under the soffit. The engine stores that peak separately as sMax rather than recomputing it.

Full-section constants — xsect_setParams()

Multiply by the full height, or its square for area. These are assigned directly, not derived from the width table — which is why a CUSTOM curve copied from one of these shapes does not route identically to the built-in shape.

Raw tables

How the engine reads these

Five tables, three different index variables. W, A and R are indexed by depth. S is indexed by area, and Y is indexed by section factor. They are read with lookup(), which is linear except for a quadratic correction across the first two intervals, where a circular section's width changes fastest.

Four shapes ship no area or radius table. Gothic, catenary, semi-elliptical and semi-circular have only W, S and Y. The engine gets area by inverting the Y table, then falls through xsect_getRofA()'s default to recover the radius as R = (S/A)^(3/2) — which is exactly consistent with S = A·R^(2/3). This app does the same, so all eight shapes reproduce their published aFull and rFull at full depth.

Resolution is not uniform. Circular is tabulated at 51 points, egg, horseshoe and basket handle at 26, the rest at 21. Integrating the coarse tables trapezoidally lands a few percent below the published aFull, which is why the constants are stored separately rather than derived.

A casing quirk in EPA's own source. The area and radius tables are A_Baskethandle and R_Baskethandle, while the section-factor and depth tables are S_BasketHandle and Y_BasketHandle — lower-case h in one pair, upper-case in the other. Any parser assuming a consistent name silently finds nothing.

Not covered here. Horizontal ellipse, vertical ellipse and arch are also tabulated, but they are selected from standard size catalogues rather than scaled from a single full height, so their constants come from a size index instead of a formula.