Modeling a Pump Start-Up Transient Event in HAMMER

Applies To 
Version(s):CONNECT Edition, V8i
Area: Modeling
Original Author:Jesse Dringoli, Bentley Technical Support Group



This TechNote describes the process to model a pump start-up transient event in HAMMER CONNECT Edition and HAMMER V8i. It also provides an example model file for demonstration. This model can also be found in the Samples folder in the HAMMER installation folder: C:\Program Files (x86)\Bentley\HAMMER\Samples.

Note: If you are using HAMMER V8 XM, the workflow to model a pump start-up event is different. See the section below "Pump Start-up Transient Event in HAMMER V8 XM."

Setting up the Model for a Pump Start-up

Before performing these steps, ensure that the demands, physical properties, and other settings in the model describe the condition that you would like to represent. If you would like to see the transient effects of the pump turning on during high demands and low tank levels, ensure that the demands and tank settings are adjusted as such. Ensure that the efficiency and transient rotational speed in your pump definition represent the "nominal" conditions. The speed should be set to the speed at which the pump produces the flow and head seen when the pump is on, usually full speed). The efficiency should be the efficiency at that nominal flow and head.

Demand Conditions

This process assumes a steady-state analysis for the initial conditions and that you have storage downstream of the pump in question, or other pumps, either of which could supply the demands you have entered when the pump in question is off. If there is no other source of flow and your pump is off, you may receive a "Disconnected demand nodes" user notification, which could keep you from getting accurate transient results. In this case, consider modeling a pump shutdown followed by startup, so that the initial conditions can have its demands supplied, to avoid the disconnected demand situation. Or if you only have a small number of demands, consider modeling them with the Discharge-To-Atmosphere element. This enables you to define a pressure dependent demand which will have zero flow if the initial pressure is zero (from the pump being off) but positive outflow when the pressure rises during the transient event when the pump starts up.

Pump Startup Steps

1. First, turn the pump on by setting the "Status (Initial)" to On under the Initial Settings section of the properties.

2. Go to Analysis > Compute Initial conditions. This computes pressure engine to allow you to see the pump flow and head when the pump is on.

3. Double-click the pump to view the properties. Under the "Results" section, you will see the pump operating point. Note the values for "Flow (Total)" and "Pump Head," as you will need them in the next step.

If you have any active valves in the model (TCV, GPV, PRV, PSV, FCV, PBV) in places where the flow is zero or near zero in the initial conditions, you will need to find the correct discharge coefficient during this step. To do so, either check for the computed discharge coefficient in the results section of the properties, or temporarily select "True" for "Specify Initial Conditions?" in the Transient Calculation Options, click the valve, then go to Tools > Copy Initial Conditions, choose "Selection," then OK. You will now see the discharge coefficient in the "Transient (Initial)" section of the properties. Record this value and set the "Specify Initial Conditions?" calculation option back to "False". For any valves that you need to do this, morph them into a TCV, choosing "Discharge Coefficient" as the valve type, "Active" as the initial status, then enter the discharge coefficient that you recorded. If you do not do this, HAMMER may use a discharge coefficient that will be inaccurate for higher flow rates once the pump turns back on, since it will be based on zero or near-zero flows.

4. Under the "Transient (Operational)" section of the pump properties, select the Pump Type (Transient) to "Pump Start - Variable Speed/Torque" and enter the appropriate diameter. If the pump has a built-in check valve, set the "Time (For Valve to Operate)" to zero. Alternatively, you can enter the time that it takes for the built-in valve to open (5 sec, 10 sec, 30 sec, etc.). To simulate a pump with no check valve enter a very small number like 0.1 seconds, so the valve opens immediately. Most likely you will enter zero for this. This is an important consideration. See the following link for more information: Operating rule not being following after computing pump shutdown or start-up.

Note that the pump check valve will not re-open if forward-flow occurs. So, if a reopen is anticipated to occur, you should instead model the check valve with the check valve node element. To do this, enter a time to operate of 0.1 seconds to model neither a valve nor a check valve (valve that opens instantly before the startup occurs), then insert check valve node elements adjacent to the pump(s).

5. Enter the pump flow and pump head found in step 3, in the "Flow (nominal)" and "Head (Nominal)" fields.

6. Change the pump's Status (Initial) under the initial settings to "Off" and re-compute initial conditions.

