Skip to content

Commit

Permalink
Merge pull request #595 from rgknox/parameters-eca-phen-fire
Browse files Browse the repository at this point in the history
new and fixed parameters for nutrients, phenology, seeds, fire and age-mortality
  • Loading branch information
glemieux authored Jan 4, 2020
2 parents 87ce240 + 25ff0f6 commit 17aaa87
Show file tree
Hide file tree
Showing 5 changed files with 415 additions and 52 deletions.
12 changes: 6 additions & 6 deletions biogeochem/EDPhysiologyMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1231,16 +1231,16 @@ subroutine SeedDecay( litt )

! default value from Liscke and Loffler 2006 ; making this a PFT-specific parameter
! decays the seed pool according to exponential model
! seed_decay_turnover is in yr-1
! seed_decay_rate is in yr-1
! seed_decay is kg/day
! Assume that decay rates are same for all chemical species

do pft = 1,numpft
litt%seed_decay(pft) = litt%seed(pft) * &
EDPftvarcon_inst%seed_decay_turnover(pft)*years_per_day
EDPftvarcon_inst%seed_decay_rate(pft)*years_per_day

litt%seed_germ_decay(pft) = litt%seed_germ(pft) * &
EDPftvarcon_inst%seed_decay_turnover(pft)*years_per_day
EDPftvarcon_inst%seed_decay_rate(pft)*years_per_day

enddo

Expand Down Expand Up @@ -1274,14 +1274,14 @@ subroutine SeedGermination( litt, cold_stat, drought_stat )

!----------------------------------------------------------------------

! germination_timescale is being pulled to PFT parameter; units are 1/yr
! germination_rate is being pulled to PFT parameter; units are 1/yr
! thus the mortality rate of seed -> recruit (in units of carbon)
! is seed_decay_turnover(p)/germination_timescale(p)
! is seed_decay_rate(p)/germination_rate(p)
! and thus the mortality rate (in units of individuals) is the product of
! that times the ratio of (hypothetical) seed mass to recruit biomass

