Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions bld/namelist_files/namelist_defaults_ctsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -257,11 +257,13 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<fire_method phys="clm4_5" >li2014qianfrc</fire_method>

<max_rh30_affecting_fuel>90.d00</max_rh30_affecting_fuel>
<defo_fire_precip_thresh_bet>4.0d00</defo_fire_precip_thresh_bet>
<defo_fire_precip_thresh_bdt>1.8d00</defo_fire_precip_thresh_bdt>
<borpeat_fire_soilmoist_denom>0.3d00</borpeat_fire_soilmoist_denom>
<nonborpeat_fire_precip_denom>1.0d00</nonborpeat_fire_precip_denom>

<defo_fire_precip_thresh_bet>4.0d00</defo_fire_precip_thresh_bet>
<defo_fire_precip_thresh_bet fire_method="li2024crujra">3.0d00</defo_fire_precip_thresh_bet>

<rh_low fire_method="li2014qianfrc" >30.0d00</rh_low>
<rh_hgh fire_method="li2014qianfrc" >80.0d00</rh_hgh>
<bt_min fire_method="li2014qianfrc" >0.3d00</bt_min>
Expand Down Expand Up @@ -360,7 +362,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<rh_hgh fire_method="li2024gswpfrc" >80.0d00</rh_hgh>
<bt_min fire_method="li2024gswpfrc" >0.85d00</bt_min>
<bt_max fire_method="li2024gswpfrc" >0.98d00</bt_max>
<cli_scale fire_method="li2024gswpfrc" >0.01d00</cli_scale>
<cli_scale fire_method="li2024gswpfrc" >0.04d00</cli_scale>
<boreal_peatfire_c fire_method="li2024gswpfrc" >0.28d-4</boreal_peatfire_c>
<pot_hmn_ign_counts_alpha fire_method="li2024gswpfrc" >0.010d00</pot_hmn_ign_counts_alpha>
<non_boreal_peatfire_c fire_method="li2024gswpfrc" >0.71d-4</non_boreal_peatfire_c>
Expand All @@ -379,11 +381,11 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<rh_hgh fire_method="li2024crujra" >85.0d00</rh_hgh>
<bt_min fire_method="li2024crujra" >0.85d00</bt_min>
<bt_max fire_method="li2024crujra" >0.98d00</bt_max>
<cli_scale fire_method="li2024crujra" >0.01d00</cli_scale>
<cli_scale fire_method="li2024crujra" >0.03d00</cli_scale>
<boreal_peatfire_c fire_method="li2024crujra" >0.28d-4</boreal_peatfire_c>
<pot_hmn_ign_counts_alpha fire_method="li2024crujra" >0.010d00</pot_hmn_ign_counts_alpha>
<non_boreal_peatfire_c fire_method="li2024crujra" >0.71d-4</non_boreal_peatfire_c>
<cropfire_a1 fire_method="li2024crujra" >0.3d00</cropfire_a1>
<cropfire_a1 fire_method="li2024crujra" >0.34d00</cropfire_a1>
<occur_hi_gdp_tree fire_method="li2024crujra" >0.33d00</occur_hi_gdp_tree>
<lfuel fire_method="li2024crujra" >75.d00</lfuel>
<ufuel fire_method="li2024crujra" >825.d00</ufuel>
Expand Down Expand Up @@ -547,7 +549,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<!-- The default filenames are given relative to the root directory
for the CLM2 data in the CESM distribution -->
<!-- Plant function types (relative to {csmdata}) -->
<paramfile phys="clm6_0" >lnd/clm2/paramdata/ctsm5.3.041.Nfix_params.v13.c250221_upplim250.nc</paramfile>
<paramfile phys="clm6_0" >lnd/clm2/paramdata/clm60_params.ctsm6_li2024.c250822.nc</paramfile>
<paramfile phys="clm5_0" >lnd/clm2/paramdata/clm50_params.c250311.nc</paramfile>
<paramfile phys="clm4_5" >lnd/clm2/paramdata/clm45_params.c250311.nc</paramfile>