7. Next, go to Components > Patterns to open the Pattern manager. Right click on "Operational (Transient, pump)" select "New" and enter a name. On the right side of this window, enter zero for the starting multiplier, since the starting speed multiplier should be zero (meaning the pump is off). In the bottom-right table, define the pattern by entering time values and the corresponding speed multiplier.

IMPORTANT NOTE: The multipliers you enter here multiply against either the speed or the electrical torque, depending on the selection you make for the pump's "Control Variable." If you choose Speed (the default), the multipliers will multiply against the full speed entered in the pump definition, so 1.0 means full speed. This means that you cannot simply "flip the switch" in the pattern and have it go instantly from zero to 1.0 (or within a very small time frame) as it would normally take some time for the pump to ramp up to full speed. In the example below, the speed jumps from zero to 1.00 (full speed) between 5 and 10 seconds, and then stays on for the duration of the simulation. If the pump takes short or longer to ramp up, then the pattern can be adjusted accordingly

8. Close the pattern manager and select the pattern that you just created from the "Operating Rule" drop down in the pump properties. At this point, the pump properties should look similar to this:

9. The model is now correctly set up and you can compute the transient simulation (Home > Computer or Analysis > Compute).

Note: if the flow through the pump is not zero in the initial conditions, you will get an error "steady state flow must be zero". See further below for more on this.

Note: If your pump is a variable speed pump ("Is variable speed pump?" = True), you may encounter a notification stating that the rotational speed must be greater than zero. If you encounter this problem, you will need to not the calculated relative speed factor when you computer the initial conditions. After computing, set this calculated relative speed factor as the "Relative Speed Factor (Initial)" and set the initial pump status back to On and "Is variable speed pump?" to False. Compute the initial conditions again and note the pump flow and head to be used as the Flow (Initial) and Pump (Head) initial. Then set the pump status to Off again and recompute initial conditions, and compute the transient simulation.

Viewing the Results 

The results of this model can be viewed just like any other transient simulation. Go to Home > Transient Results Viewer or Analysis > Transient Results Viewer. To view a graph of head and flow for the pump, go to the Time History tab for the pipe end adjacent to the pump:

You can also view a profile through the pump to some downstream point to see how the system reacts to the pump starting up from the Profile tab. Using profile animations is recommended; you can set "Generate animation data" in the Transient Calculation Options to True to see this. When you click the Animate button at the top of the profile, this will show you the impact of the pump starting up along the profile over time. This can be especially useful in cases where a transient event may occur because of the pump starting up. 

Note that you can also view extended data specific to the pump by entering a number for the "Report Period" attribute of the pump properties. For example, entering a value of 10 would mean that extended data will be reported every 10 time steps. To view this, open the Transient Results Viewer and go to the Extended Node Data tab. Certain element types have available extended data, including pumps. Select the pump and the available attribute (in this case Speed), and you can see how the pump speed will change with time.

You can also view results in a report by going to Report > Transient Analysis Reports > Transient Analysis Detailed Report. At the very bottom of this text report, you will see the table of flow, speed, upstream and downstream head:


Modeling a pump startup followed by shutdown, or shutdown followed by startup

To model a pump start-up followed by a shut down, follow the same steps above, but configure your transient operating rule to drop the multiplier back down to zero at the time when the pump shuts down (after some delay). Details on the steps can be found here:

Modeling a pump startup and shutdown transient event in the same simulation

Why is the Transient Simulation not Settling Exactly on the Nominal Head/Flow I entered?

