The molar flow rate is a fundamental concept in chemical engineering, chemistry, and process dynamics. Unlike mass flow rate, which measures the mass of a substance passing through a point per unit of time (e.g., kilograms per second), the molar flow rate measures the amount of substance in moles per unit of time.
This metric is critical when dealing with chemical reactions, as stoichiometry is based on mole ratios rather than mass ratios. For instance, in a reactor design, knowing the molar flow rate allows engineers to calculate conversion rates and product yields accurately.
The Formula
To calculate the molar flow rate ($\dot{n}$), you divide the mass flow rate ($\dot{m}$) by the substance's molar mass ($M$). The basic equation is:
&n_dot; = &m_dot; / M
Where:
&n_dot; = Molar Flow Rate (mol/s or kmol/h)
&m_dot; = Mass Flow Rate (g/s or kg/h)
M = Molar Mass or Molecular Weight (g/mol or kg/kmol)
Example Calculation
Let's say you are pumping water ($H_2O$) into a storage tank. You have the following data:
Mass Flow Rate: 3,600 kg/h
Molar Mass of Water: 18.015 g/mol (approx 18 kg/kmol)
One of the most common errors in calculating molar flow is unit mismatch. It is crucial to ensure units align before division. For example, if your mass flow is in kg/s and your molar mass is in g/mol, you must convert the mass flow to g/s (multiply by 1000) or treat the molar mass as kg/kmol (which is numerically identical to g/mol) to get the result in kmol/s.
This calculator automatically handles these conversions for you, allowing you to input mass flow in kg/h, lb/h, or kg/s and receiving the output in standardized molar flow units.
function calculateMolarFlow() {
// 1. Get DOM elements
var massInput = document.getElementById('massFlowInput');
var unitSelect = document.getElementById('massFlowUnit');
var molarMassInput = document.getElementById('molarMassInput');
var resultBox = document.getElementById('calcResults');
var errorBox = document.getElementById('errorDisplay');
var resMolS = document.getElementById('res_mol_s');
var resKmolH = document.getElementById('res_kmol_h');
var resMolH = document.getElementById('res_mol_h');
var resLbMolH = document.getElementById('res_lbmol_h');
// 2. Parse values
var massFlow = parseFloat(massInput.value);
var unit = unitSelect.value;
var molarMass = parseFloat(molarMassInput.value);
// 3. Validation
resultBox.style.display = 'none';
errorBox.style.display = 'none';
if (isNaN(massFlow) || isNaN(molarMass)) {
errorBox.innerText = "Please enter valid numeric values for Mass Flow Rate and Molar Mass.";
errorBox.style.display = 'block';
return;
}
if (molarMass <= 0) {
errorBox.innerText = "Molar Mass must be greater than zero.";
errorBox.style.display = 'block';
return;
}
// 4. Normalize Mass Flow to g/s (grams per second) for base calculation
var massFlow_g_s = 0;
if (unit === 'kg_s') {
massFlow_g_s = massFlow * 1000;
} else if (unit === 'kg_h') {
massFlow_g_s = (massFlow * 1000) / 3600;
} else if (unit === 'g_s') {
massFlow_g_s = massFlow;
} else if (unit === 'lb_h') {
// 1 lb = 453.59237 g
massFlow_g_s = (massFlow * 453.59237) / 3600;
}
// 5. Calculate Molar Flow in mol/s (Base Unit)
// Formula: n_dot (mol/s) = m_dot (g/s) / M (g/mol)
var molarFlow_mol_s = massFlow_g_s / molarMass;
// 6. Convert to other units
var molarFlow_mol_h = molarFlow_mol_s * 3600;
var molarFlow_kmol_h = molarFlow_mol_h / 1000;
// Convert to lbmol/h
// 1 kmol = 2.20462 lb-mol approx
// More precisely: 1 mol = 1/453.59237 lbmol? No.
// 1 lbmol = 453.59237 mol
// So mol/h / 453.59237 = lbmol/h
var molarFlow_lbmol_h = molarFlow_mol_h / 453.59237;
// 7. Format and Display Results
resMolS.innerText = molarFlow_mol_s.toLocaleString('en-US', {minimumFractionDigits: 4, maximumFractionDigits: 4}) + " mol/s";
resKmolH.innerText = molarFlow_kmol_h.toLocaleString('en-US', {minimumFractionDigits: 4, maximumFractionDigits: 4}) + " kmol/h";
resMolH.innerText = molarFlow_mol_h.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + " mol/h";
resLbMolH.innerText = molarFlow_lbmol_h.toLocaleString('en-US', {minimumFractionDigits: 4, maximumFractionDigits: 4}) + " lbmol/h";
resultBox.style.display = 'block';
}