Running a Criticality Analysis

Product(s): WaterGEMS, WaterCAD
Version(s): 08.11.XX.XX and higher
Area: Modeling


The purpose of this TechNote is to discuss the Criticality feature available in WaterGEMS and WaterCAD. Additional information can be found in the Help menu for the products. There is also a Quick Start Lesson available for Criticality under Help > Quick Start Lessons.


Criticality provides the user with a flexible tool to evaluate and identify the most critical elements in a water distribution system. Using this process, the user can shut down individual segments of the system and view the results on system performance. This is simulated in a single run rather than in a series of different scenarios.

A variety of indicators are reported for each outage during the criticality analysis. Depending on the type of run, the criticality analysis can report the demand shortfall, volume shortfall, or pressure shortfall in the distribution system for each segment outage.

Starting with WaterGEMS CONNECT Edition Update 2, when you create a new Criticality Study, you will be able to choose between Critical Pipes/Segments and Critical Valves. Critical Valves enables you to determine which valves are most critical in water delivery - those that would result in the largest demand shortfall if they failed and could not be operated. See more: Critical Valves Analysis

Earlier versions will only have the ability to run an analysis based on critical pipes/segments. 

Subsections of the Criticality Tool

Segmentation - This is defined as the pipes that are closed to find the outage segments. This is typically the pipes (full and partial) between values that closed. 

Outage segments - when you click on each segment listed in there, it highlights that segment in blue (in the drawing pane) and any downstream, disconnected segments in red. So if a particular segment that you click on would cause a downstream segment to be disconnected from a source when all it's bounding valves are closed, that disconnected segment shows up as red.

Criticality - when you click each segment in there, it will show you information on the demands that are not met when that segment's bounding valves are closed. For example, if the closure of a particular segment would cause half of the demands in the model to be disconnected, then when you click on that segment in the list, it will show you 50% as the shortfall. Note that the option "run hydraulic engine" exposes some additional constraints. For example, if you enter a pressure constraint of 20 psi, then if there are any demand nodes whose pressure falls below 20 psi when that segment is closed, then those demands are considered to be not satisfied, and the "shortfall" will be effected accordingly.

Getting Started

Before conducting a criticality analysis, the segments to be removed from service during the analysis must be identified. Often this will be defined by the valves in the system, wherein a closed valve will disrupt service to parts of the model. Included in this, the user must identify which types of valves will be used in the analysis. The user will also have to decide which scenario will be used for the analysis.

Once identified, this information will be entered into the Criticality manager. The steps to do this and compute the criticality analysis are detailed below.

NOTE : Patch has been developed for WaterGEMS / WaterCAD  version, related to how Criticality handles initial status of check valves, FCVs, pumps , VSPs , turbines etc. which shall improvise the criticality results. Also fixed issue in how pipe check valves are handled for outage search. To get the latest patch please contact Technical Support. This patch will be included in later versions of

Running a Criticality Analysis

Segmentation Analysis

The Criticality manager can be opened by going to Analysis > Criticality. This will open the following dialog:

Next, click the Options tab. In this section, you will identify how the segments in the analysis will be defined.

The recommended procedure is to place isolation valves on the pipe elements. If you don’t have sufficient data on the location of isolating valves, each pipe element can be isolated. In this case, each distribution segment consists of a single pipe, not including the nodes at each end. You can set this up by way of the “Consider Valves?” option at the top of the page. By default, this item is checked. When it is checked, the segments are defined by the valves. If it is unchecked, the pipes are isolated individually. 

When the “Consider Valves?” option is selected, the default status of the valves is available. By default, these will be set to “Always Use.” If you have some valve types that you don’t want used in the criticality analysis, change this field to “Do Not Use.” Note: if you don’t have a given valve type in the model, you can leave this with the default setting.

There is a valve override section at the bottom of the page. This item is used in cases where an individual valve will not be considered in the analysis, such as if the valve is broken open. Once the options are set as needed, click the New icon in the upper left and choose the scenario you will be using in the analysis. Once this is done, you will have to select the segmentation scope of the analysis. You can either choose a subset of the model or the entire network. With Subset is selected, you can select the subset by clicking the ellipsis button. If you choose Entire Network, all elements in the model will be used.

