-
Notifications
You must be signed in to change notification settings - Fork 92
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
Grass PFT only creates leaves not cwd #891
Changes from 2 commits
658c14b
84e4e5d
0d6527d
8953681
b83403e
9daabc7
e85f4f2
1284889
f163230
33468d2
ba57f9e
7ed8792
81732ff
ef47c5c
64dc01a
1e90789
7f02310
bf7dea4
935f601
1a8a24b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1637,96 +1637,94 @@ subroutine fire_litter_fluxes(currentSite, currentPatch, & | |
! across ground surface. | ||
! ----------------------------------------------------------------------- | ||
|
||
sapw_m = currentCohort%prt%GetState(sapw_organ, element_id) | ||
struct_m = currentCohort%prt%GetState(struct_organ, element_id) | ||
leaf_m = currentCohort%prt%GetState(leaf_organ, element_id) | ||
fnrt_m = currentCohort%prt%GetState(fnrt_organ, element_id) | ||
store_m = currentCohort%prt%GetState(store_organ, element_id) | ||
repro_m = currentCohort%prt%GetState(repro_organ, element_id) | ||
|
||
! Absolute number of dead trees being transfered in with the donated area | ||
num_dead_trees = (currentCohort%fire_mort*currentCohort%n * & | ||
if ( prt_params%woody(pft) == itrue) then !trees only, May require additional accounting for the atm_fluxes when PFT is grass. | ||
! Goal was to not add to pools in the event of grass fire. Grass would typically not introduce a flux of dead leaves | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would like to see an else attached to this if clause where we use a logging message to indicate non-woody disturbance is not supported here, and include an endrun() and a verbose message. This prevents vulnerable code in case someone modifies disturbance generation to allow for non-woody, they will then realize it needs to be applied here as well. |
||
! or coarse woody debris. This may be too coarse a solution in the long term. | ||
leaf_m = currentCohort%prt%GetState(leaf_organ, element_list(el)) | ||
store_m = currentCohort%prt%GetState(store_organ, element_list(el)) | ||
sapw_m = currentCohort%prt%GetState(sapw_organ, element_list(el)) | ||
fnrt_m = currentCohort%prt%GetState(fnrt_organ, element_list(el)) | ||
struct_m = currentCohort%prt%GetState(struct_organ, element_list(el)) | ||
repro_m = currentCohort%prt%GetState(repro_organ, element_list(el)) | ||
! Absolute number of dead trees being transfered in with the donated area | ||
num_dead_trees = (currentCohort%fire_mort*currentCohort%n * & | ||
patch_site_areadis/currentPatch%area) | ||
|
||
! Contribution of dead trees to leaf litter | ||
donatable_mass = num_dead_trees * (leaf_m+repro_m) * & | ||
! Contribution of dead trees to leaf litter | ||
donatable_mass = num_dead_trees * (leaf_m+repro_m) * & | ||
(1.0_r8-currentCohort%fraction_crown_burned) | ||
|
||
! Contribution of dead trees to leaf burn-flux | ||
burned_mass = num_dead_trees * (leaf_m+repro_m) * currentCohort%fraction_crown_burned | ||
do dcmpy=1,ndcmpy | ||
dcmpy_frac = GetDecompyFrac(pft,leaf_organ,dcmpy) | ||
new_litt%leaf_fines(dcmpy) = new_litt%leaf_fines(dcmpy) + & | ||
donatable_mass*donate_m2*dcmpy_frac | ||
curr_litt%leaf_fines(dcmpy) = curr_litt%leaf_fines(dcmpy) + & | ||
! Contribution of dead trees to leaf burn-flux | ||
burned_mass = num_dead_trees * (leaf_m+repro_m) * currentCohort%fraction_crown_burned | ||
|
||
do dcmpy=1,ndcmpy | ||
dcmpy_frac = GetDecompyFrac(pft,leaf_organ,dcmpy) | ||
new_litt%leaf_fines(dcmpy) = new_litt%leaf_fines(dcmpy) + & | ||
donatable_mass*donate_m2*dcmpy_frac | ||
curr_litt%leaf_fines(dcmpy) = curr_litt%leaf_fines(dcmpy) + & | ||
donatable_mass*retain_m2*dcmpy_frac | ||
end do | ||
end do | ||
|
||
site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass | ||
site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass | ||
|
||
call set_root_fraction(currentSite%rootfrac_scr, pft, currentSite%zi_soil, & | ||
call set_root_fraction(currentSite%rootfrac_scr, pft, currentSite%zi_soil, & | ||
bc_in%max_rooting_depth_index_col) | ||
|
||
! Contribution of dead trees to root litter (no root burn flux to atm) | ||
do dcmpy=1,ndcmpy | ||
dcmpy_frac = GetDecompyFrac(pft,fnrt_organ,dcmpy) | ||
do sl = 1,currentSite%nlevsoil | ||
do dcmpy=1,ndcmpy | ||
dcmpy_frac = GetDecompyFrac(pft,fnrt_organ,dcmpy) | ||
do sl = 1,currentSite%nlevsoil | ||
donatable_mass = num_dead_trees * (fnrt_m+store_m) * currentSite%rootfrac_scr(sl) | ||
new_litt%root_fines(dcmpy,sl) = new_litt%root_fines(dcmpy,sl) + & | ||
donatable_mass*donate_m2*dcmpy_frac | ||
curr_litt%root_fines(dcmpy,sl) = curr_litt%root_fines(dcmpy,sl) + & | ||
donatable_mass*retain_m2*dcmpy_frac | ||
end do | ||
end do | ||
|
||
! Track as diagnostic fluxes | ||
flux_diags%leaf_litter_input(pft) = & | ||
end do | ||
end do | ||
! Track as diagnostic fluxes | ||
flux_diags%leaf_litter_input(pft) = & | ||
flux_diags%leaf_litter_input(pft) + & | ||
num_dead_trees * (leaf_m+repro_m) * (1.0_r8-currentCohort%fraction_crown_burned) | ||
|
||
flux_diags%root_litter_input(pft) = & | ||
flux_diags%root_litter_input(pft) + & | ||
(fnrt_m + store_m) * num_dead_trees | ||
flux_diags%root_litter_input(pft) = & | ||
flux_diags%root_litter_input(pft) + & | ||
(fnrt_m + store_m) * num_dead_trees | ||
|
||
! coarse root biomass per tree | ||
bcroot = (sapw_m + struct_m) * (1.0_r8 - prt_params%allom_agb_frac(pft) ) | ||
bcroot = (sapw_m + struct_m) * (1.0_r8 - prt_params%allom_agb_frac(pft) ) | ||
|
||
! below ground coarse woody debris from burned trees | ||
do c = 1,ncwd | ||
do sl = 1,currentSite%nlevsoil | ||
donatable_mass = num_dead_trees * SF_val_CWD_frac(c) * & | ||
do c = 1,ncwd | ||
do sl = 1,currentSite%nlevsoil | ||
donatable_mass = num_dead_trees * SF_val_CWD_frac(c) * & | ||
bcroot * currentSite%rootfrac_scr(sl) | ||
|
||
new_litt%bg_cwd(c,sl) = new_litt%bg_cwd(c,sl) + & | ||
new_litt%bg_cwd(c,sl) = new_litt%bg_cwd(c,sl) + & | ||
donatable_mass * donate_m2 | ||
curr_litt%bg_cwd(c,sl) = curr_litt%bg_cwd(c,sl) + & | ||
curr_litt%bg_cwd(c,sl) = curr_litt%bg_cwd(c,sl) + & | ||
donatable_mass * retain_m2 | ||
|
||
! track diagnostics | ||
flux_diags%cwd_bg_input(c) = & | ||
flux_diags%cwd_bg_input(c) = & | ||
flux_diags%cwd_bg_input(c) + & | ||
donatable_mass | ||
enddo | ||
end do | ||
|
||
enddo | ||
end do | ||
! stem biomass per tree | ||
bstem = (sapw_m + struct_m) * prt_params%allom_agb_frac(pft) | ||
|
||
! Above ground coarse woody debris from twigs and small branches | ||
! a portion of this pool may burn | ||
do c = 1,ncwd | ||
donatable_mass = num_dead_trees * SF_val_CWD_frac(c) * bstem | ||
if (c == 1 .or. c == 2) then | ||
do c = 1,ncwd | ||
donatable_mass = num_dead_trees * SF_val_CWD_frac(c) * bstem | ||
if (c == 1 .or. c == 2) then | ||
donatable_mass = donatable_mass * (1.0_r8-currentCohort%fraction_crown_burned) | ||
burned_mass = num_dead_trees * SF_val_CWD_frac(c) * bstem * & | ||
burned_mass = num_dead_trees * SF_val_CWD_frac(c) * bstem * & | ||
currentCohort%fraction_crown_burned | ||
site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass | ||
endif | ||
new_litt%ag_cwd(c) = new_litt%ag_cwd(c) + donatable_mass * donate_m2 | ||
curr_litt%ag_cwd(c) = curr_litt%ag_cwd(c) + donatable_mass * retain_m2 | ||
flux_diags%cwd_ag_input(c) = flux_diags%cwd_ag_input(c) + donatable_mass | ||
enddo | ||
endif | ||
new_litt%ag_cwd(c) = new_litt%ag_cwd(c) + donatable_mass * donate_m2 | ||
curr_litt%ag_cwd(c) = curr_litt%ag_cwd(c) + donatable_mass * retain_m2 | ||
flux_diags%cwd_ag_input(c) = flux_diags%cwd_ag_input(c) + donatable_mass | ||
enddo | ||
endif | ||
|
||
|
||
currentCohort => currentCohort%taller | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ZacharyRobbins there is something going on with spacing here. Can you fix this so that the if statement is moved back to the left?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe I have resolved the spacing issue, and return fine roots to their original location.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this outstanding still?