Skip to content

Bug in CNFireFluxes for m_livestemc_to_litter_fire, m_livestemc_to_deadstemc_fire, m_deadstemc_to_litter_fire, m_livecrootc_to_litter_fire #178

@ekluzek

Description

@ekluzek

Erik Kluzek < erik > - 2017-09-27 11:59:43 -0600
Bugzilla Id: 2516
Bugzilla CC: dlawren, lifang, oleson, rfisher,

This goes back to the first versions of CLM4.5 fire. This problem was found by Hui Tang. We don't believe they cause a large change to the climate, but seem to be more intuitively correct.

Setting of the following arrays in CNFireFluxes had an incorrect term in them:
m_livestemc_to_litter_fire, m_livestemc_to_deadstemc_fire, m_deadstemc_to_litter_fire, m_livecrootc_to_litter_fire

The m_*_fire arrays are all in units of gC/m2/s, and are the fire emissions of Carbon from the given type.

Here's the change for CNFireBaseMod.F90 in clm4_5_16_256 (the same change also needs to go into CNFireLi2014Mod.F90 as well for clm4_5).

@@ -650,7 +651,7 @@
              fm_other(patch%itype(p))
         m_livestemc_to_litter_fire(p)               =  livestemc(p) * f * &
              (1._r8 - cc_lstem(patch%itype(p))) * &
-             fm_droot(patch%itype(p))    
+             fm_lstem(patch%itype(p))    
         m_livestemc_storage_to_litter_fire(p)       =  livestemc_storage(p) * f * &
              (1._r8 - cc_other(patch%itype(p))) * &
              fm_other(patch%itype(p))
@@ -659,10 +660,10 @@
              fm_other(patch%itype(p))
         m_livestemc_to_deadstemc_fire(p)            =  livestemc(p) * f * &
              (1._r8 - cc_lstem(patch%itype(p))) * &
-             (fm_lstem(patch%itype(p))-fm_droot(patch%itype(p)))
+             (fm_lstem(patch%itype(p))-fm_dstem(patch%itype(p)))
         m_deadstemc_to_litter_fire(p)               =  deadstemc(p) * f * m * &
              (1._r8 - cc_dstem(patch%itype(p))) * &
-             fm_droot(patch%itype(p))    
+             fm_dstem(patch%itype(p))    
         m_deadstemc_storage_to_litter_fire(p)       =  deadstemc_storage(p) * f * &
              (1._r8 - cc_other(patch%itype(p))) * &
              fm_other(patch%itype(p))
@@ -678,7 +679,7 @@
              (1._r8- cc_other(patch%itype(p))) * &
              fm_other(patch%itype(p))
         m_livecrootc_to_litter_fire(p)              =  livecrootc(p)         * f * &
-             fm_droot(patch%itype(p))
+             fm_lroot(patch%itype(p))
         m_livecrootc_storage_to_litter_fire(p)      =  livecrootc_storage(p) * f * &
              (1._r8- cc_other(patch%itype(p))) * &
              fm_other(patch%itype(p))

Note here: f is the fire rate (1/sec), m is the acceleration factor, cc_* terms are combustion completeness factor, and fm_* terms are fire related mortality terms.

So this means

fire emission of transfer of live-stem to litter = live-stem * f * (1 - cc(livestem))*fm(live-stem) (rather than fm(dead-root))

fire emission of transfer of live-stem to deadstem = livestem * f * (1 - cc(live-stem)*(fm(live-stem) - fm(dead-stem)) (rather than fm(deadroot))

fire emission of transfer of dead-stem to litter = deadstem * f * m * (1 - cc(dead-stem))*fm(dead-stem)) (rather than fm(dead-root))

fire emission of transfer of live-root to litter = liveroot * f * fm(live-root) (rather than fm(dead-root))

Metadata

Metadata

Assignees

Labels

documentationadditions or edits to user-facing documentation or its infrastructure

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions