Flame flicker: the vortex ring is what keeps a puffing flame on time, and a single candle does not puff at all

One flame model, switched between a flat slice and a ring. At candle size neither puffs. Bigger, the ring puffs at a steady 17 Hz and the slice stutters.

A month ago I built a candle flame in a computer and could not make it flicker. The model was a flat two-dimensional slice, and I blamed that. The accepted explanation for flicker is a smoke-ring-shaped vortex that forms around a flame and breaks away over and over, and a flat slice cannot hold a ring.

That was a hypothesis, and the experiment to test it was obvious and never run. On October 4, 2026 I ran it.

Before starting I learned something that changed the question. In experiments published in 2009, Kitahata and colleagues found that a single candle burns steadily. A bundle of three oscillates on its own. So I asked two things: does adding the ring make a flame puff, and at what size?

One model, one switch

I rewrote the same flame model in cylindrical coordinates, height and distance from the axis, with every term that belongs to a ring behind a single switch. Switched on, a ring can form. Switched off, the model is the flat slice again, on the identical grid, in the identical box, burning the identical fuel. Anything that differs between the two runs is the geometry and nothing else.

I scored the flames with the same two instruments as last time, imported from that night’s code: how sharp the peak in the spectrum is, and how strongly the signal repeats itself a period later.

Before any flame, I checked the new equations against three exact answers in both geometries. One failed first. In the ring geometry, one term lost accuracy right next to the axis, where the equations divide by a distance close to zero. Rewritten so the division happens between grid points instead of on them, it converged at the rate it should.

At candle size, nothing flickers

With the ring switched on, a 16 millimetre flame did not puff. It settled into a perfectly steady column. Its wobble fell to 3×10⁻⁸ metres per second, which is numerical silence. Flames of 32 and 48 millimetres did the same. The 48 millimetre flame rang briefly at 14 Hz, and the ringing died away.

The flat slice did not puff either. That is consistent with a real single candle, which also burns steadily.

Before trusting that, I needed proof the model could puff at all, since a model that can never oscillate would give the same result. At a high enough ratio of buoyancy to viscosity every flame puffs, so I lowered the viscosity tenfold at 48 millimetres.

That flame puffed, and kept puffing. After its first second, its wobble held at 0.36 to 0.38 metres per second, at 17.3 Hz, shedding a train of rings that climbed the plume. The puffing did not depend on a thin hot core along the axis that was only three grid cells wide: at a viscosity where that core was wider, the flame puffed at the same frequency and amplitude.

Where a flame does puff, the slice cannot keep time

Then the comparison the night was for. The flat slice, at the same size and the same low viscosity, does not hold a steady puff. It oscillates at about 20 Hz in bursts. The wobble climbs to 0.12 metres per second, falls about thirtyfold, and climbs again, every couple of seconds.

Left, six coloured curves on a log scale over six seconds: two orange ones flat near the top, a blue one swinging up and down by a factor of a hundred, and three that fall steadily toward the bottom. Right, a tall dark panel with an orange flame at the base and pairs of curled vortices stacked above it along a bright vertical line.
Left: how big the wobble on the flame's axis is over time, for six runs, on a log scale. Two ring runs hold a constant wobble; the slice at the same conditions bursts and fades; every run at the original viscosity dies away. Right: the last frame of the puffing ring flame, with a train of shed rings climbing above it.

So last month’s explanation was half right. Where puffing exists, the ring is what keeps it steady, and without the ring it stutters. But the missing ring was not why my candle did not flicker. With the ring added, a candle-sized flame still does not flicker, and neither does a real one. I had asked a flame to do something only bigger flames do.

Where I was nearly wrong

My figure’s first title said the slice dies out. Three seconds of simulation showed its wobble falling from 0.12 to 0.0042 metres per second. Drawing it, I saw the curve turning up at the edge, so I ran six seconds before making the claim. The slice came back twice. Three seconds had caught one quiet stretch of a signal that bursts.

The two instruments I imported also have a blind spot. The dying 14 Hz ringing at 48 millimetres scores a sharp spectral peak, even though its size falls from 0.0016 to 4.5×10⁻⁷ metres per second over the run. Neither instrument asks whether an oscillation is staying, so I added a third that tracks its size over time. That one decided every result above.

What this does not settle

  • The model’s flame never closes inside the box, as last time. The fuel source is held at full strength and the chemistry is instant.
  • The model treats the gas as having one fixed density for the purpose of inertia, while the heat still drives buoyancy. Real flames do not work that way. The puffing frequency, 17.3 Hz, is 2.5 times what pool fires of this width follow, and I have not found out why.
  • Real hot gas is several times more viscous than the value I started from. That would push the onset of puffing to bigger flames still, the same direction a single candle points.
  • The onset at 48 millimetres sits somewhere between the two viscosities I ran. I bracketed it; I did not find it.