Combustion stoichiometry¶
- Combustion occurs between Fuel and Air (or oxidizer)
- Need to get the mixing ratio / stoichiometry right.
Air properties¶
- Use $x$ for mole fraction, and $y$ for mass fraction.
species | x | y |
---|---|---|
N$_2$ | 0.7809 | 0.75532 |
O$_2$ | 0.2095 | 0.23144 |
Ar | 0.0096 | 0.01324 |
- Lump Ar with N$_2$:
species | x | y |
---|---|---|
N$_2$ | 0.79 | 0.77 |
O$_2$ | 0.21 | 0.23 |
- n$_{N2}$/n$_{O2}$ = 3.76
- n$_{air}$/n$_{O2}$ = 4.76
Mean molecular weight¶
- M = 28.96 kg/kmol
- M = 29 kg/kmol
$$ (M) = \sum_k x_k (M_k),$$ $$ \left(\frac{1}{M}\right) = \sum_ky_k\left(\frac{1}{M_k}\right).$$ $$ \phantom{xxxxxx}\rightarrow M = \frac{1}{\sum_k \frac{y_k}{M_k}}.$$
- Intuitively, for $M$ in terms of $x_k$
- $(M)$ has units of kg/kmol.
- For a basis of 1 total kmol, the $x_k$ are the kmol of each species.
- Then $x_kM_k$ is the kg of each species.
- Sum these up and we have the total kg, with 1 kmol assumed, so the sum is M.
- Similarly, for $M$ in terms of $y_k$
- Work with (1/M) with units of kmol/kg
- For a basis of 1 total kg, the $y_k$ are the kg of each species.
- Then $y_k(1/M_k)$ is the kmol of each species.
- Sum these up and we have the total kmol, with 1 kg assumed, so the sum is (1/M).
Convert $x_k$ to $y_k$¶
$$ x_kM_k = y_kM.$$
To remember this, we have a form that looks like $xM=yM$. $x$ comes before $y$ in the alphabet. Then group the $k$ subscripts together on the first three terms.
Solve for $x_k$ and $y_k$ as needed: $$ y_k = \frac{x_kM_k}{M},$$ $$ x_k = \frac{y_kM}{M_k}.$$
If you want to derive the equation. Start with $y_k$, say, and get $x_k$:
- $y_k$ is $m_k/m_t$, ($t$ for total).
- Then convert this to $x_k$, which is $n_k/n_t$.
- Change the $m_k$ to $n_k$ by dividing by $M_k=m_k/n_k$:
- $y_k/M_k = \frac{m_k}{m_t}\frac{n_k}{m_k} = \frac{n_k}{m_t}$
- Similarly, change the $m_t$ to $n_t$ by multiplying by $M=m_t/n_t$.
- The result is $x_k = y_k\frac{M}{M_k}$.
- Then can solve for $y_k$ to get $y_k = x_k\frac{M_k}{M}$.
Stoichiometry¶
- Rich (too much fuel)
- Lean (too much air)
- Stoichiometric (just right)
Air-to-fuel ratio¶
$$ \frac{A}{F} = \frac{m_{air}}{m_{fuel}}.$$
- Mass Basis
- $0 \le A/F \le \infty$
Equivalence ratio¶
$$\Phi = \frac{F/A}{(F/A)_{stoic}}$$
- Mass or mole basis (same).
- $0 \le \Phi \le \infty$
- $\Phi=0$ is lean, $\Phi>1$ is rich.
- $\Phi$ is common in practical applications.
Mixture fraction¶
$$\xi = \frac{m_f}{m_f + m_a}$$
- Notation, $\xi$, or $f$, or $Z$ is common.
- $0\le \xi\le 1$
- $\xi=0$ is pure air, $\xi=1$ is pure fuel.
- $\xi$ is common in modeling.
- $\xi$ can be defined in terms of any two distinct streams, not just fuel and air.
Ideal gas law¶
- $PV = nRT$
- Solve for $n$ and divide by $V$, with $n/V = c$, that is molar concentration:
- $c = P/RT$
- Multiply through by $M$, with $\rho=cM$, that is, mass density:
- $\rho = MP/RT$
- Here, $R$ is the gas constant, $R=8314.46$ J/kmol$\cdot$K.
Balanced reactions¶
Methane combustion¶
- Normally write 1 mole of fuel for convenience.
- 1 mole O$_2$ gives 4.75 moles Air = O$_2$ + 3.76 N$_2$.
- Mole basis
- Products
- Carbon $\rightarrow$ CO$_2$
- Hydrogen $\rightarrow$ H$_2$O
$$(CH_4) + \alpha (air) \rightarrow b(products)$$ $$CH_4 + \alpha O_2 + 3.76\alpha N_2 \rightarrow \beta CO_2 + \gamma H_2O + 3.76\alpha N_2$$
- Solve for $\alpha$, $\beta$, $\gamma$, using elemental balnces on $C$, $H$, and $O$.
- C $\rightarrow$ $1 = \beta$ $\rightarrow$ $\beta = 1$
- H $\rightarrow$ $4 = 2\gamma$ $\rightarrow$ $\gamma = 2$
- O $\rightarrow$ $2\alpha = 2\beta + \gamma$ $\rightarrow$ $\alpha = 2$.
$$CH_4 + 2O_2 + 7.52N_2 \rightarrow CO_2 + 2H_2O + 7.52N_2$$
- Note, no change in moles for methane combustion.
- Note the high $m_f/m_a = M_{CH4}/(9.52M_{air}) = 16/(9.52*29) = 0.058$
- Note: A/F = 17.2.
Generalize the fuel¶
$$C_xH_y + \alpha O_2 + 3.76\alpha N_2 \rightarrow \beta CO_2 + \gamma H_2O + 3.76\alpha N_2$$
- (x and y are number of carbons and hydrogens here, not mole and mass fractions).
- C, H balances $\rightarrow$ $\beta = x$, $\gamma = y/2$.
- O balance $\rightarrow$ $2\alpha = 2\beta + \gamma$ $\rightarrow$ $\alpha = x + y/4$
$$C_xH_y + \left(x+\frac{y}{4}\right)O_2 + 3.76\left(x+\frac{y}{4}\right)N_2 \rightarrow xCO_2 + \frac{y}{2}H_2O + 3.76\left(x+\frac{y}{4}\right)N_2$$
When is there no change in moles?
- Reactants: $1 + \alpha + 3.76\alpha$
- Products: $x + y/2 + 3.76\alpha$.
- $\rightarrow$ (1+x + y/4 = x + y/2).
- $\rightarrow$ $y=4$
- No change in moles for species with 4 hydrogens: methane, ethylene, etc.
Ethylene is special
- $y=$ so no change in moles.
- $M_{C2H4} = 28\approx M_{air}$, so $\rho_{air}\approx\rho_{fuel}$
- $\rho = MP/RT$
Lean combustion¶
Too much air (the usual case).
Assume a fixed quantity of fuel, $F$.
Fraction excess air, use subscript $s$ for stoichiometric: $$E = \frac{A - A_s}{A_s},$$
Divide the top and bottom by $F$: $$E = \frac{A/F - A_s/F}{A_s/F} = \frac{A/F}{A_s/F} - 1.$$
At stoichiometric conditions, $A_s$ is stoichiomtric amount of air for the given amount of fuel, and we have $A_s/F = (A/F)_s$
$$E = \frac{A/F}{(A/F)_s} - 1 = \frac{1}{\Phi} - 1.$$
Write the balanced reaction with excess air:
$$C_xH_y + (1+E)\left(x+\frac{y}{4}\right)(O_2 + 3.76 N_2) \rightarrow xCO_2 + \frac{y}{2}H_2O + E\left(x+\frac{y}{4}\right)O_2 + (1+E)3.76\left(x+\frac{y}{4}\right)N_2$$
Rich combustion¶
- Too much fuel.
- This case is easy.
- If the stoichiometric air is taken as an air basis, then $\Phi=F/F_s$.
- Or, $F = \Phi F_s = \Phi$ when we use $F_s=1$ as in our generic balance equation for $C_xH_y$. $$\Phi C_xH_y + \left(x+\frac{y}{4}\right)O_2 + 3.76\left(x+\frac{y}{4}\right)N_2 \rightarrow xCO_2 + \frac{y}{2}H_2O + 3.76\left(x+\frac{y}{4}\right)N_2 + (\Phi-1)C_xH_y$$
Example¶
- Natural gas boiler fired with 20% excess air.
$$CH_4 + (1.2)\cdot(2 O_2 + 7.52 N_2) \rightarrow CO_2 + 2H_2O + (1.2)\cdot 7.52 N_2 + (0.2)\cdot 2 O_2$$
- Typical boilers run with excess air to compensate for imperfect mixing of fuel and air to prevent emissions of fuel or partially burnt species, such as CO.
import numpy as np
import cantera as ct
gas = ct.Solution("gri30.yaml")
gas.X = "CO2:1, H2O:2, N2:9.024, O2:0.4"
sp = ["CO2", "H2O", "O2", "N2"]
iSp = [gas.species_index(k) for k in sp]
X = gas.X[iSp]
Y = gas.Y[iSp]
print(f"{'species':8} {'X':^6} {'Y':^6}")
print(f"{'-'*22:22}")
for i in range(len(sp)):
print(f'{sp[i]:8s} {X[i]:6.4f} {Y[i]:6.4f}')
species X Y ---------------------- CO2 0.0805 0.1273 H2O 0.1610 0.1042 O2 0.0322 0.0370 N2 0.7263 0.7314
- With 20% excess air, we get 3% O$_2$ (by mole) in the flue gas.
Typical systems
Natural Gas: 10-20% Excess air
Oil: 10-20
Coal: 20-25
Stoker: 35-40
Often, the O$_2$ in the flue gas is given on a dry basis. See Turns Chapter 15.