Overview
Performs hydraulic analysis for centrifugal pump system selection per Hydraulic Institute and ASHRAE guidelines. Calculates Total Dynamic Head (TDH), Net Positive Suction Head Available (NPSHa), Durand settling velocity for slurry transport, and cavitation risk assessment. Supports gauge or absolute pressure inputs and optional manufacturer NPSH data.
Input Parameters
Fluid Properties
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
temperature |
Number | 20.0 | -50 – 200 °C | Fluid temperature (informational) |
density |
Number | 1035.33 | 500 – 3000 kg/m³ | Mass per unit volume of the fluid being pumped |
viscosity |
Number | 1.0 | 0.1 – 10000 cP | Fluid resistance to flow (informational; warning issued above 10 cP) |
vapor_pressure |
Number | 9.573 | 0 – 200 kPa | Absolute pressure at which the fluid vaporizes |
System & Flow Conditions
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
flow_rate |
Number | 6.988 | 0.1 – 10000 m³/h | Required volumetric flow rate |
pipe_diameter |
Number | 35 | 10 – 2000 mm | Internal diameter of suction pipe |
Pressures
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
pressure_is_gauge |
Boolean | True | — | When True, inlet/discharge pressures are gauge; when False, absolute |
atmospheric_pressure |
Number | 101.325 | 50 – 110 kPa | Local atmospheric pressure (hidden when pressures are absolute) |
inlet_pressure |
Number | 97.5 | 0 – 1000 kPa | Pressure at suction vessel or liquid surface |
discharge_pressure |
Number | 110.0 | 0 – 5000 kPa | Pressure at discharge vessel or destination |
Elevation
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
static_head |
Number | 15.0 | -100 – 500 m | Vertical elevation between discharge and suction surfaces |
suction_static_head |
Number | 1.1 | -50 – 100 m | Elevation of liquid surface above pump centerline (+ flooded, - lift) |
Friction Losses
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
suction_friction_loss |
Number | 12.7 | 0 – 500 kPa | Total pressure lost in suction piping |
discharge_friction_loss |
Number | 176.6 | 0 – 2000 kPa | Total pressure lost in discharge piping |
Slurry / Particulate (optional)
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
is_slurry |
Boolean | True | — | Enable slurry settling analysis |
d50 |
Number | 100 | 0.1 – 10000 μm | Median particle size (informational; hidden if not slurry) |
fl_factor |
Number | 0.71 | 0.1 – 2.0 | Durand settling coefficient (hidden if not slurry) |
solid_sg |
Number | 3.20 | 1.0 – 20.0 | Specific gravity of solid particles (hidden if not slurry) |
NPSH Settings
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
use_manufacturer_npsh |
Boolean | False | — | Provide manufacturer NPSH required value instead of estimate |
manufacturer_npsh_r |
Number | 3.0 | 0 – 50 m | NPSH required from pump manufacturer curve (hidden if toggle off) |
Output Results
| Output | Unit | Description |
|---|---|---|
tdh |
m | Total Dynamic Head |
differential_pressure |
kPa | Differential pressure across the pump |
pressure_head |
m | Head equivalent of discharge–inlet pressure difference |
friction_head_suction |
m | Suction friction loss converted to head |
friction_head_discharge |
m | Discharge friction loss converted to head |
friction_head_total |
m | Total friction head loss (suction + discharge) |
npsh_available |
m | Net Positive Suction Head Available |
npsh_required |
m | NPSH Required (manufacturer or estimated) |
npsh_margin |
m | NPSH margin \((\text{NPSHa} - \text{NPSHr})\) |
npsh_source |
text | "Manufacturer Data" or "Estimated" |
npsh_status |
text | Cavitation risk: Safe / Acceptable / Risky |
flow_velocity |
m/s | Fluid velocity in the suction pipe |
settling_velocity |
m/s | Durand critical settling velocity (slurry only) |
settling_status |
text | Settling risk: No Settling / Risk / High Risk / N/A |
liquid_sg |
— | Liquid specific gravity \((\rho / 1000)\) |
Formulas
Pressure–Head Conversion
Converts pressure \(P\) (kPa) to equivalent head \(H\) (m), where \(\rho\) is fluid density (kg/m³) and \(g = 9.81\) m/s².
Inverse conversion from head (m) back to pressure (kPa).
Total Dynamic Head (TDH)
Where:
- \(H_{\text{static}}\) — vertical elevation between discharge and suction surfaces (m)
- \(H_{\text{pressure}} = \dfrac{(P_{\text{discharge}} - P_{\text{inlet}}) \times 1000}{\rho \times g}\) — pressure head (m)
- \(H_{\text{friction,total}} = H_{f,\text{suction}} + H_{f,\text{discharge}}\) — total friction head (m), each term converted from kPa input
Differential Pressure
Converts the calculated TDH back to a differential pressure for pump specification.
Flow Velocity
Where \(Q\) is flow rate (m³/h) and \(D\) is pipe internal diameter (mm). Division by 3600 converts m³/h to m³/s; division by 2000 converts mm diameter to metres radius.
NPSH Available
Gauge pressure mode:
\[ \text{NPSHa} = \frac{(P_{\text{atm}} + P_{\text{inlet,gauge}} - P_{\text{vapor}}) \times 1000}{\rho \times g} + Z_s - H_{f,s} \]Absolute pressure mode:
\[ \text{NPSHa} = \frac{(P_{\text{inlet,abs}} - P_{\text{vapor}}) \times 1000}{\rho \times g} + Z_s - H_{f,s} \]Where:
- \(P_{\text{atm}}\) — atmospheric pressure (kPa), default 101.325
- \(P_{\text{vapor}}\) — fluid vapor pressure (kPa abs)
- \(Z_s\) — suction static head (m, positive if flooded, negative if lift)
- \(H_{f,s}\) — suction friction head loss (m), converted from the suction friction loss kPa input
NPSH Required (Estimate)
Rough empirical estimate only. Always use manufacturer pump curves
for actual pump selection. Toggle use_manufacturer_npsh
to supply the real value.
NPSH Status Assessment
| Margin (\(\text{NPSHa} - \text{NPSHr}\)) | Status | Risk |
|---|---|---|
| \(\geq 2.0\) m | Safe | Low cavitation risk |
| \(1.0 \leq \text{margin} < 2.0\) m | Acceptable | Marginal — consider adding safety |
| \(< 1.0\) m | Risky — Cavitation Likely | Redesign suction conditions |
Durand Settling Velocity (Slurry)
Where:
- \(F_L\) — Durand settling coefficient (0.5–1.2 typical)
- \(D\) — pipe diameter (m)
- \(S_s\) — solid specific gravity
- \(S_L = \rho / 1000\) — liquid specific gravity
If \(|S_s - S_L| < 0.001\), settling velocity returns 0 (no settling concern).
Settling Status Assessment
| Condition | Status |
|---|---|
| \(v \geq 1.3 \times V_L\) | No Settling — Good Margin |
| \(V_L < v < 1.3 \times V_L\) | Risk of Settling |
| \(v \leq V_L\) | High Risk of Settling |
Worked Examples
The 12 examples below are the validation cases for this calculation. Each one was produced by the calculation engine from the inputs shown, every figure was checked against the independent reference quoted at the end of the example, and the same cases are run against every engine build (see validation scorecard, tool fe_calc_pump; worked examples for every calculation).
| # | Case | TDH (m) | ΔP (kPa) | NPSHa (m) | NPSHr (m) | Margin (m) | v / VL (m/s) | Result |
|---|---|---|---|---|---|---|---|---|
| 1 | 7 m³/h mineral slurry, flooded suction (calculator defaults) | 34.87 | 354.1 | 18.48 | 2.50 | 15.98 | 2.02 / 0.85 | PASS |
| 2 | Clean water transfer from an open tank | 17.64 | 173.1 | 11.58 | 2.50 | 9.08 | 1.42 / – | PASS |
| 3 | Sand slurry in an 80 mm suction — deposition risk | 28.39 | 334.2 | 12.08 | 2.50 | 9.58 | 1.10 / 1.24 | FAIL |
| 4 | Slurry between V_L and 1.3 V_L | 16.34 | 184.4 | 9.84 | 3.50 | 6.34 | 1.42 / 1.28 | PASS |
| 5 | Water at 90 °C lifted 3 m — cavitation | 24.57 | 232.7 | -0.56 | 3.00 | -3.56 | 1.10 / – | FAIL |
| 6 | Boiler feed from a deaerator at saturation | 156.31 | 1,463.9 | 5.36 | 3.20 | 2.16 | 1.06 / – | PASS |
| 7 | Closed vessel to closed vessel, absolute pressures | 53.24 | 521.2 | 25.53 | 4.00 | 21.53 | 1.36 / – | PASS |
| 8 | Suction lift at 1 500 m altitude | 24.19 | 236.8 | 5.29 | 3.40 | 1.89 | 1.38 / – | PASS |
| 9 | NPSH margin just under 1 m | 25.41 | 248.7 | 4.59 | 3.65 | 0.94 | 1.77 / – | FAIL |
| 10 | Light hydrocarbon from an atmospheric tank | 61.09 | 431.5 | 8.85 | 3.00 | 5.85 | 1.59 / – | PASS |
| 11 | Discharge below suction into a pressurised header | 23.39 | 229.1 | 14.80 | 2.00 | 12.80 | 1.26 / – | PASS |
| 12 | 3 600 m³/h intake with the placeholder NPSHr | 22.89 | 224.5 | 11.39 | 2.55 | 8.84 | 3.54 / – | PASS |
Example 1 — 7 m³/h mineral slurry, flooded suction (calculator defaults)
The calculator's default duty: a settling slurry with ample NPSH margin and a suction velocity well above the Durand deposition limit.
Given: Q = 6.988 m³/h through a 35 mm ID suction pipe; ρ = 1035.33 kg/m³, Pv = 9.573 kPa abs. Suction surface at 97.5 kPa, discharge at 110 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 15 m, suction level Zs = 1.1 m (1.1 m above the pump centreline). Friction: suction 12.7 kPa, discharge 176.6 kPa. No NPSHr given (engine placeholder); settling slurry, solids Ss = 3.2, Durand FL = 0.71.
| Head conversion | H = P / (ρg): ρg = 1035.33 × 9.81 / 1000 = 10.1566 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (110 − 97.5) / 10.1566 = 1.231 m |
| Friction heads | hf,s = 12.7 / 10.1566 = 1.250 m; hf,d = 176.6 / 10.1566 = 17.388 m; total 18.638 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 15 + 1.231 + 18.638 = 34.869 m |
| Differential pressure | ΔP = TDH × ρg = 34.869 × 10.1566 = 354.15 kPa |
| Suction pressure | Ps,abs = 97.5 + 101.325 = 198.825 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (198.825 − 9.573) / 10.1566 + 1.1 − 1.250 = 18.483 m |
| NPSH required | No pump curve given — engine placeholder NPSHr = 2.5 + 0.05 × Q² (Q in m³/s) = 2.5 + 0.05 × (6.988 / 3600)² = 2.500 m (not a pump property) |
| NPSH margin | NPSHa − NPSHr = 18.483 − 2.500 = 15.983 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 15.983 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.035² / 4 = 0.000962 m²; v = (6.988 / 3600) / 0.000962 = 2.018 m/s |
| Durand deposition velocity | SL = 1035.33 / 1000 = 1.0353; VL = FL √(2gD(Ss − SL) / SL) = 0.71 × √(2 × 9.81 × 0.035 × (3.2 − 1.0353) / 1.0353) = 0.851 m/s |
| Deposition check | v > VL: v / VL = 2.018 / 0.851 = 2.372 (engine: ≥ 1.3 good margin, 1–1.3 risk) → 'No Settling - Good Margin' → 2.018 vs limit 0.851 m/s PASS |
| Result | 2/2 checks pass → PASS; TDH 34.87 m, NPSHa 18.48 m vs NPSHr 2.50 m; v 2.02 vs VL 0.85 m/s; governing: npsh margin. NPSHr is a placeholder (≈ 2.5 m); use the selected pump's NPSH3 curve at the duty flow. |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 10.1566 kPa/m; TDH = 15 + (110 − 97.5)/10.1566 + (12.7 + 176.6)/10.1566 = 34.869 m; ΔP = 34.869 × 10.1566 = 354.15 kPa; P_s,abs = 97.5 + 101.325 = 198.825 kPa abs; NPSHa = (198.825 − 9.573)/10.1566 + 1.1 − 1.250 = 18.483 m; NPSHr placeholder = 2.5 + 0.05 × (6.988/3600)² = 2.500 m; margin = 15.983 m vs 1.0 m; v = (6.988/3600)/(π × 0.035²/4) = 2.018 m/s; Durand (1953) V_L = 0.71 × √(2 × 9.81 × 0.035 × (3.2 − 1.03533)/1.03533) = 0.851 m/s → v/V_L = 2.372 (No Settling - Good Margin) (validation case c0011-7m3h-slurry-npsh) |
Example 2 — Clean water transfer from an open tank
Cold water from an open, flooded tank: the pressure, static and friction heads add to the TDH and the NPSH margin is large even with the placeholder NPSHr.
Given: Q = 10 m³/h through a 50 mm ID suction pipe; ρ = 1,000 kg/m³, Pv = 2.34 kPa abs. Suction surface at 0 kPa, discharge at 50 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 10 m, suction level Zs = 2 m (2 m above the pump centreline). Friction: suction 5 kPa, discharge 20 kPa. No NPSHr given (engine placeholder); clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 1,000 × 9.81 / 1000 = 9.8100 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (50 − 0) / 9.8100 = 5.097 m |
| Friction heads | hf,s = 5 / 9.8100 = 0.510 m; hf,d = 20 / 9.8100 = 2.039 m; total 2.548 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 10 + 5.097 + 2.548 = 17.645 m |
| Differential pressure | ΔP = TDH × ρg = 17.645 × 9.8100 = 173.10 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 2.34) / 9.8100 + 2 − 0.510 = 11.581 m |
| NPSH required | No pump curve given — engine placeholder NPSHr = 2.5 + 0.05 × Q² (Q in m³/s) = 2.5 + 0.05 × (10 / 3600)² = 2.500 m (not a pump property) |
| NPSH margin | NPSHa − NPSHr = 11.581 − 2.500 = 9.081 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 9.081 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.05² / 4 = 0.001963 m²; v = (10 / 3600) / 0.001963 = 1.415 m/s |
| Result | 1/1 checks pass → PASS; TDH 17.64 m, NPSHa 11.58 m vs NPSHr 2.50 m; governing: npsh margin. NPSHr is a placeholder (≈ 2.5 m); use the selected pump's NPSH3 curve at the duty flow. |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.8100 kPa/m; TDH = 10 + (50 − 0)/9.8100 + (5 + 20)/9.8100 = 17.645 m; ΔP = 17.645 × 9.8100 = 173.10 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 2.34)/9.8100 + 2 − 0.510 = 11.581 m; NPSHr placeholder = 2.5 + 0.05 × (10/3600)² = 2.500 m; margin = 9.081 m vs 1.0 m; v = (10/3600)/(π × 0.05²/4) = 1.415 m/s (validation case c0011-clean-water-flooded) |
Example 3 — Sand slurry in an 80 mm suction — deposition risk
A sand slurry (Sₛ 2.65) at too low a velocity: the suction velocity is below the Durand limit, so the deposition check fails and governs although NPSH is fine.
Given: Q = 20 m³/h through a 80 mm ID suction pipe; ρ = 1,200 kg/m³, Pv = 5 kPa abs. Suction surface at 50 kPa, discharge at 200 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 8 m, suction level Zs = 0.5 m (0.5 m above the pump centreline). Friction: suction 10 kPa, discharge 80 kPa. No NPSHr given (engine placeholder); settling slurry, solids Ss = 2.65, Durand FL = 0.9.
| Head conversion | H = P / (ρg): ρg = 1,200 × 9.81 / 1000 = 11.7720 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (200 − 50) / 11.7720 = 12.742 m |
| Friction heads | hf,s = 10 / 11.7720 = 0.849 m; hf,d = 80 / 11.7720 = 6.796 m; total 7.645 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 8 + 12.742 + 7.645 = 28.387 m |
| Differential pressure | ΔP = TDH × ρg = 28.387 × 11.7720 = 334.18 kPa |
| Suction pressure | Ps,abs = 50 + 101.325 = 151.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (151.325 − 5) / 11.7720 + 0.5 − 0.849 = 12.080 m |
| NPSH required | No pump curve given — engine placeholder NPSHr = 2.5 + 0.05 × Q² (Q in m³/s) = 2.5 + 0.05 × (20 / 3600)² = 2.500 m (not a pump property) |
| NPSH margin | NPSHa − NPSHr = 12.080 − 2.500 = 9.580 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 9.580 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.08² / 4 = 0.005027 m²; v = (20 / 3600) / 0.005027 = 1.105 m/s |
| Durand deposition velocity | SL = 1,200 / 1000 = 1.2000; VL = FL √(2gD(Ss − SL) / SL) = 0.9 × √(2 × 9.81 × 0.08 × (2.65 − 1.2000) / 1.2000) = 1.239 m/s |
| Deposition check | v > VL: v / VL = 1.105 / 1.239 = 0.892 (engine: ≥ 1.3 good margin, 1–1.3 risk) → 'High Risk of Settling' → 1.105 vs limit 1.239 m/s FAIL |
| Result | 1/2 checks pass → FAIL; TDH 28.39 m, NPSHa 12.08 m vs NPSHr 2.50 m; v 1.10 vs VL 1.24 m/s; governing: slurry deposition. NPSHr is a placeholder (≈ 2.5 m); use the selected pump's NPSH3 curve at the duty flow. |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 11.7720 kPa/m; TDH = 8 + (200 − 50)/11.7720 + (10 + 80)/11.7720 = 28.387 m; ΔP = 28.387 × 11.7720 = 334.18 kPa; P_s,abs = 50 + 101.325 = 151.325 kPa abs; NPSHa = (151.325 − 5)/11.7720 + 0.5 − 0.849 = 12.080 m; NPSHr placeholder = 2.5 + 0.05 × (20/3600)² = 2.500 m; margin = 9.580 m vs 1.0 m; v = (20/3600)/(π × 0.08²/4) = 1.105 m/s; Durand (1953) V_L = 0.9 × √(2 × 9.81 × 0.08 × (2.65 − 1.2)/1.2) = 1.239 m/s → v/V_L = 0.892 (High Risk of Settling) (validation case c0011-slurry-settling-fail) |
Example 4 — Slurry between V_L and 1.3 V_L
The suction velocity clears the Durand limit (check passes) but by less than 30 %, so the engine reports 'Risk of Settling'.
Given: Q = 40 m³/h through a 100 mm ID suction pipe; ρ = 1,150 kg/m³, Pv = 3.2 kPa abs. Suction surface at 0 kPa, discharge at 0 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 12 m, suction level Zs = 1.5 m (1.5 m above the pump centreline). Friction: suction 4 kPa, discharge 45 kPa. NPSHr 3.5 m from the pump curve; settling slurry, solids Ss = 2.65, Durand FL = 0.8, d50 = 250 µm.
| Head conversion | H = P / (ρg): ρg = 1,150 × 9.81 / 1000 = 11.2815 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (0 − 0) / 11.2815 = 0.000 m |
| Friction heads | hf,s = 4 / 11.2815 = 0.355 m; hf,d = 45 / 11.2815 = 3.989 m; total 4.343 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 12 + 0.000 + 4.343 = 16.343 m |
| Differential pressure | ΔP = TDH × ρg = 16.343 × 11.2815 = 184.38 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 3.2) / 11.2815 + 1.5 − 0.355 = 9.843 m |
| NPSH required | NPSHr = 3.500 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 9.843 − 3.500 = 6.343 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 6.343 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.1² / 4 = 0.007854 m²; v = (40 / 3600) / 0.007854 = 1.415 m/s |
| Durand deposition velocity | SL = 1,150 / 1000 = 1.1500; VL = FL √(2gD(Ss − SL) / SL) = 0.8 × √(2 × 9.81 × 0.1 × (2.65 − 1.1500) / 1.1500) = 1.280 m/s |
| Deposition check | v > VL: v / VL = 1.415 / 1.280 = 1.105 (engine: ≥ 1.3 good margin, 1–1.3 risk) → 'Risk of Settling' → 1.415 vs limit 1.280 m/s PASS |
| Result | 2/2 checks pass → PASS; TDH 16.34 m, NPSHa 9.84 m vs NPSHr 3.50 m; v 1.42 vs VL 1.28 m/s; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 11.2815 kPa/m; TDH = 12 + (0 − 0)/11.2815 + (4 + 45)/11.2815 = 16.343 m; ΔP = 16.343 × 11.2815 = 184.38 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 3.2)/11.2815 + 1.5 − 0.355 = 9.843 m; NPSHr = 3.500 m (pump curve); margin = 6.343 m vs 1.0 m; v = (40/3600)/(π × 0.1²/4) = 1.415 m/s; Durand (1953) V_L = 0.8 × √(2 × 9.81 × 0.1 × (2.65 − 1.15)/1.15) = 1.280 m/s → v/V_L = 1.105 (Risk of Settling) (validation case c0011-slurry-risk-band) |
Example 5 — Water at 90 °C lifted 3 m — cavitation
Hot water near its boiling point combined with a suction lift leaves negative NPSHa: the margin check fails by a wide margin.
Given: Q = 5 m³/h through a 40 mm ID suction pipe; ρ = 965.3 kg/m³, Pv = 70.18 kPa abs. Suction surface at 0 kPa, discharge at 100 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 10 m, suction level Zs = -3 m (3 m below the pump centreline). Friction: suction 8 kPa, discharge 30 kPa. NPSHr 3 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 965.3 × 9.81 / 1000 = 9.4696 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (100 − 0) / 9.4696 = 10.560 m |
| Friction heads | hf,s = 8 / 9.4696 = 0.845 m; hf,d = 30 / 9.4696 = 3.168 m; total 4.013 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 10 + 10.560 + 4.013 = 24.573 m |
| Differential pressure | ΔP = TDH × ρg = 24.573 × 9.4696 = 232.70 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 70.18) / 9.4696 − 3 − 0.845 = -0.556 m |
| NPSH required | NPSHr = 3.000 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = -0.556 − 3.000 = -3.556 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Risky - Cavitation Likely') → -3.556 vs limit 1.000 m FAIL |
| Suction velocity | A = π × 0.04² / 4 = 0.001257 m²; v = (5 / 3600) / 0.001257 = 1.105 m/s |
| Result | 0/1 checks pass → FAIL; TDH 24.57 m, NPSHa -0.56 m vs NPSHr 3.00 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.4696 kPa/m; TDH = 10 + (100 − 0)/9.4696 + (8 + 30)/9.4696 = 24.573 m; ΔP = 24.573 × 9.4696 = 232.70 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 70.18)/9.4696 − 3 − 0.845 = -0.556 m; NPSHr = 3.000 m (pump curve); margin = -3.556 m vs 1.0 m; v = (5/3600)/(π × 0.04²/4) = 1.105 m/s (validation case c0011-hot-water-suction-lift) |
Example 6 — Boiler feed from a deaerator at saturation
A liquid stored at its own vapour pressure (deaerator at 105 °C): the pressure term cancels and NPSHa is just the static submergence minus suction friction.
Given: Q = 30 m³/h through a 100 mm ID suction pipe; ρ = 954.7 kg/m³, Pv = 120.8 kPa abs. Suction surface at 120.8 kPa, discharge at 1,500 kPa (absolute). Static head Hstatic = 2 m, suction level Zs = 6 m (6 m above the pump centreline). Friction: suction 6 kPa, discharge 60 kPa. NPSHr 3.2 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 954.7 × 9.81 / 1000 = 9.3656 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (1,500 − 120.8) / 9.3656 = 147.262 m |
| Friction heads | hf,s = 6 / 9.3656 = 0.641 m; hf,d = 60 / 9.3656 = 6.406 m; total 7.047 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 2 + 147.262 + 7.047 = 156.309 m |
| Differential pressure | ΔP = TDH × ρg = 156.309 × 9.3656 = 1,463.93 kPa |
| Suction pressure | Ps,abs = 120.8 kPa abs (given as absolute) |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (120.800 − 120.8) / 9.3656 + 6 − 0.641 = 5.359 m |
| NPSH required | NPSHr = 3.200 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 5.359 − 3.200 = 2.159 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 2.159 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.1² / 4 = 0.007854 m²; v = (30 / 3600) / 0.007854 = 1.061 m/s |
| Result | 1/1 checks pass → PASS; TDH 156.31 m, NPSHa 5.36 m vs NPSHr 3.20 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.3656 kPa/m; TDH = 2 + (1500 − 120.8)/9.3656 + (6 + 60)/9.3656 = 156.309 m; ΔP = 156.309 × 9.3656 = 1 463.93 kPa; P_s,abs = 120.800 kPa abs (given); NPSHa = (120.800 − 120.8)/9.3656 + 6 − 0.641 = 5.359 m; NPSHr = 3.200 m (pump curve); margin = 2.159 m vs 1.0 m; v = (30/3600)/(π × 0.1²/4) = 1.061 m/s (validation case c0011-deaerator-saturated) |
Example 7 — Closed vessel to closed vessel, absolute pressures
Both vessel pressures given absolute: the pressure difference drives most of the head, and no atmospheric pressure is added to NPSHa.
Given: Q = 60 m³/h through a 125 mm ID suction pipe; ρ = 998 kg/m³, Pv = 2.339 kPa abs. Suction surface at 250 kPa, discharge at 650 kPa (absolute). Static head Hstatic = 6 m, suction level Zs = 1 m (1 m above the pump centreline). Friction: suction 7.5 kPa, discharge 55 kPa. NPSHr 4 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 998 × 9.81 / 1000 = 9.7904 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (650 − 250) / 9.7904 = 40.856 m |
| Friction heads | hf,s = 7.5 / 9.7904 = 0.766 m; hf,d = 55 / 9.7904 = 5.618 m; total 6.384 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 6 + 40.856 + 6.384 = 53.240 m |
| Differential pressure | ΔP = TDH × ρg = 53.240 × 9.7904 = 521.24 kPa |
| Suction pressure | Ps,abs = 250 kPa abs (given as absolute) |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (250.000 − 2.339) / 9.7904 + 1 − 0.766 = 25.530 m |
| NPSH required | NPSHr = 4.000 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 25.530 − 4.000 = 21.530 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 21.530 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.125² / 4 = 0.012272 m²; v = (60 / 3600) / 0.012272 = 1.358 m/s |
| Result | 1/1 checks pass → PASS; TDH 53.24 m, NPSHa 25.53 m vs NPSHr 4.00 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.7904 kPa/m; TDH = 6 + (650 − 250)/9.7904 + (7.5 + 55)/9.7904 = 53.240 m; ΔP = 53.240 × 9.7904 = 521.24 kPa; P_s,abs = 250.000 kPa abs (given); NPSHa = (250.000 − 2.339)/9.7904 + 1 − 0.766 = 25.530 m; NPSHr = 4.000 m (pump curve); margin = 21.530 m vs 1.0 m; v = (60/3600)/(π × 0.125²/4) = 1.358 m/s (validation case c0011-pressurised-vessel-absolute) |
Example 8 — Suction lift at 1 500 m altitude
Reduced atmospheric pressure at altitude (84.56 kPa, standard atmosphere at 1 500 m) erodes NPSHa; with a 2.5 m lift the margin lands in the 1–2 m 'acceptable' band and still passes.
Given: Q = 25 m³/h through a 80 mm ID suction pipe; ρ = 998 kg/m³, Pv = 2.339 kPa abs. Suction surface at 0 kPa, discharge at 0 kPa (gauge, Patm = 84.56 kPa). Static head Hstatic = 20 m, suction level Zs = -2.5 m (2.5 m below the pump centreline). Friction: suction 6 kPa, discharge 35 kPa. NPSHr 3.4 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 998 × 9.81 / 1000 = 9.7904 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (0 − 0) / 9.7904 = 0.000 m |
| Friction heads | hf,s = 6 / 9.7904 = 0.613 m; hf,d = 35 / 9.7904 = 3.575 m; total 4.188 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 20 + 0.000 + 4.188 = 24.188 m |
| Differential pressure | ΔP = TDH × ρg = 24.188 × 9.7904 = 236.81 kPa |
| Suction pressure | Ps,abs = 0 + 84.56 = 84.560 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (84.560 − 2.339) / 9.7904 − 2.5 − 0.613 = 5.285 m |
| NPSH required | NPSHr = 3.400 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 5.285 − 3.400 = 1.885 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Acceptable') → 1.885 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.08² / 4 = 0.005027 m²; v = (25 / 3600) / 0.005027 = 1.382 m/s |
| Result | 1/1 checks pass → PASS; TDH 24.19 m, NPSHa 5.29 m vs NPSHr 3.40 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.7904 kPa/m; TDH = 20 + (0 − 0)/9.7904 + (6 + 35)/9.7904 = 24.188 m; ΔP = 24.188 × 9.7904 = 236.81 kPa; P_s,abs = 0 + 84.56 = 84.560 kPa abs; NPSHa = (84.560 − 2.339)/9.7904 − 2.5 − 0.613 = 5.285 m; NPSHr = 3.400 m (pump curve); margin = 1.885 m vs 1.0 m; v = (25/3600)/(π × 0.08²/4) = 1.382 m/s (validation case c0011-altitude-1500m-lift) |
Example 9 — NPSH margin just under 1 m
Boundary case: NPSHa exceeds NPSHr, but by only 0.945 m — under the 1 m margin the tool requires, so the check fails.
Given: Q = 50 m³/h through a 100 mm ID suction pipe; ρ = 998 kg/m³, Pv = 7.384 kPa abs. Suction surface at 0 kPa, discharge at 150 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 5 m, suction level Zs = -4 m (4 m below the pump centreline). Friction: suction 9.79 kPa, discharge 40 kPa. NPSHr 3.65 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 998 × 9.81 / 1000 = 9.7904 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (150 − 0) / 9.7904 = 15.321 m |
| Friction heads | hf,s = 9.79 / 9.7904 = 1.000 m; hf,d = 40 / 9.7904 = 4.086 m; total 5.086 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 5 + 15.321 + 5.086 = 25.407 m |
| Differential pressure | ΔP = TDH × ρg = 25.407 × 9.7904 = 248.74 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 7.384) / 9.7904 − 4 − 1.000 = 4.595 m |
| NPSH required | NPSHr = 3.650 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 4.595 − 3.650 = 0.945 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Risky - Cavitation Likely') → 0.945 vs limit 1.000 m FAIL |
| Suction velocity | A = π × 0.1² / 4 = 0.007854 m²; v = (50 / 3600) / 0.007854 = 1.768 m/s |
| Result | 0/1 checks pass → FAIL; TDH 25.41 m, NPSHa 4.59 m vs NPSHr 3.65 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.7904 kPa/m; TDH = 5 + (150 − 0)/9.7904 + (9.79 + 40)/9.7904 = 25.407 m; ΔP = 25.407 × 9.7904 = 248.74 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 7.384)/9.7904 − 4 − 1.000 = 4.595 m; NPSHr = 3.650 m (pump curve); margin = 0.945 m vs 1.0 m; v = (50/3600)/(π × 0.1²/4) = 1.768 m/s (validation case c0011-margin-just-under-1m) |
Example 10 — Light hydrocarbon from an atmospheric tank
A volatile, light liquid (ρ 720 kg/m³, Pv 55 kPa): heads are larger per kPa than for water and the high vapour pressure takes most of the atmospheric head.
Given: Q = 45 m³/h through a 100 mm ID suction pipe; ρ = 720 kg/m³, Pv = 55 kPa abs. Suction surface at 0 kPa, discharge at 300 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 8 m, suction level Zs = 3 m (3 m above the pump centreline). Friction: suction 5 kPa, discharge 70 kPa. NPSHr 3 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 720 × 9.81 / 1000 = 7.0632 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (300 − 0) / 7.0632 = 42.474 m |
| Friction heads | hf,s = 5 / 7.0632 = 0.708 m; hf,d = 70 / 7.0632 = 9.911 m; total 10.618 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 8 + 42.474 + 10.618 = 61.092 m |
| Differential pressure | ΔP = TDH × ρg = 61.092 × 7.0632 = 431.51 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 55) / 7.0632 + 3 − 0.708 = 8.851 m |
| NPSH required | NPSHr = 3.000 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 8.851 − 3.000 = 5.851 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 5.851 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.1² / 4 = 0.007854 m²; v = (45 / 3600) / 0.007854 = 1.592 m/s |
| Result | 1/1 checks pass → PASS; TDH 61.09 m, NPSHa 8.85 m vs NPSHr 3.00 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 7.0632 kPa/m; TDH = 8 + (300 − 0)/7.0632 + (5 + 70)/7.0632 = 61.092 m; ΔP = 61.092 × 7.0632 = 431.51 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 55)/7.0632 + 3 − 0.708 = 8.851 m; NPSHr = 3.000 m (pump curve); margin = 5.851 m vs 1.0 m; v = (45/3600)/(π × 0.1²/4) = 1.592 m/s (validation case c0011-light-hydrocarbon) |
Example 11 — Discharge below suction into a pressurised header
A negative static head (discharge 5 m below the suction level) reduces the TDH; the pump must still overcome the header pressure and friction.
Given: Q = 15 m³/h through a 65 mm ID suction pipe; ρ = 998 kg/m³, Pv = 2.339 kPa abs. Suction surface at 0 kPa, discharge at 250 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = -5 m, suction level Zs = 5 m (5 m above the pump centreline). Friction: suction 3 kPa, discharge 25 kPa. NPSHr 2 m from the pump curve; clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 998 × 9.81 / 1000 = 9.7904 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (250 − 0) / 9.7904 = 25.535 m |
| Friction heads | hf,s = 3 / 9.7904 = 0.306 m; hf,d = 25 / 9.7904 = 2.554 m; total 2.860 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = -5 + 25.535 + 2.860 = 23.395 m |
| Differential pressure | ΔP = TDH × ρg = 23.395 × 9.7904 = 229.05 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 2.339) / 9.7904 + 5 − 0.306 = 14.804 m |
| NPSH required | NPSHr = 2.000 m (pump curve, given) |
| NPSH margin | NPSHa − NPSHr = 14.804 − 2.000 = 12.804 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 12.804 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.065² / 4 = 0.003318 m²; v = (15 / 3600) / 0.003318 = 1.256 m/s |
| Result | 1/1 checks pass → PASS; TDH 23.39 m, NPSHa 14.80 m vs NPSHr 2.00 m; governing: npsh margin |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.7904 kPa/m; TDH = -5 + (250 − 0)/9.7904 + (3 + 25)/9.7904 = 23.395 m; ΔP = 23.395 × 9.7904 = 229.05 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 2.339)/9.7904 + 5 − 0.306 = 14.804 m; NPSHr = 2.000 m (pump curve); margin = 12.804 m vs 1.0 m; v = (15/3600)/(π × 0.065²/4) = 1.256 m/s (validation case c0011-negative-static-head) |
Example 12 — 3 600 m³/h intake with the placeholder NPSHr
At Q = 1 m³/s the engine's placeholder NPSHr = 2.5 + 0.05 Q² reaches only 2.55 m — it is not a pump property, and the tool warns to use the real NPSH3 curve.
Given: Q = 3,600 m³/h through a 600 mm ID suction pipe; ρ = 999.7 kg/m³, Pv = 1.228 kPa abs. Suction surface at 0 kPa, discharge at 0 kPa (gauge, Patm = 101.325 kPa). Static head Hstatic = 18 m, suction level Zs = 2 m (2 m above the pump centreline). Friction: suction 8 kPa, discharge 40 kPa. No NPSHr given (engine placeholder); clear liquid (no slurry check).
| Head conversion | H = P / (ρg): ρg = 999.7 × 9.81 / 1000 = 9.8071 kPa/m |
|---|---|
| Pressure head | Hp = (Pd − Ps) / ρg = (0 − 0) / 9.8071 = 0.000 m |
| Friction heads | hf,s = 8 / 9.8071 = 0.816 m; hf,d = 40 / 9.8071 = 4.079 m; total 4.894 m |
| Total dynamic head | TDH = Hstatic + Hp + hf = 18 + 0.000 + 4.894 = 22.894 m |
| Differential pressure | ΔP = TDH × ρg = 22.894 × 9.8071 = 224.53 kPa |
| Suction pressure | Ps,abs = 0 + 101.325 = 101.325 kPa abs |
| NPSH available | NPSHa = (Ps,abs − Pv) / ρg + Zs − hf,s = (101.325 − 1.228) / 9.8071 + 2 − 0.816 = 11.391 m |
| NPSH required | No pump curve given — engine placeholder NPSHr = 2.5 + 0.05 × Q² (Q in m³/s) = 2.5 + 0.05 × (3,600 / 3600)² = 2.550 m (not a pump property) |
| NPSH margin | NPSHa − NPSHr = 11.391 − 2.550 = 8.841 m, required ≥ 1.0 m (ANSI/HI 9.6.1 margin; engine band 'Safe') → 8.841 vs limit 1.000 m PASS |
| Suction velocity | A = π × 0.6² / 4 = 0.282743 m²; v = (3,600 / 3600) / 0.282743 = 3.537 m/s |
| Result | 1/1 checks pass → PASS; TDH 22.89 m, NPSHa 11.39 m vs NPSHr 2.55 m; governing: npsh margin. NPSHr is a placeholder (≈ 2.5 m); use the selected pump's NPSH3 curve at the duty flow. |
| Reference | Hand calculation (Karassik Pump Handbook system-head method; NPSH per ANSI/HI 9.6.1): ρg = 9.8071 kPa/m; TDH = 18 + (0 − 0)/9.8071 + (8 + 40)/9.8071 = 22.894 m; ΔP = 22.894 × 9.8071 = 224.53 kPa; P_s,abs = 0 + 101.325 = 101.325 kPa abs; NPSHa = (101.325 − 1.228)/9.8071 + 2 − 0.816 = 11.391 m; NPSHr placeholder = 2.5 + 0.05 × (3600/3600)² = 2.550 m; margin = 8.841 m vs 1.0 m; v = (3600/3600)/(π × 0.6²/4) = 3.537 m/s (validation case c0011-large-flow-placeholder) |
Standards & References
- Hydraulic Institute Standards — ANSI/HI 9.6.1 (NPSH margin ratios), ANSI/HI 14.3 (rotodynamic pump design), ANSI/HI 9.6.7 (effects of liquid viscosity on performance)
- ASHRAE Handbook — HVAC Systems and Equipment — Pump selection and system curve methodology
- Durand, R. (1953) — "Basic Relationships of the Transportation of Solids in Pipes" — Minnesota International Hydraulics Convention, settling velocity method
- Karassik et al., Pump Handbook (McGraw-Hill) — Centrifugal pump system analysis and NPSH fundamentals
Tips & Limitations
Tips
- Always use manufacturer NPSHr data for final pump selection — the built-in estimate is only for preliminary screening.
- For gauge pressure inputs, adjust atmospheric pressure for altitude. At 1000 m elevation, Patm drops to approximately 89.9 kPa.
- A positive suction static head (flooded suction) greatly improves NPSHa. Use flooded suction wherever possible for hot or volatile fluids.
- The 1.3× safety factor on settling velocity is a minimum — for critical slurry pipelines, use 1.5× or higher.
- Friction losses should include all fittings, valves, and accessories — not just straight pipe. Use a separate pipe friction calculator (Darcy-Weisbach or Hazen-Williams) to determine these values.
- When viscosity exceeds 10 cP, apply Hydraulic Institute viscosity correction factors to the pump performance curves before using them.
Limitations
- Steady-state only — does not model transient conditions such as water hammer, surge, or pump start-up.
- Single pump — does not model series or parallel pump arrangements. TDH is for a single pump duty point.
- No system curve — calculates TDH at the design flow rate only. Does not generate a full system H–Q curve for pump curve overlay.
- Friction inputs are manual — the calculator does not compute pipe friction internally. Friction losses must be determined externally and entered in kPa.
- NPSHr estimate is approximate — the empirical formula is not valid for all pump types and flow ranges. Always verify with manufacturer data.
- Slurry analysis is simplified — uses the Durand method with a single FL factor. Does not account for particle size distribution, concentration effects, or non-Newtonian rheology.
Developer Guide
Architecture
File layout:
components/c0011_centrifugal_pump/component.py— Component registration, parameter schema, summary cards builder, QR code generatorcomponents/c0011_centrifugal_pump/calculations.py— Pure math functions and physical constants (no Django dependencies)components/c0011_centrifugal_pump/equations.py— Equation builder for report generation (MathJax articles)components/c0011_centrifugal_pump/excel_generator.py— Excel report generator (openpyxl workbook with step-by-step working)
The calculator class is CentrifugalPumpCalculator,
extending BaseCalculator. It delegates all math to the
pure function calculate_centrifugal_pump_system().
Summary cards are built by get_summary_cards(result)
and display four key outputs: TDH, Differential Pressure, NPSH Status,
and Settling Status. Status card styling (success,
warning, danger) is determined by the
assessment functions.
Constants:
GRAVITY = 9.81m/s²ATMOSPHERIC_PRESSURE = 101.325kPa (default, overridable)
Code Paths
Key functions in calculations.py:
| Function | Purpose |
|---|---|
pressure_to_head(pressure_kpa, density) |
Convert kPa to metres of head |
head_to_pressure(head_m, density) |
Convert metres of head to kPa |
calculate_flow_area(diameter_mm) |
Pipe cross-sectional area (m²) |
calculate_flow_velocity(flow_rate_m3h, diameter_mm) |
Fluid velocity in pipe (m/s) |
calculate_liquid_specific_gravity(density) |
SG = ρ / 1000 |
calculate_durand_settling_velocity(...) |
Durand critical settling velocity (m/s) |
estimate_npsh_required(flow_rate_m3h) |
Empirical NPSHr estimate |
calculate_npsh_available(...) |
NPSHa with gauge/absolute pressure handling |
assess_npsh_status(npsh_a, npsh_r) |
Returns (status_text, css_class) tuple |
assess_settling_status(flow_v, settling_v) |
Returns (status_text, css_class) tuple |
calculate_centrifugal_pump_system(data) |
Main orchestrator — calls all above functions |
Key methods in component.py:
| Method / Function | Purpose |
|---|---|
CentrifugalPumpCalculator.validate_parameters() |
Range checks and engineering warnings (viscosity, cavitation proximity, solid SG) |
CentrifugalPumpCalculator.calculate() |
Prepares params, calls pure calc, adds result-based warnings |
get_summary_cards(result) |
Builds dashboard summary card list |
equation_builder(result) |
Delegates to equations.build_equations() for report |
register_component(registry) |
Registers calc type c0011_centrifugal_pump |
Key function in excel_generator.py:
| Function | Purpose |
|---|---|
create_c0011_excel_report(calculation) |
Generates openpyxl Workbook with styled sections: initial values, step-by-step calculations, and final results |
Validation flow:
validate_parameters()checks density, flow rate, pipe diameter ranges- Warns if inlet absolute pressure is within 10 kPa of vapor pressure
- Warns if viscosity exceeds 10 cP
- Warns if solid SG is less than liquid SG (buoyant particles)
calculate()adds post-calculation warnings for NPSH margin and settling risk
Testing
Running tests:
pytest calcs/components/c0011_centrifugal_pump/ -v
pytest calcs/test_c0011* -v
pytest -m validation mcp_public/tests/test_validation_corpus.py -k c0011 -q
pytest calcs/test_help_examples.py -k pump -q
Worked examples: the examples above are generated from the validation corpus
(mcp_public/validation/cases/fe_calc_pump/, ids c0011-*) by
python manage.py generate_help_examples --tool fe_calc_pump, which writes
_c0011_centrifugal_pump_examples.html. Add or change a case there, then regenerate; the
fragment is never edited by hand.
How to extend:
- Add new friction calculation methods (e.g., built-in Darcy-Weisbach)
by adding pure functions to
calculations.pyand wiring them via a new schema toggle incomponent.py. - Add system curve generation by computing TDH at multiple flow rates and returning an array of (Q, H) points.
- For multi-pump arrangements, extend the orchestrator to sum/split heads and flows appropriately.
- Alternative settling models (e.g., Wilson-Addie-Sellgren) can be added alongside the Durand function with a method selection parameter.
- Write tests covering edge cases: zero flow, equal solid/liquid SG, negative suction head, vapor pressure exceeding inlet absolute pressure.