Nexma

Design a water network

Pressurized distribution

In this tutorial you will design a complete pressurized water distribution network for a service zone — from a single source to a main reaching every parcel, validated against pressure and head constraints. You will learn how to create a project with the Water skill, load demand nodes and a source, ask Jax to size and route mains, validate pressure with simulation, optimize pipe class with Nexma MathEngine, review on the Globe, and branch an alternative. The only prerequisite is an account in an organization; see Quickstart if you need one.

What you'll build

A gravity-and-pump distribution network for one pressure zone: a source (treatment plant or tank), transmission and distribution mains sized by diameter and class, and service pipes to every demand node. The design will hold pressure within the Water skill's bounds — at least 40 PSI at meters, no more than 60 PSI in distribution mains — under design demand, validated by a pressure simulation. You will end with a sized, optimized network and a saved what-if branch.

1. Create the project

From Projects → New, name the project (for example, "Highland Zone Water") and bind its world model:

  1. Pick the Water ontology — TreatmentPlant, PumpStation, StorageTank, Valve, Hydrant, Meter, PressureSensor, PressureZone, and the pipe entities.
  2. Add the Water Distribution skill, which carries the AWWA pipe classes, Hazen-Williams roughness tables, and the pressure constraints.
  3. Click create. The project opens with its own Globe view and Jax session.

See Projects and Skills overview.

2. Load demand nodes and a source

Open the Globe and scope your work. Draw a polygon around the pressure zone; it is saved into the project as an editable entity.

Then bring in your demand and source:

  • Demand nodes. Connect a meters or parcels feed through Nexma SyncEngine, each carrying a design demand. With no feed, ask Jax to derive demand nodes from parcels: "Place a demand node at every parcel centroid inside the zone, with default residential demand."
  • Source. Place a treatment plant or import an existing one. If the zone has elevation difference, place a tank or pump station as well:
Place a storage tank at the high point of the zone and a pump station drawing from the treatment plant. Use the terrain elevation to set static head.

Confirm the source and a sample of demand nodes look right before designing.

3. Design with Jax

Open the Jax panel and describe the network you want, naming the pressure budget and pipe-sizing rules explicitly:

Lay distribution mains to every demand node in this pressure zone. Hold pressure at least 45 PSI everywhere under design demand. Use 8-inch ductile-iron mains on collectors and 6-inch on locals. Respect elevation and keep velocity within AWWA limits.

Jax plans the layout, calls Nexma MathEngine for routing and sizing, and streams the mains and service pipes onto the Globe. Mains render thickness-graded and colored by pressure class; the source renders as a 3D site, tanks as scaled cylinders.

Push on the design:

  • "Show me the longest branch and its pressure drop."
  • "Where is pressure closest to the minimum?"
  • "Why is this collector 8-inch instead of 6-inch?"

4. Optimize and validate

Validate the design with a pressure simulation, then optimize pipe class for cost. Start with the simulation:

Run the pressure simulation across the full distribution graph under design demand. Flag any node below 45 PSI and any main above 60 PSI. Check flow conservation at every junction.

Jax runs the pressure-drop solver via Nexma MathEngine and flags any over-budget paths inline on the Globe. Then optimize:

Minimize total pipe cost. Downsize any main that stays within the pressure budget at a smaller diameter, and upsize any that violates it. Re-run the simulation and confirm every node holds at least 45 PSI.

If the pump cannot hold pressure at the high point, ask Jax to resize it: "Size the pump from the elevation difference plus fitting head loss to deliver 45 PSI at the worst node." See the Water skill and Running an optimization.

5. Review and branch

Review on the Globe. Click a meter to read its simulated pressure under design demand; hover a main for diameter and pressure class. Confirm the valve isolation segments are small enough to repair without a major outage:

Show the isolation segment for each valve and flag any segment serving more than 50 meters.

Then explore an alternative without touching the approved plan. Branch the DataStore:

On a new branch, add a second pressure zone fed by a booster pump for the high parcels, and compare against main — worst-case pressure, total pipe length, and pump energy.

Compare the branch against main the way a reviewer reads a pull request: entities added, mains rewired, constraints checked. Merge if it improves the design; otherwise discard. See Spatial Branches.

6. Operate

When the plan holds on main, export it. From Project → Export, choose:

  • EPANET INP to run the model in external hydraulic tooling.
  • GeoJSON or shapefile for general handoff.

Ask Jax for a handoff summary:

Summarize the final network: source and pump sizing, total main length by diameter, worst-case pressure at any meter, and any valve segment over the isolation target.

The network stays live. If demand grows, reopen the project, edit on a branch, re-simulate, and re-optimize — every change is reversible.

Recap

You created a Water project, loaded demand nodes and a source, designed a pressurized network with Jax holding pressure within the skill's bounds, validated it with a pressure simulation, optimized pipe class for cost with MathEngine, reviewed isolation segments, branched a two-zone what-if, and exported to EPANET. Every step was a real, reversible change grounded in the project's world model.

Where to go next

Design a water network