Simulating Flickering Fire with Noisy Cellular Automaton
This Demonstration simulates fire using elementary cellular automaton rule 99. The main evaluations are quite time consuming, so the animation may run somewhat slowly; to change a control, first pause and then resume the animation.
Finite elementary cellular automaton (CA) rule 99 is used with looped boundary conditions. An initial condition (IC) of six cells evaluated for five steps produces a 6×6 matrix (including IC) of 0s and 1s. Every possible IC corresponds to a set of eigenvalues of the evaluated matrix. ICs are interpreted as binary numbers and converted to decimal numbers that run along the horizontal axis of the image. Therefore every such number has a corresponding set of six eigenvalues that run along the vertical axis. As a result a 64×6 matrix of all possible eigenvalues is generated. When it is plotted with the built-in Mathematica function ListDensityPlot, one obtains a static image reminiscent of flames. Fluctuating noise is introduced to animate the fire's flickering by randomly flipping values of cells in the evolution of the CA with probability ranging from 0 to 0.5. The probability is set by the "turbulence" control. Actual animation of the flickering effect is achieved by constantly changing the built-in Mathematica function SeedRandom setting.
For more information on the CA used, see Rule 99.