Skip to content

Pump library

The pump library holds two kinds of curve:

  • A pump head curve relates flow to the head that a pump produces.
  • A pump efficiency curve relates flow to the efficiency that a pump runs at.

For what either curve does to the solution, see the EPANET 2.2 manual.

A pump does not need the library. There are four Pump type options. Three of them keep the definition on the pump itself: Constant power, 1-point curve (design point) and 3-point curve (standard curve).

The library serves the fourth option, Library pump. Several pumps can share one library curve, and an edit to that curve moves all of them. The library is also the only source of an Efficiency curve. See Pumps.

You open the library from the toolbar: Operational data > Pump Library. There is no keyboard shortcut for it.

Two rows on a pump also carry Open library…:

  • Pump name, when Pump type is Library pump
  • Efficiency curve, in the pump’s Energy section

Either row opens the library on the matching section, with that pump’s curve already selected. The panel stays open behind the dialog. The Efficiency curve row is there for every Pump type, so it is the shortest way in from a pump.

When you select several pumps, the multi-asset panel offers the same action.

A new project has no curves, and neither demo network carries one. Thus the library that you open first usually says Curves are empty and Add a curve to get started.

Section Columns Where you choose it
Pump head flow, head Pump name on a Library pump
Pump efficiency flow, efficiency Efficiency curve, in a pump’s Energy section

A curve belongs to one section. Each selector offers the curves of its own section and nothing else. Thus a head curve never appears in an Efficiency curve list.

The pump library, with a head curve and an efficiency curve

These curves and the tank volume, valve and headloss curves in the curves library are one collection in two dialogs. No curve crosses between the sections of one dialog and the sections of the other. But the two libraries share their names: a curve cannot take a name that another curve in either library already uses.

Down the left side there is one section for each kind of curve. Each section shows the number of curves in it and a button that adds one: Add pump head curve or Add pump efficiency curve. The button puts the new curve straight into that section.

The menu on a curve has Rename, Duplicate and Delete. The library refuses a name that another curve already uses. The field stays open until you type a free name.

A new head curve arrives with a single point: a flow of 1 and a head of 1. This point is a placeholder to type over. When an INP gives a pump a curve that the file never defines, an import writes the same pair. A new efficiency curve arrives with one row of zeroes. This curve is not valid yet.

Duplicate copies the points into a new curve in the same section. This action is the quickest way to make a variant of a curve that you already fitted.

When you select a curve, the app opens a numbered point table with a graph under it. You type the values in both columns. Each column caption carries the project’s own unit: Flow and Head on a head curve, Flow and Efficiency on an efficiency curve.

A head curve carries one more row, a read-only Curve type above the graph. You do not choose this value. The app reads the points that you typed and names the curve:

  • 1-point curve (design point) for a single point
  • 3-point curve (standard curve) for three points
  • Multi-point curve for any other number of points

For the first two types, the graph draws the curve that EPANET fits through the points. For a multi-point curve, the graph joins the points as they are. An efficiency curve has no Curve type row.

Add point at the foot of the table adds a row. The menu on a row has Delete, Insert row above and Insert row below. Both insert actions copy the row that you opened the menu on.

When you click a point on the graph, the app selects its row in the table. When you select a row, the app selects the matching point on the graph. When you save, the app drops the rows at the bottom of the table that hold zero in both columns.

A four-point pump head curve, its points and its graph

Section The rule
Pump head flow strictly increasing, head strictly decreasing
Pump efficiency flow strictly increasing, no rule on efficiency

A head curve must fall: more flow gives less head. It is the only curve in the app that falls. Head values must be in descending order. is the only message anywhere that asks a column to descend.

A head curve can hold a single point. That point is a design point, and EPANET builds the rest of the curve from it. For the shape that EPANET assumes, see the EPANET 2.2 manual. Neither of the two values can be zero. Two messages report a zero value: Flow needs at least one non-zero value. and Head needs at least one non-zero value.

An efficiency curve needs at least two points. The app reports a single point as The curve requires more than one point. No rule constrains the second column, so an efficiency curve can rise to a best efficiency point and fall away again.

The dialog validates the points as you type. A problem appears in three places at once:

  • The table marks the cells that are wrong.
  • The graph draws the points that are wrong as triangles.
  • A banner headed Invalid curve appears between the table and the graph, and names what is wrong.

The curve’s entry in the list carries a warning triangle for as long as the problem lasts.

A head curve whose heads no longer descend, with the banner naming the column

When the project holds curves with no kind at all, a third heading named Uncategorized appears. An INP import produces such curves. The library lists them, and you can delete them. But you cannot edit their points, and the library shows them under plain X and Y headings. Until the app knows the kind of a curve, it has no rule for the points and no unit for the captions.

The menu on an uncategorized curve offers Set as Pump head and Set as Pump efficiency. When you choose one, the app files the curve in that section. The curve is then available to the rows that take that kind.

The curves library lists the same curves under Uncategorized. Its menu offers Set as Tank volume, Set as Valve and Set as Headloss instead. When you file a curve in either place, it leaves the list of the other. When you delete a curve here, the app deletes it there as well. This dialog does not show the curves that are already filed as tank volume, valve or headloss.

You cannot delete a curve that a pump names, head curve and efficiency curve alike. The library refuses and says Cannot delete a curve that is in use. To free the curve, first change the pumps that point at it. Then the delete goes through. See Energy for where you choose a pump’s efficiency curve.

Save stays disabled until something changes. The whole edit lands as one step in the undo history. If you press Cancel with unsaved work, the dialog offers Discard changes or Keep editing.

While the app plays back a run, the library opens read-only. The library also opens read-only on Main while the project holds a scenario. Main is locked for as long as a scenario exists. A read-only library has a single Close button, no add buttons and no editable cells.

Inside a scenario, the library is editable. But the edit belongs to that branch and never reaches the saved file. See Scenario work.

Curves are part of the model. The app writes them into the project file with their kinds, and they come back exactly as you left them. See Projects.

An INP file works with the library in four ways:

  • An export writes every curve in the library, used or not. A comment before each curve names its kind: ;PUMP: or ;EFFICIENCY:. That comment is what lets a file that epanet-js wrote come back with its sections intact.
  • A run hands the engine only the curves that something references. Thus a curve in the library that nothing points at never reaches a result.
  • The app writes a pump’s own typed curve as well, under a generated name of its own. An INP has no way to describe a pump other than by power or by a curve.
  • An import takes the kind from the first thing that uses the curve. Thus every pump in an INP that names a curve comes back as a Library pump, whether it was one before or not. A model exported from here with three 3-point curve (standard curve) pumps returns with three library curves and three pumps that point at them.

See Opening an existing model and Import and export.

  • PumpsPump type, Pump name and the Energy section that these curves feed.
  • Curves — the other half of the same collection, for tanks and valves.
  • Energy — what an efficiency curve changes in the energy report, and the project-wide efficiency it replaces.