A Cellular Automata Wildfire Spread Model PILOT Presentation Kristen J. Bains November 6, 2006
Model Goals To use a cellular automaton to model wildfire To create an extensible framework To demonstrate spatial control
Implementation Overview GUI: Java 1.5.0 Swing allows easy GUI design and layout JAI 1.1.2 Model: C++ OOP allows easy extensibility
GUI Design Image Area Menu Bar Control Panel
Walk-through : GUI Load landscape file
Walk-through : GUI Load landscape file FileDialog
Walk-through : GUI Load landscape file FileDialog Java Advanced Imaging (JAI) reads images/landscape_1.bmp and draws to image area
Walk-through : GUI Load landscape file FileDialog Java Advanced Imaging (JAI) reads images/landscape_1.bmp and draws to image area Writes data/whichImage.dat & data/whichLandscape.dat Talk about how data is passed between GUI and MODEL
Walk-through : GUI After the file is loaded. Talk about how the landscape is generated.
Landscape Files Randomly generated libnoise (http://libnoise.sourceforge.net) noiseutils renders image
Landscape Files Randomly generated libnoise (http://libnoise.sourceforge.net) noiseutils renders image Perlin noise module Source: http://libnoise.sourceforge.net/tutorials/tutorial4.html
Landscape Files Create your own Set parameters Bounding Box Rows/Cols Filename
Landscape Files Create your own Set parameters File → Create new landscape file
Landscape Files Create your own Set parameters File → Create new landscape file Invokes landscape/generateMap C++ routines using libnoise and noiseutils Creates images/landscape_new.bmp & data/landscape_new.dat Loads file into image area of GUI Explain what is contained in landscape_new.dat
Walk-through : GUI Select a firebreak Creates a list of x,y coordinates that is stored to an array.
Walk-through : GUI Select a fire start location
After firebreak and fire start selection Walk-through : GUI After firebreak and fire start selection
Walk-through: GUI Run → Run the model Writes initialization file Writes firebreaks & fire starts to separate files Invokes fire readState data/init.dat
Walk-through: Model Two classes CACell CASpace main parses initialization file, sets global variables initialize() initializes CASpace creates vector< vector<CACell> >
Walk-through: Model startFire() looks at fire starts & sets their burnState adds fire starts to burnList
Walk-through: Model go() iterates through burnList (all currently burning cells) fire spreads from burning cells newly burning cells are added to end of burnList done when burnList is empty
Spread if(fuelDensity > Threshold1) cell can burn
Spread if (fuelDensity > Threshold1) if (usingMultipleTimeSteps) cell can burn if (usingMultipleTimeSteps) if (fuelDensity > Threshold2) cell can burn 2 time steps
Spread 8-neighborhood (3x3) 24-neighborhood (5x5)
Walk-through: GUI Final burn state information located in data/final.dat After the model has finished running, the GUI regains control and displays the burned cells in the image area.
Walk-through: Optimization Select fire start location Select firebreak start location Select orientation Select % map to search Popup window to select name
Walk-through: Optimization Run → Run optimization Writes initialization file Optimization flag set Writes firebreak location & fire start to separate files Invokes fire readState data/init.dat
Walk-through: Optimization main parses initialization file, sets global variables initialize() initailizes CASpace startFire() gets start location
Walk-through: Optimization go() burns the fire to completion toList is created while burning cell (x, y)’s toList contains: 1, 3, 4, 7 Baseline numberBurned
Walk-through: Optimization For each selected orientation lengthen the firebreak width = 1
Walk-through: Optimization width = 2 Growth direction for width
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire
Walk-through: Optimization Reverse Fire We know that this firebreak length is optimal because it results in the fewest burned cells
Walk-through: Optimization Output is written to data/*.opt file Best firebreak is calculated and shown on GUI
Example Output
Example Output
Future Directions Implement in OpenInventor (http://oss.sgi.com/projects/inventor/) Customizable 3D simulation environment, C++ Implement interface with ArcGIS Read ascii grid files and convert to array of float values
Future Directions Extend with new modules wind slope fuel moisture
Survey of Known CA Wildfire Models Dunn and Milne. Modelling Wildfire Dynamics via Interacting Automata. * Uses Circal process algebra to interact between automata Clarke, Riggan, and Brass. A cellular automaton model of wildfire propagation and extinction. Links remotely sensed data with Monte Carlo based simulation Berjak and Hearne. An improved cellular automaton model for simulating fire in a spatially heterogeneous Savanna system. CA approach based on Rothermel model Most CA wildfire models do not contain control methods or an attempt to optimize them
Acknowledgements Funding under NSF Award No. IIS-0427471 Committee: Dr. David Banks Dr. Michael Berry, chair Dr. Louis Gross TIEM Group