Principal Investigator |
|||
| Robert Dickinson
Robert Dickinson,
Position:
Contact:
|
This idea started while listening to this talk at ICWMM 2026:
Enhancing Urban Water Balance Representation in EPA SWMM Using a Two-Layer Infiltration Approach
by Sherif S. Ahmed, Craig Kipkie, Tara Paradis, Lotte Veth, and Bert van Duin.
This proposal describes a minimal-impact enhancement to EPA SWMM5 that adds two-layer soil infiltration to standard subcatchments by reusing the existing LID (Low Impact Development) control’s soil layer definitions and the proven LID percolation equation from lid_proc.c.
The approach requires only two additions to the existing INP file format: a SOIL2 keyword in [LID_CONTROLS] to define a lower soil layer (using the identical 7 parameters already used by the existing SOIL keyword), and a single UseAsInfil flag in [LID_USAGE] that tells SWMM to use the LID’s SOIL + SOIL2 layers as the subcatchment’s pervious area infiltration model instead of the default [INFILTRATION] method.
No new infiltration method keyword is needed in [OPTIONS]. No new INP section format is required. Existing INP files are 100% backward compatible. The total change to existing SWMM5 source code is approximately 39 lines.
Standard SWMM5 infiltration methods (Horton, Green-Ampt, Modified Green-Ampt, Curve Number) treat the soil column as a single homogeneous layer. This is a significant simplification for many real-world sites where distinct soil horizons have very different hydraulic properties. Common scenarios that single-layer models cannot capture include:
Meanwhile, the SWMM5 LID module already contains a sophisticated soil moisture model with an exponential percolation equation that has been validated through years of use. This proposal simply makes that proven model available for general subcatchment infiltration without duplicating any code or parameters.
The SWMM5 LID control’s SOIL line already defines all seven properties needed for a soil layer: thickness, porosity, field capacity, wilting point, saturated hydraulic conductivity (Ksat), capillary suction head, and initial moisture deficit. The LID parser already handles input validation, unit conversion, and range checking for all these parameters.
Rather than creating a completely new infiltration method with a new 14-parameter format and hundreds of lines of new parsing code, this approach makes the minimum possible changes:
That’s it. One new keyword, one new flag.
The comparison with a traditional “new infiltration method” approach is striking:

INP File Setup
Define a soil profile as a LID control with both SOIL and SOIL2 layers. The LID type is BC (Bio-Retention) since it already requires a SOIL line:

Then assign it to subcatchments with UseAsInfil = 1:

When UseAsInfil = 1, Number/Area/Width can be zero — the LID is serving as a soil profile definition, not a physical BMP. Multiple subcatchments can share the same profile. Subcatchments without UseAsInfil = 1 continue using the standard [INFILTRATION] method.
The LID Percolation Equation
The heart of the two-layer model is the percolation equation already proven in SWMM5’s LID module (lid_proc.c, soilFluxRates function):
perc = Ksat × exp(−15.0 × (1.0 − θ / porosity))
This exponential function approximates the Brooks-Corey unsaturated hydraulic conductivity relationship. The exponent of 15.0 was calibrated for the LID module and provides realistic behavior across all USDA soil types:

The same equation is applied twice: once for upper → lower layer percolation, and once for lower → deep groundwater percolation. Green-Ampt infiltration handles the surface → upper layer flux.
Moisture Balance
Each layer independently tracks moisture content with these governing equations:
Moisture is bounded between the wilting point and porosity of each layer. During dry periods, moisture drains to field capacity via continued percolation, and the Green-Ampt cumulative infiltration resets to allow infiltration capacity recovery.
Reference values for USDA soil texture classes. These are used directly in both the SOIL and SOIL2 lines:

A typical two-layer profile pairs a more permeable upper layer (e.g., Sandy Loam topsoil) with a less permeable lower layer (e.g., Clay Loam or Clay subsoil). The contrast in Ksat values between layers controls how quickly water percolates through the full profile and whether perched saturation develops at the layer interface.
The implementation requires two new source files (lid_twolayer.h and lid_twolayer.c) and minimal changes to existing code:
Total changes to existing source files: approximately 39 lines. All new computation logic is isolated in the two new files. The implementation reuses the existing LID soil property parsing, validation, and unit conversion — zero duplication.
This enhancement is fully backward compatible with all existing SWMM5 input files:
The C source code (lid_twolayer.h and lid_twolayer.c), a complete example INP file, and a detailed integration guide are available. The proposed enhancement is being submitted for consideration by the SWMM5+ Technical Advisory Committee at CIMM.org.
Future enhancements under consideration:
Source code, example INP file, and full integration guide available upon request.

There are no discussions for this research project.
