Adiabatic Flame Temperature and Composition of the Combustion Products of Hydrogen and Oxygen
Introduction
Consider the combustion of hydrogen and oxygen.
H2 (g) + 0.5 O2 (g) ! H2O (g)
The application calculates the adiabatic flame temperature and equilibrium composition of the combustion products.
The equilibrium composition is calculated by minimizing the Gibbs Free Energy of the system
The flame temperature is found by equating the enthalpy of the feed and combustion products.
Both relationships are solved simultaneously using fsolve.
Temperature-dependent thermodynamic data are calculated with the ThermophysicalData:-Chemicals package.
Physical Properties
restart:
with(ThermophysicalData:-Chemicals):
Enthalpies
h_H2O := Property("Hmolar", "H2O(g)", "temperature" = T): h_O2 := Property("Hmolar", "O2(g)", "temperature" = T): h_H2 := Property("Hmolar", "H2(g)", "temperature" = T):
Entropies
s_H2O := Property("Smolar", "H2O(g)", "temperature" = T): s_O2 := Property("Smolar", "O2(g)", "temperature" = T): s_H2 := Property("Smolar", "H2(g)", "temperature" = T):
Heat of formation
h_f_O2 := Property("HeatOfFormation", "O2(g)", useunits): h_f_H2 := Property("HeatOfFormation", "H2(g)", useunits): h_f_H2O := Property("HeatOfFormation", "H2O(g)", useunits):
Reference enthalpies
h_r_O2 := eval(h_O2, T = 298.15 * Unit(K)): h_r_H2 := eval(h_H2, T = 298.15 * Unit(K)): h_r_H2O:= eval(h_H2O, T = 298.15 * Unit(K)):
Equilibrium Composition as a Function of Temperature
Gibbs free energy of H2O, O2 and H2
G_H2O := proc(temp) local DeltaH, DeltaS, DeltaG_H2O: DeltaH := eval(h_H2O - (h_H2 + 0.5 * h_O2), T = temp): DeltaS := eval(s_H2O - (s_H2 + 0.5 * s_O2), T = temp); DeltaG_H2O := DeltaH - DeltaS * temp: return DeltaG_H2O: end proc: G_O2:= proc(temp) return 0 end proc: G_H2:= proc(temp) return 0 end proc:
Constraints
With 1 mole of H2 and 0.5 mole of O2 in the initial mixture, balancing the amount of H2, O2 and H2O before and after combustion gives
H2 + 0.5 O2 = n1 H2O + n2 H2 + n3 O2
Balancing the H atoms gives
2 = 2 n1 + 2 n2
Balancing the O atoms gives
0.5 x 2 = n1+ 2 n3
con1 := n1 + n2 = 1 * Unit(mol): con2 := n1 + 2*n3 = 1 * Unit(mol):
Total number of moles in products
nt := n1 + n2 + n3:
Equilibrium Composition
Gibbs energy of the combustion product
gibbs := n1 * (G_H2O(T) + 8.3144 * Unit(J/mol/K) * T * ln(n1/nt)) + n2 * (G_H2(T) + 8.3144 * Unit(J/mol/K) * T * ln(n2/nt)) + n3 * (G_O2(T) + 8.3144 * Unit(J/mol/K) * T * ln(n3/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):
Adiabatic Flame Temperature as a Function of Composition
This function gives the adiabatic flame temperature as a function of the moles of H2O in the product, n1
H_reactants := 0: H_products := n1*(h_f_H2O + (h_H2O - h_r_H2O)) + n2*(h_f_H2 + (h_H2 - h_r_H2)) + n3*(h_f_O2 + (h_O2 - h_r_O2)):
flameTemp := H_reactants = H_products:
Adiabatic Flame Temperature and Composition of Combustion Products
res := fsolve({eqComposition, flameTemp, con1, con2}, {L1 = -30000 * Unit(J/mol), L2 = -30000 * Unit(J/mol), T = 3500 * Unit(K), n1 = 0.1 * Unit(mol), n2 = 0.1 * Unit(mol), n3 = 0.1 * Unit(mol)})
The products consist of
0.663 H2O + 0.337 H2 + 0.168 O2
with a flame temperature of
eval(T, res)
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.