Adiabatic Flame Temperature and Equilibrium Composition of the Combustion of Carbon Monoxide
Introduction
One mole of carbon monoxide and 0.5 moles of oxygen are ignited at 298.15 K and 1 atm. The reaction is
CO + 0.5 O2 → CO2
The combustion products undergo dissociation and contain CO2, CO, O and O2.
The equilibrium composition is found by minimizing the Gibbs Energy of the combustion products (formulated as a series of equations constructed via the method of Lagrange multipliers)
The adiabatic flame temperature is found by balancing the enthalpy of the reactants against the enthalpy of the products
The resulting equations are solved numerically to give the adiabatic flame temperature and equilibrium composition of the mixture.
Physical Properties
restart: with(ThermophysicalData:-Chemicals):
Enthalpies of formation
h_f_CO := Property("HeatOfFormation", "CO"); h_f_C := Property("HeatOfFormation", "C(gr)"); h_f_O2 := Property("HeatOfFormation", "O2"); h_f_CO2 := Property("HeatOfFormation", "CO2"); h_f_O := Property("HeatOfFormation", "O");
Enthalpies as a function of temperature
h_CO := Property("Hmolar", "CO", "temperature" = T): h_C := Property("Hmolar", "C(gr)", "temperature" = T): h_O2 := Property("Hmolar", "O2", "temperature" = T): h_O := Property("Hmolar", "O", "temperature" = T): h_CO2 := Property("Hmolar", "CO2", "temperature" = T):
Reference enthalpies
h_r_CO2 := eval(h_CO2, T = 298.15); h_r_CO := eval(h_CO, T = 298.15); h_r_O2 := eval(h_O2, T = 298.15); h_r_O := eval(h_O, T = 298.15); h_r_C := eval(h_C, T = 298.15)
Entropy as a function of temperature
s_CO := Property("Smolar", "CO", "temperature" = T): s_C := Property("Smolar", "C(gr)", "temperature" = T): s_O2 := Property("Smolar", "O2", "temperature" = T): s_O := Property("Smolar", "O", "temperature" = T): s_CO2 := Property("Smolar", "CO2", "temperature" = T):
Gibbs Energy
CO
C (gr) + 0.5 O2 (g) → CO (g)
G_CO := proc(temp) local DeltaH, DeltaS, DeltaG_CO: DeltaH := eval(h_CO - (h_C + 0.5 * h_O2), T = temp): DeltaS := eval(s_CO - (s_C + 0.5 * s_O2), T = temp); DeltaG_CO := DeltaH - DeltaS * temp end proc:
CO2
C (gr) + 1 O2 (g) → CO2 (g)
G_CO2 := proc(temp) local DeltaH, DeltaS, DeltaG_CO: DeltaH := eval(h_CO2 - (h_C + h_O2), T = temp): DeltaS := eval(s_CO2 - (s_C + s_O2), T = temp); DeltaG_CO := DeltaH - DeltaS * temp end proc:
O2
O (g)+ O (g) → O2 (g)
G_O2 := proc(temp) return 0: end proc:
O
0.5 O2 (g) →O (g)
G_O := proc(temp) local DeltaH, DeltaS, DeltaG_O: DeltaH := eval(h_O - 0.5 * h_O2, T = temp): DeltaS := eval(s_O - 0.5 * s_O2, T = temp); DeltaG_O := DeltaH - DeltaS * temp: end proc:
Constraints
Balancing the reactants and products gives
CO + 0.5 O2 = n1 CO2 + n2 CO + n3 O + n4 O2
This results in the following constraint on the carbon atoms...
n1 + n2 = 1
...and this constraint on the oxygen atoms
2 n1 + n2 + n3 + 2 n4 = 2
con1 := 2 * n1 + n2 + n3 + 2 * n4 = 2: con2 := n1 + n2 = 1:
Equilibrium Composition
Total number of moles in products
nt := n1 + n2 + n3 + n4:
Gibbs Energy of the combustion product
gibbs := n1 * (G_CO2(T) + 8.3144 * T * ln(n1/nt)) + n2 * (G_CO(T) + 8.3144 * T * ln(n2/nt)) + n3 * (G_O(T) + 8.3144 * T * ln(n3/nt)) + n4 * (G_O2(T) + 8.3144 * T * ln(n4/nt)):
For a given temperature, minimizing the Gibbs Energy of the combustion products will give the equilibrium composition. Hence the values of n1, n2, n3, and n4 are given by the numeric solution of these equations, where L1 and L2 are the Lagrange multipliers.
eqComposition := L1 * diff(lhs(con1), n1) + L2 * diff(lhs(con2), n1) = diff(gibbs, n1), L1 * diff(lhs(con1), n2) + L2 * diff(lhs(con2), n2) = diff(gibbs, n2), L1 * diff(lhs(con1), n3) + L2 * diff(lhs(con2), n3) = diff(gibbs, n3), L1 * diff(lhs(con1), n4) + L2 * diff(lhs(con2), n4) = diff(gibbs, n4):
Adiabatic Flame Temperature
Equating the enthalpy of the reactants and products gives
H_reactants := h_f_CO + 0.5 * h_f_O2: H_products := n1 * (h_f_CO2 + h_CO2 - h_r_CO2) + n2 * (h_f_CO + h_CO - h_r_CO) + n3 * (h_f_O + h_O - h_r_O) + n4 * (h_f_O2 + h_O2 - h_r_O2):
flameTemp := H_reactants = H_products:
Numerical solution
Hence the adiabatic flame temperature and equilibrium composition of the products are
fsolve({eqComposition, flameTemp, con1, con2}, {L1 = -1000, L2 = -1000, T = 4000, n1 = 0.1, n2 = 0.1, n3 = 0.1, n4 = 0.1})
Legal Notice: © Maplesoft, a division of Waterloo Maple Inc. 2018. Maplesoft and Maple are trademarks of Waterloo Maple Inc. This application may contain errors and Maplesoft is not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact Maplesoft for permission if you wish to use this application in for-profit activities.