Skip to content

Commit b2e89f3

Browse files
authored
Merge pull request #416 from jkshuman/fire_leaf_flux
Fire leaf flux update
2 parents 81ca2d4 + 709df0d commit b2e89f3

File tree

4 files changed

+94
-93
lines changed

4 files changed

+94
-93
lines changed

biogeochem/EDCohortDynamicsMod.F90

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,12 @@ subroutine nan_cohort(cc_p)
317317
currentCohort%dbstoredt = nan ! time derivative of stored biomass
318318

319319
! FIRE
320-
currentCohort%cfa = nan ! proportion of crown affected by fire
321-
currentCohort%cambial_mort = nan ! probability that trees dies due to cambial char P&R (1986)
322-
currentCohort%crownfire_mort = nan ! probability of tree post-fire mortality due to crown scorch
323-
currentCohort%fire_mort = nan ! post-fire mortality from cambial and crown damage assuming two are independent
320+
currentCohort%fraction_crown_burned = nan ! proportion of crown affected by fire
321+
currentCohort%cambial_mort = nan ! probability that trees dies due to cambial char P&R (1986)
322+
currentCohort%crownfire_mort = nan ! probability of tree post-fire mortality due to crown scorch
323+
currentCohort%fire_mort = nan ! post-fire mortality from cambial and crown damage assuming two are independent
324324

325-
currentCohort%ode_opt_step = nan ! integrator step size
325+
currentCohort%ode_opt_step = nan ! integrator step size
326326

327327
end subroutine nan_cohort
328328

@@ -344,52 +344,52 @@ subroutine zero_cohort(cc_p)
344344

345345
currentCohort => cc_p
346346

347-
currentCohort%NV = 0
348-
currentCohort%status_coh = 0
349-
currentCohort%rdark = 0._r8
350-
currentCohort%resp_m = 0._r8
351-
currentCohort%resp_g = 0._r8
352-
currentCohort%livestem_mr = 0._r8
353-
currentCohort%livecroot_mr = 0._r8
354-
currentCohort%froot_mr = 0._r8
355-
currentCohort%fire_mort = 0._r8
356-
currentcohort%npp_acc = 0._r8
357-
currentcohort%gpp_acc = 0._r8
358-
currentcohort%resp_acc = 0._r8
359-
currentcohort%npp_tstep = 0._r8
360-
currentcohort%gpp_tstep = 0._r8
361-
currentcohort%resp_tstep = 0._r8
362-
currentcohort%resp_acc_hold = 0._r8
363-
currentcohort%leaf_litter = 0._r8
364-
currentcohort%year_net_uptake(:) = 999._r8 ! this needs to be 999, or trimming of new cohorts will break.
365-
currentcohort%ts_net_uptake(:) = 0._r8
366-
currentcohort%seed_prod = 0._r8
367-
currentcohort%cfa = 0._r8
368-
currentcohort%md = 0._r8
369-
currentcohort%root_md = 0._r8
370-
currentcohort%leaf_md = 0._r8
371-
currentcohort%bstore_md = 0._r8
372-
currentcohort%bsw_md = 0._r8
373-
currentcohort%bdead_md = 0._r8
374-
currentcohort%npp_acc_hold = 0._r8
375-
currentcohort%gpp_acc_hold = 0._r8
376-
currentcohort%dmort = 0._r8
377-
currentcohort%g_sb_laweight = 0._r8
378-
currentcohort%treesai = 0._r8
379-
currentCohort%lmort_direct = 0._r8
380-
currentCohort%lmort_infra = 0._r8
381-
currentCohort%lmort_collateral = 0._r8
382-
currentCohort%leaf_cost = 0._r8
383-
currentcohort%excl_weight = 0._r8
384-
currentcohort%prom_weight = 0._r8
385-
currentcohort%crownfire_mort = 0._r8
386-
currentcohort%cambial_mort = 0._r8
387-
currentCohort%npp_leaf = 0._r8
388-
currentCohort%npp_fnrt = 0._r8
389-
currentCohort%npp_sapw = 0._r8
390-
currentCohort%npp_dead = 0._r8
391-
currentCohort%npp_seed = 0._r8
392-
currentCohort%npp_stor = 0._r8
347+
currentCohort%NV = 0
348+
currentCohort%status_coh = 0
349+
currentCohort%rdark = 0._r8
350+
currentCohort%resp_m = 0._r8
351+
currentCohort%resp_g = 0._r8
352+
currentCohort%livestem_mr = 0._r8
353+
currentCohort%livecroot_mr = 0._r8
354+
currentCohort%froot_mr = 0._r8
355+
currentCohort%fire_mort = 0._r8
356+
currentcohort%npp_acc = 0._r8
357+
currentcohort%gpp_acc = 0._r8
358+
currentcohort%resp_acc = 0._r8
359+
currentcohort%npp_tstep = 0._r8
360+
currentcohort%gpp_tstep = 0._r8
361+
currentcohort%resp_tstep = 0._r8
362+
currentcohort%resp_acc_hold = 0._r8
363+
currentcohort%leaf_litter = 0._r8
364+
currentcohort%year_net_uptake(:) = 999._r8 ! this needs to be 999, or trimming of new cohorts will break.
365+
currentcohort%ts_net_uptake(:) = 0._r8
366+
currentcohort%seed_prod = 0._r8
367+
currentcohort%fraction_crown_burned = 0._r8
368+
currentcohort%md = 0._r8
369+
currentcohort%root_md = 0._r8
370+
currentcohort%leaf_md = 0._r8
371+
currentcohort%bstore_md = 0._r8
372+
currentcohort%bsw_md = 0._r8
373+
currentcohort%bdead_md = 0._r8
374+
currentcohort%npp_acc_hold = 0._r8
375+
currentcohort%gpp_acc_hold = 0._r8
376+
currentcohort%dmort = 0._r8
377+
currentcohort%g_sb_laweight = 0._r8
378+
currentcohort%treesai = 0._r8
379+
currentCohort%lmort_direct = 0._r8
380+
currentCohort%lmort_infra = 0._r8
381+
currentCohort%lmort_collateral = 0._r8
382+
currentCohort%leaf_cost = 0._r8
383+
currentcohort%excl_weight = 0._r8
384+
currentcohort%prom_weight = 0._r8
385+
currentcohort%crownfire_mort = 0._r8
386+
currentcohort%cambial_mort = 0._r8
387+
currentCohort%npp_leaf = 0._r8
388+
currentCohort%npp_fnrt = 0._r8
389+
currentCohort%npp_sapw = 0._r8
390+
currentCohort%npp_dead = 0._r8
391+
currentCohort%npp_seed = 0._r8
392+
currentCohort%npp_stor = 0._r8
393393

