Calculate pipe pressure loss based on flow velocity and fluid properties.
Liters per minute (L/min)
Millimeters (mm)
Meters (m)
Millimeters (mm) – 0.0015 for PVC
kg/m³
Pa·s (Pascal-seconds)
Please enter valid positive numbers for all fields.
Total Pressure Drop
0.00 bar
0.00 psi
Fluid Velocity0.00 m/s
Reynolds Number (Re)0
Flow RegimeLaminar
Friction Factor (f)0.000
Understanding Pressure Drop vs Flow Rate
The relationship between pressure drop and flow rate is a fundamental concept in fluid dynamics and piping system design. As fluid moves through a pipe, friction between the fluid and the pipe walls causes a loss of energy, manifested as a drop in pressure. This calculator estimates that pressure loss using the Darcy-Weisbach equation, which is widely considered the most accurate model for pipe flow.
Why Pressure Drop Increases with Flow Rate
The relationship is not linear. Generally, pressure drop is proportional to the square of the flow rate in turbulent flow regimes ($ \Delta P \propto Q^2 $). This means that doubling the flow rate will roughly quadruple the pressure drop. This exponential relationship is critical for sizing pumps and pipes correctly to avoid excessive energy consumption or system failure.
The Darcy-Weisbach Equation
This calculator uses the following formula to determine pressure loss:
ΔP = f · (L / D) · (ρ · V² / 2)
Where:
ΔP: Pressure Drop (Pa)
f: Darcy Friction Factor (dimensionless)
L: Pipe Length (m)
D: Hydraulic Diameter (m)
ρ (rho): Fluid Density (kg/m³)
V: Flow Velocity (m/s)
Flow Regimes: Laminar vs. Turbulent
The flow regime is determined by the Reynolds Number (Re). This calculator automatically detects the regime to apply the correct friction factor logic:
Reynolds Number (Re)
Regime
Characteristics
< 2,000
Laminar
Smooth, streamlined flow. Friction factor depends only on Re ($f = 64/Re$).
2,000 – 4,000
Transition
Unpredictable flow behavior mixing laminar and turbulent characteristics.
> 4,000
Turbulent
Chaotic flow. Friction depends on both Re and pipe roughness.
Common Fluid Properties
Accurate calculation requires precise density and viscosity values. Here are standard values used for reference:
Water (20°C): Density ~998 kg/m³, Viscosity ~0.001 Pa·s
Hydraulic Oil (ISO 32, 40°C): Density ~850-875 kg/m³, Viscosity ~0.027 Pa·s
Air (STP): Density ~1.225 kg/m³, Viscosity ~0.000018 Pa·s
// Initial setup for presets
function setFluid(type) {
var densityInput = document.getElementById('density');
var viscosityInput = document.getElementById('viscosity');
if (type === 'water') {
densityInput.value = 997;
viscosityInput.value = 0.00089;
} else if (type === 'oil') {
// Generic Hydraulic Oil ISO 46 at 40C approximation
densityInput.value = 875;
viscosityInput.value = 0.040;
} else if (type === 'air') {
// Air at 20C, 1 atm
densityInput.value = 1.204;
viscosityInput.value = 0.00001825;
}
// Trigger calculation if other fields are filled
if(document.getElementById('flowRate').value && document.getElementById('pipeDiameter').value) {
calculatePressureDrop();
}
}
function calculatePressureDrop() {
// Get Inputs
var flowRateLpm = parseFloat(document.getElementById('flowRate').value);
var diameterMm = parseFloat(document.getElementById('pipeDiameter').value);
var lengthM = parseFloat(document.getElementById('pipeLength').value);
var roughnessMm = parseFloat(document.getElementById('roughness').value);
var density = parseFloat(document.getElementById('density').value);
var viscosity = parseFloat(document.getElementById('viscosity').value);
// Validation
if (isNaN(flowRateLpm) || isNaN(diameterMm) || isNaN(lengthM) || isNaN(roughnessMm) || isNaN(density) || isNaN(viscosity) ||
flowRateLpm <= 0 || diameterMm <= 0 || lengthM <= 0 || density <= 0 || viscosity m^3/s
var flowRateSi = flowRateLpm / 60000;
// Diameter: mm -> m
var diameterSi = diameterMm / 1000;
// Roughness: mm -> m
var roughnessSi = roughnessMm / 1000;
// 2. Calculate Geometry
var area = Math.PI * Math.pow((diameterSi / 2), 2);
// 3. Calculate Velocity (m/s)
var velocity = flowRateSi / area;
// 4. Calculate Reynolds Number (Dimensionless)
// Re = (rho * V * D) / mu
var reynolds = (density * velocity * diameterSi) / viscosity;
// 5. Calculate Friction Factor (Darcy friction factor 'f')
var f = 0;
var regime = "";
if (reynolds < 2000) {
// Laminar Flow
regime = "Laminar";
f = 64 / reynolds;
} else {
// Turbulent or Transitional
if (reynolds < 4000) {
regime = "Transition";
} else {
regime = "Turbulent";
}
// Use Swamee-Jain Equation for turbulent flow (approximation of Colebrook-White)
// f = 0.25 / [log10( (epsilon/3.7D) + (5.74/Re^0.9) )]^2
var term1 = roughnessSi / (3.7 * diameterSi);
var term2 = 5.74 / Math.pow(reynolds, 0.9);
var logVal = Math.log10(term1 + term2);
f = 0.25 / Math.pow(logVal, 2);
}
// 6. Calculate Pressure Drop (Darcy-Weisbach)
// dP = f * (L/D) * (rho * V^2 / 2) [Pascals]
var pressureDropPa = f * (lengthM / diameterSi) * (density * Math.pow(velocity, 2) / 2);
// 7. Conversions for Output
var pressureDropBar = pressureDropPa / 100000;
var pressureDropPsi = pressureDropPa * 0.000145038;
// 8. Display Results
document.getElementById('results').style.display = 'block';
document.getElementById('resPressureBar').innerText = pressureDropBar.toFixed(4) + " bar";
document.getElementById('resPressurePsi').innerText = pressureDropPsi.toFixed(2) + " psi (" + Math.round(pressureDropPa) + " Pa)";
document.getElementById('resVelocity').innerText = velocity.toFixed(2) + " m/s";
document.getElementById('resReynolds').innerText = Math.round(reynolds).toLocaleString();
document.getElementById('resRegime').innerText = regime;
document.getElementById('resFriction').innerText = f.toFixed(4);
}
// Set default fluid to water on load
window.onload = function() {
setFluid('water');
};