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

Fire suppression from GDP and pop density in FATES-SPITFIRE #673

Open
jkshuman opened this issue Jul 16, 2020 · 5 comments
Open

Fire suppression from GDP and pop density in FATES-SPITFIRE #673

jkshuman opened this issue Jul 16, 2020 · 5 comments

Comments

@jkshuman
Copy link
Contributor

jkshuman commented Jul 16, 2020

With the implementation of anthropogenic ignitions issue #670, fire suppression on ignitions and fire size should also be added. Fire suppression can be handled using data from both GDP and population density information explicitly as in the CLM-Li Fire model (Li et al 2013).

Alternately, it can be handled implicitly through the use of population density and the regional parameter (a(Nd)) as in SPITFIRE per Thonicke et al (2010) EQ3 (shown in image) with (a(Nd)) representing the likelihood of people to produce ignitions based on data for numbers of human-caused fires and population density. The models using the Thonicke et al (2010) EQ3 are JSBACH, LPJ-GUESS, and ORCHIDEE. JSBACH-SPITFIRE additionally uses population density to reduce fire duration and thus reduce fire size. The SPITFIRE methodology of implicit suppression per Thonicke et al (2010) can be implemented with the regional dataset for (a(Nd)) and adaptation of the population density suppression calculations proposed here.
Screen Shot 2020-07-15 at 6 14 21 PM

The CLM-Li Fire implementation for suppression on both ignitions and fire size is adapted here for FATES-SPITFIRE.

To include suppression per the Li et al (2013) requires:
1) reading supplemental population density data (addressed in issue #670 and PR #635 )
2) reading supplemental GDP data (static surface dataset)
3) update ignitions to patch-level
4) reduce ignitions at the patch-level
5) reduce fire size at the patch-level
(data is supplemental, so not required for SPITFIRE module operation)

population density reduction in ignitions CLM-Li:
Per the CLM-Li fire model suppression of ignitions due to pop density (fs) =
fs = 1._r8-(0.01_r8+0.98_r8*exp(-0.025_r8*hdmlf))
where: human density (hdmlf) = read from a datafile,
https://github.com/ESCOMP/CTSM/blob/a3e738cb211157f98d947a7b75ee789193db5fd9/src/biogeochem/CNFireLi2016Mod.F90#L608

GDP reduction in ignitions and firesize CLM-Li:
GDP suppression on ignitions and firesize are implemented at site and veg type level
https://github.com/ESCOMP/CTSM/blob/a3e738cb211157f98d947a7b75ee789193db5fd9/src/biogeochem/CNFireLi2016Mod.F90#L431-L470

Fire occurrence is lower in tree vs grass areas per Li et al (2013) Fig5 (grass (a), and trees (b)).
Li_etal_2013_Fig5

Suppression is higher in tree dominated systems than in grass systems with this method per Fig 6 (grass/shrub) and Fig 7 (tree) from Li et al (2013) shown here.
Li_etal_fig6_ 7

FATES-SPITFIRE implementation:

GDP and population density suppression of ignitions and fire size:
where gdp per capita (gdplf) = read from dataset,
where human density (hdmlf) = read from dataset,
note: gdplf in units of 1000s

The Li et al (2013) suppression method used in FATES-SPITFIRE would be calculated at the patch level based on dominant vegetation type and GDP with low GDP locations (GDP less than 100 US$ per person) having no suppression.

