Build an accurate picture of demand across your network

Allocate consumption at the meter level, assign diurnal patterns by customer class, and reconcile zone inflows against metered use.

Demand is where models drift from reality

Even a network with perfect GIS geometry will produce misleading pressures and velocities if demands are poorly assigned. When consumption relies on coarse top-down allocations or uniform peaking factors, those errors compound through calibration, planning, and operations.

epanet-js lets you build a bottom-up demand model grounded in actual meter records and DMA inflows, giving you a verifiable basis for every downstream simulation.

Allocate demand directly from customer meters

Represent consumption where it actually enters the system. Import customer meter points from your GIS or billing data, and assign them to the network using configurable proximity rules:

  • Target distribution mains: set maximum pipe diameters and search radii so meters connect to local mains rather than transmission lines.
  • Manual overrides: reassign individual meters or groups to alternate pipes with a single click based on operational knowledge.
  • Aggregated visibility: view total assigned demand, meter counts, and individual customer lists for any pipe or junction.

Profile diurnal demand across multiple categories

Assign time-varying consumption patterns directly from a project library or import them alongside your customer points. epanet-js supports multiple demand categories per junction, allowing you to separate residential, commercial, and industrial demand on the same node.

The network map shades dynamically by demand, making it easy to spot high-consumption zones and verify peaking patterns visually before running extended-period simulations.

The demand patterns editor in epanet-js, with a daily profile plotted over 24 hours.

Reconcile DMA inflow against metered consumption

Bring billing data and district meter readings into a unified water balance. epanet-js reconciles total inflow into each DMA against the customer demands assigned within its boundaries.

Instead of multiplying an assumed baseline by a generic peaking factor, use your metered inflows and diurnal consumption records to establish true average day and peak day demands directly from measured data.

Model pressure-dependent leakage with FAVAD

Leakage isn't a static base demand. epanet-js supports both standard emitters and the EPANET 2.3 fixed and variable area discharge (FAVAD) model to simulate pressure-dependent leakage accurately.

As pressures shift across diurnal cycles or after operational adjustments, leakage rates adjust dynamically across each zone, so unbilled water behaves as it does in the field.

Calculate leakage directly from minimum night flow

Automate district water balance calculations using logged night flow data. Compare minimum night flow (MNF) against estimated legitimate night use (LNU) to isolate background losses and burst leakage for each DMA.

By calculating non-revenue water per zone from logged data rather than applying a system-wide percentage, you can rank DMAs by leakage volume and target pressure management where it delivers the highest return.

Demand analysis, the epanet-js way

Demand where it comes from

Allocate consumption to the customers and meters that drive it, instead of spreading it evenly and hoping.

Profiles through the day

Apply demand patterns so consumption matches how water is really used across the morning and evening peaks.

Balanced across zones

Reconcile metered inflow with allocated consumption so every DMA in your network adds up.

Leakage in the picture

Account for the water that doesn't reach a customer, so the gap between supply and use is explained, not ignored.

Get demand right for your network

Import your customers, profile demand through the day, and balance every zone.

Connect demand directly to the rest of your model

Accurate demands lay the groundwork for everything that follows. In epanet-js, demand analysis lives in the same workspace as your network geometry and field observations, so your customer allocations feed directly into calibration and scenario planning without spreadsheet exports or external post-processing.

Where to next

An accurate demand picture feeds everything downstream.

Frequently asked questions

How demand allocation, patterns, and zonal balance work in epanet-js.

What can I do for demand in epanet-js?
A lot. You can import customer points from your spatial data, allocate them to the right pipes with rules you control, build and assign demand patterns, attach multiple demand categories to a junction, and map the network by actual demand to check your allocation at a glance.
How does customer allocation work?
Each customer point is connected to the nearest suitable pipe using rules you set, such as a maximum pipe diameter and a search distance, so demand attaches to distribution mains rather than large transmission lines. You can reconnect any point by hand, and see the total customer demand on both the junction and the pipe.
What is demand analysis adding on top of that?
A layer that reconciles the demand you've allocated against what your meters actually record. It brings DMA inflow and consumption together so each zone balances, and surfaces the difference as leakage rather than leaving it buried.
How is leakage handled?
Pressure matters for leakage, so use emitters or the fixed and variable area discharge (FAVAD) model in EPANET 2.3 to represent leakage that rises and falls with pressure, instead of a fixed number. Demand analysis builds on that to keep the zonal picture honest.
How does zonal balancing work?
Bring the metered inflow for each DMA together with the consumption allocated inside it. The reconciliation surfaces the gap between the two as leakage, so every zone adds up and the difference becomes a number you can act on.

Demand you can trust, zone by zone

Build the demand picture your model deserves. Launch epanet-js free, or book a demo to walk through it with us.