How a water model is built, checked, calibrated and used, from the elements in an EPANET file to fire flow and master plan analysis. Everything is on this page, free, with no sign-up.
A water distribution model is a mathematical copy of your pipe network. For any demand, it tells you the pressure at every node and the flow in every pipe. Engineers use it to answer questions that would be too costly, too slow or too risky to answer in the field.
Load future demands and find the pipes, pumps and tanks that run out of capacity, and when.
Test every hydrant for the flow it needs while the rest of its zone keeps at least 20 psi.
Simulate outages, pump failures and valve closures before a crew touches anything.
Track water age, chlorine decay and where each source's water ends up.
Every good model follows the same path. Skipping a step usually shows up later, during calibration or in a master plan that cannot be defended.
The questions the model must answer set its level of detail.
GIS, elevations, billing, SCADA, pump curves, tank drawings.
Import the network, fix connectivity, assign elevations and demands.
Run it and clear the warnings, negative pressures and odd results.
Adjust it until it matches field measurements.
Test it against data that was not used to calibrate.
Fire flow, deficiencies, alternatives, master plan.
Update it as the network and demands change.
| Simulation | What it is | Use it for |
|---|---|---|
| Steady state | One snapshot: demands, tank levels and pump states fixed at one moment. | Peak hour checks, fire flow, quick what-ifs. |
| Extended period (EPS) | A series of snapshots, usually hourly, over 24 hours to several days. Tanks fill and drain; pumps switch on and off. | Tank cycling, pump operation, energy use, water age and quality. |
EPANET describes a network with two kinds of objects: nodes, where water enters, leaves or is stored, and links, which carry water between nodes. Everything is saved in a plain-text .inp file, one section per element type.
| Element | Represents | Key inputs | Common mistake |
|---|---|---|---|
| Junction | A point where pipes meet, a customer demand point, or a hydrant. | Elevation, base demand, demand pattern. | Wrong elevation datum or a no-data value such as −9,999. Every pressure at that node is then wrong. |
| Reservoir | An infinite source with a fixed head: a lake, a clearwell, a connection to a wholesale supplier. | Total head (water surface elevation), optional head pattern. | Entering depth instead of elevation. A reservoir never runs dry, so it should not stand in for a tank. |
| Tank | Storage whose level rises and falls: elevated tanks, standpipes, ground storage. | Bottom elevation, initial, minimum and maximum level, diameter or a volume curve. | Levels entered as elevations rather than depths above the tank bottom. |
| Element | Represents | Key inputs | Common mistake |
|---|---|---|---|
| Pipe | A main or service line. | Length, internal diameter, roughness, minor loss, status (open, closed, check valve). | Nominal diameter instead of internal diameter, or GIS length in the wrong unit. |
| Pump | A pump that adds head to the flow. | Pump curve (head against flow), speed setting, efficiency curve, energy price. | A one-point curve used far from its design point, or the pump drawn in the wrong direction. |
| Valve | A device that controls pressure or flow (types below). | Type, diameter, setting. | A PRV setting entered as head when the model expects pressure, or the reverse. |
| Valve | What it does | Typical use |
|---|---|---|
| PRV — pressure reducing | Limits the pressure on its downstream side to the setting. | Feeding a lower pressure zone from a higher one. |
| PSV — pressure sustaining | Keeps the pressure on its upstream side at or above the setting. | Protecting pressure in an upper zone while it feeds a lower one. |
| PBV — pressure breaker | Forces a fixed pressure drop across the valve. | Modeling special devices; rarely used. |
| FCV — flow control | Caps the flow through the valve at the setting. | Wholesale meters with a contract limit, rate-of-flow valves. |
| TCV — throttle control | Adds a fixed minor loss to represent a partly closed valve. | Throttled valves found during calibration. |
| GPV — general purpose | Follows a user-defined head-loss curve. | Backflow preventers, turbines, anything not covered above. |
LINK P1 OPEN IF NODE T1 BELOW 10. Rule-based controls combine conditions with IF, AND and THEN.A model solves two laws at once. At every node, flow in equals flow out plus demand. Around every loop, the head losses balance. Everything else follows from how pipes lose head as water moves through them.
Head is the energy of the water, expressed as an elevation in feet: where water would rise to in an open standpipe. Pressure is head minus ground elevation, converted to psi.
As flow rises, the loss of head rises with roughly the square of flow. That is why pressure falls faster and faster as demand climbs, which matters most in fire flow analysis (Section 7). Most US water models use Hazen-Williams:
| Pipe material | Typical starting C | Notes |
|---|---|---|
| PVC / HDPE | 140–150 | Stays smooth with age. |
| Ductile iron, cement-lined | 120–140 | Lining protects the C-factor. |
| Asbestos cement | 120–140 | Common in mid-century systems. |
| Steel, lined | 110–140 | Depends on lining condition. |
| Cast iron, unlined and old | 40–100 | Tuberculation shrinks the effective diameter. This is the main target of calibration. |
These are starting values only. Field tests in Section 6 replace them with values measured in your own system.
EPANET uses the Global Gradient Algorithm. It guesses the flows, computes the head losses, corrects the heads and repeats until the changes are smaller than the accuracy setting, usually 0.001. If it cannot converge in the allowed trials, it says so. Treat that as a modeling error to fix, not a result to report.
Most of the effort in a model goes into data, not into the software. A model built from clean GIS data, good elevations and real metered demand usually needs only light calibration. One built from guesses never calibrates properly.
| Data | Typical source | Used for |
|---|---|---|
| Pipe network | GIS (mains, hydrants, valves), as-built drawings | Geometry, diameter, material, install year, valve status |
| Ground elevations | LiDAR digital elevation model (DEM), survey | Junction elevations, and from them every pressure |
| Customer demand | Billing records, AMI meter data, production records | Base demand per node and diurnal patterns |
| Facilities | Pump test curves, tank drawings, PRV settings | Pumps, tanks and valves |
| Operations | SCADA history, operator logs, control strategies | Controls, boundary conditions, calibration targets |
| Field tests | Hydrant flow tests, pressure loggers | Calibration (Section 6) |
Pipes become links and their end points become junctions. Carry over diameter, material and install year as attributes, because calibration groups and master plan costs depend on them.
GIS drawn for maps is rarely drawn for hydraulics. Look for pipes that cross without a junction, near-miss end points that should connect, duplicate pipes, orphan nodes and parts of the network with no path to a source. Snap within a small tolerance, often 1 to 5 ft, and review every fix.
Sample the DEM at each junction. Spot-check hilltops, valley bottoms and sites near tanks and pumps, because an error of 10 ft there moves the pressure by more than 4 psi.
Enter pump curves from the most recent pump tests, tank geometry from drawings, and PRV settings from the field. Confirm which boundary valves between zones are closed.
Geocode each billing account, assign it to the nearest junction on a pipe of suitable size, and convert billed volume to an average flow. Then scale the total to match production, so that non-revenue water (leaks and unbilled use) is spread across the system as well.
Build diurnal patterns from SCADA flows or AMI data, separately for residential, commercial and industrial users where possible. Then set up the demand conditions below.
Skeletonization removes small pipes and dead ends to make the model faster. An all-pipes model is the norm today for fire flow and water quality work. A master plan of transmission mains can safely drop most 6-inch and smaller pipes.
| Condition | Meaning | Typical ratio to ADD | Used for |
|---|---|---|---|
| ADD | Average day demand: annual use divided by 365 | 1.0 | Water age, energy, baseline |
| MDD | Maximum day demand: the highest single day of the year | 1.5–2.5 | Supply, pumping, fire flow |
| PHD | Peak hour demand: the highest hour on the maximum day | 2.5–4.0 | Minimum pressure checks, pipe sizing |
| MDD + fire | Maximum day plus a fire at one hydrant | — | Fire flow analysis |
The ratios are typical ranges only. Take your own from production records: hot, dry, irrigation-heavy systems sit at the high end.
The first run of a new model always has problems. Before trusting any result, work through these checks in order. Each one catches a different kind of data error.
EPANET reports disconnected nodes, negative pressures, pumps that cannot deliver enough head, and valves that cannot hold their setting. Each warning points to a node or link to inspect.
Color junctions by pressure. Values below 0 or above about 150 psi are nearly always wrong elevations, a closed pipe or a missing PRV, not real conditions.
Total supply should equal total demand plus or minus the change in tank storage. A gap points to an unconnected source, a reversed pump or demand at the wrong units.
Tanks should cycle in a repeating daily pattern. A tank that drains every day or sits full every day points to wrong controls, wrong demand or a wrong pump curve.
Each pump should run near its best-efficiency point and within its curve. A pump pushed off the end of its curve is a sign of a hydraulic or data error.
Ask operators where pressures are low, which tanks are hard to fill and which pumps run all day. If the model disagrees, find out why before you start calibrating.
Calibration is adjusting the model until it matches field measurements closely enough for its intended use. Fix gross errors first; only then tune roughness and demand. A model tuned to cover a closed valve with a C-factor of 20 matches today and fails the next study.
Stress the network so head losses are large enough to reveal roughness. This is the best data for C-factors.
Tank levels, pump flows and station pressures over days. Use them to check demand patterns and controls.
Temporary loggers on hydrants for one to four weeks fill the gaps between SCADA sites.
Put a gauge on the residual hydrant and read the pressure with no hydrant flowing.
Open one or more nearby hydrants fully, read the pitot pressure at the outlet, and compute the flow:
Read the residual hydrant again while water flows. Note the time, tank levels and which pumps were running. The model needs those same conditions to compare against.
Set the boundary conditions, add the measured flow as demand at the flow hydrant, solve, and compare the modeled residual pressure with the field reading.
A useful test drops the pressure by at least 10 psi. A smaller drop means the head loss is too small to tell one C-factor from another.
When the model is off by 10 psi or more, the cause is almost never roughness. Look for closed or partly open valves, wrong elevations, wrong pump curves, a PRV at the wrong setting, or missing pipes.
Group pipes by material, age and diameter, and adjust one C-factor per group, not per pipe. Fewer, physically meaningful parameters make the model hold up beyond the tests it was tuned on.
Adjust group C-factors until the modeled residual pressures match. Values outside plausible ranges for the material point back to step 1.
Adjust diurnal patterns and controls until tank levels and pump flows track the record over several days.
Check the model against tests and days not used in calibration. If it still matches, it is fit for use. Write down what it was calibrated for and what it was not.
There is no single US standard. The AWWA guidelines tie accuracy to the model's intended use. The UK criteria below (WRc) are widely quoted as a benchmark:
| Measure | Target |
|---|---|
| Pressure | Within ±0.5 m (≈0.7 psi) for 85% of readings, ±0.75 m (≈1.1 psi) for 95%, and ±2 m (≈2.8 psi) for all |
| Flow in main pipes | Within ±5% where the flow is more than 10% of total demand; ±10% elsewhere |
| Tank levels (EPS) | Follow the shape and timing of the SCADA trend, typically within 1 to 2 ft |
| Hydrant flow tests | Many US utilities accept a modeled residual within about 5 psi of the field reading |
If a fire starts here and the fire department opens a hydrant, can the pipes deliver enough water, and do the neighbors keep enough pressure while they do? A fire flow analysis answers that for every hydrant in the model, one at a time.
Fire flow is checked at maximum day demand, usually at the busiest hour. Tank levels, pump states and customer use are fixed as they are at that moment.
The hydrant's needed fire flow, for example 1,000 gpm, is added as extra demand at that node, and the network is solved.
It passes only if both rules below hold while the water flows.
Raise and lower the flow and re-solve until you find the most the hydrant can give before either rule breaks. That is the available fire flow. A failing hydrant also gets a shortfall: for example 1,000 gpm needed, 456 available, 54% short.
The hydrant itself keeps at least 20 psi residual while it flows the needed amount.
No customer junction in the hydrant's pressure zone drops below 20 psi. Fittings and valve nodes that serve no one can be left out of the check.
A pressure zone is the part of the network the hydrant is connected to at that hour, bounded by PRVs, flow control valves, pumps and closed pipes. A fire in one zone is judged against that zone only.
The more water a hydrant draws, the more head is lost in the pipes feeding it, so pressure falls faster and faster as flow rises (Section 3). Trace that curve for the hydrant and for the lowest customer in its zone; the available flow is where the first one reaches 20 psi.
From a static pressure and one flowing reading, the standard hydrant flow-test relation (NFPA 291) estimates the flow at 20 psi. Models use it as a first guess, then confirm it with one or two more solves.
The fire code sets the needed flow by building type and size. Under the International Fire Code (Appendix B), typical values are:
| Land use | Needed fire flow | Duration |
|---|---|---|
| One- and two-family homes up to 3,600 sq ft | 1,000 gpm | 1 hr |
| Larger homes | 1,500 gpm and up | 2 hr |
| Commercial, institutional, industrial | 1,500–8,000 gpm | 2–4 hr |
Sprinklered buildings can earn reductions. Your local fire marshal has the final word. Record the needed flow by land use on each hydrant so the analysis tests each one against its own target.
A model's demands describe one particular day. Repeat the test at higher demand to see which hydrants depend on that choice:
| Demand level | Meaning |
|---|---|
| ×1.0 design | The model as it is, labeled with what its demand stands for, such as maximum day |
| ×1.2 | Customers use 20% more water |
| ×1.5 | Customers use 50% more. Some systems cannot sustain this: tanks drain before the chosen hour. |
A hydrant that passes at ×1.0 and fails at ×1.2 is marginal: whether it is acceptable depends on which demand you plan for.
With a working EPS, the same model can track how water ages and how its chemistry changes on the way to the tap. Old water loses disinfectant and grows disinfection by-products, so water age is often the first quality question a utility asks.
| Analysis | What it shows | Key inputs |
|---|---|---|
| Water age | Hours since the water left a source | Tank mixing model, a long EPS |
| Chlorine decay | Residual at every node over time | Bulk decay rate from bottle tests, wall decay by pipe material, source concentration |
| Source trace | Percent of water at each node from a chosen source | The source node to trace |
A water master plan asks whether the system can meet today's and tomorrow's demand at the required level of service, and lists the projects that close the gaps, in order, with costs. The calibrated model is the engine behind every number in it.
Typically existing conditions, 5-, 10- and 20-year, and buildout. Each horizon is a model scenario.
Use land use with unit demand factors (gallons per acre per day by zoning), or population with per-capita use. Add known large developments by hand. Apply the system's own peaking factors to get MDD and PHD.
Agree the pass and fail lines with the utility before running anything (table below). Changing them later reopens every result.
Run each horizon at ADD, MDD, PHD and MDD plus fire. Map every node and pipe that breaks a criterion, and every facility short of capacity.
For each deficiency: a parallel or upsized main, a new loop, a new PRV or zone boundary, more pumping or storage. Test each in the model; a fix in one place can move a problem somewhere else.
Apply unit costs (dollars per foot by diameter, per gallon of storage, per horsepower) plus contingency and soft costs. Compare alternatives on cost, how many deficiencies they solve and how robust they are.
Sequence projects by horizon and urgency, and coordinate with paving and pipe-replacement programs. Re-run the model with each phase built to confirm that the order works.
| Criterion | Typical value | Checked at |
|---|---|---|
| Minimum pressure | 40 psi | ADD and PHD |
| Maximum pressure | 80 psi | Lowest demand; plumbing codes require a PRV above this |
| Fire flow residual | 20 psi | MDD plus fire, in the whole zone |
| Maximum velocity | 5 ft/s (10 ft/s in fire) | PHD and MDD plus fire |
| Head-loss gradient | ≤ 5–10 ft per 1,000 ft | PHD; flags undersized transmission mains |
| Firm pumping capacity | ≥ MDD | With the largest pump out of service (≥ PHD where no storage floats on the zone) |
These are common values, not a standard. Adopt your state's design rules and your utility's own policy.
Storage in each pressure zone is usually the sum of three parts:
Often about 20–25% of MDD, or measured from the EPS as the volume drawn while demand exceeds supply.
Needed fire flow times duration. 3,500 gpm for 3 hours is 630,000 gallons.
Set by policy, for example a number of hours of average demand with the main supply out.
| Worked example: one zone, MDD 4.0 MGD | Volume |
|---|---|
| Equalization, 25% of MDD | 1.00 MG |
| Fire, 3,500 gpm × 3 hr | 0.63 MG |
| Emergency, by policy | 0.50 MG |
| Total required | 2.13 MG |
Compare the total with the usable volume of existing tanks: the volume between operating levels that still keeps the zone above its minimum pressure, not the nameplate capacity.
A complete master plan also asks what happens when things break. Take each major main, pump and tank out of service one at a time, then count the customers who lose pressure and the fire flow that is lost. Pipes whose loss cuts off many customers with no alternative path are candidates for redundancy projects, even where they have no capacity problem.
Everything on this page is done by hand in most utilities today: weeks of GIS cleanup, manual C-factor tuning and one fire flow run at a time. The Drinking Water practitioner track teaches you to automate the same workflow on your own system.
Build the model from GIS by script, run hundreds of fire flow and outage scenarios in the cloud, calibrate automatically against your own field data, and drive it all through an AI agent. Two days, live online, on your own pressure zone.
Free. We'll send an email when we add sections, new free courses or practitioner session dates. Unsubscribe anytime.