The mass flow rate of a refrigerant is a fundamental parameter in the design and analysis of refrigeration systems, HVAC units, and heat pumps. It represents the amount of refrigerant by mass circulating through the system per unit of time to achieve a specific cooling or heating effect.
The Formula
The calculation relies on the principle of energy conservation across the evaporator. The basic formula is:
ṁ = Q / (hout – hin)
Where:
ṁ = Mass flow rate (kg/s or lb/min)
Q = Cooling Capacity or Heat Load (kW or Btu/min)
hout = Enthalpy of refrigerant leaving the evaporator (kJ/kg or Btu/lb)
hin = Enthalpy of refrigerant entering the evaporator (kJ/kg or Btu/lb)
The denominator (hout – hin) is known as the Net Refrigeration Effect (NRE). It quantifies how much heat a single unit of mass of refrigerant absorbs as it passes through the evaporator.
Input Parameters Explained
Cooling Capacity (Load): This is the total amount of heat the system needs to remove. In Metric units, this is usually measured in Kilowatts (kW). In Imperial units, it is often measured in Refrigeration Tons (RT) or Btu/hr.
Enthalpy Outlet (hout): The total energy content of the refrigerant vapor as it leaves the evaporator coil. This value is found using pressure-enthalpy (P-h) charts or refrigerant property tables for the specific suction pressure and superheat temperature.
Enthalpy Inlet (hin): The total energy content of the refrigerant entering the evaporator (after the expansion valve). Since the expansion process is isenthalpic (constant enthalpy), this is usually equal to the enthalpy of the liquid leaving the condenser.
Example Calculation (R-134a)
Let's assume a small commercial refrigeration unit using R-134a operating under the following conditions:
Required Cooling Capacity: 10 kW
Enthalpy at Evaporator Outlet (Sat. Vapor): 398 kJ/kg
To convert to kilograms per hour: 0.0676 * 3600 = 243.2 kg/h.
Why is Mass Flow Rate Important?
Determining the correct mass flow rate is crucial for sizing the compressor and the expansion valve. If the flow rate is too low, the system will not meet the cooling load. If it is too high, it may lead to liquid floodback into the compressor, potentially causing damage, or result in inefficient cycling.
function updateRfLabels() {
var system = document.getElementById("unitSystem").value;
var labelCap = document.getElementById("labelCapacity");
var labelHOut = document.getElementById("labelHOut");
var labelHIn = document.getElementById("labelHIn");
var inputCap = document.getElementById("coolingCapacity");
var inputHOut = document.getElementById("enthalpyOut");
var inputHIn = document.getElementById("enthalpyIn");
if (system === "SI") {
labelCap.innerHTML = "Cooling Capacity (Load) [kW]";
labelHOut.innerHTML = "Enthalpy at Evaporator Outlet (hout) [kJ/kg]";
labelHIn.innerHTML = "Enthalpy at Evaporator Inlet (hin) [kJ/kg]";
inputCap.placeholder = "e.g., 3.5";
inputHOut.placeholder = "e.g., 400";
inputHIn.placeholder = "e.g., 200";
} else {
labelCap.innerHTML = "Cooling Capacity (Load) [Refrigeration Tons]";
labelHOut.innerHTML = "Enthalpy at Evaporator Outlet (hout) [Btu/lb]";
labelHIn.innerHTML = "Enthalpy at Evaporator Inlet (hin) [Btu/lb]";
inputCap.placeholder = "e.g., 1.5";
inputHOut.placeholder = "e.g., 115";
inputHIn.placeholder = "e.g., 45";
}
// Hide results when unit changes to avoid confusion
document.getElementById("rfResult").style.display = "none";
document.getElementById("rfErrorMessage").style.display = "none";
}
function calculateRefFlow() {
// 1. Get input elements
var system = document.getElementById("unitSystem").value;
var capacityStr = document.getElementById("coolingCapacity").value;
var hOutStr = document.getElementById("enthalpyOut").value;
var hInStr = document.getElementById("enthalpyIn").value;
var resultBox = document.getElementById("rfResult");
var errorBox = document.getElementById("rfErrorMessage");
// 2. Clear previous results/errors
resultBox.style.display = "none";
errorBox.style.display = "none";
errorBox.innerHTML = "";
// 3. Validate Inputs
if (capacityStr === "" || hOutStr === "" || hInStr === "") {
errorBox.innerHTML = "Please fill in all fields.";
errorBox.style.display = "block";
return;
}
var Q = parseFloat(capacityStr);
var hOut = parseFloat(hOutStr);
var hIn = parseFloat(hInStr);
if (isNaN(Q) || isNaN(hOut) || isNaN(hIn)) {
errorBox.innerHTML = "Please enter valid numbers.";
errorBox.style.display = "block";
return;
}
if (Q = hOut) {
errorBox.innerHTML = "Outlet Enthalpy must be greater than Inlet Enthalpy for a cooling process (NRE must be positive).";
errorBox.style.display = "block";
return;
}
// 4. Calculate Logic
var nre = hOut – hIn;
var massFlowSec = 0; // per second (or per minute for imperial default)
var massFlowHour = 0;
// Display variables
var dispNRE = "";
var dispFlowSec = "";
var dispFlowHour = "";
var unitNRE = "";
var unitFlowSec = "";
var unitFlowHour = "";
if (system === "SI") {
// SI Calculation
// Q in kW (kJ/s), h in kJ/kg
// m (kg/s) = Q / (h_out – h_in)
massFlowSec = Q / nre;
massFlowHour = massFlowSec * 3600;
dispNRE = nre.toFixed(2);
dispFlowSec = massFlowSec.toFixed(4);
dispFlowHour = massFlowHour.toFixed(2);
unitNRE = "kJ/kg";
unitFlowSec = "kg/s";
unitFlowHour = "kg/h";
} else {
// Imperial Calculation
// Q in Tons. 1 Ton = 200 Btu/min.
// h in Btu/lb.
// m (lb/min) = (Q_tons * 200) / (h_out – h_in)
var qBtuMin = Q * 200;
massFlowSec = qBtuMin / nre; // This represents lb/min here
massFlowHour = massFlowSec * 60; // lb/hr
dispNRE = nre.toFixed(2);
dispFlowSec = massFlowSec.toFixed(3); // lb/min
dispFlowHour = massFlowHour.toFixed(1);
unitNRE = "Btu/lb";
unitFlowSec = "lb/min";
unitFlowHour = "lb/hr";
}
// 5. Update UI
document.getElementById("resNRE").innerHTML = dispNRE;
document.getElementById("unitNRE").innerHTML = unitNRE;
document.getElementById("resFlowSec").innerHTML = dispFlowSec;
document.getElementById("unitFlowSec").innerHTML = unitFlowSec;
document.getElementById("resFlowHour").innerHTML = dispFlowHour;
document.getElementById("unitFlowHour").innerHTML = unitFlowHour;
resultBox.style.display = "block";
}