6.1 Basics of combustion process

Most of the energy we use today are based on a chemical reaction called combustion. Combustion process requires a fuel, basically a hydrocarbon and  oxidant (air or oxygen). Fuel and oxidants together called reactants. When a chemical reaction occurs, the bonds within molecules of the reactants are broken, and atoms and electrons rearrange to form products. In combustion reactions, rapid oxidation of combustible elements of the fuel results in energy release as combustion products are formed. Fuel is mostly made of Hydrogen and Carbon atoms, but some Sulfur and other trace elements can also existed. In solid fuels also non-combustible elements can exist. They can form solids after combustion which is called ash. Combustion is complete when carbon atoms burned to carbondioxide, hydrogen atoms burned to water and sulfur atoms burned to sulfurdioxide, and all other combustible elements are fully oxidized.  When this condition is not fulfilled combustion is incomplete. Combustion reaction can be summarized as

Reactants  à Products  or  fuel+oxidizeràProducts

As an oxidizer usuakky air is used, except special cases like requirement of high temperatures. Air is a complex mixture of several gases. Air composition is given in table 6.1.1

Table 6.1.1 Composition of atmospheric air

Name

Formula

Mol %

Nitrogen

N2

78.084

Oxygen

O2

20.946

Argon

Ar

0.9340

Carbondioxide

CO2

0.0397

Neon

Ne

0.001818

Helium

He

0.000524

Methane

CH4

0.000179

Water vapor

H2O

0.00001-0.05

 

As it is seen from the table major elements in composition is nitrogen, oxygen and argon. As another simplification, we usually ignore argon as well and assume air composition as 79 % N2 and 21% O2 or per kmole of O2 79/21=3.761905 kmol of N2 per kmole of oxygen. Nitrogen is noncombustible in normal conditions, but it can be converted to nitrous oxides in relatively small quantities. These are not significant in energy balance, but has big enviromental effects.

It is customary to write the reaction formula with one kmol of fuel input in reactions such as: CH4 or (0.9CH4+0.2C2H6). When combustion is complete and there are no excess oxygen in products this type of reactions are called stoichiometric reactions. As an example reaction, stoichiometric combustion  reaction of methane(CH4) can be given as follows:

CH4+2(O2+3.761905 N2)àCO2+2H2O+7.52381N2

 

As it is seen from the equation, amount of nitrogen entered into reaction is emerged exactly the same amount in products, oxygen is not existed in products and carbon burned to carbondioxide and hydrogen burned to water. Amounts of chemicals appeared in products are depends on the mass balances of the atoms. Number of atomsa re conserved in reaction, so product mol numbers of molecules are depends on the number of atoms in reactants. In above reaction one  carbon atom went into the reactions, therefore one carbondioxide appears in products, and 4 hydrogen atom went into reaction so two water molecules are emerged as a result. From emerging CO2 and H2O, required O2 in the oxydant can be calculated to be 2 from O atomic balance

O balance ; 2x=2+2  x=2

Amount of air going into the reaction is important concept in combustion. For the above reaction

Amount of air per kmol of fuel=2*(1+ 3.761905 )=9.52381 kmol air/kmol fuel. Enthalpy definition for combustion process usually taken 298.16 degree K(25 degree C) as reference point. Furthermore a state of enthalpy existed due to chemical potentials of reactions. During a chemical reacton, some chemical bonds are broken, and a new ones are formed. The chemical energy associated with these bonds are in general is different. The energy level due to chemical reactions at the reference temperature of 298.16 K is called enthalpy of formation. Since the temperature in this defination is constatnt, it can be given as a single reference value for each molecules in reaction. So enthalpy of a molecule going into the reaction calculated as:

where is formation enthalpy and is the total enthalpy used in chemical reaction processes. The first law of thermodynamic for a combustion states than

  (6.1.1)

 

In this equation potential and kinetic energy terms are ignored, equation simplified as:

   (6.1.2)

The work term is only apply to fuel cell type applications. If only a combustion chamber is considered, work term can be considered zero and heat transfer of a combustion reaction becomes:

   (6.1.3)

when Ni is the mol numbers of the molecules going into the reactions. Second hand side of the equation is the enthalpy of the reaction

,  (6.1.4)

similarly entropy of the reaction can be written as

  (6.1.5)

   (6.1.6)

   (6.1.7)

Gibbs free energy of reaction:

   (6.1.8)

   (6.1.9)

As a first example heat transfer for a reaction is calculated by using polynomial eqautions as a base for Cp as:

 

 Program 6.1.1 CH4 fuel combustion calculated in excel by using a 4th degree polynomial functions

Combustion

 

a

b

c

