Usage Guide
This section describes how to use the wildfire level-set solver to run simulations.
Input Files
The solver reads configuration from an input file (typically named inputs.i). The input file uses AMReX’s ParmParse format with key-value pairs.
Basic Input File Structure
A minimal input file looks like:
# Domain and grid
n_cell_x = 128
n_cell_y = 128
max_grid_size = 32
prob_lo_x = 0.0
prob_lo_y = 0.0
prob_hi_x = 100.0
prob_hi_y = 100.0
# Time stepping
nsteps = 100
cfl = 0.5
# Initial condition
source_type = sphere
sphere_center_x = 50.0
sphere_center_y = 50.0
sphere_center_z = 0.5
sphere_radius = 5.0
# Fire model
fire_spread_model = rothermel
propagation_method = farsite
# Rothermel fuel properties
rothermel.fuel_model = FM4
rothermel.M_f = 0.08
Running Simulations
Basic Execution
Run the solver with an input file:
./levelset inputs.i
The solver will:
Read the input file
Set up the grid and initial conditions
Run the time-stepping loop
Write output files to the
plt/directory
Output Files
The solver produces AMReX plotfiles in the plt/ directory:
plt0000/: Initial conditionplt0001/: After firstplot_intstepsplt0002/: After secondplot_intstepsetc.
Each plotfile directory contains:
Header: Metadata about the grid and variablesLevel_0/: Cell-centered data filesCell_H: Cell header information
Each plotfile contains the following fields:
Field name |
Description |
|---|---|
|
Level-set function (fire front where phi = 0) |
|
Wind velocity components [m/s] |
|
FARSITE spread displacements |
|
Rate of spread [m/s] |
|
Firebrand spotting probability and count |
|
Spotting distance [m] and ignition flag |
|
Bulk fuel consumption fraction |
|
Crown fire fraction |
|
Albini lofting height [m] |
|
Firebrands launched per cell |
|
Maximum firebrand landing distance [m] |
|
Albini spot ignition flag |
|
Terrain elevation [m] |
|
Terrain slope [degrees] |
|
Terrain aspect [degrees] |
|
Fuel model number (from landscape) |
|
Byram fireline intensity [kW/m] |
|
Byram flame length [m] |
|
Weise & Biging flame height [m] |
|
Flame tilt angle [rad] |
|
Fire whirl height [m] |
|
Fire whirl radius [m] |
|
Fire whirl angular velocity [rad/s] |
|
Fire whirl max tangential velocity [m/s] |
|
Viegas eruptive rate of spread [m/s] |
|
Viegas eruptive fire flag (0/1) |
|
Viegas ROS excess above threshold |
|
Viegas flame tilt angle [rad] |
|
Viegas slope amplification factor |
|
Van Wagner scorch height [m] |
|
Anderson probability of ignition [0–1] |
|
Ryan–Reinhardt tree mortality [0–1] |
|
Crown activity class (0=surface, 1=passive, 2=active) |
|
Scott–Reinhardt torching ratio |
|
Scott–Reinhardt crowning ratio |
|
NFDRS energy release component |
|
NFDRS spread component |
|
NFDRS burning index |
|
CO₂ emission rate [kg/m²/s] |
|
CO emission rate [kg/m²/s] |
|
PM₂.₅ emission rate [kg/m²/s] |
|
Fire arrival time [s] |
|
Heat per unit area [kJ/m²] |
|
Vertical vorticity [1/s] |
|
Canopy base height [m] |
|
Canopy bulk density [kg/m³] |
|
Canopy cover fraction [0–1] |
|
Canopy height [m] |
|
Cell burnout time [s] |
|
Rothermel reaction intensity [BTU/ft²/min] |
|
Residual (unconsumed) fuel fraction |
|
Terrain/canopy shade fraction [0–1] |
|
Scott–Reinhardt torching index [km/h] |
|
Scott–Reinhardt crowning index [km/h] |
|
1-hr dead fuel moisture [fraction] |
|
10-hr dead fuel moisture [fraction] |
|
100-hr dead fuel moisture [fraction] |
|
Live herbaceous moisture [fraction] |
|
Live woody moisture [fraction] |
Note
The plotfile can become large when all variables are enabled. Use
plot_vars to write only the fields you need (see Controlling Plotfile Output Variables).
In addition, two plain-text files are written at each output step:
phi_negative_NNNN.dat: X, Y coordinates of all cells wherephi < 0(inside the fire)phi_envelope_NNNN.dat: X, Y coordinates of the convex hull of the fire perimeter
Input Parameters Reference
All Parameters Quick Reference
The following table lists every input parameter with its default value and purpose. Detailed descriptions and examples follow in the subsections below.
Parameter |
Default |
Purpose |
|---|---|---|
Domain and Grid |
||
|
64 |
Number of cells in all directions (cube); overridden by per-direction values |
|
n_cell |
Number of cells in each Cartesian direction independently |
|
32 |
Maximum grid-box size for domain decomposition |
|
0.0 |
Lower corner of physical domain [m] |
|
1.0 |
Upper corner of physical domain [m] |
Time Stepping |
||
|
300 |
Maximum number of time steps (used when |
|
-1.0 |
Simulation stop time [s]; overrides |
|
0.5 |
CFL number for adaptive time-step calculation |
|
50 |
Number of time steps between output (plot) files |
|
“” (all) |
Space-separated list of variable names to include in plotfiles; when empty all fields are written (see Controlling Plotfile Output Variables for the complete list) |
|
20 |
Steps between level-set reinitialization (-1 = disabled) |
Initial Conditions |
||
|
sphere |
Initial fire shape: |
|
0.5, 0.5, 0.5 |
Center of spherical ignition [m] |
|
(required) |
Radius of spherical ignition [m] |
|
(required) |
Bounds of box ignition region [m] |
|
(required) |
Center and semi-axes of elliptical ignition [m] |
|
“” |
CSV of ignition point coordinates (X Y [Z]), one per row |
|
auto |
Ignition disk radius [m] (≤ 0 = 3 × min cell spacing) |
|
“” |
CSV vertex file for |
|
10.0 |
Half-width of line-ignition zone [m] |
|
0.5 |
Z-centre of ignition layer in 3-D polygon/polyline runs [m] |
Fire Model Selection |
||
|
rothermel |
ROS model: |
|
levelset |
Propagation method: |
Barriers |
||
|
“” |
Space-separated list of barrier polyline/polygon CSV files |
Rothermel Fuel Properties |
||
|
custom |
Fuel model name from database (e.g. |
|
0.08 |
Aggregate dead fuel moisture [fraction] |
|
0.30 |
Moisture of extinction [fraction] |
|
0.230 |
Oven-dry total fuel loading [lb/ft²] |
|
1739.0 |
Surface-area-to-volume ratio [ft⁻¹] |
|
2.0 |
Fuel bed depth [ft] |
|
8000.0 |
Heat content [BTU/lb] |
|
0.0555 |
Total mineral content [fraction] |
|
0.010 |
Effective mineral content [fraction] |
|
32.0 |
Oven-dry particle density [lb/ft³] |
|
0.0 |
Constant terrain slope (tan θ) in x and y directions |
|
=M_f |
1-hr dead fuel moisture [fraction] |
|
=M_f |
10-hr dead fuel moisture [fraction] |
|
=M_f |
100-hr dead fuel moisture [fraction] |
|
0.90 |
Live herbaceous fuel moisture [fraction] |
|
1.20 |
Live woody fuel moisture [fraction] |
|
0.0 |
1-hr dead fuel load [lb/ft²] (override) |
|
0.0 |
1-hr dead SAV [ft⁻¹] (override) |
|
0.0 |
10-hr dead fuel load [lb/ft²] (override) |
|
0.0 |
100-hr dead fuel load [lb/ft²] (override) |
|
0.0 |
Live herbaceous fuel load [lb/ft²] (override) |
|
0.0 |
Live herbaceous SAV [ft⁻¹] (override) |
|
0.0 |
Live woody fuel load [lb/ft²] (override) |
|
0.0 |
Live woody SAV [ft⁻¹] (override) |
|
0 |
Enable Wind Adjustment Factor (1=yes): converts 20-ft→midflame wind |
|
|
WAF formula: |
|
1.5 |
Canopy attenuation coefficient α_c for the BehavePlus exponential canopy
WAF: WAF_canopy = WAF_open × exp(−α_c × f_c). Larger values give
stronger wind sheltering. Only used when |
Cheney & Gould Grassland Parameters |
||
|
10.0 |
Dead fine fuel moisture [%] |
|
1.0 |
Degree of grass curing [0–1; 1 = fully cured] |
Canadian FBP System Parameters |
||
|
o1a |
FBP fuel type (overridden by fire_spread_model): |
|
10.0 |
Dead fine fuel moisture [%] |
|
80.0 |
Degree of grass curing [%] (O1a/O1b only) |
Lautenberger (2013) Parameters |
||
|
1.05e-5 |
Pre-exponential ROS coefficient [m²/s] |
|
2.5 |
Wind speed exponent (dimensionless) |
|
0.40 |
Moisture sensitivity coefficient [(m/s)⁻¹] |
|
0.50 |
Slope sensitivity coefficient (dimensionless) |
Wind |
||
|
0.25, 0.0, 0.0 |
Constant wind velocity components [m/s] |
|
“” |
Spatially-varying wind field CSV (X Y U V) |
|
0 |
Enable time-dependent sequence of wind field files (1=yes) |
|
60.0 |
Time spacing between consecutive wind field files [s] |
|
“” |
Three-column CSV wind schedule (time_s, speed_ms, dir_deg) |
|
“” |
Station list CSV for multi-station IDW weather interpolation |
|
2.0 |
IDW exponent for multi-station weather interpolation |
Terrain |
||
|
“” |
Terrain elevation CSV (X Y Z) |
|
“” |
FARSITE landscape file (ASCII: X Y ELEV SLOPE ASPECT FUEL) |
|
“13” |
Fuel model system in landscape file: |
FARSITE Parameters |
||
|
0 |
Use Anderson (1983) L/W ratio from wind speed (1=yes) |
|
3.0 |
Fixed ellipse length-to-width ratio |
|
1.0 |
Richards’ head-fire (maximum spread) coefficient |
|
0.5 |
Richards’ flank-fire coefficient |
|
0.2 |
Richards’ backing-fire (minimum spread) coefficient |
|
0.1 |
Level-set threshold for fire-front cell detection |
|
0 |
Scale ellipse L/W during active crown fire (1=yes) |
|
1.5 |
L/W multiplier applied during active crown fire |
|
-1.0 |
SDF smoothing radius for spread-point stamping [m]; <0=single-cell, 0=auto (3 cells), >0=user-specified |
Crown Fire Parameters |
||
|
0 |
Enable Van Wagner (1977) crown fire model (1=yes) |
|
4.0 |
Canopy base height [m] |
|
0.15 |
Canopy bulk density [kg/m³] |
|
100.0 |
Foliar moisture content [%] |
|
1.0 |
Crown fire weighting factor [0–2] |
|
1 |
Unit system: 1 = metric (m, kW/m), 0 = imperial |
|
0 |
Use Cruz (2005) empirical crown ROS formula instead of Van Wagner proxy (1=yes) |
|
0.10 |
Canopy bulk density for Cruz (2005) formula [kg/m³] |
|
10.0 |
10-hr dead fuel moisture for Cruz (2005) formula [%] |
Bulk Fuel Consumption |
||
|
0 |
Enable exponential bulk fuel consumption model (1=yes) |
|
60.0 |
Fuel residence / burnout time [s] |
|
0.9 |
Maximum fuel consumption fraction [0–1] |
|
0.5 |
Minimum fuel consumption fraction [0–1] |
Probability-Based Spotting |
||
|
0 |
Enable stochastic firebrand spotting model (1=yes) |
|
0.02 |
Base spotting probability per fire-front cell [0–1] |
|
0.3 |
Wind speed scaling coefficient for spotting probability |
|
1000.0 |
Critical fire intensity threshold for spotting [kW/m] |
|
0.1 |
Mean spotting distance parameter |
|
0.5 |
Lognormal standard deviation for spotting distance |
|
10.0 |
Exponential decay rate for spotting distance |
|
“lognormal” |
Spotting distance distribution: |
|
15.0 |
Angular spread perpendicular to wind direction [°] |
|
0.02 |
Spot-fire ignition zone radius [m] |
|
0 |
RNG seed (0 = system clock) |
|
5 |
Run spotting model every N time steps |
Albini (1983) Physics-Based Spotting |
||
|
0 |
Enable Albini physics-based spotting model (1=yes) |
|
1.0 |
Firebrand terminal descent velocity [m/s] |
|
0.01 |
Maximum launch probability per front cell [0–1] |
|
10.0 |
Minimum Byram intensity for firebrand launch [kW/m] |
|
5.0 |
Spot-fire ignition zone radius [m] |
|
0 |
RNG seed (0 = system clock) |
|
5 |
Run Albini spotting every N time steps |
|
100 |
Forward-Euler sub-steps for 2-D firebrand trajectory |
|
0 |
Use 3-D wind from massconsistent_amr plt file for trajectory (1=yes) |
|
“” |
Path to massconsistent_amr plt directory (required when use_3d_wind=1) |
Torching-Tree Spotting |
||
|
0 |
Enable torching-tree spotting model (1=yes) |
|
4.24 |
Spotting distance coefficient: d = k × U × √H_eff [m] |
|
100.0 |
Minimum Byram intensity for torching-tree spotting [kW/m] |
|
5.0 |
Spot-fire ignition zone radius [m] |
|
0.05 |
Probability of spotting per torching cell per check [0–1] |
|
5 |
Run torching-tree spotting every N time steps |
|
1 |
Min crown activity to trigger spotting (1=passive+active, 2=active-only) |
|
0 |
RNG seed (0 = system clock) |
Turbulent Wind Perturbation |
||
|
“none” |
Turbulent wind model: |
|
0.1 |
Ornstein-Uhlenbeck reversion rate [s⁻¹] |
|
0.5 |
OU stationary standard deviation [m/s] |
|
0.0 |
Spatial correlation length [m] (0 = domain-uniform perturbation) |
|
32 |
Number of random Fourier modes ( |
|
0.1 |
Direction walk angular standard deviation [rad/step] |
|
0.5236 |
Max cumulative direction deviation [rad] (≈ ±30°) |
|
0 |
RNG seed (0 = system clock) |
Wind-Terrain Feedback |
||
|
“none” |
Terrain wind model: |
|
1.0 |
Canyon wind amplification coefficient ( |
|
0.5 |
Exponential slope correction coefficient ( |
|
1.0 |
Ridge speed-up coefficient ( |
|
0.5 |
Canyon channeling coefficient ( |
Heat Flux |
||
|
0.0 |
Uniform heat flux [W/m²] |
|
“” |
Spatially-varying heat flux CSV (X Y Q); overrides |
|
1.2 |
Air density [kg/m³] |
|
1005.0 |
Specific heat of air [J/(kg·K)] |
|
300.0 |
Ambient temperature for buoyancy calculation [K] |
|
10.0 |
Reference plume height for buoyancy calculation [m] |
|
1.0 |
Scaling coefficient for fire-plume upward velocity |
|
0.5 |
Scaling coefficient for induced horizontal inflow |
|
0 |
Enable upward convective velocity term (1=yes) |
|
0 |
Enable induced horizontal inflow term (1=yes) |
Fire Ecology Coupling |
||
|
0 |
Scale ROS by per-cell ignition probability in unburned cells (1=yes) |
|
0.05 |
Minimum ignition probability used as ROS scale floor |
|
25.0 |
Ambient temperature for fire ecology calculations [°C] |
|
25.0 |
Solar temperature increment [°F] |
|
10.0 |
Mean stand height for tree mortality sub-model [m] |
Persistent Fuel Depletion |
||
|
0 |
Track per-cell residual fuel fraction (1=yes) |
|
3600.0 |
Fine-fuel burnout time constant [s] |
|
0 |
Scale ROS by residual fuel in re-entry cells (1=yes) |
Fire Acceleration |
||
|
0 |
Enable small-fire acceleration model (1=yes) |
|
50.0 |
Acceleration length scale [m] |
FMC Seasonal Schedule |
||
|
0 |
Enable FMC seasonal schedule (1=yes) |
|
“” |
Two-column CSV (day-of-year, fmc_pct) |
|
0 |
Use built-in parametric phenology curve (1=yes) |
|
1 |
Day-of-year at simulation t = 0 |
|
90 |
DOY when spring green-up begins |
|
150 |
DOY when FMC reaches its maximum |
|
240 |
DOY when autumn curing begins |
|
300 |
DOY when curing ends |
|
85.0 |
Dormant / cured FMC [%] |
|
140.0 |
Peak green FMC [%] |
Precipitation Wetting |
||
|
0.0 |
Constant rain rate [mm/hr] |
|
“” |
CSV of (time_s, rain_mm_hr) for time-varying rain |
|
0.25 |
Minimum rain rate to trigger dead-fuel wetting [mm/hr] |
|
1.20 |
Saturation moisture content [fraction] |
FMS Moisture Scenario File |
||
|
“” |
Path to FARSITE |
Domain and Grid
- n_cell (default: 64)
Number of cells in all directions (cube). Overridden by per-direction values.
Example:
n_cell = 64- n_cell_x, n_cell_y, n_cell_z (default: n_cell)
Number of cells in each direction independently.
Example:
n_cell_x = 128,n_cell_y = 128- max_grid_size (default: 32)
Maximum size of each grid box for domain decomposition.
Example:
max_grid_size = 64- prob_lo_x, prob_lo_y, prob_lo_z (default: 0.0)
Lower corner of physical domain in each direction.
Example:
prob_lo_x = 330000.0,prob_lo_y = 3775000.0- prob_hi_x, prob_hi_y, prob_hi_z (default: 1.0)
Upper corner of physical domain in each direction.
Example:
prob_hi_x = 331000.0,prob_hi_y = 3776000.0
Time Stepping
- nsteps (default: 300)
Maximum number of time steps. Used when
final_timeis not set.Example:
nsteps = 500- final_time (default: -1.0)
Simulation stop time in seconds. When positive, overrides
nsteps.Example:
final_time = 3600.0- cfl (default: 0.5)
CFL number for time step calculation:
\[\Delta t = \text{CFL} \times \frac{\Delta x}{V_{max}}\]Example:
cfl = 0.7- plot_int (default: 50)
Plot interval (number of steps between output files).
Example:
plot_int = 10- reinit_int (default: 20)
Reinitialization interval (number of steps between level-set reinitialization). Set to -1 to disable.
Example:
reinit_int = 20
Initial Conditions
- source_type (default:
sphere) Type of initial fire shape. Options:
sphere,box,ellipse,eb.Example:
source_type = box
Sphere ignition
- center_x, center_y, center_z (default: 0.5, 0.5, 0.5)
Center coordinates of the initial spherical fire.
Example:
center_x = 330050.0,center_y = 3775050.0- sphere_radius
Radius of the initial spherical fire [physical units].
Example:
sphere_radius = 10.0
Box ignition
- box_xmin, box_xmax, box_ymin, box_ymax, box_zmin, box_zmax
Bounds of the initial rectangular fire region.
Example:
box_xmin = 10.0,box_xmax = 15.0,box_ymin = 30.0,box_ymax = 70.0
Ellipse ignition
- ellipse_center_x, ellipse_center_y, ellipse_center_z
Center coordinates of the initial elliptical fire.
Example:
ellipse_center_x = 0.4,ellipse_center_y = 0.5- ellipse_radius_x, ellipse_radius_y, ellipse_radius_z
Semi-axes of the initial elliptical fire.
Example:
ellipse_radius_x = 0.25,ellipse_radius_y = 0.15
Embedded Boundary (EB) ignition
Use source_type = eb to initialize the fire from an implicit-function shape.
This is useful when the EB feature is enabled in the build.
- eb_type
Implicit function type. Options:
sphere,ellipsoid,cylinder,plane.Example:
eb_type = ellipsoid- eb_param1 – eb_param6
Parameters for the chosen EB implicit function (center, radii, etc.).
For an ellipsoid:
eb_param1= center_x,eb_param2= center_y,eb_param3= center_z,eb_param4= radius_x,eb_param5= radius_y,eb_param6= radius_z.Example:
eb_type = ellipsoid eb_param1 = 0.3 eb_param2 = 0.5 eb_param3 = 0.5 eb_param4 = 0.20 eb_param5 = 0.15 eb_param6 = 0.10
CSV Fire Points ignition
- fire_points_file (default: “”)
Path to a CSV file containing ignition point coordinates (X Y [Z]), one point per row. Takes precedence over
source_typewhen non-empty. The level-set field is initialized as a signed distance function from the union of small disks centred on each point.Example:
fire_points_file = ignition_points.csv- fire_gaussian_sigma (default: auto)
Radius of each ignition disk in physical units. When ≤ 0, the radius is set automatically to 3 times the minimum cell spacing.
Example:
fire_gaussian_sigma = 15.0
Fire Model Selection
- fire_spread_model (default:
rothermel) Select the rate-of-spread model. Currently supported values:
rothermel– Rothermel (1972) empirical fire spread model (default)balbi– Balbi (2009) radiation-driven physics-based modelcheney_gould– Cheney & Gould (1995/1998) empirical grassland fire spread modelcruz_crown– Cruz, Alexander & Wakimoto (2005) algebraic crown fire spread modelfbp_o1a– Canadian Forest Fire Behaviour Prediction (FBP) System: O1a matted grassfbp_o1b– Canadian FBP System: O1b standing grassfbp_s1– Canadian FBP System: S1 Jack or Lodgepole Pine slashfbp_s2– Canadian FBP System: S2 White Spruce-Balsam slashfbp_s3– Canadian FBP System: S3 Coastal Cedar-Hemlock-Douglas-Fir slashlautenberger– Lautenberger (2013) semi-empirical firebrand-driven model
Example:
fire_spread_model = cheney_gould- propagation_method (default:
levelset) Select how the fire perimeter is propagated. Currently supported values:
levelset– WENO5-Z level-set advection (default); Rothermel/Balbi ROS drives the signed-distance evolution equation.farsite– FARSITE elliptical Huygens-wavelet expansion (Richards 1990); uses the FARSITE spread parameters (farsite.*) and pre-computed ROS.mtt– Minimum Travel Time (Finney 2002); arrival times are pre-computed once via a Dijkstra fast-marching sweep using the selected ROS model, thenphi = arrival_time − current_timeis applied each step. No reinitialization is needed. Compatible with all fire spread models.
Example:
propagation_method = mtt
Barrier Polygons / Firebreaks
- barrier_files (default: empty)
Space-separated list of CSV files, each defining a barrier polyline or polygon as a sequence of
X Y [Z]vertex coordinates (one per line; lines starting with#are ignored). At every time step the nearest grid cells to each barrier vertex are identified and any that are currently burning (phi < 0) are extinguished by settingphi = +0.5 * min(dx,dy).This models firebreaks, fuel breaks, roads, or other physical barriers without using the AMReX Embedded Boundary (EB) framework.
Example:
barrier_files = road_break.csv ridge_break.csv
Each CSV file format:
# X Y coordinates of barrier vertices (UTM metres) 330100.0 3775300.0 330200.0 3775300.0 330300.0 3775300.0
- burn_period.enable (default: 0)
When set to 1, fire spread (rate-of-spread field) is suppressed to zero outside a user-specified daily active-burn time window. This reproduces the operational burn period concept used in FARSITE and FSPro, where nighttime recovery of fuel moisture effectively halts spread. Moisture evolution and all diagnostics continue normally during inactive hours.
Example:
burn_period.enable = 1 burn_period.start_hour = 10.0 # 10:00 AM – spread begins burn_period.end_hour = 20.0 # 8:00 PM – spread ends burn_period.sim_start_hour = 8.0
- burn_period.start_hour (default: 10.0)
Local clock hour (decimal, 0–24) when the daily burn period begins.
- burn_period.end_hour (default: 20.0)
Local clock hour (decimal, 0–24) when the daily burn period ends. Overnight windows (
end_hour < start_hour) are handled correctly.- burn_period.sim_start_hour (default: inherited from
solar_radiation.sim_start_hour) Local clock hour at simulation time = 0. Defaults to
solar_radiation.sim_start_hourwhen solar shading is enabled; otherwise defaults to 0.0 (midnight start).
Rothermel Fuel Properties
- rothermel.fuel_model (default: custom chaparral)
Fuel model name from the database (e.g.
FM1–FM13for Anderson 13 models, orFM101–FM256for Scott & Burgan 40 models).Example:
rothermel.fuel_model = FM4- rothermel.M_f (default: 0.08)
Aggregate fuel moisture content (fraction, 0.0–1.0). Used as the default for all dead size classes when per-class moistures are not specified.
Example:
rothermel.M_f = 0.08- rothermel.M_x (default: 0.30)
Moisture of extinction (fraction).
Example:
rothermel.M_x = 0.25- rothermel.w0 (default: 0.230)
Oven-dry total fuel loading [lb/ft²]. Overrides the database value.
Example:
rothermel.w0 = 0.3- rothermel.sigma (default: 1739.0)
Surface-area-to-volume ratio [ft⁻¹]. Overrides the database value.
Example:
rothermel.sigma = 1500.0- rothermel.delta (default: 2.0)
Fuel bed depth [ft].
Example:
rothermel.delta = 1.5- rothermel.h_heat (default: 8000.0)
Heat content [BTU/lb].
- rothermel.S_T (default: 0.0555)
Total mineral content (fraction).
- rothermel.S_e (default: 0.010)
Effective mineral content (fraction).
- rothermel.rho_p (default: 32.0)
Oven-dry particle density [lb/ft³].
- rothermel.slope_x, rothermel.slope_y (default: 0.0)
Constant terrain slope (tan of slope angle) in x and y directions, when no terrain file is used.
Example:
rothermel.slope_x = 0.1
Per-Class Fuel Moisture (Multi-Class Rothermel Path)
When a fuel model from the database is selected (e.g.
rothermel.fuel_model = FM4), per-class fuel loads and SAV ratios are
populated automatically and the full multi-class Rothermel (1972) formulation
is used for reaction intensity and moisture damping.
The following per-class moisture inputs allow independent moisture contents
for each fuel size class. Dead-class defaults match rothermel.M_f; live
defaults are physical equilibrium values.
- rothermel.M_d1 (default: equal to
rothermel.M_f) 1-hr dead fuel moisture (fraction). Fine sticks and fine herbaceous litter.
Example:
rothermel.M_d1 = 0.06- rothermel.M_d10 (default: equal to
rothermel.M_f) 10-hr dead fuel moisture (fraction). Small woody material (0.25–1 in).
Example:
rothermel.M_d10 = 0.08- rothermel.M_d100 (default: equal to
rothermel.M_f) 100-hr dead fuel moisture (fraction). Medium woody material (1–3 in).
Example:
rothermel.M_d100 = 0.10- rothermel.M_lh (default: 0.90)
Live herbaceous fuel moisture (fraction). Green grass and forbs.
Example:
rothermel.M_lh = 0.60- rothermel.M_lw (default: 1.20)
Live woody fuel moisture (fraction). Shrubs and small trees.
Example:
rothermel.M_lw = 1.00
Per-Class Fuel Loads (Advanced Override)
These parameters override the per-class loads provided by the fuel model
database entry. They are not normally needed; use rothermel.fuel_model to
select a standard model instead.
rothermel.w_d1— 1-hr dead fuel load [lb/ft²]rothermel.sigma_d1— 1-hr dead SAV [ft⁻¹]rothermel.w_d10— 10-hr dead fuel load [lb/ft²] (SAV = 109 ft⁻¹)rothermel.w_d100— 100-hr dead fuel load [lb/ft²] (SAV = 30 ft⁻¹)rothermel.w_lh— live herbaceous fuel load [lb/ft²]rothermel.sigma_lh— live herbaceous SAV [ft⁻¹]rothermel.w_lw— live woody fuel load [lb/ft²]rothermel.sigma_lw— live woody SAV [ft⁻¹]
When all per-class loads are zero the solver falls back to the single-class
aggregate path (rothermel.w0 / rothermel.sigma / rothermel.M_f)
preserving backward compatibility.
Cheney & Gould (1995 / 1998) Grassland Spread Parameters
These parameters are used when fire_spread_model = cheney_gould. The model
is an empirical piecewise-linear formula calibrated for open Australian
grasslands.
- cheney_gould.moisture (default: 10.0)
Dead fine fuel moisture content [%]. Used in the exponential moisture correction factor \(f_{MC} = \exp(-0.108 \times MC)\).
Example:
cheney_gould.moisture = 8.0- cheney_gould.curing (default: 1.0)
Degree of curing of the grass [0-1; 1 = fully cured dry standing grass, 0 = completely green]. Values outside [0, 1] are clamped at runtime.
Example:
cheney_gould.curing = 0.90
Canadian FBP System Spread Parameters
These parameters are used when fire_spread_model is one of fbp_o1a,
fbp_o1b, fbp_s1, fbp_s2, or fbp_s3. The Canadian Forest
Fire Behaviour Prediction (FBP) System uses empirical equations derived from
experimental and prescribed-fire data for specific fuel types.
- fbp.fuel_type (default: “o1a”)
FBP fuel type string. Automatically overridden by the
fire_spread_modelsetting (e.g.,fire_spread_model = fbp_s2setsfbp.fuel_type = s2). Valid values:o1a,o1b,s1,s2,s3.Example:
fbp.fuel_type = o1b- fbp.moisture (default: 10.0)
Dead fine fuel moisture content [%]. Used in the exponential moisture dampening factor for grass and slash fuel types.
Example:
fbp.moisture = 8.0- fbp.curing (default: 80.0)
Degree of grass curing [%] (0–100). Only used for grass fuel types O1a/O1b. Higher curing increases the effective ROS.
Example:
fbp.curing = 90.0
Lautenberger (2013) Semi-Empirical Spread Parameters
These parameters are used when fire_spread_model = lautenberger. The
model is a semi-empirical rate-of-spread formula that accounts for wind speed,
fuel moisture, and slope through four calibration coefficients.
- lautenberger.A_L (default: 1.05e-5)
Pre-exponential rate-of-spread coefficient [m²/s].
Example:
lautenberger.A_L = 1.05e-5- lautenberger.B_L (default: 2.5)
Wind speed exponent (dimensionless).
Example:
lautenberger.B_L = 2.5- lautenberger.C_L (default: 0.40)
Moisture sensitivity coefficient [(m/s)⁻¹].
Example:
lautenberger.C_L = 0.40- lautenberger.D_L (default: 0.50)
Slope sensitivity coefficient (dimensionless).
Example:
lautenberger.D_L = 0.50
Wind Parameters
- u_x, u_y, u_z (default: 0.25, 0.0, 0.0)
Constant wind velocity components [m/s].
Example:
u_x = 2.0,u_y = 0.5- velocity_file (default: “”)
Path to a spatially-varying wind field CSV file (X Y U V columns). When set, overrides
u_x/u_y/u_z.Example:
velocity_file = wind_data.csv- use_time_dependent_wind (default: 0)
Enable time-dependent wind fields (1=yes, 0=no). When enabled, the solver loads a sequence of wind field files and interpolates between them in time. Only available in 2D builds.
Example:
use_time_dependent_wind = 1- wind_time_spacing (default: 60.0)
Time spacing in seconds between consecutive wind field files. Used only when
use_time_dependent_wind = 1.Example:
wind_time_spacing = 60.0
Time-Dependent Wind Fields
When use_time_dependent_wind = 1, the solver expects a series of wind field files
following this naming convention:
Base file:
<velocity_file>(time index 0)First update:
<base>_1.csv(time index 1)Second update:
<base>_2.csv(time index 2)And so on…
The solver will:
Determine which two wind field files bracket the current simulation time
Load both files (if not already loaded)
Perform spatial interpolation using inverse distance weighting for each field
Perform temporal linear interpolation between the two fields based on the current time
For example, with wind_time_spacing = 60.0:
At t=0s: Uses index-0 and index-1 files
At t=30s: Interpolates 50% between indices 0 and 1
At t=60s: Uses index-1 and index-2 files
At t=120s: Uses index-2 and index-3 files
Each wind field file should be in CSV format with X, Y, U, V columns:
# X Y U V
0 0 1.0 0.0
1000 0 1.0 0.0
2000 0 1.0 0.0
0 1000 1.2 0.1
1000 1000 1.2 0.1
2000 1000 1.2 0.1
Terrain Parameters
- rothermel.terrain_file (default: “”)
Path to a terrain elevation CSV file (X Y Z format). Computes per-cell slopes using inverse distance weighting interpolation and central differences.
Example:
rothermel.terrain_file = terrain.xyz- rothermel.landscape_file (default: “”)
Path to a FARSITE landscape file (ASCII, X Y ELEVATION SLOPE ASPECT FUEL_MODEL). Provides elevation, slope, aspect, and fuel model data. Takes precedence over
rothermel.terrain_filefor slope and elevation; fuel model always comes from the landscape file when present.Example:
rothermel.landscape_file = socal_chaparral_landscape.lcp- rothermel.landscape_fuel_type (default:
"13") Fuel model system used in the landscape file. Must be
"13"(Anderson 13 / FBFM13) or"40"(Scott & Burgan 40 / FBFM40).Example:
rothermel.landscape_fuel_type = 40
FARSITE Landscape File Format
The landscape file is an ASCII text file with the following format:
# Comments start with #
X Y ELEVATION SLOPE ASPECT FUEL_MODEL
Where:
X, Y: Coordinates in meters
ELEVATION: Elevation above sea level in meters
SLOPE: Slope angle in degrees (0-90)
ASPECT: Slope aspect in degrees (0-360, where 0=North, 90=East, 180=South, 270=West)
FUEL_MODEL: NFFL fuel model number (optional, defaults to 0)
Example landscape file:
# Southern California chaparral terrain
# X Y ELEVATION SLOPE ASPECT FUEL_MODEL
0.0 0.0 100.0 15.0 225.0 4
10.0 0.0 101.5 16.0 220.0 4
20.0 0.0 103.5 18.0 215.0 4
The code uses inverse distance weighting (IDW) interpolation to map landscape data points to the simulation grid. When a landscape file is specified, slope and elevation from any terrain file are ignored.
FARSITE Parameters
- farsite.use_anderson_LW (default: 0)
Use Anderson (1983) length-to-width ratio derived from wind speed (1=yes, 0=no). When disabled, uses
farsite.length_to_width_ratiodirectly.Example:
farsite.use_anderson_LW = 1- farsite.length_to_width_ratio (default: 3.0)
Fixed ellipse length-to-width ratio. Used when
farsite.use_anderson_LW = 0.Example:
farsite.length_to_width_ratio = 3.0- farsite.coeff_a (default: 1.0)
Richards’ head fire coefficient (maximum spread direction).
Example:
farsite.coeff_a = 1.0- farsite.coeff_b (default: 0.5)
Richards’ flank fire coefficient (perpendicular to wind).
Example:
farsite.coeff_b = 0.5- farsite.coeff_c (default: 0.2)
Richards’ backing fire coefficient (minimum spread, upwind direction).
Example:
farsite.coeff_c = 0.2- farsite.phi_threshold (default: 0.1)
Level-set value threshold for identifying fire front cells.
Example:
farsite.phi_threshold = 0.1- farsite.scale_ellipse_with_crown (default: 0)
Scale the FARSITE ellipse length-to-width ratio when active crown fire is detected (1=yes, 0=no). Off by default for backward compatibility.
Example:
farsite.scale_ellipse_with_crown = 1- farsite.crown_lw_scale (default: 1.5)
Multiplier applied to the ellipse L/W ratio during active crown fire. Only used when
farsite.scale_ellipse_with_crown = 1.Example:
farsite.crown_lw_scale = 1.5- farsite.gaussian_sigma (default: -1.0)
Controls smoothed stamping of propagated fire-front positions into the phi field after each FARSITE Huygens step.
< 0(default-1.0): single-cell stamping — preserves the original behaviour; each propagated position marks exactly one grid cell asphi = -1.= 0: auto sigma — the radius is set automatically to3 * min(dx, dy).> 0: user-specified sigma [m] — each propagated position contributes an SDF disk of the given radius; cells within the disk receivephi = dist - sigma(negative inside, zero on the perimeter, phi left at 0 outside), analogous tofire_gaussian_sigma/fire_points_fileinitialisation.
Smoothed stamping reduces single-cell aliasing artifacts along the advancing fire perimeter without altering the physical spread rate.
Example:
farsite.gaussian_sigma = 40.0
Crown Fire Parameters
- crown.enable (default: 0)
Enable Van Wagner crown fire initiation model (1=yes, 0=no).
Example:
crown.enable = 1- crown.CBH (default: 4.0)
Canopy base height [m]. Must be > 0.
Example:
crown.CBH = 4.0- crown.CBD (default: 0.15)
Canopy bulk density [kg/m³]. Must be > 0.
Example:
crown.CBD = 0.15- crown.FMC (default: 100.0)
Foliar moisture content [%]. Must be between 50 and 300.
Example:
crown.FMC = 100.0- crown.crown_fraction_weight (default: 1.0)
Crown fire weighting factor (0.0–2.0). Scales the crown fire contribution to the spread rate.
Example:
crown.crown_fraction_weight = 1.0- crown.use_metric_units (default: 1)
Unit system for crown fire calculations. 1 = metric (m, kW/m), 0 = imperial.
Example:
crown.use_metric_units = 1- crown.use_cruz_crown (default: 0)
Use the Cruz, Alexander & Wakimoto (2005) empirical crown ROS formula instead of the Van Wagner 3/CBD proxy (1=yes, 0=no). When enabled, the crown ROS is
R = 11.02 × U10^0.90 × CBD^0.19 × exp(-0.17 × MC10).Example:
crown.use_cruz_crown = 1- cruz_crown.CBD (default: 0.10)
Canopy bulk density used specifically in the Cruz (2005) crown ROS formula [kg/m³]. May differ from
crown.CBDused by the Van Wagner threshold.Example:
cruz_crown.CBD = 0.12- cruz_crown.MC10 (default: 10.0)
10-hr dead fuel moisture content used in the Cruz (2005) crown ROS formula [%].
Example:
cruz_crown.MC10 = 8.0
Crown Fire State (Passive vs. Active)
Crown fire state is automatically distinguished when crown.enable = 1:
Passive crown (
I_B ≥ I_obutR < R'_SA): fire torches intermittently but does not propagate through the canopy. Surface ROS is used; no crown-ROS enhancement is applied.Active crown (
I_B ≥ I_oANDR ≥ R'_SA): fire propagates continuously through the canopy. Crown ROS (Van Wagner or Cruz) is applied.
The critical active-crown ROS is \(R'_{SA} = 3.0 / \text{CBD}\) [m/min]. No additional inputs are required.
Fire Ecology Coupling Parameters
These parameters couple the fire ecology model (ignition probability, tree mortality) to the spread-rate field.
- fire_ecology.couple_to_ros (default: 0)
Scale the Rothermel/Balbi ROS by the per-cell ignition probability in unburned cells (1=yes, 0=no).
Example:
fire_ecology.couple_to_ros = 1- fire_ecology.p_ignition_floor (default: 0.05)
Minimum ignition probability used as the ROS scale floor. Prevents ROS from being driven to zero in low-probability cells.
Example:
fire_ecology.p_ignition_floor = 0.10- fire_ecology.T_a_C (default: 25.0)
Ambient temperature for fire ecology calculations [°C].
Example:
fire_ecology.T_a_C = 30.0- fire_ecology.solar_heating_F (default: 25.0)
Solar temperature increment added to ambient temperature [°F]. Used in fuel moisture and ignition probability computations.
Example:
fire_ecology.solar_heating_F = 30.0- fire_ecology.tree_height (default: 10.0)
Mean stand height [m] used in the tree mortality sub-model.
Example:
fire_ecology.tree_height = 15.0
Bulk Fuel Consumption Parameters
The bulk fuel consumption model tracks the fraction of fuel consumed behind the
fire front. It is configured under the farsite namespace.
- farsite.use_bulk_fuel_consumption (default: 0)
Enable bulk fuel consumption calculation (1=yes, 0=no).
Example:
farsite.use_bulk_fuel_consumption = 1- farsite.tau_residence (default: 60.0)
Residence time for fuel consumption [seconds]. Must be > 0.
Example:
farsite.tau_residence = 60.0- farsite.f_consumed_max (default: 0.9)
Maximum fuel consumption fraction (0.0–1.0). Applies to slow-moving, high-intensity fires.
Example:
farsite.f_consumed_max = 0.9- farsite.f_consumed_min (default: 0.5)
Minimum fuel consumption fraction (0.0–1.0). Applies to fast-moving fires. Must be ≤
farsite.f_consumed_max.Example:
farsite.f_consumed_min = 0.5
Probability-Based Firebrand Spotting Parameters
- spotting.enable (default: 0)
Enable the stochastic firebrand spotting model (1=yes, 0=no).
Example:
spotting.enable = 1- spotting.P_base (default: 0.02)
Base probability of generating a firebrand per fire-front cell (0.0–1.0).
Example:
spotting.P_base = 0.05- spotting.k_wind (default: 0.3)
Wind speed coefficient for spotting probability scaling.
Example:
spotting.k_wind = 0.3- spotting.I_critical (default: 1000.0)
Critical fire intensity threshold for spotting [kW/m or BTU/ft/s].
Example:
spotting.I_critical = 800.0- spotting.d_mean (default: 0.1)
Mean spotting distance parameter [physical units].
Example:
spotting.d_mean = 15.0- spotting.d_sigma (default: 0.5)
Standard deviation for lognormal spotting distance distribution.
Example:
spotting.d_sigma = 40.0- spotting.d_lambda (default: 10.0)
Decay rate for exponential spotting distance distribution [1/unit].
Example:
spotting.d_lambda = 0.08- spotting.distance_model (default:
"lognormal") Distribution model for spotting distance. Options:
"lognormal"or"exponential".Example:
spotting.distance_model = lognormal- spotting.lateral_spread_angle (default: 15.0)
Angular spread perpendicular to wind direction [degrees].
Example:
spotting.lateral_spread_angle = 20.0- spotting.spot_radius (default: 0.02)
Radius of new spot-fire ignition zones [physical units].
Example:
spotting.spot_radius = 3.0- spotting.random_seed (default: 0)
Seed for the random number generator. 0 uses the system clock (non-reproducible).
Example:
spotting.random_seed = 12345- spotting.check_interval (default: 5)
Run the spotting model every N time steps.
Example:
spotting.check_interval = 3
Albini (1983) Physics-Based Spotting Parameters
The Albini spotting model uses a physics-based lofting height from Byram’s fire line intensity and integrates a 2-D horizontal firebrand trajectory through the wind field.
- albini_spotting.enable (default: 0)
Enable the Albini (1983) firebrand spotting model (1=yes, 0=no).
Example:
albini_spotting.enable = 1- albini_spotting.terminal_velocity (default: 1.0)
Firebrand terminal descent velocity [m/s]. Must be > 0.
Example:
albini_spotting.terminal_velocity = 5.0- albini_spotting.P_base (default: 0.01)
Maximum probability of launching a firebrand per fire-front cell (0.0–1.0). The actual probability is weighted by fire line intensity.
Example:
albini_spotting.P_base = 0.05- albini_spotting.I_B_min (default: 10.0)
Minimum Byram fire line intensity to allow firebrand generation [kW/m].
Example:
albini_spotting.I_B_min = 500.0- albini_spotting.spot_radius (default: 5.0)
Radius of new spot-fire ignition zone [m].
Example:
albini_spotting.spot_radius = 15.0- albini_spotting.random_seed (default: 0)
Seed for the random number generator. 0 uses the system clock.
Example:
albini_spotting.random_seed = 42- albini_spotting.check_interval (default: 5)
Run the Albini spotting model every N time steps.
Example:
albini_spotting.check_interval = 5- albini_spotting.n_traj_steps (default: 100)
Number of forward-Euler sub-steps for the 2-D firebrand trajectory integration.
Example:
albini_spotting.n_traj_steps = 200- albini_spotting.use_3d_wind (default: 0)
When set to 1, read horizontal wind from a 3-D AMReX plotfile produced by massconsistent_amr and use it for firebrand trajectory integration in place of the 2-D
velMultiFab. The plotfile must contain variables named"u"and"v"(and optionally"w"). The 3-D wind is projected to 2-D by column-averaginguandvover all vertical levels at each horizontal grid point. This allows full terrain-following mass-consistent wind fields to drive firebrand trajectories while the fire-spread solver remains 2-D.Requires
albini_spotting.plt_wind_fileto be set.Example:
albini_spotting.use_3d_wind = 1- albini_spotting.plt_wind_file (default: “”)
Path to the AMReX plotfile directory produced by massconsistent_amr. The directory must contain a
Headerfile and aLevel_0/sub-directory withCell_Hand binary data files. Required whenuse_3d_wind = 1.Example:
albini_spotting.plt_wind_file = /path/to/plt_wind
Albini (1979) Torching-Tree Spotting Parameters
Long-range spotting originating from torching trees when crown fire is
present. Triggered in cells where crown_activity ≥ min_crown_activity.
The spotting distance is d = k_torch × U × sqrt(H_eff) [m].
- torching_spotting.enable (default: 0)
Enable the torching-tree spotting model (1=yes, 0=no).
Example:
torching_spotting.enable = 1- torching_spotting.k_torch (default: 4.24)
Spotting distance coefficient in the formula \(d = k_{\text{torch}} \times U \times \sqrt{H_{\text{eff}}}\) [m].
Example:
torching_spotting.k_torch = 4.24- torching_spotting.I_B_min (default: 100.0)
Minimum Byram fire line intensity required for torching-tree spotting [kW/m].
Example:
torching_spotting.I_B_min = 200.0- torching_spotting.spot_radius (default: 5.0)
Radius of new spot-fire ignition zone [m].
Example:
torching_spotting.spot_radius = 10.0- torching_spotting.P_base (default: 0.05)
Probability of spotting per torching cell per check interval [0–1].
Example:
torching_spotting.P_base = 0.10- torching_spotting.check_interval (default: 5)
Run the torching-tree spotting model every N time steps.
Example:
torching_spotting.check_interval = 3- torching_spotting.min_crown_activity (default: 1)
Minimum crown fire activity level required to trigger spotting. 1 = passive or active crown fire; 2 = active crown fire only.
Example:
torching_spotting.min_crown_activity = 2- torching_spotting.random_seed (default: 0)
Seed for the random number generator. 0 uses the system clock.
Example:
torching_spotting.random_seed = 42
Persistent Fuel Depletion Parameters
Tracks per-cell residual fuel fraction that decays exponentially after fire
passage: \(f_r = \exp(-(t - t_{\text{arrive}}) / \tau_{\text{burnout}})\).
Written to plotfiles as residual_fuel.
- fuel_depletion.enable (default: 0)
Track per-cell residual fuel fraction (1=yes, 0=no).
Example:
fuel_depletion.enable = 1- fuel_depletion.tau_burnout (default: 3600.0)
Fine-fuel burnout time constant [s].
Example:
fuel_depletion.tau_burnout = 1800.0- fuel_depletion.couple_to_ros (default: 0)
Scale ROS by residual fuel fraction in cells the fire re-enters (1=yes, 0=no).
Example:
fuel_depletion.couple_to_ros = 1
Fire Acceleration Parameters
Small fires spread slower than their quasi-steady-state ROS. This model applies a scaling factor \(\alpha = 1 - \exp(-r_{\text{fire}} / L_{\text{acc}})\), where \(r_{\text{fire}}\) is the effective fire radius from burned area. When \(r_{\text{fire}} \gg L_{\text{acc}}\), \(\alpha \to 1\) and large fires are unaffected.
- acceleration.enable (default: 0)
Enable the small-fire acceleration model (1=yes, 0=no). Off by default for backward compatibility.
Example:
acceleration.enable = 1- acceleration.L_acc (default: 50.0)
Acceleration length scale [m]. Controls how quickly the fire approaches its quasi-steady-state ROS as it grows.
Example:
acceleration.L_acc = 30.0
Output Parameters
- plot_int (default: 50)
Number of time steps between output files.
Example:
plot_int = 10
Turbulent Wind Perturbation Parameters
These parameters control the stochastic wind perturbation model that adds temporally-correlated and (optionally) spatially-correlated fluctuations to the ambient wind field at every timestep. The unperturbed base wind is always preserved internally; the perturbation is computed on top of it.
- turb_wind.model (default:
"none") Selects the turbulent wind model:
none– no perturbation (default)ou_process– Ornstein-Uhlenbeck temporally-correlated noise. Whenturb_wind.L_c = 0all cells receive the same domain-uniform perturbation. Whenturb_wind.L_c > 0per-cell spatially correlated perturbations are generated via a Gaussian spatial kernel of length scaleL_c[m].spectral_noise– Random Fourier Feature (RFF) spectral noise with OU temporal evolution.N_modeswavenumber pairs are drawn at initialisation from the 2-D isotropic Gaussian power spectrum (length scaleL_c); scalar OU amplitude coefficients per mode evolve each step on the CPU; the perturbation field is reconstructed on the GPU as a cosine superposition. Produces physically correct energy distribution across wavenumbers. RequiresL_c > 0.direction_walk– bounded cumulative random walk of wind direction. Wind speed is preserved exactly; only direction fluctuates.
Example:
turb_wind.model = spectral_noise- turb_wind.theta (default: 0.1)
Ornstein-Uhlenbeck reversion rate \(\theta\) [s⁻¹]. The temporal decorrelation time (e-folding time of gust autocorrelation) is \(\tau = 1/\theta\). Only used by
ou_process. Must be > 0.Example:
turb_wind.theta = 0.05(→ 20 s gust decorrelation)- turb_wind.sigma (default: 0.5)
Stationary standard deviation of the OU perturbation [m/s]. Each cell’s long-run perturbation has standard deviation exactly
sigma. Only used byou_process. Must be > 0.Example:
turb_wind.sigma = 1.0- turb_wind.L_c (default: 0.0)
Spatial correlation length [m]. When > 0, activates the Gaussian kernel smoothing of the OU noise field so that cells within distance
L_creceive correlated perturbations. SettingL_c = 0gives domain-uniform perturbations (all cells receive the same gust). Only used byou_process. Must be ≥ 0.The kernel standard deviation in cells is
sigma_k = L_c / dx. Forsigma_k ≫ 1the perturbation field is nearly uniform over the domain; forsigma_k ≈ 1each cell is nearly independent.Example:
turb_wind.L_c = 100.0(→ sigma_k = 10 cells for dx = 10 m)- turb_wind.N_modes (default: 32)
Number of random Fourier modes for the
spectral_noisemodel. More modes produce a smoother, more isotropic perturbation field at the cost of proportionally more GPU computation per cell per timestep. Typical values are 16–128; 32 is a good default for most wildfire grids. Only used byspectral_noise. Must be ≥ 1.Example:
turb_wind.N_modes = 64- turb_wind.sigma_theta (default: 0.1)
Angular standard deviation [rad/step] for the
direction_walkmodel. Controls the magnitude of each step’s direction increment. Must be > 0.Example:
turb_wind.sigma_theta = 0.15- turb_wind.theta_max (default: 0.5236)
Maximum cumulative directional deviation [rad] for the
direction_walkmodel. The accumulated angle is clamped to \(\pm\theta_{\max}\). The default is \(\pi/6 \approx 30°\). Must be > 0.Example:
turb_wind.theta_max = 0.785(→ ±45°)- turb_wind.random_seed (default: 0)
Seed for the pseudo-random number generator.
0uses the system clock (non-reproducible between runs). Any positive integer gives a reproducible sequence.Example:
turb_wind.random_seed = 42
Wind-Terrain Feedback Model Parameters
- wind_terrain.model (default:
"none") Selects the wind-terrain feedback model. Seven options are available:
none– Option 1: default behaviour; no wind modificationviegas_ros– Option 2: override spread rate with \(\max(R_{\text{primary}}, R_V)\) in eruptive cells; works with both Rothermel and Balbi (uses Balbi amplitude baseline whenfire_spread_model = balbi); auto-enablesviegas.enable = 1viegas_wind– Option 3: add Viegas buoyancy-induced upslope wind only in eruptive cells (\(\tan\varphi > \tan\varphi_c\))canyon_wind– Option 4: Rothermel (1983) canyon wind amplification \(U_{\text{eff}} = U (1 + k_{\text{canyon}} \tan\varphi)\)viegas_neto– Option 5: Viegas & Neto (1994) buoyancy-driven upslope wind at all cellspimont– Option 6: Pimont et al. (2009) exponential slope correction \(U_{\text{eff}} = U \exp(k_{\text{pimont}} \tan\varphi)\)windninja_ridge_canyon– Option 7: WindNinja empirical ridge/canyon speed-up based on wind-slope alignment (see below)
Example:
wind_terrain.model = windninja_ridge_canyon- wind_terrain.k_canyon (default: 1.0)
Terrain channeling coefficient for Option 4 (
canyon_wind). Must be > 0.Example:
wind_terrain.k_canyon = 1.5- wind_terrain.k_pimont (default: 0.5)
Exponential slope correction coefficient for Option 6 (
pimont). Must be > 0.Example:
wind_terrain.k_pimont = 0.5- wind_terrain.k_ridge (default: 1.0)
Ridge speed-up coefficient for Option 7 (
windninja_ridge_canyon). Scales the speed-up when wind climbs a slope: \(f = 1 + k_{\text{ridge}} \tan\varphi \cdot \text{alignment}\). Must be > 0.Example:
wind_terrain.k_ridge = 1.5- wind_terrain.k_canyon_wn (default: 0.5)
Canyon channeling coefficient for Option 7 (
windninja_ridge_canyon). Scales the amplification when wind flows downslope: \(f = 1 + k_{\text{canyon\_wn}} \tan\varphi \cdot |\text{alignment}|\). Must be > 0.Example:
wind_terrain.k_canyon_wn = 0.8
Heat Flux Parameters
The heat flux MultiFab provides a spatially-varying (or uniform) fire heat release rate \(Q\) [W/m²] that drives WindNinja-style fire-induced wind corrections and augments the Balbi buoyancy velocity.
- heat_flux.value (default: 0.0)
Uniform heat flux [W/m²] applied to the entire domain. Set to a positive value to activate. Requires at least one of
enable_upwardorenable_inducedto also be set to 1.Example:
heat_flux.value = 5000.0- heat_flux.file (default: “”)
Path to an ASCII file with columns
X Y Qfor spatially-varying heat flux. Uses the same Wendland C² IDW interpolation as terrain and wind files. Overridesheat_flux.valuewhen non-empty. Only available in 2D builds.Example:
heat_flux.file = fire_heat_flux.csv- heat_flux.rho_air (default: 1.2)
Air density [kg/m³].
Example:
heat_flux.rho_air = 1.1- heat_flux.Cp_air (default: 1005.0)
Specific heat of air [J/(kg·K)].
Example:
heat_flux.Cp_air = 1005.0- heat_flux.T_a (default: 300.0)
Ambient temperature [K] for the buoyancy velocity calculation.
Example:
heat_flux.T_a = 310.0- heat_flux.ref_height (default: 10.0)
Reference height [m] for the buoyancy velocity calculation. Physically represents the plume height over which thermal energy is distributed.
Example:
heat_flux.ref_height = 20.0- heat_flux.k_upward (default: 1.0)
Upward velocity coefficient. Scales the magnitude of the fire-plume vertical velocity: \(w_{\uparrow} = k_{\uparrow} \sqrt{g Q H_{\text{ref}} / (\rho C_p T_a)}\).
Example:
heat_flux.k_upward = 0.8- heat_flux.k_induced (default: 0.5)
Induced horizontal inflow coefficient. The inflow toward the fire perimeter is \(U_{\text{ind}} = k_{\text{ind}} \, w_{\uparrow}\).
Example:
heat_flux.k_induced = 0.3- heat_flux.enable_upward (default: 0)
Set to 1 to enable the upward convective velocity term (adds to the wind field; for 3D adds to z-component, for 2D projects as inflow opposite to ambient wind direction).
Example:
heat_flux.enable_upward = 1- heat_flux.enable_induced (default: 0)
Set to 1 to enable the induced horizontal inflow term directed toward the fire perimeter (requires phi MultiFab to be available).
Example:
heat_flux.enable_induced = 1
Example Input Files
Basic Level-Set Simulation
# Basic circular fire with level-set advection
n_cell_x = 64
n_cell_y = 64
max_grid_size = 32
prob_lo_x = 0.0
prob_lo_y = 0.0
prob_hi_x = 100.0
prob_hi_y = 100.0
final_time = 600.0
cfl = 0.5
plot_int = 20
reinit_int = 20
source_type = sphere
center_x = 50.0
center_y = 50.0
center_z = 0.5
sphere_radius = 5.0
rothermel.fuel_model = FM1
rothermel.M_f = 0.05
u_x = 0.25
propagation_method = levelset
FARSITE Ellipse Simulation
# FARSITE elliptical expansion with Anderson L/W
n_cell_x = 100
n_cell_y = 100
max_grid_size = 50
prob_lo_x = 330000.0
prob_lo_y = 3775000.0
prob_hi_x = 330200.0
prob_hi_y = 3775200.0
final_time = 3600.0
cfl = 0.5
plot_int = 10
source_type = sphere
center_x = 330100.0
center_y = 3775100.0
center_z = 0.5
sphere_radius = 10.0
fire_spread_model = rothermel
propagation_method = farsite
farsite.use_anderson_LW = 1
farsite.phi_threshold = 0.1
rothermel.fuel_model = FM4
rothermel.M_f = 0.08
u_x = 2.0
u_y = 0.5
Terrain and Crown Fire Simulation
# Complex simulation with terrain, wind, and crown fire
n_cell_x = 100
n_cell_y = 100
max_grid_size = 50
prob_lo_x = 330000.0
prob_lo_y = 3775000.0
prob_hi_x = 331000.0
prob_hi_y = 3776000.0
final_time = 7200.0
cfl = 0.5
plot_int = 25
source_type = sphere
center_x = 330500.0
center_y = 3775500.0
center_z = 0.5
sphere_radius = 20.0
fire_spread_model = rothermel
propagation_method = farsite
farsite.use_anderson_LW = 1
rothermel.fuel_model = FM10
rothermel.M_f = 0.06
rothermel.terrain_file = elevation.xyz
u_x = 0.5
u_y = 0.2
crown.enable = 1
crown.CBH = 4.0
crown.CBD = 0.2
crown.FMC = 100.0
crown.crown_fraction_weight = 1.0
spotting.enable = 1
spotting.P_base = 0.05
spotting.d_mean = 50.0
spotting.distance_model = lognormal
FARSITE with Landscape File
# FARSITE simulation with landscape file (Southern California terrain)
n_cell_x = 50
n_cell_y = 50
max_grid_size = 32
prob_lo_x = 0.0
prob_lo_y = 0.0
prob_hi_x = 100.0
prob_hi_y = 100.0
final_time = 3000.0
cfl = 0.5
plot_int = 10
# Line fire ignition (simulating Santa Ana wind-driven fire)
source_type = box
box_xmin = 10.0
box_xmax = 15.0
box_ymin = 30.0
box_ymax = 70.0
# Wind from west (Santa Ana conditions)
u_x = 5.0
u_y = 0.0
# FARSITE model with Anderson L/W ratio
fire_spread_model = rothermel
propagation_method = farsite
farsite.use_anderson_LW = 1
farsite.phi_threshold = 0.1
# Use landscape file for terrain (slope, aspect, elevation) and fuel model
rothermel.fuel_model = FM4
rothermel.M_f = 0.08
# Optional: differentiate dead/live moisture by size class
rothermel.M_d1 = 0.06 # 1-hr dead moisture
rothermel.M_d10 = 0.08 # 10-hr dead moisture
rothermel.M_d100 = 0.10 # 100-hr dead moisture
rothermel.M_lh = 0.60 # live herbaceous moisture
rothermel.M_lw = 1.00 # live woody moisture
rothermel.landscape_file = socal_chaparral_landscape.lcp
Albini Spotting Simulation
# FARSITE with Albini (1983) physics-based firebrand spotting
n_cell_x = 100
n_cell_y = 100
max_grid_size = 50
prob_lo_x = 330000.0
prob_lo_y = 3775000.0
prob_hi_x = 331000.0
prob_hi_y = 3776000.0
final_time = 1000.0
cfl = 0.5
plot_int = 25
reinit_int = -1
source_type = box
box_xmin = 330050.0
box_xmax = 330100.0
box_ymin = 3775300.0
box_ymax = 3775700.0
u_x = 2.0
u_y = 0.5
rothermel.fuel_model = FM4
rothermel.M_f = 0.08
fire_spread_model = rothermel
propagation_method = farsite
farsite.use_anderson_LW = 1
farsite.phi_threshold = 0.1
albini_spotting.enable = 1
albini_spotting.terminal_velocity = 5.0
albini_spotting.P_base = 0.05
albini_spotting.I_B_min = 500.0
albini_spotting.spot_radius = 15.0
albini_spotting.random_seed = 42
albini_spotting.check_interval = 5
albini_spotting.n_traj_steps = 200
Balbi + Viegas + Heat Flux Simulation
# Balbi physical fire spread with Viegas slope diagnostics and heat flux
# wind corrections on a Gaussian hill terrain.
n_cell_x = 100
n_cell_y = 100
prob_lo_x = 330000.0
prob_lo_y = 3775000.0
prob_hi_x = 331000.0
prob_hi_y = 3776000.0
final_time = 600.0
cfl = 0.5
plot_int = 20
reinit_int = 20
source_type = box
box_xmin = 330100.0
box_xmax = 330120.0
box_ymin = 3775200.0
box_ymax = 3775800.0
velocity_file = gaussian_hill_wind.csv
# Balbi (2009) physical fire spread model
fire_spread_model = balbi
propagation_method = levelset
rothermel.fuel_model = FM4
rothermel.M_f = 0.08
rothermel.terrain_file = gaussian_hill_terrain.csv
balbi.T_a = 300.0
balbi.T_f = 1000.0
balbi.T_i = 600.0
# Viegas Option 2: Viegas-Balbi ROS overrides Balbi in eruptive cells
# viegas.enable is auto-set to 1 by wind_terrain.model = viegas_ros
wind_terrain.model = viegas_ros
viegas.a_V = 1.83
viegas.tan_phi_c = 0.4
# Heat flux wind corrections
heat_flux.value = 5000.0 # W/m^2
heat_flux.ref_height = 10.0 # m
heat_flux.k_upward = 1.0
heat_flux.enable_upward = 1 # adds upward velocity to wind field
WindNinja Ridge/Canyon Simulation
# Rothermel with WindNinja empirical ridge/canyon wind speed-up
n_cell_x = 100
n_cell_y = 100
prob_lo_x = 330000.0
prob_lo_y = 3775000.0
prob_hi_x = 331000.0
prob_hi_y = 3776000.0
final_time = 600.0
cfl = 0.5
plot_int = 20
velocity_file = gaussian_hill_wind.csv
rothermel.terrain_file = gaussian_hill_terrain.csv
source_type = box
box_xmin = 330100.0
box_xmax = 330120.0
box_ymin = 3775200.0
box_ymax = 3775800.0
rothermel.fuel_model = FM4
rothermel.M_f = 0.08
fire_spread_model = rothermel
propagation_method = levelset
# Option 7: ridge speed-up on windward face, canyon channeling on lee face
wind_terrain.model = windninja_ridge_canyon
wind_terrain.k_ridge = 1.5 # ridge amplification
wind_terrain.k_canyon_wn = 0.8 # canyon channeling
Controlling Plotfile Output Variables
By default every simulation field is written to each AMReX plotfile. For
large domains or long runs this can produce very large files. The
plot_vars input key lets you restrict the output to only the variables
you need.
Usage
Add a space-separated list of variable names to your inputs.i file:
# Write only essential fire-spread diagnostics
plot_vars = phi R arrival_time fireline_intensity flame_length
If plot_vars is not specified (the default), all fields are written.
If a name in the list does not match any known variable a warning is printed
and that entry is ignored. If the resulting list is empty after filtering,
the full plotfile is written as a fallback.
Complete Variable Name Reference
The following table lists every variable name accepted by plot_vars.
Use the exact string shown in the Variable name column.
Variable name |
Description |
|---|---|
|
Level-set function (fire front where phi = 0) |
|
Wind velocity components [m/s] |
|
FARSITE spread displacements |
|
Rate of spread [m/s] |
|
Firebrand spotting probability |
|
Firebrand count per cell |
|
Firebrand landing distance [m] |
|
Spotting ignition flag |
|
Bulk fuel consumption fraction |
|
Crown fire fraction |
|
Albini lofting height [m] |
|
Firebrands launched per cell |
|
Max firebrand landing distance [m] |
|
Albini spot ignition flag |
|
Terrain elevation [m] |
|
Terrain slope [degrees] |
|
Terrain aspect [degrees] |
|
Fuel model number (from landscape) |
|
Byram fireline intensity [kW/m] |
|
Byram flame length [m] |
|
Weise & Biging flame height [m] |
|
Flame tilt angle [rad] |
|
Fire whirl height [m] |
|
Fire whirl radius [m] |
|
Fire whirl angular velocity [rad/s] |
|
Fire whirl max tangential velocity [m/s] |
|
Viegas eruptive rate of spread [m/s] |
|
Viegas eruptive fire flag (0/1) |
|
Viegas ROS excess above threshold |
|
Viegas flame tilt angle [rad] |
|
Viegas slope amplification factor |
|
Van Wagner scorch height [m] |
|
Anderson probability of ignition [0–1] |
|
Ryan–Reinhardt tree mortality [0–1] |
|
Crown activity (0=surface, 1=passive, 2=active) |
|
Scott–Reinhardt torching ratio |
|
Scott–Reinhardt crowning ratio |
|
NFDRS energy release component |
|
NFDRS spread component |
|
NFDRS burning index |
|
CO₂ emission rate [kg/m²/s] |
|
CO emission rate [kg/m²/s] |
|
PM₂.₅ emission rate [kg/m²/s] |
|
Fire arrival time [s] |
|
Heat per unit area [kJ/m²] |
|
Vertical vorticity [1/s] |
|
Canopy base height [m] |
|
Canopy bulk density [kg/m³] |
|
Canopy cover fraction [0–1] |
|
Canopy height [m] |
|
Cell burnout time [s] |
|
Rothermel reaction intensity [BTU/ft²/min] |
|
Residual (unconsumed) fuel fraction |
|
Terrain/canopy shade fraction [0–1] |
|
Scott–Reinhardt torching index [km/h] |
|
Scott–Reinhardt crowning index [km/h] |
|
1-hr dead fuel moisture [fraction] |
|
10-hr dead fuel moisture [fraction] |
|
100-hr dead fuel moisture [fraction] |
|
Live herbaceous moisture [fraction] |
|
Live woody moisture [fraction] |
Example: minimal fire-spread output
To reduce disk usage to the bare essentials for a fire-spread study:
plot_vars = phi R arrival_time fireline_intensity flame_length
Example: ecology and emissions only
To write only post-fire ecology and air-quality diagnostics:
plot_vars = phi scorch_height prob_ignition tree_mortality \
co2_emissions co_emissions pm25_emissions
Visualization
VisIt
Open plotfiles in VisIt:
visit -o plt00000/Header
ParaView
Open plotfiles in ParaView using the AMReX reader.
yt
Use yt to analyze plotfiles in Python:
import yt
ds = yt.load("plt00000/Header")
slc = yt.SlicePlot(ds, 'z', 'phi')
slc.save()
Python Scripts
Read XY data files with NumPy/Pandas:
import numpy as np
data = np.loadtxt('xy_data.txt')
x = data[:, 0]
y = data[:, 1]
phi = data[:, 2]
Troubleshooting
Simulation Crashes or Diverges
Reduce the CFL number (try
cfl = 0.3)Use a finer grid (increase
n_cell)Check that fuel properties are physical (positive values, moisture < 1)
Output Files Not Created
Check that
plot_intorplot_dtis set to a positive valueEnsure the simulation runs for at least one output interval
Check disk space and write permissions
Performance Issues
Increase
max_grid_sizefor better cache performanceReduce grid resolution if simulation is too slow
Use Release build type for optimization