do pft = 1,numpft
litt%seed_germ_in(pft) = min(litt%seed(pft) * EDPftvarcon_inst%germination_timescale(pft), &
litt%seed_germ_in(pft) = min(litt%seed(pft) * EDPftvarcon_inst%germination_rate(pft), &
max_germination)*years_per_day

!set the germination only under the growing season...c.xu
Expand Down
36 changes: 33 additions & 3 deletions main/EDParamsMod.F90
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
module EDParamsMod

!
! module that deals with reading the ED parameter file
!

use FatesConstantsMod, only : r8 => fates_r8
use FatesConstantsMod, only : nearzero
use FatesParametersInterface, only : param_string_length
use FatesGlobals , only : fates_log
use FatesGlobals , only : endrun => fates_endrun
Expand Down Expand Up @@ -42,6 +44,13 @@ module EDParamsMod
real(r8),protected, public :: ED_val_patch_fusion_tol
real(r8),protected, public :: ED_val_canopy_closure_thresh ! site-level canopy closure point where trees take on forest (narrow) versus savannah (wide) crown allometry


logical,protected, public :: active_crown_fire ! flag, 1=active crown fire 0=no active crown fire
character(len=param_string_length),parameter :: fates_name_active_crown_fire = "fates_fire_active_crown_fire"

real(r8), protected, public :: cg_strikes ! fraction of cloud to ground lightning strikes (0-1)
character(len=param_string_length),parameter :: fates_name_cg_strikes="fates_fire_cg_strikes"

real(r8),protected,public :: q10_mr ! Q10 for respiration rate (for soil fragmenation and plant respiration) (unitless)
real(r8),protected,public :: q10_froz ! Q10 for frozen-soil respiration rates (for soil fragmentation) (unitless)

Expand All @@ -50,6 +59,7 @@ module EDParamsMod
real(r8),protected,allocatable,public :: ED_val_history_ageclass_bin_edges(:)
real(r8),protected,allocatable,public :: ED_val_history_height_bin_edges(:)


character(len=param_string_length),parameter,public :: ED_name_mort_disturb_frac = "fates_mort_disturb_frac"
character(len=param_string_length),parameter,public :: ED_name_comp_excln = "fates_comp_excln"
character(len=param_string_length),parameter,public :: ED_name_init_litter = "fates_init_litter"
Expand All @@ -69,10 +79,13 @@ module EDParamsMod
character(len=param_string_length),parameter,public :: ED_name_phen_mindayson= "fates_phen_mindayson"
character(len=param_string_length),parameter,public :: ED_name_phen_ncolddayslim= "fates_phen_ncolddayslim"
character(len=param_string_length),parameter,public :: ED_name_phen_coldtemp= "fates_phen_coldtemp"
character(len=param_string_length),parameter,public :: ED_name_cohort_fusion_tol= "fates_cohort_fusion_tol"
character(len=param_string_length),parameter,public :: ED_name_cohort_fusion_tol= "fates_cohort_size_fusion_tol"
character(len=param_string_length),parameter,public :: ED_name_patch_fusion_tol= "fates_patch_fusion_tol"
character(len=param_string_length),parameter,public :: ED_name_canopy_closure_thresh= "fates_canopy_closure_thresh"

! Resistance to active crown fire


character(len=param_string_length),parameter :: fates_name_q10_mr="fates_q10_mr"
character(len=param_string_length),parameter :: fates_name_q10_froz="fates_q10_froz"

Expand Down Expand Up @@ -170,7 +183,6 @@ subroutine FatesParamsInit()
ED_val_cohort_fusion_tol = nan
ED_val_patch_fusion_tol = nan
ED_val_canopy_closure_thresh = nan

hydr_kmax_rsurf1 = nan
hydr_kmax_rsurf2 = nan

Expand Down Expand Up @@ -333,6 +345,12 @@ subroutine FatesRegisterParams(fates_params)
call fates_params%RegisterParameter(name=ED_name_history_height_bin_edges, dimension_shape=dimension_shape_1d, &
dimension_names=dim_names_height)

call fates_params%RegisterParameter(name=fates_name_active_crown_fire, dimension_shape=dimension_shape_scalar, &
dimension_names=dim_names_scalar)

call fates_params%RegisterParameter(name=fates_name_cg_strikes, dimension_shape=dimension_shape_scalar, &
dimension_names=dim_names_scalar)

end subroutine FatesRegisterParams


Expand All @@ -345,6 +363,9 @@ subroutine FatesReceiveParams(fates_params)

class(fates_parameters_type), intent(inout) :: fates_params

real(r8) :: active_crown_fire_real !Local temp to transfer real data in file


call fates_params%RetreiveParameter(name=ED_name_mort_disturb_frac, &
data=fates_mortality_disturbance_fraction)

Expand Down Expand Up @@ -456,6 +477,13 @@ subroutine FatesReceiveParams(fates_params)
call fates_params%RetreiveParameter(name=fates_name_q10_froz, &
data=q10_froz)

call fates_params%RetreiveParameter(name=fates_name_active_crown_fire, &
data=active_crown_fire_real)
active_crown_fire = (abs(active_crown_fire_real-1.0_r8)<nearzero)

call fates_params%RetreiveParameter(name=fates_name_cg_strikes, &
data=cg_strikes)

! parameters that are arrays of size defined within the params file and thus need allocating as well
call fates_params%RetreiveParameterAllocate(name=ED_name_history_sizeclass_bin_edges, &
data=ED_val_history_sizeclass_bin_edges)
Expand All @@ -465,7 +493,7 @@ subroutine FatesReceiveParams(fates_params)

call fates_params%RetreiveParameterAllocate(name=ED_name_history_height_bin_edges, &
data=ED_val_history_height_bin_edges)


end subroutine FatesReceiveParams

Expand Down Expand Up @@ -517,6 +545,8 @@ subroutine FatesReportParams(is_master)
write(fates_log(),fmt0) 'logging_dbhmax_infra = ',logging_dbhmax_infra
write(fates_log(),fmt0) 'q10_mr = ',q10_mr
write(fates_log(),fmt0) 'q10_froz = ',q10_froz
write(fates_log(),fmt0) 'cg_strikes = ',cg_strikes
write(fates_log(),'(a,L)') 'active_crown_fire = ',active_crown_fire
write(fates_log(),*) '------------------------------------------------------'

end if
Expand Down
Loading

0 comments on commit 17aaa87

Please sign in to comment.