d

e

f

hf

CH4

1.9399E+01

6.5653E-02

-1.4662E-05

-6.3296E-10

5.8194E-13

-5.1165E-17

-7.4850E+04

O2

2.6756E+01

1.1507E-02

-4.8733E-06

1.2462E-09

-1.6495E-13

8.8224E-18

0.0000E+00

N2

2.7946E+01

3.6088E-03

2.1541E-06

-1.4913E-09

2.9670E-13

-1.9491E-17

0.0000E+00

CO2

2.3852E+01

5.4070E-02

-3.1694E-05

9.2267E-09

-1.2969E-12

7.0209E-17

-3.9352E+05

H2O

3.1748E+01

4.9577E-03

7.9500E-06

-4.0642E-09

7.1971E-13

-4.4041E-17

-2.4182E+05

 

T

T*T

T^3

T^4

T^5

T^6

Tref

2.9816E+02

8.8899E+04

2.6506E+07

7.9031E+09

2.3564E+12

7.0258E+14

Tr

2.9816E+02

8.8899E+04

2.6506E+07

7.9031E+09

2.3564E+12

7.0258E+14

Tp

1.0000E+03

1.0000E+06

1.0000E+09

1.0000E+12

1.0000E+15

1.0000E+18

 

Ni

hi

hi+hf

Hi

R

CH4

1.0000E+00

0.0000E+00

-7.4850E+04

-7.4850E+04

 

 

O2

2.0000E+00

0.0000E+00

0.0000E+00

0.0000E+00

 

 

N2

7.5238E+00

0.0000E+00

0.0000E+00

0.0000E+00

-7.4850E+04

P

CO2

1.0000E+00

3.3170E+04

-3.6035E+05

-3.6035E+05

 

 

H2O

2.0000E+00

2.6226E+04

-2.1559E+05

-4.3119E+05

 

 

O2

0.0000E+00

2.2722E+04

2.2722E+04

0.0000E+00

 

 

N2

7.5238E+00

2.1633E+04

2.1633E+04

1.6277E+05

-6.2877E+05

Q

-5.539225E+05

 

To check the accuracy the same calculation can be repeated in java environment

Program 6.1.2 CH4 fuel combustion calculated in java by using a 4th degree polynomial functions

public class reactiontest3

{

 

static double ht(int i,double T)

{ double Tr=298.16;

double R=8.3145;

double C[][]=

{{1.939869186926E+01,6.565333278907E-02,-1.466182490573E-05,-6.329616609155E-10,5.819409563279E-13,-5.116465644319E-17},

 {2.675596850695E+01,1.150718911476E-02,-4.873333185805E-06,1.246226000157E-09,-1.649499826041E-13,8.822371434893E-18},

 {2.794626725797E+01,3.608818970753E-03,2.154061888770E-06,-1.491279827848E-09,2.967027913986E-13,-1.949118588911E-17},

 {2.385184692766E+01,5.407033093625E-02,-3.169416460166E-05,9.226660264546E-09,-1.296877816241E-12,7.020934713906E-17},

 {3.174807138649E+01,4.957708828333E-03,7.949985639501E-06,-4.064180760029E-09,7.197141669681E-13,-4.404120668938E-17}};

 double hf[]={-74850.0,0.0,0.0,-393520.0,-241820.0};

 double hh=(C[i][0]*(T-Tr)+C[i][1]/2.0*(T*T-Tr*Tr)+C[i][2]/3.0*(T*T*T-Tr*Tr*Tr)+C[i][3]/4.0*(T*T*T*T-Tr*Tr*Tr*Tr)+C[i][4]/5.0*(T*T*T*T*T-Tr*Tr*Tr*Tr*Tr)+C[i][5]*(T*T*T*T*T*T-Tr*Tr*Tr*Tr*Tr*Tr))+hf[i];

 return hh;

}

public static void main(String arg[])

{

String s[]={"ch4","o2","n2","co2","h2o"};

 

double N[][]={{1.0,0.0},{2.0,0.0},{7.523809524,7.523809524},{0.0,1.0},{0.0,2.0}};

double Tproduct=1000.0;//degree K

double Treactant=298.16;//degree K

int k=s.length;

double Qproduct=0;

double Qreactant=0;

for(int i=0;i<k;i++)

{  Qproduct+=N[i][1]*ht(i,Tproduct);}

for(int i=0;i<k;i++)

{ Qreactant+=N[i][0]*ht(i,Treactant);}

double Q=Qproduct-Qreactant;

System.out.println("Q="+Q+" kW");   

}}

 

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" reactiontest3

Q=-553984.3967321854 kW

 

> Terminated with exit code 0.

 