394394
end subroutine zero_cohort
395395

@@ -1216,10 +1216,10 @@ subroutine copy_cohort( currentCohort,copyc )
12161216
if ( DEBUG ) write(fates_log(),*) 'EDCohortDyn dpstoredt ',o%dbstoredt
12171217

12181218
! FIRE
1219-
n%cfa = o%cfa
1220-
n%fire_mort = o%fire_mort
1221-
n%crownfire_mort = o%crownfire_mort
1222-
n%cambial_mort = o%cambial_mort
1219+
n%fraction_crown_burned = o%fraction_crown_burned
1220+
n%fire_mort = o%fire_mort
1221+
n%crownfire_mort = o%crownfire_mort
1222+
n%cambial_mort = o%cambial_mort
12231223

12241224
! Plant Hydraulics
12251225

biogeochem/EDPatchDynamicsMod.F90

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -904,20 +904,20 @@ subroutine fire_litter_fluxes(currentSite, cp_target, new_patch_target, patch_si
904904
! Unburned leaves and roots
905905

906906
new_patch%leaf_litter(p) = new_patch%leaf_litter(p) + dead_tree_density * (currentCohort%bl) &
907-
* (1.0_r8-currentCohort%cfa)
907+
* (1.0_r8-currentCohort%fraction_crown_burned)
908908
new_patch%root_litter(p) = new_patch%root_litter(p) + dead_tree_density * (currentCohort%br+currentCohort%bstore)
909909
currentPatch%leaf_litter(p) = currentPatch%leaf_litter(p) + dead_tree_density * &
910-
(currentCohort%bl) * (1.0_r8-currentCohort%cfa)
910+
(currentCohort%bl) * (1.0_r8-currentCohort%fraction_crown_burned)
911911
currentPatch%root_litter(p) = currentPatch%root_litter(p) + dead_tree_density * &
912912
(currentCohort%br+currentCohort%bstore)
913913

914914
! track as diagnostic fluxes
915915
currentSite%leaf_litter_diagnostic_input_carbonflux(p) = currentSite%leaf_litter_diagnostic_input_carbonflux(p) + &
916-
(currentCohort%bl) * (1.0_r8-currentCohort%cfa) * currentCohort%fire_mort * currentCohort%n * &
917-
hlm_days_per_year / AREA
918-
currentSite%root_litter_diagnostic_input_carbonflux(p) = currentSite%root_litter_diagnostic_input_carbonflux(p) + &
919-
(currentCohort%br+currentCohort%bstore) * (1.0_r8-currentCohort%cfa) * currentCohort%fire_mort * &
916+
(currentCohort%bl) * (1.0_r8-currentCohort%fraction_crown_burned) * currentCohort%fire_mort * &
920917
currentCohort%n * hlm_days_per_year / AREA
918+
currentSite%root_litter_diagnostic_input_carbonflux(p) = currentSite%root_litter_diagnostic_input_carbonflux(p) + &
919+
(currentCohort%br+currentCohort%bstore) * (1.0_r8-currentCohort%fraction_crown_burned) &
920+
* currentCohort%fire_mort * currentCohort%n * hlm_days_per_year / AREA
921921

922922
! below ground coarse woody debris from burned trees
923923
do c = 1,ncwd
@@ -933,14 +933,14 @@ subroutine fire_litter_fluxes(currentSite, cp_target, new_patch_target, patch_si
933933
! above ground coarse woody debris from unburned twigs and small branches
934934
do c = 1,2
935935
new_patch%cwd_ag(c) = new_patch%cwd_ag(c) + dead_tree_density * SF_val_CWD_frac(c) * bstem &
936-
* (1.0_r8-currentCohort%cfa)
936+
* (1.0_r8-currentCohort%fraction_crown_burned)
937937
currentPatch%cwd_ag(c) = currentPatch%cwd_ag(c) + dead_tree_density * SF_val_CWD_frac(c) * &
938-
bstem * (1.0_r8-currentCohort%cfa)
938+
bstem * (1.0_r8-currentCohort%fraction_crown_burned)
939939

940940
! track as diagnostic fluxes
941941
currentSite%CWD_AG_diagnostic_input_carbonflux(c) = currentSite%CWD_AG_diagnostic_input_carbonflux(c) + &
942-
SF_val_CWD_frac(c) * bstem * (1.0_r8-currentCohort%cfa) * currentCohort%fire_mort * currentCohort%n * &
943-
hlm_days_per_year / AREA
942+
SF_val_CWD_frac(c) * bstem * (1.0_r8-currentCohort%fraction_crown_burned) * currentCohort%fire_mort &
943+
* currentCohort%n * hlm_days_per_year / AREA
944944
enddo
945945

946946
! above ground coarse woody debris from large branches and stems: these do not burn in crown fires.
@@ -959,23 +959,23 @@ subroutine fire_litter_fluxes(currentSite, cp_target, new_patch_target, patch_si
959959
do c = 1,2
960960

961961
currentSite%cwd_ag_burned(c) = currentSite%cwd_ag_burned(c) + dead_tree_density * &
962-
SF_val_CWD_frac(c) * bstem * currentCohort%cfa
962+
SF_val_CWD_frac(c) * bstem * currentCohort%fraction_crown_burned
963963
currentSite%flux_out = currentSite%flux_out + dead_tree_density * &
964-
AREA * SF_val_CWD_frac(c) * bstem * currentCohort%cfa
964+
AREA * SF_val_CWD_frac(c) * bstem * currentCohort%fraction_crown_burned
965965
currentSite%total_burn_flux_to_atm = currentSite%total_burn_flux_to_atm + dead_tree_density * &
966-
AREA * SF_val_CWD_frac(c) * bstem * currentCohort%cfa
966+
AREA * SF_val_CWD_frac(c) * bstem * currentCohort%fraction_crown_burned
967967

968968
enddo
969969

970970
!burned leaves.
971971
do p = 1,numpft
972972

973973
currentSite%leaf_litter_burned(p) = currentSite%leaf_litter_burned(p) + &
974-
dead_tree_density * currentCohort%bl * currentCohort%cfa
974+
dead_tree_density * currentCohort%bl * currentCohort%fraction_crown_burned
975975
currentSite%flux_out = currentSite%flux_out + &
976-
dead_tree_density * AREA * currentCohort%bl * currentCohort%cfa
976+
dead_tree_density * AREA * currentCohort%bl * currentCohort%fraction_crown_burned
977977
currentSite%total_burn_flux_to_atm = currentSite%total_burn_flux_to_atm + &
978-
dead_tree_density * AREA * currentCohort%bl * currentCohort%cfa
978+
dead_tree_density * AREA * currentCohort%bl * currentCohort%fraction_crown_burned
979979

980980
enddo
981981

@@ -987,6 +987,7 @@ subroutine fire_litter_fluxes(currentSite, cp_target, new_patch_target, patch_si
987987

988988
!************************************/
989989
! PART 3) Burn parts of trees that did *not* die in the fire.
990+
! currently we only remove leaves. branch and assocaited sapwood consumption coming soon.
990991
! PART 4) Burn parts of grass that are consumed by the fire.
991992
! grasses are not killed directly by fire. They die by losing all of their leaves and starving.
992993
!************************************/
@@ -995,9 +996,9 @@ subroutine fire_litter_fluxes(currentSite, cp_target, new_patch_target, patch_si
995996

996997
call carea_allom(currentCohort%dbh,currentCohort%n,currentSite%spread,currentCohort%pft,currentCohort%c_area)
997998
if(EDPftvarcon_inst%woody(currentCohort%pft) == 1)then
998-
burned_leaves = min(currentCohort%bl, (currentCohort%bl+currentCohort%bsw) * currentCohort%cfa)
999+
burned_leaves = currentCohort%bl * currentCohort%fraction_crown_burned
9991000
else
1000-
burned_leaves = min(currentCohort%bl, (currentCohort%bl+currentCohort%bsw) * currentPatch%burnt_frac_litter(6))
1001+
burned_leaves = currentCohort%bl * currentPatch%burnt_frac_litter(6)
10011002
endif
10021003
if (burned_leaves > 0.0_r8) then
10031004

@@ -1010,7 +1011,7 @@ subroutine fire_litter_fluxes(currentSite, cp_target, new_patch_target, patch_si
10101011
patch_site_areadis/currentPatch%area * AREA
10111012

10121013
endif
1013-
currentCohort%cfa = 0.0_r8
1014+
currentCohort%fraction_crown_burned = 0.0_r8
10141015

10151016
currentCohort => currentCohort%taller
10161017

0 commit comments

Comments
 (0)