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

[Fang summer '24 PR 2.1] More improvements to fire model #2711

Merged
merged 13 commits into from
Aug 22, 2024
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
4 changes: 3 additions & 1 deletion bld/CLMBuildNamelist.pm
Original file line number Diff line number Diff line change
Expand Up @@ -2266,7 +2266,9 @@ sub setup_logic_cnfire {

my @fire_consts = ( "rh_low", "rh_hgh", "bt_min", "bt_max", "cli_scale", "boreal_peatfire_c", "non_boreal_peatfire_c",
"pot_hmn_ign_counts_alpha", "cropfire_a1", "occur_hi_gdp_tree", "lfuel", "ufuel",
"cmb_cmplt_fact_litter", "cmb_cmplt_fact_cwd" );
"cmb_cmplt_fact_litter", "cmb_cmplt_fact_cwd", "max_rh30_affecting_fuel",
"defo_fire_precip_thresh_bet", "defo_fire_precip_thresh_bdt",
"borpeat_fire_soilmoist_denom", "nonborpeat_fire_precip_denom" );
if ( &value_is_true($nl->get_value('use_cn')) ) {
foreach my $item ( @fire_consts ) {
if ( ! &value_is_true($nl_flags->{'cnfireson'} ) ) {
Expand Down
44 changes: 39 additions & 5 deletions bld/namelist_files/namelist_defaults_ctsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,12 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<fire_method phys="clm5_0" >li2016crufrc</fire_method>
<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>

<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 @@ -350,21 +356,49 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
<ufuel fire_method="li2021gswpfrc" >1050.d00</ufuel>
<cmb_cmplt_fact_litter fire_method="li2021gswpfrc" >0.5d00</cmb_cmplt_fact_litter>
<cmb_cmplt_fact_cwd fire_method="li2021gswpfrc" >0.28d00</cmb_cmplt_fact_cwd>
<max_rh30_affecting_fuel fire_method="li2021gswpfrc" >90.d00</max_rh30_affecting_fuel>
<defo_fire_precip_thresh_bet fire_method="li2021gswpfrc" >4.0d00</defo_fire_precip_thresh_bet>
<defo_fire_precip_thresh_bdt fire_method="li2021gswpfrc" >1.8d00</defo_fire_precip_thresh_bdt>

<rh_low fire_method="li2024gswpfrc" >30.0d00</rh_low>
<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.025d00</cli_scale>
<boreal_peatfire_c fire_method="li2024gswpfrc" >0.09d-4</boreal_peatfire_c>
<cli_scale fire_method="li2024gswpfrc" >0.01d00</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.17d-3</non_boreal_peatfire_c>
<cropfire_a1 fire_method="li2024gswpfrc" >0.21d00</cropfire_a1>
<non_boreal_peatfire_c fire_method="li2024gswpfrc" >0.71d-4</non_boreal_peatfire_c>
<cropfire_a1 fire_method="li2024gswpfrc" >0.3d00</cropfire_a1>
<occur_hi_gdp_tree fire_method="li2024gswpfrc" >0.33d00</occur_hi_gdp_tree>
<lfuel fire_method="li2024gswpfrc" >75.d00</lfuel>
<ufuel fire_method="li2024gswpfrc" >1050.d00</ufuel>
<ufuel fire_method="li2024gswpfrc" >825.d00</ufuel>
<cmb_cmplt_fact_litter fire_method="li2024gswpfrc" >0.5d00</cmb_cmplt_fact_litter>
<cmb_cmplt_fact_cwd fire_method="li2024gswpfrc" >0.28d00</cmb_cmplt_fact_cwd>
<max_rh30_affecting_fuel fire_method="li2024gswpfrc" >90.d00</max_rh30_affecting_fuel>
<defo_fire_precip_thresh_bet fire_method="li2024gswpfrc" >1.4d00</defo_fire_precip_thresh_bet>
<defo_fire_precip_thresh_bdt fire_method="li2024gswpfrc" >0.5d00</defo_fire_precip_thresh_bdt>
<nonborpeat_fire_precip_denom fire_method="li2024gswpfrc" >6.0d00</nonborpeat_fire_precip_denom>

<rh_low fire_method="li2024crujra" >30.0d00</rh_low>
<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>
<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>
<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>
<cmb_cmplt_fact_litter fire_method="li2024crujra" >0.5d00</cmb_cmplt_fact_litter>
<cmb_cmplt_fact_cwd fire_method="li2024crujra" >0.28d00</cmb_cmplt_fact_cwd>
<max_rh30_affecting_fuel fire_method="li2024crujra" >95.</max_rh30_affecting_fuel>
<defo_fire_precip_thresh_bet fire_method="li2024crujra" >1.8d00</defo_fire_precip_thresh_bet>
<defo_fire_precip_thresh_bdt fire_method="li2024crujra" >0.6d00</defo_fire_precip_thresh_bdt>
<borpeat_fire_soilmoist_denom fire_method="li2024crujra" > 0.35d00</borpeat_fire_soilmoist_denom>
<nonborpeat_fire_precip_denom fire_method="li2024crujra" >6.5d00</nonborpeat_fire_precip_denom>


<!-- Canopy fluxes namelist defaults -->
<use_undercanopy_stability >.false.</use_undercanopy_stability>
Expand Down
32 changes: 29 additions & 3 deletions bld/namelist_files/namelist_definition_ctsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -252,14 +252,15 @@ formulation (1).
</entry>

<entry id="fire_method" type="char*80" category="clm_physics"
group="cnfire_inparm" valid_values="nofire,li2014qianfrc,li2016crufrc,li2021gswpfrc,li2024gswpfrc" >
group="cnfire_inparm" valid_values="nofire,li2014qianfrc,li2016crufrc,li2021gswpfrc,li2024gswpfrc,li2024crujra" >
The method type to use for CNFire

nofire: Turn fire effects off
li2014qianfrc: Reference paper Li, et. al.(2014) tuned with QIAN atmospheric forcing
li2016crufrc: Reference paper Li, et. al.(2016) tuned with CRU-NCEP atmospheric forcing
li2021gswpfrc: Reference paper Li, et. al.(2021?) tuned with GSWP3 atmospheric forcing
li2024gswpfrc: No reference paper yet
li2021gswpfrc: No reference paper yet, tuned with GSWP3 atmospheric forcing
li2024gswpfrc: No reference paper yet, tuned with GSWP3 atmospheric forcing
li2024crujra: No reference paper yet, tuned with CRU-JRA forcing
</entry>

<entry id="pot_hmn_ign_counts_alpha" type="real" category="clm_physics"
Expand Down Expand Up @@ -332,6 +333,31 @@ Combustion completeness factor for litter (unitless)
Combustion completeness factor for CWD[Course Woody Debris] (unitless)
</entry>

<entry id="max_rh30_affecting_fuel" type="real" category="clm_physics"
group="lifire_inparm" >
Value above which 30-day running relative humidity has no effect on fuel combustibility
</entry>

<entry id="defo_fire_precip_thresh_bet" type="real" category="clm_physics"
group="lifire_inparm" >
Value (mm/d) above which running mean daily precipitation (10 or 60 days) does not allow deforestation fire for a column with broadleaf evergreen tropical trees but no broadleaf deciduous tropical trees. "PFT-dependent thresholds of P60d and P10d" in Li et al. (2013, doi:10.5194/bg-10-2293-2013).
</entry>

<entry id="defo_fire_precip_thresh_bdt" type="real" category="clm_physics"
group="lifire_inparm" >
Value (mm/d) above which running mean daily precipitation (10 or 60 days) does not allow deforestation fire for a column with broadleaf deciduous tropical trees but no broadleaf evergreen tropical trees. "PFT-dependent thresholds of P60d and P10d" in Li et al. (2013, doi:10.5194/bg-10-2293-2013).
</entry>

<entry id="nonborpeat_fire_precip_denom" type="real" category="clm_physics"
group="lifire_inparm" >
Denominator of precipitation in equation relating that to non-boreal peat fire (unitless). Eq. 9 in Li et al. (2013, doi:10.5194/bg-10-2293-2013).
</entry>

<entry id="borpeat_fire_soilmoist_denom" type="real" category="clm_physics"
group="lifire_inparm" >
Denominator of exponential in soil moisture term of equation relating that and temperature to boreal peat fire (unitless). Eq. 10 in Li et al. (2013, doi:10.5194/bg-10-2293-2013).
</entry>

<entry id="ncrit" type="real" category="clm_physics"
group="cnprecision_inparm" >
Critical threshold for truncation of Nitrogen (truncate Nitrogen states to zero below this value)
Expand Down
10 changes: 10 additions & 0 deletions cime_config/testdefs/testlist_clm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3600,6 +3600,16 @@
</options>
</test>

<test name="SMS_D_Ld65" grid="f10_f10_mg37" compset="I2000Clm60BgcCrop" testmods="clm/FireLi2024CruJra">
<machines>
<machine name="derecho" compiler="intel" category="aux_clm"/>
<machine name="derecho" compiler="intel" category="fire"/>
</machines>
<options>
<option name="wallclock">00:30:00</option>
</options>
</test>

<test name="SMS_Ld733" grid="f10_f10_mg37" compset="IHistClm60BgcCrop" testmods="clm/cropMonthOutput--clm/RxCropCalsNoAdapt">
<machines>
<machine name="derecho" compiler="intel" category="crop_calendars"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
../default
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fire_method = 'li2024crujra'
67 changes: 67 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,4 +1,71 @@
===============================================================
Tag name: ctsm5.2.024
Originator(s): samrabin (Sam Rabin, UCAR/TSS, samrabin@ucar.edu)
Date: Thu Aug 22 11:07:11 MDT 2024
One-line Summary: Improve li2024 fire methods

Purpose and description of changes
----------------------------------

For fire methods li2024gswpfrc and (new) li2024crujra:
- Improves peat burning dependence on climate
- Improves dependence of deforestation burning on climate.
- Allows lightning ignitions in tropical closed forest. (Human ignitions, other than deforestation, still not allowed.)
- Adds effect of landscape fragmentation on ignitions and fire duration.
- Recalibrates some parameters.


Significant changes to scientifically-supported configurations
--------------------------------------------------------------

Does this tag change answers significantly for any of the following physics configurations?
(Details of any changes will be given in the "Answer changes" section below.)

[ ] clm6_0

[ ] clm5_1

[ ] clm5_0

[ ] ctsm5_0-nwp

[ ] clm4_5


Notes of particular relevance for users
---------------------------------------
Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables):
- Adds optional fire_method li2024crujra.


Testing summary:
----------------

regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):

derecho ----- OK
izumi ------- DIFF


Answer changes
--------------

Changes answers relative to baseline: Yes

Summarize any changes to answers, i.e.,
- what code configurations: Only with optional fire_method li2024gswpfrc
- what platforms/compilers: All
- nature of change (roundoff; larger than roundoff/same climate; new climate): new climate, probably


Other details
-------------

Pull Requests that document the changes (include PR ids):
- ESCOMP/CTSM#2711: [Fang summer '24 PR 2.1] More improvements to fire model (https://github.com/ESCOMP/CTSM/pull/2711)

===============================================================
===============================================================
Tag name: ctsm5.2.023
Originator(s): samrabin (Sam Rabin, UCAR/TSS, samrabin@ucar.edu)
Date: Fri Aug 16 11:00:32 MDT 2024
Expand Down
1 change: 1 addition & 0 deletions doc/ChangeSum
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
Tag Who Date Summary
============================================================================================================================
ctsm5.2.024 samrabin 08/22/2024 Improve li2024 fire methods
ctsm5.2.023 samrabin 08/16/2024 Merge b4b-dev
ctsm5.2.022 samrabin 08/14/2024 Rework crop_calendars suite and cropMonthOutput
ctsm5.2.021 rgknox 08/13/2024 Adding on-the-fly parameter settings for prescribed N and P in FATES
Expand Down
30 changes: 28 additions & 2 deletions src/biogeochem/CNFireBaseMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,12 @@ module CNFireBaseMod

real(r8) :: cmb_cmplt_fact_litter = 0.5_r8 ! combustion completion factor for litter (unitless)
real(r8) :: cmb_cmplt_fact_cwd = 0.25_r8 ! combustion completion factor for CWD (unitless)
end type
real(r8) :: max_rh30_affecting_fuel = 90._r8 ! Value above which 30-day running relative humidity has no effect on fuel combustibility (%)
real(r8) :: defo_fire_precip_thresh_bet = 4.0_r8 ! Max running mean daily precip (mm/d) allowing deforestation fire for broadleaf evergreen trees
real(r8) :: defo_fire_precip_thresh_bdt = 1.8_r8 ! Max running mean daily precip (mm/d) allowing deforestation fire for broadleaf deciduous trees
real(r8) :: borpeat_fire_soilmoist_denom = 0.3 ! Denominator of exponential in soil moisture term of equation relating that and temperature to boreal peat fire (unitless)
real(r8) :: nonborpeat_fire_precip_denom = 1.0 ! Denominator of precipitation in equation relating that to non-boreal peat fire (unitless)
end type

type, public :: params_type
real(r8) :: prh30 ! Factor related to dependence of fuel combustibility on 30-day running mean of relative humidity (unitless)
Expand Down Expand Up @@ -343,11 +348,17 @@ subroutine FireReadNML( this, NLFilename )
real(r8) :: non_boreal_peatfire_c, cropfire_a1
real(r8) :: rh_low, rh_hgh, bt_min, bt_max, occur_hi_gdp_tree
real(r8) :: lfuel, ufuel, cmb_cmplt_fact_litter, cmb_cmplt_fact_cwd
real(r8) :: max_rh30_affecting_fuel
real(r8) :: defo_fire_precip_thresh_bet, defo_fire_precip_thresh_bdt
real(r8) :: borpeat_fire_soilmoist_denom, nonborpeat_fire_precip_denom

namelist /lifire_inparm/ cli_scale, boreal_peatfire_c, pot_hmn_ign_counts_alpha, &
non_boreal_peatfire_c, cropfire_a1, &
rh_low, rh_hgh, bt_min, bt_max, occur_hi_gdp_tree, &
lfuel, ufuel, cmb_cmplt_fact_litter, cmb_cmplt_fact_cwd
lfuel, ufuel, cmb_cmplt_fact_litter, cmb_cmplt_fact_cwd, &
max_rh30_affecting_fuel, &
defo_fire_precip_thresh_bet, defo_fire_precip_thresh_bdt, &
borpeat_fire_soilmoist_denom, nonborpeat_fire_precip_denom

if ( this%need_lightning_and_popdens() ) then
cli_scale = cnfire_const%cli_scale
Expand All @@ -364,6 +375,11 @@ subroutine FireReadNML( this, NLFilename )
occur_hi_gdp_tree = cnfire_const%occur_hi_gdp_tree
cmb_cmplt_fact_litter = cnfire_const%cmb_cmplt_fact_litter
cmb_cmplt_fact_cwd = cnfire_const%cmb_cmplt_fact_cwd
max_rh30_affecting_fuel = cnfire_const%max_rh30_affecting_fuel
defo_fire_precip_thresh_bet = cnfire_const%defo_fire_precip_thresh_bet
defo_fire_precip_thresh_bdt = cnfire_const%defo_fire_precip_thresh_bdt
borpeat_fire_soilmoist_denom = cnfire_const%borpeat_fire_soilmoist_denom
nonborpeat_fire_precip_denom = cnfire_const%nonborpeat_fire_precip_denom
! Initialize options to default values, in case they are not specified in
! the namelist

Expand Down Expand Up @@ -397,6 +413,11 @@ subroutine FireReadNML( this, NLFilename )
call shr_mpi_bcast (occur_hi_gdp_tree , mpicom)
call shr_mpi_bcast (cmb_cmplt_fact_litter , mpicom)
call shr_mpi_bcast (cmb_cmplt_fact_cwd , mpicom)
call shr_mpi_bcast (max_rh30_affecting_fuel , mpicom)
call shr_mpi_bcast (defo_fire_precip_thresh_bet, mpicom)
call shr_mpi_bcast (defo_fire_precip_thresh_bdt, mpicom)
call shr_mpi_bcast (borpeat_fire_soilmoist_denom, mpicom)
call shr_mpi_bcast (nonborpeat_fire_precip_denom, mpicom)

cnfire_const%cli_scale = cli_scale
cnfire_const%boreal_peatfire_c = boreal_peatfire_c
Expand All @@ -412,6 +433,11 @@ subroutine FireReadNML( this, NLFilename )
cnfire_const%occur_hi_gdp_tree = occur_hi_gdp_tree
cnfire_const%cmb_cmplt_fact_litter = cmb_cmplt_fact_litter
cnfire_const%cmb_cmplt_fact_cwd = cmb_cmplt_fact_cwd
cnfire_const%max_rh30_affecting_fuel = max_rh30_affecting_fuel
cnfire_const%defo_fire_precip_thresh_bet = defo_fire_precip_thresh_bet
cnfire_const%defo_fire_precip_thresh_bdt = defo_fire_precip_thresh_bdt
cnfire_const%borpeat_fire_soilmoist_denom = borpeat_fire_soilmoist_denom
cnfire_const%nonborpeat_fire_precip_denom = nonborpeat_fire_precip_denom

if (masterproc) then
write(iulog,*) ' '
Expand Down
2 changes: 1 addition & 1 deletion src/biogeochem/CNFireFactoryMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ subroutine create_cnfire_method( NLFilename, cnfire_method )
allocate(cnfire_li2016_type :: cnfire_method)
case ("li2021gswpfrc")
allocate(cnfire_li2021_type :: cnfire_method)
case ("li2024gswpfrc")
case ("li2024gswpfrc", "li2024crujra")
allocate(cnfire_li2024_type :: cnfire_method)

case default
Expand Down
Loading
Loading