Subsections


18.6 Flame

The Flame unit implements an artificial reaction front model based on a simplified single-variable reaction-diffusion model. This is intended to be used to model the behavior of under-resolved reaction fronts propagated spatially by thermal diffusion, commonly called flames or deflagration fronts. As the reaction-diffusion front is also carried with the fluid, this model is sometimes termed an advection-diffusion-reaction (ADR) model. The principal usage to date of this model has been during the deflagration phase of models of Type Ia Supernovae. See Townsley et al. (2007), from which some text in this section has been adapted, and works that reference it for examples.

18.6.1 Reaction-Diffusion Forms

Generally, an ADR scheme characterizes the location of a flame front using a reaction progress variable, $ \phi$, which increases monotonically across the front from 0 (fuel) to 1 (ash). Evolution of this progress variable is accomplished via an advection-diffusion-reaction equation of the form

$\displaystyle \frac{\displaystyle\partial\phi}{\displaystyle\partial t}+\vec v\cdot\nabla\phi = \kappa\nabla^2 \phi + \frac{1}{\tau}R(\phi) ,$ (18.276)

where $ \vec v$ is the local fluid velocity, and the reaction term, $ R(\phi)$, timescale, $ \tau$, and the diffusion constant, $ \kappa$, are chosen so that the front propagates at the desired speed. Vladimirova et al. (2006) showed that the step-function reaction rate leads to a substantial amount of unwanted acoustic noise. They studied a suitable alternative, the Kolmogorov Petrovski Piskunov (KPP) reaction term which has an extensive history in the study of reaction-diffusion equations. In the KPP model the reaction term is given by

$\displaystyle R(\phi) = \frac{1}{4} \phi(1-\phi) .$ (18.277)

The symmetric and low-order character of this function gives it very nice numerical properties, leading to amazingly little acoustic noise. Following Vladimirova et al. (2006), we adopt $ \kappa\equiv sb\Delta x/16$ and $ \tau
\equiv b\Delta x/16s$, where $ \Delta x$ is the grid spacing, $ s$ is the desired propagation speed, and $ b$ sets the desired front width scaled to represent approximately the number of zones.

The KPP reaction term, however, has two serious drawbacks. Formally, the flame speed is only single valued for initial conditions that are precisely zero (and stay that way) outside the burned region (Xin 2000), which cannot really be effected in a hydrodynamics simulation. This can lead to an unbounded increase of the propagation speed, which is precisely the property we wish to have under good control. Secondly, the progress variable $ \phi$ takes an infinite amount of time to actually reach 1 (complete consumption of fuel). While not a fatal flaw like the flame speed problem, this is a problem for our simulations in which we would like to have a localized flame front so that fully-burned ash can be treated as pure NSE material.

Both of these drawbacks can be ameliorated by a slight modification of the reaction term (S. Asida, private communication) to

$\displaystyle R(\phi) = \frac{f}{4}(\phi-\epsilon_0)(1-\phi+\epsilon_1) ,$ (18.278)

where $ 0<\epsilon_0, \epsilon_1\ll 1$ and $ f$ is an additional factor that depends on $ \epsilon_0$ and $ \epsilon_1$ and the flame width so that the flame speed is preserved with the same constants as for KPP above. This “sharpened” KPP (sKPP) has truncated tails in both directions (thus being sharpened), making the flame front fully localized, and is a bi-stable reaction rate and thus gives a unique flame speed (Xin 2000). The price paid is that since $ R(\phi)=0$ for $ \phi \le 0$ and $ \phi \ge 1$, (18.278) is discontinuous, adding some noise to the solution. Since the suppression of the tails is stronger for higher $ \epsilon_0$ and $ \epsilon_1$, we adjusted $ \epsilon_0$ and $ \epsilon_1$ so that for a particular flame width we could meet noise goals (Townsley et al. 2007). The parameter the default parameter values obtained are $ \epsilon_0 = \epsilon_1 = 10^{-3}$, $ f = 1.309$, and $ b = 3.2 $. The noise properties of these choices are discussed in Townsley et al. (2007).

Diffusive flames are known to be subject to a curvature effect that affects the flame speed when the radius of curvature is similar to the flame thickness, a frequent circumstance with modestly-resolved flame front structure. In testing, the curvature effect of the step-function reaction rate proved surprisingly strong, likely due to the exponential “nose” that the flame front possesses (Vladimirova et al. 2006). Both KPP and sKPP show significantly better curvature properties.

18.6.2 Unit Structure

The unit is divided into several subunits to allow flexibility in how the propagation speed is determined and how the enery release of the reaction front takes place. The main subunit FlameMain just implements the actual the reaction and diffusion terms defined above. There is currently only one implementation, RDSplit5point, that uses operator-split steps for the reaction and diffusion, and a 5 point stencil for the Laplacian operator.

The order of operations occurs as follows, for each block of the mesh in sequence: The progress variable, $ \phi$, stored in FLAM_MSCALAR is extracted, the Unit-internal function fl_flameSpeed() is called to fill a temporary array with the flame speed evaluated for each cell in the current block. The mesh scalar FLAM_MSCALAR is then updated based on this flame speed while saving temporarily the effective $ \dot\phi$ for this time step. This information is then passed on to the internal function fl_effects() which performs any energy release or other desired side effects of the propagation of the RD front. Note both the temporary arrays storing the flame speed and the $ \dot\phi$ for the current block are destroyed before processing the next block. However some implementations of fl_flameSpeed() may save this information in the main grid arrays for informational or other purposes.

18.6.2.1 Flame Speed

The flame speed is generally determined by various physical quantities on the grid. However, since the flame is generally an artificial reaction front, many aspects other than the composition may influence the speed. The simplest alternative implementation for determining the flame speed, which is the default one, is Flame/FlameSpeed/Constant. This simply sets a constant flame speed everywhere on the grid.

The flame speed can also include a turbulence-flame interaction (TFI). The implemented options are discussed in Jackson, Townsley, & Calder (2014, submitted). This is accomplished by including one of the implementations under, for example Flame/FlameSpeed/Constant/TFI. Since the TFI always modifies some base flame speed, it is generally included as a implementation of that type of flame speed, in this case a constant flame speed. In order to facilitate sharing of the TFI components, they are stored in their own implementation directories under Flame/FlameSpeed/turbulent and included as needed. All of the TFI options require the inclusion of the Turb unit which provides a measurement of the local turbulence strength.

18.6.2.2 Flame Effects

The flame effects subunit performs functions related to the actual energy deposition or changes in abundances caused by advance of the reaction front being modeled by the reaction-diffusion progress variable $ \phi$. The simplest implementation, included under Flame/FlameEffects/EIP, implements fixed energy input and change in $ \bar A$ and $ \bar Z$ across the reaction front. This is constructed to utilize the fully ionized electron-ion plasma EOS called the "Helmholtz" EOS in Flash.