In some cases, once the pumps turn on in the transient simulation, the results may not settle exactly on the nominal head/flow that you saw when you ran a steady state with the pumps on. This can be due to a number of reasons, including these common ones:

  1. The model may not have had a chance to fully settle on its final steady state. Depending on the pipeline length and other factors, you may need to run the model for a longer duration in order for the transient waves to fully settle down on a final steady state period.
  2. If you are not ramping the pumps up to full speed but instead a relative speed factor other than 1.00, make sure the initial relative speed factor you entered is correct. The nominal head and flow are the pump head and flow corresponding to the relative speed value you put for "Relative Speed Factor (Initial)," even if the initial status is off. Their values should be equal to the values seen if that pump was to be turned on (at the same initial relative speed factor). For example, if you want a pump to start in the off position then ramp up to 50% of full speed, set the initial relative speed factor to 0.5, initial status of the pump to off, and Transient Pump Type to "Pump Start." The nominal head/flow are set to the values seen in a steady state run at 0.5 relative speed. The transient pump pattern then goes from 0.0 to 1.0 multiplier. With that configuration, HAMMER will assume that the nominal head/flow values correspond to a relative speed of 0.5. 
  3. If you have any valves (GPV, TCV, PBV, FCV, PRV, PSV) that are active in the initial conditions, but in a location where there is zero flow due to the pumps being off, the calculated discharge coefficient (which the transient calculation engine uses) may not be an accurate reflection of that valve when higher flow occurs. As seen earlier in this TechNote, you may need to compensate for any occurrences of this by finding the discharge coefficient in a steady state run with the pump(s) on, then replacing the valve with a TCV using that same discharge coefficient. Otherwise, the headloss across the valve in the transient simulation when the pump turns on will likely not match the steady state run that you based the nominal head/flow on. 
  4. A common cause of a this difference is with HAMMER's handling of friction coefficients. The transient calculation engine uses the Darcy-Weisbach friction factors (f), so a conversion is sometimes done. Because of that, differences can occur if you use another friction method, such as Hazen-Williams. This conversion is always done, even if you are using the Darcy-Weisbach method for the initial conditions, since the coefficient you enter for each pipe is the roughness height (e), not the friction factor (f). In pipes with non-zero initial flow, the Darcy-Weisbach coefficient is calculated based on the headloss across the pipe. In pipes that have zero flow in the initial conditions (which may be the case for many of them, since the pump is off), the Darcy-Weisbach coefficient will be computed based on the entered Hazen-Williams or Darcy-Weisbach coefficient. However, calculation 'noise' can sometimes occur in the initial conditions, causing the flow in a pipe to be near-zero instead of exactly zero. In your transient calculation options, you will see the tolerance that HAMMER uses to determine pipes that have zero flow, to account for this situation. In some cases, you may need to either make the "Accuracy" value smaller in your steady state calculation options, or increase the flow tolerance value in the transient calculation options. Similar to the valve discharge coefficient item, if the flows are near zero but above the flow tolerance, the coefficient that HAMMER computes to use for that pipe may be unreasonable (since it's based on a tiny headloss), especially when higher flows occur when the pumps are on. This situation can happen even if your pipe has a 'real,' non-zero flow that is relatively small. To check HAMMER's computed friction coefficients, open the "Output log" under Report > Transient Analysis Reports, and scroll down to the section titled "Pipe Information". Note that even if the zero flow pipes are correctly identified, the Darcy-Weisbach friction factor that is computed based on the user entered friction coefficient may still differ from that of the ones based off a positive flow pipe's start and stop head. To check for this difference, run the transient simulation with the pump on and check the aforementioned Output log. If they differ by a lot, you may consider using the "Unsteady - Vitkovsky" Transient Friction Method in the transient calculation options. Another approach to handle this would be to run the initial conditions with the pump on, record the friction factors from the output log, set the "Specify Initial Conditions?" calculation option to "True", run the initial conditions with the pump off, use the "Copy Initial Conditions" tool from the Tools menu (Tools > Tools > More > Copy Initial Conditions), then modify the transient initial flows so they are zero (when they should be) and initial friction factor (f) to the values seen in the output log with the pump on. This will force the pipes to use the correct friction factors. Note that version (and below) of HAMMER have a known issue with the way that the friction factors are computed for zero flow pipes. This is resolved in all later versions.
  5. Similar to the last item, if you have significant minor loss coefficients on pipes that have zero flow in the initial conditions, you may need to account for them with a different method. The reason is because those pipes will have their friction factor computed based on the entered friction factor only and will not account for the minor loss coefficient. So, the pump may operate at a higher flow and lower head than you would expect, since it does not have as much total headloss to overcome once the pump is on. In this case, you may need to insert a TCV node and enter the headloss coefficient or insert an Orifice Between Pipes element and enter the flow and headloss seen during the initial conditions when the pump was on.
  6. If you have any tanks in your model, make sure the hydraulic grade is correct in the steady state results. For example, if you have a hydropneumatic tank in the model, you may want to choose Set "Treat as Junction" to "True." That way, the hydraulic grade at the tank when your pump is on during the initial conditions will be set to the hydraulic grade value that it should settle on. Then, when the pump is set to Off for the initial conditions calculation, either keep the tank treated as a junction with the correct initial gas volume entered, or choose not to treat it as a junction, and enter the hydraulic grade that it would settle on when the pump is off.
  7. Demands are treated as pressure dependent during the transient simulation, whereas during a steady state or EPS run, by default they are treated as fixed. So, if you have demands in the model (for example that another pump supplies while the pump in question is off), this could potentially skew the results slightly. In a steady state run with the pump in question turned on, pressures may be higher but if treated as fixed, they would not change, whereas in the transient run, the outflow would be increased due to the pressure increase.
  8. It is important to understand that HAMMER uses a special four-quadrant pump characteristic curve during the transient simulation, not the pump definition you entered for the initial conditions. These four-quadrant curves are based on the specific speed selection in the Transient tab of the your pump definition and allows a pump to operate in all four quadrants (which can sometimes happen during a transient event). The values from these curves are relative to your nominal head and flow, so for relative speed factors other than the one used for your nominal head and flow, it can result in slight differences. Since a pump start-up case will be settling on the nominal head and flow, this should not make for a significant difference. However, a small difference could occur if the nominal operating point does not fall exactly on the four-quadrant curve.
  9. In the pump properties, check the value for "Time (For Valve to Operate)". For pumps with zero initial flow, this represents the time to OPEN the valve. So, either enter a small number or enter zero, to represent a check valve. If you accidentally entered a large number here, the pump will not operate at the expected point since it will be working against a closed or partially closed valve.

