Version: dev

FuelSavr

Anderson (1982) 13-fuel-model surface-area-to-volume ratio (SAVR) lookup: maps integer fuel model code (1–13) to σ in m⁻¹, converted from the upstream 1/ft values in ANDERSON_FUEL_DATA via σ = savr_ft / 0.3048. Out-of-range codes return the default 3500/0.3048 ≈ 11482.94 m⁻¹ (fuel model 1). Migrated from WildlandFire.jl src/coupling.jl:123 (`@register_symbolic fuel_savr`). Resolves the gt-p3ep blocking gap via ifelse + interp.linear over the integer axis [1..13].

Domain
wildland_fire
Subdomain
registered_functions
Type
model
.esm schema
1.0.0
Source
components/wildland_fire/registered_functions/fuel_savr.esm
Tags
#wildland_fire #registered_functions #model #fuel_model #anderson1982 #registered_function #lookup

Description

Anderson (1982) 13-fuel-model surface-area-to-volume ratio (SAVR) lookup: maps integer fuel model code (1–13) to σ in m⁻¹, converted from the upstream 1/ft values in ANDERSON_FUEL_DATA via σ = savr_ft / 0.3048. Out-of-range codes return the default 3500/0.3048 ≈ 11482.94 m⁻¹ (fuel model 1). Migrated from WildlandFire.jl src/coupling.jl:123 (@register_symbolic fuel_savr). Resolves the gt-p3ep blocking gap via ifelse + interp.linear over the integer axis [1..13].

Reference

Anderson, H.E. (1982). Aids to determining fuel models for estimating fire behavior. USDA Forest Service Gen. Tech. Rep. INT-122.

_source_ref: WildlandFire.jl@126976f2508ceacca6c486b21ae6da5b168c6f46:src/coupling.jl:123

Upstream fuel_savr(code) is a @register_symbolic Julia function. It maps an Anderson (1982) fuel model code (integer 1–13) to surface-area-to-volume ratio σ in m⁻¹, built from ANDERSON_FUEL_DATA (src/level_set_fire_spread.jl:334) where savr is stored in 1/ft and converted via savr_m = savr_ft / 0.3048. For unrecognized codes the default is 3500/0.3048 ≈ 11482.94 m⁻¹ (fuel model 1 value).

ANDERSON_FUEL_DATA savr values (1/ft → 1/m): 1: 3500 → 11482.939632545931 2: 3000 → 9842.51968503937 3: 1500 → 4921.259842519685 4: 1739 → 5705.380577427822 5: 1683 → 5521.653543307087 6: 1564 → 5131.233595800525 7: 1562 → 5124.6719160104985 8: 1889 → 6197.50656167979 9: 2484 → 8149.606299212598 10: 1764 → 5787.40157480315 11: 1182 → 3877.952755905512 12: 1145 → 3756.561679790026 13: 1159 → 3802.49343832021

gt-p3ep resolution: ESM 0.4.0 §9.5 interp.linear supports continuous-axis interpolation; for discrete integer-keyed lookup with separate default, we wrap in ifelse(AND(code>=1, code<=13), interp.linear(…), default). interp.linear on the integer axis [1..13] returns the exact stored value at integer code inputs (t=0 interpolation: result = value[i] + 0.0*(value[i+1]-value[i]) = value[i]). Out-of-range codes return the default 3500/0.3048 exactly.

Tolerance: observed-only algebraic model (no ODE); tolerance={abs:0, rel:0} — exact IEEE-754 float64 arithmetic on literal constants through ifelse, comparison ops, and interp.linear at integer-valued code inputs._

Parameters

NameUnitsDefaultDescription
code11.0Anderson 13 fuel model code (1–13). In coupled WRF-SFIRE/LANDFIRE pipelines, sourced from integer raster data. Out-of-range codes return the default σ for fuel model 1.

Observed

NameUnitsDefaultDescription
sigma1/mSurface-area-to-volume ratio σ of the fuel particle. Anderson model 1 (short grass): 11482.94 m⁻¹ through model 13 (heavy slash): 3802.49 m⁻¹. Out-of-range codes return 11482.94 m⁻¹ (fuel model 1 default).

Observed expressions

$$ sigma = \mathrm{ifelse}\left(\mathrm{and}\left(\mathrm{>=}\left(code, 1.0\right), \mathrm{<=}\left(code, 13.0\right)\right), \mathrm{fn}\left(\mathrm{const}\left(\right), \mathrm{const}\left(\right), code\right), 11482.939632545931\right) $$

Surface-area-to-volume ratio σ of the fuel particle. Anderson model 1 (short grass): 11482.94 m⁻¹ through model 13 (heavy slash): 3802.49 m⁻¹. Out-of-range codes return 11482.94 m⁻¹ (fuel model 1 default).