Next, click the green Compute icon. You may be prompted about update valve placement data. Typically, you will click Yes for this (see more about it here). The criticality analysis will then run. The results will be available in the Segmentation Results tab.

In the middle pane will be a list of all of the segments. In the right pane, you will see the distribution of segments and their properties, such as the number of pipes in a segment and the number of affected nodes. The displayed results are governed by the highlight segment in the middle pane.

Note: this is true of viewing results for the Outage Segments and Criticality sections below as well.

You can view the segments graphically by clicking the Highlight Segments icon at the top of the middle pane.

If you minimize Criticality manger, you can then view the segments on the model itself.

Analyzing Outage Segments

Once the segmentation is completed, you then do an outage analysis. This allows you to determine which segments are affected when a certain valve is closed. To do this, highlight “Outage Segment” in the left pane and select the green Compute icon.  

The results from this section will show you how an outage affects a model, including the number of affected elements (see below for what "affected" means). You can also view these outage segments graphically in the model. Highlight one of the outage segments in the middle pane and select the Highlight Segment icon. When you minimize the window, the outage segment chosen will be highlighted.

If you have customer meters in the model, any customer meter connected to a pipe or node in the outage segment will be included. However, if the customer meter is attached to one of the closed pipes (i.e., one of the pipes in the segmentation), it will not be included in the outage segment.

Criticality Analysis

The final step is to see how the outages affect the demand. This is the most important function of the criticality analysis. It will determine if the system can supply the needed demand if a section is closed, and if it cannot, how much demand shortfall there is as a result of the closure.

Highlight “Criticality” in the left pane. At the top of the right pane is an item called “Run Hydraulic Engine?” If this is unchecked, the model will check the connectivity of the model when certain segments are closed. If you select the green Compute icon, you will be able sort the results to see which outage segments will cause the largest disruption by looking at the “System Demand Shortfall” column.

If you place a check in the “Run Hydraulic Engine?” icon, the program will hydraulically compute the model as well. If the demands are not met in that segment, the check box in the column “Are all demands met?” will not be checked. Note that for large models with many segments, that can take a significant amount of time to complete. As of April 2023, a major enhancement is planned for a future release, to enable multi-threading support to greatly increase the performance of Criticality runs (so they are run in parallel on multiple logical CPU cores). See more here: Utilizing more than one CPU/core in model calculation (multi-threading)

