Effect of preheat temperatures on adiabatic flame temperature, combustion efficiency, and fuel savings using Python and Cantera
1. OBJECTIVE:
- To investigate the effect of preheating (298K to 600K) on the adiabatic flame temperature.
- To investigate the effect of preheating on combustion efficiency (LHV = 50MJ/kg, and furnace exit temperature = 1700K).
- To investigate the effect of preheating on fuel saving.
2. THEORETICAL BACKGROUND:
2.1 Enthalpy of combustion and Heating values
Let us consider a steady-flow reactor, shown in Fig. 1, in which a stoichiometric mixture of reactants enters and products exits, both at standard-state conditions (25°C, 1 atm). The combustion process is assumed
to be complete, i.e., all of the fuel carbon is converted to `CO_2` and all of the fuel hydrogen is converted to `H_2O`. For the products to exit at the same temperature as the entering reactants, heat must be removed from the reactor. The amount of heat removed can be related to the reactant and product standardized enthalpies by applying the steady-flow form of the first law:
`q_(cv) = h_o-h_i = h_(pro\d) - h_(reac)`
The definition of the enthalpy of reaction, or the enthalpy of combustion, `Deltah_R` (per mass of mixture), is
`Deltah_R = h_(pro\d)-h_(reac)`
or, in terms of extensive properties,
`DeltaH_R = H_(pro\d)-H_(reac)`

Fig. 1: Steady-flow reactor used to determine the enthalpy of combustion
The heat of combustion, Δ`h_c` (known also as the heating value), is numerically equal to the enthalpy of reaction, but with the opposite sign. The upper or higher heating value, HHV, is the heat of combustion calculated assuming that all of the water in the products has condensed to liquid. This scenario liberates the most energy, hence the designation “upper.” The lower heating value, LHV, corresponds to the case where none of the water is assumed to condense. For `CH_4`, the upper heating value is approximately 11 percent larger than the lower.
2.2 Adiabatic flame temperature
For a combustion process that takes place adiabatically with no shaft work, the temperature of the products is referred to as the adiabatic flame temperature. This is the maximum temperature that can be achieved for given reactants after the fuel is completely burned. It is an ideal case temperature and the actual flame temperature observed for a particular fuel is always less than this. Heat transfer, incomplete combustion, and dissociation all result in lower temperatures. The maximum adiabatic flame temperature for a given fuel and oxidizer combination occurs with a stoichiometric mixture (correct proportions such that all fuel and all oxidizers are consumed). The amount of excess air can be tailored as part of the design to control the adiabatic flame temperature.
2.3 Stoichiometry
The stoichiometric quantity of oxidizer is just that amount needed to completely burn a quantity of fuel. If more than a stoichiometric quantity of oxidizer is supplied, the mixture is said to be fuel lean, or just lean; while supplying less than the
stoichiometric oxidizer results in a fuel-rich, or rich mixture.
For a hydrocarbon fuel given by `C_xH_y`, the stoichiometric relation can be expressed as
`C_xH_y + a(O_2 + 3.76N_2 ) rarr xCO_2 + (y/2 )H_2O+ 3.76aN_2`
where,
`a=x+y/4`
For methane `CH_4`, `x=1, and y=4`, and therefore
`a=1+4/4=2`
And the relation becomes
`CH_4 + 2(O_2 + 3.76N_2 ) rarr CO_2 + 2H_2O+ 7.52N_2`
i.e. air is 21 percent O2 and 79 percent N2 (by volume), i.e., for each mole of O2 in air, there are 3.76 moles of N2.
No. of moles of `air` `= 2 xx 1 + 3.76 = 9.52`
No. of moles of `fuel` (`CH_4`) `= 1`
No. of moles of `product` = `1 + 2 + 7.52 = 10.52`
The stoichiometric air–fuel ratio can be found as
`(A/F)_(stoich)=((m_(air))/(m_(fuel))) = (4.76a)/1 (MW_(air))/(MW_(fuel))`
where `MW_(air)` and `MW_(fuel)` are the molecular weights of the air and fuel, respectively.
The equivalence ratio, `phi`, is commonly used to indicate quantitatively whether a fuel–oxidizer mixture is rich, lean, or stoichiometric. The equivalence ratio is defined as
`phi = ((A/F)_(stoic))/((A/F)) = ((F/A))/((F/A)_(stoic))`
From this definition, we see that for fuel-rich mixtures, `phi` > 1, and for fuel-lean mixtures, `phi` < 1. For a stoichiometric mixture, Φ equals unity. In many combustion applications, the equivalence ratio is the single most important factor in determining a system’s performance.
Calculating stoichiometric air-fuel ratio for methane:
`MW_C = 12`
`MW_H = 1`
`MW_O = 16`
`:.` `MW_(CH_4) = 12 + 4 xx 1 = 15`
`MW_(O_2) = 2 xx 16 = 32`
The air: fuel ratio is,
`(A/F) = (MW_(O_2))/(MW_(CH_4))`
`= (2xx32)/16`
`= 4 %`
The stoichiometric air-fuel ratio is,
`(A/F)_(stoich) = 4/0.21`
`= 17.1`
Hence, the sriochiometric air-fuel ratio for methane is 17.1:11.
2.4 Recuperation
In a recuperator, heat is transferred from hot combustion products, or flue gases, in a continuous stream to the air used in the combustion process. Fig. 2 displays a general flowchart. Recuperators come in a vast variety, and many of them utilize convection and radiation heat transfer from exhaust gases.

