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

plt_fire_

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