Now we can calculate the same result with partially continious curve fitting functions defined in Gas.java class

Program 6.1.3 CH4 fuel combustion calculated in java by using partial continous polynomial curve fitting with Gas class

 public class reactiontest1

{

public static void main(String arg[])

{

String s[]={"ch4","o2","n2","co2","h2o"};

double N[][]={{1.0,0.0},{2.0,0.0},{7.523809524,7.523809524},{0.0,1.0},{0.0,2.0}};

double Tproduct=1000.0;//degree K

double Treactant=298.16;//degree K

int k=s.length;

Gas g[]=new Gas[k];

for(int i=0;i<k;i++)

{g[i]=new Gas(s[i]);

}

double Qproduct=0;

double Qreactant=0;

for(int i=0;i<k;i++)

{Qproduct+=N[i][1]*g[i].ht(Tproduct);}

for(int i=0;i<k;i++)

{Qreactant+=N[i][0]*g[i].ht(Treactant);}

double Q=Qproduct-Qreactant;

System.out.println("Q="+Q);

}}

 

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" reactiontest1

Q=-555419.69706795

 

> Terminated with exit code 0.

As it is seen from the results there are the difference in results. To check accuracy the same program can also be run by using cubic spline curve fitting version of the ideal gas equation of state.

Program 6.1.4 CH4 fuel combustion calculated in java by using cubic spline curve fitting with GasCS class

 public class reactiontest1CS

{

public static void main(String arg[])

{

String s[]={"ch4","o2","n2","co2","h2o"};

double N[][]={{1.0,0.0},{2.0,0.0},{7.523809524,7.523809524},{0.0,1.0},{0.0,2.0}};

double Tproduct=1000.0;//degree K

double Treactant=298.16;//degree K

int k=s.length;

GasCS g[]=new GasCS[k];

for(int i=0;i<k;i++)

{g[i]=new GasCS(s[i]);

}

double Qproduct=0;

double Qreactant=0;

for(int i=0;i<k;i++)

{Qproduct+=N[i][1]*g[i].ht(Tproduct);}

for(int i=0;i<k;i++)

{Qreactant+=N[i][0]*g[i].ht(Treactant);}

double Q=Qproduct-Qreactant;

System.out.println("Q="+Q);

}             

}

 

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" reactiontest1CS

Q=-555425.1381705669

 

> Terminated with exit code 0.

The results indicated that partially continious curve fitting and cubic spline curve fitting function results are close enough so both can be utilized for practical purposes, but single polynomial curve fitting error levels indicates to be bigger.

What would happened if combustion product teperature is 298.16 K as well? The value obtained for this case is called heating value of the fuel. Result by using program 6.1.4 will be

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" reactiontest1CS

Q=-802300.9008195192

 

> Terminated with exit code 0.

There is only one problem here, at 298.16 K the water in product will condense to liquid form, therefore the enthalpy of evaporation should also be considered (of course at 298.16 K value) in the equation

 

Program 6.1.5 CH4 fuel heating value calculated in java by using cubic spline curve fitting with GasCS class with liquid water exit

 public class reactiontest2CS

{

public static void main(String arg[])

{

String s[]={"ch4","o2","n2","co2","h2ol"};

double N[][]={{1.0,0.0},{2.0,0.0},{7.523809524,7.523809524},{0.0,1.0},{0.0,2.0}};

double Tproduct=298.16;//degree K

double Treactant=298.16;//degree K

int k=s.length;

GasCS g[]=new GasCS[k];

for(int i=0;i<k;i++)

{g[i]=new GasCS(s[i]);

}

double Qproduct=0;

double Qreactant=0;

for(int i=0;i<k;i++)

{Qproduct+=N[i][1]*g[i].ht(Tproduct);}

for(int i=0;i<k;i++)

{Qreactant+=N[i][0]*g[i].ht(Treactant);}

double Q=Qproduct-Qreactant;

System.out.println("Q="+Q);

}             

}

 

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" reactiontest2CS

Q=-890308.9008195192

 

> Terminated with exit code 0.

 

As it is seen from the result the value is higher now. Logically at this temperature range water should condense in the product, therefore the second result is the actual value of maximum possible heat transfer from a combustion reaction. It is called higher heating value. For commercial purposes, people also use the first assumption (vapor phase of the water output at 298.16 K) and it is called lower heating value. By taking referance point of lower heating value and condensing type boilers some manufacturers claims that their boiler efficiency is more than 100%., which is of course a false claim.

 

Another limit in combustion is adiabatic flame temperature.  If combustion gases is heated by the reaction and no heat is ejected from the reaction, products will reach to a maximum temperature with zero heat transfer . This limit is called adiabatic flame temperature.  Curve fitting should applied to find this limit value.

 