Analyses

savr_vs_code

Sweep fuel model codes 0–14 to visualise σ (m⁻¹) across the 13 Anderson models. Code 0 and 14 return the default (model 1 value). High SAVR in model 1 (short grass) and model 9 (hardwood litter) vs. low SAVR in slash/timber models 11–13.

Time span: 0.0 → 1.0

Swept over: code

Surface-area-to-volume ratio σ (m⁻¹) as a function of Anderson fuel model code. Short grass (1) and hardwood litter (9) have the highest σ; heavy slash (12–13) the lowest.

Raw .esm

Raw .esm JSON (this component)
{
  "reference": {
    "citation": "Anderson, H.E. (1982). Aids to determining fuel models for estimating fire behavior. USDA Forest Service Gen. Tech. Rep. INT-122.",
    "notes": "source_ref: WildlandFire.jl@126976f2508ceacca6c486b21ae6da5b168c6f46:src/coupling.jl:123\n\nUpstream `fuel_savr(code)` is a @register_symbolic Julia function. It maps an Anderson (1982) fuel model code (integer 1–13) to surface-area-to-volume ratio σ in m⁻¹, built from ANDERSON_FUEL_DATA (src/level_set_fire_spread.jl:334) where savr is stored in 1/ft and converted via savr_m = savr_ft / 0.3048. For unrecognized codes the default is 3500/0.3048 ≈ 11482.94 m⁻¹ (fuel model 1 value).\n\nANDERSON_FUEL_DATA savr values (1/ft → 1/m):\n  1: 3500 → 11482.939632545931\n  2: 3000 → 9842.51968503937\n  3: 1500 → 4921.259842519685\n  4: 1739 → 5705.380577427822\n  5: 1683 → 5521.653543307087\n  6: 1564 → 5131.233595800525\n  7: 1562 → 5124.6719160104985\n  8: 1889 → 6197.50656167979\n  9: 2484 → 8149.606299212598\n  10: 1764 → 5787.40157480315\n  11: 1182 → 3877.952755905512\n  12: 1145 → 3756.561679790026\n  13: 1159 → 3802.49343832021\n\ngt-p3ep resolution: ESM 0.4.0 §9.5 interp.linear supports continuous-axis interpolation; for discrete integer-keyed lookup with separate default, we wrap in ifelse(AND(code>=1, code<=13), interp.linear(...), default). interp.linear on the integer axis [1..13] returns the exact stored value at integer code inputs (t=0 interpolation: result = value[i] + 0.0*(value[i+1]-value[i]) = value[i]). Out-of-range codes return the default 3500/0.3048 exactly.\n\nTolerance: observed-only algebraic model (no ODE); tolerance={abs:0, rel:0} — exact IEEE-754 float64 arithmetic on literal constants through ifelse, comparison ops, and interp.linear at integer-valued code inputs."
  },
  "tolerance": {
    "abs": 0.0,
    "rel": 0.0
  },
  "variables": {
    "code": {
      "type": "parameter",
      "units": "1",
      "default": 1.0,
      "description": "Anderson 13 fuel model code (1–13). In coupled WRF-SFIRE/LANDFIRE pipelines, sourced from integer raster data. Out-of-range codes return the default σ for fuel model 1."
    },
    "sigma": {
      "type": "unknown",
      "units": "1/m",
      "description": "Surface-area-to-volume ratio σ of the fuel particle. Anderson model 1 (short grass): 11482.94 m⁻¹ through model 13 (heavy slash): 3802.49 m⁻¹. Out-of-range codes return 11482.94 m⁻¹ (fuel model 1 default)."
    }
  },
  "equations": [
    {
      "lhs": "sigma",
      "rhs": {
        "op": "ifelse",
        "args": [
          {
            "op": "and",
            "args": [
              {
                "op": ">=",
                "args": [
                  "code",
                  1.0
                ]
              },
              {
                "op": "<=",
                "args": [
                  "code",
                  13.0
                ]
              }
            ]
          },
          {
            "op": "fn",
            "name": "interp.linear",
            "args": [
              {
                "op": "const",
                "args": [],
                "value": [
                  11482.939632545931,
                  9842.51968503937,
                  4921.259842519685,
                  5705.380577427822,
                  5521.653543307087,
                  5131.233595800525,
                  5124.6719160104985,
                  6197.50656167979,
                  8149.606299212598,
                  5787.40157480315,
                  3877.952755905512,
                  3756.561679790026,
                  3802.49343832021
                ]
              },
              {
                "op": "const",
                "args": [],
                "value": [
                  1.0,
                  2.0,
                  3.0,
                  4.0,
                  5.0,
                  6.0,
                  7.0,
                  8.0,
                  9.0,
                  10.0,
                  11.0,
                  12.0,
                  13.0
                ]
              },
              "code"
            ]
          },
          11482.939632545931
        ]
      }
    }
  ],
  "tests": [
    {
      "id": "code_1_short_grass",
      "description": "Anderson fuel model 1 (short grass): code=1 → σ=3500/0.3048=11482.94 m⁻¹. Lowest-numbered Anderson model.",
      "parameter_overrides": {
        "code": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 11482.939632545931,
          "tolerance": {
            "abs": 0.0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "code_2_timber_grass",
      "description": "Anderson fuel model 2 (timber/grass understory): code=2 → σ=3000/0.3048=9842.52 m⁻¹.",
      "parameter_overrides": {
        "code": 2.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 9842.51968503937,
          "tolerance": {
            "abs": 0.0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "code_3_tall_grass",
      "description": "Anderson fuel model 3 (tall grass): code=3 → σ=1500/0.3048=4921.26 m⁻¹. Lowest SAVR of grass group.",
      "parameter_overrides": {
        "code": 3.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 4921.259842519685,
          "tolerance": {
            "abs": 0.0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "code_7_southern_rough",
      "description": "Anderson fuel model 7 (southern rough): code=7 → σ=1562/0.3048=5124.67 m⁻¹. Mid-range model.",
      "parameter_overrides": {
        "code": 7.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 5124.6719160104985,
          "tolerance": {
            "abs": 0.0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "code_9_hardwood_litter",
      "description": "Anderson fuel model 9 (hardwood litter): code=9 → σ=2484/0.3048=8149.61 m⁻¹. Second highest SAVR.",
      "parameter_overrides": {
        "code": 9.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 8149.606299212598,
          "tolerance": {
            "abs": 0.0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "code_13_heavy_slash",
      "description": "Anderson fuel model 13 (heavy logging slash): code=13 → σ=1159/0.3048=3802.49 m⁻¹. Highest-numbered valid model.",
      "parameter_overrides": {
        "code": 13.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 3802.49343832021,
          "tolerance": {
            "abs": 0.0,
            "rel": 0.0
          }
        }
      ]
    },
    {
      "id": "code_0_below_range",
      "description": "Code 0 (below valid range 1–13): returns default σ≈11482.94 m⁻¹ (3500/0.3048, matching WildlandFire.jl _lookup_fuel default). Tolerance rel=1e-12: sympy/lambdify Piecewise evaluation introduces ~3e-11 absolute error (~2.7e-15 relative) in the else-branch literal vs the in-range interp.linear path; rel=1e-12 is ~3e8 × tighter than the default model tolerance.",
      "parameter_overrides": {
        "code": 0.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 11482.939632545931,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    },
    {
      "id": "code_14_above_range",
      "description": "Code 14 (above valid range 1–13): returns default σ≈11482.94 m⁻¹. Confirms upper boundary. rel=1e-12 for the same sympy/lambdify Piecewise precision reason as code_0_below_range.",
      "parameter_overrides": {
        "code": 14.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 11482.939632545931,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    },
    {
      "id": "code_91_nonburnable_urban",
      "description": "Non-burnable LANDFIRE code 91 (urban): returns default σ≈11482.94 m⁻¹ (fire spread suppressed upstream via h=0 from fuel_heat, not by σ). rel=1e-12 for Piecewise precision.",
      "parameter_overrides": {
        "code": 91.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "sigma",
          "time": 0.0,
          "expected": 11482.939632545931,
          "tolerance": {
            "rel": 1e-12
          }
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "savr_vs_code",
      "description": "Sweep fuel model codes 0–14 to visualise σ (m⁻¹) across the 13 Anderson models. Code 0 and 14 return the default (model 1 value). High SAVR in model 1 (short grass) and model 9 (hardwood litter) vs. low SAVR in slash/timber models 11–13.",
      "initial_state": {},
      "parameters": {
        "code": 1.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "code",
            "range": {
              "start": 0.0,
              "stop": 14.0,
              "count": 15,
              "scale": "linear"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "sigma_vs_code",
          "type": "line",
          "description": "Surface-area-to-volume ratio σ (m⁻¹) as a function of Anderson fuel model code. Short grass (1) and hardwood litter (9) have the highest σ; heavy slash (12–13) the lowest.",
          "x": {
            "variable": "code",
            "label": "fuel model code"
          },
          "y": {
            "variable": "sigma",
            "label": "σ (m⁻¹)"
          }
        }
      ]
    }
  ]
}