Project

STUDY OF THE EFFECT OF PREHEATING ON AFT FUEL SAVING AND COMBUSTION EFFICIENCY

INTRODUCTION

A recuperator is a special purpose counter-flow energy recovery heat exchanger connected

with the furnace positioned in the exhaust gas-streams in order to recover the waste heat.

One use of a recuperator is to preheat the air entering the combustion chamber before

mixing with the fuel.

The heat loss from the exhaust gases is used to preheat the incoming air before it mixes with

the fuel. This helps in increasing the efficiency of the combustion process, which in turn leads

to fuel saving.

SIMULATION OBJECTIVE

Performance analysis of methane combustion with air at different preheated temperatures.

CASE 1 - EFFECT OF PREHEATING ON ADIABATIC FLAME TEMPERATURE (AFT):

  • We first create instances of fuel and air using the quantity class.

`CH_4+2(O_2+3.76N_2 )→CO_2+2H_2 O+7.52N_2`

  • Number of moles of air = 2
  • Number of moles of Methane = 1
  • Mole Fraction of Oxygen in air = 0.21
  • Mole Fraction of Nitrogen in air = 0.79
  • Air temperature is varied using preheating while pressure is kept constant at 1 atm.
  • The flue gas instance is created by mixing the fuel and air instances at their respective conditions.
  • The flue gas is then equilibrated under constant enthalpy and pressure to calculate the AFT of the reaction.

Code for Case 1

\"\"\"
Program to study the effect of preheating on AFT
Reaction: CH4 + 2(O2 + 3.76N2) <=> CO2 + 2H2O + 7.52N2
Program by: Shouvik Bandopadhyay
\"\"\"

import cantera as ct
import matplotlib.pyplot as plt
import numpy as np

