Challenge

Adiabatic Flame Temperature calculation

Aim:

To calculate Adiabatic Flame Temperature (AFT) for constant volume system and constant pressure system under varying conditions. The varying conditions and the analysis to be made are,

  1. When the process is of constant volume, the effect of equivalene ratio on AFT should be studied and plot the results (methane fuel)
  2. When the process is of constant pressure, the effect of heat loss (percentage of maximum heat) on AFT should be studied and plot the results (methane fuel)
  3. When the process is of constant pressure, AFT for a heat loss percentage of 35% is to be calculated (methane fuel)
  4. When the process is of constant pressure, the effect of number of carbon atoms in a alkane fuel on AFT is to be found out, for one, two and three carbon atoms and plot the results
  5. When the process is of constant pressure, the effect of alkane, alkene and alkyne double bonded fuels on AFT is to be found out, and plot the results

Theory:

A thermodynamic process is one in which a system moves from one initial state to another final state, where both the states are in thermodynamic equilibrium. A thermodynamic process can be of constant volume (isochoric), constant pressure (isobaric), adiabatic (no heat interaction), isothermal (no temperature change). The state of a system is defined by the values of properties like pressure, volume, internal energy, enthalpy and entropy. After a process is complete, meaning that after the system has reached thermodynamic equilibrium (chemical and thermal equlibrium), the new state is defined by the new set of values of the thermodynamic properties.

In the current case, the areas of intrest are isobaric and isochoric processes. In either of these processes, the new temperature value after the process is complete, need to be calculated. Let us consider an insulated system (no heat interaction with the surroundings, say a cylinder filled with air) is at STP condition (dead state, thermal equilibrium with the surroundings) and combustion happens and the system reaches a new state (the process of reaching this new state can be of constant volume or constant pressure). As no heat is allowed to leave the system, the temperature increases. After the system has settled down at the new state, the temperature then is called as Adiabatic Flame Temperature (maximum temperature the system can reach).

Knowing the Adiabatic Flame Temperature can help in the design of the system, which need to sustain and remain intact even at this high temperature.

Work is considered as a high grade energy and heat, a low grade energy as work can be completely converted to heat, but vice-versa is not possible, a part of heat is converted to internal energy of the (`dQ = dU + dW`). So, the maximum work that can be extracted from the available heat energy is called as exergy or available energy (the failure of heat to completely get converted to work is because of entropy). A system at high energy expands only till it reaches the atmospheric temperature (dead state). So, the combustion energy too (heat), has the limitation of STP (Standard Temperature Pressure, which are atmospheric temperature and pressure). So, the maximum energy that can be extracted from the combustion process is termed as Lower Heating Value, which is exergy.

Introduction:

In this project, AFT is calculated in constant pressure process by considering change in enthalpy between reactants and products zero. This can be seen mathematically from first law of thermodynamics as,

Enthalpy, h = U + pV, where pV is flow energy and U is internal energy. differentiating this, `dh = dU + pdV + Vdp` and as it is constant pressure process, Vdp becomes zero and , which is, `dh = dQ`

As our system is insulated, `dQ = 0`, which implies, `dh = 0`, which implies,

Now, in numerical process, we find the temperature value for which dh = 0. That is `(dh)/(dT) = 0`

To get the value of temperature at which enthalphy change between reactants and products is zero is achieved through Newton Raphson's technique.

Similarly, in case of constant volume process, `dV = 0`. First law of thermodynamics becomes, `dQ = dU`, change in internal energy. And as it is an insulated system, `dU = 0`

From ideal gas equation, pV = nRT, where n is number of moles of considered gas, R is universal gas constant (8.314 kJ/(kmol.K)). Differentiating this equation, we get

`pdV + Vdp = nRdT` and as it is a constant volume process, `dV = 0`, after which equation becomes, `Vdp = nRdT`

So, now `dU = dh - nRdT` When we integrate this equation, we get,

dU = h(products) - n(products)*R*T(products) - (h(reactants)-n(reactants)*R*T(reactants)) = 0

In this case too, `(dh)/(dT) = 0` shoule be evaluated using Newton Raphson's technique. In case of constant volume, number of moles of products and reactants also need to be calculated.

