FlameLengthWRFFire
Byram (1959) flame length as diagnosed by fire_behavior's Calc_flame_length (physics/fire_physics_mod.F90): L = 0.0775 (iboros ros)^0.46 m on cells containing the fire line (0 < fire_area < 1), with iboros = I_R t_r in kJ/m^2 from RothermelWRFFire so that iboros ros is the fireline intensity in kW/m; zero elsewhere. The EarthSciModels rothermel/fire_spread.esm F_L = c_FL (I_B/IB_ref)^0.46 with I_B in W/m is the same law in SI (0.0775 kW^-0.46 = 0.00323 W^-0.46); it is not reused because its I_B is built from its own (Andrews 2018) reaction intensity. Tests: cells of the instrumented test7 run at step 20 (flame dump) on the front (0 < fire_area < 1), outside it (fire_area = 0) and fully burning behind it (fire_area = 1), rel 1e-5.
Description
Byram (1959) flame length as diagnosed by fire_behavior’s Calc_flame_length (physics/fire_physics_mod.F90): L = 0.0775 (iboros ros)^0.46 m on cells containing the fire line (0 < fire_area < 1), with iboros = I_R t_r in kJ/m^2 from RothermelWRFFire so that iboros ros is the fireline intensity in kW/m; zero elsewhere. The EarthSciModels rothermel/fire_spread.esm F_L = c_FL (I_B/IB_ref)^0.46 with I_B in W/m is the same law in SI (0.0775 kW^-0.46 = 0.00323 W^-0.46); it is not reused because its I_B is built from its own (Andrews 2018) reaction intensity. Tests: cells of the instrumented test7 run at step 20 (flame dump) on the front (0 < fire_area < 1), outside it (fire_area = 0) and fully burning behind it (fire_area = 1), rel 1e-5.
Reference
- NCAR Community Fire Behavior Model (fire_behavior), develop @ eb77580; instrumented fork ctessum-claude/fire_behavior branch earthsciml-instrumented (c9dda02).
Parameters
| Name | Units | Default | Description |
|---|---|---|---|
ros | m/s | 0.0 | Rate of spread at the cell (ROSWRFFire ros). |
iboros | 1 | 0.0 | I_R t_r of the cell in kJ/m^2 (RothermelWRFFire iboros). |
fire_area | 1 | 0.0 | Burning area fraction of the cell (FuelFractionCellWRFFire fire_area). |
Observed
| Name | Units | Default | Description |
|---|---|---|---|
on_front | 1 | 1 where 0 < fire_area < 1 (the cell contains the fire line), else 0. | |
fireline_intensity | 1 | Byram fireline intensity I_B = iboros ros, kW/m (dimensionless carrier). | |
flame_length | m | Byram (1959) flame length 0.0775 I_B^0.46 m on front cells, 0 elsewhere (Calc_flame_length). | |
ros_front | m/s | Rate of spread reported on front cells only (ros_fl), 0 elsewhere. |
Observed expressions
$$ on_{front} = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>}\left(fire_{area}, 0.0\right), \mathrm{<}\left(fire_{area}, 1.0\right)\right), 1.0, 0.0\right) $$1 where 0 < fire_area < 1 (the cell contains the fire line), else 0.
$$ fireline_{intensity} = iboros \cdot \frac{ros}{par.unit_{speed}} $$Byram fireline intensity I_B = iboros ros, kW/m (dimensionless carrier).
$$ flame_{length} = on_{front} \cdot par.unit_{length} \cdot par.c_{flame\,length} \cdot fireline_{intensity}^{par.p_{flame\,length}} $$Byram (1959) flame length 0.0775 I_B^0.46 m on front cells, 0 elsewhere (Calc_flame_length).
$$ ros_{front} = on_{front} \cdot ros $$Rate of spread reported on front cells only (ros_fl), 0 elsewhere.
Raw .esm
Raw .esm JSON (this component)
{
"subsystems": {
"par": {
"ref": "./fire_behavior_parameters.esm"
}
},
"variables": {
"ros": {
"type": "parameter",
"units": "m/s",
"default": 0.0,
"description": "Rate of spread at the cell (ROSWRFFire ros)."
},
"iboros": {
"type": "parameter",
"units": "1",
"default": 0.0,
"description": "I_R t_r of the cell in kJ/m^2 (RothermelWRFFire iboros)."
},
"fire_area": {
"type": "parameter",
"units": "1",
"default": 0.0,
"description": "Burning area fraction of the cell (FuelFractionCellWRFFire fire_area)."
},
"on_front": {
"type": "unknown",
"units": "1",
"description": "1 where 0 < fire_area < 1 (the cell contains the fire line), else 0."
},
"fireline_intensity": {
"type": "unknown",
"units": "1",
"description": "Byram fireline intensity I_B = iboros ros, kW/m (dimensionless carrier)."
},
"flame_length": {
"type": "unknown",
"units": "m",
"description": "Byram (1959) flame length 0.0775 I_B^0.46 m on front cells, 0 elsewhere (Calc_flame_length)."
},
"ros_front": {
"type": "unknown",
"units": "m/s",
"description": "Rate of spread reported on front cells only (ros_fl), 0 elsewhere."
}
},
"equations": [
{
"lhs": "on_front",
"rhs": {
"op": "ifelse",
"args": [
{
"op": "and",
"args": [
{
"op": ">",
"args": [
"fire_area",
0.0
]
},
{
"op": "<",
"args": [
"fire_area",
1.0
]
}
]
},
1.0,
0.0
]
}
},
{
"lhs": "fireline_intensity",
"rhs": {
"op": "*",
"args": [
"iboros",
{
"op": "/",
"args": [
"ros",
"par.unit_speed"
]
}
]
}
},
{
"lhs": "flame_length",
"rhs": {
"op": "*",
"args": [
"on_front",
"par.unit_length",
"par.c_flame_length",
{
"op": "^",
"args": [
"fireline_intensity",
"par.p_flame_length"
]
}
]
}
},
{
"lhs": "ros_front",
"rhs": {
"op": "*",
"args": [
"on_front",
"ros"
]
}
}
],
"tests": [
{
"id": "step20_unburnt_cell_area_0",
"description": "Reference: NCAR fire_behavior test7 (80x80 fire cells of 25 m, dt = 0.5 s, num_tiles = 1), default real32 build, dumped in-model by the ctessum-claude/fire_behavior fork (branch earthsciml-instrumented, commit c9dda02, based on NCAR fire_behavior eb77580, three commits before v1.0.0; -DESM_DUMP=ON; summary output bit-identical to the uninstrumented build). Single precision: rel 1e-5 (the tolerance contract for a single-precision reference). Regime: cell (i,j) = (16, 60) at step 20 (flame dump), unburnt cell next to the front (fire_area = 0): flame length 0.",
"parameter_overrides": {
"ros": 0.01777469739317894,
"iboros": 777.2156372070312,
"fire_area": 0.0
},
"expression_template_imports": [
{
"ref": "./tests/step20_unburnt_cell_area_0_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"tolerance": {
"rel": 1e-05
},
"assertions": [
{
"variable": "flame_length",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
},
{
"variable": "ros_front",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
}
]
},
{
"id": "step20_front_cell_area_0p69",
"description": "Reference: NCAR fire_behavior test7 (80x80 fire cells of 25 m, dt = 0.5 s, num_tiles = 1), default real32 build, dumped in-model by the ctessum-claude/fire_behavior fork (branch earthsciml-instrumented, commit c9dda02, based on NCAR fire_behavior eb77580, three commits before v1.0.0; -DESM_DUMP=ON; summary output bit-identical to the uninstrumented build). Single precision: rel 1e-5 (the tolerance contract for a single-precision reference). Regime: cell (i,j) = (17, 59) at step 20 (flame dump).",
"parameter_overrides": {
"ros": 0.01777469739317894,
"iboros": 777.2156372070312,
"fire_area": 0.6850700974464417
},
"expression_template_imports": [
{
"ref": "./tests/step20_front_cell_area_0p69_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"tolerance": {
"rel": 1e-05
},
"assertions": [
{
"variable": "flame_length",
"time": 0.0,
"expected": 0.2593342363834381,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
},
{
"variable": "ros_front",
"time": 0.0,
"expected": 0.01777469739317894,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
}
]
},
{
"id": "step20_front_cell_cat2",
"description": "Reference: NCAR fire_behavior test7 (80x80 fire cells of 25 m, dt = 0.5 s, num_tiles = 1), default real32 build, dumped in-model by the ctessum-claude/fire_behavior fork (branch earthsciml-instrumented, commit c9dda02, based on NCAR fire_behavior eb77580, three commits before v1.0.0; -DESM_DUMP=ON; summary output bit-identical to the uninstrumented build). Single precision: rel 1e-5 (the tolerance contract for a single-precision reference). Regime: cell (i,j) = (18, 64) at step 20 (flame dump).",
"parameter_overrides": {
"ros": 0.3605339527130127,
"iboros": 6763.322265625,
"fire_area": 0.8145828247070312
},
"expression_template_imports": [
{
"ref": "./tests/step20_front_cell_cat2_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"tolerance": {
"rel": 1e-05
},
"assertions": [
{
"variable": "flame_length",
"time": 0.0,
"expected": 2.801370859146118,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
},
{
"variable": "ros_front",
"time": 0.0,
"expected": 0.3605339527130127,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
}
]
},
{
"id": "step20_front_cell_area_0p95",
"description": "Reference: NCAR fire_behavior test7 (80x80 fire cells of 25 m, dt = 0.5 s, num_tiles = 1), default real32 build, dumped in-model by the ctessum-claude/fire_behavior fork (branch earthsciml-instrumented, commit c9dda02, based on NCAR fire_behavior eb77580, three commits before v1.0.0; -DESM_DUMP=ON; summary output bit-identical to the uninstrumented build). Single precision: rel 1e-5 (the tolerance contract for a single-precision reference). Regime: cell (i,j) = (17, 60) at step 20 (flame dump).",
"parameter_overrides": {
"ros": 0.01777469739317894,
"iboros": 777.2156372070312,
"fire_area": 0.9455223083496094
},
"expression_template_imports": [
{
"ref": "./tests/step20_front_cell_area_0p95_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"tolerance": {
"rel": 1e-05
},
"assertions": [
{
"variable": "flame_length",
"time": 0.0,
"expected": 0.2593342363834381,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
},
{
"variable": "ros_front",
"time": 0.0,
"expected": 0.01777469739317894,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
}
]
},
{
"id": "step20_fully_burning_cell_area_1",
"description": "Reference: NCAR fire_behavior test7 (80x80 fire cells of 25 m, dt = 0.5 s, num_tiles = 1), default real32 build, dumped in-model by the ctessum-claude/fire_behavior fork (branch earthsciml-instrumented, commit c9dda02, based on NCAR fire_behavior eb77580, three commits before v1.0.0; -DESM_DUMP=ON; summary output bit-identical to the uninstrumented build). Single precision: rel 1e-5 (the tolerance contract for a single-precision reference). Regime: cell (i,j) = (18, 60) at step 20 (flame dump), fully burning (fire_area = 1) behind the front: outside 0 < fire_area < 1, so flame length and ros_front are 0.",
"parameter_overrides": {
"ros": 0.01777469739317894,
"iboros": 777.2156372070312,
"fire_area": 1.0
},
"expression_template_imports": [
{
"ref": "./tests/step20_fully_burning_cell_area_1_inputs.esm"
}
],
"time_span": {
"start": 0,
"end": 1
},
"tolerance": {
"rel": 1e-05
},
"assertions": [
{
"variable": "flame_length",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
},
{
"variable": "ros_front",
"time": 0.0,
"expected": 0.0,
"tolerance": {
"rel": 1e-05,
"abs": 1e-09
}
}
]
}
]
}