Week 4.2 - Combustion Efficiency Calculation after Preheating
Aim: To calculate the AFT and the combustion gains for the combustion of methane fuel in a furnace.
Objective:
1. Calculate the variation in AFT for different pre-heating temperatures.
2. Calculate the combustion gains and fuel saving due to pre-heating the fresh air. Assume the exit furnace temperature is 1700K.
- Theory: Recuperators
Recuperator is a type of Heat exchanger that is used to recover heat from the waste stream like exhaust and transfer ti to freash air stream. It is used to reduce energy consumption and improve efficiency. In order to recover the waste heat it is positioned within the supply or exhaust air streams.
They are used to extract heat from the waste air and use it to preheat the fresh cold incoming air that is consumed with fuel for combustion,and thereby improving energy efficiency as whole of the furnce/system. Recuperators are used in alot of HVAC systems, furnaces, Gas turbine, Power Plants and more.
Quantity Class Cantera: To deal set and get the values of the mixtures separately Cantera provide a Class called Quantity. With aid of this class we can create mixtures, specify the values of species in it via mole or mass fraction, Temperature as well as Pressure values. Also addition of two separate mixture is also a feature of this class. The Quantity class come handy in this challenge as the mixtures of reactants and products has to be set with different temperature values.
- Code and Results for Part 1:
"""
Studying the effect of Pre-heating the air on the AFT.
The air is pre-heated with the aid of Recuperator
In question reaction:
CH4 + 2(O2+ 3.75N2)
Solution is obtained using Cantera only.
"""
import cantera as ct
import matplotlib.pyplot as plt
import numpy as np
gas = ct.Solution('gri30.yaml')
#creating the pre-heating temperature array range
pre_t = np.linspace(298.15,600.00,60)
#creating Fuel mixture
fuel = ct.Quantity(gas)
#fuel.TPX = 298.15, ct.one_atm, 'CH4: 1.0'
#fuel.moles = 1.0
#creating the air mixture object
a = ct.Quantity(gas)
#creating empty arrays for AFT and pre_t values
T_pre = []
AFT = []
#starting calculation
for T in pre_t:
a.TPX = T, ct.one_atm, 'O2: 0.21, N2: 0.79'
a.moles = 9.56
T_pre.append(T)
fuel.TPX = 298.15, ct.one_atm, 'CH4: 1.0'
fuel.moles = 1.0
M = fuel + a
M.equilibrate('HP', 'auto')
AFT.append(M.T)
if T == 298.15:
print('AFT value for 298.15 pre-heating temperature:',AFT[0])
elif T == 600:
print('AFT value for 600 pre-heating temperature',AFT[-1])
#plotting the graph
plt.plot(T_pre, AFT, 'r')
plt.xlabel('Pre-heating Temperature [K]')
plt.ylabel('Adiabatic Flame Temperature')
plt.title('Variation in AFT from Pre-heating')
plt.grid('both')
plt.show()
1. The fuel and air mixture are specified using the Quantity class of Cantera. The value of the species specified are in mole fraction.
2. The moles() method is important as that will maintain the Equivalence ratio of the mixture.
3. The range of preheating temperature is created using the linspace command of the numpy library.
4. The AFT is than calculated for each value of pre-heating temperature and is appended in the AFT list.
5.The graph is than plotted for pre-heating temperature v/s AFT, is shown below.


- Code and Reaults for part 2:
To calculate the combustion gains 'η' we have to solve for the heat load Q
`dot Q = m_f*h_f + m_a*h_a - (m_f+m_a)*h_p`
m_f and h_f is mass and enthalpy of fuel
m_a and h_a is the mass and enthalpy of air
and (m_f + m_a) is the mass of products and h_p is the enthlapy of products.
then Combustion gains is calculated : η = `(m_f*h_f + m_a*h_a - (m_f+m_a)*h_p)/(m_f*LHV)`
where LHV is Lower Heating Value, where Methane LHV is given as 50 mJ/kg
Fuel Saving is calculated as : fuel saving = 1 - `eta_0/(eta_1)`
`eta_0` is combustion gains without pre-heating
`eta_1` is combustion gains with pre-heating
"""
Computing Combustion Gains and Fuel Saving due to variation in Pre-Heating Temperature
Chemical Reaction: CH4 + 2(O2 + 3.56N2) -> CO + 2H2O + 7.56N2
The mole fraction of prodcuts is calculated:
CO = 0.094
H2O = 0.189
N2 = 0.715
totla mole of product = 10.56
"""
import cantera as ct
import numpy as np
import matplotlib.pyplot as plt
gas = ct.Solution('gri30.yaml')
#Fuel mixture setting value and calculating mass and enthalpy
fuel = ct.Quantity(gas)
fuel.TPX = 298.15, ct.one_atm, 'CH4: 1'
fuel.moles = 1
m_f = fuel.mass #mass of CH4
h_f = fuel.enthalpy_mass #enthalpy of fuel
print('Mass of CH4:',m_f)
print('Enthalpy of CH4:', h_f)
LHV = 50e6 #mJ/kg
etas = []
Q_load = []
fs = []
T_pre = []
pre_t = np.linspace(298.15, 600.00, 60)
#calculating the value of useful heat Q
for T in pre_t:
air = ct.Quantity(gas)
air.TPX = T, ct.one_atm, 'O2:0.21, N2:0.79'
air.moles = 9.56
m_a = air.mass
h_a = air.enthalpy_mass
T_pre.append(T)
product = ct.Quantity(gas)
product.TPX = 1700, ct.one_atm, {'CO':0.094, 'H2O':0.189, 'N2':0.715}
product.moles = 10.56
h_p = product.enthalpy_mass
m_p = m_a + m_f
Q = m_f*h_f + m_a*h_a - m_p*h_p
Q_load.append(Q)
#calculation of fuel saving
for i in range(len(pre_t)):
e = Q_load[i]/m_f*LHV
etas.append(e)
fuel_savings = 1 - etas[0]/etas[i -1]
fs.append(fuel_savings)
plt.plot(T_pre, etas, 'r*')
plt.xlabel('pre-heating temperature')
plt.ylabel('Combustion Gains')
plt.title('Combustion Gains due to preheating')
plt.grid('major')
print('Mass of Air:',m_a)
print('Enthalpy of Air:', h_a)
print('Mass of Products:',m_p)
print('Enthalpy of Products:', h_p)
print('Combustion Gains at 298K:',etas[0])
print('Fuel Savings at 298K:',fs[0])
print('Combustion Gains at 600K:',etas[-1])
print('Fuel Savings at 600K:',fs[-1])
plt.show()
1. In this code the products mixture is also added, for less complication only CO, H2O and N2 are considered as byproducts. The products mixtures are set and get.
2. The masses and the enthalpy of the fuel, air and products are calculated using the Cantera methods.
3. In 'for T in pre_t' loop the air mixture is calculated with varied preheating Temperature as well as the products mixture are calculated because the mass of products is mass of air+mass of fuel. The useful heat Q is then calculated and the values are appended in the Q_load list.
4. Then in the second for loop, looped through the length of the pre_t array, we calculate the combustion gains 'η' and the fuel savings value for each pre_t and a graph is plot for pre_t vs etas.


The exhaust temperature should be maintained at a safe temperature to avoid accidents or malfunctions, as exhaust temperature is dependant on the combustion. By maintaining the exhaust temperature we can find the optimal functioning of the combustor. So keeping the exhaust temperature constant is right.
Conclustion:
1. The Adiabatic Flame Temperature of the furnace increases as we increase the temprature of the incoming fresh air due to pre-heating. At 600K of preheating the AFT value is 2344.95 K
2. The combustion gains/efficiency of the furnace is also seemed to increase linearly with high pre-heating temperatures.
3. The fuel saving due pre heating is also seemed very good as the air is pre-heated, with proper and less amount of fuel combustion takes place which save the fuel per combustion.