engineering · air-emissions-gas · combustion-stoichiometry

Fuel Composition Combustion Excess Air Balance Calculator

Balances complete combustion for a user-entered fuel composition: element totals, stoichiometric oxygen as C + H/4 + S - O/2, and the CO2, H2O, SO2, residual O2 and inert products at either a specified excess air or an excess air inferred from a measured dry O2. It is a stoichiometric screen, not a combustion or emissions determination.

Last updated
Repeating-Item Builder

Calculator overview

Inputs and outputs

This summary comes from the calculator's published input and output contract.

Inputs

CB Measured Dry O2 Percent Conditional
About this input

Nonnegative dry-basis product O2 used only for inference; it must be strictly below the entered combustion-air O2.

Unit dry mole % Default 3.7 Range 0 to 100
CB Fuel Mass
About this input

Positive mass of the entered fuel mixture; kg in SI or lb in US customary display.

Unit kg Default 137 Range At least 0
CB Unit System
About this input

Selects kg/kmol outputs or their physically matched lb/lbmol display equivalents.

Default SI Allowed SI, US customary
CB Specified Excess Air Percent Conditional
About this input

Nonnegative air above the stoichiometric amount, used only in the specified-excess-air mode.

Unit % Default 17.5 Range At least 0
CB Fuel Composition Grid
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.

Default 8 rows
ColumnRange 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
About this input

User-entered oxygen mole percent of combustion air; the model requires a value strictly above 0 and below 100.

Unit mole % Default 21.13 Range 0 to 100
CB Combustion Air Molecular Weight
About this input

Positive user-entered average molecular weight of combustion air; no air-property lookup is supplied.

Unit kg/kmol Default 28.37 Range At least 0
CB Excess Air Mode
About this input

Uses a directly entered excess-air percentage or solves lambda from measured dry product-gas O2.

Default Specified excess air Allowed Specified excess air, Infer from measured dry O2
CB Composition Basis
About this input

Interprets the composition-percentage grid as mole percent or mass percent; active percentages must total 100.

Default Mass percent Allowed Mole percent, Mass percent

Outputs

CB N2 Equivalent Product Amount Conditional
About this output

Fuel nitrogen as N2 plus the non-O2 combustion-air balance treated as N2-equivalent inert.

Unit kmol
CB Residual O2 Amount Conditional
About this output

Oxygen supplied above the stoichiometric requirement under the complete-combustion assumption.

Unit kmol
CB H2O Product Amount Conditional
About this output

Ideal water-vapor amount from one half of the entered fuel hydrogen-atom amount.

Unit kmol
CB Excess Air Ratio Conditional
About this output

Actual combustion air divided by stoichiometric combustion air.

Unit ratio
CB Fuel Mixture Molecular Weight Conditional
About this output

Mole-weighted molecular weight or reciprocal mass-fraction molar sum, using only user-entered row values.

Unit kg/kmol
CB Wet Product Total Conditional
About this output

Dry ideal products plus ideal water vapor.

Unit kmol
Model Status
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.

No unit declared
CB Stoichiometric Oxygen Amount Conditional
About this output

Oxygen amount required for ideal complete combustion of the entered fuel mass.

Unit kmol
CB SO2 Product Amount Conditional
About this output

Ideal SO2 amount from the entered fuel sulfur coefficient; no sulfur-retention or control model is applied.

Unit kmol
CB Stoichiometric Air Amount Conditional
About this output

Stoichiometric oxygen divided by the user-entered combustion-air oxygen mole fraction.

Unit kmol
CB CO2 Product Amount Conditional
About this output

Ideal complete-combustion CO2 amount from the entered fuel carbon.

Unit kmol
CB Composition Sum Percent Conditional
About this output

Sum of all eight entered composition percentages; a valid active grid totals 100 percent.

Unit %
CB Air To Fuel Mass Ratio Conditional
About this output

Actual combustion-air mass divided by entered fuel mass on a common internal kilogram basis.

Unit mass/mass
CB Actual Air Amount Conditional
About this output

Stoichiometric air multiplied by the solved excess-air ratio lambda.

Unit kmol
CB Actual Air Mass Conditional
About this output

Actual combustion-air amount multiplied by the user-entered average air molecular weight.

Unit kg
CB Element Balance Max Residual Conditional
About this output

Largest absolute C/H/O/N/S atom-balance closure residual after the complete-combustion product assignment.

Unit kmol-atoms
CB Excess Air Percent Conditional
About this output

One hundred times lambda minus one.

