Fire update May 2025
Description of changes
- Reduces fire count 99.6% above 2500 meters elevation based on GFED5 elevation bins of burned area, to eliminate overestimation of burning on Tibetan Plateau.
- Updates deforestation fire parameterization based on ctsm5.4 LU and GFED5 burned area.
- Fixes/improves comments
For now, also makes it so that crop fires don't happen if cropland is < 10% of the gridcell. However, this was only a kludge to avoid some mathematical weirdness with interpolation of agricultural peak burning month using average. This will be replaced by a more appropriate interpolation method with #3188, after which maybe remove 10% cropland threshold. However, that will make cropland burned area 10-30 Mha worse.
Specific notes
Contributors other than yourself, if any: None
CTSM Issues Fixed: None
Are answers expected to change (and if so in what way)? Yes. @lifang0209, can you please add a comment explaining the results before and after?
Any User Interface Changes (namelist or namelist defaults changes)? Namelist defaults:
defo_fire_precip_thresh_betfor CRU-JRAcli_scalefor CRU-JRA and GSWP3 Parameter file:rswf_max(3)rswf_min(3)fsr_pftandfd_pft, although these changes cancel each other out
Does this create a need to change or add documentation? Did you do so?
- [ ] Unknown
Testing performed, if any: @lifang0209, please add a comment explaining.
Blocked by #3188.
This is unblocked; now waiting on @lifang0209 to change the code to avoid the crop fraction threshold now that #3188 is merged.
@samsrabin Hi Sam, (1) Using the new abm raw data, the following comment could be removed "! cropf_col(c) * col%wtgcell(c) > 0.1_r8 is added because fires are rare in ! gridcells with limited cropland coverage based on GFED5. Also, this helps to ! avoid abm (crop fire peak month) regridding error from 0.05 degree to lower resolution ! The condition could be removed if CLM supports the use of mode in abm inputs regridding"
(2) remove “.and. cropf_col(c) * col%wtgcell(c) > 0.1_r8 ” from the condition statement (3) cropfire_a1 = 0.34d00
Great, thanks! Will do.
Blocked while we wait for the 5.4 update, since this depends on new surface datasets.
We have the 5.4 branch. Can / should this PR get merged to the 5.4 branch so we can start evaluating fire results in coupled model tests?
Yes, I think it should be merged.
@lifang0209 The paramfile changes to paramfile changes to rswf_min/max will affect li2021gswpfrc in addition to the li2024* fire methods. Is that okay?
Some notes on the paramfile changes...
The latest paramfile is ctsm5.3.041.Nfix_params.v13.c250221_upplim250.nc, but it looks like Fang did her development based on a branch with ctsm60_params.c250311.nc as the latest. The parameter file she pointed me to—/glade/u/home/fangli/ctsm60_params.fire.crujra0530.nc—contains lots of differences relative to both of those. I only expected to see differences in rswf_max and rswf_min for one PFT.
Looking more closely, it looks like Fang's is closer to ctsm60_params.c250311.nc. There are unexpected differences in fd_pft and fsr_pft, but my understanding is that those should not be brought in with this PR.
However, we need to decide exactly which paramfile I should apply Fang's changes to. ctsm5.3.041.Nfix_params.v13.c250221_upplim250.nc was my first thought, but apparently there's a more recent one floating around (used in NCAR/LMWG_dev#116).
@lifang0209 The paramfile changes to to rswf_min/max will affect
li2021gswpfrcin addition to theli2024*fire methods. Is that okay?
Just following up about this, Fang.
Also: when you said pft 3 here, were you referring to needleleaf_deciduous_boreal_tree?
(1) rswf_max(3)=0.7d00 (2) rswf_min(3)=0.35d00
@lifang0209 The paramfile changes to paramfile changes to rswf_min/max will affect
li2021gswpfrcin addition to theli2024*fire methods. Is that okay?
It's okay
Hi Sam, it's better to copy rswf_max, rswf_min, fd_pft, and fsr_pft for all PFTs from /glade/u/home/fangli/ctsm60_params.fire.crujra0530.nc to the target paramfile. If you need me to do this, let me know. The burned area fraction in a grid cell=(fd_pft * fsr_pft)^2 * C. That’s why I mentioned that “multiplying fsr_pft by 5 and dividing fd_pft by 5, based on FireAtlas and being more reasonable, does not affect the results.”
These rswf_max, rswf_min, fd_pft, and fsr_pft are tuned in my fire scheme and can only be calibrated qualitatively. I will explain the rationale for these settings in my Li2024 fire scheme paper as reference.
Thanks, Fang. It would actually be good if we could get a brief explanation here too to include in the ChangeLog, rather than waiting for the paper.
Thanks, Sam.
The parameters rswf_max and rswf_min (thresholds for root-zone soil moisture) were adjusted to achieve more reasonable simulations of burned area fraction, e.g., for needleleaf_deciduous_boreal_tree. The value of fd_pft was changed from 1 to 5 days, which aligns better with FireAtlas data for non-peat and non-deforestation fires outside croplands. To maintain the burned area unchanged, fsr_pft was divided by 5.
@lifang0209 I'm seeing changes to fsr_pft (fire spread rate) that aren't strictly divisions by 5:
- All the prognostic crops (PFTs ≥ 17) had it set to zero. Is this just to mark it as "not used" in crop fires?
- PFTs 3, 4, 6, and 11–16 aren't exact divisions by 5. Was this intentional? If so, what's the rationale?
Output for those latter PFTs from nccmp -dfs --Tolerance=0.00001 /glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/paramdata/ctsm60_params.c250311.nc /glade/u/home/fangli/ctsm60_params.fire.crujra0530.nc:
DIFFER : VARIABLE : fsr_pft : POSITION : [3] : VALUES : 0.1 <> 0.026 : PERCENT : 74
DIFFER : VARIABLE : fsr_pft : POSITION : [4] : VALUES : 0.21 <> 0.04 : PERCENT : 80.9524
DIFFER : VARIABLE : fsr_pft : POSITION : [6] : VALUES : 0.21 <> 0.04 : PERCENT : 80.9524
DIFFER : VARIABLE : fsr_pft : POSITION : [11] : VALUES : 0.11 <> 0.026 : PERCENT : 76.3636
DIFFER : VARIABLE : fsr_pft : POSITION : [12] : VALUES : 0.11 <> 0.026 : PERCENT : 76.3636
DIFFER : VARIABLE : fsr_pft : POSITION : [13] : VALUES : 0.21 <> 0.04 : PERCENT : 80.9524
DIFFER : VARIABLE : fsr_pft : POSITION : [14] : VALUES : 0.31 <> 0.06 : PERCENT : 80.6452
DIFFER : VARIABLE : fsr_pft : POSITION : [15] : VALUES : 0.21 <> 0.04 : PERCENT : 80.9524
DIFFER : VARIABLE : fsr_pft : POSITION : [16] : VALUES : 0.21 <> 0.04 : PERCENT : 80.9524
By the way, there are some differences in fsr_pft between your base parameter file and the one I'll be applying your changes to:
fang_baseline=/glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/paramdata/ctsm60_params.c250311.nc
linnia=/glade/work/linnia/CLM6-PPE/ctsm6_cal/paramfiles/cal115_c08132025.nc
params_to_include="(rswf_max|rswf_min|fd_pft|fsr_pft)"
module load nccmp
nccmp -dfs $fang_baseline $linnia 2>&1 | grep -E "${params_to_include}"
DIFFER : VARIABLE : fsr_pft : POSITION : [2] : VALUES : 0.1 <> 0.1168
DIFFER : VARIABLE : fsr_pft : POSITION : [3] : VALUES : 0.1 <> 0.1189
DIFFER : VARIABLE : fsr_pft : POSITION : [4] : VALUES : 0.21 <> 0.2625
DIFFER : VARIABLE : fsr_pft : POSITION : [6] : VALUES : 0.21 <> 0.1648
DIFFER : VARIABLE : fsr_pft : POSITION : [13] : VALUES : 0.21 <> 0.242
DIFFER : VARIABLE : fsr_pft : POSITION : [15] : VALUES : 0.21 <> 0.242
I'm going to handle this by applying your relative changes to the value in the $linnia parameter file. So, e.g., since you multiplied fsr_pft(2) by 0.2, I will do the same, resulting in 0.1168 x 0.2 = 0.02336 instead of your 0.1 x 0.2 = 0.02.
@samsrabin fsr_pft is not used for calculating the burned area fraction of crop fires in my fire scheme, so I set fsr_pft to zero for crop PFTs.
You could rephrase it as: "....To make the change in burned area small, fsr_pft was divided by around 5 accordingly.". As I mentioned earlier, fsr_pft is tuned, so it doesn’t need to be exactly divided by 5 and include many decimal places, e.g., preferring 0.02336 over 0.02 is unnecessary as the extra precision is meaningless. I’d like to see the results in the latest parameter file (e,g., some PPE results included) and in coupling runs. fsr_pft and fsr_pd may be further adjusted later.
@wwieder @lifang0209 This is ready for testing! You can see the script I used to apply the paramfile changes here: /glade/work/samrabin/ctsm_ctsm6_li2024/tools/contrib/paramfile_changes/paramfile_chg_ctsm6_li2024.20250822.py.
Note that this will show a lot of diffs until the alpha-ctsm5.4.CMIP7 branch is brought up to date with ctsm5.3.071.
- [ ] Perform final approving review once (a) at least ctsm5.3.071 has been merged into alpha-ctsm5.4.CMIP7 and (b) the corresponding tag on that branch has been merged into here.
I suggest this come in after the 5.4 tag is made, giving us a bit more time to generate initial conditions and evaluate historical fire results on top of the PPE115 parameter file that's being used in NCAR/LMWG_dev#116
@wwieder Hi Will, if the 5.4 tag uses CTSM5.4 surface and land use data, it‘s better to include the fire scheme updates. The updates include recalibration based on new abm (crop peak month) and land-use-based deforestation rate.
@ekluzek Should this be tag alpha-ctsm5.4.CMIP7.10.ctsm5.3.068?