Skip to content
cfd-lab:~/en/posts/2026-07-28-turbulent-fla…online
NOTE #117DAY TUE 유체역학DATE 2026.07.28READ 9 min readWORDS 1,656#Combustion#Turbulence#Premixed-Flame#Damkohler#Flame-Speed

Where Turbulence Stops Speeding Up a Flame — Damköhler's Wrinkling Hypothesis and Bending

The physics behind the three regimes of the turbulent flame speed curve: linear rise, bending, quenching

A wildfire spreads faster as the wind picks up. At 5 m/s the flame front outruns a sprinting person. But keep raising the wind and past a certain speed the fire blows itself out. Firefighters call it blow-off. Measure a turbulent premixed flame on a laboratory burner and the curve has exactly the same shape.

Raise the turbulence intensity uu' and the turbulent flame speed STS_T climbs almost linearly at first. Then it bends over. That flattening is the bending effect. Push further and the flame quenches. This post explains the three regimes of that curve with three different pieces of physics. Damköhler's wrinkling hypothesis covers the linear part, the Karlovitz number covers bending and quenching, and the baroclinic torque covers the force the flame hands back to the turbulence.

Why turbulence speeds a flame up#

For a methane-air premixed flame the laminar flame speed (the speed at which the front propagates on its own into a quiescent mixture) SLS_L is about 0.40 m/s at room conditions. The flame thickness δL\delta_L is around 0.5 mm. No engine runs on those numbers. Crossing a 40 mm bore in 2 ms takes 20 m/s. That is 50 times SLS_L.

Turbulence fills the gap. That is why we define a turbulent flame speed STS_T. The definition comes out of an integral of the reaction rate. Integrate the mean fuel mass fraction transport equation across the flame brush along its normal, cancel the diffusion terms, and this is what is left.

ρuST(YFuYFb)=+ω˙F dn\rho_u S_T \left(Y_F^u - Y_F^b\right) = -\int_{-\infty}^{+\infty} \overline{\dot{\omega}_F}\ \mathrm{d}n

ρu\rho_u is the fresh gas density, YFuY_F^u and YFbY_F^b the fuel mass fractions on the fresh and burnt sides, ω˙F\overline{\dot{\omega}_F} the mean fuel reaction rate, and nn the coordinate normal to the mean flame brush.

The point worth holding onto is that this is a direct extension of the relation used for laminar flames — the laminar version carries the instantaneous reaction rate in place of ω˙F\overline{\dot{\omega}_F}. So STS_T is not a quantity defined as a velocity. It is an integrated measure of how much burning happens per unit area. That single fact explains everything that follows.

The wrong intuition — turbulence mixes the fuel better?#

The most common explanation goes like this. Turbulence mixes fuel and air better, so the reaction goes faster. For a premixed flame that is wrong.

Premixed means what it says: fuel and air were already mixed before ignition. The gas ahead of the front is a perfectly uniform mixture. There is nothing left for turbulence to mix. Mixing governs the speed of diffusion flames, where fuel and oxidizer arrive separately, not of premixed flames.

There is a second version. Turbulence raises the effective diffusivity, so the flame goes faster. The laminar flame speed scales as SLD/τcS_L \sim \sqrt{D/\tau_c}. Swap DD for a turbulent diffusivity ultu' l_t and you get ST/SLult/DS_T/S_L \sim \sqrt{u' l_t / D}. A square root. But the initial slope the experiments show is linear. The exponent does not match.

There is a deeper problem with both. Each assumes the flame leaves the turbulence alone. The truth runs the other way. Right after ignition the temperature jumps from 300 K to above 2000 K. The kinematic viscosity ν\nu rises roughly as T1.7T^{1.7}, so it grows by more than a factor of 20. The local Reynolds number ult/νu' l_t / \nu drops by the same factor. A well-developed turbulent flow can relaminarize after ignition. While the turbulence is shaking the flame, the flame is killing the turbulence.

Damköhler's answer: it is area, not speed#

Damköhler proposed a different picture. Turbulence does not make the local combustion faster. It folds the flame sheet.

There is one assumption. Every point on the wrinkled front still propagates locally at SLS_L. Chemistry is untouched; only geometry changes. Mass conservation then hands over the answer. The fresh gas passing through the true wrinkled area ATA_T has to equal the fresh gas passing through the projected area Aˉ\bar{A} of the mean flame brush.

ρuSLAT=ρuSTAˉΣATAˉ=STSL\rho_u S_L A_T = \rho_u S_T \bar{A} \quad\Longrightarrow\quad \Sigma \equiv \frac{A_T}{\bar{A}} = \frac{S_T}{S_L}

Σ\Sigma is the wrinkling factor, the flame surface area per unit projected area. The left side is an area ratio, the right side a speed ratio. They are the same number.

Turbulence sets the size of the wrinkles. While an eddy of size ltl_t pushes the front at speed uu', the front pushes back at SLS_L. The ratio of those two displacements sets the slope of the wrinkle, and the slope sets the area gain. Out comes Damköhler's linear law.

STSL=1+uSL\frac{S_T}{S_L} = 1 + \frac{u'}{S_L}

uu' is the RMS velocity fluctuation of the fresh gas and SLS_L the laminar flame speed. At u=0u' = 0 it collapses back to ST=SLS_T = S_L.

For this picture to hold, the front has to be thinner than the eddies. Two dimensionless numbers measure that condition.

Da=τtτc=lt/uδL/SL,Ka=τcτη=(uSL)3/2(ltδL)1/2Da = \frac{\tau_t}{\tau_c} = \frac{l_t/u'}{\delta_L/S_L}, \qquad Ka = \frac{\tau_c}{\tau_\eta} = \left(\frac{u'}{S_L}\right)^{3/2}\left(\frac{l_t}{\delta_L}\right)^{-1/2}

DaDa is the Damköhler number (turbulent time over chemical time) and KaKa the Karlovitz number (chemical time over Kolmogorov time). τt\tau_t is the eddy turnover time, τc\tau_c the chemical time, τη\tau_\eta the timescale of the smallest eddies. When Da1Da \gg 1 the flame reacts faster than the eddies turn. When Ka<1Ka \lt 1 not even the smallest eddy fits inside the flame thickness. Where both hold is the flamelet regime, and Damköhler's linear law is only valid there.

Making the wrinkles by hand#

Build the wrinkles yourself in the simulation below.

What to watch: the drawn front's measured arc length is forced to equal S_T/S_L, so a faster flame is a literally longer line. Raise u'/S_L and the amber linear-law ghost runs away from the real front — that gap is the bending effect. Lower l_t/δ_L to drive Ka past 25 and the sheet thickens, desaturates, then breaks into holes.

Raise u/SLu'/S_L from 0 to 6 and the front folds tightly, but the measured Σ\Sigma stops climbing near 4. The straight Damköhler prediction beside it has reached 7, so the two lines separate visibly. Now drop lt/δLl_t/\delta_L to 2 and push u/SLu'/S_L to 12. KaKa passes 29, the badge flips to quenching, and Σ\Sigma collapses from 3.5 to 2.0.

What the experiments showed — bending and quenching#

The experimental data draws three regimes. Nearly linear at first. Then flat. Then quenching.

Three effects overlap to make it flatten. First, wrinkles are not only created — they are also destroyed. The front propagates along its own normal, so it keeps shaving off convex cusps. When creation and destruction balance, Σ\Sigma saturates. Second, once KaKa exceeds 1 the small eddies get into the preheat zone and thicken the flame. The local SLS_L itself drops. Third, strong strain locally extinguishes flamelets and punches holes in the flame sheet.

This post compresses all three into one expression.

Σ=STSL=1+q u/SL1+(u/SL)/Σ,q=exp[(KaKaq)2]\Sigma = \frac{S_T}{S_L} = 1 + q\ \frac{u'/S_L}{1 + (u'/S_L)/\Sigma_\infty}, \qquad q = \exp\left[-\left(\frac{Ka}{Ka_q}\right)^{2}\right]

Σ\Sigma_\infty is the wrinkling saturation ceiling (6.0 here), KaqKa_q the quench Karlovitz number (25.0 here), and qq a quench attenuation factor between 0 and 1. The saturating denominator produces the bending; qq produces the quenching.

Honesty is required here. This expression is not a derived law. It is a phenomenological form fitted to reproduce the observed shape of the curve. Σ=6.0\Sigma_\infty = 6.0 and Kaq=25.0Ka_q = 25.0 are tuning values, not physical constants, and they shift with fuel, pressure and burner geometry. The source says the same thing: predicting the bend of the curve is difficult, and predicting the quenching limits is "almost impossible". Only the linear regime came out of physics. The other two are still correlations.

The flame changes the turbulence too — baroclinic torque#

Gas expands as it crosses the front. Mass flux has to be conserved, so

ρuSL=ρbububSL=ρuρb7\rho_u S_L = \rho_b u_b \quad\Longrightarrow\quad \frac{u_b}{S_L} = \frac{\rho_u}{\rho_b} \approx 7

ρb\rho_b is the burnt gas density and ubu_b the gas speed leaving the front. The flame front is a device that accelerates the flow sevenfold. That acceleration acts directly on the turbulence.

The four terms of the vorticity transport equation show the route.

DωDt=(ω)uIω(u)II+ν2ωIII+1ρ2ρ×pIV\frac{\mathrm{D}\boldsymbol{\omega}}{\mathrm{D}t} = \underbrace{(\boldsymbol{\omega}\cdot\nabla)\mathbf{u}}_{\text{I}} - \underbrace{\boldsymbol{\omega}(\nabla\cdot\mathbf{u})}_{\text{II}} + \underbrace{\nu\nabla^{2}\boldsymbol{\omega}}_{\text{III}} + \underbrace{\frac{1}{\rho^{2}}\nabla\rho\times\nabla p}_{\text{IV}}

ω\boldsymbol{\omega} is the vorticity vector, u\mathbf{u} the velocity, ρ\rho the density, pp the pressure. I is vortex stretching, II is dilatation, III is viscous dissipation, and IV is the baroclinic torque (the torque that appears when the density gradient and the pressure gradient are misaligned).

In cold turbulence II and IV are zero. Add a flame and both come alive. At the front u>0\nabla \cdot \mathbf{u} \gt 0, so II removes vorticity. IV, on the other hand, creates new vorticity. The ρ\nabla \rho across the front is large and normal to the surface, while the p\nabla p from the acceleration points elsewhere. Their cross product is nonzero. That is the source of what is called flame-generated turbulence.

Throw a single vortex at the front in the simulation below.

What to watch: at the defaults (u_θ/S_L = 2, r/δ_L = 10) the vortex dies on the front and a violet counter-rotating pair is all that is left. Push u_θ/S_L past ~9 and it punches through, dragging a cusp that stays. The arrows get ρ_u/ρ_b times longer on the burnt side — that jump is the dilatation term; set ρ_u/ρ_b = 1 and the baroclinic pair disappears entirely.

Set uθ/SLu_\theta/S_L near 2 and press Release: the vortex is destroyed at the front, and counter-rotating vorticity is born in its place. Raise the same value toward 10 and the vortex crosses almost unaffected, leaving only a deep cusp. Drop ρu/ρb\rho_u/\rho_b to 1 and ρ\nabla\rho disappears, switching off the baroclinic production entirely.

This feedback carries an annoying side effect. It makes the "uu'" in an ST(u)S_T(u') curve ambiguous. Measured in the fresh gas, in the burnt gas, or across the whole flame brush, it is three different numbers. A brush average taken without density weighting counts the intermittent switching between fresh and burnt states as fluctuation and comes out inflated. Models rarely make this distinction. It is one reason RANS codes show non-physical behavior near a flame.

Drawing the bending curve in Python#

Here is the model above transcribed straight into code. It prints the linear and bending predictions side by side at two turbulence scales.

import math
 
SIGMA_INF = 6.0     # wrinkling saturation ceiling
KA_QUENCH = 25.0    # quench Karlovitz number
 
 
def damkohler_number(u_ratio, l_ratio):
    """Da = turbulent time / chemical time."""
    return l_ratio / u_ratio
 
 
def karlovitz_number(u_ratio, l_ratio):
    """Ka = chemical time / Kolmogorov time."""
    return u_ratio**1.5 * l_ratio**-0.5
 
 
def quench_factor(ka):
    """Quench attenuation factor, falling to 0 as Ka grows."""
    return math.exp(-(ka / KA_QUENCH) ** 2)
 
 
def wrinkling_factor(u_ratio, l_ratio):
    """Sigma = S_T / S_L, with saturation and quenching."""
    ka = karlovitz_number(u_ratio, l_ratio)
    return 1.0 + quench_factor(ka) * u_ratio / (1.0 + u_ratio / SIGMA_INF)
 
 
def turbulent_flame_speed(s_laminar, u_ratio, l_ratio):
    """Turbulent flame speed [m/s]."""
    return s_laminar * wrinkling_factor(u_ratio, l_ratio)
 
 
U_RATIOS = [0.5, 1, 2, 3, 4, 6, 8, 10, 12]
 
for l_ratio in (10.0, 2.0):
    print(f"l_t/delta_L = {l_ratio:.0f}")
    print(f"{'u/SL':>6}{'Da':>9}{'Ka':>9}{'linear':>9}{'bending':>9}")
    for u_ratio in U_RATIOS:
        da = damkohler_number(u_ratio, l_ratio)
        ka = karlovitz_number(u_ratio, l_ratio)
        lin = 1.0 + u_ratio                      # Damkohler linear law
        ben = wrinkling_factor(u_ratio, l_ratio)  # saturation + quenching
        print(f"{u_ratio:6.1f}{da:9.2f}{ka:9.2f}{lin:9.2f}{ben:9.2f}")
    print()
 
print("S_T at S_L = 0.40 m/s, u'/S_L = 6, l_t/delta_L = 10 :",
      round(turbulent_flame_speed(0.40, 6.0, 10.0), 3), "m/s")

The output looks like this.

l_t/delta_L = 10
  u/SL       Da       Ka   linear  bending
   0.5    20.00     0.11     1.50     1.46
   1.0    10.00     0.32     2.00     1.86
   2.0     5.00     0.89     3.00     2.50
   3.0     3.33     1.64     4.00     2.99
   4.0     2.50     2.53     5.00     3.38
   6.0     1.67     4.65     7.00     3.90
   8.0     1.25     7.16     9.00     4.16
  10.0     1.00    10.00    11.00     4.20
  12.0     0.83    13.15    13.00     4.03
 
l_t/delta_L = 2
  u/SL       Da       Ka   linear  bending
   0.5     4.00     0.25     1.50     1.46
   1.0     2.00     0.71     2.00     1.86
   2.0     1.00     2.00     3.00     2.49
   3.0     0.67     3.67     4.00     2.96
   4.0     0.50     5.66     5.00     3.28
   6.0     0.33    10.39     7.00     3.52
   8.0     0.25    16.00     9.00     3.28
  10.0     0.20    22.36    11.00     2.68
  12.0     0.17    29.39    13.00     2.00
 
S_T at S_L = 0.40 m/s, u'/S_L = 6, l_t/delta_L = 10 : 1.559 m/s

Compare the two columns and the parting point shows up. Out to u/SL=1u'/S_L = 1 the linear and bending values agree within 15%. By u/SL=6u'/S_L = 6 they are already 7.00 against 3.90. And at the large scale (lt/δL=10l_t/\delta_L = 10) pushing to u/SL=12u'/S_L = 12 still leaves Σ\Sigma near 4. At the small scale (lt/δL=2l_t/\delta_L = 2), the same uu' drives KaKa past 29 and Σ\Sigma down to 2.0. Same turbulence intensity, but the smaller scale quenches first.

Next time you meet a turbulent flame#

Reading STS_T as an area rather than a speed solves half the problem. Turbulence did not make the chemistry faster. It only spread the same SLS_L over a wider sheet. When STS_T refuses to climb in an experiment, look at why the flame surface area saturated before suspecting the reaction rate.

Not judging by uu' alone solves the other half. At the same u/SLu'/S_L, a different lt/δLl_t/\delta_L changes KaKa by a factor of ten. In the table above, u/SL=12u'/S_L = 12 gave Σ=4.03\Sigma = 4.03 in one case and 2.00 in the other. What separated them was the turbulence scale, not the intensity. An STS_T correlation that does not report KaKa alongside is telling half the story.

And do not treat the bending curve a calculator hands you as a law. The linear part came from geometry; the bend and the quench were fitted to data. When a RANS result looks strange near a flame, checking where uu' is being measured is faster than reaching for the turbulence model constants.

Share if you found it helpful.