Calculator overview
Inputs and outputs
This summary comes from the calculator's published input and output contract.
Inputs
- CB Measured Dry O2 Percent Conditional
-
Unit dry mole % Default 3.7 Range 0 to 100
About this input
Nonnegative dry-basis product O2 used only for inference; it must be strictly below the entered combustion-air O2.
- CB Fuel Mass
-
Unit kg Default 137 Range At least 0
About this input
Positive mass of the entered fuel mixture; kg in SI or lb in US customary display.
- CB Unit System
-
Default SI Allowed SI, US customary
About this input
Selects kg/kmol outputs or their physically matched lb/lbmol display equivalents.
- CB Specified Excess Air Percent Conditional
-
Unit % Default 17.5 Range At least 0
About this input
Nonnegative air above the stoichiometric amount, used only in the specified-excess-air mode.
- CB Fuel Composition Grid
-
Default 8 rows
About this input
Exactly eight rows are submitted. A positive composition percentage activates a row and requires a nonblank label, positive molecular weight, and nonnegative C/H/O/N/S coefficients. Zero-percent rows are inert. Active percentages must total 100.
Column Range or allowed values Component / pseudo-component Not declared Composition (%) At least 0 Molecular weight At least 0 C atoms At least 0 H atoms At least 0 O atoms At least 0 N atoms At least 0 S atoms At least 0 - CB Combustion Air O2 Percent
-
Unit mole % Default 21.13 Range 0 to 100
About this input
User-entered oxygen mole percent of combustion air; the model requires a value strictly above 0 and below 100.
- CB Combustion Air Molecular Weight
-
Unit kg/kmol Default 28.37 Range At least 0
About this input
Positive user-entered average molecular weight of combustion air; no air-property lookup is supplied.
- CB Excess Air Mode
-
Default Specified excess air Allowed Specified excess air, Infer from measured dry O2
About this input
Uses a directly entered excess-air percentage or solves lambda from measured dry product-gas O2.
- CB Composition Basis
-
Default Mass percent Allowed Mole percent, Mass percent
About this input
Interprets the composition-percentage grid as mole percent or mass percent; active percentages must total 100.
Outputs
- CB N2 Equivalent Product Amount Conditional
-
Unit kmol
About this output
Fuel nitrogen as N2 plus the non-O2 combustion-air balance treated as N2-equivalent inert.
- CB Residual O2 Amount Conditional
-
Unit kmol
About this output
Oxygen supplied above the stoichiometric requirement under the complete-combustion assumption.
- CB H2O Product Amount Conditional
-
Unit kmol
About this output
Ideal water-vapor amount from one half of the entered fuel hydrogen-atom amount.
- CB Excess Air Ratio Conditional
-
Unit ratio
About this output
Actual combustion air divided by stoichiometric combustion air.
- CB Fuel Mixture Molecular Weight Conditional
-
Unit kg/kmol
About this output
Mole-weighted molecular weight or reciprocal mass-fraction molar sum, using only user-entered row values.
- CB Wet Product Total Conditional
-
Unit kmol
About this output
Dry ideal products plus ideal water vapor.
- Model Status
-
No unit declared
About this output
OK means the complete-combustion balance is finite and internally closed under the stated assumptions; NOT VALID identifies input or numeric-range corrections.
- CB Stoichiometric Oxygen Amount Conditional
-
Unit kmol
About this output
Oxygen amount required for ideal complete combustion of the entered fuel mass.
- CB SO2 Product Amount Conditional
-
Unit kmol
About this output
Ideal SO2 amount from the entered fuel sulfur coefficient; no sulfur-retention or control model is applied.
- CB Stoichiometric Air Amount Conditional
-
Unit kmol
About this output
Stoichiometric oxygen divided by the user-entered combustion-air oxygen mole fraction.
- CB CO2 Product Amount Conditional
-
Unit kmol
About this output
Ideal complete-combustion CO2 amount from the entered fuel carbon.
- CB Composition Sum Percent Conditional
-
Unit %
About this output
Sum of all eight entered composition percentages; a valid active grid totals 100 percent.
- CB Air To Fuel Mass Ratio Conditional
-
Unit mass/mass
About this output
Actual combustion-air mass divided by entered fuel mass on a common internal kilogram basis.
- CB Actual Air Amount Conditional
-
Unit kmol
About this output
Stoichiometric air multiplied by the solved excess-air ratio lambda.
- CB Actual Air Mass Conditional
-
Unit kg
About this output
Actual combustion-air amount multiplied by the user-entered average air molecular weight.
- CB Element Balance Max Residual Conditional
-
Unit kmol-atoms
About this output
Largest absolute C/H/O/N/S atom-balance closure residual after the complete-combustion product assignment.
- CB Excess Air Percent Conditional
-
Unit %
About this output
One hundred times lambda minus one.
- CB Dry Product Total Conditional
-
Unit kmol
About this output
CO2 + SO2 + residual O2 + N2-equivalent, excluding water.
- CB Dry CO2 Percent Conditional
-
Unit dry mole %
About this output
Ideal CO2 divided by total dry ideal products.
- CB Dry O2 Percent Conditional
-
Unit dry mole %
About this output
Residual O2 divided by total dry ideal products.
What it is
The Fuel Composition, Combustion and Excess-Air Balance Calculator balances ideal complete combustion for a fuel you describe yourself, and reports the air demand and the product gas that follow from that description.
You enter up to eight components in a grid. Each row carries a label, a composition percentage, a molecular weight, and the carbon, hydrogen, oxygen, nitrogen and sulfur atom counts for that component. The percentages are read as mole percent or as mass percent, and the active rows must total 100. From that grid the calculator sums the five element amounts, works out the stoichiometric oxygen requirement, and assigns every atom to a complete-combustion product: CO2, H2O, SO2, residual O2 and an N2-equivalent inert.
Excess air arrives one of two ways, chosen by a mode switch. Either you enter the excess air percentage directly, or you enter a measured dry product-gas oxygen reading and the model solves the same dry-product balance for the excess-air ratio lambda. Both paths feed the same twenty outputs, from stoichiometric and actual air through the five product amounts to the dry and wet totals, the dry O2 and dry CO2 percentages, and an element-balance closure residual. It works in kilograms and kilomoles, or in the matched pound and pound-mole display.
Combustion is assumed complete. There is no carbon monoxide, no unburned hydrocarbon, no NOx, no dissociation, no ash and no condensate anywhere in this model, so what it reports is the ideal product gas, not the one an analyser on a real stack will see.
Methodology
Purpose and model boundary
This model converts an eight-row, user-authored fuel composition into an ideal complete-combustion atom balance. It reports stoichiometric and actual combustion air, ideal CO2, H2O, SO2, residual O2 and N2-equivalent products, dry-product concentrations, and an element-balance closure check. Excess air can be entered directly or inferred from measured dry O2.
It is a stoichiometric screening calculation. It does not calculate heating value, flame temperature, burner efficiency, equilibrium, dissociation, kinetics, CO, NOx, unburned fuel, ash, condensate, emission factors, permit limits, or compliance.
Inputs and units
The grid contains eight fixed component or pseudo-component rows. Each row supplies a label, composition percent, user molecular weight, and nonnegative C, H, O, N, and S atom coefficients. A zero-percent row is inactive; a positive-percent row must be complete. Composition basis is mole percent or mass percent, and all eight percentages must total 100.
Fuel mass is displayed in kg or lb. Combustion-air O2 and the specified or measured dry O2 are percentages. Air molecular weight is kg/kmol in SI or the numerically corresponding lb/lbmol convention in U.S. customary units. Amount outputs are kmol in SI and lbmol in U.S. customary display. The workbook uses 1 lb = 0.45359237 kg for physical parity.
Governing relationships
Let p_i be component percent, M_i its molecular weight, and c_i, h_i, o_i, n_i, and s_i its atom coefficients. For mole-percent input:
M_fuel = sum((p_i / 100) × M_i)
N_i = (m_fuel / M_fuel) × (p_i / 100)
For mass-percent input:
M_fuel = 1 / sum((p_i / 100) / M_i)
N_i = m_fuel × (p_i / 100) / M_i
The elemental atom amounts are C = sum(N_i c_i), H = sum(N_i h_i), O = sum(N_i o_i), N = sum(N_i n_i), and S = sum(N_i s_i). Stoichiometric oxygen and air are:
O2_st = C + H/4 + S - O/2
Air_st = O2_st / x_O2,air
where x_O2,air is entered air O2 divided by 100. In specified-excess-air mode, lambda = 1 + EA/100. In dry-O2 inference mode, with measured dry fraction y_O2:
lambda = [O2_st + y_O2 × (C + S + N/2 - O2_st)] / [O2_st × (1 - y_O2/x_O2,air)]
Actual air is lambda × Air_st; actual air mass is actual air amount times entered air molecular weight. Ideal products are:
CO2 = C
H2O = H/2
SO2 = S
Residual O2 = (lambda - 1) × O2_st
N2 equivalent = N/2 + lambda × O2_st × (1 - x_O2,air) / x_O2,air
Dry product is the sum of CO2, SO2, residual O2, and N2-equivalent. Wet product adds H2O. Dry O2 and CO2 percentages divide the corresponding product by dry-product total and multiply by 100.
Calculation sequence
- Validate the selectors, visible scalar inputs, all eight grid rows, the 100-percent composition sum, and positive stoichiometric demand.
- Convert the entered fuel mass to kilograms internally and convert each active row to component amount according to the selected composition basis.
- Sum the five elemental atom amounts and calculate stoichiometric oxygen and air.
- Determine
lambdafrom specified excess air or the explicit dry-O2 relationship. - Calculate actual air, air mass, air-to-fuel ratio, ideal products, dry/wet totals, and dry concentrations.
- Calculate the greatest absolute C/H/O/N/S closure residual and apply the derived numeric gate.
- Convert public results to the selected display units and evaluate status in the order below.
Outputs and interpretation
Primary results report stoichiometric oxygen and air, actual air amount and mass, air-to-fuel mass ratio, excess-air ratio and percent, and dry O2. Supporting results show composition total, calculated fuel-mixture molecular weight, each ideal product, dry and wet totals, dry CO2, and the maximum element residual. The bar chart compares the workbook-calculated ideal product amounts; it is not a measured flue-gas analysis.
CB_Element_Balance_Max_Residual is a numerical closure diagnostic. A small residual confirms the implemented ideal atom assignment, not the validity of the user's chemical identities or operating assumptions.
Validation and status logic
The workbook evaluates status in this order:
| Condition | Returned status |
|---|---|
| Any input-domain rule fails | NOT VALID: choose listed modes; enter positive fuel and air data; complete active composition rows totaling 100 percent; measured dry O2 must remain below combustion-air O2 |
| The derived products, ratios, unit conversions, chart values, or element-closure checks are not finite and within the workbook's supported range | NOT VALID: derived combustion balance exceeds Excel supported numeric range |
| Neither condition applies | OK |
The input gate requires listed modes; fuel mass greater than zero; air O2 greater than zero and below 100%; positive air molecular weight; nonnegative visible specified excess air; and visible measured dry O2 at least zero but below combustion-air O2. Exactly eight numeric percentage cells are required, at least one must be positive, and their sum must be within 0.0000001 of 100. Each positive row requires a trimmed label from 1 through 80 characters, positive molecular weight, and nonnegative atom coefficients. O2_st must be positive.
The derived gate requires lambda >= 1, positive air and dry/wet product totals, nonnegative products, dry O2 below entered air O2, dry CO2 from 0 through 100%, and element residual no greater than 1e-9 × max(1, wet product).
Assumptions and limitations
- Combustion is ideal and complete: carbon becomes CO2, hydrogen H2O, sulfur SO2, and fuel nitrogen N2-equivalent.
- The non-O2 balance of combustion air is represented as N2-equivalent inert. Air molecular weight and O2 content are user inputs.
- Labels, molecular weights, and atom coefficients are independent user data; the workbook does not identify or validate a chemical species.
- Dry-O2 inference assumes the same ideal product set, no air leakage, and a dry analyzer basis.
- All shipped values are synthetic examples. No fuel-property, atomic-weight, air-composition, emissions-factor, or regulatory table is embedded.
- Air leakage, wet measurements, analyzer bias, incomplete combustion, pollutant formation, equilibrium, phase change, and heat release require other models.
Restrictions and non-computing states
This calculator permits only the declared unit, composition, and excess-air modes and validates scalar/grid minima. The workbook supplies the stricter relational rules: a 100-percent composition, at least one active row, positive net stoichiometric oxygen, and measured dry O2 below entered air O2. Values hidden by the selected excess-air mode are inert.
Invalid inputs suppress public numeric results. There is no CHECK state: a valid finite ideal balance returns OK, while any input or derived-domain failure returns NOT VALID.
Errors and warnings
A rejected entry means the submitted values did not match the published input rules and no workbook conclusion was produced. Workbook NOT VALID identifies either an input-domain failure or a derived numeric/closure failure using the exact messages above. A connection or calculation-service failure is a service error, not a combustion result. OK does not certify safe combustion, equipment suitability, emissions, or regulatory compliance.
References
No fuel property table, ambient-air composition, emission factor or regulatory limit is embedded here. Every molecular weight, atom count and air property in the balance is one you enter, and the shipped defaults are synthetic values matching no real fuel or air. The workbook implements ordinary textbook stoichiometry of complete combustion. The sources below are cited for the relations and terminology; no prose, table, figure or dataset is reproduced.
- NIST, Users Guide to POST Plant Operations Simulation Template, NBSIR 88-3740, for the C/H/O/N/S atomic-ratio basis and the stoichiometric oxygen coefficient this workbook generalises as carbon plus hydrogen/4 plus sulfur minus oxygen/2. https://nvlpubs.nist.gov/nistpubs/Legacy/IR/nbsir88-3740.pdf
- US Department of Energy, Operations and Maintenance Best Practices Guide, Release 3.0, for the general definition of excess air and the caution that a theoretical balance is not a real-combustion model. https://www.energy.gov/sites/default/files/2020/04/f74/omguide_complete_w-eo-disclaimer.pdf
- US EPA, Method 19, for dry-versus-wet product and dry-oxygen terminology only. None of that method's F factors, tables or criteria are implemented. https://www.epa.gov/sites/production/files/2017-08/documents/method_19.pdf
- NIST Handbook 133, Appendix E, for the exact identity 1 avoirdupois pound = 0.45359237 kilogram. https://www.nist.gov/document/14-app-e-14-hb133-finalpdf
Carbon monoxide and unburned species come from measurement; fuel analyses come from a laboratory. Where a result feeds a permit, an inventory or a compliance report, the air quality regulations and reference test methods that apply to your source and jurisdiction govern, and nothing on this page states what any of them require.
Frequently asked questions
Will this tell me how much carbon monoxide my burner makes?
How do I tell it what the excess air is?
Why did every output come back as zero?
What happens if my composition does not add up to 100?
Does it check that my molecular weight matches the component name?
Why is the dry O2 it reports different from the one I measured?
Does switching between mole percent and mass percent change the answer?
Can I use this for combustion efficiency or flame temperature?
Found a problem, or have an idea?
Tell us if a result looks wrong, a label is unclear, or something is missing. We read every message.
LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.