diff --git a/biogeochem/EDPatchDynamicsMod.F90 b/biogeochem/EDPatchDynamicsMod.F90 index ffbf8da915..501ffba6cd 100755 --- a/biogeochem/EDPatchDynamicsMod.F90 +++ b/biogeochem/EDPatchDynamicsMod.F90 @@ -23,6 +23,7 @@ module EDPatchDynamicsMod use FatesConstantsMod , only : r8 => fates_r8 use FatesPlantHydraulicsMod, only : InitHydrCohort use FatesPlantHydraulicsMod, only : DeallocateHydrCohort + use EDParamsMod , only : fates_mortality_disturbance_fraction ! CIME globals use shr_infnan_mod , only : nan => shr_infnan_nan, assignment(=) @@ -86,7 +87,7 @@ subroutine disturbance_rates( site_in) currentCohort%patchptr => currentPatch call mortality_rates(currentCohort,cmort,hmort,bmort) - currentCohort%dmort = cmort+hmort+bmort + currentCohort%dmort = cmort+hmort+bmort currentCohort%c_area = c_area(currentCohort) ! Initialize diagnostic mortality rates @@ -99,6 +100,7 @@ subroutine disturbance_rates( site_in) if(currentCohort%canopy_layer == 1)then currentPatch%disturbance_rates(1) = currentPatch%disturbance_rates(1) + & + fates_mortality_disturbance_fraction * & min(1.0_r8,currentCohort%dmort)*hlm_freq_day*currentCohort%c_area/currentPatch%area endif @@ -289,7 +291,8 @@ subroutine spawn_patches( currentSite, bc_in) ! because this is the part of the original patch where no trees have actually fallen ! The diagnostic cmort,bmort and hmort rates have already been saved - currentCohort%n = currentCohort%n * (1.0_r8 - min(1.0_r8,currentCohort%dmort * hlm_freq_day)) + currentCohort%n = currentCohort%n * (1.0_r8 - fates_mortality_disturbance_fraction * & + min(1.0_r8,currentCohort%dmort * hlm_freq_day)) nc%n = 0.0_r8 ! kill all of the trees who caused the disturbance. nc%cmort = nan ! The mortality diagnostics are set to nan because the cohort should dissappear diff --git a/biogeochem/EDPhysiologyMod.F90 b/biogeochem/EDPhysiologyMod.F90 index a8aab76137..b147372260 100755 --- a/biogeochem/EDPhysiologyMod.F90 +++ b/biogeochem/EDPhysiologyMod.F90 @@ -31,7 +31,7 @@ module EDPhysiologyMod use shr_log_mod , only : errMsg => shr_log_errMsg use FatesGlobals , only : fates_log use FatesGlobals , only : endrun => fates_endrun - + use EDParamsMod , only : fates_mortality_disturbance_fraction implicit none private @@ -788,11 +788,12 @@ subroutine Growth_Derivatives( currentSite, currentCohort, bc_in) ! Mortality for trees in the understorey. !if trees are in the canopy, then their death is 'disturbance'. This probably needs a different terminology + call mortality_rates(currentCohort,cmort,hmort,bmort) if (currentCohort%canopy_layer > 1)then - call mortality_rates(currentCohort,cmort,hmort,bmort) currentCohort%dndt = -1.0_r8 * (cmort+hmort+bmort) * currentCohort%n else - currentCohort%dndt = 0._r8 + currentCohort%dndt = -(1.0_r8 - fates_mortality_disturbance_fraction) & + * (cmort+hmort+bmort) * currentCohort%n endif ! Height diff --git a/main/EDParamsMod.F90 b/main/EDParamsMod.F90 index 8bc4e9f908..eb99476625 100644 --- a/main/EDParamsMod.F90 +++ b/main/EDParamsMod.F90 @@ -72,6 +72,8 @@ module EDParamsMod public :: FatesParamsInit public :: FatesRegisterParams public :: FatesReceiveParams + + real(r8), protected :: fates_mortality_disturbance_fraction = 1.0_r8 ! the fraction of canopy mortality that results in disturbance (i.e. transfer of area from new to old patch) contains