Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

saving fire energy released in level set simulation #13607

Open
3dfirelab opened this issue Oct 22, 2024 · 7 comments
Open

saving fire energy released in level set simulation #13607

3dfirelab opened this issue Oct 22, 2024 · 7 comments
Assignees

Comments

@3dfirelab
Copy link

3dfirelab commented Oct 22, 2024

Following an effort to export terreain from an FDS-LS simulation in qgis

firetools/qgis2fds#92

I moved forward and try to compute the ROS form the simulation using an arrival time map that I computed from the level set contour variables (phi). This is what I have now (in UTM projection here)
image
The wind is blowing form the south of the domain. the black line is the ignition.
The red zone on the right plot shows all points with an arrival time lower than the lowest time of my arrival time + 1s.
The contour of the levelset near ignition time are showing fast back fire propagation. This is why I masked them out.

I am also now trying to get a map of fire released total energy. But I am not sure which variable is the best to consider.
HRRPUV is only accounting for combustion in the cell of the slice.
What could be the best variable to save in SLCF to get information from the MLR or the HRRPUA at agl=0.

@ericvmueller
Copy link
Contributor

In addition, its worth noting these characteristics are effectively fixed for level set. The burnout time is a function of the fuel properties (surface-to-volume ratio in our case), and then the theoretical HRR is determined from the fuel load and heat of combustion. So you could obtain values without even running a simulation.

However, they are adjusted to a grid-dependent value in FDS because the burnout time for a cell, rather than the fuel, depends on how long it takes the fire to cross a cell ...which depends on ROS and cell size. So it depends if you want the assumed theoretical HRRPUA for the fuel layer or the HRRPUA applied in the model (which Kevin's outputs will give you).

@3dfirelab
Copy link
Author

ok thanks, I was able to import the boundary files ouput to map 2D burning rate and compute map of Biomass burnt.
this is what I have for my fire.
image

using qgis2fds, my terrain is made of multiple &OBST element with many having boundary patch in x,y, and z directions.
To map the 2D the burning rate, I used

 &BNDF QUANTITY='MASS FLUX' /

and then only use the elements in the bf file that are pointing upward.
Is this assumption right? the vertical face of the &OBST elements are not participating to the mass flux (and so to the fire)?

There is a slight missalignement of my Biomass Burning (BB) Map with the original fuel map when plotted in qgis.
image
in the plot above the black line are the contour of the BB map, while the color behind is the original fuel map used in qgis2fds.

I will try to investigate this.
I solve some gis problem while looking at the terrain. So I think I might have problem in the way I load the bf.
each patch is coming as a set of 4 index i1,i2,j1,j2,k1,k2
with

k1=k2
j2 = j1+1
i2 = i1+1

I am only using for each patch with IOR=+3 the data at (i1,j1) that I assigned to my 2D array that has the size of the sub mesh, then I follow the same process as for the slice.
any comment on this?

meanwhile I am trying to relate my value of BB to the prescribed fuel load of the rothermel-Albini model.
I have a maximum of ~250kg burnt in pixel of 20x20m2, so 0.625 kg/m2.
despite my alignment mismatch, the high value seems to be linked with the fuel model 3, tall grass with only fine fuel of .68 kg/m2.

assuming a very fats ROS of 1m/s (high value in in my ROS map)
equation 17.44 from the user guide gives

mlr = (1.-0.2) * 0.68 / (75600/4920)

so a fast ROS and a resolution of 20m will give be a minimum duration time of 20s. and BB of

BB = mlr * 20/ROS = mlr * 20s = 0.7 kg

any lower ROS will only increase BB.
however I have a lower BB of 0.625 kg.

this means I should expect a higher ROS than 1m/s that is not really possible If I trust my ROS map above.
So my question is to know if I am doing something wrong above in the estimation of my theoretical BB?
I am trying to understand if my map of BB and ROS are coherent.

@ericvmueller
Copy link
Contributor

I'm not super familiar with parsing boundary files so maybe @mcgratta or some can give you a faster answer on that part.

As for you calculation of mass burned... the level set method should burn all mass in any cell that is ignited (minus the char fraction). So you should consume (and release in the gas phase):
mass_loss = fuel_load * (1-char_fraction) * cell_area
in all areas with fire spread.

The thing which depends on spread rate is the burning duration, not the mass consumed. The burnout time for that grass fuel is:
(75600/4920) = 15 s
but then it takes dx/ROS for the fire to spread across the cell ...in your example an extra 20 s. So consumption of the total mass in the cell takes place over a total of 35 s. You should get an adjusted MLR per area of:
mlr = (1.-0.2) * 0.68 /35

@johodges
Copy link
Collaborator

Are you assuming the boundary data is for the nodes or the cell centers in your importer? Your &BNDF line indicates nodal values (since CELL_CENTERED=T is not specified), but your visualization looks like you are showing cell center values.

@mcgratta
Copy link
Contributor

The boundary "patches" are indexed by (i1,i2,j1,j2,k1,k2). If k1=k2, the patch is oriented upwards, in the z direction. If the grid cell above the surface patch is indexed by i=2 and j=4, then i1 will be 1 and i2 will be 2. j1 will be 3 and j2 will be 4.

@3dfirelab
Copy link
Author

thanks for the comments.
I am assuming all data are at the node, and all meshes have the same resolution
I load slice, terrain, and bf files to get 2d array per mesh of phi, mlr and terrain
then I assigned the value to a 2d global mesh that covers the whole domain with the resolution of the meshes and compute ROS, and Burning Biomass (BB).
then I move all by half a resolution step to save in xarray.
the code is here

https://github.com/3dfirelab/Process_FDS-LS

I improve slightly my alignement of BB with the fuel map (compare to above ,,map), but still not perfect
image

is there any way I can ask FDS to output its fuelmap?

@ericvmueller
Copy link
Contributor

Perhaps you could use a boundary file of SURFACE DENSITY (with CELL_CENTERED=T) to identify the fuel in each cell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants