Sizing a pump correctly is critical for ensuring the longevity of your equipment and the efficiency of your hydraulic system. An undersized pump will fail to deliver the required flow against the system's pressure, while an oversized pump wastes energy and can lead to cavitation or mechanical damage.
This calculator determines the Brake Horsepower (BHP), which is the actual power required at the pump shaft to move a specific fluid at a desired flow rate and head.
Key Input Parameters Explained
Flow Rate (Q): The volume of fluid you need to move per unit of time, measured here in Gallons Per Minute (GPM). This is determined by your process requirements.
Total Dynamic Head (H): The total equivalent height that the fluid is to be pumped, taking into account vertical lift and friction losses in the pipework. Measured in Feet (ft).
Specific Gravity (SG): The ratio of the fluid's density to that of water. Water has an SG of 1.0. Heavier fluids (like brine) require more power, while lighter fluids (like gasoline) require less.
Pump Efficiency (η): Not all power applied to the shaft is transferred to the water. Energy is lost to friction and turbulence. Standard centrifugal pumps often operate between 60% and 85% efficiency.
The Pump Power Formulas
To calculate the power requirements, we first determine the Hydraulic Horsepower (also known as Water Horsepower), which is the theoretical power needed if the pump were 100% efficient.
WHP = (Flow Rate × Head × SG) / 3,960
However, because pumps are not 100% efficient, we must calculate the Brake Horsepower (BHP), which represents the actual power required from the motor.
BHP = WHP / (Efficiency % / 100)
Selecting a Motor
Once you have calculated the Brake Horsepower, you should select a standard motor size that exceeds the BHP requirement to prevent overloading. Common NEMA motor sizes include 0.5, 0.75, 1, 1.5, 2, 3, 5, 7.5, 10, 15, and 20 HP. It is standard engineering practice to leave a safety margin (often 10-15%) above the calculated BHP.
function calculatePumpSize() {
// Get input values
var q = document.getElementById('flowRate').value;
var h = document.getElementById('totalHead').value;
var sg = document.getElementById('specificGravity').value;
var eff = document.getElementById('efficiency').value;
// Validate inputs
if (q === "" || h === "" || sg === "" || eff === "") {
alert("Please fill in all fields with valid numbers.");
return;
}
var flowRate = parseFloat(q);
var head = parseFloat(h);
var specificGravity = parseFloat(sg);
var efficiencyPct = parseFloat(eff);
if (flowRate <= 0 || head <= 0 || specificGravity <= 0 || efficiencyPct <= 0) {
alert("Values must be greater than zero.");
return;
}
// 1. Calculate Hydraulic Horsepower (WHP)
// Formula: (GPM * Feet * SG) / 3960
var whp = (flowRate * head * specificGravity) / 3960;
// 2. Calculate Brake Horsepower (BHP)
// Formula: WHP / (Efficiency_Decimal)
var efficiencyDec = efficiencyPct / 100;
var bhp = whp / efficiencyDec;
// 3. Convert BHP to Kilowatts (kW)
// 1 HP = 0.7457 kW
var kw = bhp * 0.7457;
// 4. Recommend Standard Motor Size (Logic: Next standard size up)
// Common sizes: 0.5, 0.75, 1, 1.5, 2, 3, 5, 7.5, 10, 15, 20, 25, 30, 40, 50…
var standardMotors = [0.25, 0.5, 0.75, 1, 1.5, 2, 3, 5, 7.5, 10, 15, 20, 25, 30, 40, 50, 60, 75, 100, 125, 150];
var recommendedMotor = "Custom/Large";
for (var i = 0; i = bhp) {
recommendedMotor = standardMotors[i] + " HP";
break;
}
}
// Display Results
document.getElementById('resWHP').innerHTML = whp.toFixed(2) + " HP";
document.getElementById('resBHP').innerHTML = bhp.toFixed(2) + " HP";
document.getElementById('resKW').innerHTML = kw.toFixed(2) + " kW";
document.getElementById('resMotor').innerHTML = recommendedMotor;
// Show result section
document.getElementById('pumpResults').style.display = "block";
}
function resetPumpCalc() {
document.getElementById('flowRate').value = "";
document.getElementById('totalHead').value = "";
document.getElementById('specificGravity').value = "1.0";
document.getElementById('efficiency').value = "75";
document.getElementById('pumpResults').style.display = "none";
}