Fig. 2: Schematic of a furnace with air preheated by recuperation
To determine the amount of fuel saved from preheating the air to 600 K, we will write an energy balance for the control volume indicated in Fig. 2, assuming both the heat transferred to the load and the heat losses are the same, with and without preheating. Assuming steady flow, we apply the energy conservation equation for a control volume, recognizing that heat is transferred out of the control volume:
`-Q = -Q_(load)-Q_(loss) = dotm(h_(p)-h_(r))`
`= (dotm_(A)+dotm_(F))h_(p)-dotm_(F)h_(F)-dotm_(A)h_(A)`
`:. Q = dotm_(F)h_(F)+dotm_(A)h_(A)-(dotm_(A)+dotm_(F))h_(p)`
We define fuel utilization efficiency as
`eta = (dotQ)/(dotm_(F).LHV) = (-([(A/F)+1]h_p - (A/F)h_A-h_F))/(LHV)`
The fuel savings is defined as
Savings, `S = 1-(eta_(298)/eta_(600))`
3. CODE & RESULTS
3.1 Effect of preheating on the adiabatic flame temperature
3.1.1 Code
"""
Week 4 part 1
Effect of preheating on AFT
"""
import cantera as ct
import matplotlib.pyplot as plt
import numpy as np
gas = ct.Solution('gri30.cti')
A = ct.Quantity(gas)
F = ct.Quantity(gas)
# Air temps. range
temp_air = np.linspace(298,600,50)
T_aft = [] # AFT array
for i in temp_air:
# Air mixture
A.TPX = i,ct.one_atm,{'O2':1,'N2':3.76}
A.moles = 9.52
# Fuel mixture
F.TPX = 298,ct.one_atm,{'CH4':1}
F.moles = 1
#Mixture
Mixture = A + F
Mixture.equilibrate('HP')
T = Mixture.T
T_aft.append(T)
round_to_tenths = [round(num,1) for num in T_aft]
print(round_to_tenths)
plt.plot(temp_air,T_aft)
plt.title('Effect of preheating on adiabatic flame temperature AFT')
plt.xlabel('Air temperature (K)')
plt.ylabel('Adiabatic flame temperature (AFT), K')
plt.grid()
plt.show()
3.1.2 Results


Fig. 3: Effect of combustion air preheat on adiabatic flame temperature (top); and AFT array (bottom)
- We can infer that the preheating significantly affects the furnace's adiabatic flame temperature. We note from Fig. 3 that, for the range of preheat temperatures investigated, a 100 K increase in air temperature results in about a 50 K (approx.) increase in flame temperature. This effect can be attributed to dissociation and to the larger specific heat of the product gases compared with the air.
3.2 Effect of preheating on combustion efficiency and fuel-saving
3.2.1 Code
"""
Week 4 part 2
Effect of preheating on combustion efficiency & fuel-saving
"""
import cantera as ct
import matplotlib.pyplot as plt
import numpy as np
import math as ma
gas = ct.Solution('gri30.cti')
A = ct.Quantity(gas) # A = Air
F = ct.Quantity(gas) # F = Fuel
P = ct.Quantity(gas) # P = Product
# Lower heating value
LHV = 50e6
# Air temp. range
temp_air = np.linspace(298,600,50)
# Efiicieny and savings array
eta = []
S = []
for i in range(0,len(temp_air)):
# Air
A.TPX = temp_air[i],ct.one_atm,{'O2':1,'N2':3.76}
A.moles = 9.52
# Fuel
F.TPX = 298,ct.one_atm,{'CH4':1}
F.moles = 1
# Product
P.TPX = 1700,ct.one_atm,{'CO2':1,'H2O':2,'N2':7.52}
P.moles = 10.52
# Enthalpy
h_A = A.h
h_F = F.h
h_P = P.h
# Efficiency
efficiency = ((A.mass*h_A)+(F.mass*h_F)-(P.mass*h_P))/(F.mass*LHV)
efficiency = efficiency*100
eta.append(efficiency)
round_to_100ths_eta = [round(num,2) for num in eta]
# Fuel-saving, Savings
Savings = 1-(eta[0]/eta[i])
Savings = Savings*100
S.append(Savings)
round_to_100ths_savings = [round(num,2) for num in S]
print(round_to_100ths_eta)
print(round_to_100ths_savings)
print(A.report())
print(F.report())
print(P.report())
plt.figure(1)
plt.plot(temp_air,eta,color='red')
plt.title('Effect of preheating on combustion effieciency')
plt.xlabel('Air temperature, K')
plt.ylabel('Efficiency (eta), %')
plt.grid()
plt.figure(2)
plt.plot(temp_air,S)
plt.title('Effect of preheating on fuel-savings')
plt.xlabel('Air temperature, K')
plt.ylabel('Fuel-savings (S), %')
plt.grid()
plt.show()
3.2.2 Results


Fig. 4: Effect of combustion air preheat on combustion efficiency (top), and efficiency array (bottom)
- The furnace's efficiency increases due to the preheating of the air, with variations exceeding 40%. The efficiency is 34% at 300K which increases to 44% at 600K (see Fig. 4). A furnace that is more efficient will use its fuel energy more effectively, improving performance.


Fig. 5: Effect of combustion air preheat on fuel-savings (top), and fuel-saving array (bottom)
- By preheating the air, we can achieve fuel savings upwards of 23% (see Fig. 5). We see that substantial fuel savings can be realized by using recuperators to return some of the energy that would normally go up the stack. We have to note that the nitric oxide emissions may be affected since peak temperatures will increase as a result of preheating. With air entering at 600 K, the adiabatic flame temperature increases 150 K (7.1 percent) above the 298 K air case.
- The product temperature of the reaction, which is required for the recuperator to preheat the air, determines the exit temperature of the reaction. If the exit temperature is high, the preheating of the air will be faster, which will help to increase thermal efficiency or combustion efficiency, which will help to save fuel. This means that the exit temperature is proportional to the air's preheat temperature.