The above mathematical expressions are solved using python. This is a numerical way of solving it. In case of analytical one, cantera directory is imported.

Cantera is a chemical kinetics tool, in which there are many thermodynamic processes and solvers to solve them. Cantera is used here to compare the numerical one with the anlytical one.

B. Chemical reaction:

The stoichiometric combustion reaction for methane fuel is,

`CH_4+2(O_2+3.76N_2) rightarrow CO_2 + 2H_2O + 7.52N_2`

This stoichiometric chemical reaction is used as a reference to classify rich and lean mixtures

A. Equivalence ratio:

It is the ratio of fuel-air ratio of the current chemical reaction to the fuel air ratio of stoichiometric reaction, denoted by `phi`

`phi = ((F/A)_(current))/(F/A)_(std)` where `(F/A)_(std) = 1/2`

Therefore, `phi/2 = (F/A)_(current)`

Now, based on the requirement, the fuel-air ratio can be varies. When Fuel is more or when air is less, `phi`value will be greater than one, which is called as a Rich mixture and similary, when fuel is less or air is more, `phi`value will be less than one, in which case, the mixture is called as Lean mixture.

1. AFT variation with equivalence ratio in case of constant volume process:

In this, the effect of equivalence ratio on AFT is studied. AFT is calculated by finding the value of T, for which dh would be zero, using Newton Raphson method for a set of values of `phi`. Similarly, the analytical AFT calculation is alson done using Cantera and both the plots of AFT versus equivalence ratio are plotted on a single figure.

In the code, we defined a function for enthalpy and for h, `f(T,phi)`) and also `fprime(T,phi)`. Using a guess value for T, `(dh)/(dT)` is found out using Newton Raphson technique, for each value of equivalence ratio.

NOTE: In the code, the number of moles of fuel is altered.

When the number of moles of fuel required is low (`phi<1`), some part of oxygen will be in excess and that remains same in the products side. After balancing, the equation would then become,

```phi(CH_4) + 2(O_2 + 3.76N_2) rightarrow phiCO_2 + (2phi)H_2O + 2(1-phi)O_2 + 7.52N_2`

Similarly, when the fuel is excess, carbon-monoxide will form on the products side as enough air won't be available to form Carbon-di-oxide. After balancing, the equation would be,

`phi(CH_4) + 2(O_2 + 3.76N_2) rightarrow (4-3phi)CO_2 + (2phi)H_2O + 4(phi-1)CO + 7.52N_2`

As this is a constant volume process, change in internal energies should be zero, which are found by the expression, `U = h - nRT`. For which number of moles (n) is needed and that is calculated as well.

The `phi` values used are,

[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 ]

The python code to execute this is,

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

def h(T, coeffs):
	a1 = coeffs[0]
	a2 = coeffs[1]
	a3 = coeffs[2]
	a4 = coeffs[3]
	a5 = coeffs[4]
	a6 = coeffs[5]
	a7 = coeffs[6]

	R = 8.314 #kJ/(kmol.K)

	h = (a1 + (a2/2)*T + (a3/3)*pow(T,2) + (a4/4)*pow(T,3) + (a5/5)*pow(T,4) + (a6/T))*R*T
	return h

CH4_coeff_l = [5.14987613E+00,-1.36709788E-02,4.91800599E-05,-4.84743026E-08,1.66693956E-11,-1.02466476E+04,-4.64130376E+00]
O2_coeff_l = [3.78245636E+00,-2.99673416E-03,9.84730201E-06,-9.68129509E-09,3.24372837E-12,-1.06394356E+03,3.65767573E+00]
N2_coeff_l = [0.03298677E+02,0.14082404E-02,-0.03963222E-04,0.05641515E-07,-0.02444854E-10,-0.10208999E+04,0.03950372E+02]

CO2_coeff_h = [3.85746029E+00,4.41437026E-03,-2.21481404E-06,5.23490188E-10,-4.72084164E-14,-4.87591660E+04,2.27163806E+00]
H2O_coeff_h = [3.03399249E+00,2.17691804E-03,-1.64072518E-07,-9.70419870E-11,1.68200992E-14,-3.00042971E+04,4.96677010E+00]
N2_coeff_h = [0.02926640E+02,0.14879768E-02,-0.05684760E-05,0.10097038E-09,-0.06753351E-13,-0.09227977E+04,0.05980528E+02]
O2_coeff_h = [3.28253784E+00,1.48308754E-03,-7.57966669E-07,2.09470555E-10,-2.16717794E-14,-1.08845772E+03,5.45323129E+00]
CO_coeff_h = [2.71518561E+00,2.06252743E-03,-9.98825771E-07,2.30053008E-10,-2.03647716E-14,-1.41518724E+04,7.81868772E+00]

R = 8.314
T_std = 298.15

def f(T,phy):
	CH4_h = h(T_std,CH4_coeff_l)
	O2_h_r = h(T_std,O2_coeff_l)
	N2_h_r = h(T_std,N2_coeff_l)

	CO2_h = h(T,CO2_coeff_h)
	H2O_h = h(T,H2O_coeff_h)
	N2_h_p = h(T,N2_coeff_h)
	O2_h_p = h(T,O2_coeff_h)
	CO_h = h(T,CO_coeff_h)

	h_reactants = (phy*CH4_h) + 2*(O2_h_r + 3.76*N2_h_r)
	n_reactants = phy + 2*(1 + 3.76)

	if phy<=1:
		h_products = phy*CO2_h + (2*phy)*H2O_h + 7.52*N2_h_p + 2*(1-phy)*O2_h_p
		n_products = phy + 2*phy + 7.52 + 2*(1-phy)

	if phy>1:
		h_products = (4-(3*phy))*CO2_h + (2*phy)*H2O_h + 7.52*N2_h_p + 4*(phy-1)*CO_h
		n_products = 4-(3*phy) + 2*phy + 7.52 + 4*(phy-1)

	U_reactants = h_reactants - (n_reactants*R*T_std)
	U_products = h_products - (n_products*R*T)

	heat = (U_products - U_reactants)

	return heat

def fdash(T,phy):
	diff = (f(T+1e-6,phy)-f(T,phy))/(1e-6)
	return diff

tol = 0.001
alpha = 0.2
phy = np.linspace(0.1,2,num=20)
T_list = []
T_list2 = []
it = 0

for i in range(0,len(phy)):
	T_guess = 1500
	while(abs(f(T_guess,phy[i]))>tol):
		T_guess = T_guess - (f(T_guess,phy[i])/fdash(T_guess,phy[i])) 
		it = it + 1
	T_list2.append(it)
	T_list.append(T_guess)

print(T_list)
#print(T_list2)



T_list3 = []
gas = ct.Solution('gri30.xml')
for j in range(0,len(phy)):
	n_CH4 = phy[j]
	n_O2 = 2
	n_N2 = 7.52
	gas.TPX = 298.15,101325,{'CH4':n_CH4, 'O2':n_O2, 'N2':n_N2}
	gas.equilibrate('UV','auto')
	T_can = (gas.T)
	T_list3.append(T_can)

print(T_list3)

plt.plot(phy,T_list,'*-',color='red')
plt.plot(phy,T_list3,'o-',color='black')
plt.legend(["Numerical","Analytical (Cantera)"])
plt.xlabel('Equivalence ratio')
plt.ylabel('Adiabatic Flame Temperature (K)')
plt.title('Variation of AFT with Equivalence ratio')
plt.show()

Results:

When the above code is executed, the AFT values for numerical approach as well as for analytical approach (Cantera) gets printed, which are

A. AFT values in case of numerical approach:

[681.6845834435918, 1009.5528264466077, 1301.8703695713928, 1567.8621976713305, 1812.8759520063054, 2040.4161378571343, 2252.9810810446543, 2452.45989128195, 2640.3409853967078, 2817.8310216621585, 2704.167131197184, 2592.9540448078205, 2484.00520600668, 2377.1327930406137, 2272.147444132088, 2168.8580387468537, 2067.071394747841, 1966.5917881466792, 1867.2202281652349, 1768.7534352369323]

B. AFT values in case of analytical approach:

[679.6185875635002, 1009.4396888958642, 1300.749034297991, 1563.5555901537095, 1802.088789909619, 2018.372583549092, 2211.713985082432, 2377.513792657942, 2506.672869163832, 2585.8782667050814, 2600.539166550217, 2556.491324238801, 2484.065136996897, 2403.256251308026, 2321.0285509436376, 2239.550449185659, 2159.51535304297, 2081.1419124469744, 2004.483952641222, 1929.5327242242863]

When both of the above values are plotted with corresponding `phi` values, we get,

Inferences:

  • At low values of equivalence ratio, when it is less than one, meaning that when the fuel is less, AFT value is low, which makes sense because when the quantity of fuel is low, the combustion would be low and the heat generated would be low and so the maximum temperature reached by the system is low
  • Also, at low values of equivalence ratio, both numerical approach and analytical approach are very close to each other. This makes sense too, because the major difference between numerical approach and through Cantera is that there are many products formed after the combustion, which are 'carbon based'. Now, as the composition of fuel is low, the number of moles of these carbon based products will be low and so the maximum temperture reached by the system is close to each other in both cases
  • For the same reason mentioned above, when the equivalence ratio is large, fuel composition will be high and so quantitatively, carbon based products will be high and so there is much difference (relatively)

2. AFT calculation in case of constant pressure system when there is a heat loss:

In case of constant pressure process, the change in heat between two states will be equal to the change in enthalpies between the same two states. Now, the maximum possible heat loss would be the maximum energy that is available to get converted to some useful work i.e exergy.

This can be calculated from potential function, which talks about the 'energy potential' of the system that can be converted to some useful work. The reference is atmospheric temperature and pressure as nothing can go below these conditions (when the sink is atmosphere). And so, maximum heat that can be extracted will be, which is called Lower Heating Value,

`LHV = h_(pro) - h_(reac)`(both are at standard temperature (inlet temp.))

NOTE: Even though heat is a low grade energy, as this is a cyclic process, from first law of thermodynamics, `oint(dQ) = oint(dW)`

Now, LHV is the maximum heat that can be extracted from the system. In this project, a percentage of heat loss is considered and the effect of this on AFT is studied.

A. Effect of percentage of heat loss on AFT:

The logic here is similar to the one mentioned above, i.e finding the value of T for which `dh` will be zero, except that as there is a heat loss now, it will be added/subtracted from dh equation (the sign is just for direction, it can be changed considering reac - prod or prod - reac). So now the new equation would be,

`dh + x*LHV = 0`, where 'x' is a percentage factor.

The code to this is,

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

def h(T, coeffs):
	a1 = coeffs[0]
	a2 = coeffs[1]
	a3 = coeffs[2]
	a4 = coeffs[3]
	a5 = coeffs[4]
	a6 = coeffs[5]
	a7 = coeffs[6]

	R = 8.314 #kJ/(kmol.K)

	h = (a1 + (a2/2)*T + (a3/3)*pow(T,2) + (a4/4)*pow(T,3) + (a5/5)*pow(T,4) + (a6/T))*R*T
	return h

CH4_coeff_l = [5.14987613E+00,-1.36709788E-02,4.91800599E-05,-4.84743026E-08,1.66693956E-11,-1.02466476E+04,-4.64130376E+00]
O2_coeff_l = [3.78245636E+00,-2.99673416E-03,9.84730201E-06,-9.68129509E-09,3.24372837E-12,-1.06394356E+03,3.65767573E+00]
N2_coeff_l = [0.03298677E+02,0.14082404E-02,-0.03963222E-04,0.05641515E-07,-0.02444854E-10,-0.10208999E+04,0.03950372E+02]

CO2_coeff_h = [3.85746029E+00,4.41437026E-03,-2.21481404E-06,5.23490188E-10,-4.72084164E-14,-4.87591660E+04,2.27163806E+00]
H2O_coeff_h = [3.03399249E+00,2.17691804E-03,-1.64072518E-07,-9.70419870E-11,1.68200992E-14,-3.00042971E+04,4.96677010E+00]
N2_coeff_h = [0.02926640E+02,0.14879768E-02,-0.05684760E-05,0.10097038E-09,-0.06753351E-13,-0.09227977E+04,0.05980528E+02]
O2_coeff_h = [3.28253784E+00,1.48308754E-03,-7.57966669E-07,2.09470555E-10,-2.16717794E-14,-1.08845772E+03,5.45323129E+00]
CO_coeff_h = [2.71518561E+00,2.06252743E-03,-9.98825771E-07,2.30053008E-10,-2.03647716E-14,-1.41518724E+04,7.81868772E+00]

R = 8.314
T_std = 298.15

def f(T,H_loss):
	CH4_h = h(T_std,CH4_coeff_l)
	O2_h_r = h(T_std,O2_coeff_l)
	N2_h_r = h(T_std,N2_coeff_l)

	CO2_h = h(T,CO2_coeff_h)
	H2O_h = h(T,H2O_coeff_h)
	N2_h_p = h(T,N2_coeff_h)
	O2_h_p = h(T,O2_coeff_h)
	CO_h = h(T,CO_coeff_h)

	CO2_LHV = h(T_std,CO2_coeff_h)
	H2O_LHV = h(T_std,H2O_coeff_h)
	N2_h_LHV = h(T_std,N2_coeff_h)
	O2_h_LHV = h(T_std,O2_coeff_h)
	CO_LHV = h(T_std,CO_coeff_h)

	h_reactants = (CH4_h) + 2*(O2_h_r + 3.76*N2_h_r)
	n_reactants = 1 + 2*(1 + 3.76)

	h_products = CO2_h + 2*H2O_h + 7.52*N2_h_p
	n_products = 1 + 2 + 7.52

	h_LHV_r = CH4_h + 2*(O2_h_r + 3.76*N2_h_r)
	h_LHV_p = CO2_LHV + 2*H2O_LHV + 7.52*N2_h_LHV
	LHV = h_LHV_r - h_LHV_p

	heat = (h_reactants - h_products) - LHV*H_loss

	#U_reactants = h_reactants - (n_reactants*R*T_std)
	#U_products = h_products - (n_products*R*T)
	return heat

def fdash(T,H_loss):
	diff = (f(T+1e-6,H_loss)-f(T,H_loss))/(1e-6)
	return diff

tol = 0.001
alpha = 0.2
H_loss = np.linspace(0,1,num=10)
T_list = []
T_list2 = []
it = 0

for i in range(0,len(H_loss)):
	T_guess = 1500
	while(abs(f(T_guess,H_loss[i]))>tol):
		T_guess = T_guess - (f(T_guess,H_loss[i])/fdash(T_guess,H_loss[i])) 
		it = it + 1
	T_list2.append(it)
	T_list.append(T_guess)

print(T_list)

plt.plot(H_loss*100,T_list,'*-',color='black')
plt.xlabel('Percentage of heat loss')
plt.ylabel('Adiabatic Flame Temperature (K)')
plt.title('Variation of AFT with percentage of heat loss')
plt.show()

Results:

When executed the above code, the AFT values gets printed, which are

[2325.598129759047, 2123.5142515822254, 1918.8550989079642, 1710.9027632605362, 1498.6907887452521, 1280.8947766056706, 1055.6460908602867, 820.1902837472652, 570.1962804059219, 298.1500000007594]

The AFT variation with percentage of heat loss or heat loss is (both would be same),

Inferences:

  • Adiabatic Flame Temperature keeps on decreasing as the heat loss increases, because as the heat loss increases, entropy decreases, kinetic energy of gas molecules decreases, which is the temperature
  • When there is 100% heat loss, the temperature is at standard atmospheric temperature at 298.15 K and similarly at 0% heat loss, it is the maximum an insulated system can reach. There is almost a linear trend of decrement, this can be because, for ideal gas enthalpy and internal enrgies are the direct functions of temperature
  • So, when a high temperature is needed inside the system, heat loss should be as low as possible (well insulated), as when the maximum temperature is high, efficiency will be high, as more heat can be converted to work

3. Value of AFT for methane fuel at 35% heat loss (constant pressure process):

The code for this will be same as the one above, except that only one value of heat loss percentage is given input, 0.35. When the code is executed, the value of AFT is printed out, which is 1679.370162048969 K

4. Variation of AFT for number of carbon atoms in an alkane molecule:

For this case too, constant pressure process is considered. The alkane molecules considered are, methane, ethane and propane. The reaction equations are,

For methane, `CH_4 + 2(O_2 + 3.76N_2) rightarrow CO_2 + 2H_2O + 7.52N_2`

For ethane, `C_2H_6 + (7/2)(O_2 + 3.76N_2) rightarrow 2CO_2 + 3H_2O + (3.76)(7/2)N_2`

For propane, `C_3H_8 + 5(O_2 + 3.76N_2) rightarrow 3CO_2 + 4H_2O + (3.76)(5)N_2`

NOTE: For this case, heat loss is considered zero

The code to find the variation of AFT for number of carbon carbon bonds in an alkane molecule is,

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

def h(T, coeffs):
	a1 = coeffs[0]
	a2 = coeffs[1]
	a3 = coeffs[2]
	a4 = coeffs[3]
	a5 = coeffs[4]
	a6 = coeffs[5]
	a7 = coeffs[6]

	R = 8.314 #kJ/(kmol.K)

	h = (a1 + (a2/2)*T + (a3/3)*pow(T,2) + (a4/4)*pow(T,3) + (a5/5)*pow(T,4) + (a6/T))*R*T
	return h

CH4_coeff_l = [5.14987613E+00,-1.36709788E-02,4.91800599E-05,-4.84743026E-08,1.66693956E-11,-1.02466476E+04,-4.64130376E+00]
O2_coeff_l = [3.78245636E+00,-2.99673416E-03,9.84730201E-06,-9.68129509E-09,3.24372837E-12,-1.06394356E+03,3.65767573E+00]
N2_coeff_l = [0.03298677E+02,0.14082404E-02,-0.03963222E-04,0.05641515E-07,-0.02444854E-10,-0.10208999E+04,0.03950372E+02]

CO2_coeff_h = [3.85746029E+00,4.41437026E-03,-2.21481404E-06,5.23490188E-10,-4.72084164E-14,-4.87591660E+04,2.27163806E+00]
H2O_coeff_h = [3.03399249E+00,2.17691804E-03,-1.64072518E-07,-9.70419870E-11,1.68200992E-14,-3.00042971E+04,4.96677010E+00]
N2_coeff_h = [0.02926640E+02,0.14879768E-02,-0.05684760E-05,0.10097038E-09,-0.06753351E-13,-0.09227977E+04,0.05980528E+02]

C2H6_coeff_l = [4.29142492E+00, -5.50154270E-03, 5.99438288E-05, -7.08466285E-08, 2.68685771E-11,-1.15222055E+04, 2.66682316E+00]
C3H8_coeff_l = [0.93355381E+00, 0.26424579E-01, 0.61059727E-05, -0.21977499E-07, 0.95149253E-11, -0.13958520E+05, 0.19201691E+02]

R = 8.314
T_std = 298.15

def f(T,x):
	CH4_h = h(T_std,CH4_coeff_l)
	O2_h_r = h(T_std,O2_coeff_l)
	N2_h_r = h(T_std,N2_coeff_l)

	CO2_h = h(T,CO2_coeff_h)
	H2O_h = h(T,H2O_coeff_h)
	N2_h_p = h(T,N2_coeff_h)

	C2H6_h = h(T_std,C2H6_coeff_l)
	C3H8_h = h(T_std,C3H8_coeff_l)

	if x == 1:
		h_reactants_CH4 = (CH4_h) + 2*(O2_h_r + 3.76*N2_h_r)
		h_products_CH4 = CO2_h + 2*H2O_h + 7.52*N2_h_p
		heat = h_products_CH4 - h_reactants_CH4
	if x == 2:
		h_reactants_C2H6 = (C2H6_h) + (7/2)*(O2_h_r + 3.76*N2_h_r)
		h_products_C2H6 = 2*CO2_h + 3*H2O_h + (7/2)*(3.76)*N2_h_p
		heat = h_products_C2H6 - h_reactants_C2H6
	if x == 3:
		h_reactants_C3H8 = (C3H8_h) + 5*(O2_h_r + 3.76*N2_h_r)
		h_products_C3H8 = 3*CO2_h + 4*H2O_h + 5*3.76*N2_h_p
		heat = h_products_C3H8 - h_reactants_C3H8
	return heat

def fdash(T,x):
	diff = (f(T+1e-6,x)-f(T,x))/(1e-6)
	return diff

tol = 0.001
alpha = 0.2
x = [1,2,3]
T_list = []
it = 0

for i in range(0,len(x)):
	T_guess = 1500
	while(abs(f(T_guess,x[i]))>tol):
		T_guess = T_guess - (f(T_guess,x[i])/fdash(T_guess,x[i])) 
		it = it + 1
	T_list.append(T_guess)

print(T_list)

plt.bar(['Methane','Ethane','Propane'],[T_list[0],T_list[1],T_list[2]],color='green')
plt.xlabel('Hydrocarbons')
plt.ylabel('Adiabatic Flame Temperature (K)')
plt.title('AFT comparison for single, double and triple bonded alkanes')
plt.show()

Results:

When we execute the above code, the AFT values for methane, ethane and propane are printed which are, 2325.6 K, 2379.8 K, 2392.1 K respectively, and the plot is as follows,

Inferences:

  • It can be clearly seen that as the number of carbon - carbon bonds increases, the maximum temperature the system can reach is increasing. This is because of increase in number of carbon - carbon covalent bonds, decrease in number of carbon - hydrogen bonds. Carbon - hydrogen bonds are relatively stronger than carbon - carbon bonds, so when there are more carbon - hydrogen bonds, it takes more energy (relatively) to break them. Now, as there is an increment in carbon - carbon bonds, there is decrement in carbon - hydrogn bonds and so more energy is there to heat up the system and so more is AFT

5. Effect of alkane, alkene and alkyne double bonded fuels on AFT:

In this case too, the process is of constant pressure. And the heat loss is considered zero. The combustion reactions are,

for ethane, `C_2H_6 + (7/2)(O_2 + 3.76N_2) rightarrow 2CO_2 + 3H_2O + (3.76)(7/2)N_2`

for ethene, `C_2H_4 + 3(O_2 + 3.76N_2) rightarrow 2CO_2 + 2H_2O + (3)(3.76)N_2`

for ethyne, `C_2H_2 + (5/2)(O_2 + 3.76N_2) rightarrow 2CO_2 + H_2O + (5/2)(3.76)N_2`

The python code to execute this is,

import matplotlib.pyplot as plt
import math

def h(T, coeffs):
	a1 = coeffs[0]
	a2 = coeffs[1]
	a3 = coeffs[2]
	a4 = coeffs[3]
	a5 = coeffs[4]
	a6 = coeffs[5]
	a7 = coeffs[6]

	R = 8.314 #kJ/(kmol.K)

	h = (a1 + (a2/2)*T + (a3/3)*pow(T,2) + (a4/4)*pow(T,3) + (a5/5)*pow(T,4) + (a6/T))*R*T
	return h


O2_coeff_l = [3.78245636E+00,-2.99673416E-03,9.84730201E-06,-9.68129509E-09,3.24372837E-12,-1.06394356E+03,3.65767573E+00]
N2_coeff_l = [0.03298677E+02,0.14082404E-02,-0.03963222E-04,0.05641515E-07,-0.02444854E-10,-0.10208999E+04,0.03950372E+02]

C2H6_coeff_l = [4.29142492E+00,-5.50154270E-03,5.99438288E-05,-7.08466285E-08,2.68685771E-11,-1.15222055E+04,2.66682316E+00]
C2H4_coeff_l = [3.95920148E+00,-7.57052247E-03,5.70990292E-05,-6.91588753E-08,2.69884373E-11,5.08977593E+03,4.09733096E+00]
C2H2_coeff_l = [8.08681094E-01,2.33615629E-02,-3.55171815E-05,2.80152437E-08,-8.50072974E-12,2.64289807E+04,1.39397051E+01]

CO2_coeff_h = [3.85746029E+00,4.41437026E-03,-2.21481404E-06,5.23490188E-10,-4.72084164E-14,-4.87591660E+04,2.27163806E+00]
H2O_coeff_h = [3.03399249E+00,2.17691804E-03,-1.64072518E-07,-9.70419870E-11,1.68200992E-14,-3.00042971E+04,4.96677010E+00]
N2_coeff_h = [0.02926640E+02,0.14879768E-02,-0.05684760E-05,0.10097038E-09,-0.06753351E-13,-0.09227977E+04,0.05980528E+02]

R = 8.314 #kJ/(kmol.K)
T_std = 298.15

def f(T,x):
	O2_h = h(T_std,O2_coeff_l)
	N2_h_r = h(T_std,N2_coeff_l)

	CO2_h = h(T,CO2_coeff_h)
	H2O_h = h(T,H2O_coeff_h)
	N2_h_p = h(T,N2_coeff_h)

	C2H6_h = h(T_std, C2H6_coeff_l)
	C2H4_h = h(T_std, C2H4_coeff_l)
	C2H2_h = h(T_std, C2H2_coeff_l)

	CO2_h_LHV = h(T_std,CO2_coeff_h)
	H2O_h_LHV = h(T_std,H2O_coeff_h)
	N2_h_p_LHV = h(T_std,N2_coeff_h)

	if x==0:
		#Ethane
		h_reactants = C2H6_h + (7/2)*(O2_h + 3.76*N2_h_r)
		h_products = 2*CO2_h + 3*H2O_h + 3.76*(7/2)*N2_h_p

		LHV_r = h_reactants
		LHV_p = 2*CO2_h_LHV + 3*H2O_h_LHV + 3.76*(7/2)*N2_h_p_LHV
		LHV = LHV_r - LHV_p

		heat = (h_reactants - h_products) - (LHV*0.35)

	if x==1:
		#Ethene
		h_reactants = C2H4_h + 3*(O2_h + 3.76*N2_h_r)
		h_products = 2*CO2_h + 2*H2O_h + 3*3.76*N2_h_p

		LHV_r = h_reactants
		LHV_p = 2*CO2_h_LHV + 2*H2O_h_LHV + 3*3.76*N2_h_p_LHV
		LHV = LHV_r - LHV_p

		heat = (h_reactants - h_products) - (LHV*0.35)

	if x==2:
		#Ethyne
		h_reactants = C2H2_h + (5/2)*(O2_h + 3.76*N2_h_r)
		h_products = 2*CO2_h + H2O_h + (5/2)*3.76*N2_h_p

		LHV_r = h_reactants
		LHV_p = 2*CO2_h_LHV + H2O_h_LHV + (5/2)*3.76*N2_h_p_LHV
		LHV = LHV_r - LHV_p

		heat = (h_reactants - h_products) - (LHV*0.35)
	
	return heat

def fdash(T,x):
	diff = (f(T+1e-6,x)-f(T,x))/(1e-6)
	return diff

tol = 0.001
alpha = 1
T_list = []
it = 0
x = [0,1,2]

for i in range(0,3):
	T_guess = 1500
	while(abs(f(T_guess,x[i]))>tol):
		T_guess = T_guess - (f(T_guess,x[i])/fdash(T_guess,x[i])) 
		it = it + 1
	T_list.append(T_guess)

print(T_list)

plt.bar(['Ethane','Ethene','Ethyne'],[T_list[0],T_list[1],T_list[2]],color='brown')
plt.title('Adiabatic Flame Temperature for double bonded hydrocarbons')
plt.show()

Results:

When the above code is executed, the values of AFT for ethane, ethene and ethyne are printed, which are, 1714.7 K, 1837.5 K and 2065.4 K respectively.

The plot is as follows,

Inferences:

  • The AFT value is increasing as number of carbon - hydrogen bonds are decreasing and for the reason mentioned above, that is carbon - hydrogen bonds are stronger tha carbon - carbon bonds (though both are covalent) and it takes more energy to break the former. So, as there is a decrement in number of C-H bonds, more energy is available to heat up the system and so more is AFT

Conclusions:

  1. At small values of equivalence ratio, there is not much difference in AFT values, between numerical and analytical (cantera) approach. At higher values though, there is significant deviation
  2. AFT varies almost linearly with heat loss and when heat loss is more, AFT value is less and vice-versa
  3. The value of AFT for constant pressure process, when the heat loss is 0.35 times the maximum heat loss is ~ 1679.4 K
  4. When number of carbon atoms increases in an alkane molecule, AFT increases (as C-H bonds decreases)
  5. In case of double bonded alkane, alkene and alkyne molecules (ethane, ethene and ethyne), for the reasons mentioned, AFT is more for ethyne, and then for ethene and ethane
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.