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

Some adjustments to the Li Fire model #889

Closed
ekluzek opened this issue Jan 15, 2020 · 6 comments · Fixed by #1150
Closed

Some adjustments to the Li Fire model #889

ekluzek opened this issue Jan 15, 2020 · 6 comments · Fixed by #1150
Assignees
Labels
enhancement new capability or improved behavior of existing capability science Enhancement to or bug impacting science
Milestone

Comments

@ekluzek
Copy link
Collaborator

ekluzek commented Jan 15, 2020

@lifang2012 has a set of changes to the fire model that fix some issues with the latest fire model.

This is a summary that she made of the changes:

"Changes include: (1) fix 2 bugs in fire module,(2) recalibrate the relationship between tropical deforestation rate and deforestation & degradation (DD) fires, (3) change BTRAN2 to root-zone soil moisture, (4) change parameter values due to (2) and (3).

(1) About bugs in CNFireLi2016Mod.F90:

Bug 1 is at the calculation of cloud-to-ground lightning.

(5.16_r8+2.16_r8*cos(3*min(60._r8,abs(grc%latdeg(g)))))

should be:

(5.16_r8+2.16_r8*cos(SHR_CONST_PI/180._r8*3*min(60._r8,abs(grc%latdeg(g)))))

Bug 2 is caused by Bill's revisions when he introduced dynamic landunit in CLM5. The deforestation rate and tropical forest coverage used in DD fires should be for gridcell rather than nat. vegetation column.

  trotr1_col(c)=trotr1_col(c)+patch%wtcol(p)

  trotr2_col(c)=trotr2_col(c)+patch%wtcol(p)

  dtrotr_col(c)=dtrotr_col(c)-dwt_smoothed(p)

should be:

 trotr1_col(c)=trotr1_col(c)+patch%wtcol(p)*col%wtgcell(c)

 trotr2_col(c)=trotr2_col(c)+patch%wtcol(p)*col%wtgcell(c)

 dtrotr_col(c)=dtrotr_col(c)-dwt_smoothed(p)*col%wtgcell(c)

(2) recalibrate the relationship between tropical deforestation rate and deforestation and degradation (DD) fires

In default CLM4.5 and CLM5, GFED3 fire products and CLM4's LULCC were used to calibrate the relationship (see Li et al. 2013 for details). Now GFED4s and CLM5's LULCC are used.

Accordingly, in CNFireLi2016Mod.F90,

max(0.0005_r8,min(1._r8,19._r8*dtrotr_col(c)*dayspyr*secspday/dt-0.001_r8))

is changed to

(15._r8*min(0.0016_r8,dtrotr_col(c)/dt*dayspyr*secspday)+0.009_r8)

(3) About BTRAN2:

In SoilMoistStressMod.F90, BTRAN2 is changed from:

   s_node = max(h2osoi_vol(c,j)/watsat(c,j), 0.01_r8)

   call soil_water_retention_curve%soil_suction(c, j, s_node, soilstate_inst, smp_node_lf)

   smp_node_lf = max(smpsc(patch%itype(p)), smp_node_lf)
   btran2(p)   = btran2(p) +rootfr(p,j)*max(0._r8,min((smp_node_lf - smpsc(patch%itype(p))) / &
                    (smpso(patch%itype(p)) - smpsc(patch%itype(p))), 1._r8))

to root-zone soil wetness:

 s_node = max(h2osoi_vol(c,j)/watsat(c,j), 0.01_r8)

  btran2(p)   = btran2(p) +rootfr(p,j)*s_node

Accordingly, in CNFireLi2016Mod.F90,

     btran_col(c) = btran_col(c)+max(0._r8, min(1._r8, &
                    (btran2(p)-0.3)/0.8))*patch%wtcol(p)

is changed to:

    btran_col(c) = btran_col(c)+max(0._r8, min(1._r8, &
                      (btran2(p)-rswf_min(patch%itype(p)))/(rswf_max(patch%itype(p)) &
                      -rswf_min(patch%itype(p)))))*patch%wtcol(p)

and

min(1._r8,(btran_col(c)/wtlf(c)-bt_min)/(bt_max-bt_min))))**0.5_r8)

is changed to

((1._r8-btran_col(c)/wtlf(c))**0.5_r8)

(4) About parameters

