Model Library

Here you can find a list of useful speed functions that can be used with Spark, submitted by users within CSIRO as well as partners outside the organisation. Feel free to use these models in your work, or modify them as you see fit. If you have created your own useful spread model, please feel free to submit it using the form at the bottom of the page, and we will publish it here for others to use.

Please note that these models may not be suitable to ‘plug and play’ for your specific applications. The models may not take certain things into account that are important for your application such as the slope of the terrain, the time of day, variability of input parameters and so on. Ensuring that the models are valid for the input parameters used is also important, we strongly recommend that you read the primary references to determine the applicability of the equations used.

A useful reference for fire spread models, ‘A Guide to Rate of Fire Spread Models for Australian Vegetation‘ is available online here.

Model nameSubmitted byDescription
TestJames Hilton (CSIRO)Test case for constant speed plus wind.
Dry Eucalypt (Vesta Mk 2)William Swedosh (CSIRO)CSIRO developed rate of spread model for dry eucalypt forests.
Dry Eucalypt (Vesta)William Swedosh (CSIRO)CSIRO and DPAW developed rate of spread model for dry eucalypt forests.
CSIRO GrasslandWilliam Swedosh (CSIRO)CSIRO developed rate of spread models for Australian grasslands (including woodland and open forest).
McArthur Eucalypt ForestWilliam Swedosh (CSIRO)McArthur rate of spread for eucalypt forests.
Buttongrass MoorlandsWilliam Swedosh (CSIRO)Marsden-Smedley and Catchpole rate of spread for buttongrass moorlands.
HeathlandWilliam Swedosh (CSIRO)Anderson (2015) rate of spread for heathland.
RothermelWilliam Swedosh (CSIRO)Rothermel (1972) rate of spread model for wildlands, widely used in North America.
Wet EucalyptWilliam Swedosh (CSIRO)Modified version of Vesta model.
Semi-arid Mallee HeathWilliam Swedosh (CSIRO)Cruz et al. (2013) model for semi-arid mallee heath.
SpinifexWilliam Swedosh (CSIRO)Burrows (2018) model for spinifex.
Elliptical TemplateWilliam Swedosh (CSIRO)Template for elliptical fire shapes.
Slope EffectsWilliam Swedosh (CSIRO)McArthur and CSIRO Kataburn example.
Build-up PhaseWilliam Swedosh (CSIRO)Logistic acceleration model for fire in build-up phase.
Self extinguishingWilliam Swedosh (CSIRO)Examples for self extinguishing of fires.

Writing Spark speed functions

Spark allows you to program the outward speed of the fire perimeter, allowing flexibility to use any rate-of-spread model or test your own. You can also program a user defined initialization step as well as user-defined post-processing step. Programs are written in the C programming language, using the OpenCL 1.1 API, which supports a wide range of built-in mathematics functions. All of these can be used in a program, including several functions specific to the Spark solver given in the table below. All valid OpenCL C code can be used in programs, except variables with leading underscores which are restricted for internal use. Local floating-point variables should also be defined with REAL, rather than double, which may not be available on all platforms. Likewise, vectors should be defined with REALVEC2. Otherwise, the programs can contain any valid combination of comments, functions, variables, layer names and branches. The Spark framework carries out limited checking on speed functions, so any errors should be returned by the OpenCL compiler (although, unfortunately, this is not the case with all compilers). The rate of spread program requires an additional ‘speed =‘ definition to set the outward speed. For example, a simple test case is given in the Test model.

VariableTypeDescriptionUsed in*
eastingscalarThe cell easting value (m).I
northingscalarThe cell northing value (m).I
speedscalarRequired: sets the normal speed at the perimeter (m/s).RP
windscalarThe dot product of the wind and front normal, limited by zero.R
wind_vectorvectorThe wind vector.R
normal_vectorvectorThe normal vector of the perimeter.R
classscalarThe current classification value.IRP
subclassscalarThe fuel sub-classification, can be an integer from 0 to 255IRP
statescalarThe current state of the cell. state = 1 is burnable, state = 0 is unburnableIRP
randomscalarA random number from a uniform distribution between 0-1.IRP
output0scalarInternal user-defined data layer, written to ‘output grid’ layer 0.IRP
output1scalarInternal user-defined data layer, written to ‘output grid’ layer 1.IRP
output2scalarInternal user-defined data layer, written to ‘output grid’ layer 2. (This goes up to output9)IRP
arrivalscalarThe ignition (arrival) time of the perimeter at the cell (s). No-data values indicate no recorded arrival time.P
timescalarThe current solver time (s).RP
hourscalarThe hour of the day of the simulation as would be read on a 24 hour clock.R
layernamescalarThe interpolated value within the cell from the user-defined layer named layername.IRP
dx(layername)scalarThe x-spatial derivative of the user-defined layer named layername.IR
dy(layername)scalarThe y-spatial derivative of the user-defined layer named layername.IR
grad(layername)vectorThe gradient of the user-defined layer named layername.IR

* I: Initialization programs, R: Rate-of spread programs, P: Post-processing programs

Submit a speed function

If you would like to submit a new bushfire spread model, please contact the Spark team.