Already in tools/TODO.md:10 as "a vector of fireDomains in session to perform ensembles", with the free-threading work as the enabling piece. What needs pushing is the framing.
The deliverable is not "run 500 simulations". It is one burn-probability map. A single deterministic run is operationally close to useless, because the wind forecast that dominates the answer is itself uncertain. Civil protection, insurance and catastrophe modelling, land managers — all need probability of burn, not a line on a map.
It also answers a credibility problem the repository already has
tests/runff/params.ff:6, and again in run.ff and rungeojson.ff:
setParameter[propagationSpeedAdjustmentFactor=0.6]
setParameter[windReductionFactor=0.4]
Two hand-tuned scalars applied multiplicatively to the rate of spread, chosen for Corsica, with no guidance for anywhere else. Every serious user eventually discovers their results hinge on them.
tools/TODO.md:17 already names the fix — "perform a reanalysis on several wildfires in europe, calibrate adjustment speeds with it" — and an ensemble framework is what makes that tractable: calibration is a search over exactly these parameters, scored against observed perimeters. That converts a liability into a citable dataset.
It also changes what to optimise. If the output is a probability map, per-run latency matters much less than throughput across runs, which makes thread-level parallelism the right investment and MPI largely irrelevant here — worth stating, since the positioning currently leads with HPC scaling.
Current state: greenfield. grep for vector<FireDomain or ensemble in src/ returns nothing.
Prerequisites, all already filed
Individually minor, collectively enough to make an ensemble driver unbuildable.
Suggested first step
Well short of the full framework: a Python driver that runs N simulations over sampled wind and the two adjustment factors, accumulates arrival-time rasters into a burn-probability grid, and writes it out. No C++ change, works today through pyforefire, and demonstrates the output format before anyone commits to a multi-domain session API.
Drafted by Claude Opus 5 from a codebase audit. Reviewed by a maintainer before filing.
EDIT: rewrote for human readability.
Already in
tools/TODO.md:10as "a vector of fireDomains in session to perform ensembles", with the free-threading work as the enabling piece. What needs pushing is the framing.The deliverable is not "run 500 simulations". It is one burn-probability map. A single deterministic run is operationally close to useless, because the wind forecast that dominates the answer is itself uncertain. Civil protection, insurance and catastrophe modelling, land managers — all need probability of burn, not a line on a map.
It also answers a credibility problem the repository already has
tests/runff/params.ff:6, and again inrun.ffandrungeojson.ff:Two hand-tuned scalars applied multiplicatively to the rate of spread, chosen for Corsica, with no guidance for anywhere else. Every serious user eventually discovers their results hinge on them.
tools/TODO.md:17already names the fix — "perform a reanalysis on several wildfires in europe, calibrate adjustment speeds with it" — and an ensemble framework is what makes that tractable: calibration is a search over exactly these parameters, scored against observed perimeters. That converts a liability into a citable dataset.It also changes what to optimise. If the output is a probability map, per-run latency matters much less than throughput across runs, which makes thread-level parallelism the right investment and MPI largely irrelevant here — worth stating, since the positioning currently leads with HPC scaling.
Current state: greenfield.
grepforvector<FireDomainorensembleinsrc/returns nothing.Prerequisites, all already filed
quit[]or an internal error path callingexit(0)mid-ensemble kills the whole run with exit code 0.Individually minor, collectively enough to make an ensemble driver unbuildable.
Suggested first step
Well short of the full framework: a Python driver that runs N simulations over sampled wind and the two adjustment factors, accumulates arrival-time rasters into a burn-probability grid, and writes it out. No C++ change, works today through
pyforefire, and demonstrates the output format before anyone commits to a multi-domain session API.Drafted by Claude Opus 5 from a codebase audit. Reviewed by a maintainer before filing.
EDIT: rewrote for human readability.