Due to (3),the dependence of BTRAN2 on PFT-dependent parameters smpsc and smpso (in SoilMoistStressMod.F90) is changed to new PFT-dependent parameters rswf_min and rswf_max (in CNFireLi2016Mod.F90), and fsr_pft in CLM5 parameter file is changed (new parameter file: /glade/scratch/fangli/clm5_params.fire1.nc). Also, I added the names of rswf_max and rswf_min in pftconMod.F90, and set fire parameter lfuel=75.d00 as Li et al. (2014) in user_nl_clm. Due to (2), I set fire parameter cli_scale = 0.025d00 in user_nl_clm."
Should also fix #206 along with this.

@ekluzek ekluzek self-assigned this Jan 15, 2020
@billsacks billsacks added the enhancement new capability or improved behavior of existing capability label Jan 16, 2020
@ekluzek ekluzek added this to the ctsm5.1.0 milestone May 21, 2020
@ekluzek
Copy link
Collaborator Author

ekluzek commented Oct 1, 2020

Note the trotr1_col, trotr2_col, and dtrotr_col were marked as being "suspicious" in issue #12 under item (14.)

@ekluzek
Copy link
Collaborator Author

ekluzek commented Oct 1, 2020

The change in question for trotr1_col and trotr2_col was done in clm4_5_12_r195. Where we have this discussion in the ChangeLog...

When calculating the fractions of BET and BDT, calculate these as fractions of
the column rather than as fractions of the grid cell. This is needed for
consistency with all other code in CLM, where the behavior of a column shouldn't
depend on that column's weight on the grid cell. The earlier code was
problematic in this way: If you did two runs - one with default areas, and one
where the natural veg landunit area was larger or smaller - then the evolution
of the natural veg landunit could change; this is not supposed to happen in CLM.

This can change answers for the fire code, but should generally only change
answers by a small amount, unless there are tropical grid cells where the
natural vegetation fraction is substantially less than 1.

Fang Li is okay with this change. She points out that the original formulation
was based on the fact that literataure typically cites 60% of (BET+BDT) on the
grid cell as a cutoff for being classified as tropical closed forest for the
sake of fire determinations, so the earlier code was consistent with that
definition. She also points out that this change could lead to a slightly
greater prevalence of deforestation fires and (after tuning) a consequently
smaller prevalence of non-deforestation fires - which can be undesirable. But
overall she is okay with this change given its likely small impact.

@ekluzek
Copy link
Collaborator Author

ekluzek commented Oct 1, 2020

The dtrotr change is documented in that same version as follows...

Still need to address dtrotr_col, but the fix there is different, and is tied
in with other changes for dynamic landunits.

It was addressed in clm4_5_14_r223. With the ChangeLog saying this..

In addition, this makes the fire code work correctly with changing column /
landunit areas: Similarly to the other C&N variables, the variable that triggers
landcover-related fires was previously only considering changes in patch weights
on the column.

The issue that was being addressed was 2106 from bugs.cgd.ucar.edu which says the following...

There is a lot of hard-coded logic in CNFireMod for its interaction with land cover change. I suspect (but have not looked closely) that some of this will not work as intended with dynamic landunits - where we can now have weights changing because of shifting landunit weights in addition to shifting PFT areas on the natural vegetated landunit.

A few examples of possibly-problematic code are:

  • expressions that depend on changes in subgrid weights

billsacks added a commit to billsacks/ctsm that referenced this issue Oct 1, 2020
Partially addresses ESCOMP/CTSM/ESCOMP#1169. See today's comments in
ESCOMP#889
@dlawrenncar
Copy link
Contributor

@ekluzek @olyson I'm trying to figure out if the fire parameter changes suggested by Fang were really implemented in CTSM5.1. Not sure how to check this because the parameter file that Fang points to in this issue was on scratch. Did either or you have a copy of it that you used during creation of the fire tag?

@ekluzek
Copy link
Collaborator Author

ekluzek commented Oct 19, 2020

Yes, I had several along the way. Let me find the one that was used in the original branch based off of the release-clm5.0 branch.

@ekluzek
Copy link
Collaborator Author

ekluzek commented Oct 19, 2020

Here's the one I started using on the release-clm5.0 version. It doesn't have any meta-data so presumably was identical to Fang's original version that was on scratch. If I would've done anything it it, I would've had metadata for the changes.

$CSMDATA/lnd/clm2/paramdata/ctsm5_1_params.c191216.nc

For that version I had some cases that point to the version on scratch that replicate a case that Fang ran.

@samsrabin samsrabin added the science Enhancement to or bug impacting science label Aug 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement new capability or improved behavior of existing capability science Enhancement to or bug impacting science
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants