Skip to content

Commit

Permalink
Merge pull request #717 from ckoven/fire_seed_fixes
Browse files Browse the repository at this point in the history
Some fire-related fixes and clarifications
  • Loading branch information
rgknox authored Jan 14, 2021
2 parents 5534a94 + c0f3957 commit 8827a6e
Show file tree
Hide file tree
Showing 8 changed files with 201 additions and 142 deletions.
53 changes: 35 additions & 18 deletions biogeochem/EDPatchDynamicsMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2034,6 +2034,23 @@ subroutine create_patch(currentSite, new_patch, age, areap, label)
new_patch%fabi_sha_z(:,:,:) = 0._r8
new_patch%scorch_ht(:) = 0._r8
new_patch%frac_burnt = 0._r8
new_patch%litter_moisture(:) = 0._r8
new_patch%fuel_eff_moist = 0._r8
new_patch%livegrass = 0._r8
new_patch%sum_fuel = 0._r8
new_patch%fuel_bulkd = 0._r8
new_patch%fuel_sav = 0._r8
new_patch%fuel_mef = 0._r8
new_patch%ros_front = 0._r8
new_patch%effect_wspeed = 0._r8
new_patch%tau_l = 0._r8
new_patch%fuel_frac(:) = 0._r8
new_patch%tfc_ros = 0._r8
new_patch%fi = 0._r8
new_patch%fd = 0._r8
new_patch%ros_back = 0._r8
new_patch%scorch_ht(:) = 0._r8
new_patch%burnt_frac_litter(:) = 0._r8
new_patch%total_tree_area = 0.0_r8
new_patch%NCL_p = 1

Expand Down Expand Up @@ -2108,31 +2125,31 @@ subroutine zero_patch(cp_p)


! FIRE
currentPatch%litter_moisture(:) = 0.0_r8 ! litter moisture
currentPatch%fuel_eff_moist = 0.0_r8 ! average fuel moisture content of the ground fuel
currentPatch%litter_moisture(:) = nan ! litter moisture
currentPatch%fuel_eff_moist = nan ! average fuel moisture content of the ground fuel
! (incl. live grasses. omits 1000hr fuels)
currentPatch%livegrass = 0.0_r8 ! total ag grass biomass in patch. 1=c3 grass, 2=c4 grass. gc/m2
currentPatch%sum_fuel = 0.0_r8 ! total ground fuel related to ros (omits 1000hr fuels). gc/m2
currentPatch%fuel_bulkd = 0.0_r8 ! average fuel bulk density of the ground fuel
currentPatch%livegrass = nan ! total ag grass biomass in patch. 1=c3 grass, 2=c4 grass. gc/m2
currentPatch%sum_fuel = nan ! total ground fuel related to ros (omits 1000hr fuels). gc/m2
currentPatch%fuel_bulkd = nan ! average fuel bulk density of the ground fuel
! (incl. live grasses. omits 1000hr fuels). kgc/m3
currentPatch%fuel_sav = 0.0_r8 ! average surface area to volume ratio of the ground fuel
currentPatch%fuel_sav = nan ! average surface area to volume ratio of the ground fuel
! (incl. live grasses. omits 1000hr fuels).
currentPatch%fuel_mef = 0.0_r8 ! average moisture of extinction factor of the ground fuel
currentPatch%fuel_mef = nan ! average moisture of extinction factor of the ground fuel
! (incl. live grasses. omits 1000hr fuels).
currentPatch%ros_front = 0.0_r8 ! average rate of forward spread of each fire in the patch. m/min.
currentPatch%effect_wspeed = 0.0_r8 ! dailywind modified by fraction of relative grass and tree cover. m/min.
currentPatch%tau_l = 0.0_r8 ! mins p&r(1986)
currentPatch%fuel_frac(:) = 0.0_r8 ! fraction of each litter class in the sum_fuel
currentPatch%ros_front = nan ! average rate of forward spread of each fire in the patch. m/min.
currentPatch%effect_wspeed = nan ! dailywind modified by fraction of relative grass and tree cover. m/min.
currentPatch%tau_l = nan ! mins p&r(1986)
currentPatch%fuel_frac(:) = nan ! fraction of each litter class in the sum_fuel
!- for purposes of calculating weighted averages.
currentPatch%tfc_ros = 0.0_r8 ! used in fi calc
currentPatch%fi = 0._r8 ! average fire intensity of flaming front during day.
currentPatch%tfc_ros = nan ! used in fi calc
currentPatch%fi = nan ! average fire intensity of flaming front during day.
! backward ros plays no role. kj/m/s or kw/m.
currentPatch%fire = 999 ! sr decide_fire.1=fire hot enough to proceed. 0=stop everything- no fires today
currentPatch%fd = 0.0_r8 ! fire duration (mins)
currentPatch%ros_back = 0.0_r8 ! backward ros (m/min)
currentPatch%scorch_ht(:) = 0.0_r8 ! scorch height of flames on a given PFT
currentPatch%frac_burnt = 0.0_r8 ! fraction burnt daily
currentPatch%burnt_frac_litter(:) = 0.0_r8
currentPatch%fd = nan ! fire duration (mins)
currentPatch%ros_back = nan ! backward ros (m/min)
currentPatch%scorch_ht(:) = nan ! scorch height of flames on a given PFT
currentPatch%frac_burnt = nan ! fraction burnt daily
currentPatch%burnt_frac_litter(:) = nan
currentPatch%btran_ft(:) = 0.0_r8

