Ffire - Wildfire Simulation
Ffire - Wildfire Simulation
simulator
H2O wildfire challenge
Miguel Batista; miguelcbatista@gmail.com; team Ffire; Feb 2022
Structure
1. Introduction
2. App walkthrough
3. Simulation structure
4. Main assumptions/criticism
5. More ideas
Introduction
Wildfire simulation is traditionally a very difficult problem to solve; this is in part because of the complex
systems that determine the fire dynamics, such as wind and fire interactions, and partly because of lack of
data for extreme conditions which are hard to recreate in a lab.
This application wants to approach simulations as a learning opportunity, making clear assumptions and
starting from simple ideas: a terrain that contains a forest, which when catches fire, creates a wildfire
that interacts with wind and other geographical factors.
As complexity grows and entire wildfires are simulated, understandability starts to deteriorates; still,
with a clean frontend and real-time components, the behavior of wildfires can be explored and compared
against our simulations.
App walkthrough
App walkthrough
The simulation button allows the user to restart the
simulation (once complete) and resets the upload routine.
Downloads a file with wildfire data. The user needs to pick one of
these, and the app will automatically generate bounding boxes,
wildfire contours, and starting points.
This file can be easily changed (together with the contour data) from WFIGS to
include whatever wildfire in the US since these events are recorded.☺This sample is
from Nov 2021.
App walkthrough Loading a valid json file will allow the
simulation to begin. Three new pages will
appear in the app.
App walkthrough Live updates in wave app
3-d stream of
Evolution of
the landscape
forest state
dynamics
● Our wave app files receive user input that determines the scope of
the simulation. This is essentially a choice of which wildfire to be
simulated, which comes from WFIGS datasets.
● A simulation is started and a fire is created. This triggers the creation
of two objects: a forest and wind. Fire determines the potential of
each tree catching fire.
● Wind is created with a direction and speed; it is assumed to be
constant everywhere. This influences the area of action of a fire and
is one the mechanisms of fire propagation.
Simulation structure
Simulation structure
When choosing a wildfire, it’s important to consider the areas. Because we’re
simulating a large amount of trees, the memory footprint is not negligible.
Simulation structure
The transition of states in trees can be adjusted, as it’s defined based on the
amount of fuel left in a tree.
These transition regions (burning tree -> ember and ember -> ash) were
defined to speed up the simulation, as nothing really interesting is
implemented for embers and ash (like flying embers in the wind direction
which cause new fire fronts).
Wind
failure
Simulation structure
A bug related with the direction of the wind went unfixed in the final
submission.
Without time to correct it and test it, the interaction of wind and fire is not
correct. The issue resides in weather.py in fire projection method of the
wind class.
Fire
dynamics
Simulation structure
The fire potential of a tree is determined by three factors:
Simulation structure
The propagation of a wildfire is also determined by the interaction effects
from wind and fire.
The extension of flames (or conduction of heat) in the direction of the wind
is determined by the wind speed. A simple geometry was calculated and
the trees that are contained in that polygon will be tested for burning
potential.
Simulation structure
The propagation of a wildfire, such as it was designed initially, involved the
comparison of all trees with each other.
Simulation structure
Some issues that may arise from the API. There is a monthly limit of 15 k
calls.
The app allows for bundled calls, this is, retrieve the elevation of
several(tbd) coordinates at once. This was not implemented, mostly
because it was the 3rd API that was tried out over the course of the
experiment – free APIs tend to die quickly.
● Simulate wind behavior in Windninja. File format conversion was the problem here: conversion between coordinate systems
was not easy without using heavy libs, which would inject too much complexity to the app.
● A robust metric to evaluate the similarity of recorded contours and simulated wildfires, and report it in the app would be helpful
to compare different simulations.
● An optimization/inference routine to optimize what conditions were most likely to cause the wildfires.
● Additional detail to terrains: extracting bodies of water or roads from open street maps’ API would create more realistic
simulations.
● Improved shapes for fire and wind interactions, and implementation of interactions effects between most of the other effects.
● Performance improvements to the simulation engine (which enables most of the points above). The code was created with pure
python, and a lot of vectorization and much better algorithms could have been implemented. Experiments with Go showed that
comparable interactions with 10s of millions of trees could be carried out much quicker and with a very small memory footprint.