Fire Model Inputs
These inputs configure the fire model described in Fire Model. Every
key is read once at startup from the erf.fire prefix (the three plotfile
keys from erf). Defaults are those of the parameter struct in
FireEngine/ERF_FireParams.H; the reference deck
Exec/CanonicalTests/Fire/inputs_fire_master_reference lists every key with
a comment but is a configured case, so its values are not all defaults. Keys
marked “read but not consumed” are accepted for compatibility and have no
effect at present.
Master control
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.enable |
Enable the fire model |
Boolean |
false |
erf.fire.engine |
Fire engine behind the shared fire-atmosphere coupling (Source/FireCoupling); “flare” is FLARE, this repository’s own model (FireEngine/). Any other value aborts |
“flare” |
“flare” |
erf.fire.fire_debug |
Print per-step fire diagnostics to stdout |
Boolean |
false |
erf.fire.grid_ratio |
Fire grid refinement factor in x and y; every box length on the fire grid’s level must divide by it |
Integer > 0 |
5 |
erf.fire.anchor_level |
AMR level whose grid the fire grid refines; -1 is the finest level at start-up. Above level 0 the level must keep its boxes (erf.regrid_int = -1), cover one rectangle of full-height columns and run without the dust layer; a level below the finest prints a warning |
-1, or 0 to the finest level |
-1 |
Fuel and moisture
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.fuel_model_id |
Anderson FBFM13 fuel model used everywhere without a fuel map, and for WAF and coefficients with one |
1-13; 101-204 with fuel_set = scott_burgan40; 1000-1015 custom codes; others abort |
1 |
erf.fire.moisture_1hr |
1-hour dead fuel moisture [fraction] |
Real 0-1 |
0.08 |
erf.fire.moisture_10hr |
10-hour dead fuel moisture [fraction] |
Real 0-1 |
0.08 |
erf.fire.moisture_100hr |
100-hour dead fuel moisture [fraction] |
Real 0-1 |
0.10 |
erf.fire.moisture_live |
Live herbaceous and woody moisture [fraction]; the live classes start here (see moisture_live_model) |
Real |
0.60 |
erf.fire.moisture_live_model |
Live classes with moisture_dynamic: the legacy dead-fuel update (a value above 0.40 drops to 0.40 on the first step) or held at moisture_live |
“legacy”, “fixed” |
“legacy” |
erf.fire.moisture_dynamic |
Advance the dead classes each step with the Nelson time- lag model |
Boolean |
true |
erf.fire.precip_rate_mm_hr |
Uniform precipitation rate wetting the dead fuel [mm/hr] |
Real >= 0 |
0.0 |
erf.fire.precip_source |
Rain wetting the dead classes: precip_rate_mm_hr everywhere, or each column’s change per step of the microphysics surface precipitation accumulation (needs a scheme with precipitation, moisture_dynamic, and precip_rate_mm_hr = 0) |
“uniform”, “atmosphere” |
“uniform” |
erf.fire.moisture_model |
Dead-class update: one time constant per class, or radial diffusion in a cylindrical stick (Nelson 2000 framework) |
“timelag”, “stick” |
“timelag” |
erf.fire.emc_model |
Equilibrium moisture curves of the dead-class update: the legacy quartics, or Van Wagner and Pickett (1985) drying and wetting EMC (temperature dependent, as in WRF-SFIRE) |
“legacy”, “van_wagner” |
“legacy” |
erf.fire.stick.n_shells |
Radial shells per stick |
Integer 1-16 |
6 |
erf.fire.stick.radius_cm |
Stick radii of the 1-h, 10-h and 100-h classes [cm] |
3 Reals > 0 |
0.15 0.635 2.5 |
erf.fire.stick.rain_surface_moisture |
Surface moisture held while it rains |
Real 0.01-0.40 |
0.35 |
erf.fire.stick.diffusivity_scale |
Multiplier on the lag-calibrated diffusivity |
Real > 0 |
1.0 |
erf.fire.fuel_map.file |
Spatial fuel map file; empty means uniform fuel. Rows of an ESRI ASCII map run north first; one code per fire cell, so the map must have the fire grid’s size |
String |
“” |
erf.fire.fuel_map.format |
Fuel map format |
“ascii”, “lcp” |
“ascii” |
erf.fire.fuel_map.blending_fraction |
ROS blending toward neighbours of a different fuel code |
Real 0-1 |
0.0 |
erf.fire.fuel_map.nonburnable_codes |
Fuel codes that are non-burnable; empty keeps the fall- through to fuel model 1 |
Integers |
none |
erf.fire.fuel_map.fuel_set |
Fuel model set: the Anderson 13, or the Scott and Burgan 40 (LANDFIRE FBFM40 codes 101-204, 91-99 non-burnable) alongside them |
“anderson13”, “scott_burgan40” |
“anderson13” |
erf.fire.fuel_map.sb40_crosswalk |
Translate the Scott-Burgan codes to the Anderson 13 at load (the CFBM route) instead of using them natively |
Boolean |
false |
erf.fire.fuel_map.load_from_map |
Start each cell with its own model’s fuel load instead of the uniform model’s |
Boolean |
false |
erf.fire.rothermel_per_fuel |
Evaluate Rothermel coefficients per cell from the fuel map instead of fuel_model_id, on the isotropic and the level-set paths alike |
Boolean |
false |
erf.fire.custom_fuel.codes |
Fuel codes described in the deck instead of a published set; each must be in 1000-1015 |
Ints |
none |
erf.fire.custom_fuel.N.name |
Label for code N in the start-up summary |
String |
custom_N |
erf.fire.custom_fuel.N.w_1h_kg_m2 |
1-h dead fuel load of code N [kg/m2]; at least one load must be > 0 |
Real in [0, 500] |
required |
erf.fire.custom_fuel.N.w_10h_kg_m2 |
10-h dead fuel load [kg/m2] |
Real in [0, 500] |
0.0 |
erf.fire.custom_fuel.N.w_100h_kg_m2 |
100-h dead fuel load [kg/m2] |
Real in [0, 500] |
0.0 |
erf.fire.custom_fuel.N.w_live_herb_kg_m2 |
Live herbaceous load [kg/m2]; no curing transfer is applied |
Real in [0, 500] |
0.0 |
erf.fire.custom_fuel.N.w_live_woody_kg_m2 |
Live woody load [kg/m2] |
Real in [0, 500] |
0.0 |
erf.fire.custom_fuel.N.sav_1h_1_m |
1-h dead surface-area-to-volume ratio [1/m] |
Real in [10, 12000] |
required |
erf.fire.custom_fuel.N.sav_live_herb_1_m |
Live herbaceous surface-area-to-volume ratio [1/m]; kept only where that load is > 0 |
Real in [10, 12000] |
sav_1h_1_m |
erf.fire.custom_fuel.N.sav_live_woody_1_m |
Live woody surface-area-to-volume ratio [1/m]; kept only where that load is > 0 |
Real in [10, 12000] |
sav_1h_1_m |
erf.fire.custom_fuel.N.depth_m |
Fuel bed depth [m]; the Balbi models return zero spread at or below 0.01 m |
Real in (0.01, 50] |
required |
erf.fire.custom_fuel.N.moisture_ext |
Moisture of extinction [fraction] |
Real in [0.01, 2] |
required |
erf.fire.custom_fuel.N.heat_content_J_kg |
Heat content [J/kg] |
Real in [5e6, 5e7] |
required |
erf.fire.custom_fuel.N.density_kg_m3 |
Fuel particle density [kg/m3] |
Real in [50, 2000] |
512.0 |
erf.fire.custom_fuel.N.burnout_time_s |
Flaming burn time [s]; required for code N when erf.fire.burnout_model = sfire |
Real in [0, 1e5] |
0.0 |
erf.fire.firebreak.N.type |
Firebreak N (N = 0..9, consecutive): shape |
“rect”, “circle” |
none |
erf.fire.firebreak.N.x_lo/y_lo/x_hi/y_hi |
Rectangle firebreak bounds [m] |
Reals |
0.0 |
erf.fire.firebreak.N.cx/cy/radius |
Circular firebreak centre and radius [m] |
Reals |
0.0 |
erf.fire.firebreak.use_mask |
Hold firebreak cells in the non-burnable mask as well as stamping the sentinel; false (the form before 2026-10) warns when firebreaks are configured, since the stamp can erode |
Boolean |
true |
erf.fire.structures.enable |
Treat cells of the structure heightmap above min_height as non-burnable |
Boolean |
false |
erf.fire.structures.file |
Building heightmap in ERF terrain text format |
String |
hybrid.structure_file, then erf.buildings_fil e_name |
erf.fire.structures.min_height |
Sampled height above which a cell is a structure [m] |
Real >= 0 |
0.5 |
erf.fire.structures.wind_open_columns |
Renormalise the bilinear wind weights over the columns open at the wind height; needs structures.enable |
Boolean |
false |
erf.fire.structures.ignition.enable |
Structures ignite from the exposure accumulators, burn, radiate and launch brands (Structure Ignition and House-to-House Spread) ; needs exposure.enable |
Boolean |
false |
erf.fire.structures.ignition.heat_load_J_m2 |
Largest accumulated heat load in the wall band at which a structure ignites [J/m2] |
Real; <= 0 turns the criterion off |
6.0e6 |
erf.fire.structures.ignition.ember_count |
Brands landed on the footprint at which a structure ignites |
Integer; <= 0 turns the criterion off |
50 |
erf.fire.structures.ignition.intensity_kW_m |
Fireline intensity in the wall band above which time counts toward residence_s [kW/m] |
Real; <= 0 turns the criterion off |
1000.0 |
erf.fire.structures.ignition.residence_s |
Time above intensity_kW_m at which a structure ignites [s] |
Real >= 0 |
60.0 |
erf.fire.structures.ignition.peak_flux_W_m2 |
Peak heat release of a burning structure per unit footprint area [W/m2] |
Real > 0 |
2.5e5 |
erf.fire.structures.ignition.fuel_load_J_m2 |
Heat a structure releases over its whole burn per unit footprint area [J/m2] |
Real > 0 |
7.8e8 |
erf.fire.structures.ignition.growth_time_s |
Time from ignition to the peak flux (t-squared growth) [s]; 0 starts at the peak |
Real >= 0; peak_flux_W_m2 * growth_time_s / 3 <= 0.7 * fuel_load_J_m2 |
600.0 |
erf.fire.structures.ignition.rad_fraction |
Share of the release radiated onto the cells around the structure |
Real in [0, 1] |
0.3 |
erf.fire.structures.ignition.rad_radius_m |
Distance within which a burning footprint cell’s radiation is added to the heat load [m] |
Real >= 0; 0 turns the radiation off |
100.0 |
Ignition
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.ignition_x |
Ignition disc centre x [m] |
Real |
0.0 |
erf.fire.ignition_y |
Ignition disc centre y [m] |
Real |
0.0 |
erf.fire.ignition_r |
Ignition disc radius [m]; 0 = no disc (schedule, polygon, line or threshold ignites instead) |
Real >= 0 |
20.0 |
erf.fire.ignition.schedule_file |
CSV of timed ignition events; empty disables |
String |
“” |
erf.fire.ignition.polygon_file |
One or more CSVs of perimeter vertices, each one polygon or polyline ignition of the deck’s polygon_type and polyline_width; every file is stamped, so several files are several fires that merge as they grow |
List of Strings |
“” |
erf.fire.ignition.polygon_type |
Closed polygon or open line fire |
“polygon”, “polyline” |
“polygon” |
erf.fire.ignition.polygon_time |
Time [s] at which the polygon is stamped, so the atmosphere spins up first; 0 stamps it at initialisation |
Real >= 0 |
0.0 |
erf.fire.ignition.polygon_interior_ros |
Spread rate [m/s] behind the interior: arrival time polygon_time - d/R and fuel exp(-d/(R tau)); 0 = off |
Real >= 0 |
0.0 |
erf.fire.ignition.polygon_interior_tau |
Burnout e-folding time [s] of the interior; 0 = dx_fire/R |
Real >= 0 |
0.0 |
erf.fire.ignition.polyline_width |
Half-width of the polyline ignition zone [m] |
Real > 0 |
10.0 |
erf.fire.ignition.threshold_enable |
Ignite every burnable, unburned fire cell whose k = 0 air temperature (theta times the Exner function) exceeds threshold_temp |
true, false |
false |
erf.fire.ignition.threshold_temp |
Ignition temperature [K] |
Real > 0 |
573.15 |
erf.fire.ignition.threshold_radius |
Radius [m] of the disc stamped around each hot cell; 0 = one fire cell |
Real >= 0 |
0.0 |
erf.fire.ignition.threshold_start_time |
No threshold ignition before this time [s] |
Real >= 0 |
0.0 |
Wind
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.wind_ref_ht |
Height above local ground at which the atmospheric wind is sampled [m] |
Real > 0 |
6.1 |
erf.fire.prescribed_wind |
Bypass atmospheric wind interpolation with a constant reference wind, for controlled idealized-wind test cases; exact everywhere only with use_waf = false and use_terrain_wind = false |
Boolean |
false |
erf.fire.prescribed_wind_x |
Constant reference wind, x, when prescribed_wind [m/s] |
Real |
0.0 |
erf.fire.prescribed_wind_y |
Constant reference wind, y, when prescribed_wind [m/s] |
Real |
0.0 |
erf.fire.use_per_fuel_wind_ht |
Sample the wind at the per-fuel fcwh height (6.096 m for every fuel) instead of wind_ref_ht, with or without a fuel map; every reader of the wind’s height follows it |
Boolean |
false |
erf.fire.wind_sample_ht |
Sample the wind at this height above ground and bring it to wind_ref_ht (6.096 m with use_per_fuel_wind_ht) with a log profile (CFBM); 0 = off |
Real > wind_ref_ht (6.096 with use_per_fuel_wind_ht), or 0 |
0.0 |
erf.fire.wind_sample_z0 |
Roughness length [m] of every log profile the fire reads: the two-height resampling, the wind below the first cell centre and the ember drift; below the height of the reference wind, which is 6.096 m with use_per_fuel_wind_ht |
0 < Real < wind_ref_ht, or < 6.096 with use_per_fuel_wind_ht |
0.1 |
erf.fire.wind_below_first_cell |
Wind at a target below the first cell centre: “clamp” takes the centre’s wind unchanged; “log” scales it by the neutral log profile of wind_sample_z0 (recommended for a first cell above wind_ref_ht; 12 % lower under a 20 m first cell) |
“clamp”, “log” |
“clamp” |
erf.fire.wind_interp |
Horizontal mapping of atmospheric columns onto fire cells |
“bilinear”, “nearest” |
“bilinear” |
erf.fire.use_waf |
Apply the wind adjustment factor to the reference wind |
Boolean |
true |
erf.fire.waf_formula |
Wind adjustment factor formula, from the fuel bed depth: the domain model’s on a uniform fuel, each cell’s own wherever a spatial fuel map is read |
“andrews”, “behaviorplus” |
“andrews” |
erf.fire.use_wind_limit |
Bound the midflame wind by Rothermel’s (1972, eq. 87) limit U <= 0.9 I_R (Rothermel and BEHAVE kernels); false: no limit |
Boolean |
true |
erf.fire.wind_limit |
Which limit use_wind_limit applies: “rothermel” is 0.9 I_R ft/min; “fuel_class” this code’s earlier rule of 300 ft/min above a SAV of 1000 1/ft and 500 below (the form before 2026-10) |
“rothermel”, “fuel_class” |
“rothermel” |
erf.fire.use_terrain_wind |
Apply the terrain wind factors (ridge, shelter, valley, deflection); default false since 2026-10 |
Boolean |
false |
erf.fire.k_ridge |
Ridge speed-up factor (needs use_terrain_wind = true) |
Real > 0 |
1.5 |
erf.fire.k_shelter |
Lee sheltering factor |
Real > 0 |
0.6 |
erf.fire.k_valley |
Valley channelling factor |
Real > 0 |
0.8 |
erf.fire.k_deflect |
Wind deflection factor |
Real > 0 |
0.3 |
erf.fire.terrain_file_name |
Fine-grid terrain file interpolated onto the fire grid for slopes |
String |
“” |
Rate of spread
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.ros_model |
Rate-of-spread model; “grass_simple” is the fit that “cheney_gould” selected before 2026-10 |
“rothermel”, “behave”, “macarthur”, “cheney_gould”, “grass_simple”, “fbp”, “balbi”, “hybrid”, “prescribed” |
“rothermel” |
erf.fire.rothermel_cell_moisture |
With moisture_dynamic, rebuild the Rothermel coefficients from each cell’s own dead moistures; false takes the domain-mean moistures everywhere (the form before 2026-10) |
Boolean |
true |
erf.fire.macarthur.ros_max |
Cap on the McArthur rate [m/s] (WRF-Fire’s 6 m/s); 0 removes it. The exponent is bounded at 40 in every case, so an uncapped rate stops growing at a 47.5 m/s midflame wind (4e16 m/s, finite, long past physical) |
Real >= 0 |
6.0 |
erf.fire.reaction_velocity_formula |
Rothermel’s reaction-velocity exponent A: Albini’s (1976) revision, A = 133 sigma^-0.7913 (ERF’s form so far), or Rothermel’s (1972) Eq. 39, A = 1/(4.774 sigma^0.1 - 7.27), the form WRF-Fire uses. Only A changes, and through I_R the default wind limit 0.9 I_R (wind_limit = rothermel). Read by every run that evaluates Rothermel (ros_model = rothermel, or a hybrid with a rothermel member); BEHAVE keeps its own Albini form; other models ignore it with a warning |
“albini”, “rothermel” |
“albini” |
erf.fire.wrf_bmst_compat |
WRF-Fire comparison: deflate the fuel load fed to the Rothermel coefficients by 1 - M/(1+M), M the dead-load- weighted dead moisture, as WRF-Fire does to its load. Not a physical correction (ERF’s loads are oven-dry) and not full WRF-Fire parity (bed SAV, net load, heat content and wind/rate caps differ); fuel consumption and heat release keep the full load. Through I_R it lowers the default wind limit 0.9 I_R too. Same readers as the row above |
Boolean |
false |
erf.fire.directional_ros |
Evaluate the rate along the front normal on the level-set path; false spreads the head rate in every direction |
Boolean |
true |
erf.fire.directional_shape |
Form of that rate: the model along the front normal, or the support function of the ellipse with the model’s head, back and flank rates, which keeps a point fire’s head at the head rate; not for balbi or hybrid |
“projection”, “ellipse” |
“projection” |
erf.fire.directional_wind_coupling |
With directional_shape = “projection”: exponentiate the wind/slope factor from the projected wind (Rothermel’s own form), or from the raw wind and scale by the cosine to the front normal afterward (matching WRF-Fire’s fire_ros), which keeps a point or finite-line fire’s head at the head rate; needs ros_model = rothermel |
“projection”, “advective” |
“projection” |
erf.fire.directional_split_hamiltonian |
With directional_wind_coupling = advective: upwind the isotropic term and the wind and slope terms of the level- set Hamiltonian separately, each advective term by the sign of its own velocity, instead of one front-normal flux; removes the grid-orientation dependence at oblique wind angles; needs ros_model = rothermel |
true, false |
false |
erf.fire.directional_ellipse_lw |
Flank rate of that ellipse: the model’s no-wind, no-slope rate, or b over Anderson’s (1983) length-to-width ratio at the effective wind speed; head and back unchanged; needs directional_shape = “ellipse” |
“model”, “anderson” |
“model” |
erf.fire.directional_ellipse_lw_max |
Cap on that Anderson ratio (the fit itself saturates at 8) |
Real >= 1 |
8.0 |
erf.fire.prescribed.ros |
Rate of spread for ros_model = prescribed where by_fuel has no entry; no wind, slope or moisture dependence, and directional_ros is turned off [m/s] |
Real >= 0 |
0.0 |
erf.fire.prescribed.gradient |
Gradient of the prescribed rate, dR/dx and dR/dy [1/s] |
Two Reals |
0.0 0.0 |
erf.fire.prescribed.origin |
Point where the prescribed rate equals its base value [m] |
Two Reals |
0.0 0.0 |
erf.fire.prescribed.min_ros |
Floor on the prescribed rate [m/s] |
Real >= 0 |
0.0 |
erf.fire.prescribed.by_fuel |
Flat list of fuel code and base rate pairs overriding prescribed.ros per cell; needs fuel_map.file |
Reals |
none |
erf.fire.cheney_gould.moisture |
Cheney-Gould dead fine fuel moisture [%] |
Real 1-40 |
10.0 |
erf.fire.cheney_gould.curing |
Cheney-Gould degree of curing |
Real 0-1 |
1.0 |
erf.fire.cheney_gould.pasture |
Cheney-Gould pasture coefficients |
“natural”, “grazed” |
“natural” |
erf.fire.cheney_gould.curing_curve |
Curing coefficient: Cruz et al. (2015) or Cheney et al. (1998) |
“cruz2015”, “cheney1998” |
“cruz2015” |
erf.fire.cheney_gould.wind_source |
Wind the 1998 model reads: the reference wind at wind_ref_ht (set it to 10 m) or the WAF-reduced midflame wind |
“reference”, “midflame” |
“reference” |
erf.fire.fbp.fuel_type |
Canadian FBP fuel type (ros_model = fbp) |
C1-C7, D1, M1-M4, S1-S3, O1A, O1B |
“C2” |
erf.fire.fbp.ffmc |
Fine Fuel Moisture Code |
Real 0-101 |
90.0 |
erf.fire.fbp.bui |
Buildup Index |
Real >= 0 |
60.0 |
erf.fire.fbp.curing |
Degree of curing of the grass types [%] |
Real 0-100 |
60.0 |
erf.fire.fbp.pc |
Percent conifer of M1 and M2 |
Real 0-100 |
50.0 |
erf.fire.fbp.pdf |
Percent dead fir of M3 and M4 |
Real 0-100 |
50.0 |
erf.fire.fbp.use_slope |
Slope through the system’s equivalent wind |
Boolean |
true |
erf.fire.fbp.wind_source |
The reference-height wind (set wind_ref_ht = 10) or the midflame wind after the Wind Adjustment Factor |
“reference”, “midflame” |
“reference” |
erf.fire.behave.dynamic_transfer_lo |
BEHAVE live herbaceous moisture [fraction] at and below which the whole live herbaceous load transfers to dead, with a linear share up to dynamic_transfer_hi. Acts only on fuels with a live herbaceous load |
Real < dynamic_transfer_hi |
0.30 |
erf.fire.behave.dynamic_transfer_hi |
BEHAVE live herbaceous moisture [fraction] at and above which none transfers; the share is (hi - M)/(hi - lo), clamped to [0,1]. Aborts unless greater than dynamic_transfer_lo |
Real > dynamic_transfer_lo |
1.20 |
erf.fire.behave.net_load |
Net fuel load of a BEHAVE category: “weighted” is Rothermel’s surface-area-weighted load with Albini’s size classes; “sum” the plain sum of the classes (the form before 2026-10, 3.3x FM10’s reaction intensity) |
“weighted”, “sum” |
“weighted” |
Balbi model
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.balbi.formulation |
Steady explicit 2009 form or convective-radiative 2020 form |
“2009”, “2020” |
“2009” |
erf.fire.balbi.T_a |
Ambient temperature [K] |
Real |
300.0 |
erf.fire.balbi.T_f |
Mean flame temperature [K], 2009 form |
Real |
1000.0 |
erf.fire.balbi.T_i |
Ignition temperature [K] |
Real |
600.0 |
erf.fire.balbi.delta_H |
Latent heat of vaporisation [J/kg] |
Real |
2.26e6 |
erf.fire.balbi.C_pf |
Specific heat of dry fuel [J/(kg K)] |
Real |
1800.0 |
erf.fire.balbi.r_00 |
Radiation length scale [m] |
Real |
2.5e-4 (2009), 2.5e-5 (2020) |
erf.fire.balbi.tau_0 |
Residence time coefficient [s/m] |
Real |
75591.0 |
erf.fire.balbi.chi_0 |
Radiant fraction, 2020 form |
Real |
0.3 |
erf.fire.balbi.C_pa |
Specific heat of air [J/(kg K)], 2020 form |
Real |
1150.0 |
erf.fire.balbi.C_pw |
Specific heat of water [J/(kg K)], 2020 form |
Real |
4180.0 |
erf.fire.balbi.T_vap |
Water vaporisation temperature [K], 2020 form |
Real |
373.0 |
erf.fire.balbi.K1 |
Convective decay coefficient, 2020 form |
Real |
130.0 |
erf.fire.balbi.st |
Stoichiometric air to pyrolysis-gas ratio, 2020 form |
Real |
17.0 |
erf.fire.balbi.rho_a |
Air density [kg/m3], 2020 form |
Real |
1.2 |
erf.fire.balbi.sigma_B |
Stefan-Boltzmann constant [W/(m2 K4)], 2020 form |
Real > 0 |
5.670374e-8 |
erf.fire.balbi.max_iter |
Root-solve iteration cap, 2020 form |
Integer >= 1 |
40 |
erf.fire.balbi.tol |
Root-solve bracket width [m/s], 2020 form |
Real > 0 |
1.0e-4 |
erf.fire.balbi.directional |
Direction-dependent Balbi spread on the level-set path |
Boolean |
false |
erf.fire.balbi.use_surface_temp |
Take the ambient temperature per cell from the atmosphere |
Boolean |
false |
erf.fire.balbi.flame_temp_from_combustion |
Derive the 2009 flame temperature from the combustion energy |
Boolean |
false |
erf.fire.balbi.use_cell_moisture |
Take the fuel moisture per cell from the moisture model |
Boolean |
false |
erf.fire.balbi.use_moisture_extinction |
Zero the rate at and above the fuel model’s moisture of extinction |
Boolean |
false |
erf.fire.balbi.herb_curing |
Fraction of live herbaceous load carried as cured dead fuel, 2020 form |
Real 0-1 |
0.0 |
erf.fire.balbi.wind_source |
Wind consumed by the model |
“midflame”, “reference” |
“midflame” |
erf.fire.balbi.heat_flux_coupling |
Add the fire-induced vertical velocity from the surface heat flux |
Boolean |
false |
erf.fire.balbi.k_upward |
Scale on the induced velocity |
Real |
1.0 |
erf.fire.balbi.hf_ref_height |
Reference height for the induced velocity [m] |
Real |
10.0 |
Hybrid model
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.hybrid.primary |
Model used where the weight is 0 |
a member model; see theory |
“rothermel” |
erf.fire.hybrid.secondary |
Model used where the weight is 1 |
a member model; see theory |
“balbi” |
erf.fire.hybrid.selector |
How the per-cell weight is set |
“region”, “fuel”, “structure”, “wind” |
“region” |
erf.fire.hybrid.region |
Rectangle x_lo y_lo x_hi y_hi [m] taking the secondary model (selector = region) |
4 Reals |
required |
erf.fire.hybrid.blend_width |
Linear ramp width across the region or structure edge [m] |
Real >= 0 |
0.0 |
erf.fire.hybrid.secondary_fuel_codes |
Fuel codes taking the secondary model (selector = fuel) |
Integers |
required |
erf.fire.hybrid.structure_file |
Building heightmap in ERF terrain text format (selector = structure) |
String |
erf.buildings_file_nam e |
erf.fire.hybrid.structure_min_height |
Sampled height above which a cell is a structure [m] |
Real |
0.5 |
erf.fire.hybrid.structure_distance |
Distance from a structure within which the secondary applies [m] |
Real >= 0 |
10.0 |
erf.fire.hybrid.wind_lo |
Effective wind speed at and below which the weight is 0 [m/s] (selector = wind) |
Real |
8.0 |
erf.fire.hybrid.wind_hi |
Effective wind speed at and above which the weight is 1 [m/s] |
Real > wind_lo |
12.0 |
Propagation
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.propagation_method |
Front propagation scheme |
“farsite”, “levelset” |
“farsite” |
erf.fire.farsite.phi_threshold |
Legacy update: level-set value at or below which a cell is a front cell |
Real |
0.1 |
erf.fire.farsite.use_anderson_lw |
Derive the ellipse coefficients from the Anderson length- to-width ratio |
0, 1 |
1 |
erf.fire.farsite.coeff_a |
Richards head coefficient when use_anderson_lw = 0 (the rectangle’s head rate a R; with farsite.shape = ellipse only the ratio (a + c) / (2 b) is read, as the length-to- width ratio) |
Real > 0 |
0.5 |
erf.fire.farsite.coeff_b |
Richards flank coefficient when use_anderson_lw = 0 (the rectangle’s flank rate b R; ellipse: see coeff_a) |
Real > 0 |
0.25 |
erf.fire.farsite.coeff_c |
Richards backing coefficient when use_anderson_lw = 0 (the rectangle’s back rate c R; the ellipse’s back is R / HB of the ratio, not c R) |
Real > 0 |
0.1 |
erf.fire.farsite.gaussian_sigma |
Legacy update: stamp radius [m], < 0 single cell, 0 automatic, > 0 fixed Gaussian |
Real |
-1.0 |
erf.fire.farsite.cfl_fire |
CFL number of the FARSITE subcycle |
Real > 0 |
0.5 |
erf.fire.farsite.front_update |
Front update: “front_cell” burns the unburned cells next to the burned region at their Hopf-Lax arrival times; “legacy” is the stamping used before 2026-09, which ran about twice the rate of spread |
“front_cell”, “legacy” |
“front_cell” |
erf.fire.farsite.shape |
Spread shape of the front-cell update: the Richards (1990) ellipse with Alexander’s head-to-back ratio, or the rectangle of the Richards coefficients read as a support function (the shape before 2026-10, head/back ratio 5) |
“ellipse”, “rectangle” |
“ellipse” |
erf.fire.levelset.cfl |
CFL number of the level-set subcycle, dt = cfl h / R_max. Start-up aborts when it makes the substep unstable with the viscosity (see eps_visc). Without viscosity, on square cells, the substep is stable up to cfl 0.888 with first-order differences and 1.015 with WENO5 |
Real > 0 |
0.4 |
erf.fire.levelset.eps_visc |
Artificial viscosity coefficient [m] away from the front: a length, so the smoothing in cells is eps_visc / dx. Start-up aborts, naming the largest stable eps_visc and cfl, when the substep is unstable for any front direction (a von Neumann scan of the RK3 substep; see the theory page). On square cells at cfl 0.4 the limit is 0.432 dx with first-order differences (gradient “upwind” or “weno5z_front”) and 0.597 dx with “weno5z”, so the default 0.4 m aborts on fire cells finer than 0.927 m; set eps_visc to about 0.4 dx there |
Real >= 0, below the stability limit |
0.4 |
erf.fire.levelset.gradient |
One-sided derivatives of the level set: first-order everywhere, HJ-WENO5-Z everywhere, or HJ-WENO5-Z within the front band and first order elsewhere (WRF-Fire) |
“upwind” / “weno5z” / “weno5z_front” |
“weno5z_front” |
erf.fire.levelset.weno_band_cells |
Half-width of the front band, in fire cells, that uses WENO with “weno5z_front” |
Integer > 0 |
4 |
erf.fire.levelset.eps_visc_front |
Artificial viscosity within visc_front_cells of the front (WRF-Fire fire_viscosity_bg); negative keeps eps_visc everywhere. Checked at start-up like eps_visc: with WENO5 inside the WENO band of “weno5z_front” (0.597 dx at cfl 0.4, so the default 0.1 m aborts on fire cells finer than 0.168 m), and with first-order differences for the value just beyond the band when that is larger than eps_visc (a band that ends inside visc_front_cells or inside the blend) |
Real; when >= 0, below the stability limit |
0.1 |
erf.fire.levelset.visc_front_cells |
Half-width, in fire cells, of the near-front viscosity band (WRF-Fire fire_viscosity_ngp) |
Integer >= 0 |
2 |
erf.fire.levelset.visc_transition_cells |
Width, in fire cells, of the linear blend from eps_visc_front to eps_visc beyond that band (WRF-Fire blends over fire_viscosity_band x fire_viscosity_ngp cells, 1 cell with its defaults) |
Real >= 0 |
2.0 |
erf.fire.levelset.reinit_every |
Reinitialise every N subcycles |
Integer > 0 |
5 |
erf.fire.levelset.reinit_iters |
Outer RK3 pseudo-time steps per reinitialisation; 0 skips the reinitialisation and its final clamp (see reinit_clamp) |
Integer >= 0 |
1 |
erf.fire.levelset.reinit_dtau |
Reinitialisation pseudo-timestep [m]; <= 0 selects 0.01 dx (WRF-Fire’s value) for both schemes |
Real |
-1.0 |
erf.fire.levelset.reinit_scheme |
Reinitialisation scheme: WRF-Fire’s reinit_ls_rk3, or Jiang and Peng’s (2000) HJ-WENO5 with SSP-RK3 |
“wrf”, “jiang_peng” |
“wrf” |
erf.fire.levelset.reinit_clamp |
Reference of the reinitialisation’s final clamp phi = min(phi, phi_ref), “the burned area only grows”: the level set at the start of the subcycle that ends with the reinitialisation, before its advection (WRF-Fire’s), or the advected field the reinitialisation starts from (the form before 2026-10, which never lets a too-steep burned side relax and moves the front forward). No effect with reinit_iters = 0 |
“step_start”, “post_advection” |
“step_start” |
erf.fire.levelset.reinit_jp_sign_eps2 |
jiang_peng only: term added to phi0^2 under the smoothed-sign square root; <= 0 selects dx^2 |
Real |
-1.0 |
erf.fire.levelset.wall_extrapolate |
Extrapolate the level set into non-burnable cells inside every stencil, so a masked wall is a zero-gradient boundary |
Boolean |
false |
erf.fire.levelset.mask_mode |
Non-burnable cells: “wall” holds them at phi >= 0 with a wall stencil, “wrf” (as WRF-Fire) only zeroes their rate (split Hamiltonian path): no hold, no wall stencil, reinitialisation acts on every cell |
“wall”, “wrf” |
“wall” |
erf.fire.levelset.ellipse |
Spread as a Huygens ellipse set by the midflame wind (FARSITE family); turns the directional_ros default off, and cannot be combined with an explicit true |
Boolean |
false |
erf.fire.levelset.ellipse_lw |
Fixed length-to-width ratio of that ellipse; 0 = Anderson (1983) from the wind |
Real >= 0 |
0.0 |
erf.fire.levelset.ellipse_lw_max |
Cap on the length-to-width ratio |
Real >= 1 |
8.0 |
erf.fire.accel.enable |
Startup acceleration of the rate of spread |
Boolean |
false |
erf.fire.accel.use_temporal |
Temporal per-cell model instead of the size-based model |
Boolean |
false |
erf.fire.accel.L_acc |
Size-based acceleration length scale [m] |
Real > 0 |
50.0 |
erf.fire.accel.A_point |
Temporal acceleration constant, point fire [1/min] |
Real > 0 |
0.115 |
erf.fire.accel.A_line |
Temporal acceleration constant, line fire [1/min] |
Real > 0 |
0.886 |
erf.fire.accel.perim_limit |
Perimeter length separating point and line fires [m] |
Real > 0 |
500.0 |
erf.fire.accel.enable_wind_lag |
Exponential lag on wind increases (legacy clock only) |
Boolean |
false |
erf.fire.accel.tau_wind |
Wind-lag time constant [s] |
Real > 0 |
60.0 |
erf.fire.accel.clock |
Clock of the temporal model: “legacy” per burned cell, restarted when the cell burns and written to burned cells only; “front” from ignition, carried with the front and applied to the rate that moves it |
String |
“legacy” |
Heat flux and coupling
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.tau_residence_s |
Fixed residence time [s]; 0 derives it from the cell crossing time and fuel SAV |
Real >= 0 |
0.0 |
erf.fire.burnout_model |
Fuel burnout e-folding time: the cell crossing time floored by the particle time (residence) or WRF-SFIRE’s burn time per fuel model / 0.8514 (sfire) |
“residence”, “sfire” |
“residence” |
erf.fire.burnout_times_s |
13 burn times [s] for Anderson models 1-13 overriding the table (sfire) |
13 Reals > 0 |
SFIRE table |
erf.fire.burnout_time_to_efold |
Divisor turning a burn time into the e-folding time |
Real > 0 |
0.8514 |
erf.fire.coupling_type |
Wind used by the fire and whether its heat is injected |
“passive”, “lagged”, “synchronous” |
“lagged” |
erf.fire.heat_flux_alfg |
E-folding height of the injected heat [m] |
Real > 0 |
45.0 |
erf.fire.fire_atm_feedback |
Multiplier on the injected fluxes; 0 is one-way coupling |
Real >= 0 |
1.0 |
erf.fire.inject_latent |
Inject the latent flux into the vapour equation when moisture is active |
Boolean |
true |
erf.fire.heat_flux_partition |
Sensible flux handed to the atmosphere: the full heat release (legacy) or the CFBM dry-fuel share 1/(1+M_f) |
“legacy”, “cfbm” |
“legacy” |
erf.fire.prescribed_heat.flux |
Constant sensible heat flux added to the fire heat flux over a disc, whatever the fuel and front; injected like fire heat; 0 is off [W/m2] |
Real >= 0 |
0.0 |
erf.fire.prescribed_heat.center |
Centre of the prescribed heat-flux disc [m] |
Two Reals |
0.0 0.0 |
erf.fire.prescribed_heat.radius |
Radius of the prescribed heat-flux disc [m] |
Real > 0 when flux > 0 |
0.0 |
erf.fire.prescribed_heat.start_time |
Time the prescribed heat flux switches on [s] |
Real |
0.0 |
erf.fire.prescribed_heat.end_time |
Time it switches off [s]; negative keeps it on |
Real |
-1.0 |
erf.fire.source_mode |
Replace the theta and vapour source slots (legacy) or add to the rebuilt stage source. Left at the default with another theta source on the fire level (radiation, Rayleigh damping of T, custom forcing or subsidence, immersed forcing) the run stops: set it explicitly |
“overwrite”, “add” |
“overwrite” |
erf.fire.heat_open_fraction |
Place injected heat only in the open part of columns with structures; needs structures.enable |
Boolean |
false |
erf.fire.heat_tendency_density |
Restore the historical density factor in the injected tendency (injects rho times the flux); false is energy- consistent |
Boolean |
false |
erf.fire.heat_tendency_exner |
Divide the rho theta tendency by the cell’s Exner function so the column enthalpy integrates to the fire flux; false (WRF-SFIRE’s form) injects Pi times the flux, 4.5 % short at 850 hPa |
Boolean |
false |
erf.fire.smoke_enable |
Add the passive smoke tracer |
Boolean |
false |
erf.fire.smoke_emission_factor |
Smoke mass per unit fuel burned [kg/kg] |
Real >= 0 |
0.02 |
erf.fire.smoke_heat_of_comb |
Heat of combustion used to convert flux to fuel burned [J/kg] |
Real > 0 |
1.87e7 |
erf.fire.smoke_heat_from_fuel |
Convert the flux to fuel burned with the fuel model’s own heat content instead of smoke_heat_of_comb (CFBM parity) |
Boolean |
false |
Spotting
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.spotting.enable |
Albini ember spotting |
Boolean |
false |
erf.fire.spotting.I_B_min |
Minimum Byram intensity to loft a brand [kW/m] |
Real > 0 |
100.0 |
erf.fire.spotting.P_base |
Launch probability per front cell per application |
Real 0-1 |
0.01 |
erf.fire.spotting.terminal_velocity |
Brand terminal fall velocity [m/s] |
Real > 0 |
0.5 |
erf.fire.spotting.n_traj_steps |
Forward-Euler sub-steps along the trajectory |
Integer > 0 |
20 |
erf.fire.spotting.launch_from |
Cells that may launch a brand: every burned cell, or only those with unburned fuel within front_band cells |
“burned”, “front” |
“burned” |
erf.fire.spotting.front_band |
Band width for launch_from = front [fire cells] |
Integer >= 1 |
2 |
erf.fire.spotting.spot_radius |
Ignition disc radius at the landing point [m] |
Real > 0 |
10.0 |
erf.fire.spotting.P_catch |
Probability that a landed brand ignites |
Real 0-1 |
1.0 |
erf.fire.spotting.reentry_fuel_thresh |
Minimum remaining fuel fraction for a landing to ignite |
Real 0-1 |
0.05 |
erf.fire.spotting.random_seed |
Random seed; <= 0 seeds from the clock (not repeatable) |
Integer |
0 |
erf.fire.spotting.spotting_interval |
Apply spotting every N fire steps (one per atmospheric step) |
Integer > 0 |
1 |
erf.fire.spotting.fuel_system |
Fuel system of the maximum-distance table |
“13”, “40” |
“13” |
Crown fire
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.crown.enable |
Crown fire initiation and active crown spread |
Boolean |
false |
erf.fire.crown.canopy_base_ht |
Canopy base height [m] |
Real > 0 |
5.0 |
erf.fire.crown.canopy_bulk_den |
Canopy bulk density [kg/m3] |
Real > 0 |
0.2 |
erf.fire.crown.canopy_depth |
Canopy depth [m] |
Real > 0 |
10.0 |
erf.fire.crown.foliar_moisture |
Foliar moisture [fraction] |
Real |
1.0 |
erf.fire.crown.h_crown_BTU_lb |
Canopy heat content [BTU/lb] |
Real > 0 |
8000.0 |
erf.fire.crown.wind_10m_kmh |
Fixed 10 m wind for the crown rate [km/h]; 0 derives it from the effective wind |
Real >= 0 |
0.0 |
erf.fire.crown.ros_model |
Active crown rate-of-spread model |
“cruz”, “rothermel1991”, “van_wagner_proxy” |
“cruz” |
erf.fire.crown.use_passive_blend |
Blend surface and crown rates through the crowning fraction |
Boolean |
false |
Diagnostics and output
Parameter |
Definition |
Acceptable Values |
Default |
|---|---|---|---|
erf.fire.flame_temp_method |
Flame temperature estimate |
“byram_radiant”, “mcalpine_heat”, “nelson_emissivity” |
“byram_radiant” |
erf.fire.flame_temp_T_amb |
Ambient temperature for the flame temperature [K] |
Real |
300.0 |
erf.fire.compute_flame_tilt |
Compute the flame tilt diagnostic |
Boolean |
false |
erf.fire.flame_tilt_T_amb |
Ambient temperature for the tilt buoyancy velocity [K] |
Real |
300.0 |
erf.fire.flame_tilt_rho_air |
Air density for the tilt buoyancy velocity [kg/m3] |
Real |
1.2 |
erf.fire.write_fire_stats_csv |
Append burned area, perimeter and front statistics each step |
Boolean |
true |
erf.fire.fire_stats_csv_file |
Statistics CSV filename |
String |
“fire_stats.csv” |
erf.fire.boundary_guard_cells |
Width, in fire cells, of the band along every non-periodic edge of the fire grid that the boundary guard watches |
Integer >= 0 |
2 |
erf.fire.boundary_guard_action |
When a burning cell enters the band: “warn” prints once and records the contact time, “abort” stops the run, “none” checks nothing |
“none”, “warn”, “abort” |
“warn” |
erf.fire.edge_reach_check |
Print once at ignition the distance to each edge against the largest rate of spread times the time left in the run |
Boolean |
true |
erf.fire.probes |
Flat list of x y points [m] whose arrival time is printed once |
Reals |
none |
erf.fire.exposure.enable |
Per-structure exposure CSV and fields; needs structures.enable |
Boolean |
false |
erf.fire.exposure.file |
Exposure CSV filename |
String |
“fire_exposure.csv” |
erf.fire.exposure.interval |
Fire steps between exposure rows |
Integer >= 1 |
100 |
erf.fire.exposure.ring |
Width of the wall band around a footprint [fire cells] |
Integer 1-4 |
1 |
erf.fire.suppression.enable |
Read and apply the suppression action file (fire lines, drops, hold test, burnout); see Suppression |
Boolean |
false |
erf.fire.suppression.file |
The action file; required with suppression.enable |
String |
none |
erf.fire.suppression.poll_interval |
Fire steps between modification-time checks of the file; 0 reads it once at start-up |
Integer >= 0 |
10 |
erf.fire.suppression.log |
Event log (applied, completed, expired, hold_failed, burnout, reread) |
String |
“suppression_log.csv” |
erf.fire.plot_file |
Fire plotfile prefix |
String |
|
erf.fire.plot_int |
Steps between fire plotfiles; < 0 disables |
Integer |
-1 |
erf.fire.plot_per |
Seconds between fire plotfiles; < 0 disables |
Real |
-1.0 |