currentPatch%canopy_layer_tlai(:) = 0.0_r8
Expand Down
39 changes: 2 additions & 37 deletions biogeochem/EDPhysiologyMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -227,10 +227,6 @@ subroutine PreDisturbanceLitterFluxes( currentSite, currentPatch, bc_in )
! Calculate loss rate of viable seeds to litter
call SeedDecay(litt)

! Send those decaying seeds in the previous call
! to the litter input flux
call SeedDecayToFines(litt)

! Calculate seed germination rate, the status flags prevent
! germination from occuring when the site is in a drought
! (for drought deciduous) or too cold (for cold deciduous)
Expand All @@ -254,7 +250,8 @@ subroutine PreDisturbanceLitterFluxes( currentSite, currentPatch, bc_in )
! Fragmentation flux to soil decomposition model [kg/site/day]
site_mass%frag_out = site_mass%frag_out + currentPatch%area * &
( sum(litt%ag_cwd_frag) + sum(litt%bg_cwd_frag) + &
sum(litt%leaf_fines_frag) + sum(litt%root_fines_frag))
sum(litt%leaf_fines_frag) + sum(litt%root_fines_frag) + &
sum(litt%seed_decay) + sum(litt%seed_germ_decay))

end do

Expand Down Expand Up @@ -2195,38 +2192,6 @@ end subroutine CWDInput

! =====================================================================================

subroutine SeedDecayToFines(litt)

type(litter_type) :: litt
!
! !LOCAL VARIABLES:
integer :: pft

! Add decaying seeds to the leaf litter
! -----------------------------------------------------------------------------------

do pft = 1,numpft

litt%leaf_fines_in(ilabile) = litt%leaf_fines_in(ilabile) + &
(litt%seed_decay(pft) + litt%seed_germ_decay(pft)) * EDPftvarcon_inst%lf_flab(pft)

litt%leaf_fines_in(icellulose) = litt%leaf_fines_in(icellulose) + &
(litt%seed_decay(pft) + litt%seed_germ_decay(pft)) * EDPftvarcon_inst%lf_fcel(pft)

litt%leaf_fines_in(ilignin) = litt%leaf_fines_in(ilignin) + &
(litt%seed_decay(pft) + litt%seed_germ_decay(pft)) * EDPftvarcon_inst%lf_flig(pft)

enddo


return
end subroutine SeedDecayToFines





! =====================================================================================

subroutine fragmentation_scaler( currentPatch, bc_in)
!
Expand Down
22 changes: 21 additions & 1 deletion biogeochem/FatesSoilBGCFluxMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -772,7 +772,6 @@ subroutine FluxIntoLitterPools(csite, bc_in, bc_out)
! into the soil/decomposition
! layers. It exponentially decays
real(r8) :: surface_prof_tot ! normalizes the surface_prof array
integer :: ft ! PFT number
integer :: nlev_eff_soil ! number of effective soil layers
integer :: nlev_eff_decomp ! number of effective decomp layers
real(r8) :: area_frac ! fraction of site's area of current patch
Expand All @@ -782,6 +781,7 @@ subroutine FluxIntoLitterPools(csite, bc_in, bc_out)
integer :: j ! Soil layer index
integer :: id ! Decomposition layer index
integer :: ic ! CWD type index
integer :: ipft ! PFT index

! NOTE(rgk, 201705) this parameter was brought over from SoilBiogeochemVerticalProfile
! how steep profile is for surface components (1/ e_folding depth) (1/m)
Expand Down Expand Up @@ -930,6 +930,26 @@ subroutine FluxIntoLitterPools(csite, bc_in, bc_out)

end do


! decaying seeds from the litter pool
do ipft = 1,numpft
do id = 1,nlev_eff_decomp

flux_lab_si(id) = flux_lab_si(id) + &
(litt%seed_decay(ipft) + litt%seed_germ_decay(ipft)) * &
EDPftvarcon_inst%lf_flab(ipft) * area_frac* surface_prof(id)

flux_cel_si(id) = flux_cel_si(id) + &
(litt%seed_decay(ipft) + litt%seed_germ_decay(ipft)) * &
EDPftvarcon_inst%lf_fcel(ipft) * area_frac* surface_prof(id)

flux_lig_si(id) = flux_lig_si(id) + &
(litt%seed_decay(ipft) + litt%seed_germ_decay(ipft)) * &
EDPftvarcon_inst%lf_flig(ipft) * area_frac* surface_prof(id)
end do
end do


do j = 1, nlev_eff_soil

id = bc_in%decomp_id(j)
Expand Down
Loading

0 comments on commit 8827a6e

Please sign in to comment.