# Creating the gas instance from the gri30 mechanism file
gas = ct.Solution(\'gri30.cti\')

# Creating the fuel and air instance from the gas
fuel = ct.Quantity(gas)
fuel.TPX = 298.15, ct.one_atm, {\'CH4\':1}
fuel.moles = 1
air = ct.Quantity(gas)

# Defining the preheating conditions
T_pre = np.linspace(298, 600, 51)
T_aft = []
plot_interval = 5

# Calculating AFT for different preheating temperatures
for T in T_pre:
	air.TPX = T, ct.one_atm, {\'O2\':0.21, \'N2\':0.79}
	air.moles = 2 + (2*3.76)
	flue = fuel + air
	flue.equilibrate(\'HP\',\'auto\')
	T_aft.append(flue.T)

# Printing and plotting the results
print(\'AFT with no preheating = \' + str(round(T_aft[0],2)) + \' K\')
slope = (T_aft[1]-T_aft[0])/(T_pre[1]-T_pre[0])
print(\'Rate of change of AFT with preheating = \' + str(round(slope,2)) + \' K/K\')
T_pre_plot = [T_pre[i] for i in range(0,len(T_pre),plot_interval)]
T_aft_plot = [T_aft[i] for i in range(0,len(T_aft),plot_interval)]

fig, ax = plt.subplots()
plt.plot(T_pre_plot, T_aft_plot,\'-o\',color=\'green\', linewidth=2)
plt.grid(\'both\', linestyle=\'--\', linewidth=1.2)
plt.xlabel(\'Preheating Temperature [K]\', fontsize=14)
plt.ylabel(\'Adiabatic Flame Temperature [K]\', fontsize=14)
plt.title(\'Effect of Air Preheating on the AFT\', fontsize=16, fontweight=\'bold\')
x_ticks = [250, 300, 350, 400, 450, 500, 550, 600, 650]
ax.set_xticklabels(x_ticks, rotation=0, fontsize=12)
y_ticks = [2200, 2220, 2240, 2260, 2280, 2300, 2320, 2340, 2360]
ax.set_yticklabels(y_ticks, rotation=0, fontsize=11)
plt.show()

Output of the above code

  • The AFT varies linearly with the preheating temperature with a slope of 0.43. This is because as the air enters at higher temperatures, more heat is available for combustion which in turn releases additional heat and results in higher AFT.
  • The AFT under no preheating air is calculated as 2224.35 K which is the actual AFT under STP conditions.

CASE 2 - EFFECT OF PREHEATING ON COMBUSTION EFFICIENCY:

Combustion efficiency is a measure of how efficiently the heat content of a fuel is transferred

into usable heat. The energy output from the combustion reaction in an adiabatic chamber

(no heat loss) can be calculated as:

`Q_(out) = dotm_(fuel)*h_(fuel) + dotm_(air)*h_(air) − dotm_(exhaust)*h_(exhaust)`

Here, `dotm_i` is the mass flow rate of species in and `h_i` is the specific enthalpy of

species in J/Kg. The specific heat of the reaction can then be calculated as:

`Q_(spec i fic) = Q_(out)/dotm_(fuel) = h_(fuel)+(dotm_(air)/dotm_(fuel))*h_(air)-(dotm_(exhaust)/dotm_(fuel))*h_(exhaust)`

By mass conservation equation:

`dotm_(exhaust) = dotm_(air) + dotm_(fuel)`

Substituting the value of the exhaist mass flow rate in the above equation we get:

`Q_(speci fic) = h_(fuel)+(dotm_(air)/dotm_(fuel))*h_(air)-(1+dotm_(air)/dotm_(fuel))*h_(exhaust)`

`implies Q_(speci fic) = dotm_(air)/dotm_(fuel)*(h_(air)-h_(exhaust)) + (h_(fuel)-h_(exhaust))`

But, `dotm_(air)/dotm_(fuel)=A/F=(A/F)_(st)` since `phi = 1`

Considering the same stoichiometric reaction as before:

`CH_4+2(O_2+3.76N_2 )→CO_2+2H_2 O+7.52N_2`

`A/F=dotm_(air)/dotm_(fuel)=(2*[MW_(O_2)]+3.76*[MW_(N_2)])/(MW_(CH_4)) = (2*[32+3*28])/16=17.12`

Combustion efficiency can now be calculated as:

`eta = Q_(speci fic)/(LHV)`

Here the LHV is the lower heating value of methane which is assumed as 50 MJ/Kg.

The exhaust can be estimated as a mixture of carbon dioxide, water and nitrogen in their respective mole fractions. In reality, there can be a lot of other products resulting from intermediate reactions as well.

Exit temperature for this case is assumed to be 1700 K. This assumption is valid for the purpose of understanding the trends of AFT and efficiency with preheating temperature. However, in practical scenarios, the exit temperature depends on a lot of parameters and may not even be constant throughout the reaction.

The fuel savings is also a function of efficiency. As the efficiency of the combustion increases, lesser fuel is required for the same amount of heat from the combustion.

Fuel savings `1-eta_0/eta_1`, where `eta_0` is the combustion efficiency with no preheating and `eta_1` is the combustion efficiency at a specified preheating.

Code for Case 2

\"\"\"
Program to study the effect of preheating on combustion efficiency
Reaction: CH4 + 2(O2 + 3.76N2) <=> CO2 + 2H2O + 7.52N2
Program by: Shouvik Bandopadhyay
\"\"\"

import cantera as ct
import matplotlib.pyplot as plt
import numpy as np

# Creating the gas instance from the gri30 mechanism file
gas = ct.Solution(\'gri30.cti\')

# Creating the fuel and air instance from the gas
fuel = ct.Quantity(gas)
fuel.TPX = 298.15, ct.one_atm, {\'CH4\':1}
fuel.moles = 1
h_fuel = fuel.enthalpy_mass
air = ct.Quantity(gas)

# Creating the estimated products instance from the gas
est_prod = ct.Quantity(gas)
n_tot = 1 + 2 + (2*3.76)
n_co2 = 1/n_tot
n_h2o = 2/n_tot
n_n2 = 7.52/n_tot
est_prod.TPX = 1700, ct.one_atm, {\'CO2\':n_co2, \'H2O\':n_h2o, \'N2\':n_n2}
est_prod.moles = n_tot
h_est_prod = est_prod.enthalpy_mass

# Defining the preheating conditions
T_pre = np.linspace(298, 600, 51)
LHV = 50e6
eff = []
fuel_saving = []
plot_interval = 5

# Calculating efficiency for different preheating temperatures
for T in T_pre:
	air.TPX = T, ct.one_atm, {\'O2\':0.21, \'N2\':0.79}
	air.moles = 2 + (2*3.76)
	air_fuel_ratio = air.mass/fuel.mass
	h_air = air.enthalpy_mass
	Q_spec = air_fuel_ratio*(h_air - h_est_prod) + h_fuel - h_est_prod
	eff.append(Q_spec/LHV*100)

	# Calculating the fuel saving from the efficiency
	fuel_saving.append((1 - (eff[0]/eff[-1]))*100)

# Printing and plotting the results
print(\'Efficiency with no preheating = \' + str(round(eff[0],2)) + \'%\')
print(\'Efficiency at preheating of 600 K = \' + str(round(eff[-1],2)) + \'%\')
slope = (eff[1]-eff[0])/(T_pre[1]-T_pre[0])
print(\'Rate of change of efficiency with preheating = \' + str(round(slope,4)) + \' %/K\')
print(\'Fuel saving at preheating of 600 K = \' + str(round(fuel_saving[-1],2))+ \'%\')
T_pre_plot = [T_pre[i] for i in range(0,len(T_pre),plot_interval)]
eff_plot = [eff[i] for i in range(0,len(eff),plot_interval)]
fuel_saving_plot = [fuel_saving[i] for i in range(0,len(fuel_saving),plot_interval)]

fig, ax = plt.subplots()
plt.plot(T_pre_plot, eff_plot,\'-*\',color=\'green\', linewidth=2)
plt.grid(\'both\', linestyle=\'--\', linewidth=1.2)
plt.xlabel(\'Preheating Temperature [K]\', fontsize=14)
plt.ylabel(\'Combustion Efficiency [%]\', fontsize=14)
plt.title(\'Effect of Air Preheating on Combustion Efficiency\',fontsize=15)
x_ticks = [250, 300, 350, 400, 450, 500, 550, 600, 650]
ax.set_xticklabels(x_ticks, rotation=0, fontsize=12)
y_ticks = [32, 34, 36, 38, 40, 42, 44, 46]
ax.set_yticklabels(y_ticks, rotation=0, fontsize=11)
plt.show()

fig, ax = plt.subplots()
plt.plot(T_pre_plot, fuel_saving_plot,\'-*\',color=\'green\', linewidth=2)
plt.grid(\'both\', linestyle=\'--\', linewidth=1.2)
plt.xlabel(\'Preheating Temperature [K]\', fontsize=14)
plt.ylabel(\'Fuel Savings [%]\', fontsize=14)
plt.title(\'Effect of Air Preheating on Fuel Savings\',fontsize=15,fontweight=\'bold\')
x_ticks = [250, 300, 350, 400, 450, 500, 550, 600, 650]
ax.set_xticklabels(x_ticks, rotation=0, fontsize=12)
y_ticks = [-5, 0, 5, 10, 15, 20, 25, 30]
ax.set_yticklabels(y_ticks, rotation=0, fontsize=11)
plt.show()

Output of the above code

  • The efficiency of combustion increases linearly with the preheating temperature at a rate of 0.0346%/K.
  • The efficiency increases from 33.87% at no preheating to 44.53% at a preheating of 600K. The fuel savings also increase almost linearly with the preheating temperature.
  • At a preheating temperature of 600K, you can save almost 23.93% more fuel than without the presence of preheating.
Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.