If you have customer meters in the model, the affected customer meters will include all customer meters in the outage segment and if the customer meter is associated with a pipe or node that is part of the pipes that are closed.


  • Demand nodes that are fully disconnected as a result of a segment being closed, are assumed to be zero (even when using the "run hydraulic engine" option).
  • Pressure Dependent Demands (PDD) are often used in conjunction with Criticality, as this enables the demands to vary as the flow varies. For example when pressure in the system drops as a segment is taken out of service, the demand will drop accordingly. 
  • If you are using the "run hydraulic engine" option but are not using PDD, the numerical solver will satisfy the full demand, even if it is below the pressure threshold. (with the exception of fully-disconnected demands which are assumed to be zero in such cases as mentioned above) This can be considered conservative (plus, it would not make sense to assume a zero demand in such cases either.) If you would like the demand to be reduced if the pressure drops too low, use the PDD approach.
  • When the time analysis type for the criticality scenario is set to EPS, the criticality results are based on all timesteps in the EPS.
  • The pressure-related Criticality results ("Node with the Largest Pressure Shortfall", "Pressure Demanded at Worst Node" and "Pressure Supplied at Worst Node") are in reference to nodes with demands, and exclude demand nodes inside the segment itself.
  • Even if demand nodes other than those in the segment itself are disconnected, it is possible for the pressure to still be above the threshold (though usually they will be zero)
  • Due to the large negative pressures that can sometimes occur for disconnected elements, the pressure results such as Maximum pressure shortfall may not be as significant compared to other results such as demand shortfall.
  • Fixes and Enhancements
    • Starting with version and greater (and a patch for - contact technical support), the list of Affected Elements and Affected Customers also includes those that have pressure below the set threshold (when "run hydraulic engine" is checked)
    • Starting with version, the list of Affected Elements contains all elements which at least for one time step are hydraulically disconnected during the criticality run. (earlier versions are based on the last timestep - see further below)
    • Starting with (and a patch for, improvements have been made to the handling of PDD during Criticality when running the hydraulic engine.
    • Starting with 10.03.01.XX (and a patch for, sorting the "affected customers" column now works correctly.

Do outage segments consider valves and pipes that are already closed in the model?

No, outage segmentation assumes that all of the flow controlling facilities (valves, isolation valves) are open except for the segment in question.

Is there a downfall to not using isolation valves in a Criticality analysis?

When using isolation valves, you will generally have a higher demand shortfall than you would without isolation valves because the segments will be longer. 

Why does the Criticality analysis return zero segments when using the Subset Scope type?

See this article.

Why doesn't the "Affected elements" list elements that have demand/pressure below the threshold?

As of version and below, the "affected elements" tab in Criticality results shows elements that are completely cut off / hydraulically disconnected (and 100% demand shortfall, if demand exists on the node) when the segment is isolated. You can click the "zoom to segment" button at the top to identify and select the elements in the model. From there you can look at the individual elements, create a selection set, filter flextables or the demand control center on selection, etc. Starting with CONNECT Edition Update 3 and greater, the list will include elements / customers that are both fully-disconnected, as well as those that are below the pressure threshold.

Criticality hangs or displays incorrect list of affected elements

See: Criticality hangs or displays incorrect list of affected elements

When the pressure is below the threshold at a demand node, is the demand assumed to be zero?

If the low-pressure demand node is fully disconnected as a result of closing the segment in question, the demand is assumed to be zero. Otherwise, if you are using the "run hydraulic engine" option in Criticality but are not using Pressure Dependent Demands (PDD), the numerical solver will satisfy the full demand, even if it is below the pressure threshold. This can be considered conservative (plus, it would not make sense to assume a zero demand in such cases either.) If you would like the demand to be reduced if the pressure drops too low, use PDD.

It takes a very long time to run Criticality with the hydraulic engine in a large model

For large models with many segments, that can take a significant amount of time to complete (performance can be slow). As of April 2023, a major enhancement is planned for a future release, to enable multi-threading support to greatly increase the performance of Criticality runs (so they are run in parallel on multiple logical CPU cores). See more here: Utilizing more than one CPU/core in model calculation (multi-threading)

Is it possible to have a count of demand nodes that fall below a pressure threshold that is specified per demand node?

To set up a per-node threshold pressure that is different than the global "Minimum Pressure to Supply Demand" in the Criticality dialog, you can use local Pressure Dependent Demands. To use a similar approach to the "Minimum Pressure to Supply Demand" option used for scenarios not configured with pressure dependent demands, you can set up a Piecewise PDD function something like this:

You can then specify whatever threshold pressure you want on each demand node. Open the junction properties and set Use Local Pressure Dependent Demand Data to True, the set the Local Function to the Piecewise PDD function you created.

The PDD calculation option will need to be applied as well.

Does the criticality analysis utilize multi-threading calculation?

From the WaterCAD 2023 and WaterGEMS 2023 (version onwards, the criticality analysis has been made capable of using the processor's multi-threading capacity, making it possible to carry out more tasks and thus more calculations at the same time. For more information on multi-threading, see this article.

How can the criticality segment name be shown as an attribute of the elements?

If you would like to see the criticality segment name as an attribute of each element (for example to color code on or include in flextables or an exported Shapefile), consider the following steps and post as an Idea for a built-in option in a future version:

  1. Compute Criticality and click on "All Criticality Segments"
  2. Click the copy button above the table on the right side, in the "Affected elements" tab:

  3. Paste the data into a spreadsheet using Excel for example, then save it.
  4. Create a User Data Extension (UDX) to store the segment name. Use the Share option to copy it for both junctions, pipes and isolation valves if you need to retain the segment name for all three element types.
  5. Use ModelBuilder to create a connection to the Excel spreadsheet, using the element ID or label as the Key field in the Field Mapping step, Junction as the table type and map the Segment column of the spreadsheet to the UDX field you created in step 4.
  6. Sync in (import) the data to populate the segment name
  7. Repeat these steps for the isolation valves, Pipes and/or customer meters, creating separate UDX fields for those element types and exporting from the respective tab in the bottom-right side of Criticality.

See Also

Why does the criticality analysis return 0 segments when using the Subset Scope type?