Enter the capacity of your boiler, chiller, or heat exchanger.
The designed temperature drop/rise across the system (Standard is often 20°F).
Select the heat transfer fluid (affects specific heat capacity).
Pure Water (Standard)
10% Propylene Glycol
30% Propylene Glycol
50% Propylene Glycol
10% Ethylene Glycol
30% Ethylene Glycol
50% Ethylene Glycol
Enter ID to check fluid velocity (useful for scouring checks).
Minimum Flow Rate Required:0.00 GPM
Heat Transfer Fluid Constant:500
Resulting Pipe Velocity:0.00 ft/s
About the Minimum Flow Rate Calculation
Understanding the minimum flow rate is critical in the design and operation of hydronic systems, including boilers, chillers, and heat pumps. The minimum flow rate ensures that the equipment can transfer heat efficiently without overheating or freezing, and helps prevent damage to system components.
How It Is Calculated
This calculator uses the fundamental thermodynamic equation for heat transfer in fluids. The standard formula used in the HVAC industry for water-based systems is:
GPM = BTU/hr / (Fluid Factor × ΔT)
Where:
GPM: Gallons Per Minute (the flow rate).
BTU/hr: The total heat load or capacity of the equipment.
ΔT (Delta T): The temperature difference between the entering and leaving fluid (measured in °F).
Fluid Factor: A constant derived from the fluid's specific heat and density. For pure water, this is approximately 500. Adding glycol (antifreeze) reduces this factor, requiring a higher flow rate to transfer the same amount of heat.
Why Pipe Velocity Matters
If you provide a pipe diameter, the calculator also estimates the fluid velocity. Maintaining a specific velocity range is important for two reasons:
Minimum Velocity (Scouring): Usually around 2 ft/s. This prevents air pockets from forming and keeps suspended solids from settling in the pipe.
Maximum Velocity: Usually limited to 4-8 ft/s depending on pipe size to prevent erosion and noise issues.
If your calculated velocity is below 2 ft/s, you may need to increase the flow rate or decrease the pipe size to ensure proper air purging and system health.
function calculateFlowRate() {
// 1. Get input values
var loadInput = document.getElementById('heatLoad');
var deltaTInput = document.getElementById('deltaT');
var fluidSelect = document.getElementById('fluidType');
var pipeInput = document.getElementById('pipeSize');
var load = parseFloat(loadInput.value);
var deltaT = parseFloat(deltaTInput.value);
var factor = parseFloat(fluidSelect.value);
var pipeID = pipeInput.value ? parseFloat(pipeInput.value) : 0;
// 2. Validation
if (isNaN(load) || load <= 0) {
alert("Please enter a valid Heat Load greater than 0.");
return;
}
if (isNaN(deltaT) || deltaT 0) {
velocity = (0.4085 * gpm) / (pipeID * pipeID);
hasPipe = true;
}
// 5. Display Results
var resultsArea = document.getElementById('resultsArea');
resultsArea.style.display = 'block';
document.getElementById('resGPM').innerText = gpm.toFixed(2) + " GPM";
document.getElementById('resFactor').innerText = factor;
var velocityRow = document.getElementById('velocityRow');
var velocityWarning = document.getElementById('velocityWarning');
if (hasPipe) {
velocityRow.style.display = 'flex';
document.getElementById('resVelocity').innerText = velocity.toFixed(2) + " ft/s";
// Velocity Analysis
if (velocity < 2.0) {
velocityWarning.style.display = 'block';
velocityWarning.innerHTML = "Warning: Low Velocity. The calculated velocity is " + velocity.toFixed(2) + " ft/s. This is below the recommended 2.0 ft/s required for effective air purging and scouring in horizontal pipes.";
velocityWarning.style.color = "#856404";
velocityWarning.style.borderColor = "#ffeeba";
velocityWarning.style.backgroundColor = "#fff3cd";
} else if (velocity > 10.0) {
velocityWarning.style.display = 'block';
velocityWarning.innerHTML = "Warning: High Velocity. The calculated velocity is " + velocity.toFixed(2) + " ft/s. This may cause erosion corrosion and noise. Consider increasing pipe size.";
velocityWarning.style.color = "#721c24";
velocityWarning.style.borderColor = "#f5c6cb";
velocityWarning.style.backgroundColor = "#f8d7da";
} else {
velocityWarning.style.display = 'none';
}
} else {
velocityRow.style.display = 'none';
velocityWarning.style.display = 'none';
}
}