Week 4.2 - Combustion Efficiency Calculation after Preheating
Setup :
A furnace is used to burn Methane and Air Mixture.
A recuperator is connected to this furnace to recover some energy.
Aim :
- To find the effect of pre-heating(298 K to 600 K) on the adiabatic flame temprature .
Expected plot : Pre-heat temprature vs Adiabatic flame temprature - To find out if Preheating saves fuel when exit temprature is 1700 K & the combustion products are CO2, H20, and N2 .Expected plot 1 : Pre-heat temprature vs Combustion effeciency or Gain effeciency .
Expected plot 2 :
Recuperator :
- A recuperator is a special purpose counter-flow energy recovery heat exchanger positioned within the supply and exhaust air streams of an air handling system, or in the exhaust gases of an industrial process, in order to recover the waste heat.
- They are used to extract heat from the exhaust and use it to preheat air entering the combustion system. In this way they use waste energy to heat the air, offsetting some of the fuel, and thereby improves the energy efficiency of the system as a whole.
- Here we are using the preheat from the furnace whose exhaust temprature is 1700K but the pre-heat temprature supplied to heat the air at intake is at a temprature range of 298 K to 600 K .
Schematic diagram of the setup :

Part 1 :To find the effect of pre-heating(298 K to 600 K) on the adiabatic flame temprature .
Code :
import cantera as ct
import matplotlib.pyplot as plt
import numpy as np
pre_heat = np.linspace(298,600,1000)
gas = ct.Solution('gri30.cti')
B = ct.Quantity(gas)
B.TPX = 298.15,ct.one_atm,'CH4:1'
B.moles = 1
T=[]
P=[]
for j in range(0,len(pre_heat)):
A = ct.Quantity(gas)
A.TPX = pre_heat[j],ct.one_atm,'O2:0.21,N2:0.79'
A.moles = 9.52
M=A+B
M.equilibrate('HP','auto')
T.append(M.T)
P.append(M.P)
print(T)
# Temprature
plt.plot(pre_heat,T)
plt.xlabel('Pre heat temprature [K]')
plt.ylabel('Temprature - AFT [K]')
plt.show()
# Pressure
plt.plot(T,P)
plt.xlabel('Temprature - AFT [K]')
plt.ylabel('Pressure')
plt.show()
Note :
- We will be creating a "gas object" as an instance of "solution class", also we will be creating A & B as an instance of "quantity class" which inherits from "gas".
- Since we are using quantity class we will have to specify mole fractions along with the STP conditions in the TPX line .
Plot :
i) Effect of pre-heating on AFT
From the graph we can observe that the pre heated air produces higher Adiabatic temprature values ,this is because we supply pre-heated air to the furnace which contains more energy than the significantly colder air to STP condition & while burning the fuel this additional energy from the pre-heat produces higher values of adiabatic flame temprature .

ii) Relationship between pressure and AFT
From the graph we can see that the input pressure is considered to be at 1 bar initially ,but with increasing pre-heat temprature the pressure drops significantly mostly because of expansion of air because of raise in pre-heat temprature values .

Part 2 : To find out if Preheating saves fuel when exit temprature is 1700 K
By energy Balance :
Effeciency of combustion :
`(m_(fuel)*H_(fuel)+m_(air)*H_(air))-Q_(out)-m_(exhaust)*H_(exhaust) = 0`
`Q_(out) = (m_(fuel)*H_(fuel)+m_(air)*H_(air))-m_(exhaust)*H_(exhaust)`
but,
`m_(fuel)+m_(air)=m_(exhaust)`
`Q_(out) = (m_(fuel)*H_(fuel)+m_(air)*H_(air))-(m_(air)+m_(fuel))*H_(exhaust)`
Divide both sides by `m_(fuel)`
`(Q_(out))/(m_(fuel)) = (H_(fuel)+(m_(air))/m_(fuel)*H_(air))-((m_(air))/m_(fuel)+1)*H_(exhaust)`
The effeciency of combustion is :
`eta_(combustion)=Q_(out)/((m_(fuel))*(LHV))*100`
Fuel save percentage :
- Fuel saving can be calculated from the ratio of effeciency gains at STP with the effeciency gains at the pre pre heat temprature .
FUEL SAVING = `(1-(eff_298)/(eff_j))*100`
Code :
import cantera as ct
import matplotlib.pyplot as plt
import numpy as np
# CH4 + 2 (O2+3.76N2) = CO2 + 2 H2O + 7.52 N2
n = 1000
LHV = 50e6
pre_heat = np.linspace(298,600,n)
# main code
gas = ct.Solution('gri30.cti')
# fuel at STP
B = ct.Quantity(gas)
B.TPX = 298.15,ct.one_atm,'CH4:1'
B.moles = 1 # moles of fuel
B.equilibrate('HP','auto')
H_fuel = B.enthalpy_mass
print('Enthalpy of fuel = ',H_fuel)
# mass of fuel
mass_fuel=B.mass
# exhaust at 1700K
E = ct.Quantity(gas)
E.TPX = 1700,ct.one_atm,'CO2:0.09506,H2O:0.1901,N2:0.71483'
E.moles = 10.52 # moles of products
E.equilibrate('HP','auto')
H_exhaust = E.enthalpy_mass
print('Enthalpy of exhaust = ',H_exhaust)
mass_exhaust=E.mass
T_air = []
enthalpy_air = []
# mass_air=[]
n_gains=[]
preheat_effect=[]
for j in range(0,len(pre_heat)):
# air
A = ct.Quantity(gas)
A.TPX = pre_heat[j],ct.one_atm,'O2:0.21,N2:0.79'
A.moles = 9.52
A.equilibrate('HP','auto')
T_air.append(A.T)
H_air = A.enthalpy_mass #enthalpy
enthalpy_air.append(H_air)
# mass
mass_air=A.mass #mass
# Heat output
Effeciency_comb = (((mass_air/mass_fuel)*enthalpy_air[j]+H_fuel-((mass_air/mass_fuel)+1)*H_exhaust)/LHV)*100
n_gains.append(Effeciency_comb)
# Fuel save ratio
e2 = n_gains[0]
effeciency_else_fuelsave = (1-(e2/n_gains[j]))*100
preheat_effect.append(effeciency_else_fuelsave)
print('AFT = ',T_air)
print('Heat output = ',n_gains)
plt.plot(pre_heat,n_gains)
plt.xlabel('Pre-heat temprature - AFT [K]')
plt.ylabel('Combustion effeciency or Gain effeciency [%]')
plt.show()
plt.plot(pre_heat,preheat_effect)
plt.xlabel('Pre-heat temprature - AFT [K]')
plt.ylabel('Fuel save [%]')
plt.show()
Plots :

The effeciency of the fuel combustion increases as the temprature of pre-heating of the air increases .
The added energy from the pre heat produces more heat because of heat combustion .

The fuel burned with pre heated air mixture produces higher tempratures because it is easy for the fuel to arrive at a particulat AFT value ,as the pre heat temprature increases the fuel save percentage increases .