# Chapter 7 Pumps and how they operate in a hydraulic system

For any system delivering water through circular pipes with the assistance of a pump, the selection of the pump requires a consideration of both the pump characteristics and the energy required to deliver different flow rates through the system. These are described by the system and pump characteristic curves. Where they intersect defines the operating point, the flow and (energy) head at which the pump would operate in that system.

## 7.1 Defining the system curve

For a simple system the loss of head (energy per unit weight) due to friction, $$h_f$$, is described by the Darcy-Weisbach equation, which can be simplified as in Equation (7.1). $$$h_f = \frac{fL}{D}\frac{V^2}{2g} = \frac{8fL}{\pi^{2}gD^{5}}Q^{2} = KQ{^2} \tag{7.1}$$$

The total dynamic head the system requires a pump to provide, $$h_p$$, is found by solving the energy equation from the upstream reservoir (point 1) to the downstream reservoir (point 2), as in Equation (7.2). $$$h_p = \left(z+\frac{P}{\gamma}+\frac{V^2}{2g}\right)_2 - \left(z+\frac{P}{\gamma}+\frac{V^2}{2g}\right)_1+h_f \tag{7.2}$$$

For the simple system in Figure 7.1, the velocity can be considered negligible in both reservoirs 1 and 2, and the pressures at both reservoirs is atmospheric, so the Equation (7.2) can be simplified to (7.3). $$$h_p = \left(z_2 - z_1\right) + h_f=h_s+h_f=h_s+KQ^2 \tag{7.3}$$$

Using the hydraulics package, the coefficient, K, can be calculated manually or using other package functions for friction loss in a pipe system using $$Q=1$$. Using this to develop a system curve is demonstrated in Example 7.1.

Example 7.1 Develop a system curve for a pipe with a diameter of 20 inches, length of 3884 ft, and absolute roughness of 0.0005 ft. Use kinematic viscocity, $$\nu$$ = 1.23 x 10-5 ft2/s. Assume a static head, z2 - z1 = 30 ft.

ans <- hydraulics::darcyweisbach(Q = 1,D = 20/12, L = 3884, ks = 0.0005, nu = 1.23e-5, units = "Eng")
cat(sprintf("Coefficient K: %.3f\n", ans$hf)) #> Coefficient K: 0.160 scurve <- hydraulics::systemcurve(hs = 30, K = ans$hf, units = "Eng")
print(scurve$eqn) #> [1] "h == 30 + 0.16*Q^2" For this function of the hydraulics package, Q is either in ft$$^3$$/s or m$$^3$$/s, depending on whether Eng or SI is specified for units. Often data for flows in pumping systems are in other units such as gpm or liters/s, so unit conversions would need to be applied. ## 7.2 Defining the pump characteristic curve The pump characteristic curve is based on data or graphs obtained from a pump manufacturer, such as that depicted in Figure 7.2. The three selected points, selected manually across the range of the curve, are used to generate a polynomial fit to the curve. There are many forms of equations that could be used to fit these three points to a smooth, continuous curve. Three common ones are implemented in the hydraulics package, shown in Table 7.1. Table 7.1: Common equation forms for pump characteristic curves. type Equation poly1 $$h=a+{b}{Q}+{c}{Q}^2$$ poly2 $$h=a+{c}{Q}^2$$ poly3 $$h_{shutoff}+{c}{Q}^2$$ The $$h_{shutoff}$$ value is the pump head at $$Q={0}$$. Many methods can be used to fit a polynomial to a set of points. The hydraulics package includes the pumpcurve function for this purpose. The coordinates of the points can be input as numeric vectors, being careful to use correct units, consistent with those used for the system curve. Manufacturerâ€™s pump curves often use units for flow that are not what the hydraulics package needs, and the units package provides a convenient way to convert them as needed. Developing the pump characteristic curve using the hydraulics package is demonstrated in Example 7.2. Example 7.2 Develop a pump characteristic curve for the pump in Figure 7.2, using the three points marked in red. Use the poly2 form from Table 7.1. qgpm <- units::set_units(c(0, 5000, 7850), gallons/minute) #Convert units to those needed for package, and consistent with system curve qcfs <- units::set_units(qgpm, ft^3/s) #Head units, read from the plot, are already in ft so setting units is not needed hft <- c(81, 60, 20) pcurve <- hydraulics::pumpcurve(Q = qcfs, h = hft, eq = "poly2", units = "Eng") print(pcurve$eqn)
#> [1] "h == 82.5 - 0.201*Q^2"

The function pumpcurve returns a pumpcurve object that includes the polynomial fit equation and a simple plot to check the fit. This can be plotted as in Figure 7.3