Program 6.1.6 CH4 adiabatic flame temperature calculated in java by using bisection curve fitting with Gas class

 import javax.swing.*;

public class reactiontest4

{

public static double Q(String s[],double N[][],double Treactant,double Tproduct)

{int k=s.length;

Gas g[]=new Gas[k];

for(int i=0;i<k;i++)

{g[i]=new Gas(s[i]);

}

double Qproduct=0;

double Qreactant=0;

for(int i=0;i<k;i++)

{Qproduct+=N[i][1]*g[i].ht(Tproduct);}

for(int i=0;i<k;i++)

{Qreactant+=N[i][0]*g[i].ht(Treactant);}

double Q=Qproduct-Qreactant;

return Q;

}

 

public static double Tadiabatic(String s[],double N[][],double Treactant,double Tproduct_low,double Tproduct_high)

{

//bisection root finding method

double xl=Tproduct_low;

double xu=Tproduct_high;

double test;

double xr=0;

double es,ea;

double fxl,fxr;

int maxit=100,iter=0;

es=0.0000001;

ea=1.1*es;

while((ea>es)&&(iter<maxit))

{

    xr=(xl+xu)/2.0;

    iter++;

    if((xl+xu)!=0)

        { ea=Math.abs((xu-xl)/(xu+xl))*100;}

    fxl= Q(s,N,Treactant,xl);

    fxr= Q(s,N,Treactant,xr);

    test= fxl*fxr;

    if(test==0.0)      ea=0;

    else if(test<0.0)  xu=xr;

    else              {xl=xr;}

}

if(iter>=maxit) JOptionPane.showMessageDialog(null,"Maximum number of iteration is exceeded \n"+

   " result might not be valid","MAKSİMUM NUMBER OF ITERATION WARNING",JOptionPane.WARNING_MESSAGE);

return xr;

}

 

 

public static void main(String arg[])

{

String s[]={"ch4","o2","n2","co2","h2o"};

double N[][]={{1.0,0.0},{2.0,0.0},{7.523809524,7.523809524},{0.0,1.0},{0.0,2.0}};

double Tproduct=1000.0;//degree K

double Treactant=298.16;//degree K

double Tadiabatic=Tadiabatic(s,N,Treactant,298.16,3000.0);

double Q=Q(s,N,Treactant,Tadiabatic);

System.out.println("Tadiabatic="+Tadiabatic);

System.out.println("Q="+Q);

}             

}

 

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" reactiontest4

Tadiabatic=2326.6911578521513

Q=-2.3041048552840948E-4

 

> Terminated with exit code 0.

 

In order to make this calculations more formal, a chemical reaction class is created and listed in appendix 8.1 By using this class we can give the gas composition directly or it can be read from a file called Reaction.txt  through a given reaction name.

 

Program 6.1.7 CH4 combustion calculated in java by using class chemicalReaction in A8.1

 import javax.swing.*;

import java.io.*;

 

public class reactiontest6

{

public static void main(String arg[]) throws IOException

{

String s[]={"ch4","o2","co2","h2o","n2"};

double N[][]={{1.0,0.0},{2.0,0.0},{0.0,1.0},{0.0,2.0},{2.0*79/21,2.0*79/21}};

double Tproduct=1000.0;//degree K

double Treactant=298.15;//degree K

chemicalReaction cr=new chemicalReaction("CH4 combustion",s,N);

cr.print(Treactant,Tproduct);

}             

}

 

 

A common thing we have done so far, is used the general reaction concepts. In doing so we have to give all coefficients of the reaction. Combustion is a special chemical raction and it happens between a fuel and oxydant(normally air), therefore, instead of giving all constants, fuel combination and amount of air can be given to maket he basic calculations. A class called combustion is developed for this purpose and program list is given in appendix 8.2. Let us try program in the same example program.

 

Program 6.1.8 CH4 adiabatic flame temperature and reaction calculated in java by using class combustion in A8.2

import javax.swing.*;

import java.io.*;

 

public class combustiontest

{

public static void main(String arg[])

{

String s[]={"ch4"};

double N[]={1.0};

double a_f=1.0;

double Tproduct=1000.0;//degree K

double Tfuel=298.16;//degree K

double Tair=298.16;//degree K

combustion cc=new combustion("CH4 combustion",s,N,a_f);

System.out.println(cc.toString());

double Tadiabatic=cc.Taf(Tfuel,Tair,298.16,3000.0);

double Q=cc.H(Tfuel,Tair,Tproduct);

System.out.println("Tadiabatic="+Tadiabatic);

System.out.println("Q="+Q);

}}

 

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" combustiontest

