Symptom A - waves not dampening
No matter how long I run the transient simulation in HAMMER, the surge waves (such as the pressure or HGL over time) never dampen or settle down to a final steady state condition. For example the pressure oscillated back and forth forever.
Symptom B - unexpected lack of headloss across a pipe or Orifice-Between-Pipes
When viewing a profile across a pipe or across a Orifice Between Pipes node element, no headloss is observed.
If you have flow in the pipe in question during the initial conditions, but then close it off during the transient simulation (such as from a valve closure), most likely you are not seeing the surge waves dampen (reach a final steady state) or are seeing a lack of headloss, due to the lack of flow. Without flow, there is no headloss, and no dampening of surge waves, so the hydraulic grade will oscillate back and forth without settling down. It may take a very long time for the waves to completely dampen in this condition. Note that if you attempt to use a very long simulation duration and encounter an error that prevents the simulation from completing and allowing you to view the Transient Results Viewer, you may need to use a large calculation timestep.
If the pipe is connected to a reservoir or tank, you can have a small amount of water movement that can slightly dampening the waves. Also if you have a small demand anywhere and the pressure is positive at that location, the outflow can induce a flow that can dampen the pressure wave.
You can try adjusting the Transient Friction Method in the transient calculation options as mentioned in the below article, but that may not necessarily help (and you may notice instability). You might consider simply accepting this behavior. For example if you need to design the system based on the max or min pressure, you may already have the information you need to proceed.
"Unsteady" vs. "Unsteady - Vitkovsky" transient friction methods in HAMMER
Lastly, check the transient calculation options and ensure that "Specify Initial Conditions?" is set to "False". If it is set to "True", then HAMMER will be using user-entered initial conditions, which could be configured as zero headloss. For example with the option set to True, note in the pipe properties a new section called "Transient (Initial)" - if the start and stop head entered there are equal, it will compute a zero Darcy-Weisbach friction factor and without friction, the waves will never dampen. This calculation option is only present for legacy purposes and very rare cases where you have a need to manually enter the initial conditions rather than having the initial conditions solver compute them for you.
You can also observe this in the "sample1.wtg" file that ships with HAMMER, located in the "Samples" subfolder - the pipe in this model has no headloss, so attenuation doesn't occur. If you reduce the stop HGL of that pipe and re-run, the wave will be attenuated due to friction.
This situation can sometimes occur in pipes that have zero flow in the initial conditions. The likely cause of this is the value calculated for the pipe's Darcy-Weisbach friction factor, f. If the friction factor is zero, you'll have no headloss, and thus nothing to dampening the pressure wave over time.
The HAMMER transient solver uses the Darcy-Weisbach friction factor, f, for the frictional losses in a model. 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 occur for many pipes when simulating a pump startup event), the Darcy Weisbach coefficient will be computed based on the entered Hazen-Williams, Darcy-Weisbach, or Manning's coefficient, using the the Von Karman equation to calculate the Darcy-Weisbach friction factor, based on the Roughness height and diameter:
DW f = (1.0 / (2.0 * Log10(Diameter / roughness height) + 1.14)^2
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 a valve discharge coefficient, 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".
The flow tolerance determines if a pipe is considered as having zero flow or not. The best value to use for the Flow Tolerance field in the transient calculation options depends on the modeling situation. If you have pipes whose flow is zero in the initial conditions (such as near a pump that is off or a closed valve), you will need to make sure the flow tolerance is higher than the flow seen in those pipes. There's always going to be a little bit of calculation noise, so pipes whose flows should be zero might be something like 0.0004567. So, be sure to change the decimal precision on both the flow tolerance field and the computed flow field and compare the two. If all of the pipes in your model have positive flows, you don't need to worry about what to set the flow tolerance to. Please note, if you have zero flow in conduits, there is no friction and no headloss, and the minor loss coefficient is ignored.
When the flow in a pipe in the initial conditions is less than the tolerance, it will be considered as having exactly zero flow during the transient simulation, which changes the method by which HAMMER computes the Darcy-Weisbahc friction factor to use for those pipes. The flow tolerance should be small enough so that pipes with positive flow aren't considered as having zero flow, but large enough so that pipes that do have zero flow are considered as such.
So, if you have a pipe that basically has zero flow in the initial conditions, yet some numerical noise causes it to be slightly above the tolerance, the friction factor will not be accurate. If the Darcy-Weisbach friction factor is calculated as zero, this will basically mean that the pipe is frictionless and you will see oscillating flow in the system with dampening. In such cases, you may need to review the Steady State/EPS solver Accuracy value and the Transient solver Flow Tolerance setting so that the friction factor is correctly calculated.
This situation can also happen with the Orifice Between Pipes element; if the flow through it is less than the tolerance, it will use the entered nominal head and flow value to calculate headloss, but if the flow is higher than the tolerance, it will try to use that flow along with the head drop to calculate the coefficient used to calculate change in headloss during the transient simulation. So, if the flow through it is higher than the tolerance but yields a headloss of zero, it will use a zero discharge coefficient and thus you'll see zero headloss.