-
Notifications
You must be signed in to change notification settings - Fork 92
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
Bug in SFMainMod? Don't ever remove trunks from sum_fuel
?
#1178
Comments
I'll note that the patch-level variable
So at some point we either intended to or actually did omit the trunks from this variable |
@adrifoster , my interpretation is that sum fuel should interpret was is actually there, and evaluate all litter that can be considered fuel. If that portion of the litter (trunk wood) is not there or has recently been changed, then it should be reflected in litt_c%ag_cwd as that is the prognostic variable. If there is no change in the amount of litter in existence, and this is more about what litter is included in the sum, then we should be changing how we calculate sum_fuel. Is this kind of what you are getting at? |
Yes, so the 1000-hr fuels (i.e. trunks) are not supposed to be used to calculate fire rate of spread, intensity, etc. So the |
I think you're right, Adrianna; I don't see anywhere that In addition to the comment at the definition of ! Correct averaging for the fact that we are not using the trunks pool for fire ROS and intensity (5)
! Consumption of fuel in trunk pool does not influence fire ROS or intensity (Pyne 1996)
currentPatch%fuel_bulkd = currentPatch%fuel_bulkd * (1.0_r8/(1.0_r8-currentPatch%fuel_frac(tr_sf)))
currentPatch%fuel_sav = currentPatch%fuel_sav * (1.0_r8/(1.0_r8-currentPatch%fuel_frac(tr_sf)))
currentPatch%fuel_mef = currentPatch%fuel_mef * (1.0_r8/(1.0_r8-currentPatch%fuel_frac(tr_sf)))
currentPatch%fuel_eff_moist = currentPatch%fuel_eff_moist * (1.0_r8/(1.0_r8-currentPatch%fuel_frac(tr_sf))) |
Okay thanks @samsrabin. So I guess we need to update this... Should this come in as a hot-fix? I'd like to change it first so I can ensure my refactors aren't doing something wonky. |
I'm happy to help fast track this and get it in before we update to API 35. I'd recommend getting the fix based on main though, and not wrapping it into the fire refactor |
thanks! working on sending a quick fix PR now. |
Oh wow, thanks @adrifoster for finding this. I've had a lot of issues with fire intensity being too high for my simulations in Californian mixed conifer forests, and I guess this would explain why. So if I understand correctly what you found, the model would essentially treat logs on the landscape as if they had the properties of finer fuels (SAV etc.) and then include all that extra mass in the calculations of intensity / spread? |
@samsrabin but if this affects rate of spread, then it should also affect intensity and area burned too, since those are both dependent on rate of spread, correct? |
Oh yeah, it would definitely affect burned area. I didn't think that ROS entered into the intensity (kW/m) calculations, but if that's the case then yes that will be affected too. |
Ok thanks! Most simulations Ive run have very large 1000 fuel loads, so this will def change results. Especially because the 1000 hr fuel isnt actually consumed... |
Hi @adamhb yes, this bug fix should decrease rate of spread, intensity, mortality, etc. like @samsrabin said. But also yeah as @samsrabin said, it's only erroneously included in the I'm still running my "very long" (i.e. 10 years) simulations to test potential differences so I will post those here, but please feel free to add any if you have a simulation you want to kick off. |
@adamhb is that true? I think it should be consumed... just not used to calculate ROS or FI... |
@adrifoster these lines of code suggest that trunk fuel is not consumed right? "currentPatch%TFC_ROS" is defined here as "total fuel consumed by flaming front (kgC/m2 of burned area)" I think the theory behind this is that logs generally are consumed by smoldering, which is not really a capability of spitfire, which is more geared towards the dynamics of ROS and flaming front. |
@adrifoster However, I think it would be great to having smoldering as a capability to avoid unrealistic build up of trunk fuel. |
@adamhb true, it's not included in TFC_ROS but here it's being consumed:
|
@adrifoster ok yes I see. I suspect that the brunt_frac_litter value for trunk fuel is typically near zero as calculated here (but that's a separate issue and I haven't confirmed in). |
@adamhb okay good to know. Happy to discuss with you if you want to go over it, otherwise I can be sure to add some specific unit testing for it during my refactoring work. Incidentally, I actually updated this set of equations (for a different model) based on some observational data I had (specific to boreal region...) but we could think about investigating
|
@adrifoster Thanks for sharing! I think a unit test would be a good idea. Just looking back at some old output, the trunk fuel moisture didn't really change going into the dry season (stayed very high), so not much of it burned. But, this might be what should happen in a model that focuses on the dynamics at the flaming front... |
@adrifoster can we close this per #1180? Or is this issue broader than just that fix? |
@glemieux no we can close |
just noticed that this was fixed by #1180, but still open. closing. |
In refactoring the SPITFIRE code, it seems like we don't actually ever remove trunk litter from
patch%sum_fuel
. We do remove trunk characteristics from the weighted averages of bulk density, SAV, etc., but from my read of the code we do not ever correctpatch%sum_fuel
from it's original calculation (here):Note that
litt_c%ag_cwd(:)
is defined here:It is then used in the rate of spread subroutine (here):
Which, according to the original Rothermel equations and the SPITFIRE paper , should not include the 1000-hr (i.e. trunk) fuels.
If my read is correct, updating this will certainly change answers...
Is this an update that happened? or was it always like this?
tagging relevant folks...
@ckoven @rgknox @glemieux @samsrabin
The text was updated successfully, but these errors were encountered: