Generation

The implementation of firebrand generation comprises a number of parameters that can be associated with distinct categories. I.e., generation locations are independently defined in the horizontal and vertical spaces, initial firebrand properties and momentum are configured by the user, and generation limit is associated with computational demand.    

2-D Horizontal Generation (sources)

Firebrands are generated from grid points along the fire front where the fire rate-of-spread (ROS) is above a specified threshold (fs_ROSthresh). The frequency of generation cycles is defined by the generation period parameter (fs_firebrand_gen_dt) and generation sources comprise the 2-D grid points where the ROS threshold is met during the given timestep. Although indicated by \citealt{19670604037} and \citealt{wadhwani2022review} that firebrand generation is related to fire ROS, we do not  prescribe a specific threshold. We include the generation period and ROS threshold parameters as user options to reduce the computational cost of transporting thousands of firebrands that could be generated at every timestep from every active fire grid point.     

Vertical Generation

The number of vertical levels per source is set by the levels parameters (fs_gen_levels) and an associated maximum generation height (fs_firebrand_gen_maxhgt). Firebrands are evenly distributed between the maximum generation height and 1-meter above the landing height (fs_firebrand_land_hgt) by default, or can be randomly distributed between these levels if specified (fs_firebrand_gen_levrand, fs_firebrand_gen_levrand_seed).

Initial Firebrand Properties

Initial property parameters are set at time of generation and change during transport as the particles burnout. These parameters comprise diameter, effective diameter, temperature, and terminal velocity (fs_firebrand_gen_prop_diam, fs_firebrand_gen_prop_effd, fs_firebrand_gen_prop_temp, fs_firebrand_gen_prop_tvel), and are used during transport to parameterize burnout and terminal velocity. Currently, firebrand generation is limited to spherical particles with properties set by the user. 

Initial Firebrand Momentum

A computationally inexpensive solution was implemented to account for firebrand initial momentum by accelerating particles downwind, which is the equivalent of allowing firebrands to travel without burning out or settling (fs_firebrand_gen_mom3d_dt) for a set number of timesteps. This option was implemented in lieu of effectively calculating an initial momentum to individual particles, which would require interpolation of atmospheric variables outside of the transport subroutines, and lead to further assumptions about the magnitude of firebrand momentum.

Generation Limit

The number of generation locations is defined by a source limit parameter (fs_firebrand_gen_lim), which is applied to the model’s patch/tile when compiled for distributed memory parallel (dmpar) execution, or over the domain, when compiled for serial execution. This limit is meant to prevent overuse of memory and is patch/tile independent to decrease non-essential MPI communication. 

Transport and Physics

After generation, the particles are transported in the three-dimensional space with the atmospheric flow, and burnout as advected. During transport, firebrands may burn out entirely or land, when trajectories descend below a given height threshold. 

Advection

During transport, firebrands follow the resolved atmospheric flow as they burn out and fall. Particle density and char density (fs_firebrand_dens, fs_firebrand_dens_char) are the only user-defined parameters associated with firebrand physics. Firebrands may burn out entirely during transport, reach a maximum allowed lifetime (fs_firebrand_max_life_dt), or land.
During advection, the meteorological variables (wind, temperature, pressure, and air density) from the WRF model are interpolated from an Arakawa-C atmospheric  \cite{Skamarock2021WRFARW} grid to each individual particle position using a bilinear method implemented following the particle trajectory model described in \cite{lee2014stable}.
The source code for particle advection follows the approach implemented by the Hybrid Single Particle Lagrangian Integrated Trajectory (HYSPLIT) model \cite{stein2015supplement}, which uses an improved Euler method (also known as Heun’s method, \cite{witty1964} to advect particles by the atmospheric wind. The method calculates the position after a full timestep by taking the average between the derivative (i.e., wind speed) at the starting position and the derivative at a full step forward:
\[\mathbf{x}_0^{t+1}=\mathbf{x}^t+\mathbf{U}^{t}_\mathbf{x}\Delta{t} \]
\[\mathbf{x}^{t+1}=\mathbf{x}^t+\frac{\Delta{t}}{2}(\mathbf{U}^{t}_\mathbf{x}+\mathbf{U}^t_{\mathbf{x}_0^{t+1}})\]
where \(\mathbf{x}_0^{t+1}\) corresponds to the position calculated at the first pass for a timestep forward \({t+1}\) ,  \(\mathbf{x}_{t+1}\) is the final advection position calculated at the second pass, \(\mathbf{x}^{t}\) is the starting position at the starting timestep \(t\)\(U^{t}_\mathbf{x}\), and \(U^t_{\mathbf{x}_0^{t+1}}\), are the wind speed at the starting position and first-pass position, respectively, and \(\Delta t\) is the timestep interval.   
Particles are advected in the 3-D space using u, v, and w components of the wind, followed by an update of particle properties due burnout and fall speed.