Unit %
CB Dry Product Total Conditional
About this output

CO2 + SO2 + residual O2 + N2-equivalent, excluding water.

Unit kmol
CB Dry CO2 Percent Conditional
About this output

Ideal CO2 divided by total dry ideal products.

Unit dry mole %
CB Dry O2 Percent Conditional
About this output

Residual O2 divided by total dry ideal products.

Unit dry mole %

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

  1. Validate the selectors, visible scalar inputs, all eight grid rows, the 100-percent composition sum, and positive stoichiometric demand.
  2. Convert the entered fuel mass to kilograms internally and convert each active row to component amount according to the selected composition basis.
  3. Sum the five elemental atom amounts and calculate stoichiometric oxygen and air.
  4. Determine lambda from specified excess air or the explicit dry-O2 relationship.
  5. Calculate actual air, air mass, air-to-fuel ratio, ideal products, dry/wet totals, and dry concentrations.
  6. Calculate the greatest absolute C/H/O/N/S closure residual and apply the derived numeric gate.
  7. 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.

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?
No, and it cannot be persuaded to. The model assigns every fuel carbon atom to CO2, every hydrogen pair to water and every sulfur atom to SO2. Carbon monoxide, unburned hydrocarbons and soot are absent from the product list, so there is no path by which they could appear. Take the excess air to zero and it still reports complete combustion, with no residual oxygen and no CO. That is the arithmetic answer to a stoichiometric question, not a prediction that the fuel would burn out at that air setting. Incomplete combustion is measured, or modelled with kinetics, and neither happens here.
How do I tell it what the excess air is?
Two ways, and a mode switch chooses between them. In the specified mode you enter the excess air percentage and lambda is one plus that over one hundred. In the inference mode you enter a measured dry product-gas oxygen reading and the model solves its own dry-product balance for lambda, which is an exact inversion rather than a correlation. The unused field is hidden and inert, so a stale value in it does no harm until you switch modes. The inference presumes complete combustion, the air composition you typed, and no leakage into the duct.
Why did every output come back as zero?
Because the model refused the inputs and zeroed the whole block. Negatives, blanks and nulls are rejected before the model runs. Zero is accepted and then caught, so a zero fuel mass, a zero air molecular weight, or an air oxygen percentage of 0 or 100 all give NOT VALID with every numeric output at zero. The composition sum is zeroed along with the rest, which matters, because that is the one field you would want to read when your rows do not add up. A page of zeroes is a status, not a result.
What happens if my composition does not add up to 100?
It is refused. The active percentages must total 100 within 0.0000001, and nothing is renormalised on your behalf. A grid summing to 98 or 101 returns NOT VALID rather than being scaled, so if your analysis does not close, you have to decide yourself where the difference belongs before entering it. A row at zero percent is inert and needs no other values.
Does it check that my molecular weight matches the component name?
No. The label is text and takes no part in the calculation. There is no species database, no formula parser and no check between the name, the molecular weight and the atom counts. Type a familiar name with an inconsistent molecular weight and the calculator will use your numbers and report a confident answer. The same applies to the combustion air: the oxygen mole percent and the average molecular weight are independent fields, and nothing tests that they describe the same gas.
Why is the dry O2 it reports different from the one I measured?
Because in the specified mode the measurement is not an input to anything. The dry O2 output is computed from the lambda your excess-air percentage implies, so it matches a measurement only by coincidence. On the shipped defaults the two differ: the measured field holds 3.7 while the model reports 3.387 percent at lambda 1.175. If you want the measurement to drive the result, switch the basis to inference. If the two then disagree with what you expected, the gap is telling you something about leakage, completeness or the air composition you assumed.
Does switching between mole percent and mass percent change the answer?
It depends how many rows are active. With a single row at 100 percent the two bases give identical results, because the mixture molecular weight comes out as that row's molecular weight either way, which is why toggling the basis on the shipped default appears to do nothing. With several active rows they differ, sometimes substantially.
Can I use this for combustion efficiency or flame temperature?
No. There is no heating value, no enthalpy, no heat release and no temperature anywhere in the model, and no stack loss calculation. It is a material balance: atoms in, atoms out, and the air needed to close it. Efficiency, flame temperature, NOx formation and dew point all need a different model and data the workbook does not hold.
This page is provided by LogicCommons for informational purposes only. Results are analysis outputs computed from the inputs you supply and are not engineering advice, a design, or a substitute for review by a licensed professional under the codes adopted where the work is built. Verify all inputs and results independently.

LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.