Week 4.2 - Combustion Efficiency Calculation after Preheating
Fuel Combustion using recuperator for preheating air:
Often times, useful enthalpy in products of combustion is not completely utilized by harvesting devices due to the small time-scales products are present in the system before being replaced by more high energy products from continuous combustion. These enthalpies go wasted by letting out the exhaust gases into atmosphere. Also, the reactants doesn't reach chemical equilibrium within the combustor due to the same reason. This would also increase the enthalpy of products after the combustor and go unutilized. A energy recover unit such as recuperator is a heat exchanger which takes heat from exhaust gases and increases the temperature of inlet air before combustion. By recoving the enthalpy from the outgoing products and supplying it to the combustion reactants, the efficiency of combustion can be increased which would result in reduced fuel consumption and reduced amount of exhaust gases. These units will be very useful when the enthalpy of exit gases are much high and the operation cost of the unit itself is much less compared to fuel savings due to preheating.
1. Effect of preheating on adiabatic flame temperature of methane
The simulation is performed in Cantera using the quantity class and equilibrate method. A solution object, gas is created based on gri30.cti. Couple of quantity objects are created based on gas for fuel and oxidiser. 2 moles of oxygen is required for 1 mole of methane for complete combustion. Air contains 1 mole of oxygen and 3.76 moles of nitrogen in 4.76 moles of air. Hence stoichiometric fuel air ratio is defined as 1/(2*4.76) in mole terms. Equivalence ratio is assumed to be one, meaning stoichiometric amount of fuel and oxidiser are used for combustion. Fuel quantity is set to inlet temperature of 298.15 [k], 1 atm pressure and with mole fraction of 1 for CH4. Air quantity is set to preheated temperature variable which will be varied during the solution, with 1 atm pressure and mole fraction of 1 and 3.76 for oxygen and nitrogen respectively. Number of moles for fuel is set to 1. Number of air moles is calculated using
`"fuel-air ratio" = "equivalence ratio" * "stoichiometric fuel-air ratio"`
`N_(air) = N_("fuel") / "fuel-air ratio"`
A mixture quantity is created by adding fuel and oxidiser. This mixture is brought to equilibrium under constant pressure process using equilibrate method. The temperature of mixture represents adiabatic flame temperature.
The python program to perform the calculation using cantera and obtain adiabatic flame temperature for different pre-heat temperature is as shown below
'''
Combustion of methane in furnace with pre-heating of oxidiser
'''
import cantera as ct
import numpy as np
import matplotlib.pyplot as plt
# set constants
preHeat_temp = np.linspace(298,600,50) # entry temperature of oxidiser after pre-heating
T_in = 298.15 # input fuel temperature
eq_ratio = 1 # equivalence ratio
st_f_o_ratio = 1/(2*4.76) # stoichiometric fuel-air ratio
ad_flame_temp = [] # result array of adibatic flame temperature in K
# instantiate solution object
gas = ct.Solution("gri30.cti")
# instantiate fuel quantity object - methane using quantity class
fuel = ct.Quantity(gas)
fuel.TPX = T_in, ct.one_atm, {'CH4':1}
fuel.moles = 1
for temp in preHeat_temp:
# instantiate oxidiser quantity object - air
oxid = ct.Quantity(gas)
oxid.TPX = temp, ct.one_atm, {'O2':1,'N2':3.76}
# calculate and set stoichiometric amount of oxidiser
f_air_ratio = eq_ratio * st_f_o_ratio
oxid.moles = fuel.moles / f_air_ratio
# Create a mixture of air and fuel and find equilibrium temperature and enthalpy through constant pressure process
mix = oxid + fuel
mix.equilibrate('HP')
ad_flame_temp.append(mix.T)
# plot pre-heat temperature vs adibatic flame temperature
plt.figure(1)
plt.plot(preHeat_temp,ad_flame_temp)
plt.xlabel("pre-heat temperature [K]")
plt.ylabel("Adiabatic flame temperature [K]")
plt.title("Adiabatic flame temperature vs pre-heat temperature")
plt.show()
Result:

It can be seen that the adiabatic flame temperature rises with increase in inlet temperature of air. The effect of pre-heating the air increases the adiabatic flame temperature linearly. This happens due to the additional enthalpy carried by the air due to preheating. Preheating of air increases the sensible enthalpy of air. Heat release from the combustion is defined as difference between the enthalpy of products and enthalpy of reactants. So, the energy balance for combustion process will produce greater amount of heat release due to additional enthalpy in reactant air. In other words, the heat of combustion is defined as the energy released by formation of products minus the energy required to break the reactant bonds. The additional sensible enthalpy in air due to preheating would be used to break reactant bonds and hence the energy required for this process from combustion is reduced, maximizing the combustion output.
2. Combustion efficiency due to pre-heating of air:
Lower heating value(LHV) of methane is taken as 50 [MJ/kg]. The heat output from the combustion process with pre-heating of air is compared against LHV of methane to calculate the efficiency of combustion process. The process of combustion takes place in a furnace at constant pressure of 1 atm and heat losses are assumed to be negligible. The mass flow rate of fuel is assumed to the mass of 1 mole of methane per second. Mass flow rate of air is taken to be stoichiometric amount of air required to combust 1 mole of fuel per second. Exit temperature of products from the furnace is given to be a fixed value of 1700 [K].
Taking the energy balance of the whole system,
`dotm_(fuel)*h_(fuel) + dotm_(air)*h_(air) = dotm_("prod")*h_("prod") + dotQ_(out)`
where subscript "prod" -> products
and `dotQ_(out)` -> heat output from the system per second used by the energy harvesting system.
`dotQ_(out)` is the heat ouput for per second for the total amount of fuel entering the system per second. LHV for methane is known and it's value is given per kg of mass of methane. Hence, to get the efficiency, heat output is also required in per unit mass of methane terms.
Hence, `q_(out) = dotQ_(out) / (dotm_(fuel))`
where `q_(out)` -> heat output per unit mass of fuel
Combustion efficiency, `eta_(comb) = q_(out) /"LHV"_(fuel) = dotQ_(out)/(dotm_(fuel)*LHV_(fuel))`
Combustion efficiency for different pre-heat temperatures can be calculated using this formula by keeping the `dotQ_(out)` as a variable for a fixed amount of fuel mass rate.
From the previous exercise, it was seen that adiabatic flame temperature rises with pre-heating temperature. Hence the output heat, `Q_(out)`will also rise with increase in pre-heat temperature as the exit temperature of products is assumed to be constant. But the energy harvesting device would require a constant amount of heat irrespective of pre-heating to the air. To maintain `Q_(out)` a constant, the mass of fuel and oxidiser can be reduced based on the combustion of efficiency of the system with the corresponding entry temperature of air. Given that the furnace is designed for energy harvesting device without considering preheating, energy required by the harvesting device will be energy output of combustion without preheating. This can be calculated from the efficiency definition,
`dotQ_(out,298) = LHV_(fuel) * eta_(comb, 298) * dotm_(fuel,298)`
where subscript 298 -> inlet temperature of air at 298[K]
For a system with preheating to achive same heat output,
`dotQ_(out) = LHV_(fuel) * eta_(comb) * dotm_(fuel) = dotQ_(out,298)`
`LHV_(fuel)` is known and `eta_(comb)` is calculated as mentioned above. Hence above equation can be solved for `dotm_(fuel)`
`LHV_(fuel) * eta_(comb) * dotm_(fuel) = LHV_(fuel) * eta_(comb, 298) * dotm_(fuel,298)`
`dotm_(fuel) = (eta_(comb, 298)/eta_(comb)) * dotm_(fuel,298)`
Using this formula, the required fuel for combustion can be calculated in terms of fuel required for combustion without preheating. The amount of air can also be adjusted for stoichiometric ratio to get same heat output.
To get fuel saving in terms of percentage compared to `dotm_(fuel,298)`,
`"Fuel-savings" =(dotm_(fuel,298) - dotm_(fuel))/dotm_(fuel,298) * 100 = (1 - (dotm_(fuel))/dotm_(fuel,298))*100 = (1 - eta_(comb, 298)/eta_(comb)) *100`
A python program is used to obtain combustion efficiency and fuel saving percentage as a function of pre-heating temperature. Similar to previous program, 2 seperate quantities are used to define fuel and air and their moles are set to stoichiometric values. A mixture quantity is created by adding fuel and air. This mixture is brought to a temperature of 1700 [K], which is prescribed as outlet temperature at a constant pressure of 1 atm. The mole fraction of resulting products are set to be {"CO2":1, "H2O":2, "N2":2*3.76}, which corresponds to stoichiometric combustion of 1 mole of CH4. Establishing energy balance between the reactants and products as mentioned above provides the heat output, `dotQ_(out)`. "Quantity.enthalpy" in cantera provides the extensive enthalpy as described by `m*h`. Since, `m = dotm` with our previous assumptions, we can calculate heat output as "products.enthalpy - reactants.enthalpy". Combustion efficiency is calcuated using above formula. The combustion efficiency of furnace without preheating is taken as base case and fuel savings for other cases are calculated using the formula derived above. The python program is as shown below.
'''
Calculate combustion efficiency and fuel savings for
combustion of methane in furnace with pre-heating of oxidiser
'''
import cantera as ct
import numpy as np
import matplotlib.pyplot as plt
# set constants
preHeat_temp = np.linspace(298,600,50) # entry temperature of oxidiser after pre-heating
T_out = 1700 # exit temperature of products
T_in = 298.15 # input fuel temperature
LHV = 50e6 # Lower heating value of methane
eq_ratio = 1 # equivalence ratio
st_f_air_ratio = 1/(2*4.76) # stoichiometric fuel-air ratio
comb_eff_arr = [] # result array for combustion efficiency %
f_saving_arr = [] # result array for fuel saving %
# instantiate solution object
gas = ct.Solution("gri30.cti")
# instantiate fuel quantity object - methane using quantity class
fuel = ct.Quantity(gas)
fuel.TPX = T_in, ct.one_atm, {'CH4':1}
fuel.moles = 1
for temp in preHeat_temp:
# instantiate oxidiser quantity object - air
oxid = ct.Quantity(gas)
oxid.TPX = temp, ct.one_atm, {'O2':1,'N2':3.76}
# calculate and set stoichiometric amount of oxidiser
f_air_ratio = eq_ratio * st_f_air_ratio
oxid.moles = fuel.moles / f_air_ratio
# Create a new mixture of air and fuel and find the enthalpy if the reactants are brought to specified amount of products and temperature
mix2 = oxid + fuel
mix2.TPX = T_out, ct.one_atm, {"CO2":1, "H2O":2, "N2":2*3.76}
# Calculate difference between the enthalpy for both the process and calculate the efficiency of actual process using the LHV value provided
Q_out = -(mix2.enthalpy - (fuel.enthalpy + oxid.enthalpy))
Q_out_mass = Q_out / fuel.mass
comb_eff = Q_out_mass / LHV
comb_eff_arr.append(comb_eff * 100)
# Store base combustion efficiency
if temp == 298:
comb_eff_base = comb_eff
# Calculate fuel saving in terms of percentage of base fuel consumption
f_saving = (1 - comb_eff_base/comb_eff) * 100
f_saving_arr.append(f_saving)
# plot combustion efficiency vs pre-heat temperature
plt.figure(1)
plt.plot(preHeat_temp,comb_eff_arr)
plt.xlabel("pre-heat temperature [K]")
plt.ylabel("Combustion efficiency %")
plt.title("Combustion efficiency vs pre-heat temperature")
plt.grid()
# plot fuel saving vs pre-heat temperature
plt.figure(2)
plt.plot(preHeat_temp,f_saving_arr)
plt.xlabel("pre-heat temperature [K]")
plt.ylabel("Fuel saving %")
plt.title("Fuel saving vs pre-heat temperature")
plt.grid()
plt.show()
Results:

It can be clearly seen that combustion efficiency goes up with preheating temperature increase of air for the same reasons mentioned for the increase in adiabatic flame temperature. With increase in adiabatic flame temperature, the heat output of fuel or LHV also rises considering the larger temperature difference between adiabatic flame temperature and datum. Combustion efficiency rises from 34% for the base case without preheating to 44% for the case with 600[K] inlet temperature of air. This is calculated with fixed inlet mass-flow rate and varying the heat output. Keeping the heat ouput fixed and varying the fuel inlet mass, the fuel saving is shown to increase almost linearly with increase in pre-heat temperature. With inlet temperature of air at 600[k] the fuel saving is almost reduced by 24% compared to the case without any pre-heating. In the above problem, exit temperature of products is kept as constant. It is common practice to set the exit temperature of combustion gases to a constant value for simulations of systems that occur after the combustion such as aircraft turbines. For a constant pressure combustor such as the furnace, the temperature of exit gases will remain nearly consant with a constant mass flow rate of fuel and air with a stable combustion process. For combusiton in cycles that doesn't use constant pressure process, such as IC engine combustion, the exit mass-flow rate and temperature of products might be cyclic based on the process in engine cycle. However the time-scales of these cycles are usually very small and can be neglected for average calcuations when assuming a constant exit temperature.