if gdplf > 0.1 then   ! more than 
    if patch grass/shrub dominant then
       gdp_ign_suppress = (0.1_r8 + 0.9_r8* exp(-1._r8*PI* (gdp_lf(c)/8._r8)**0.5_r8)
       gdp_firesize_suppress = (0.2_r8 + 0.8_r8* exp(-1._r8*PI* (gdp_lf(c)/7._r8)**0.5_r8)
       pop_firesize_suppress = (0.2_r8 + 0.8_r8* exp(-1._r8*PI* (hdmlf/450._r8)**0.5_r8)

   else if patch tree dominant then
      pop_firesize_suppress = (0.4_r8 + 0.6_r8* exp(-1._r8*PI* (hdmlf/125._r8)
      if GDP >= 20 then
         gdp_ign_suppress = 0.39
         gdp_firesize_suppress = 0.62
      
      else
          if GDP > 8 then
              gdp_ign_suppress = 0.79         ! per CNFire Li 2016 Mods
              gdp_firesize_suppress = 0.83
 
         else
              gdp_ign_suppress = 1           ! no GDP suppression on ignitions for less than 8000 per capita
              gdp_firesize_suppress = 1    ! no GDP suppression on fire size

else if gdplf <= 0.1 then
    gdp_ign_suppress = 1         ! no GDP suppression on ignition
    gdp_firesize_suppress=1    ! no GDP suppression on fire size

CNFire Li 2016 Mods:
https://github.com/ESCOMP/CTSM/blob/a3e738cb211157f98d947a7b75ee789193db5fd9/src/biogeochem/CNFireLi2016Mod.F90#L454

notes on ignition in FATES-SPITFIRE
lightning ignitions are calculated at the site level (for both default and external lightning methods). This should not be updated, as there is not a reasonable method to disaggregate lightning at the patch level. If anthropogenic data is being used, then ignitions will be at the patch-level to handle patch-level suppression. Should discuss the cost of calculating ignitions at the patch-level all the time.

fates/fire/SFMainMod.F90

Lines 692 to 693 in 68bc434

!NF = number of lighting strikes per day per km2 scaled by cloud to ground strikes
currentSite%NF = ED_val_nignitions * years_per_day * cg_strikes

anthropogenic ignition suppression in SPITFIRE should be only on anthropogenic ignitions:
In CLM-Li this ignition suppression is implemented on total ignitions, but there may be value in implementing this only on human ignitions, as spatial coverage of lightning ignition varies and should not be decreased in areas outside of human populations.

ignition suppression in SPITFIRE per Li et al 2013 method:
where: human density (hdmlf) = read from a datafile,
Site%pop_den_suppress = 1._r8-(0.01_r8+0.98_r8*exp(-0.025_r8*hdmlf))

Site level: population density suppression on ignitions
Patch level: GDP suppression on ignitions
anthro_ign_count = anthro_ign_count * Site%pop_den_suppress * gdp_ign_suppress

Per issue #670 this anthro_ign_count would be added to the lightning ignition count (site%NF) to give a patch-level ignition count:
total_ignition = currentSite%NF + anthro_ign_count

fire size suppression in SPITFIRE:
current implementation:

fates/fire/SFMainMod.F90

Lines 751 to 753 in 70dda4c

!AB = daily area burnt = size fires in m2 * num ignitions per day per km2 * prob ignition starts fire
!AB = m2 per km2 per day
AB = size_of_fire * currentSite%NF * currentSite%FDI

modification to area burn (AB) calculation per the CLM-Li suppression calculation:
AB = size_of_fire * total_ignition * currentSite%FDI * pop_firesize_suppress * gdp_firesize_suppress
In this proposed implementation GDP ignition and fire_size suppression is at the patch level. FATES-SPITFIRE fire behavior (such as fire size) is already handled at the patch level.

Also, worth considering implementing the regional SPITFIRE method as an alternate to the CLM-Li Fire GDP method. Open to discussion of these points with @lmkueppers @pollybuotte @adrifoster @ckoven @rosiealice @slevisconsulting and other interested parties.

@jkshuman
Copy link
Contributor Author

I updated this issue with new thoughts on moving the ignition calculation to the patch-level as the CLM-Li suppression method is at the veg-type (patch-level).
Also, tagging @ekluzek to comment on the inclusion of the GDP dataset.

@ekluzek
Copy link
Collaborator

ekluzek commented Jul 16, 2020

To include GDP will take a little more refactoring in CTSM. At least for it to make sense. I am planning on doing this, and planning this for only a few CTSM mainline development tags away. But, you probably want to wait on the refactored version coming into the fates branch, before you do that. Does that sound OK?

@jkshuman
Copy link
Contributor Author

Thanks for updating with those details @ekluzek

@ekluzek
Copy link
Collaborator

ekluzek commented Feb 11, 2021

The details on the refactoring for CTSM are in ESCOMP/CTSM#1104

@glemieux
Copy link
Contributor

Note for posterity: Per my conversation with @jkshuman on slack, anthrogenic ignitions and suppression should be two distinct selection modes that can be run simultaneous or individually (i.e. they are not mutually dependent). I think this will require a minor refactor of how we enable spitfire on the hlm side.

ekluzek added a commit to negin513/ctsm that referenced this issue Dec 2, 2021
This tag refactors the static fire data input methodology to enable a future anthropogenic fire suppression
methodology to FATES as described NGEET/fates#673. This future method requires that FATES have access to
GDP data that was previously defined in CNVegStateType.F90 as part of cnveg_state_type.  As such, the GDP
variable has been moved into fire_base_type in FireDataBaseType.F90 to provide the data to the extended
fates_fire_base_type for eventual use in FATES.  Similarly, the surface dataset read subroutine has been
moved along with the peat and ag-fire variables, which utilize the same read subroutine and where also
originally part of the cnveg_state_type.
ekluzek added a commit to chrislxj/ctsm that referenced this issue Mar 19, 2022
This tag refactors the static fire data input methodology to enable a future anthropogenic fire suppression
methodology to FATES as described NGEET/fates#673. This future method requires that FATES have access to
GDP data that was previously defined in CNVegStateType.F90 as part of cnveg_state_type.  As such, the GDP
variable has been moved into fire_base_type in FireDataBaseType.F90 to provide the data to the extended
fates_fire_base_type for eventual use in FATES.  Similarly, the surface dataset read subroutine has been
moved along with the peat and ag-fire variables, which utilize the same read subroutine and where also
originally part of the cnveg_state_type.

 Conflicts:
	src/biogeochem/CNFireLi2014Mod.F90
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🟢 In Progress
Development

No branches or pull requests

3 participants