[CH4] + 2.0000*[ O2 + (79/21) *N2] --> CO2 + 2.0000 H2O + 7.5238 N2

Tadiabatic=2326.691141496301

Q=-555419.6970720381

 

> Terminated with exit code 0.

 

More complex reactions can also be given. For example 10% excess air for 90% ch4 and 10% c2h6 fuel will give:

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" combustiontest

[0.9000 CH4 + 0.1000 C2H6] + 2.3650*[ O2 + (79/21) *N2] --> 1.1000 CO2 + 2.1000 H2O + 8.8969 N2 + 0.2150 O2

Tadiabatic=2196.5441922754053

Q=-577682.314331347

 

> Terminated with exit code 0.

 

10% depleted  air for 90% ch4 and 10% c2h6 fuel will give:

 ---------- Capture Output ----------

> "C:\java\bin\javaw.exe" combustiontest

[0.9000 CH4 + 0.1000 C2H6] + 1.9350*[ O2 + (79/21) *N2] --> 0.6700 CO2 + 2.1000 H2O + 7.2793 N2 + 0.4300 CO

Tadiabatic=2224.182699812055

Q=-500631.88144321425

> Terminated with exit code 0.

 

CO apeared in the last reaction, because there are not enough oxygen existed for completed reaction.

 

FUELS AND COMBUSTION HOMEWORK #1

HOMEWORK  1

Fuel %80 CH4+%20CO is given. Reactants temperature is 298 K, and product temperature is 1000 K. Find

a)       Assuming stoichiametric reaction calculate total heat transfer

b)       Assuming %30 excess air calculate total heat transfer

c)       Assuming -%10 excess air (%10 less than stoichiometric air) calculate total heat transfer

d)      Calculate lower and upper heating values

e)      Calculate adiabatic flame temperature

HOMEWORK 2

Fuel %20 C02+%80CO is given. Reactants temperature is 298 K, and product temperature is 1000 K. Find

a)       Assuming stoichiametric reaction calculate total heat transfer

b)       Assuming %30 excess air calculate total heat transfer

c)       Assuming -%10 excess air (%10 less than stoichiometric air) calculate total heat transfer

d)      Calculate lower and upper heating values

e)      Calculate adiabatic flame temperature

 

import javax.swing.*;

public class reactiontest4

{

public static double Q(String s[],double N[][],double Treactant,double Tproduct)

{int k=s.length;

Gas g[]=new Gas[k];

for(int i=0;i<k;i++)

{g[i]=new Gas(s[i]);

}

double Qproduct=0;

double Qreactant=0;

for(int i=0;i<k;i++)

{Qproduct+=N[i][1]*g[i].ht(Tproduct);}

for(int i=0;i<k;i++)

{Qreactant+=N[i][0]*g[i].ht(Treactant);}

double Q=Qproduct-Qreactant;

return Q;

}

 

public static double Tadiabatic(String s[],double N[][],double Treactant,double Tproduct_low,double Tproduct_high)

{

//bisection root finding method

double xl=Tproduct_low;

double xu=Tproduct_high;

double test;

double xr=0;

double es,ea;

double fxl,fxr;

int maxit=100,iter=0;

es=0.0000001;

ea=1.1*es;

while((ea>es)&&(iter<maxit))

{

    xr=(xl+xu)/2.0;

    iter++;

    if((xl+xu)!=0)

        { ea=Math.abs((xu-xl)/(xu+xl))*100;}

    fxl= Q(s,N,Treactant,xl);

    fxr= Q(s,N,Treactant,xr);

    test= fxl*fxr;

    if(test==0.0)      ea=0;

    else if(test<0.0)  xu=xr;

    else              {xl=xr;}

}

if(iter>=maxit) JOptionPane.showMessageDialog(null,"Maximum number of iteration is exceeded \n"+

   " result might not be valid","MAKSİMUM NUMBER OF ITERATION WARNING",JOptionPane.WARNING_MESSAGE);

return xr;

}

 

 

public static void main(String arg[])

{

String s[]={"ch4","o2","n2","co2","h2o"};

double N[][]={{1.0,0.0},{2.0,0.0},{7.523809524,7.523809524},{0.0,1.0},{0.0,2.0}};

double Tproduct=1000.0;//degree K

double Treactant=298.16;//degree K

double Tadiabatic=Tadiabatic(s,N,Treactant,298.16,3000.0);

double Q=Q(s,N,Treactant,Tadiabatic);

System.out.println("Tadiabatic="+Tadiabatic);

System.out.println("Q="+Q);

}             

}