1-Dimensional Flame Speed Analysis
Objective: -
In this challenge, we will perform a 1D Flame Speed Analysis for Methane and Hydrogen mechanisms using Python and Cantera. We will be trying to answer some questions devised to understand the significance of this assignment.
- What type of analysis is this, steady-state or transient?
- Why do we need a separate file to simulate Hydrogen Mechanism can't it be done using GRI3.0?
- What do you infer from the graphs, Explain in detail for both the graphs, So if you had to state one value as the 1D Flame which one would you say it is and Why? What does the sudden increase in velocity or temperature tell us?
- Substantiate your answer for the previous question by plotting variation in the concentration for "CO2" and explain what you infer from it. Does the "width" parameter have an effect on the solution, If so or not so, please explain why?
Solution: -
1D Flame: -
What is a flame?
A flame is the visible, gaseous part of a fire. It is caused by a highly exothermic reaction taking place in a thin zone. Very hot flames are hot enough to have ionized gaseous components of sufficient density to be considered plasma.
Flame speed is the rate at which the flame diffuses or it is the flame propogation speed. The reaction properties of the flame play a major role in flame speed. Flame speed is generally denoted by SL where S is speed and L depicts laminar flow. Another important aspect of flame speed is how much species diffusion is occurring in the mixture. For example, if the species diffuses fast then the flame speed is going to be higher and similarly if the species diffuses at a slower rate, the flame speed is going to be lower. In the case of Hydrogen fuel, the fuel diffuses at a high rate which results in the high flame speed. So, we can say that the flame speed is directly proportional to the rate of species diffusion. There is also the consideration of flame Kinetics; If the flame front burns faster, then the flame propagation is also faster.
Premixed Flame, when ignited by a source results in the flame spreading out in all directions at the same rate. In laymen terms, in a premixed flame, the fuel and air are mixed already. Suppose, we have a long pipe shown in the figure below. If we ignite the mixture in the left end, the flame is going to propagate. Say that the flame has propagated to an extent of the pipe. The region where the flame has propagated depicts the burned mixture which are basically products of the reaction and on the region where the flame has not yet propagated, we have the unburned mixture which consists of reactants. So, whenever the flame is propagating, we treat the flame as one dimensional.
In reality, there is no one dimensional flame, it is always three dimensional. We treat it as 1D as the characteristics are more oriented in one direction compared to the other directions. By nature, this is a transient problem because the flame is propagating with time and the species concentration is changing; the location of the flame front is also changing with time. So, by nature this whole problem is an unsteady problem but we translate this problem to a steady state problem by giving flame reference co-ordinates i.e. We are fixing the flame front at a particular location. So, when the flame is moving, the co-ordinates are changing. But with reference to the flame, the co-ordinates are fixed. [1]
Steady state analysis of flame speed can be simulated fast numerically, while unsteady analysis is very costly to simulate.
Structure of 1D Premixed Flame: -
The structure consists of three flame zones namely, Pre-heat zone, Reaction zone and recombination zone.
(Picture Credit: NPTEL)
Preheat zone: -
- Negligibly small heat release
- Certain chemical reactions take place in this zone
Reaction zone: -
- Most of the chemical energy is released in the form of heat
- Decomposition of fuel takes place
- This zone is thin when compared to the Preheat zone.
- Temperature and Concentration gradient are high
Recombination zone: -
- CO2 and H2O are formed
- Negligible heat release
Solution Approach for 1S Flame Speed Analysis: -
There are two approaches for 1D flame speed analysis. They are: -
- Freely Propagating Flame
- Burner Stabilized Flames
In a freely propagating flame, we consider a flame propagating in a premixed pipe where if we observe the flame front from a fixed co-ordinate at one end, it becomes a freely propagating flame front. However, if we give the flame some reference co-ordinates as it moves and observe the system with respect to the propagating flame front, then we have a burner stabilized flame front.
The general principle to solve the 1D problem comprises of using a computational mesh where we have a coarse grid. At each grid point, we will be solving the governing equations. As soon as we get the solution, we will be refining the grid points. This process is repeated again and again until there is no need for any further refinement. If we go in detail, a successive grid refinement strategy is used. Each step is explained below:
While the grid needs to be refined,
- Use a base grid i.e. a coarse mesh
- Solution is obtained for the base grid using Newton Rhapshon Solver (which is under-relaxed)
- Solution is monitored for gradients (slopes & curvature)
- Locations with large gradients are refined i.e. a new grid is created
- New slope and curvature are created
Note: If the Newton Rhapson solver does not converge, we go to transient simulation to get a good initial guess for the steady state.
The code for the current assignment is given below: -
from __future__ import print_function
import cantera as ct
import numpy as np
import matplotlib.pyplot as plt
# Simulation Parameters
p = ct.one_atm
Tin = 300.0
reactants = 'CH4:0.45, O2:1.0, N2:3.76'
width = 0.03 # meters
# Ideal Gas mix object used to compute mixtrure properties
gas = ct.Solution('gri30.xml', 'gri30_mix')
gas.TPX = Tin, p, reactants
gas_H = ct.Solution('H2_mech.cti')
gas_H.TPX = Tin, p, reactants
# Flame Object for gri mech
f = ct.FreeFlame(gas, width=width)
f.set_refine_criteria(ratio=3, slope=0.07, curve=0.14)
f.solve(loglevel=1, auto=True)
# Flame Object for H2 mech
f1 = ct.FreeFlame(gas_H, width=width)
f1.set_refine_criteria(ratio=3, slope=0.07, curve=0.14)
f1.solve(loglevel=1, auto=True)
plt.subplot(3,1,1)
plt.plot(f1.grid, f1.T)
plt.xlabel('Domain')
plt.ylabel('Temperature')
plt.subplot(3,1,2)
plt.plot(f1.grid, f1.u)
plt.xlabel('Domain')
plt.ylabel('Velocity')
plt.subplot(3,1,3)
plt.plot(f.grid, f.net_rates_of_progress[15,:])
plt.xlabel('Domain')
plt.ylabel('CO2 Production Rate')
plt.show()
Results and Observations: -
Plot 1: -
In the above figure, we can see three different plots. The first graph tells us about temperature of the burned/unburned interface of the flame through the 1D domain. As discussed in the flame structure, we can relate the same with these plots. The grid from 0.020 to 0.0210, we have our Pre-heat zone where the heat release is negligibly small to relatively small. The grid from 0.0210 to 0.0215 portrays the reaction zone, where we can establish that the flame is positioned. At the flame front, the temperature exponentially increases from the grid point 0.0210 because of the reference flame and reaches the flame state. The temperature starts to rises as the reactants enter into the flame front; and it reaches the adiabatic flame temperature when reaction comes to equilibrium. [3]
We are using a hydrogen flame in this case. But in the case of hydrocarbon air flame, the temperature keeps asymptotically increasing. Considering that there is no heat loss, we can say that the temperature we have in the first plot is Adiabatic flame temperature.
Plot 2: -
The second plot tells us about velocity of the burned/unburned interface of the flame through the 1D domain. We can observe that the trend in this plot is similar to the temperature plot. But, in this plot, it is important to understand that the velocity observed here is of the gases. The velocity stays low and constant till the reference flame. With the contact of the flame, the combustion occurs and gases expand increasing the velocity exponentially. [3]
Plot 3: -
The third plot shows the variation in CO2 concentration along the considered grid. The reference flame width can be seen in the plot, CO2 production only happens in the midst of combustion. From this observation we can justify that the combustion is occurring in that particular area. [4]
GRI-Mech 3.0 is an optimized mechanism designed to model natural gas combustion. It contains detailed mechanism for methane-air combustion. For the simulation of Hydrogen mechanism, a separate file is used which is in this case named as “H2_mech”. In the current case, we are using both GRI and H2 mechanism because we were asked to find the variation of CO2 concentrations. The H2 mechanism doesn’t contain CO2 species, so GRI mechanism is used here. [2]
Note: The questions asked in the challenge are referenced in the explanations above in numbering format.