Saturday, 21 December 2024

Basic Pump Sizing using Bernoulli’s Principle in Scilab

Topic: Bernoulli’s Principle and Pump Sizing

Subject: Fluid Mechanics

Tool: Scilab

By: Gani Comia, Dec. 2024

The size of the pump for the particular application is decided base on the volumetric flow (\(Q\)) and the total dynamic head (\(TDH\)). The pump’s motor drive and specification in terms of \(HP\) can be just determined from the pump maker’s catalogue for the given flow rate and \(TDH\).

Consider an example wherein a centrifugal pump is needed for fire protection applications. Let us say that for the fire protection system, the following are being required:

Volumetric Flow, \(Q\) = 23 \(m^3/hr\) (100 \(GPM\) approx.)

Pressure, \(P\) = 300 ~ 700 \(kPa\) (50~100 \(psi\) approx.)

Volumetric flow is usually an available information based on application. The \(TDH\) is calculated considering the following factors:

  1. Pressure Head
  2. Static or Elevation Head
  3. Velocity Head
  4. Friction Head

For this presentation, the calculation of \(TDH\) will be based on the first three factors of Bernoulli’s Principle. The theoretical \(TDH\) can be adjusted by adding the total friction head and other factors.

Bernoulli’s principle is a fundamental concept in fluid dynamics that describes the relationship of pressure, elevation, and velocity of a fluid flow. It calculates the Total Dynamic Head (\(TDH\)) in pump systems. \(TDH\) is the total energy imparted by the pump to the fluid and calculated as shown:

$$TDH\;=\;H_p\;+\;H_z\;+\;H_v \tag{1}$$

For incompressible fluids, TDH can be expressed in the simplified form of Bernoulli’s equation:

$$TDH\;=\;\frac{P}{\gamma}\;+\;Z\;+\;\frac{v^2}{2g} \tag{2}$$

Fig. 1 shown a graph for the relationship of pressure and \(TDH\) for a given volumetric flow and different static or elevation heads. It can be a helpful guide for a pump designer to make a decision understandable to the stakeholders or clients. This also eliminates the impression of unjustifiable guesswork.


Fig. 1. Pump Sizing in terms of \(TDH\) based on pressure, static, and velocity head.

Presented here is the Scilab script as a toolbox to produce a similar graph for pump sizing using Bernoulli’s principle.

// Copyright (C) 2024 - Gani Comia
// Date of creation: 16 Dec 2024
// Water Pump Sizing using Bernoulli's Principle (Theory)
clear;clc;
// Pumps for fire protection
// Required Pressure = 138~1034 kPa (20~150 psi)
// Volumetric Flow = 22.7 m^3/hr (100 GPM)
// Required: Pump's TDH

// sub-routine program—total dynamic head
function H=tdh(P, z, V)
    wDensity = 9800;        // N/m^3, weight density of water
    g = 9.8;                // m/s^2, gravitational acceleration
    // P - kPa, pressure
    // z - m, elevation
    // V - m/s, velocity
    H = (1000*P)./wDensity + z + (V.^2)./(2*g)
endfunction

// main program
// (1) velocity head, calculation
Q = 23;                     // m^3/hr, volumetric flow rate
Q = Q/3600;                 // m^3/s, volumetric flow rate
// pipe size at service point dia 38mm GI Pipe S40
pipeID = (38-2*1.5)/1000;    // m, inside diameter of pipe
A = (%pi/4)*(pipeID.^2);     // m^2, pipe ID area
V = Q./A;                   // m/sec, velocity

// (2) elevation head, assume a range for simulation
z = 0:10:50;                // m, elevation range
Nz = length(z)              // no. of elevation steps
disp(z)

// (3) pressure head, assigned a domain for simulation
// P = 300 ~ 700 kPa pressure range
P = linspace(300,700,Nz);   // kPa, pressure range

// (4) simulation plot
clf;
for i = 1:Nz
    H = tdh(P,z(i),V)
    plot(P,H,"linewidth",1.75)
    title("H2O Pump Sizing using the Bernoulli Principle")
    xlabel("Pressure, P [ kPa ]")
    ylabel("Total Dynamic Head, TDH [ m ]")
end

P1 = 600;
for i = 1:Nz
    H1 = tdh(P1,z(i),V)
    note1 = ["Z =",string(z(i)),"m"]
    xstring(P1,H1,note1,-18)
end

// (5) simulation of sample parameters
// for elevation = 20 m and pressure = 500 kPa
P2 = 500;                                   // kPa, sample pressure
H2 = tdh(P2,z(3),V);                        // m, sample tdh
x1 = [P2 P2];
y1 = [30 H2];
plot(x1,y1,"--r")                           // vertical line
xstring(P2,32,["P =",string(P2)],-90)
x2 = [300 P2];
y2 = [H2 H2];
plot(x2,y2,"--r")                           // horizontal line
format(6);
xstring(350,H2,["TDH =",string(H2)])
plot(P2,H2,"o","color","black")
note2 = ["Q =",string(3600*Q),"m3 / hr"]
xstring(350,120,note2)
note3 = ["https://gani-mech-toolbox.blogspot.com"]
xstring(350,115,note3)

// custom markers 
a = gca();
a.children.children.mark_background = 9;    // Fill color

This kind of pump sizing or selection can simplify the intricacies of engineering analysis, especially for the stakeholders with minimal or no knowledge at all in fluid mechanics.

Feel free to comment for inquiry, clarification, or suggestion for improvement. Drop your email to request the soft copy of the file. 

No comments:

Post a Comment

C++ and Python for Numerical Solution to Spring-Mass-Damper Model

Topic: SDOF Spring-Mass-Damper System Subject: Numerical Methods & Mechanical Vibration Tools: C++, CodeBlocks, GitHub Copilot, LabP...