Challenge

Week 4.2 - Combustion Efficiency Calculation after Preheating

Combustion Efficiency Calculation after Preheating

Introduction

Recuperator is a device that acts as a heat exchanger by utilizing high temperature exhaust gas for heating the inlet air headed for combustion. Preheating the air without burning extra fuel is advantageous in combustion cycle.

Objective:

  1. Explore the effect of preheating the air on adiabatic flame temperature.
  2. Investigating the effect of preheating on fuel saving and combustion efficiency.

Calculating Fuel Saving and Combustion Efficiency:

  1. Mass Balance:

`dot m_{"air"} + dot m_{"fuel"} = dot m_{"exhaust"}`

  1. Energy Balance of reactants and products:

`dot m_{air}h_{air} + dot m_{fuel}h_{fuel} = Q_{output} + dot m_{exhaust}h_{exhaust} `

  • `Q_{"output"} = dot m_{"fuel"}[h_{"fuel"} + {dot m_{"air"}}/{dot m_{"fuel"}} – (1 + {dot m_{"air"}}/{dot m_{"fuel"}})h_{"exhaust"}]`

Conservation of heat:

`Q_{"output"} = Q_{"work"} + Q_{"loss"}`, but as combustion is assumed adiabatic

  • `Q_{"output"} = Q_{"work"}`

From the above equations:

`Q_{"specific"} = h_{"fuel"} + ({dot m_{"air"}}/{dot m_{"fuel"}})h_{"air"} – (1 + ({dot m_{"air"}}/{dot m_{"fuel"}}))h_{"exhaust"}`

Fuel Saving:

  • `(1 –{ Q_{"specific"}^{"no preheating"}}/{ Q_{"specific"}^{"with preheating"}}) X 100%`

Combustion Efficiency:

  • `mu = {Q_{"specific"}}/{LHV} X 100`

1. Effect of preheating the air on adiabatic flame temperature.

2. Effect of preheating on fuel saving.

3. Effect of preheating on combustion efficiency.

It is evident from the above findings that, AFT increases with the increase in preheating temperature.

Also, it can be seen that the fuel saving and combustion efficiency increases with the increase in AFT.

Code Solution:

Effect of preheating on Adiabatic Flame Temperature

import cantera as ct
import matplotlib.pyplot as plt

# SInce No heat loss has been given in the problem statememnt, So Adeabatic Temperature Calculation has to be done

# Standard/ Starting preheated Air temperature
T_std = 298
# Initializing variable(gas) to be mixed with fuel
gas = ct.Solution('gri30.cti')

### Setting up fuel
# Initializing variable fuel on top of air
fuel = ct.Quantity(gas)
# temperature pressure and molar concentration has been set for the fuel
fuel.TPX = T_std, ct.one_atm, {'CH4': 1}
# molar quantity has been set for the fuel
fuel.moles = 1

### Setting up air
# building up air on top of gas
air = ct.Quantity(gas)
# temperature pressure and molar concentration has been set for the air
air.TPX = T_std, ct.one_atm, {'O2': 0.21, 'N2': 0.79}
# Setting the quantity of air
air.moles = 9.52

# Minimum and Maximum limit of temperature variation in Kelvin
t_min = 298
t_max = 600

# Array declaration for storing preheat temperature
t_preheat = []
# Array declared for storing the adiabatic fuel temeprature
t_aft = []

# Loop for varying the temperature of air and allowing equilibriate 
for T in range (t_min, t_max + 1):
	# Varying the temperature of air
	air. TPX = T, ct.one_atm, {'O2': 0.21, 'N2': 0.79}
	# Mixing the fuel and air
	mixture = air + fuel
	mixture.equilibrate('HP', solver = 'auto')
	t_aft.append(mixture.T)
	t_preheat.append(T)


plt.plot(t_preheat, t_aft, color = 'red')
plt.title("Effect of Preheating on the Adiabatic Flame Temperature")
plt.xlabel("Preheating Temperature (K)")
plt.ylabel("Adiabatic Flame Temperature (K)")
plt.show()

Effect of Preheating on Fuel Saving and Combustion Efficiency

import cantera as ct 
import matplotlib.pyplot as plt

'''
CH4 + 2(O2 + 3.76N2) = CO2 + 2H2O + 7.52N2

'''
# Based on the above given reaction, No. of moles for complete combustion is 10.52

# Variables for storing total no. of moles
n_total = 10.52
n_co2 = 1/n_total
n_h2o = 2/n_total
n_n2 = 7.52/n_total

# gas variable described as solution object on top of which air and fuel will be initialized
gas = ct.Solution('gri30.cti')

# Declaring exhaust on top of gas by specifying quantity
exhaust = ct.Quantity(gas)
# As given, the temperature of exhaust is set to 1700 K
exhaust.TPX = 1700, ct.one_atm, {'CO2': n_co2, 'H2O': n_h2o, 'N2': n_n2}
exhaust.moles = n_total
# Enthaly of exhaust
h_exhaust = exhaust.enthalpy_mass
# mass of exhaust
m_exhaust = exhaust.mass


# Declaring fuel on top of gas by specifying Quantity object
fuel = ct.Quantity(gas)
fuel.TPX = 298.15, ct.one_atm, {'CH4': 1}
fuel.moles = 1
m_fuel = fuel.mass
h_fuel = fuel.enthalpy_mass

# Declaring air on top of gas by specifying Quantity object
air = ct.Quantity(gas)
air.TPX = 298, ct.one_atm, {'O2': 0.21, 'N2': 0.79}
air.moles = 9.52

# Minimum and Maximum limit of temperature
t_min = 298
t_max = 600

# Declared array to store preheating temperature
t_preheating = []
# Efficiency of combustion
eff = []
# Array to hold saved fuel
fuel_saved = []
# Variable for holding initial specific heat
q_0 = 0

for T in range (t_min, t_max + 1):

	# Every iteration temperature is updated as per the preheat temperature value
	air.TPX = T, ct.one_atm, {'O2': 0.21, 'N2': 0.79}
	# mass of air
	m_air = air.mass
	# enthalpy of air
	h_air = air.enthalpy_mass
	# given Lower heating value 
	LHV = 50e6 # J/kg
	# Air fuel ratio
	air_fuel_ratio = m_air / m_fuel

	q_specific = h_fuel + (air_fuel_ratio * h_air) - ((1 + air_fuel_ratio) * h_exhaust)
	efficiency = (q_specific / LHV) * 100

	if (T == 298):
		q_0 = q_specific

	fuel_savings = (1 - q_0 / q_specific) * 100
	
	t_preheating.append(T)
	eff.append(efficiency)
	fuel_saved.append(fuel_savings)



print("The combustion efficiency without preheating = ", round(eff[0],2), '%')
print("The combustion efficiency at maximum preheating of 600K= ", round(eff[-1],2), '%')
print("The fuel Savings after preheating of 600 K = ", round(fuel_saved[-1],2), '%')

plt.figure(1)
plt.plot(t_preheating, eff, color = 'red')
plt.title("Effect of Preheating of Air on the Combustion Efficiency")
plt.xlabel("Preheated Air Temperature (K)")
plt.ylabel("Combustion Efficiency (%)")


plt.figure(2)
plt.plot(t_preheating, fuel_saved, color = 'red')
plt.title("Effect of Preheating on the fuel save %")
plt.xlabel("Preheated Temperature Value (K)")
plt.ylabel("fuel Savings (%)")


plt.show()
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.