Technical Reference

Municipal Dynamic Demand Generation

In traditional EPANET hydraulic modeling, engineers are required to manually calculate an aggregate "Base Demand" for every junction and assign it statically before running the model. IAMDD eliminates this manual abstraction by generating municipal demands dynamically during the initialization phase.

By deeply integrating GIS spatial data with agronomic libraries, IAMDD calculates both indoor baseline flows and weather-driven outdoor sprinkling flows on the fly.

1. Indoor Baseline Flow Calculation

When a simulation initializes, the engine iterates through every Municipal Area polygon on the map and calculates its indoor baseline flow based on its specific density category.

Residential Logic

For residential polygons, the exact physical acreage of the shape is ignored for indoor demand calculations. Instead, the engine looks at the number of units or homes (which is typically auto-populated by the OpenStreetMap building footprint scanner).

The total baseline flow is calculated by multiplying the number of housing units by the indoor demand parameter defined in the user's Residential Catalog (e.g., 0.5 gpm per home). This base flow is then subjected to the assigned 24-hour Diurnal Pattern during the simulation loop to mimic morning and evening indoor usage peaks.

Commercial Logic

For commercial polygons, the engine applies the baseline flat flow defined in the indoor demand field (often calculated per 1,000 sq.ft of floor space in the Library). Like residential demands, this baseline is then scaled hour-by-hour using the Diurnal Pattern.

2. Outdoor Lawn Soil Tracking (Dynamic Irrigation)

The most significant departure from traditional municipal modeling is IAMDD's treatment of urban landscaping. Rather than applying an arbitrary "summer peaking factor" to the base demand, IAMDD explicitly models residential and commercial lawns as agricultural crops.

Area Initialization

During setup, the engine checks the area properties for irrigable landscaping. For residential zones, this is calculated by multiplying the number of homes by the default lawn size per home. For commercial zones, it uses the raw outdoor lawn size field.

If there is any landscaping present, the engine automatically instantiates a "Residential Lawn" crop object for that polygon. It mathematically converts the landscaping acreage into a target flow rate capable of delivering a standard 0.20 in/hr sprinkler application. It also assigns standard lawn crop parameters, including an 85% Crop Coefficient, 70% spray efficiency, and a 50% maximum allowable depletion limit.

The Soil Moisture Loop

Once initialized, this "Lawn" object is injected into the overarching simulation loop alongside traditional agricultural fields.

  1. Evapotranspiration (ET): Every hour, the engine calculates the moisture depleted from the neighborhood's soil profile using live ETo data and the lawn's crop coefficient.
  2. Triggering: When the lawn's soil moisture drops below the 50% depletion threshold, the engine triggers an irrigation event.
  3. Hydraulic Loading: During the irrigation event, the engine injects the calculated target flow rate (simulating the neighborhood's sprinkler systems kicking on) directly onto the assigned delivery junction.

This results in highly accurate, weather-responsive municipal peaking behavior that reflects actual physical water usage rather than theoretical curves.