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 name Submitted by Description
Test James 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 Grassland William Swedosh (CSIRO) CSIRO developed rate of spread models for Australian grasslands (including woodland and open forest).
McArthur Eucalypt Forest William Swedosh (CSIRO) McArthur rate of spread for eucalypt forests.
Buttongrass Moorlands William Swedosh (CSIRO) Marsden-Smedley and Catchpole rate of spread for buttongrass moorlands.
Heathland William Swedosh (CSIRO) Anderson (2015) rate of spread for heathland.
Rothermel William Swedosh (CSIRO) Rothermel (1972) rate of spread model for wildlands, widely used in North America.
Wet Eucalypt William Swedosh (CSIRO) Modified version of Vesta model.
Semi-arid Mallee Heath William Swedosh (CSIRO) Cruz et al. (2013) model for semi-arid mallee heath.
Spinifex William Swedosh (CSIRO) Burrows (2018) model for spinifex.
Elliptical Template William Swedosh (CSIRO) Template for elliptical fire shapes.
Slope Effects William Swedosh (CSIRO) McArthur and CSIRO Kataburn example.
Build-up Phase William Swedosh (CSIRO) Logistic acceleration model for fire in build-up phase.
Self extinguishing William 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.

Variable Type Description Used in*
easting scalar The cell easting value (m). I
northing scalar The cell northing value (m). I
speed scalar Required: sets the normal speed at the perimeter (m/s). RP
wind scalar The dot product of the wind and front normal, limited by zero. R
wind_vector vector The wind vector. R
normal_vector vector The normal vector of the perimeter. R
class scalar The current classification value. IRP
subclass scalar The fuel sub-classification, can be an integer from 0 to 255 IRP
state scalar The current state of the cell. state = 1 is burnable, state = 0 is unburnable IRP
random scalar A random number from a uniform distribution between 0-1. IRP
output0 scalar Internal user-defined data layer, written to ‘output grid’ layer 0. IRP
output1 scalar Internal user-defined data layer, written to ‘output grid’ layer 1. IRP
output2 scalar Internal user-defined data layer, written to ‘output grid’ layer 2. (This goes up to output9) IRP
arrival scalar The ignition (arrival) time of the perimeter at the cell (s). No-data values indicate no recorded arrival time. P
time scalar The current solver time (s). RP
hour scalar The hour of the day of the simulation as would be read on a 24 hour clock. R
layername scalar The interpolated value within the cell from the user-defined layer named layername. IRP
dx(layername) scalar The x-spatial derivative of the user-defined layer named layername. IR
dy(layername) scalar The y-spatial derivative of the user-defined layer named layername. IR
grad(layername) vector The 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

Submit a new bushfire spread model

  • Submit your model code below and it will be published in the list above.