Expand Down
24 changes: 24 additions & 0 deletions cime_config/testdefs/ExpectedTestFails.xml
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,30 @@
</phase>
</test>

<test name="LII2FINIDATAREAS_D_P256x2_Ld1.f09_t232.I1850Clm60BgcCrop.derecho_intel.clm-default">
<phase name="COMPARE_base_no_interp">
<status>FAIL</status>
<issue>#3252</issue>
<comment>This should be resolved for the 5.4 release.</comment>
</phase>
</test>

<test name="LII2FINIDATAREAS_D_P256x2_Ld1.f09_t232.I1850Clm60BgcCrop.derecho_intel.clm-default--clm-matrixcnOn_ignore_warnings">
<phase name="COMPARE_base_no_interp">
<status>FAIL</status>
<issue>#3252</issue>
<comment>This should be resolved for the 5.4 release.</comment>
</phase>
</test>

<test name="SMS_D_Ld5.f09_g17.ISSP245Clm60BgcCropCrujra.derecho_intel.clm-default">
<phase name="RUN">
<status>FAIL</status>
<issue>#3250</issue>
<comment>This should be resolved for the 5.4 release.</comment>
</phase>
</test>

<!-- Other submodule test list failures (MOSART, RTM, etc. -->

<test name="SMS_Lh3.f10_f10_mg37.I2000Clm60Sp.derecho_intel.mosart-clmAccelSpinupIgnoreWarn">
Expand Down
37 changes: 25 additions & 12 deletions src/biogeochem/CNFireLi2024Mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,8 @@ module CNFireLi2024Mod
! module for fire dynamics
! created in Nov, 2012 and revised in Apr, 2013 by F. Li and S. Levis
! based on Li et al. (2012a,b; 2013)
! revised in Apr, 2014 according to Li et al.(2014)
! revised in May, 2015, according to Li et al. (2015, in prep.)
! Fire-related parameters were calibrated or tuned in May, 2015 based on the
! 20th Century transient simulations at f19_g16 with a CLM4.5 version
! (clm50fire), CRUNCEPv5, and climatological lightning data.
! revised in Apr, 2014 according to Li and Lawrance (2017)
! revised in Jun, 2024 and modified in May, 2025, according to Li et al. (2025, in prep.)
!
! !USES:
use shr_kind_mod , only : r8 => shr_kind_r8
Expand Down Expand Up @@ -147,6 +144,10 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
real(r8) :: fs ! hd-dependent fires suppression (0-1)
real(r8) :: ig ! total ignitions (count/km2/hr)
real(r8) :: hdmlf ! human density
real(r8) :: topoi ! influence of topography on fires (0-1), where 1 indicates no impact.
! can be removed if CLM consider Arctic C3 grass in plateau->
! intense light-> much more C allocated to fine roots than leaf,
! and roots decreasing infiltration
real(r8) :: arh, arh30 !combustability of fuel related to RH and RH30
real(r8) :: afuel !weight for arh and arh30
real(r8) :: btran_col(bounds%begc:bounds%endc)
Expand Down Expand Up @@ -180,7 +181,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
defo_fire_precip_thresh_bdt => cnfire_const%defo_fire_precip_thresh_bdt, & ! Input: [real(r8) ] (mm/day) Max running mean daily precip allowing deforestation fire for broadleaf deciduous trees
borpeat_fire_soilmoist_denom => cnfire_const%borpeat_fire_soilmoist_denom, & ! Input: [real(r8) ] (unitless) Denominator of exponential in soil moisture term of equation relating that and temperature to boreal peat fire (unitless)
nonborpeat_fire_precip_denom => cnfire_const%nonborpeat_fire_precip_denom, & ! Input: [real(r8) ] (unitless) Denominator of precipitation in equation relating that to non-boreal peat fire (unitless)

forc_topo_g => atm2lnd_inst%forc_topo_grc , & ! Input: [real(r8) (:) ] atmospheric surface height, a.k.a. elevation (m)
fsr_pft => pftcon%fsr_pft , & ! Input:
fd_pft => pftcon%fd_pft , & ! Input:
rswf_min => pftcon%rswf_min , & ! Input:
Expand All @@ -197,8 +198,8 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
forc_t => atm2lnd_inst%forc_t_downscaled_col , & ! Input: [real(r8) (:) ] downscaled atmospheric temperature (Kelvin)
forc_rain => wateratm2lndbulk_inst%forc_rain_downscaled_col , & ! Input: [real(r8) (:) ] downscaled rain
forc_snow => wateratm2lndbulk_inst%forc_snow_downscaled_col , & ! Input: [real(r8) (:) ] downscaled snow
prec30 => wateratm2lndbulk_inst%prec30_patch , & ! Input: [real(r8) (:) ] 10-day running mean of tot. precipitation
rh30 => wateratm2lndbulk_inst%rh30_patch , & ! Input: [real(r8) (:) ] 10-day running mean of tot. relative humidity
prec30 => wateratm2lndbulk_inst%prec30_patch , & ! Input: [real(r8) (:) ] 30-day running mean of tot. precipitation
rh30 => wateratm2lndbulk_inst%rh30_patch , & ! Input: [real(r8) (:) ] 30-day running mean of tot. relative humidity
dwt_smoothed => cnveg_state_inst%dwt_smoothed_patch , & ! Input: [real(r8) (:) ] change in patch weight (-1 to 1) on the gridcell, smoothed over the year
cropf_col => cnveg_state_inst%cropf_col , & ! Input: [real(r8) (:) ] cropland fraction in veg column
gdp_lf => this%gdp_lf_col , & ! Input: [real(r8) (:) ] gdp data
Expand Down Expand Up @@ -302,8 +303,8 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
if( patch%itype(p) > nc4_grass )then
cropf_col(c) = cropf_col(c) + patch%wtcol(p)
end if
! For natural vegetation
if (patch%itype(p) <= nc4_grass ) then
! Exclude crops and bare soil
if (patch%itype(p) <= nc4_grass .and. patch%itype(p) >= ndllf_evr_tmp_tree) then
lfwt(c) = lfwt(c) + patch%wtgcell(p)
end if
end do
Expand Down Expand Up @@ -516,6 +517,10 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
g = col%gridcell(c)

! For crop
! 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
if( forc_t(c) >= SHR_CONST_TKFRZ .and. patch%itype(p) > nc4_grass .and. &
kmo == abm_lf(c) .and. &
burndate(p) >= 999 .and. patch%wtcol(p) > 0._r8 )then ! catch crop burn time
Expand Down Expand Up @@ -616,7 +621,15 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
cnfire_params%ignition_efficiency*(1._r8-fs)* &
(lfwt(c)**0.5)
end if
nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) !fire counts/km2/sec

! Reduce burnability at high elevations
if(forc_topo_g(g) <= 2500._r8)then !influence of topography on fires
topoi = 1._r8
else
topoi = 0.004_r8
end if

nfire(c) = ig/secsphr*fb*fire_m*lgdp_col(c) * topoi !fire counts/km2/sec
Lb_lf = 1._r8+10._r8*(1._r8-EXP(-0.06_r8*forc_wind(g)))
spread_m = fire_m**0.5_r8
fd_col(c) = (lfwt(c)*lgdp1_col(c)*lpop_col(c))**0.5_r8 * fd_col(c)
Expand All @@ -639,7 +652,7 @@ subroutine CNFireArea (this, bounds, num_soilc, filter_soilc, num_soilp, filter_
/ (trotr1_col(c) + trotr2_col(c))

cli = max(0._r8,min(1._r8,1._r8-prec30_col(c)*secspday/cri))* &
(15._r8*min(0.0016_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.009_r8)* &
(0.67_r8*min(0.01_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.001_r8) * &
max(0._r8,min(1._r8,(0.25_r8-(forc_rain(c)+forc_snow(c))*secsphr)/0.25_r8))

farea_burned(c) = farea_burned(c)+fb*cli*(cli_scale/secspday)
Expand Down