Week 4.2 - Combustion Efficiency Calculation after Preheating
A furnace is used to burn Methane and Air Mixture. A recuperator is connected to this furnace to recover some energy.
- What is the effect of preheating on the adiabatic flame temperature?
- Change pre-heating from 298 to 600K
- Explain your results
A recuperator is a special-purpose counter-flow energy recovery heat exchanger that is installed in the supply and exhaust air streams of an air handling system or in the exhaust gases of an industrial process to recover waste heat. They are often utilised to collect heat from exhaust and use it to pre-heat air entering the combustion system.

The stoichiometric combustion of methane is analysed in this problem which is given by
CH4 + 2(O2 + 3.76N2) = CO2 + 2H2O + 7.52N2
- The inlet air is assumed to be preheated from temperatures 298k to 600k.
- We apply different temperature using quantity class to fuel and air and then mix them at last.
- This mixture is then combusted using a equilibrate method for constant enthalpy and pressure and the plots are obtained
The code written is as follows:
"""
This code is written by Mr. Noble Sahrma as a part of the TSE CFD training
Used to illustrate the effect of the exhaust gas on the pre heating of the air on the combustion
CH4 + 2(O2 + 3.76N2) = CO2 + 2H2O + 7.52N2
"""
import cantera as cnt
import matplotlib.pyplot as plt
import numpy as np
"""
The combustion equaiton is as follows:
CH4 + 2(O2 + 3.76N2) = CO2 + 2H2O + 7.52N2
"""
# declaring an object of class solution
gas=cnt.Solution('gri30.cti')
#creating the fuel propoerties
Fuel=cnt.Quantity(gas)
Fuel.TPX=298.15, cnt.one_atm, 'CH4:1'
# Declaring the things for the air
T_min_preheat=298
T_max_preheat=600
Air=cnt.Quantity(gas)
# writing for loop to store the ADF for each preheat temperature
AFD_preheat=[]
for Temp in range (T_min_preheat, T_max_preheat):
Air.TPX=Temp, cnt.one_atm, {'O2': 0.21, 'N2':0.79}
Air.moles=2*3.76
# combinign the mixture and calling the equilibrium solver with
#constant Enthalpy and pressure and the solver type is Auto
Mixture=Fuel+Air
Mixture.equilibrate('HP', solver='auto')
AFD_preheat.append(Mixture.T)
plt.figure(1)
plt.plot(range (T_min_preheat, T_max_preheat),AFD_preheat,'o-r')
plt.xlabel('Pre heat Temperature [K]')
plt.ylabel('Adiabatic flame Temperature [K]')
plt.grid ()
plt.title('variation of AFT with the pre heat Temperature')
plt.show()

From the plot as we can see that AFT increases linearly with preheating temperature of air entering the combustion chamber and hence the final temperature is higer
Question 02:
Does preheating help with fuel saving? If yes, how does combustion efficiency go up as a function of pre-heating temperature?
Assume that the furnace exit temperature is 1700K (For this case assume that the combustion products are CO2, H20, and N2).
- Write the formula for combustion efficiency
- Plot the effect of pre-heat temeprature on combustion efficiency
- Is it right or wrong to assume a fixed furnace exit temperature? Explain your answer.
the formulae used to calculate the efficiency and the fuel savings are shown below, these formulae are derived by applying energy balance across the recuperator:

Code:
- importing the libraries required
- creating an solution object of class cantera and naming it as gas
- callign the quantity class with the obj gas to evalaute the moles, and enthalpies
- declaring the products mixture, fuel and the air
- declaring the min and max pre mix temp
- Runnign a for loop over the range of premix temperature then evalaute the efficiency, fuel saving for all the temp
- making an plot for comparison
code is as follows:
"""
This code is written by Mr. Noble Sahrma as a part of the TSE CFD training
Used to illustrate the effect of the exhaust gas on the pre heating of the air on the combustion
CH4 + 2(O2 + 3.76N2) = CO2 + 2H2O + 7.52N2
"""
import cantera as cnt
import matplotlib.pyplot as plt
import numpy as np
"""
class stoi:
def __init__(self, b):
alakne=b
if(alakne=='CH4'):
self.no_moles_O2=2
self.no_moles_N2=2*3.76
self.no_moles_CH4=1
self.Total_Moles=self.no_moles_O2+self.no_moles_N2+self.no_moles_CH4
self.X_O2=self.no_moles_O2/self.Total_Moles
self.X_N2=self.no_moles_N2/self.Total_Moles
self.X_CH4=self.no_moles_CH4/self.Total_Moles
The combustion equaiton is as follows:
CH4 + 2(O2 + 3.76N2) = CO2 + 2H2O + 7.52N2
"""
# declaring an object of class solution
gas=cnt.Solution('gri30.cti')
#creating the fuel propoerties
Fuel=cnt.Quantity(gas)
Fuel.TPX=298.15, cnt.one_atm, 'CH4:1'
Fuel.moles=1
# Declaring the things for the air
products=cnt.Quantity(gas)
products.TPX=1700, cnt.one_atm,{'CO2':0.096, 'H2O':0.1901, 'N2':0.7148}
products.moles=10.52
T_min_preheat=298
T_max_preheat=600
LHV=50E06
Efficiency=[]
Fuel_saving=[]
Temp_Pre=[]
Air=cnt.Quantity(gas)
for Temp in range (T_min_preheat, T_max_preheat):
Air.TPX=Temp, cnt.one_atm, {'O2': 0.21, 'N2':0.79}
Air.moles=2*3.76+2
A_by_F=Air.mass/Fuel.mass
heat=(Fuel.enthalpy_mass)+(A_by_F*Air.enthalpy_mass)-((1+A_by_F)*products.enthalpy_mass)
Eff=(heat/LHV)*100
if(Temp==298):
Eff_0=Eff
fuel=abs((1-(Eff_0/Eff))*100)
Fuel_saving.append(fuel)
Efficiency.append(Eff)
Temp_Pre.append(Temp)
plt.figure(1)
plt.subplot(2,1,1)
plt.plot(Temp_Pre, Efficiency, '-r')
plt.xlabel('Pre heat temperature')
plt.ylabel('Efficiency')
plt.grid()
plt.subplot(2,1,2)
plt.plot(Temp_Pre, Fuel_saving, '-b')
plt.xlabel('Pre heat temperature')
plt.ylabel('Fuel_saving')
plt.grid()
plt.show()

From the plot it can be seen that :
- Efficiency of the combustion increases as the pre heat temp is increased.
- The fuel saving also increases as the pre heating temp increases
- The increase observed is linear and to find the optimal value of preheat we must run the simulation over much wider scale of temperature