Elliptical template

Fires can form several different shapes when they spread. One such common shape is an ellipse (Alexander 1985). Below is an example of how to include an elliptical fire spread template in a Spark rate of spread model.

Implementing such a shaping template is more necessary in some rate of spread models than others. For example, the Marsden-Smedley and Catchpole (1995) model for buttongrass moorlands has a multiplicative dependence on wind speed. This means that if the ‘standard implementation’ was used, there would be no flanking or backing rate of spread as the dot product between the wind vector and the fire perimeter normal would be zero (or negative if not capped), making this model an ideal candidate to apply some kind of shaping function.

Vegetation

Not vegetation specific

Code

// Elliptical template example

// Defining an arbitrary head fire rate of spread (which could come from an empirical model)
REAL head_speed = 0.1;

// Calculating the normalised dot product between the wind vector and the normal to the fire perimeter
REAL wdot = dot(normalize(wind_vector),advect_normal_vector);

// Defining an arbitrary length to breadth ratio.
// These can be estimated from Alexander (1985) or other references using wind speed and vegetation type
REAL LBR = 3;

// Determine coefficient for backing and flanking rank of spread using elliptical equations
// Where R_backing = cb * R_head, R_flanking = cf * R_head,
REAL cc = sqrt(1.0-pow(LBR, -2.0));
REAL cb = (1.0-cc)/(1.0+cc);
REAL a_LBR = 0.5*(cb+1.0);
REAL cf = a_LBR/LBR;

// Determine shape parameters
REAL f = 0.5*(1.0+cb);
REAL g = 0.5*(1.0-cb);
REAL h = cf;

// Now calculate the speed coefficient using normal flow formula
REAL speed_fraction = (g*wdot+sqrt(h*h+(f*f-h*h)*wdot*wdot));

// Now setting the total speed as the head speed times the speed fraction around the perimeter
speed = head_speed * speed_fraction;