Skip to contents

Each row of fuel_type_table carries a Base column (one of "Conifer", "ConiferPlantation", "Deciduous", "Slash", "Open") and an IgnProb column. This multiplies IgnProb row-wise by the matching IgnProb_<base> entry in the calibrated parameter vector.

Usage

apply_calibrated_ignprob(fuel_type_table, calibrated_fire_params)

Arguments

fuel_type_table

data.frame from defaultFuelTypeTable(). Must have Base and IgnProb columns.

calibrated_fire_params

Named numeric vector. Must include the five IgnProb_<base> entries from calibration_par_names().

Value

A copy of fuel_type_table with IgnProb updated.

Multipliers above 1 / default are inert

LANDIS-II requires IgnProb in [0, 1], so the product is clamped to that range. The defaults in defaultFuelTypeTable() are 1.0 for every base except Deciduous (D1), which is 0.5. A Conifer multiplier above 1.0 is therefore clamped away entirely, and a Deciduous multiplier of 2.0 maps to exactly the ceiling. Useful search bounds are [0, 1] for the 1.0 defaults and [0, 2] for Deciduous; anything wider searches a flat region.

This matters when reading a finished calibration. A multiplier that comes back pinned at such a bound is not an estimate that wanted more room – it is saturation, meaning the objective wanted more fire than the maximum ignition probability can deliver. Widening the bound is a no-op. The lever to reach for instead is the ignition rate itself: an ignition becomes a fire only if the initiation probability of the fuel on its cell allows it, so a rate taken from a count of observed FIRES is systematically low as a count of ignitions. Search NumFires, or NumFiresMultiplier where the rate varies by ecoregion and that variation should survive the fit, applying the result with apply_calibrated_num_fires(), and check the count target too – starting with whether the simulated annual rate is computed over the right number of years.