If all else fails, you could consider starting your transient simulation with the pumps on, then use the variable speed transient pump type to have them turn off then turn back on again. You can use the "Report History After" transient calculation option to have the transient reports begin after the pumps have settled in their off position.


My pump operating rule is not be followed as expected

This may be due to the "Time (For Valve to Operate)". See this link for details:

Operating Rule not being followed after computing pump shutdown or start up

The pump is turning on during the initial conditions, causing "steady state flow must be zero"

If the pump is initially off, but turning on when you compute the initial conditions calculations, you likely have a control applied to the pump. The symptom may present itself as an error when trying to compute the transient simulation, "steady state flow must be zero".

By default, the initial conditions calculation will take into account simple controls in the Controls manager. To help with this, you can set the Steady State/EPS calculation option setting "Use simple controls during steady state run?" to False. The controls will then be ignored if you are computing a steady state run.

Also for an EPS initial conditions where the pump is off at a certain time, check the "initialize transient run at time" transient calculation option and ensure that it is set to a time when the pump is off.

Disconnected Demand Nodes when calculating initial conditions

If you have a closed system with no downstream source and have the pump initial off, you may end up with an error message about disconnected demand nodes. If there should be a downstream source, you will want to review the setup to ascertain why there is no flow for the other source. If there is no downstream source, you can consider using the workflow of modeling a pump shut down and start up in the same scenario.

Flow from pump is delayed after pump startup

It typically takes some time for the pump to overcome the discharge hydraulic grade before is can pass flow. See this link for details:

Flow from pump is delayed after pump startup

Startup appears to occur too quickly / Initial surge too high

If the pump appears to start up too quickly and the initial positive pressure spike appears to be higher than expected, it could be related to the Control Variable and the Operating Rule. See this link for details:

Pump Startup occurs too quickly / initial upsurge too severe

Error about pressure less than vapor pressure at high points

If there are high points in the system, the initial conditions may not reflect the true system conditions with the pump off. See this link for details:

"Initial pressure less than vapor pressure. At the pipe end(s), the elevation(s) or head(s) are incorrect"

Note: A similar error message can occur in HAMMER 2023 (version if there is a downstream discharge to atmosphere element and so other downstream source, such as a reservoir. There is a known issue in HAMMER 2023. This issue will be fixed in a future release of HAMMER. The reference for this is 1423356. As a workaround, you can add a very small diameter pipe (such as 0.1 mm) that bypasses the closed pump or valve. 

Example Model

The below model is an example of a pump startup in HAMMER. This model is included with most installations of HAMMER. Note:

Click to Download

Pump Startup in HAMMER V8 XM

If you are using HAMMER V8 XM, the workflow is different. As this version is no longer supported, we recommend upgrading your HAMMER version so that you can use the above workflow.

See Also

Modeling a pump shut down event in Bentley HAMMER

Operating Rule not being followed after computing pump shutdown or start up

Pump Startup occurs too quickly / initial upsurge too severe

Modeling a pump startup and shutdown transient event in the same simulation

Article In Other Languages