diff --git a/biogeochem/EDCanopyStructureMod.F90 b/biogeochem/EDCanopyStructureMod.F90 index d6ae9f52c8..cf78b2e804 100644 --- a/biogeochem/EDCanopyStructureMod.F90 +++ b/biogeochem/EDCanopyStructureMod.F90 @@ -19,6 +19,8 @@ module EDCanopyStructureMod use EDCohortDynamicsMod , only : terminate_cohorts, terminate_cohort, fuse_cohorts use EDCohortDynamicsMod , only : InitPRTObject use FatesAllometryMod , only : tree_lai_sai + ! [PORTED by Hui Tang: NVP allometry routine for LAI/thickness update] + use FatesAllometryMod , only : NVP_allom use EDTypesMod , only : ed_site_type use EDTypesMod , only : set_patchno use FatesAllometryMod , only : VegAreaLayer @@ -36,6 +38,9 @@ module EDCanopyStructureMod use FatesInterfaceTypesMod , only : hlm_use_planthydro use FatesInterfaceTypesMod , only : hlm_use_cohort_age_tracking use FatesInterfaceTypesMod , only : hlm_use_sp + use FatesInterfaceTypesMod , only : hlm_use_nvp ! [PORTED by Hui Tang: NVP master flag] + use FatesInterfaceTypesMod , only : hlm_nvp_rad_model_ground ! [PORTED by Hui Tang: NVP radiation model switch] + use LeafBiophysicsMod , only : lb_params ! [PORTED by Hui Tang: NVP PFT identification] use FatesInterfaceTypesMod , only : numpft use FatesInterfaceTypesMod, only : bc_in_type use FatesPlantHydraulicsMod, only : UpdateH2OVeg,InitHydrCohort, RecruitWaterStorage @@ -1143,19 +1148,26 @@ subroutine leaf_area_profile( currentSite ) remainder = dinc_vai(iv) end if - cpatch%tlai_profile(cl,ft,iv) = cpatch%tlai_profile(cl,ft,iv) + & - remainder * fleaf * currentCohort%c_area/cpatch%total_canopy_area - - cpatch%elai_profile(cl,ft,iv) = cpatch%elai_profile(cl,ft,iv) + & - remainder * fleaf * currentCohort%c_area/cpatch%total_canopy_area * & - fraction_exposed - - cpatch%tsai_profile(cl,ft,iv) = cpatch%tsai_profile(cl,ft,iv) + & - remainder * (1._r8 - fleaf) * currentCohort%c_area/cpatch%total_canopy_area - - cpatch%esai_profile(cl,ft,iv) = cpatch%esai_profile(cl,ft,iv) + & - remainder * (1._r8 - fleaf) * currentCohort%c_area/cpatch%total_canopy_area * & - fraction_exposed + ! [PORTED by Hui Tang: Approach A excludes NVP from Norman solver layer profiles] + ! canopy_area_profile is always accumulated (needed for photosynthesis leaf_area weighting). + ! LAI/SAI are excluded for NVP so the Norman solver uses soil albedo as its + ! lower boundary without NVP absorbing as a canopy layer (avoids double-counting with R3). + if (.not. (hlm_nvp_rad_model_ground == itrue .and. & + lb_params%stomatal_intercept(ft) <= nearzero)) then + cpatch%tlai_profile(cl,ft,iv) = cpatch%tlai_profile(cl,ft,iv) + & + remainder * fleaf * currentCohort%c_area/cpatch%total_canopy_area + + cpatch%elai_profile(cl,ft,iv) = cpatch%elai_profile(cl,ft,iv) + & + remainder * fleaf * currentCohort%c_area/cpatch%total_canopy_area * & + fraction_exposed + + cpatch%tsai_profile(cl,ft,iv) = cpatch%tsai_profile(cl,ft,iv) + & + remainder * (1._r8 - fleaf) * currentCohort%c_area/cpatch%total_canopy_area + + cpatch%esai_profile(cl,ft,iv) = cpatch%esai_profile(cl,ft,iv) + & + remainder * (1._r8 - fleaf) * currentCohort%c_area/cpatch%total_canopy_area * & + fraction_exposed + end if cpatch%canopy_area_profile(cl,ft,iv) = cpatch%canopy_area_profile(cl,ft,iv) + & currentCohort%c_area/cpatch%total_canopy_area @@ -1176,17 +1188,22 @@ subroutine leaf_area_profile( currentSite ) elai_layer,esai_layer,tlai_layer,tsai_layer) - cpatch%tlai_profile(cl,ft,iv) = cpatch%tlai_profile(cl,ft,iv) + & - tlai_layer * currentCohort%c_area/cpatch%total_canopy_area + ! [PORTED by Hui Tang: Approach A excludes NVP from Norman solver layer profiles] + ! canopy_area_profile is always accumulated (needed for photosynthesis leaf_area weighting). + if (.not. (hlm_nvp_rad_model_ground == itrue .and. & + lb_params%stomatal_intercept(ft) <= nearzero)) then + cpatch%tlai_profile(cl,ft,iv) = cpatch%tlai_profile(cl,ft,iv) + & + tlai_layer * currentCohort%c_area/cpatch%total_canopy_area - cpatch%elai_profile(cl,ft,iv) = cpatch%elai_profile(cl,ft,iv) + & - elai_layer * currentCohort%c_area/cpatch%total_canopy_area + cpatch%elai_profile(cl,ft,iv) = cpatch%elai_profile(cl,ft,iv) + & + elai_layer * currentCohort%c_area/cpatch%total_canopy_area - cpatch%tsai_profile(cl,ft,iv) = cpatch%tsai_profile(cl,ft,iv) + & - tsai_layer * currentCohort%c_area/cpatch%total_canopy_area + cpatch%tsai_profile(cl,ft,iv) = cpatch%tsai_profile(cl,ft,iv) + & + tsai_layer * currentCohort%c_area/cpatch%total_canopy_area - cpatch%esai_profile(cl,ft,iv) = cpatch%esai_profile(cl,ft,iv) + & - esai_layer * currentCohort%c_area/cpatch%total_canopy_area + cpatch%esai_profile(cl,ft,iv) = cpatch%esai_profile(cl,ft,iv) + & + esai_layer * currentCohort%c_area/cpatch%total_canopy_area + end if cpatch%canopy_area_profile(cl,ft,iv) = cpatch%canopy_area_profile(cl,ft,iv) + & currentCohort%c_area/cpatch%total_canopy_area @@ -1349,12 +1366,18 @@ subroutine update_hlm_dynamics(nsites,sites,fcolumn,bc_out) ! Locals type (fates_cohort_type) , pointer :: currentCohort integer :: s, ifp, c, p + ! [PORTED by Hui Tang: loop indices for NVP LAI subtraction loop] + integer :: cl, ft, iv + type (fates_patch_type) , pointer :: currentPatch real(r8) :: bare_frac_area real(r8) :: total_patch_area real(r8) :: total_canopy_area real(r8) :: total_patch_leaf_stem_area - real(r8) :: weight ! Weighting for cohort variables in patch + real(r8) :: weight ! Weighting for cohort variables in patch + ! [PORTED by Hui Tang: NVP aggregation locals] + real(r8) :: nvp_crown_area ! sum of c_area over all NVP cohorts in patch [m2/ha] + ! used to compute nvp_frac_pa and to normalize nvp_dz_pa do s = 1,nsites @@ -1364,6 +1387,10 @@ subroutine update_hlm_dynamics(nsites,sites,fcolumn,bc_out) bc_out(s)%dleaf_pa(:) = 0._r8 bc_out(s)%z0m_pa(:) = 0._r8 bc_out(s)%displa_pa(:) = 0._r8 + ! [PORTED by Hui Tang: zero NVP patch-level fields before aggregation] + bc_out(s)%nvp_dz_pa(:) = 0._r8 + bc_out(s)%nvp_frac_pa(:) = 0._r8 + bc_out(s)%lai_nvp_pa(:) = 0._r8 currentPatch => sites(s)%oldest_patch c = fcolumn(s) @@ -1470,6 +1497,54 @@ subroutine update_hlm_dynamics(nsites,sites,fcolumn,bc_out) bc_out(s)%esai_pa(ifp) = calc_areaindex(currentPatch,'esai') bc_out(s)%tsai_pa(ifp) = calc_areaindex(currentPatch,'tsai') + ! [PORTED by Hui Tang: remove NVP thallus area contribution from patch LAI sent to CLM] + ! NVP is a ground-level mat, not part of the vascular canopy. + ! In Approach A (elai_profile=0 for NVP) this subtracts zero; in Approach B it removes + ! the NVP leaf area that was accumulated by calc_areaindex. + if (hlm_use_nvp == itrue) then + do cl = 1, currentPatch%NCL_p + do ft = 1, numpft + if (lb_params%stomatal_intercept(ft) <= nearzero) then + do iv = 1, currentPatch%nrad(cl,ft) + bc_out(s)%elai_pa(ifp) = bc_out(s)%elai_pa(ifp) - & + currentPatch%canopy_area_profile(cl,ft,iv) * currentPatch%elai_profile(cl,ft,iv) + bc_out(s)%tlai_pa(ifp) = bc_out(s)%tlai_pa(ifp) - & + currentPatch%canopy_area_profile(cl,ft,iv) * currentPatch%tlai_profile(cl,ft,iv) + end do + end if + end do + end do + bc_out(s)%elai_pa(ifp) = max(0._r8, bc_out(s)%elai_pa(ifp)) + bc_out(s)%tlai_pa(ifp) = max(0._r8, bc_out(s)%tlai_pa(ifp)) + end if + + ! [PORTED by Hui Tang: cohort-to-patch NVP aggregation] + ! Accumulate nvp_dz_pa (area-weighted mean NVP thickness where present) + ! and nvp_frac_pa (fraction of patch covered by NVP). + if (hlm_use_nvp == itrue) then + nvp_crown_area = 0._r8 + currentCohort => currentPatch%shortest + do while (associated(currentCohort)) + if (currentCohort%nvp_dz > nearzero) then + bc_out(s)%nvp_dz_pa(ifp) = bc_out(s)%nvp_dz_pa(ifp) + & + currentCohort%nvp_dz * currentCohort%c_area + ! [PORTED by Hui Tang: accumulate area-weighted NVP LAI for Beer's law] + bc_out(s)%lai_nvp_pa(ifp) = bc_out(s)%lai_nvp_pa(ifp) + & + currentCohort%treelai * currentCohort%c_area + nvp_crown_area = nvp_crown_area + currentCohort%c_area + end if + currentCohort => currentCohort%taller + end do + if (nvp_crown_area > nearzero) then + ! Normalize dz and LAI to get area-weighted means within NVP-covered area + bc_out(s)%nvp_dz_pa(ifp) = bc_out(s)%nvp_dz_pa(ifp) / nvp_crown_area + ! [PORTED by Hui Tang: normalize lai to area-weighted mean within NVP-covered area] + bc_out(s)%lai_nvp_pa(ifp) = bc_out(s)%lai_nvp_pa(ifp) / nvp_crown_area + ! Coverage fraction relative to full patch area + bc_out(s)%nvp_frac_pa(ifp) = nvp_crown_area / AREA + end if + end if + ! Fraction of vegetation free of snow. This is used to flag those ! patches which shall under-go photosynthesis ! INTERF-TODO: we may want to stop using frac_veg_nosno_alb and let @@ -1713,19 +1788,30 @@ subroutine UpdateCohortLAI(currentCohort, canopy_layer_tlai, total_canopy_area) ! Obtain the leaf carbon leaf_c = currentCohort%prt%GetState(leaf_organ,carbon12_element) - ! Note that tree_lai has an internal check on the canopy location - call tree_lai_sai(leaf_c, currentCohort%pft, currentCohort%c_area, currentCohort%n, & - currentCohort%canopy_layer, canopy_layer_tlai, currentCohort%vcmax25top, currentCohort%dbh, currentCohort%crowndamage, & - currentCohort%canopy_trim, currentCohort%efstem_coh, 4, currentCohort%treelai, treesai ) + ! [PORTED by Hui Tang: NVP cohorts use NVP_allom; trees use tree_lai_sai] + if (hlm_use_nvp == itrue .and. & + lb_params%stomatal_intercept(currentCohort%pft) <= nearzero) then + ! NVP: derive treelai and nvp_dz from leaf carbon + call NVP_allom(currentCohort%treelai, leaf_c, currentCohort%nvp_dz, & + inverse=.false.) + currentCohort%treesai = 0._r8 + currentCohort%nv = 1 + else + ! Note that tree_lai has an internal check on the canopy location + call tree_lai_sai(leaf_c, currentCohort%pft, currentCohort%c_area, currentCohort%n, & + currentCohort%canopy_layer, canopy_layer_tlai, currentCohort%vcmax25top, & + currentCohort%dbh, currentCohort%crowndamage, currentCohort%canopy_trim, & + currentCohort%efstem_coh, 4, currentCohort%treelai, treesai) + + ! Do not update stem area index of SP vegetation + if (hlm_use_sp .eq. ifalse) then + currentCohort%treesai = treesai + end if - ! Do not update stem area index of SP vegetation - if (hlm_use_sp .eq. ifalse) then - currentCohort%treesai = treesai + ! Number of actual vegetation layers in this cohort's crown + currentCohort%nv = GetNVegLayers(currentCohort%treelai+currentCohort%treesai) end if - - ! Number of actual vegetation layers in this cohort's crown - currentCohort%nv = GetNVegLayers(currentCohort%treelai+currentCohort%treesai) - + end subroutine UpdateCohortLAI ! =============================================================================================== diff --git a/biogeochem/FatesAllometryMod.F90 b/biogeochem/FatesAllometryMod.F90 index 94b58a881a..b2ecf6f802 100644 --- a/biogeochem/FatesAllometryMod.F90 +++ b/biogeochem/FatesAllometryMod.F90 @@ -99,6 +99,8 @@ module FatesAllometryMod use FatesGlobals , only : endrun => fates_endrun use FatesGlobals , only : FatesWarn,N2S,A2S,I2S use EDParamsMod , only : nlevleaf,dinc_vai,dlower_vai + ! [PORTED by Hui Tang: NVP allometry parameters from FATES parameter file] + use EDParamsMod , only : nvp_bulk_density, nvp_sla use DamageMainMod , only : GetCrownReduction use LeafBiophysicsMod, only : DecayCoeffVcmax @@ -124,6 +126,8 @@ module FatesAllometryMod public :: set_root_fraction ! Generic wrapper to calculate normalized ! root profiles public :: leafc_from_treelai ! Calculate target leaf carbon for a given treelai for SP mode + ! [PORTED by Hui Tang: NVP (moss/lichen) bidirectional LAI<->biomass and LAI->thickness conversion] + public :: NVP_allom public :: VegAreaLayer public :: tree_lai_sai ! LAI and SAI calculations must work together, thus they @@ -2800,6 +2804,8 @@ subroutine set_root_fraction(root_fraction, ft, zi, max_nlevroot) integer, parameter :: jackson_beta_profile_type = 1 integer, parameter :: exponential_1p_profile_type = 2 integer, parameter :: exponential_2p_profile_type = 3 + ! [PORTED by Hui Tang: mode 4 = NVP (no soil roots); root_fraction stays all-zero] + integer, parameter :: no_root_profile_type = 4 integer :: root_profile_type integer :: corr_id(1) ! This is the bin with largest fraction @@ -2835,9 +2841,12 @@ subroutine set_root_fraction(root_fraction, ft, zi, max_nlevroot) call exponential_1p_root_profile(root_fraction(1:nlevroot), zi(0:nlevroot), prt_params%fnrt_prof_a(ft)) case ( jackson_beta_profile_type ) call jackson_beta_root_profile(root_fraction(1:nlevroot), zi(0:nlevroot), prt_params%fnrt_prof_a(ft)) - case ( exponential_2p_profile_type ) - call exponential_2p_root_profile(root_fraction(1:nlevroot), zi(0:nlevroot), & + case ( exponential_2p_profile_type ) + call exponential_2p_root_profile(root_fraction(1:nlevroot), zi(0:nlevroot), & prt_params%fnrt_prof_a(ft),prt_params%fnrt_prof_b(ft)) + ! [PORTED by Hui Tang: NVP has no soil roots; root_fraction already zeroed above] + case ( no_root_profile_type ) + ! No root profile: root_fraction(:) = 0._r8 (initialized at line 2827, no further action needed) case default write(fates_log(),*) 'An undefined root profile type was specified' @@ -2846,9 +2855,12 @@ subroutine set_root_fraction(root_fraction, ft, zi, max_nlevroot) end select - correction = 1._r8 - sum(root_fraction) - corr_id = maxloc(root_fraction) - root_fraction(corr_id(1)) = root_fraction(corr_id(1)) + correction + ! [PORTED by Hui Tang: skip normalization for no_root_profile_type; all zeros is intentional] + if (nint(prt_params%fnrt_prof_mode(ft)) /= no_root_profile_type) then + correction = 1._r8 - sum(root_fraction) + corr_id = maxloc(root_fraction) + root_fraction(corr_id(1)) = root_fraction(corr_id(1)) + correction + end if @@ -3544,6 +3556,57 @@ subroutine size2dbh(size,ipft,dbh,dbh_maxh) end subroutine size2dbh ! ============================================================================ + ! [PORTED by Hui Tang: NVP (moss/lichen) allometry - LAI<->biomass and LAI->layer thickness] + subroutine NVP_allom(lai, leaf_c, nvp_dz, inverse) + ! + ! !DESCRIPTION: + ! Bidirectional conversion between NVP leaf carbon and LAI, and diagnosis + ! of the NVP layer thickness from LAI. + ! + ! Parameters (from Porada et al. 2013 and related literature, read from FATES parameter file): + ! nvp_sla [m2 g-1] specific leaf area of NVP + ! nvp_bulk_density [kg m-3] NVP bulk density + ! nv_c2b = 2.32 carbon-to-biomass ratio of NVP (kgC / kgDM) + ! nv_t2l = 1.0 total-to-leaf biomass ratio (all biomass is leaf for NVP) + ! + ! When inverse = .false.: leaf_c -> lai, nvp_dz + ! When inverse = .true. : lai -> leaf_c (nvp_dz still diagnosed from lai) + ! + ! nvp_dz = lai / (nvp_sla [m2 g-1] * 1e3 [g kg-1] * nvp_bulk_density [kg m-3]) + ! = lai / (nvp_sla * g_per_kg * nvp_bulk_density) + ! + ! !ARGUMENTS: + real(r8), intent(inout) :: lai ! NVP leaf area index [m2 leaf / m2 crown] + real(r8), intent(inout) :: leaf_c ! NVP leaf carbon per unit crown area [kgC m-2] + real(r8), intent(out) :: nvp_dz ! NVP layer thickness [m] + logical, intent(in) :: inverse ! .false. = leaf_c->lai; .true. = lai->leaf_c + ! + ! !LOCAL VARIABLES: + real(r8), parameter :: nv_c2b = 2.32_r8 ! carbon to dry-mass ratio [kgC kgDM-1] + real(r8), parameter :: nv_t2l = 1.0_r8 ! total-to-leaf biomass ratio [-] + !------------------------------------------------------------------------ + + if (inverse) then + ! lai -> leaf_c + ! leaf_mass_per_area [kgDM m-2] = lai [m2 m-2] / (nvp_sla [m2 g-1] * g_per_kg [g kg-1]) + ! leaf_c [kgC m-2] = leaf_mass_per_area * nv_c2b / nv_t2l + leaf_c = (lai / (nvp_sla * g_per_kg)) * nv_c2b / nv_t2l + else + ! leaf_c -> lai + ! leaf_mass [kgDM m-2] = leaf_c * nv_t2l / nv_c2b + ! lai = leaf_mass * nvp_sla * g_per_kg + lai = (leaf_c * nv_t2l / nv_c2b) * nvp_sla * g_per_kg + end if + ! Diagnose layer thickness from LAI regardless of direction + ! nvp_dz [m] = lai [m2 m-2] / (nvp_sla [m2 g-1] * g_per_kg [g kg-1] * nvp_bulk_density [kg m-3]) + if (nvp_bulk_density > nearzero) then + nvp_dz = lai / (nvp_sla * g_per_kg * nvp_bulk_density) + else + nvp_dz = 0.0_r8 + end if + + end subroutine NVP_allom + ! ============================================================================ end module FatesAllometryMod diff --git a/biogeochem/FatesCohortMod.F90 b/biogeochem/FatesCohortMod.F90 index 15195e4d0f..f0a963bad9 100644 --- a/biogeochem/FatesCohortMod.F90 +++ b/biogeochem/FatesCohortMod.F90 @@ -28,6 +28,10 @@ module FatesCohortMod use FatesSizeAgeTypeIndicesMod, only : sizetype_class_index use FatesSizeAgeTypeIndicesMod, only : coagetype_class_index use FatesAllometryMod, only : carea_allom, tree_lai_sai + ! [PORTED by Hui Tang: NVP allometry for cohort initialization] + use FatesAllometryMod, only : NVP_allom + use LeafBiophysicsMod, only : lb_params + use FatesInterfaceTypesMod, only : hlm_use_nvp use PRTAllometricCarbonMod, only : ac_bc_inout_id_dbh, ac_bc_inout_id_netdc use PRTAllometricCarbonMod, only : ac_bc_in_id_cdamage, ac_bc_in_id_pft use PRTAllometricCarbonMod, only : ac_bc_in_id_ctrim, ac_bc_in_id_lstat @@ -105,6 +109,10 @@ module FatesCohortMod real(r8) :: c_area ! areal extent of canopy [m2] real(r8) :: treelai ! lai of an individual within cohort leaf area [m2 leaf area/m2 crown area] real(r8) :: treesai ! stem area index of an individual within cohort [m2 stem area/m2 crown area] + ! [PORTED by Hui Tang: NVP layer thickness derived from cohort LAI via NVP_allom] + ! Only meaningful for NVP cohort (stomatal_intercept(ft) <= nearzero). + ! nvp_dz = treelai / (nv_sla * bulk_density_nvp); updated after each LAI change. + real(r8) :: nvp_dz ! NVP layer thickness for this cohort [m] logical :: isnew ! flag to signify a new cohort - new cohorts have not experienced ! npp or mortality and should therefore not be fused or averaged integer :: size_class ! index that indicates which diameter size bin the cohort currently resides in @@ -375,9 +383,10 @@ subroutine NanValues(this) this%efleaf_coh = nan this%effnrt_coh = nan this%efstem_coh = nan - this%c_area = nan + this%c_area = nan this%treelai = nan this%treesai = nan + this%nvp_dz = 0.0_r8 ! [PORTED by Hui Tang: safe default; set by NVP_allom for NVP PFTs] this%isnew = .false. this%size_class = fates_unset_int this%coage_class = fates_unset_int @@ -488,6 +497,7 @@ subroutine ZeroValues(this) this%efstem_coh = 0.0_r8 this%treesai = 0._r8 + this%nvp_dz = 0.0_r8 ! [PORTED by Hui Tang: safe default; set by NVP_allom for NVP PFTs] this%size_class = 1 this%coage_class = 1 @@ -659,12 +669,20 @@ subroutine Create(this, prt, pft, nn, height, coage, dbh, status, & ! Query PARTEH for the leaf carbon [kg] leaf_c = this%prt%GetState(leaf_organ, carbon12_element) - call tree_lai_sai(leaf_c, this%pft, this%c_area, this%n, & - this%canopy_layer, can_tlai, this%vcmax25top, this%dbh, this%crowndamage, & - this%canopy_trim, this%efstem_coh, 2, this%treelai, treesai) - - if (hlm_use_sp .eq. ifalse) then - this%treesai = treesai + ! [PORTED by Hui Tang: NVP cohorts initialize treelai and nvp_dz via NVP_allom] + if (hlm_use_nvp == itrue .and. & + lb_params%stomatal_intercept(this%pft) <= nearzero) then + call NVP_allom(this%treelai, leaf_c, this%nvp_dz, inverse=.false.) + this%treesai = 0._r8 + else + call tree_lai_sai(leaf_c, this%pft, this%c_area, this%n, & + this%canopy_layer, can_tlai, this%vcmax25top, this%dbh, & + this%crowndamage, this%canopy_trim, this%efstem_coh, 2, & + this%treelai, treesai) + + if (hlm_use_sp .eq. ifalse) then + this%treesai = treesai + end if end if @@ -716,6 +734,7 @@ subroutine Copy(this, copyCohort) copyCohort%c_area = this%c_area copyCohort%treelai = this%treelai copyCohort%treesai = this%treesai + copyCohort%nvp_dz = this%nvp_dz ! [PORTED by Hui Tang: copy NVP layer thickness] copyCohort%isnew = this%isnew copyCohort%size_class = this%size_class copyCohort%coage_class = this%coage_class diff --git a/biogeophys/FatesPlantRespPhotosynthMod.F90 b/biogeophys/FatesPlantRespPhotosynthMod.F90 index 60cf234a64..5dbec94174 100644 --- a/biogeophys/FatesPlantRespPhotosynthMod.F90 +++ b/biogeophys/FatesPlantRespPhotosynthMod.F90 @@ -32,6 +32,9 @@ module FATESPlantRespPhotosynthMod use FatesConstantsMod, only : nocomp_bareground use FatesInterfaceTypesMod, only : hlm_use_planthydro use FatesInterfaceTypesMod, only : hlm_parteh_mode + ! [PORTED by Hui Tang: NVP (moss/lichen) master flags] + use FatesInterfaceTypesMod, only : hlm_use_nvp + use FatesInterfaceTypesMod, only : hlm_use_nvp_undersnow use FatesInterfaceTypesMod, only : numpft use FatesInterfaceTypesMod, only : nleafage use FatesUtilsMod, only : QuadraticRoots => QuadraticRootsSridharachary @@ -275,6 +278,8 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) ! portion of the conductance equation real(r8) :: vmol_cf ! velocity to molar conductance conversion (m/s) -> (umol/m2/s) + ! [PORTED by Hui Tang: cohort temperature: t_nvp_pa for NVP cohorts, t_veg_pa otherwise] + real(r8) :: t_cohort ! effective leaf temperature for this cohort [K] ! ----------------------------------------------------------------------------------- ! Keeping these two definitions in case they need to be added later @@ -375,9 +380,23 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) ! leaf boundary layer conductance of h20 ! constrained vapor pressure + ! [PORTED by Hui Tang: use NVP surface temperature for gas parameters when + ! patch contains NVP cohorts; walk cohort list to detect NVP presence] + t_cohort = bc_in(s)%t_veg_pa(ifp) + if (hlm_use_nvp == itrue) then + currentCohort => currentPatch%tallest + do while (associated(currentCohort)) + if (currentCohort%nvp_dz > nearzero) then + t_cohort = bc_in(s)%t_nvp_pa(ifp) + exit + end if + currentCohort => currentCohort%shorter + end do + end if + call GetCanopyGasParameters(bc_in(s)%forc_pbot, & ! in bc_in(s)%oair_pa(ifp), & ! in - bc_in(s)%t_veg_pa(ifp), & ! in + t_cohort, & ! in [PORTED: NVP or veg temperature] mm_kco2, & ! out mm_ko2, & ! out co2_cpoint) @@ -422,7 +441,14 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) ! and the leaf layer (IV) for this cohort ft = currentCohort%pft cl = currentCohort%canopy_layer - + + ! [PORTED by Hui Tang: select NVP surface temperature for NVP cohorts] + if (hlm_use_nvp == itrue .and. currentCohort%nvp_dz > nearzero) then + t_cohort = bc_in(s)%t_nvp_pa(ifp) + else + t_cohort = bc_in(s)%t_veg_pa(ifp) + end if + ! Calculate the cohort specific elai profile ! And the top and bottom edges of the veg area index ! of each layer bin are. Note, if the layers @@ -594,7 +620,7 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) call LeafLayerMaintenanceRespiration_Ryan_1991( lnc_top, & ! in nscaler, & ! in ft, & ! in - bc_in(s)%t_veg_pa(ifp), & ! in + t_cohort, & ! in [PORTED: NVP or veg temp] lmr_z(iv,ft,cl)) ! out case (lmrmodel_atkin_etal_2017) @@ -616,7 +642,7 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) call LeafLayerMaintenanceRespiration_Atkin_etal_2017( lnc_top, & ! in rdark_scaler, & ! in ft, & ! in - bc_in(s)%t_veg_pa(ifp), & ! in + t_cohort, & ! in [PORTED: NVP or veg temp] currentPatch%tveg_lpa%GetMean(), & ! in lmr_z(iv,ft,cl)) ! out @@ -732,7 +758,7 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) currentCohort%jmax25top, & ! in currentCohort%kp25top, & ! in nscaler, & ! in - bc_in(s)%t_veg_pa(ifp), & ! in + t_cohort, & ! in [PORTED: NVP or veg temp] bc_in(s)%dayl_factor_pa(ifp), & ! in currentPatch%tveg_lpa%GetMean(), & ! in currentPatch%tveg_longterm%GetMean(),& ! in @@ -744,6 +770,12 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) gs1, & ! out gs2 ) ! out + ! [PORTED by Hui Tang: scale vcmax by NVP wetness fraction + ! following Porada et al. 2013: full capacity at fwet >= 0.6] + if (hlm_use_nvp == itrue .and. currentCohort%nvp_dz > nearzero) then + vcmax_z = vcmax_z * min(1._r8, bc_in(s)%fwet_nvp_pa(ifp) / 0.6_r8) + end if + if ( (hlm_use_planthydro.eq.itrue .and. EDPftvarcon_inst%hydr_k_lwp(ft)>nearzero) ) then hydr_k_lwp = EDPftvarcon_inst%hydr_k_lwp(ft) @@ -751,33 +783,66 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) hydr_k_lwp = 1._r8 end if - call LeafLayerPhotosynthesis( & ! - par_abs, & ! in - ft, & ! in - vcmax_z, & ! in - jmax_z, & ! in - kp_z, & ! in - gs0, & ! in - gs1, & ! in - gs2, & ! in - bc_in(s)%t_veg_pa(ifp), & ! in - bc_in(s)%forc_pbot, & ! in - bc_in(s)%cair_pa(ifp), & ! in - bc_in(s)%oair_pa(ifp), & ! in - bc_in(s)%esat_tv_pa(ifp), & ! in - gb_mol, & ! in - bc_in(s)%eair_pa(ifp), & ! in - mm_kco2, & ! in - mm_ko2, & ! in - co2_cpoint, & ! in - lmr_z(iv,ft,cl), & ! in - ci_tol, & ! in - psn_ll, & ! out - gstoma_ll, & ! out - anet_ll, & ! out - c13disc_ll, & ! out - co2_inter_c_utest, & ! out (unit tests) - solve_iter) ! out performance tracking + ! [PORTED by Hui Tang: pass fwet_nvp for NVP cohorts so + ! LeafLayerPhotosynthesis overrides ci with boundary-layer-only formula] + if (hlm_use_nvp == itrue .and. currentCohort%nvp_dz > nearzero) then + call LeafLayerPhotosynthesis( & ! + par_abs, & ! in + ft, & ! in + vcmax_z, & ! in + jmax_z, & ! in + kp_z, & ! in + gs0, & ! in + gs1, & ! in + gs2, & ! in + t_cohort, & ! in + bc_in(s)%forc_pbot, & ! in + bc_in(s)%cair_pa(ifp), & ! in + bc_in(s)%oair_pa(ifp), & ! in + bc_in(s)%esat_tv_pa(ifp), & ! in + gb_mol, & ! in + bc_in(s)%eair_pa(ifp), & ! in + mm_kco2, & ! in + mm_ko2, & ! in + co2_cpoint, & ! in + lmr_z(iv,ft,cl), & ! in + ci_tol, & ! in + psn_ll, & ! out + gstoma_ll, & ! out + anet_ll, & ! out + c13disc_ll, & ! out + co2_inter_c_utest, & ! out (unit tests) + solve_iter, & ! out + fwet_nvp=bc_in(s)%fwet_nvp_pa(ifp)) ! in (NVP ci override) + else + call LeafLayerPhotosynthesis( & ! + par_abs, & ! in + ft, & ! in + vcmax_z, & ! in + jmax_z, & ! in + kp_z, & ! in + gs0, & ! in + gs1, & ! in + gs2, & ! in + t_cohort, & ! in [PORTED: NVP or veg temp] + bc_in(s)%forc_pbot, & ! in + bc_in(s)%cair_pa(ifp), & ! in + bc_in(s)%oair_pa(ifp), & ! in + bc_in(s)%esat_tv_pa(ifp), & ! in + gb_mol, & ! in + bc_in(s)%eair_pa(ifp), & ! in + mm_kco2, & ! in + mm_ko2, & ! in + co2_cpoint, & ! in + lmr_z(iv,ft,cl), & ! in + ci_tol, & ! in + psn_ll, & ! out + gstoma_ll, & ! out + anet_ll, & ! out + c13disc_ll, & ! out + co2_inter_c_utest, & ! out (unit tests) + solve_iter) ! out performance tracking + end if ! Average output quantities across sunlit and shaded leaves ! Convert from molar to velocity (umol /m**2/s) to (m/s) @@ -997,6 +1062,9 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) currentCohort%froot_mr = 0._r8 currentCohort%sym_nfix_tstep = 0._r8 + ! [PORTED by Hui Tang: NVP (moss/lichen) has no fine roots; skip root MR loop] + if (.not. (hlm_use_nvp == itrue .and. currentCohort%nvp_dz > nearzero)) then + ! n_fixation is integrated over the course of the day ! this variable is zeroed at the end of the FATES dynamics sequence @@ -1016,6 +1084,8 @@ subroutine FatesPlantRespPhotosynthDrive (nsites, sites,bc_in,bc_out,dtime) enddo + end if ! [PORTED by Hui Tang: end NVP root MR bypass] + ! Coarse Root MR (kgC/plant/s) (below ground sapwood) ! ------------------------------------------------------------------ if ( int(woody(ft)) == itrue) then diff --git a/biogeophys/LeafBiophysicsMod.F90 b/biogeophys/LeafBiophysicsMod.F90 index c238eebf16..a0b9aa5f46 100644 --- a/biogeophys/LeafBiophysicsMod.F90 +++ b/biogeophys/LeafBiophysicsMod.F90 @@ -1255,7 +1255,8 @@ subroutine LeafLayerPhotosynthesis( & anet, & ! out c13disc, & ! out ci, & ! out - solve_iter) ! out + solve_iter, & ! out + fwet_nvp) ! in (optional) [PORTED by Hui Tang: NVP wet fraction for ci override] ! ------------------------------------------------------------------------------------ @@ -1296,7 +1297,9 @@ subroutine LeafLayerPhotosynthesis( & real(r8), intent(out) :: c13disc ! carbon 13 in newly assimilated carbon real(r8), intent(out) :: ci ! intracellular leaf CO2 (Pa) integer, intent(out) :: solve_iter ! Number of iterations required for the solve - + ! [PORTED by Hui Tang: NVP wet fraction; when present, ci is overridden after the solve] + real(r8), intent(in), optional :: fwet_nvp ! NVP (moss/lichen) wet fraction [0-1] + ! Important Note on the gas pressures as input arguments. This photosynthesis scheme will iteratively ! solve for the co2 partial pressure at the leaf surface (ie in the stomata). The reference ! point for these input values are NOT within that boundary layer that separates the stomata from @@ -1407,6 +1410,16 @@ subroutine LeafLayerPhotosynthesis( & c13disc = 4.4_r8 + (27.0_r8 - 4.4_r8) * & min (can_co2_ppress, max (ci, 0._r8)) / can_co2_ppress + ! [PORTED by Hui Tang: for NVP (stomatal_model==3), override ci using boundary-layer-only + ! diffusion scaled by a fwet water-film resistance term (Porada 2013 approach). + ! When dry (fwet->0): (1-fwet)->1, standard boundary-layer resistance. + ! When saturated (fwet->1): (1-fwet) clamped to 0.1, very high resistance + ! because the water film blocks CO2 diffusion into the tissue.] + if (present(fwet_nvp)) then + ci = can_co2_ppress - anet * can_press * h2o_co2_bl_diffuse_ratio / & + (gb * max((max(1.0_r8 - fwet_nvp, 0.1_r8))**12, 0.000001_r8)) + end if + return end subroutine LeafLayerPhotosynthesis diff --git a/main/EDParamsMod.F90 b/main/EDParamsMod.F90 index 369eb6b9ec..4c57fb2c39 100644 --- a/main/EDParamsMod.F90 +++ b/main/EDParamsMod.F90 @@ -63,6 +63,13 @@ module EDParamsMod real(r8), protected, public :: cg_strikes ! fraction of cloud to ground lightning strikes (0-1) + ! [PORTED by Hui Tang: NVP (moss/lichen) Beer's law extinction coefficient] + real(r8), protected, public :: nvp_extinction_coeff ! Beer's law extinction coeff for NVP radiation absorption [-] + + ! [PORTED by Hui Tang: NVP (moss/lichen) allometry parameters] + real(r8), protected, public :: nvp_bulk_density ! NVP bulk density [kg m-3] + real(r8), protected, public :: nvp_sla ! NVP specific leaf area [m2 g-1] + ! Global identifier of how nutrients interact with the host land model ! either they are fully coupled, or they generate uptake rates synthetically ! in prescribed mode. In the latter, there is both NO mass removed from the HLM's soil @@ -486,6 +493,17 @@ subroutine TransferParamsGeneric(pstruct) param_p => pstruct%GetParamFromName("fates_cnp_eca_plant_escalar") eca_plant_escalar = param_p%r_data_scalar + ! [PORTED by Hui Tang: read NVP Beer's law extinction coefficient] + param_p => pstruct%GetParamFromName("fates_nvp_extinction_coeff") + nvp_extinction_coeff = param_p%r_data_scalar + + ! [PORTED by Hui Tang: read NVP allometry parameters] + param_p => pstruct%GetParamFromName("fates_nvp_bulk_density") + nvp_bulk_density = param_p%r_data_scalar + + param_p => pstruct%GetParamFromName("fates_nvp_sla") + nvp_sla = param_p%r_data_scalar + return end subroutine TransferParamsGeneric diff --git a/main/FatesHistoryInterfaceMod.F90 b/main/FatesHistoryInterfaceMod.F90 index 8d8dae4e7c..a8ef326ca4 100644 --- a/main/FatesHistoryInterfaceMod.F90 +++ b/main/FatesHistoryInterfaceMod.F90 @@ -141,6 +141,8 @@ module FatesHistoryInterfaceMod use FatesSizeAgeTypeIndicesMod, only : get_cdamagesizepft_class_index use FatesSizeAgeTypeIndicesMod, only : coagetype_class_index use FatesInterfaceTypesMod , only : hlm_use_luh + use FatesInterfaceTypesMod , only : hlm_use_nvp ! [PORTED by Hui Tang: NVP history] + use LeafBiophysicsMod , only : lb_params ! [PORTED by Hui Tang: NVP PFT identification via stomatal_intercept] use FatesSizeAgeTypeIndicesMod, only : get_landusepft_class_index implicit none @@ -710,6 +712,12 @@ module FatesHistoryInterfaceMod integer :: ih_canopy_height_dist_si_height integer :: ih_leaf_height_dist_si_height + ! [PORTED by Hui Tang: indices for NVP (moss/lichen) site-level history variables] + integer :: ih_nvp_frac_si + integer :: ih_nvp_dz_si + integer :: ih_nvp_lai_si + integer :: ih_nvp_gpp_si + ! Indices to hydraulics variables integer :: ih_errh2o_scpf @@ -5166,7 +5174,12 @@ subroutine update_history_hifrq(this,nc,nsites,sites,bc_in,bc_out,dt_tstep) type(bc_in_type) , intent(in) :: bc_in(nsites) type(bc_out_type) , intent(in) :: bc_out(nsites) real(r8) , intent(in) :: dt_tstep - + + ! [PORTED by Hui Tang: local variables for NVP site-level history aggregation] + integer :: s, io_si, ifp + real(r8) :: nvp_frac_site, nvp_dz_site, nvp_lai_site, total_area_site + type(fates_patch_type), pointer :: cpatch + if(hlm_hist_level_hifrq>0) then call update_history_hifrq_sitelevel(this,nc,nsites,sites,bc_in,dt_tstep) if(hlm_hist_level_hifrq>1) then @@ -5176,6 +5189,40 @@ subroutine update_history_hifrq(this,nc,nsites,sites,bc_in,bc_out,dt_tstep) call update_history_hifrq_landuse(this,nc,nsites,sites,bc_in,dt_tstep) end if end if + + ! [PORTED by Hui Tang: update NVP site-level history variables from bc_out] + ! Compute patch-area-weighted means of nvp_frac, nvp_dz, and lai_nvp over the site. + if (hlm_use_nvp .eq. itrue) then + associate( & + hio_nvp_frac_si => this%hvars(ih_nvp_frac_si)%r81d, & + hio_nvp_dz_si => this%hvars(ih_nvp_dz_si)%r81d, & + hio_nvp_lai_si => this%hvars(ih_nvp_lai_si)%r81d) + + do s = 1, nsites + io_si = sites(s)%h_gid + nvp_frac_site = 0._r8 + nvp_dz_site = 0._r8 + nvp_lai_site = 0._r8 + total_area_site = 0._r8 + cpatch => sites(s)%oldest_patch + do while(associated(cpatch)) + ifp = cpatch%patchno + nvp_frac_site = nvp_frac_site + bc_out(s)%nvp_frac_pa(ifp) * bc_out(s)%canopy_fraction_pa(ifp) + nvp_dz_site = nvp_dz_site + bc_out(s)%nvp_dz_pa(ifp) * bc_out(s)%canopy_fraction_pa(ifp) + nvp_lai_site = nvp_lai_site + bc_out(s)%lai_nvp_pa(ifp) * bc_out(s)%canopy_fraction_pa(ifp) + total_area_site = total_area_site + bc_out(s)%canopy_fraction_pa(ifp) + cpatch => cpatch%younger + end do + if (total_area_site > nearzero) then + hio_nvp_frac_si(io_si) = nvp_frac_site / total_area_site + hio_nvp_dz_si(io_si) = nvp_dz_site / total_area_site + hio_nvp_lai_si(io_si) = nvp_lai_site / total_area_site + end if + end do + + end associate + end if + end if @@ -5216,6 +5263,7 @@ subroutine update_history_hifrq_sitelevel(this,nc,nsites,sites,bc_in,dt_tstep) associate( hio_gpp_si => this%hvars(ih_gpp_si)%r81d, & + hio_nvp_gpp_si => this%hvars(ih_nvp_gpp_si)%r81d, & ! [PORTED by Hui Tang: NVP GPP] hio_npp_si => this%hvars(ih_npp_si)%r81d, & hio_aresp_si => this%hvars(ih_aresp_si)%r81d, & hio_maint_resp_si => this%hvars(ih_maint_resp_si)%r81d, & @@ -5362,6 +5410,13 @@ subroutine update_history_hifrq_sitelevel(this,nc,nsites,sites,bc_in,dt_tstep) hio_gpp_si(io_si) = hio_gpp_si(io_si) + & ccohort%gpp_tstep * n_perm2 * dt_tstep_inv + ! [PORTED by Hui Tang: accumulate NVP GPP separately] + if (hlm_use_nvp .eq. itrue .and. & + lb_params%stomatal_intercept(ccohort%pft) <= nearzero) then + hio_nvp_gpp_si(io_si) = hio_nvp_gpp_si(io_si) + & + ccohort%gpp_tstep * n_perm2 * dt_tstep_inv + end if + hio_maint_resp_si(io_si) = hio_maint_resp_si(io_si) + & ccohort%resp_m_tstep * n_perm2 * dt_tstep_inv @@ -9835,6 +9890,30 @@ subroutine define_history_vars(this, initialize_variables) end if if_hifrq1 + ! [PORTED by Hui Tang: NVP (moss/lichen) site-level history variables] + call this%set_history_var(vname='FATES_NVP_FRAC', units='1', & + long='nvp (moss/lichen) fractional coverage of site', & + use_default='inactive', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_hifr_simple, ivar=ivar, initialize=initialize_variables, & + index=ih_nvp_frac_si) + + call this%set_history_var(vname='FATES_NVP_DZ', units='m', & + long='nvp (moss/lichen) area-weighted mean layer thickness', & + use_default='inactive', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_hifr_simple, ivar=ivar, initialize=initialize_variables, & + index=ih_nvp_dz_si) + + call this%set_history_var(vname='FATES_NVP_LAI', units='m2 m-2', & + long='nvp (moss/lichen) area-weighted mean thallus area index', & + use_default='inactive', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_hifr_simple, ivar=ivar, initialize=initialize_variables, & + index=ih_nvp_lai_si) + + call this%set_history_var(vname='FATES_NVP_GPP', units='kgC m-2 s-1', & + long='nvp (moss/lichen) gross primary production per unit land area', & + use_default='active', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_hifr_simple, ivar=ivar, initialize=initialize_variables, & + index=ih_nvp_gpp_si) end if if_hifrq0 diff --git a/main/FatesInterfaceMod.F90 b/main/FatesInterfaceMod.F90 index 7f17ea9d5c..cc729b493a 100644 --- a/main/FatesInterfaceMod.F90 +++ b/main/FatesInterfaceMod.F90 @@ -294,6 +294,9 @@ subroutine zero_bcs(fates,s) fates%bc_in(s)%solad_parb(:,:) = 0.0_r8 fates%bc_in(s)%solai_parb(:,:) = 0.0_r8 + ! [PORTED by Hui Tang: zero NVP flux fields] + fates%bc_in(s)%flx_absdv(:) = 0.0_r8 + fates%bc_in(s)%flx_absiv(:) = 0.0_r8 fates%bc_in(s)%smp_sl(:) = 0.0_r8 fates%bc_in(s)%eff_porosity_sl(:) = 0.0_r8 fates%bc_in(s)%watsat_sl(:) = 0.0_r8 @@ -399,7 +402,16 @@ subroutine zero_bcs(fates,s) fates%bc_out(s)%ftdd_parb(:,:) = 0.0_r8 ! rad flux to soil at bottom of veg is 100% fates%bc_out(s)%ftid_parb(:,:) = 0.0_r8 ! rad flux to soil at bottom of veg is 100% fates%bc_out(s)%ftii_parb(:,:) = 0.0_r8 ! rad flux to soil at bottom of veg is 100% - + ! [PORTED by Hui Tang: zero NVP radiation and layer geometry fields] + fates%bc_out(s)%fabd_nvp_pa(:,:) = 0.0_r8 ! NVP absorbs no direct solar by default + fates%bc_out(s)%fabi_nvp_pa(:,:) = 0.0_r8 ! NVP absorbs no diffuse solar by default + fates%bc_out(s)%nvp_dz_pa(:) = 0.0_r8 ! no NVP layer thickness by default + fates%bc_out(s)%nvp_frac_pa(:) = 0.0_r8 ! no NVP coverage by default + ! [PORTED by Hui Tang: zero NVP LAI field] + fates%bc_out(s)%lai_nvp_pa(:) = 0.0_r8 ! no NVP LAI by default + ! [PORTED by Hui Tang: zero NVP single-scatter albedo for SNICAR layer-0] + fates%bc_out(s)%nvp_omega_pa(:,:) = 0.0_r8 ! omega=0 until nvp_ft resolved in radiation + fates%bc_out(s)%elai_pa(:) = 0.0_r8 fates%bc_out(s)%esai_pa(:) = 0.0_r8 fates%bc_out(s)%tlai_pa(:) = 0.0_r8 @@ -526,6 +538,9 @@ subroutine allocate_bcin(bc_in, nlevsoil_in, nlevdecomp_in, num_lu_harvest_cats, ! Radiation allocate(bc_in%solad_parb(maxpatch_total,num_swb)) allocate(bc_in%solai_parb(maxpatch_total,num_swb)) + ! [PORTED by Hui Tang: visible flux at NVP level for photosynthesis PAR] + allocate(bc_in%flx_absdv(maxpatch_total)) + allocate(bc_in%flx_absiv(maxpatch_total)) ! Hydrology allocate(bc_in%smp_sl(nlevsoil_in)) @@ -550,6 +565,9 @@ subroutine allocate_bcin(bc_in, nlevsoil_in, nlevdecomp_in, num_lu_harvest_cats, allocate(bc_in%cair_pa(maxpatch_total)) allocate(bc_in%rb_pa(maxpatch_total)) allocate(bc_in%t_veg_pa(maxpatch_total)) + ! [PORTED by Hui Tang: NVP surface temperature and wet fraction for photosynthesis] + allocate(bc_in%t_nvp_pa(maxpatch_total)) ; bc_in%t_nvp_pa(:) = 274.0_r8 + allocate(bc_in%fwet_nvp_pa(maxpatch_total)) ; bc_in%fwet_nvp_pa(:) = 0.0_r8 allocate(bc_in%tgcm_pa(maxpatch_total)) allocate(bc_in%t_soisno_sl(nlevsoil_in)) @@ -656,6 +674,15 @@ subroutine allocate_bcout(bc_out, nlevsoil_in, nlevdecomp_in) allocate(bc_out%ftdd_parb(maxpatch_total,num_swb)) allocate(bc_out%ftid_parb(maxpatch_total,num_swb)) allocate(bc_out%ftii_parb(maxpatch_total,num_swb)) + ! [PORTED by Hui Tang: allocate NVP radiation absorbed fractions and layer geometry] + allocate(bc_out%fabd_nvp_pa(maxpatch_total,num_swb)) + allocate(bc_out%fabi_nvp_pa(maxpatch_total,num_swb)) + allocate(bc_out%nvp_dz_pa(maxpatch_total)) + allocate(bc_out%nvp_frac_pa(maxpatch_total)) + ! [PORTED by Hui Tang: allocate NVP LAI for Beer's law (avoids cohort walk in radiation)] + allocate(bc_out%lai_nvp_pa(maxpatch_total)) + ! [PORTED by Hui Tang: allocate NVP single-scatter albedo for SNICAR layer-0] + allocate(bc_out%nvp_omega_pa(maxpatch_total,num_swb)) ! We allocate the boundary conditions to the BGC ! model, regardless of what scheme we use. The BGC @@ -1573,6 +1600,10 @@ subroutine set_fates_ctrlparms(tag,ival,rval,cval) hlm_use_fixed_biogeog = unset_int hlm_use_nocomp = unset_int hlm_use_sp = unset_int + ! [PORTED by Hui Tang: initialize NVP control flags] + hlm_use_nvp = unset_int + hlm_use_nvp_undersnow = unset_int + hlm_nvp_rad_model_ground = unset_int hlm_use_inventory_init = unset_int hlm_inventory_ctrl_file = 'unset' hlm_hist_level_dynam = unset_int @@ -2040,6 +2071,26 @@ subroutine set_fates_ctrlparms(tag,ival,rval,cval) write(fates_log(),*) 'Transfering hlm_use_sp= ',ival,' to FATES' end if + ! [PORTED by Hui Tang: NVP control flag cases] + case('use_nvp') + hlm_use_nvp = ival + if (fates_global_verbose()) then + write(fates_log(),*) 'Transfering hlm_use_nvp= ',ival,' to FATES' + end if + + case('use_nvp_undersnow') + hlm_use_nvp_undersnow = ival + if (fates_global_verbose()) then + write(fates_log(),*) 'Transfering hlm_use_nvp_undersnow= ',ival,' to FATES' + end if + + ! [PORTED by Hui Tang: NVP radiation model switch] + case('nvp_rad_model_ground') + hlm_nvp_rad_model_ground = ival + if (fates_global_verbose()) then + write(fates_log(),*) 'Transfering hlm_nvp_rad_model_ground= ',ival,' to FATES' + end if + case('use_planthydro') hlm_use_planthydro = ival if (fates_global_verbose()) then diff --git a/main/FatesInterfaceTypesMod.F90 b/main/FatesInterfaceTypesMod.F90 index 8f97353d7f..a64c074a8b 100644 --- a/main/FatesInterfaceTypesMod.F90 +++ b/main/FatesInterfaceTypesMod.F90 @@ -216,7 +216,12 @@ module FatesInterfaceTypesMod integer, public :: hlm_use_sp ! Flag to use FATES satellite phenology (LAI) mode ! 1 = TRUE, 0 = FALSE - + ! [PORTED by Hui Tang: NVP (moss/lichen) control flags passed from HLM] + integer, public :: hlm_use_nvp ! Master NVP on/off flag (1=on, 0=off) + integer, public :: hlm_use_nvp_undersnow ! NVP under-snow mode (0=off, 1=on) + integer, public :: hlm_nvp_rad_model_ground ! NVP radiation model: 1=Approach A (ground boundary), 0=Approach B (leaf layer) + + ! Flag specifying what types of history fields to allocate and prepare ! The "_dynam" refers to history fields that can be updated on the dynamics (daily) step ! THe "_hifrq" refers to history fields that can be updated on the model (high-frequency) step @@ -432,11 +437,19 @@ module FatesInterfaceTypesMod ! --------------------------------------------------------------------------------- ! Downwelling direct beam radiation (patch,radiation-band) [W/m2] - real(r8), allocatable :: solad_parb(:,:) + real(r8), allocatable :: solad_parb(:,:) ! Downwelling diffuse (I-ndirect) radiation (patch,radiation-band) [W/m2] real(r8), allocatable :: solai_parb(:,:) + ! [PORTED by Hui Tang: visible flux at NVP level for NVP photosynthesis PAR] + ! Incident direct visible flux at bottom of snowpack (per patch) [-] + ! Set to zero when NVP is not active. One-timestep lag (from previous SurfaceRadiation). + real(r8), allocatable :: flx_absdv(:) + + ! Incident diffuse visible flux at bottom of snowpack (per patch) [-] + real(r8), allocatable :: flx_absiv(:) + ! Nutrient input fluxes (these are integrated fluxes over the day, most ! likely calculated over shorter dynamics steps, @@ -488,7 +501,15 @@ module FatesInterfaceTypesMod ! vegetation temperature (Kelvin) real(r8), allocatable :: t_veg_pa(:) - + + ! [PORTED by Hui Tang: NVP (moss/lichen) surface temperature per patch (K)] + ! Set from t_nvp_col in wrap_photo; used in photosynthesis temperature scaling for NVP. + real(r8), allocatable :: t_nvp_pa(:) + + ! [PORTED by Hui Tang: NVP (moss/lichen) wet fraction per patch (0-1)] + ! Set from fwet_nvp_col in wrap_photo; used for Porada 2013 fwet-based vcmax scaling. + real(r8), allocatable :: fwet_nvp_pa(:) + ! air temperature at agcm reference height (kelvin) real(r8), allocatable :: tgcm_pa(:) @@ -670,6 +691,29 @@ module FatesInterfaceTypesMod ! Down diffuse flux below canopy per unit diffuse flx (HLMs use this for balance checks) real(r8), allocatable :: ftii_parb(:,:) + ! [PORTED by Hui Tang: NVP (moss/lichen) radiation absorbed fractions (hlm_use_mosslichen Norman call)] + ! Separate from fabd_parb/fabi_parb (vascular call) so both coexist per patch. + ! Per patch, per SW band; fraction of TOA incident solar absorbed by the NVP layer. + ! Accounts for snow attenuation when snow is present (via bc_in%flx_absdv/flx_absiv). + ! Used by CLM SurfaceRadiationMod to populate sabg_lyr(p,0). + real(r8), allocatable :: fabd_nvp_pa(:,:) ! direct solar absorbed by NVP (patch,numrad) [-] + real(r8), allocatable :: fabi_nvp_pa(:,:) ! diffuse solar absorbed by NVP (patch,numrad) [-] + + ! [PORTED by Hui Tang: NVP layer geometry at patch level (from cohort aggregation)] + ! nvp_dz_pa: mean NVP layer thickness where NVP is present [m] + ! nvp_frac_pa: fractional coverage of NVP within the patch [0-1] + ! Together, nvp_frac_pa * nvp_dz_pa gives the column-effective NVP depth, + ! analogous to frac_sno * snow_depth for the layer-activation threshold. + real(r8), allocatable :: nvp_dz_pa(:) ! NVP layer thickness where present (patch) [m] + real(r8), allocatable :: nvp_frac_pa(:) ! NVP fractional coverage of patch [0-1] + ! [PORTED by Hui Tang: area-weighted mean NVP LAI for Beer's law radiation] + ! Computed in EDCanopyStructureMod alongside nvp_dz_pa; used in FatesRadiationDriveMod + ! to evaluate exp(-k*LAI) without requiring a cohort walk in the radiation routine. + real(r8), allocatable :: lai_nvp_pa(:) ! area-weighted mean NVP LAI [m2 leaf/m2 crown] + ! [PORTED by Hui Tang: NVP single-scatter albedo for SNICAR layer-0 integration] + ! omega(ib) = rhol(nvp_ft,ib) + taul(nvp_ft,ib); set in FatesRadiationDriveMod after + ! nvp_ft lookup; transferred to surfalb_inst%nvp_omega_*_col in wrap_canopy_radiation. + real(r8), allocatable :: nvp_omega_pa(:,:) ! NVP single-scatter albedo (patch, numrad) [-] ! Mass fluxes to BGC from fragmentation of litter into decomposing pools diff --git a/main/FatesRestartInterfaceMod.F90 b/main/FatesRestartInterfaceMod.F90 index d1ce7689eb..2e944fc531 100644 --- a/main/FatesRestartInterfaceMod.F90 +++ b/main/FatesRestartInterfaceMod.F90 @@ -162,6 +162,7 @@ module FatesRestartInterfaceMod integer :: ir_c_area_co integer :: ir_treelai_co integer :: ir_treesai_co + integer :: ir_nvp_dz_co ! [PORTED by Hui Tang: NVP layer thickness restart index] integer :: ir_canopy_layer_tlai_pa integer :: ir_nclp_pa @@ -1259,7 +1260,12 @@ subroutine define_restart_vars(this, initialize_variables) long_name='stem area index of fates cohort', & units='m2/m2', flushval = flushzero, & hlms='CLM:ALM', initialize=initialize_variables, ivar=ivar, index = ir_treesai_co ) - + ! [PORTED by Hui Tang: NVP layer thickness restart variable] + call this%set_restart_var(vname='fates_cohort_nvp_dz', vtype=cohort_r8, & + long_name='NVP (moss/lichen) layer thickness for cohort', & + units='m', flushval = flushzero, & + hlms='CLM:ALM', initialize=initialize_variables, ivar=ivar, index = ir_nvp_dz_co ) + if(hlm_use_sp .eq. itrue)then call this%set_restart_var(vname='fates_canopy_layer_tlai_pa', vtype=cohort_r8, & long_name='total patch level leaf area index of each fates canopy layer', & @@ -2762,6 +2768,7 @@ subroutine set_restart_vectors(this,nc,nsites,sites) this%rvars(ir_c_area_co)%r81d(io_idx_co) = ccohort%c_area this%rvars(ir_treelai_co)%r81d(io_idx_co) = ccohort%treelai this%rvars(ir_treesai_co)%r81d(io_idx_co) = ccohort%treesai + this%rvars(ir_nvp_dz_co)%r81d(io_idx_co) = ccohort%nvp_dz ! [PORTED by Hui Tang: NVP layer thickness] if ( debug ) then write(fates_log(),*) 'CLTV offsetNumCohorts II ',io_idx_co, & @@ -3808,6 +3815,7 @@ subroutine get_restart_vectors(this, nc, nsites, sites) ccohort%c_area = this%rvars(ir_c_area_co)%r81d(io_idx_co) ccohort%treelai = this%rvars(ir_treelai_co)%r81d(io_idx_co) ccohort%treesai = this%rvars(ir_treesai_co)%r81d(io_idx_co) + ccohort%nvp_dz = this%rvars(ir_nvp_dz_co)%r81d(io_idx_co) ! [PORTED by Hui Tang: NVP layer thickness] io_idx_co = io_idx_co + 1 diff --git a/parameter_files/fates_params_default.json b/parameter_files/fates_params_default.json index fbdba0c78b..2f5c3f4596 100644 --- a/parameter_files/fates_params_default.json +++ b/parameter_files/fates_params_default.json @@ -12,7 +12,7 @@ "fates_landuseclass": 5, "fates_leafage_class": 1, "fates_litterclass": 6, - "fates_pft": 14, + "fates_pft": 15, "fates_plant_organs": 4 }, "parameters": { @@ -70,7 +70,7 @@ "dims": ["fates_pft"], "long_name": "Description of plant type", "units": "unitless - string", - "data": ["broadleaf_evergreen_tropical_tree", "needleleaf_evergreen_extratrop_tree", "needleleaf_colddecid_extratrop_tree", "broadleaf_evergreen_extratrop_tree", "broadleaf_hydrodecid_tropical_tree", "broadleaf_colddecid_extratrop_tree", "broadleaf_evergreen_extratrop_shrub", "broadleaf_hydrodecid_extratrop_shrub", "broadleaf_colddecid_extratrop_shrub", "broadleaf_evergreen_arctic_shrub", "broadleaf_colddecid_arctic_shrub", "arctic_c3_grass", "cool_c3_grass", "c4_grass"] + "data": ["broadleaf_evergreen_tropical_tree", "needleleaf_evergreen_extratrop_tree", "needleleaf_colddecid_extratrop_tree", "broadleaf_evergreen_extratrop_tree", "broadleaf_hydrodecid_tropical_tree", "broadleaf_colddecid_extratrop_tree", "broadleaf_evergreen_extratrop_shrub", "broadleaf_hydrodecid_extratrop_shrub", "broadleaf_colddecid_extratrop_shrub", "broadleaf_evergreen_arctic_shrub", "broadleaf_colddecid_arctic_shrub", "arctic_c3_grass", "cool_c3_grass", "c4_grass", "non_vascular_phototroph"] }, "fates_hydro_organ_name": { "dtype": "string", @@ -105,1477 +105,1477 @@ "dims": ["fates_plant_organs", "fates_pft"], "long_name": "Priority level for allocation, 1 replaces turnover from storage, 2 same priority as storage use/replacement, 3 ascending in order of least importance", "units": "index", - "data": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]] + "data": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]] }, "fates_alloc_storage_cushion": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum size of storage C pool, relative to maximum size of leaf C pool", "units": "fraction", - "data": [1.2, 1.2, 1.2, 1.2, 2.4, 1.2, 1.2, 2.4, 1.2, 1.5, 1.4, 1.2, 1.2, 1.2] + "data": [1.2, 1.2, 1.2, 1.2, 2.4, 1.2, 1.2, 2.4, 1.2, 1.5, 1.4, 1.2, 1.2, 1.2, 1.2] }, "fates_alloc_store_priority_frac": { "dtype": "float", "dims": ["fates_pft"], "long_name": "for high-priority organs, the fraction of their turnover demand that is gauranteed to be replaced, and if need-be by storage", "units": "unitless", - "data": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.7, 0.6, 0.6, 0.8, 0.8] + "data": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.7, 0.6, 0.6, 0.8, 0.8, 0.6] }, "fates_allom_agb1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 1 for agb allometry", "units": "variable", - "data": [0.0673, 0.1364012, 0.0393057, 0.2653695, 0.0673, 0.0728698, 0.06896, 0.06896, 0.06896, 0.06896, 0.06896, 0.001, 0.001, 0.003] + "data": [0.0673, 0.1364012, 0.0393057, 0.2653695, 0.0673, 0.0728698, 0.06896, 0.06896, 0.06896, 0.06896, 0.06896, 0.001, 0.001, 0.003, 0.001] }, "fates_allom_agb2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 2 for agb allometry", "units": "variable", - "data": [0.976, 0.9449041, 1.087335, 0.8321321, 0.976, 1.0373211, 0.572, 0.572, 0.572, 0.5289883, 0.6853945, 1.6592, 1.6592, 1.3456] + "data": [0.976, 0.9449041, 1.087335, 0.8321321, 0.976, 1.0373211, 0.572, 0.572, 0.572, 0.5289883, 0.6853945, 1.6592, 1.6592, 1.3456, 1.6592] }, "fates_allom_agb3": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 3 for agb allometry", "units": "variable", - "data": [1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 2.1010352, 1.7628613, 1.248, 1.248, 1.869] + "data": [1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 2.1010352, 1.7628613, 1.248, 1.248, 1.869, 1.248] }, "fates_allom_agb4": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 4 for agb allometry", "units": "variable", - "data": [0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, -999.9, -999.9, -999.9] + "data": [0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, -999.9, -999.9, -999.9, -999.9] }, "fates_allom_agb_frac": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Fraction of woody biomass that is above ground", "units": "fraction", - "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1.0, 1.0, 1.0] + "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1.0, 1.0, 1.0, 1.0] }, "fates_allom_amode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "AGB allometry function index.", "units": "index", - "data": [3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 5, 5, 5] + "data": [3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 5, 5, 5, 5] }, "fates_allom_blca_expnt_diff": { "dtype": "float", "dims": ["fates_pft"], "long_name": "difference between allometric DBH bleaf and DBH crown area exponents", "units": "unitless", - "data": [-0.12, -0.34, -0.32, -0.22, -0.12, -0.35, 0.0, 0.0, 0.0, 0.0, 0.0, -0.487, -0.487, -0.259] + "data": [-0.12, -0.34, -0.32, -0.22, -0.12, -0.35, 0.0, 0.0, 0.0, 0.0, 0.0, -0.487, -0.487, -0.259, -0.487] }, "fates_allom_cmode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "coarse root biomass allometry function index.", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, "fates_allom_d2bl1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 1 for d2bl allometry", "units": "variable", - "data": [0.04, 0.07, 0.07, 0.01, 0.04, 0.07, 0.07, 0.07, 0.07, 0.0481934, 0.0481934, 0.0004, 0.0004, 0.0012] + "data": [0.04, 0.07, 0.07, 0.01, 0.04, 0.07, 0.07, 0.07, 0.07, 0.0481934, 0.0481934, 0.0004, 0.0004, 0.0012, 0.0004] }, "fates_allom_d2bl2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 2 for d2bl allometry", "units": "variable", - "data": [1.6019679, 1.5234373, 1.3051237, 1.9621397, 1.6019679, 1.3998939, 1.3, 1.3, 1.3, 1.0600586, 1.7176758, 1.7092, 1.7092, 1.5879] + "data": [1.6019679, 1.5234373, 1.3051237, 1.9621397, 1.6019679, 1.3998939, 1.3, 1.3, 1.3, 1.0600586, 1.7176758, 1.7092, 1.7092, 1.5879, 1.7092] }, "fates_allom_d2bl3": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 3 for d2bl allometry", "units": "unitless", - "data": [0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.3417, 0.3417, 0.9948] + "data": [0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.3417, 0.3417, 0.9948, 0.3417] }, "fates_allom_d2ca_coefficient_max": { "dtype": "float", "dims": ["fates_pft"], "long_name": "max (savanna) dbh to area multiplier factor where area n*d2ca_coeff*dbh^beta", "units": "m2 cm^(-1/beta)", - "data": [0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.4363427, 0.3166497, 0.0408, 0.0408, 0.0862] + "data": [0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.4363427, 0.3166497, 0.0408, 0.0408, 0.0862, 0.0408] }, "fates_allom_d2ca_coefficient_min": { "dtype": "float", "dims": ["fates_pft"], "long_name": "min (forest) dbh to area multiplier factor where area n*d2ca_coeff*dbh^beta", "units": "m2 cm^(-1/beta)", - "data": [0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.4363427, 0.3166497, 0.0408, 0.0408, 0.0862] + "data": [0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.4363427, 0.3166497, 0.0408, 0.0408, 0.0862, 0.0408] }, "fates_allom_d2h1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 1 for d2h allometry (intercept, or c)", "units": "variable", - "data": [78.4087704, 306.842667, 106.8745821, 104.3586841, 78.4087704, 31.4557047, 0.64, 0.64, 0.64, 0.8165625, 0.778125, 0.1812, 0.1812, 0.3353] + "data": [78.4087704, 306.842667, 106.8745821, 104.3586841, 78.4087704, 31.4557047, 0.64, 0.64, 0.64, 0.8165625, 0.778125, 0.1812, 0.1812, 0.3353, 0.1812] }, "fates_allom_d2h2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 2 for d2h allometry (slope, or m)", "units": "variable", - "data": [0.8124383, 0.752377, 0.9471302, 1.1146973, 0.8124383, 0.9734088, 0.37, 0.37, 0.37, 0.2316113, 0.4027002, 0.6384, 0.6384, 0.4235] + "data": [0.8124383, 0.752377, 0.9471302, 1.1146973, 0.8124383, 0.9734088, 0.37, 0.37, 0.37, 0.2316113, 0.4027002, 0.6384, 0.6384, 0.4235, 0.6384] }, "fates_allom_d2h3": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 3 for d2h allometry (optional)", "units": "variable", - "data": [47.6666164, 196.6865691, 93.9790461, 160.6835089, 47.6666164, 16.5928174, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9] + "data": [47.6666164, 196.6865691, 93.9790461, 160.6835089, 47.6666164, 16.5928174, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9] }, "fates_allom_dbh_maxheight": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the diameter (if any) corresponding to maximum height, diameters may increase beyond this", "units": "cm", - "data": [1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 3.0, 3.0, 2.0, 2.4, 1.9, 20.0, 20.0, 30.0] + "data": [1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 3.0, 3.0, 2.0, 2.4, 1.9, 20.0, 20.0, 30.0, 20.0] }, "fates_allom_dmode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "crown depth allometry function index", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, "fates_allom_fmode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "fine root biomass allometry function index.", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, "fates_allom_fnrt_prof_a": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Fine root profile function, parameter a", "units": "unitless", - "data": [7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 7.0, 7.0, 7.0, 7.0, 7.0, 11.0, 11.0, 11.0] + "data": [7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 7.0, 7.0, 7.0, 7.0, 7.0, 11.0, 11.0, 11.0, 11.0] }, "fates_allom_fnrt_prof_b": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Fine root profile function, parameter b", "units": "unitless", - "data": [1.0, 2.0, 2.0, 1.0, 2.0, 2.0, 1.5, 1.5, 1.5, 1.5, 1.5, 2.0, 2.0, 2.0] + "data": [1.0, 2.0, 2.0, 1.0, 2.0, 2.0, 1.5, 1.5, 1.5, 1.5, 1.5, 2.0, 2.0, 2.0, 2.0] }, "fates_allom_fnrt_prof_mode": { "dtype": "integer", "dims": ["fates_pft"], - "long_name": "Index to select fine root profile function 1) Jackson Beta, 2) 1-param exponential 3) 2-param exponential", + "long_name": "Index to select fine root profile function 1) Jackson Beta, 2) 1-param exponential 3) 2-param exponential 4) no roots (NVP)", "units": "index", - "data": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] + "data": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4] }, "fates_allom_frbstor_repro": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of bstore goes to reproduction after plant dies", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_allom_h2cd1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 1 for h2cd allometry (exp(log-intercept) or scaling). If allom_dmode1 this is the same as former crown_depth_frac parameter", "units": "variable", - "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.95, 0.95, 0.95, 0.95, 0.95, 1.0, 1.0, 1.0] + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.95, 0.95, 0.95, 0.95, 0.95, 1.0, 1.0, 1.0, 1.0] }, "fates_allom_h2cd2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Parameter 2 for h2cd allometry (log-slope or exponent). If allom_dmode1 this is not needed (as exponent is assumed 1)", "units": "variable", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_allom_hmode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "height allometry function index.", "units": "index", - "data": [5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 3, 3, 3] + "data": [5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 3, 3, 3, 3] }, "fates_allom_l2fr": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Allocation parameter fine root C per leaf C", "units": "gC/gC", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.67, 0.67, 1.41] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.67, 0.67, 1.41, 0.67] }, "fates_allom_la_per_sa_int": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf area per sapwood area, intercept", "units": "m2/cm2", - "data": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8] + "data": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8] }, "fates_allom_la_per_sa_slp": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf area per sapwood area rate of change with height, slope (optional)", "units": "m2/cm2/m", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_allom_lmode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "leaf biomass allometry function index.", "units": "index", - "data": [2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 5, 5, 5] + "data": [2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 5, 5, 5, 5] }, "fates_allom_sai_scaler": { "dtype": "float", "dims": ["fates_pft"], "long_name": "allometric ratio of SAI per LAI", "units": "m2/m2", - "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] }, "fates_allom_smode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "sapwood allometry function index.", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2] }, "fates_allom_stmode": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "storage allometry function index 1) Storage proportional to leaf biomass (with trimming), 2) Storage proportional to maximum leaf biomass (not trimmed)", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, "fates_allom_zroot_k": { "dtype": "float", "dims": ["fates_pft"], "long_name": "scale coefficient of logistic rooting depth model", "units": "unitless", - "data": [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0] + "data": [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0] }, "fates_allom_zroot_max_dbh": { "dtype": "float", "dims": ["fates_pft"], "long_name": "dbh at which a plant reaches the maximum value for its maximum rooting depth", "units": "cm", - "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] }, "fates_allom_zroot_max_z": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the maximum rooting depth defined at dbh fates_allom_zroot_max_dbh. note max_zmin_zlarge, sets rooting depth to soil depth", "units": "m", - "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] }, "fates_allom_zroot_min_dbh": { "dtype": "float", "dims": ["fates_pft"], "long_name": "dbh at which the maximum rooting depth for a recruit is defined", "units": "cm", - "data": [1.0, 1.0, 1.0, 2.5, 2.5, 2.5, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + "data": [1.0, 1.0, 1.0, 2.5, 2.5, 2.5, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] }, "fates_allom_zroot_min_z": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the maximum rooting depth defined at dbh fates_allom_zroot_min_dbh. note max_zmin_zlarge, sets rooting depth to soil depth", "units": "m", - "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] }, "fates_c2b": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Carbon to biomass multiplier of bulk structural tissues", "units": "ratio", - "data": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + "data": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] }, "fates_cnp_eca_alpha_ptase": { "dtype": "float", "dims": ["fates_pft"], "long_name": "(INACTIVE, KEEP AT 0) fraction of P from ptase activity sent directly to plant (ECA)", "units": "g/m3", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_cnp_eca_decompmicc": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum soil microbial decomposer biomass found over depth (will be applied at a reference depth w/ exponential attenuation) (ECA)", "units": "gC/m3", - "data": [280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0] + "data": [280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0] }, "fates_cnp_eca_km_nh4": { "dtype": "float", "dims": ["fates_pft"], "long_name": "half-saturation constant for plant nh4 uptake (ECA)", "units": "gN/m3", - "data": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14] + "data": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14] }, "fates_cnp_eca_km_no3": { "dtype": "float", "dims": ["fates_pft"], "long_name": "half-saturation constant for plant no3 uptake (ECA)", "units": "gN/m3", - "data": [0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27] + "data": [0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27] }, "fates_cnp_eca_km_p": { "dtype": "float", "dims": ["fates_pft"], "long_name": "half-saturation constant for plant p uptake (ECA)", "units": "gP/m3", - "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] }, "fates_cnp_eca_km_ptase": { "dtype": "float", "dims": ["fates_pft"], "long_name": "half-saturation constant for biochemical P (ECA)", "units": "gP/m3", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_cnp_eca_lambda_ptase": { "dtype": "float", "dims": ["fates_pft"], "long_name": "(INACTIVE, KEEP AT 0) critical value for biochemical production (ECA)", "units": "g/m3", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_cnp_eca_vmax_ptase": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum production rate for biochemical P (per m2) (ECA)", "units": "gP/m2/s", - "data": [5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09] + "data": [5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09] }, "fates_cnp_nfix1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fractional surcharge added to maintenance respiration that drives symbiotic fixation", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_cnp_nitr_store_ratio": { "dtype": "float", "dims": ["fates_pft"], "long_name": "storeable (labile) N, as a ratio compared to the N bound in cell structures of other organs (see code)", "units": "(gN/gN)", - "data": [1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] + "data": [1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] }, "fates_cnp_phos_store_ratio": { "dtype": "float", "dims": ["fates_pft"], "long_name": "storeable (labile) P, as a ratio compared to the P bound in cell structures of other organs (see code)", "units": "(gP/gP)", - "data": [1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] + "data": [1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] }, "fates_cnp_pid_kd": { "dtype": "float", "dims": ["fates_pft"], "long_name": "derivative constant of the PID controller on adaptive fine-root biomass", "units": "unknown", - "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] }, "fates_cnp_pid_ki": { "dtype": "float", "dims": ["fates_pft"], "long_name": "integral constant of the PID controller on adaptive fine-root biomass", "units": "unknown", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_cnp_pid_kp": { "dtype": "float", "dims": ["fates_pft"], "long_name": "proportional constant of the PID controller on adaptive fine-root biomass", "units": "unknown", - "data": [0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005] + "data": [0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005] }, "fates_cnp_prescribed_nuptake": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Prescribed N uptake flux. 0fully coupled simulation >0prescribed (experimental)", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_cnp_prescribed_puptake": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Prescribed P uptake flux. 0fully coupled simulation, >0prescribed (experimental)", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_cnp_store_ovrflw_frac": { "dtype": "float", "dims": ["fates_pft"], "long_name": "size of overflow storage (for excess C,N or P) as a fraction of storage target", "units": "fraction", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_cnp_turnover_nitr_retrans": { "dtype": "float", "dims": ["fates_plant_organs", "fates_pft"], "long_name": "retranslocation (reabsorbtion) fraction of nitrogen in turnover of scenescing tissues", "units": "fraction", - "data": [[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25],[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] + "data": [[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] }, "fates_cnp_turnover_phos_retrans": { "dtype": "float", "dims": ["fates_plant_organs", "fates_pft"], "long_name": "retranslocation (reabsorbtion) fraction of phosphorus in turnover of scenescing tissues", "units": "fraction", - "data": [[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25],[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] + "data": [[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] }, "fates_cnp_vmax_nh4": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum (potential) uptake rate of NH4 per gC of fineroot biomass (see main/EDPftvarcon.F90 vmax_nh4 for usage)", "units": "gN/gC/s", - "data": [2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09] + "data": [2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09] }, "fates_cnp_vmax_no3": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum (potential) uptake rate of NO3 per gC of fineroot biomass (see main/EDPftvarcon.F90 vmax_no3 for usage)", "units": "gN/gC/s", - "data": [2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09] + "data": [2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09] }, "fates_cnp_vmax_p": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum production rate for phosphorus (ECA and RD)", "units": "gP/gC/s", - "data": [5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10] + "data": [5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10] }, "fates_damage_frac": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of cohort damaged in each damage event (event frequency specified in the is_it_damage_time subroutine)", "units": "fraction", - "data": [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + "data": [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] }, "fates_damage_mort_p1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "inflection point of damage mortality function, a value of 0.8 means 50% mortality with 80% loss of crown, turn off with a large number", "units": "fraction", - "data": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0] + "data": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0] }, "fates_damage_mort_p2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "rate of mortality increase with damage", "units": "unitless", - "data": [5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5] + "data": [5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5] }, "fates_damage_recovery_scalar": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of the cohort that recovers from damage", "units": "unitless", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_dev_arbitrary_pft": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Unassociated pft dimensioned free parameter that developers can use for testing arbitrary new hypotheses", "units": "unknown", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_fire_alpha_SH": { "dtype": "float", "dims": ["fates_pft"], "long_name": "spitfire parameter, alpha scorch height, Equation 16 Thonicke et al 2010", "units": "m / (kw/m)**(2/3)", - "data": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2] + "data": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2] }, "fates_fire_bark_scaler": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the thickness of a cohorts bark as a fraction of its dbh", "units": "fraction", - "data": [0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07] + "data": [0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07] }, "fates_fire_crown_kill": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fire parameter, see equation 22 in Thonicke et al 2010", "units": "NA", - "data": [0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775] + "data": [0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775] }, "fates_frag_fnrt_fcel": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Fine root litter cellulose fraction", "units": "fraction", - "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] }, "fates_frag_fnrt_flab": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Fine root litter labile fraction", "units": "fraction", - "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] }, "fates_frag_fnrt_flig": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Fine root litter lignin fraction", "units": "fraction", - "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] }, "fates_frag_leaf_fcel": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf litter cellulose fraction", "units": "fraction", - "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] }, "fates_frag_leaf_flab": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf litter labile fraction", "units": "fraction", - "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] }, "fates_frag_leaf_flig": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf litter lignin fraction", "units": "fraction", - "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] }, "fates_frag_seed_decay_rate": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of seeds that decay per year", "units": "yr-1", - "data": [0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.74, 0.46, 0.35, 0.51, 0.51] + "data": [0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.74, 0.46, 0.35, 0.51, 0.51, 0.35] }, "fates_grperc": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Growth respiration factor", "units": "unitless", - "data": [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.12, 0.11, 0.16, 0.11, 0.11] + "data": [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.12, 0.11, 0.16, 0.11, 0.11, 0.16] }, "fates_hydro_avuln_gs": { "dtype": "float", "dims": ["fates_pft"], "long_name": "shape parameter for stomatal control of water vapor exiting leaf", "units": "unitless", - "data": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] + "data": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] }, "fates_hydro_avuln_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "xylem vulnerability curve shape parameter", "units": "unitless", - "data": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]] + "data": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]] }, "fates_hydro_epsil_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "bulk elastic modulus", "units": "MPa", - "data": [[12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0],[10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0],[10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0],[8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0]] + "data": [[12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0], [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0], [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0], [8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0]] }, "fates_hydro_fcap_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "fraction of non-residual water that is capillary in source", "units": "unitless", - "data": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08],[0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] + "data": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] }, "fates_hydro_k_lwp": { "dtype": "float", "dims": ["fates_pft"], "long_name": "inner leaf humidity scaling coefficient", "units": "unitless", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_hydro_kmax_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "maximum xylem conductivity per unit conducting xylem area", "units": "kg/MPa/m/s", - "data": [[-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0],[3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0],[-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0],[-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0]] + "data": [[-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0], [3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], [-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0], [-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0]] }, "fates_hydro_p50_gs": { "dtype": "float", "dims": ["fates_pft"], "long_name": "water potential at 50% loss of stomatal conductance", "units": "MPa", - "data": [-1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5] + "data": [-1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5] }, "fates_hydro_p50_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "xylem water potential at 50% loss of conductivity", "units": "MPa", - "data": [[-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25],[-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25],[-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25],[-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25]] + "data": [[-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25], [-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25], [-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25], [-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25]] }, "fates_hydro_p_taper": { "dtype": "float", "dims": ["fates_pft"], "long_name": "xylem taper exponent", "units": "unitless", - "data": [0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333] + "data": [0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333] }, "fates_hydro_pinot_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "osmotic potential at full turgor", "units": "MPa", - "data": [[-1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984],[-1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807],[-1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807],[-1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478]] + "data": [[-1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984], [-1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807], [-1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807], [-1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478]] }, "fates_hydro_pitlp_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "turgor loss point", "units": "MPa", - "data": [[-1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67],[-1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4],[-1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4],[-1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2]] + "data": [[-1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67], [-1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4], [-1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4], [-1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2]] }, "fates_hydro_resid_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "residual water conent", "units": "cm3/cm3", - "data": [[0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16],[0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21],[0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21],[0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]] + "data": [[0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16], [0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21], [0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21], [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]] }, "fates_hydro_rfrac_stem": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of total tree resistance from troot to canopy", "units": "fraction", - "data": [0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625] + "data": [0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625] }, "fates_hydro_rs2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "absorbing root radius", "units": "m", - "data": [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001] + "data": [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001] }, "fates_hydro_srl": { "dtype": "float", "dims": ["fates_pft"], "long_name": "specific root length", "units": "m g-1", - "data": [25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0] + "data": [25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0] }, "fates_hydro_thetas_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "saturated water content", "units": "cm3/cm3", - "data": [[0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65],[0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65],[0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65],[0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75]] + "data": [[0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65], [0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65], [0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65], [0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75]] }, "fates_hydro_vg_alpha_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "(used if hydr_htftype_node 2), capillary length parameter in van Genuchten model", "units": "MPa-1", - "data": [[0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12],[0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12],[0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12],[0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]] + "data": [[0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12], [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12], [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12], [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]] }, "fates_hydro_vg_m_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "(used if hydr_htftype_node 2),m in van Genuchten 1980 model, 2nd pore size distribution parameter", "units": "unitless", - "data": [[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]] + "data": [[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]] }, "fates_hydro_vg_n_node": { "dtype": "float", "dims": ["fates_hydr_organs", "fates_pft"], "long_name": "(used if hydr_htftype_node 2),n in van Genuchten 1980 model, pore size distribution parameter", "units": "unitless", - "data": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]] + "data": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]] }, "fates_landuse_grazing_palatability": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Relative intensity of leaf grazing/browsing per PFT", "units": "unitless 0-1", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] }, "fates_landuse_harvest_pprod10": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of harvest wood product that goes to 10-year product pool (remainder goes to 100-year pool)", "units": "fraction", - "data": [1.0, 0.75, 0.75, 0.75, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 0.75, 0.75, 0.75, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_landuse_luc_frac_burned": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of land use change-generated and not-exported material that is burned (the remainder goes to litter)", "units": "fraction", - "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] }, "fates_landuse_luc_frac_exported": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of land use change-generated wood material that is exported to wood product (the remainder is either burned or goes to litter)", "units": "fraction", - "data": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.0, 0.0, 0.0] + "data": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0] }, "fates_landuse_luc_pprod10": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of land use change wood product that goes to 10-year product pool (remainder goes to 100-year pool)", "units": "fraction", - "data": [1.0, 0.75, 0.75, 0.75, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 0.75, 0.75, 0.75, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_leaf_agross_btran_model": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "model switch for how gross assimilation affects conductance. See LeafBiophysicsMod.F90, integer constants btran_on_", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, "fates_leaf_c3psn": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "Photosynthetic pathway (1c3, 0c4)", "units": "flag", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1] }, "fates_leaf_fnps": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of light absorbed by non-photosynthetic pigments", "units": "fraction", - "data": [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15] + "data": [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15] }, "fates_leaf_jmaxha": { "dtype": "float", "dims": ["fates_pft"], "long_name": "activation energy for jmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", "units": "J/mol", - "data": [43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0] + "data": [43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0] }, "fates_leaf_jmaxhd": { "dtype": "float", "dims": ["fates_pft"], "long_name": "deactivation energy for jmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", "units": "J/mol", - "data": [152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0] + "data": [152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0] }, "fates_leaf_jmaxse": { "dtype": "float", "dims": ["fates_pft"], "long_name": "entropy term for jmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", "units": "J/mol/K", - "data": [495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0] + "data": [495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0] }, "fates_leaf_slamax": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Maximum Specific Leaf Area (SLA), even if under a dense canopy", "units": "m^2/gC", - "data": [0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.012, 0.03, 0.03, 0.012, 0.032, 0.05, 0.05, 0.05] + "data": [0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.012, 0.03, 0.03, 0.012, 0.032, 0.05, 0.05, 0.05, 0.05] }, "fates_leaf_slatop": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Specific Leaf Area (SLA) at top of canopy, projected area basis", "units": "m^2/gC", - "data": [0.012, 0.005, 0.024, 0.009, 0.03, 0.03, 0.012, 0.03, 0.03, 0.01, 0.032, 0.027, 0.05, 0.05] + "data": [0.012, 0.005, 0.024, 0.009, 0.03, 0.03, 0.012, 0.03, 0.03, 0.01, 0.032, 0.027, 0.05, 0.05, 0.027] }, "fates_leaf_stomatal_btran_model": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "model switch for how btran affects conductance. See LeafBiophysicsMod.F90, integer constants btran_on_", "units": "index", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }, "fates_leaf_stomatal_intercept": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Minimum unstressed stomatal conductance for Ball-Berry model and Medlyn model", "units": "umol H2O/m**2/s", - "data": [10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 40000.0] + "data": [10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 40000.0, 0.0] }, "fates_leaf_stomatal_slope_ballberry": { "dtype": "float", "dims": ["fates_pft"], "long_name": "stomatal slope parameter, as per Ball-Berry", "units": "unitless", - "data": [8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0] + "data": [8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 0.0] }, "fates_leaf_stomatal_slope_medlyn": { "dtype": "float", "dims": ["fates_pft"], "long_name": "stomatal slope parameter, as per Medlyn", "units": "KPa**0.5", - "data": [4.1, 2.3, 2.3, 4.1, 4.4, 4.4, 4.7, 4.7, 4.7, 4.7, 4.7, 2.2, 5.3, 1.6] + "data": [4.1, 2.3, 2.3, 4.1, 4.4, 4.4, 4.7, 4.7, 4.7, 4.7, 4.7, 2.2, 5.3, 1.6, 0.0] }, "fates_leaf_vcmax25top": { "dtype": "float", "dims": ["fates_leafage_class", "fates_pft"], "long_name": "maximum carboxylation rate of Rub. at 25C, canopy top", "units": "umol CO2/m^2/s", - "data": [[50.0, 62.0, 39.0, 61.0, 58.0, 58.0, 62.0, 54.0, 54.0, 38.0, 54.0, 86.0, 78.0, 78.0]] + "data": [[50.0, 62.0, 39.0, 61.0, 58.0, 58.0, 62.0, 54.0, 54.0, 38.0, 54.0, 86.0, 78.0, 78.0, 30.0]] }, "fates_leaf_vcmaxha": { "dtype": "float", "dims": ["fates_pft"], "long_name": "activation energy for vcmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", "units": "J/mol", - "data": [65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0] + "data": [65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0] }, "fates_leaf_vcmaxhd": { "dtype": "float", "dims": ["fates_pft"], "long_name": "deactivation energy for vcmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", "units": "J/mol", - "data": [149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0] + "data": [149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0] }, "fates_leaf_vcmaxse": { "dtype": "float", "dims": ["fates_pft"], "long_name": "entropy term for vcmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", "units": "J/mol/K", - "data": [485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0] + "data": [485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0] }, "fates_leafn_vert_scaler_coeff1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Coefficient one for decrease in leaf nitrogen through the canopy, from Lloyd et al. 2010.", "units": "unitless", - "data": [0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963] + "data": [0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963] }, "fates_leafn_vert_scaler_coeff2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Coefficient two for decrease in leaf nitrogen through the canopy, from Lloyd et al. 2010.", "units": "unitless", - "data": [2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43] + "data": [2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43] }, "fates_maintresp_leaf_atkin2017_baserate": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf maintenance respiration base rate parameter (r0) per Atkin et al 2017", "units": "umol CO2/m^2/s", - "data": [1.756, 1.4995, 1.4995, 1.756, 1.756, 1.756, 2.0749, 2.0749, 2.0749, 2.0749, 2.0749, 2.1956, 2.1956, 2.1956] + "data": [1.756, 1.4995, 1.4995, 1.756, 1.756, 1.756, 2.0749, 2.0749, 2.0749, 2.0749, 2.0749, 2.1956, 2.1956, 2.1956, 2.1956] }, "fates_maintresp_leaf_ryan1991_baserate": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf maintenance respiration base rate per Ryan et al 1991", "units": "gC/gN/s", - "data": [2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06] + "data": [2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06] }, "fates_maintresp_leaf_vert_scaler_coeff1": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf maintenance respiration decrease through the canopy. Only applies to Atkin et al. 2017. For proportionality between photosynthesis and respiration through the canopy, match with fates_leafn_vert_scaler_coeff1.", "units": "unitless", - "data": [0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963] + "data": [0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963] }, "fates_maintresp_leaf_vert_scaler_coeff2": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf maintenance respiration decrease through the canopy. Only applies to Atkin et al. 2017. For proportionality between photosynthesis and respiration through the canopy, match with fates_leafn_vert_scaler_coeff2.", "units": "unitless", - "data": [2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43] + "data": [2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43] }, "fates_maintresp_reduction_curvature": { "dtype": "float", "dims": ["fates_pft"], "long_name": "curvature of MR reduction as f(carbon storage), 1linear, 0very curved", "units": "unitless (0-1)", - "data": [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + "data": [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] }, "fates_maintresp_reduction_intercept": { "dtype": "float", "dims": ["fates_pft"], "long_name": "intercept of MR reduction as f(carbon storage), 0no throttling, 1max throttling", "units": "unitless (0-1)", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_maintresp_reduction_upthresh": { "dtype": "float", "dims": ["fates_pft"], "long_name": "upper threshold for storage biomass (relative to leaf biomass) above which MR is not reduced", "units": "unitless (0-1)", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_mort_bmort": { "dtype": "float", "dims": ["fates_pft"], "long_name": "background mortality rate", "units": "1/yr", - "data": [0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.01, 0.014, 0.014, 0.014] + "data": [0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.01, 0.014, 0.014, 0.014, 0.014] }, "fates_mort_freezetol": { "dtype": "float", "dims": ["fates_pft"], "long_name": "minimum temperature tolerance", "units": "degrees C", - "data": [2.5, -55.0, -80.0, -30.0, 2.5, -80.0, -60.0, -10.0, -80.0, -71.0, -95.0, -89.0, -20.0, 2.5] + "data": [2.5, -55.0, -80.0, -30.0, 2.5, -80.0, -60.0, -10.0, -80.0, -71.0, -95.0, -89.0, -20.0, 2.5, -89.0] }, "fates_mort_hf_flc_threshold": { "dtype": "float", "dims": ["fates_pft"], "long_name": "plant fractional loss of conductivity at which drought mortality begins for hydraulic model", "units": "fraction", - "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] }, "fates_mort_hf_sm_threshold": { "dtype": "float", "dims": ["fates_pft"], "long_name": "soil moisture (btran units) at which drought mortality begins for non-hydraulic model", "units": "unitless", - "data": [1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06] + "data": [1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06] }, "fates_mort_ip_age_senescence": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Mortality cohort age senescence inflection point. If _ this mortality term is off. Setting this value turns on age dependent mortality.", "units": "years", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_mort_ip_size_senescence": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Mortality dbh senescence inflection point. If _ this mortality term is off. Setting this value turns on size dependent mortality", "units": "dbh cm", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_mort_prescribed_canopy": { "dtype": "float", "dims": ["fates_pft"], "long_name": "mortality rate of canopy trees for prescribed physiology mode", "units": "1/yr", - "data": [0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194] + "data": [0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194] }, "fates_mort_prescribed_understory": { "dtype": "float", "dims": ["fates_pft"], "long_name": "mortality rate of understory trees for prescribed physiology mode", "units": "1/yr", - "data": [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025] + "data": [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025] }, "fates_mort_r_age_senescence": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Mortality age senescence rate of change. Sensible range is around 0.03-0.06. Larger values givesteeper mortality curves.", "units": "mortality rate year^-1", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_mort_r_size_senescence": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Mortality dbh senescence rate of change. Sensible range is around 0.03-0.06. Larger values give steeper mortality curves.", "units": "mortality rate dbh^-1", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_mort_scalar_coldstress": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum mortality rate from cold stress", "units": "1/yr", - "data": [3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 2.3, 3.0, 3.0] + "data": [3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 2.3, 3.0, 3.0, 2.3] }, "fates_mort_scalar_cstarvation": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum mortality rate from carbon starvation", "units": "1/yr", - "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.57, 0.6, 0.6, 0.6] + "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.57, 0.6, 0.6, 0.6, 0.6] }, "fates_mort_scalar_hydrfailure": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum mortality rate from hydraulic failure", "units": "1/yr", - "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.8, 0.6, 0.6, 0.6] + "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.8, 0.6, 0.6, 0.6, 0.6] }, "fates_mort_upthresh_cstarvation": { "dtype": "float", "dims": ["fates_pft"], "long_name": "threshold for storage biomass (relative to target leaf biomass) above which carbon starvation is zero", "units": "unitless", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_nonhydro_smpsc": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Soil water potential at full stomatal closure", "units": "mm", - "data": [-255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0] + "data": [-255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0] }, "fates_nonhydro_smpso": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Soil water potential at full stomatal opening", "units": "mm", - "data": [-66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0] + "data": [-66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0] }, "fates_phen_cold_size_threshold": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the dbh size above which will lead to phenology-related stem and leaf drop", "units": "cm", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_phen_drought_threshold": { "dtype": "float", "dims": ["fates_pft"], "long_name": "threshold for drought phenology (or lower threshold for semi-deciduous PFTs) the quantity depends on the sign if positive, the threshold is volumetric soil moisture (m3/m3). If negative, the threshold is soil matric potentical (mm)", "units": "m3/m3 or mm", - "data": [-152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4] + "data": [-152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4] }, "fates_phen_flush_fraction": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Upon bud-burst, the maximum fraction of storage carbon used for flushing leaves", "units": "fraction", - "data": [null, null, 0.5, null, 0.5, 0.5, null, 0.5, 0.5, null, 0.5, 0.5, 0.5, 0.5] + "data": [null, null, 0.5, null, 0.5, 0.5, null, 0.5, 0.5, null, 0.5, 0.5, 0.5, 0.5, 0.5] }, "fates_phen_fnrt_drop_fraction": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of fine roots to drop during drought/cold", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_phen_leaf_habit": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "Flag for leaf phenology habit. 1 - evergreen 2 - season (cold) deciduous 3 - stress (hydro) deciduous 4 - stress (hydro) semi-deciduous", "units": "flag", - "data": [1, 1, 2, 1, 3, 2, 1, 3, 2, 1, 2, 2, 3, 3] + "data": [1, 1, 2, 1, 3, 2, 1, 3, 2, 1, 2, 2, 3, 3, 1] }, "fates_phen_mindaysoff": { "dtype": "float", "dims": ["fates_pft"], "long_name": "day threshold compared against days since leaves abscised (shed)", "units": "days", - "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] }, "fates_phen_moist_threshold": { "dtype": "float", "dims": ["fates_pft"], "long_name": "upper threshold for drought phenology (only for drought semi-deciduous PFTs) the quantity depends on the sign if positive, the threshold is volumetric soil moisture (m3/m3). If negative, the threshold is soil matric potentical (mm)", "units": "m3/m3 or mm", - "data": [-122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9] + "data": [-122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9] }, "fates_phen_stem_drop_fraction": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of stems to drop for non-woody species during drought/cold", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_prescribed_npp_canopy": { "dtype": "float", "dims": ["fates_pft"], "long_name": "NPP per unit crown area of canopy trees for prescribed physiology mode", "units": "kgC / m^2 / yr", - "data": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4] + "data": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4] }, "fates_prescribed_npp_understory": { "dtype": "float", "dims": ["fates_pft"], "long_name": "NPP per unit crown area of understory trees for prescribed physiology mode", "units": "kgC / m^2 / yr", - "data": [0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125] + "data": [0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125] }, "fates_rad_leaf_clumping_index": { "dtype": "float", "dims": ["fates_pft"], "long_name": "factor describing how much self-occlusion of leaf scattering elements decreases light interception", "units": "fraction (0-1)", - "data": [0.85, 0.85, 0.8, 0.85, 0.85, 0.9, 0.85, 0.9, 0.9, 0.85, 0.9, 0.75, 0.75, 0.75] + "data": [0.85, 0.85, 0.8, 0.85, 0.85, 0.9, 0.85, 0.9, 0.9, 0.85, 0.9, 0.75, 0.75, 0.75, 10.0] }, "fates_rad_leaf_rhonir": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf reflectance near-IR", "units": "fraction", - "data": [0.46, 0.41, 0.39, 0.46, 0.41, 0.41, 0.46, 0.41, 0.41, 0.46, 0.41, 0.28, 0.28, 0.28] + "data": [0.46, 0.41, 0.39, 0.46, 0.41, 0.41, 0.46, 0.41, 0.41, 0.46, 0.41, 0.28, 0.28, 0.28, 0.28] }, "fates_rad_leaf_rhovis": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf reflectance visible", "units": "fraction", - "data": [0.11, 0.09, 0.08, 0.11, 0.08, 0.08, 0.11, 0.08, 0.08, 0.11, 0.08, 0.05, 0.05, 0.05] + "data": [0.11, 0.09, 0.08, 0.11, 0.08, 0.08, 0.11, 0.08, 0.08, 0.11, 0.08, 0.05, 0.05, 0.05, 0.05] }, "fates_rad_leaf_taunir": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf transmittance near-IR", "units": "fraction", - "data": [0.33, 0.32, 0.42, 0.33, 0.43, 0.43, 0.33, 0.43, 0.43, 0.33, 0.43, 0.4, 0.4, 0.4] + "data": [0.33, 0.32, 0.42, 0.33, 0.43, 0.43, 0.33, 0.43, 0.43, 0.33, 0.43, 0.4, 0.4, 0.4, 0.01] }, "fates_rad_leaf_tauvis": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf transmittance visible", "units": "fraction", - "data": [0.06, 0.04, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.05, 0.05, 0.05] + "data": [0.06, 0.04, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.05, 0.05, 0.05, 0.01] }, "fates_rad_leaf_xl": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Leaf/stem orientation index", "units": "unitless", - "data": [0.32, 0.01, 0.01, 0.32, 0.2, 0.59, 0.32, 0.59, 0.59, 0.32, 0.59, -0.23, -0.23, -0.23] + "data": [0.32, 0.01, 0.01, 0.32, 0.2, 0.59, 0.32, 0.59, 0.59, 0.32, 0.59, -0.23, -0.23, -0.23, 0.0] }, "fates_rad_stem_rhonir": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Stem reflectance near-IR", "units": "fraction", - "data": [0.49, 0.36, 0.36, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.53, 0.53, 0.53] + "data": [0.49, 0.36, 0.36, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.53, 0.53, 0.53, 0.53] }, "fates_rad_stem_rhovis": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Stem reflectance visible", "units": "fraction", - "data": [0.21, 0.12, 0.12, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.31, 0.31, 0.31] + "data": [0.21, 0.12, 0.12, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.31, 0.31, 0.31, 0.31] }, "fates_rad_stem_taunir": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Stem transmittance near-IR", "units": "fraction", - "data": [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.25, 0.25, 0.25] + "data": [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.25, 0.25, 0.25, 0.01] }, "fates_rad_stem_tauvis": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Stem transmittance visible", "units": "fraction", - "data": [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.12, 0.12, 0.12] + "data": [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.12, 0.12, 0.12, 0.01] }, "fates_recruit_height_min": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the minimum height (ie starting height) of a newly recruited plant", "units": "m", - "data": [1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 0.2, 0.2, 0.2, 0.8, 0.8, 0.11, 0.2, 0.2] + "data": [1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 0.2, 0.2, 0.2, 0.8, 0.8, 0.11, 0.2, 0.2, 0.11] }, "fates_recruit_init_density": { "dtype": "float", "dims": ["fates_pft"], "long_name": "initial seedling density for a cold-start near-bare-ground simulation. If negative sets initial tree dbh - only to be used in nocomp mode", "units": "stems/m2", - "data": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.16, 0.2, 0.2, 0.2, 0.2] + "data": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.16, 0.2, 0.2, 0.2, 0.2, 0.2] }, "fates_recruit_init_seed": { "dtype": "float", "dims": ["fates_pft"], "long_name": "initial seed pool - per m2 of associated pft-patch for no-comp, per m2 of whole site for non no-comp", "units": "kg/m2", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_recruit_prescribed_rate": { "dtype": "float", "dims": ["fates_pft"], "long_name": "recruitment rate for prescribed physiology mode", "units": "n/yr", - "data": [0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02] + "data": [0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02] }, "fates_recruit_seed_alloc": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of available carbon balance allocated to seeds", "units": "fraction", - "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.07, 0.1, 0.0, 0.0, 0.0] + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.07, 0.1, 0.0, 0.0, 0.0, 0.0] }, "fates_recruit_seed_alloc_mature": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of available carbon balance allocated to seeds in mature plants (adds to fates_seed_alloc)", "units": "fraction", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.9, 0.9, 0.9, 0.25, 0.25, 0.2] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.9, 0.9, 0.9, 0.25, 0.25, 0.2, 0.25] }, "fates_recruit_seed_dbh_repro_threshold": { "dtype": "float", "dims": ["fates_pft"], "long_name": "the diameter where the plant will increase allocation to the seed pool by fraction fates_recruit_seed_alloc_mature", "units": "cm", - "data": [90.0, 80.0, 80.0, 80.0, 90.0, 80.0, 3.0, 3.0, 2.0, 2.4, 1.9, 3.0, 3.0, 3.0] + "data": [90.0, 80.0, 80.0, 80.0, 90.0, 80.0, 3.0, 3.0, 2.0, 2.4, 1.9, 3.0, 3.0, 3.0, 3.0] }, "fates_recruit_seed_germination_rate": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of seeds that germinate per year", "units": "yr-1", - "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.4, 0.49, 0.29, 0.5, 0.5] + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.4, 0.49, 0.29, 0.5, 0.5, 0.29] }, "fates_recruit_seed_supplement": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Supplemental external seed rain source term (non-mass conserving)", "units": "KgC/m2/yr", - "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }, "fates_seed_dispersal_fraction": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of seed rain to be dispersed to other grid cells", "units": "fraction", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_seed_dispersal_max_dist": { "dtype": "float", "dims": ["fates_pft"], "long_name": "maximum seed dispersal distance for a given pft", "units": "m", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_seed_dispersal_pdf_scale": { "dtype": "float", "dims": ["fates_pft"], "long_name": "seed dispersal probability density function scale parameter, A, Table 1 Bullock et al 2016", "units": "unitless", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_seed_dispersal_pdf_shape": { "dtype": "float", "dims": ["fates_pft"], "long_name": "seed dispersal probability density function shape parameter, B, Table 1 Bullock et al 2016", "units": "unitless", - "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null] + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] }, "fates_stoich_nitr": { "dtype": "float", "dims": ["fates_plant_organs", "fates_pft"], "long_name": "target nitrogen concentration (ratio with carbon) of organs", "units": "gN/gC", - "data": [[0.033, 0.029, 0.04, 0.033, 0.04, 0.04, 0.033, 0.04, 0.04, 0.033, 0.04, 0.04, 0.04, 0.04],[0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024],[1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08],[0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047]] + "data": [[0.033, 0.029, 0.04, 0.033, 0.04, 0.04, 0.033, 0.04, 0.04, 0.033, 0.04, 0.04, 0.04, 0.04, 0.04], [0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024], [1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08], [0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047]] }, "fates_stoich_phos": { "dtype": "float", "dims": ["fates_plant_organs", "fates_pft"], "long_name": "target phosphorus concentration (ratio with carbon) of organs", "units": "gP/gC", - "data": [[0.0033, 0.0029, 0.004, 0.0033, 0.004, 0.004, 0.0033, 0.004, 0.004, 0.0033, 0.004, 0.004, 0.004, 0.004],[0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024],[1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09],[0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047]] + "data": [[0.0033, 0.0029, 0.004, 0.0033, 0.004, 0.004, 0.0033, 0.004, 0.004, 0.0033, 0.004, 0.004, 0.004, 0.004, 0.004], [0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024], [1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09], [0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047]] }, "fates_trim_inc": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Arbitrary incremental change in trimming function.", "units": "m2/m2", - "data": [0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03] + "data": [0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03] }, "fates_trim_limit": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Arbitrary limit to reductions in leaf area with stress", "units": "m2/m2", - "data": [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3] + "data": [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3] }, "fates_trs_repro_alloc_a": { "dtype": "float", "dims": ["fates_pft"], "long_name": "shape parameter for sigmoidal function relating dbh to reproductive allocation", "units": "fraction", - "data": [0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049] + "data": [0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049] }, "fates_trs_repro_alloc_b": { "dtype": "float", "dims": ["fates_pft"], "long_name": "intercept parameter for sigmoidal function relating dbh to reproductive allocation", "units": "fraction", - "data": [-2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171] + "data": [-2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171] }, "fates_trs_repro_frac_seed": { "dtype": "float", "dims": ["fates_pft"], "long_name": "fraction of reproductive mass that is seed", "units": "fraction", - "data": [0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24] + "data": [0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24] }, "fates_trs_seedling_a_emerg": { "dtype": "float", "dims": ["fates_pft"], "long_name": "mean fraction of seed bank emerging", "units": "day -1", - "data": [0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003] + "data": [0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003] }, "fates_trs_seedling_b_emerg": { "dtype": "float", "dims": ["fates_pft"], "long_name": "seedling emergence sensitivity to soil moisture", "units": "day -1", - "data": [1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2] + "data": [1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2] }, "fates_trs_seedling_background_mort": { "dtype": "float", "dims": ["fates_pft"], "long_name": "background seedling mortality rate", "units": "yr-1", - "data": [0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371] + "data": [0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371] }, "fates_trs_seedling_h2o_mort_a": { "dtype": "float", "dims": ["fates_pft"], "long_name": "coefficient in moisture-based seedling mortality", "units": "-", - "data": [4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17] + "data": [4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17] }, "fates_trs_seedling_h2o_mort_b": { "dtype": "float", "dims": ["fates_pft"], "long_name": "coefficient in moisture-based seedling mortality", "units": "-", - "data": [-6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11] + "data": [-6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11] }, "fates_trs_seedling_h2o_mort_c": { "dtype": "float", "dims": ["fates_pft"], "long_name": "coefficient in moisture-based seedling mortality", "units": "-", - "data": [1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05] + "data": [1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05] }, "fates_trs_seedling_light_mort_a": { "dtype": "float", "dims": ["fates_pft"], "long_name": "light-based seedling mortality coefficient", "units": "-", - "data": [-0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694] + "data": [-0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694] }, "fates_trs_seedling_light_mort_b": { "dtype": "float", "dims": ["fates_pft"], "long_name": "light-based seedling mortality coefficient", "units": "-", - "data": [-7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063] + "data": [-7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063] }, "fates_trs_seedling_light_rec_a": { "dtype": "float", "dims": ["fates_pft"], "long_name": "coefficient in light-based seedling to sapling transition", "units": "-", - "data": [0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007] + "data": [0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007] }, "fates_trs_seedling_light_rec_b": { "dtype": "float", "dims": ["fates_pft"], "long_name": "coefficient in light-based seedling to sapling transition", "units": "-", - "data": [0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615] + "data": [0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615] }, "fates_trs_seedling_mdd_crit": { "dtype": "float", "dims": ["fates_pft"], "long_name": "critical moisture deficit (suction) day accumulation for seedling moisture-based seedling mortality to begin", "units": "mm H2O day", - "data": [1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0] + "data": [1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0] }, "fates_trs_seedling_par_crit_germ": { "dtype": "float", "dims": ["fates_pft"], "long_name": "critical light level for germination", "units": "MJ m-2 day-1", - "data": [0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656] + "data": [0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656] }, "fates_trs_seedling_psi_crit": { "dtype": "float", "dims": ["fates_pft"], "long_name": "critical soil moisture (suction) for seedling stress", "units": "mm H2O", - "data": [-251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7] + "data": [-251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7] }, "fates_trs_seedling_psi_emerg": { "dtype": "float", "dims": ["fates_pft"], "long_name": "critical soil moisture for seedling emergence", "units": "mm h20 suction", - "data": [-15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65] + "data": [-15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65] }, "fates_trs_seedling_root_depth": { "dtype": "float", "dims": ["fates_pft"], "long_name": "rooting depth of seedlings", "units": "m", - "data": [0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06] + "data": [0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06] }, "fates_turb_displar": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Ratio of displacement height to canopy top height", "units": "unitless", - "data": [0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67] + "data": [0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67] }, "fates_turb_leaf_diameter": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Characteristic leaf dimension", "units": "m", - "data": [0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04] + "data": [0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04] }, "fates_turb_z0mr": { "dtype": "float", "dims": ["fates_pft"], "long_name": "Ratio of momentum roughness length to canopy top height", "units": "unitless", - "data": [0.075, 0.055, 0.055, 0.075, 0.055, 0.055, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12] + "data": [0.075, 0.055, 0.055, 0.075, 0.055, 0.055, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12] }, "fates_turnover_branch": { "dtype": "float", "dims": ["fates_pft"], "long_name": "turnover time of branches", "units": "yr", - "data": [150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 0.0, 0.0, 0.0] + "data": [150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 0.0, 0.0, 0.0, 0.0] }, "fates_turnover_fnrt": { "dtype": "float", "dims": ["fates_pft"], "long_name": "root longevity (alternatively, turnover time)", "units": "yr", - "data": [1.0, 2.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 2.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_turnover_leaf_canopy": { "dtype": "float", "dims": ["fates_leafage_class", "fates_pft"], "long_name": "Leaf longevity (ie turnover timescale) of canopy plants. For drought-deciduous PFTs, this also indicates the maximum length of the growing (i.e., leaves on) season.", "units": "yr", - "data": [[1.5, 4.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0]] + "data": [[1.5, 4.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0, 1.0]] }, "fates_turnover_leaf_ustory": { "dtype": "float", "dims": ["fates_leafage_class", "fates_pft"], "long_name": "Leaf longevity (ie turnover timescale) of understory plants.", "units": "yr", - "data": [[1.5, 4.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0]] + "data": [[1.5, 4.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0, 1.0]] }, "fates_turnover_senleaf_fdrought": { "dtype": "float", "dims": ["fates_pft"], "long_name": "multiplication factor for leaf longevity of senescent leaves during drought", "units": "unitless[0-1]", - "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] }, "fates_wood_density": { "dtype": "float", "dims": ["fates_pft"], "long_name": "mean density of woody tissue in plant", "units": "g/cm3", - "data": [0.548327, 0.44235, 0.454845, 0.754336, 0.548327, 0.566452, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7] + "data": [0.548327, 0.44235, 0.454845, 0.754336, 0.548327, 0.566452, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7] }, "fates_woody": { "dtype": "integer", "dims": ["fates_pft"], "long_name": "Binary woody lifeform flag", "units": "logical flag", - "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0] + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0] }, "fates_hlm_pft_map": { "dtype": "float", "dims": ["fates_hlm_pftno", "fates_pft"], "long_name": "In fixed biogeog mode, fraction of HLM area associated with each FATES PFT", "units": "area fraction", - "data": [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.8, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0],[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]] + "data": [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.8, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]] }, "fates_fire_FBD": { "dtype": "float", @@ -1731,6 +1731,27 @@ "units": "unknown", "data": [null] }, + "fates_nvp_extinction_coeff": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Beer's law extinction coefficient for NVP (moss/lichen) radiation absorption", + "units": "unitless", + "data": [0.5] + }, + "fates_nvp_bulk_density": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "NVP (moss/lichen) bulk density", + "units": "kg m-3", + "data": [75.0] + }, + "fates_nvp_sla": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "NVP (moss/lichen) specific leaf area", + "units": "m2 g-1", + "data": [0.3] + }, "fates_fire_active_crown_fire": { "dtype": "integer", "dims": ["scalar"], diff --git a/parameter_files/fates_params_default_moss.json b/parameter_files/fates_params_default_moss.json new file mode 100644 index 0000000000..766d5f3f1d --- /dev/null +++ b/parameter_files/fates_params_default_moss.json @@ -0,0 +1,2218 @@ +{ + "attributes": {"history": "05/11/25, First instantation, copied from: ../parameter_files/fates_params_default.cdl. "}, + "dimensions": { + "fates_NCWD": 4, + "fates_history_age_bins": 7, + "fates_history_coage_bins": 2, + "fates_history_damage_bins": 2, + "fates_history_height_bins": 6, + "fates_history_size_bins": 13, + "fates_hlm_pftno": 14, + "fates_hydr_organs": 4, + "fates_landuseclass": 5, + "fates_leafage_class": 1, + "fates_litterclass": 6, + "fates_pft": 15, + "fates_plant_organs": 4 + }, + "parameters": { + "fates_history_ageclass_bin_edges": { + "dtype": "float", + "dims": ["fates_history_age_bins"], + "long_name": "Lower edges for age class bins used in age-resolved patch history output", + "units": "yr", + "data": [0.0, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0] + }, + "fates_history_coageclass_bin_edges": { + "dtype": "float", + "dims": ["fates_history_coage_bins"], + "long_name": "Lower edges for cohort age class bins used in cohort age resolved history output", + "units": "years", + "data": [0.0, 5.0] + }, + "fates_history_height_bin_edges": { + "dtype": "float", + "dims": ["fates_history_height_bins"], + "long_name": "Lower edges for height bins used in height-resolved history output", + "units": "m", + "data": [0.0, 0.1, 0.3, 1.0, 3.0, 10.0] + }, + "fates_history_damage_bin_edges": { + "dtype": "float", + "dims": ["fates_history_damage_bins"], + "long_name": "Lower edges for damage class bins used in cohort history output", + "units": "% crown loss", + "data": [0.0, 80.0] + }, + "fates_history_sizeclass_bin_edges": { + "dtype": "float", + "dims": ["fates_history_size_bins"], + "long_name": "Lower edges for DBH size class bins used in size-resolved cohort history output", + "units": "cm", + "data": [0.0, 5.0, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] + }, + "fates_alloc_organ_id": { + "dtype": "integer", + "dims": ["fates_plant_organs"], + "long_name": "This is the global index that the organ in this file is associated with, values match those in parteh/PRTGenericMod.F90", + "units": "unitless", + "data": [1, 2, 3, 6] + }, + "fates_hydro_htftype_node": { + "dtype": "integer", + "dims": ["fates_hydr_organs"], + "long_name": "Switch that defines the hydraulic transfer functions for each organ.", + "units": "unitless", + "data": [1, 1, 1, 1] + }, + "fates_pftname": { + "dtype": "string", + "dims": ["fates_pft"], + "long_name": "Description of plant type", + "units": "unitless - string", + "data": ["broadleaf_evergreen_tropical_tree", "needleleaf_evergreen_extratrop_tree", "needleleaf_colddecid_extratrop_tree", "broadleaf_evergreen_extratrop_tree", "broadleaf_hydrodecid_tropical_tree", "broadleaf_colddecid_extratrop_tree", "broadleaf_evergreen_extratrop_shrub", "broadleaf_hydrodecid_extratrop_shrub", "broadleaf_colddecid_extratrop_shrub", "broadleaf_evergreen_arctic_shrub", "broadleaf_colddecid_arctic_shrub", "arctic_c3_grass", "cool_c3_grass", "c4_grass", "non_vascular_phototroph"] + }, + "fates_hydro_organ_name": { + "dtype": "string", + "dims": ["fates_hydr_organs"], + "long_name": "Name of plant hydraulics organs (DONT CHANGE, order matches media list in FatesHydraulicsMemMod.F90)", + "units": "unitless - string", + "data": ["leaf", "stem", "transporting root", "absorbing root"] + }, + "fates_alloc_organ_name": { + "dtype": "string", + "dims": ["fates_plant_organs"], + "long_name": "Name of plant organs (with alloc_organ_id, must match PRTGenericMod.F90)", + "units": "unitless - string", + "data": ["leaf", "fine root", "sapwood", "structure"] + }, + "fates_landuseclass_name": { + "dtype": "string", + "dims": ["fates_landuseclass"], + "long_name": "Name of the land use classes, for variables associated with dimension fates_landuseclass", + "units": "unitless - string", + "data": ["primaryland", "secondaryland", "rangeland", "pastureland", "cropland"] + }, + "fates_litterclass_name": { + "dtype": "string", + "dims": ["fates_litterclass"], + "long_name": "Name of the litter classes, for variables associated with dimension fates_litterclass", + "units": "unitless - string", + "data": ["twig", "small branch", "large branch", "trunk", "dead leaves", "live grass"] + }, + "fates_alloc_organ_priority": { + "dtype": "integer", + "dims": ["fates_plant_organs", "fates_pft"], + "long_name": "Priority level for allocation, 1 replaces turnover from storage, 2 same priority as storage use/replacement, 3 ascending in order of least importance", + "units": "index", + "data": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]] + }, + "fates_alloc_storage_cushion": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum size of storage C pool, relative to maximum size of leaf C pool", + "units": "fraction", + "data": [1.2, 1.2, 1.2, 1.2, 2.4, 1.2, 1.2, 2.4, 1.2, 1.5, 1.4, 1.2, 1.2, 1.2, 1.2] + }, + "fates_alloc_store_priority_frac": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "for high-priority organs, the fraction of their turnover demand that is gauranteed to be replaced, and if need-be by storage", + "units": "unitless", + "data": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.7, 0.6, 0.6, 0.8, 0.8, 0.6] + }, + "fates_allom_agb1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 1 for agb allometry", + "units": "variable", + "data": [0.0673, 0.1364012, 0.0393057, 0.2653695, 0.0673, 0.0728698, 0.06896, 0.06896, 0.06896, 0.06896, 0.06896, 0.001, 0.001, 0.003, 0.001] + }, + "fates_allom_agb2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 2 for agb allometry", + "units": "variable", + "data": [0.976, 0.9449041, 1.087335, 0.8321321, 0.976, 1.0373211, 0.572, 0.572, 0.572, 0.5289883, 0.6853945, 1.6592, 1.6592, 1.3456, 1.6592] + }, + "fates_allom_agb3": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 3 for agb allometry", + "units": "variable", + "data": [1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 1.94, 2.1010352, 1.7628613, 1.248, 1.248, 1.869, 1.248] + }, + "fates_allom_agb4": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 4 for agb allometry", + "units": "variable", + "data": [0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, 0.931, -999.9, -999.9, -999.9, -999.9] + }, + "fates_allom_agb_frac": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Fraction of woody biomass that is above ground", + "units": "fraction", + "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 1.0, 1.0, 1.0, 1.0] + }, + "fates_allom_amode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "AGB allometry function index.", + "units": "index", + "data": [3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 5, 5, 5, 5] + }, + "fates_allom_blca_expnt_diff": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "difference between allometric DBH bleaf and DBH crown area exponents", + "units": "unitless", + "data": [-0.12, -0.34, -0.32, -0.22, -0.12, -0.35, 0.0, 0.0, 0.0, 0.0, 0.0, -0.487, -0.487, -0.259, -0.487] + }, + "fates_allom_cmode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "coarse root biomass allometry function index.", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + }, + "fates_allom_d2bl1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 1 for d2bl allometry", + "units": "variable", + "data": [0.04, 0.07, 0.07, 0.01, 0.04, 0.07, 0.07, 0.07, 0.07, 0.0481934, 0.0481934, 0.0004, 0.0004, 0.0012, 0.0004] + }, + "fates_allom_d2bl2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 2 for d2bl allometry", + "units": "variable", + "data": [1.6019679, 1.5234373, 1.3051237, 1.9621397, 1.6019679, 1.3998939, 1.3, 1.3, 1.3, 1.0600586, 1.7176758, 1.7092, 1.7092, 1.5879, 1.7092] + }, + "fates_allom_d2bl3": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 3 for d2bl allometry", + "units": "unitless", + "data": [0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.55, 0.3417, 0.3417, 0.9948, 0.3417] + }, + "fates_allom_d2ca_coefficient_max": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "max (savanna) dbh to area multiplier factor where area n*d2ca_coeff*dbh^beta", + "units": "m2 cm^(-1/beta)", + "data": [0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.4363427, 0.3166497, 0.0408, 0.0408, 0.0862, 0.0408] + }, + "fates_allom_d2ca_coefficient_min": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "min (forest) dbh to area multiplier factor where area n*d2ca_coeff*dbh^beta", + "units": "m2 cm^(-1/beta)", + "data": [0.2715891, 0.3693718, 1.0787259, 0.0579297, 0.2715891, 1.1553612, 0.6568464, 0.6568464, 0.6568464, 0.4363427, 0.3166497, 0.0408, 0.0408, 0.0862, 0.0408] + }, + "fates_allom_d2h1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 1 for d2h allometry (intercept, or c)", + "units": "variable", + "data": [78.4087704, 306.842667, 106.8745821, 104.3586841, 78.4087704, 31.4557047, 0.64, 0.64, 0.64, 0.8165625, 0.778125, 0.1812, 0.1812, 0.3353, 0.1812] + }, + "fates_allom_d2h2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 2 for d2h allometry (slope, or m)", + "units": "variable", + "data": [0.8124383, 0.752377, 0.9471302, 1.1146973, 0.8124383, 0.9734088, 0.37, 0.37, 0.37, 0.2316113, 0.4027002, 0.6384, 0.6384, 0.4235, 0.6384] + }, + "fates_allom_d2h3": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 3 for d2h allometry (optional)", + "units": "variable", + "data": [47.6666164, 196.6865691, 93.9790461, 160.6835089, 47.6666164, 16.5928174, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9, -999.9] + }, + "fates_allom_dbh_maxheight": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "the diameter (if any) corresponding to maximum height, diameters may increase beyond this", + "units": "cm", + "data": [1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 3.0, 3.0, 2.0, 2.4, 1.9, 20.0, 20.0, 30.0, 20.0] + }, + "fates_allom_dmode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "crown depth allometry function index", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + }, + "fates_allom_fmode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "fine root biomass allometry function index.", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + }, + "fates_allom_fnrt_prof_a": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Fine root profile function, parameter a", + "units": "unitless", + "data": [7.0, 7.0, 7.0, 7.0, 6.0, 6.0, 7.0, 7.0, 7.0, 7.0, 7.0, 11.0, 11.0, 11.0, 11.0] + }, + "fates_allom_fnrt_prof_b": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Fine root profile function, parameter b", + "units": "unitless", + "data": [1.0, 2.0, 2.0, 1.0, 2.0, 2.0, 1.5, 1.5, 1.5, 1.5, 1.5, 2.0, 2.0, 2.0, 2.0] + }, + "fates_allom_fnrt_prof_mode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "Index to select fine root profile function 1) Jackson Beta, 2) 1-param exponential 3) 2-param exponential 4) no roots (NVP)", + "units": "index", + "data": [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4] + }, + "fates_allom_frbstor_repro": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of bstore goes to reproduction after plant dies", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_allom_h2cd1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 1 for h2cd allometry (exp(log-intercept) or scaling). If allom_dmode1 this is the same as former crown_depth_frac parameter", + "units": "variable", + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.95, 0.95, 0.95, 0.95, 0.95, 1.0, 1.0, 1.0, 1.0] + }, + "fates_allom_h2cd2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Parameter 2 for h2cd allometry (log-slope or exponent). If allom_dmode1 this is not needed (as exponent is assumed 1)", + "units": "variable", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_allom_hmode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "height allometry function index.", + "units": "index", + "data": [5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 3, 3, 3, 3] + }, + "fates_allom_l2fr": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Allocation parameter fine root C per leaf C", + "units": "gC/gC", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.67, 0.67, 1.41, 0.67] + }, + "fates_allom_la_per_sa_int": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf area per sapwood area, intercept", + "units": "m2/cm2", + "data": [0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8] + }, + "fates_allom_la_per_sa_slp": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf area per sapwood area rate of change with height, slope (optional)", + "units": "m2/cm2/m", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_allom_lmode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "leaf biomass allometry function index.", + "units": "index", + "data": [2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 5, 5, 5, 5] + }, + "fates_allom_sai_scaler": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "allometric ratio of SAI per LAI", + "units": "m2/m2", + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + }, + "fates_allom_smode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "sapwood allometry function index.", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2] + }, + "fates_allom_stmode": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "storage allometry function index 1) Storage proportional to leaf biomass (with trimming), 2) Storage proportional to maximum leaf biomass (not trimmed)", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + }, + "fates_allom_zroot_k": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "scale coefficient of logistic rooting depth model", + "units": "unitless", + "data": [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0] + }, + "fates_allom_zroot_max_dbh": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "dbh at which a plant reaches the maximum value for its maximum rooting depth", + "units": "cm", + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + }, + "fates_allom_zroot_max_z": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "the maximum rooting depth defined at dbh fates_allom_zroot_max_dbh. note max_zmin_zlarge, sets rooting depth to soil depth", + "units": "m", + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] + }, + "fates_allom_zroot_min_dbh": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "dbh at which the maximum rooting depth for a recruit is defined", + "units": "cm", + "data": [1.0, 1.0, 1.0, 2.5, 2.5, 2.5, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + }, + "fates_allom_zroot_min_z": { + "dtype": "float",/ + "dims": ["fates_pft"], + "long_name": "the maximum rooting depth defined at dbh fates_allom_zroot_min_dbh. note max_zmin_zlarge, sets rooting depth to soil depth", + "units": "m", + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] + }, + "fates_c2b": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Carbon to biomass multiplier of bulk structural tissues", + "units": "ratio", + "data": [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0] + }, + "fates_cnp_eca_alpha_ptase": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "(INACTIVE, KEEP AT 0) fraction of P from ptase activity sent directly to plant (ECA)", + "units": "g/m3", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_cnp_eca_decompmicc": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum soil microbial decomposer biomass found over depth (will be applied at a reference depth w/ exponential attenuation) (ECA)", + "units": "gC/m3", + "data": [280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0, 280.0] + }, + "fates_cnp_eca_km_nh4": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "half-saturation constant for plant nh4 uptake (ECA)", + "units": "gN/m3", + "data": [0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14] + }, + "fates_cnp_eca_km_no3": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "half-saturation constant for plant no3 uptake (ECA)", + "units": "gN/m3", + "data": [0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27, 0.27] + }, + "fates_cnp_eca_km_p": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "half-saturation constant for plant p uptake (ECA)", + "units": "gP/m3", + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + }, + "fates_cnp_eca_km_ptase": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "half-saturation constant for biochemical P (ECA)", + "units": "gP/m3", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_cnp_eca_lambda_ptase": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "(INACTIVE, KEEP AT 0) critical value for biochemical production (ECA)", + "units": "g/m3", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_cnp_eca_vmax_ptase": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum production rate for biochemical P (per m2) (ECA)", + "units": "gP/m2/s", + "data": [5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09, 5e-09] + }, + "fates_cnp_nfix1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fractional surcharge added to maintenance respiration that drives symbiotic fixation", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_cnp_nitr_store_ratio": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "storeable (labile) N, as a ratio compared to the N bound in cell structures of other organs (see code)", + "units": "(gN/gN)", + "data": [1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] + }, + "fates_cnp_phos_store_ratio": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "storeable (labile) P, as a ratio compared to the P bound in cell structures of other organs (see code)", + "units": "(gP/gP)", + "data": [1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5] + }, + "fates_cnp_pid_kd": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "derivative constant of the PID controller on adaptive fine-root biomass", + "units": "unknown", + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + }, + "fates_cnp_pid_ki": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "integral constant of the PID controller on adaptive fine-root biomass", + "units": "unknown", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_cnp_pid_kp": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "proportional constant of the PID controller on adaptive fine-root biomass", + "units": "unknown", + "data": [0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005, 0.0005] + }, + "fates_cnp_prescribed_nuptake": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Prescribed N uptake flux. 0fully coupled simulation >0prescribed (experimental)", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_cnp_prescribed_puptake": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Prescribed P uptake flux. 0fully coupled simulation, >0prescribed (experimental)", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_cnp_store_ovrflw_frac": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "size of overflow storage (for excess C,N or P) as a fraction of storage target", + "units": "fraction", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_cnp_turnover_nitr_retrans": { + "dtype": "float", + "dims": ["fates_plant_organs", "fates_pft"], + "long_name": "retranslocation (reabsorbtion) fraction of nitrogen in turnover of scenescing tissues", + "units": "fraction", + "data": [[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] + }, + "fates_cnp_turnover_phos_retrans": { + "dtype": "float", + "dims": ["fates_plant_organs", "fates_pft"], + "long_name": "retranslocation (reabsorbtion) fraction of phosphorus in turnover of scenescing tissues", + "units": "fraction", + "data": [[0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] + }, + "fates_cnp_vmax_nh4": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum (potential) uptake rate of NH4 per gC of fineroot biomass (see main/EDPftvarcon.F90 vmax_nh4 for usage)", + "units": "gN/gC/s", + "data": [2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09] + }, + "fates_cnp_vmax_no3": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum (potential) uptake rate of NO3 per gC of fineroot biomass (see main/EDPftvarcon.F90 vmax_no3 for usage)", + "units": "gN/gC/s", + "data": [2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09, 2.5e-09] + }, + "fates_cnp_vmax_p": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum production rate for phosphorus (ECA and RD)", + "units": "gP/gC/s", + "data": [5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10, 5e-10] + }, + "fates_damage_frac": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of cohort damaged in each damage event (event frequency specified in the is_it_damage_time subroutine)", + "units": "fraction", + "data": [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + }, + "fates_damage_mort_p1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "inflection point of damage mortality function, a value of 0.8 means 50% mortality with 80% loss of crown, turn off with a large number", + "units": "fraction", + "data": [9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0, 9.0] + }, + "fates_damage_mort_p2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "rate of mortality increase with damage", + "units": "unitless", + "data": [5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5, 5.5] + }, + "fates_damage_recovery_scalar": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of the cohort that recovers from damage", + "units": "unitless", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_dev_arbitrary_pft": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Unassociated pft dimensioned free parameter that developers can use for testing arbitrary new hypotheses", + "units": "unknown", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_fire_alpha_SH": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "spitfire parameter, alpha scorch height, Equation 16 Thonicke et al 2010", + "units": "m / (kw/m)**(2/3)", + "data": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2] + }, + "fates_fire_bark_scaler": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "the thickness of a cohorts bark as a fraction of its dbh", + "units": "fraction", + "data": [0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07] + }, + "fates_fire_crown_kill": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fire parameter, see equation 22 in Thonicke et al 2010", + "units": "NA", + "data": [0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775, 0.775] + }, + "fates_frag_fnrt_fcel": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Fine root litter cellulose fraction", + "units": "fraction", + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + }, + "fates_frag_fnrt_flab": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Fine root litter labile fraction", + "units": "fraction", + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + }, + "fates_frag_fnrt_flig": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Fine root litter lignin fraction", + "units": "fraction", + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + }, + "fates_frag_leaf_fcel": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf litter cellulose fraction", + "units": "fraction", + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + }, + "fates_frag_leaf_flab": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf litter labile fraction", + "units": "fraction", + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + }, + "fates_frag_leaf_flig": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf litter lignin fraction", + "units": "fraction", + "data": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25] + }, + "fates_frag_seed_decay_rate": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of seeds that decay per year", + "units": "yr-1", + "data": [0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.51, 0.74, 0.46, 0.35, 0.51, 0.51, 0.35] + }, + "fates_grperc": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Growth respiration factor", + "units": "unitless", + "data": [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.12, 0.11, 0.16, 0.11, 0.11, 0.16] + }, + "fates_hydro_avuln_gs": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "shape parameter for stomatal control of water vapor exiting leaf", + "units": "unitless", + "data": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5] + }, + "fates_hydro_avuln_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "xylem vulnerability curve shape parameter", + "units": "unitless", + "data": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]] + }, + "fates_hydro_epsil_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "bulk elastic modulus", + "units": "MPa", + "data": [[12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0], [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0], [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0], [8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0]] + }, + "fates_hydro_fcap_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "fraction of non-residual water that is capillary in source", + "units": "unitless", + "data": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] + }, + "fates_hydro_k_lwp": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "inner leaf humidity scaling coefficient", + "units": "unitless", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_hydro_kmax_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "maximum xylem conductivity per unit conducting xylem area", + "units": "kg/MPa/m/s", + "data": [[-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0], [3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0], [-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0], [-999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0, -999.0]] + }, + "fates_hydro_p50_gs": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "water potential at 50% loss of stomatal conductance", + "units": "MPa", + "data": [-1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5, -1.5] + }, + "fates_hydro_p50_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "xylem water potential at 50% loss of conductivity", + "units": "MPa", + "data": [[-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25], [-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25], [-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25], [-2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25]] + }, + "fates_hydro_p_taper": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "xylem taper exponent", + "units": "unitless", + "data": [0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333] + }, + "fates_hydro_pinot_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "osmotic potential at full turgor", + "units": "MPa", + "data": [[-1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984, -1.465984], [-1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807], [-1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807, -1.22807], [-1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478, -1.043478]] + }, + "fates_hydro_pitlp_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "turgor loss point", + "units": "MPa", + "data": [[-1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67, -1.67], [-1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4], [-1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4], [-1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2, -1.2]] + }, + "fates_hydro_resid_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "residual water conent", + "units": "cm3/cm3", + "data": [[0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16], [0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21], [0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21], [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]] + }, + "fates_hydro_rfrac_stem": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of total tree resistance from troot to canopy", + "units": "fraction", + "data": [0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625] + }, + "fates_hydro_rs2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "absorbing root radius", + "units": "m", + "data": [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001] + }, + "fates_hydro_srl": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "specific root length", + "units": "m g-1", + "data": [25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0] + }, + "fates_hydro_thetas_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "saturated water content", + "units": "cm3/cm3", + "data": [[0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65], [0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65], [0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65], [0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75, 0.75]] + }, + "fates_hydro_vg_alpha_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "(used if hydr_htftype_node 2), capillary length parameter in van Genuchten model", + "units": "MPa-1", + "data": [[0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12], [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12], [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12], [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]] + }, + "fates_hydro_vg_m_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "(used if hydr_htftype_node 2),m in van Genuchten 1980 model, 2nd pore size distribution parameter", + "units": "unitless", + "data": [[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]] + }, + "fates_hydro_vg_n_node": { + "dtype": "float", + "dims": ["fates_hydr_organs", "fates_pft"], + "long_name": "(used if hydr_htftype_node 2),n in van Genuchten 1980 model, pore size distribution parameter", + "units": "unitless", + "data": [[2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0], [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]] + }, + "fates_landuse_grazing_palatability": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Relative intensity of leaf grazing/browsing per PFT", + "units": "unitless 0-1", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_landuse_harvest_pprod10": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of harvest wood product that goes to 10-year product pool (remainder goes to 100-year pool)", + "units": "fraction", + "data": [1.0, 0.75, 0.75, 0.75, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_landuse_luc_frac_burned": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of land use change-generated and not-exported material that is burned (the remainder goes to litter)", + "units": "fraction", + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + }, + "fates_landuse_luc_frac_exported": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of land use change-generated wood material that is exported to wood product (the remainder is either burned or goes to litter)", + "units": "fraction", + "data": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.0, 0.0, 0.0, 0.0] + }, + "fates_landuse_luc_pprod10": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of land use change wood product that goes to 10-year product pool (remainder goes to 100-year pool)", + "units": "fraction", + "data": [1.0, 0.75, 0.75, 0.75, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_leaf_agross_btran_model": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "model switch for how gross assimilation affects conductance. See LeafBiophysicsMod.F90, integer constants btran_on_", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + }, + "fates_leaf_c3psn": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "Photosynthetic pathway (1c3, 0c4)", + "units": "flag", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1] + }, + "fates_leaf_fnps": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of light absorbed by non-photosynthetic pigments", + "units": "fraction", + "data": [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15] + }, + "fates_leaf_jmaxha": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "activation energy for jmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", + "units": "J/mol", + "data": [43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0, 43540.0] + }, + "fates_leaf_jmaxhd": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "deactivation energy for jmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", + "units": "J/mol", + "data": [152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0, 152040.0] + }, + "fates_leaf_jmaxse": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "entropy term for jmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", + "units": "J/mol/K", + "data": [495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0, 495.0] + }, + "fates_leaf_slamax": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Maximum Specific Leaf Area (SLA), even if under a dense canopy", + "units": "m^2/gC", + "data": [0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.0954, 0.012, 0.03, 0.03, 0.012, 0.032, 0.05, 0.05, 0.05, 0.05] + }, + "fates_leaf_slatop": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Specific Leaf Area (SLA) at top of canopy, projected area basis", + "units": "m^2/gC", + "data": [0.012, 0.005, 0.024, 0.009, 0.03, 0.03, 0.012, 0.03, 0.03, 0.01, 0.032, 0.027, 0.05, 0.05, 0.027] + }, + "fates_leaf_stomatal_btran_model": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "model switch for how btran affects conductance. See LeafBiophysicsMod.F90, integer constants btran_on_", + "units": "index", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + }, + "fates_leaf_stomatal_intercept": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Minimum unstressed stomatal conductance for Ball-Berry model and Medlyn model", + "units": "umol H2O/m**2/s", + "data": [10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 10000.0, 40000.0, 0.0] + }, + "fates_leaf_stomatal_slope_ballberry": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "stomatal slope parameter, as per Ball-Berry", + "units": "unitless", + "data": [8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 0.0] + }, + "fates_leaf_stomatal_slope_medlyn": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "stomatal slope parameter, as per Medlyn", + "units": "KPa**0.5", + "data": [4.1, 2.3, 2.3, 4.1, 4.4, 4.4, 4.7, 4.7, 4.7, 4.7, 4.7, 2.2, 5.3, 1.6, 0.0] + }, + "fates_leaf_vcmax25top": { + "dtype": "float", + "dims": ["fates_leafage_class", "fates_pft"], + "long_name": "maximum carboxylation rate of Rub. at 25C, canopy top", + "units": "umol CO2/m^2/s", + "data": [[50.0, 62.0, 39.0, 61.0, 58.0, 58.0, 62.0, 54.0, 54.0, 38.0, 54.0, 86.0, 78.0, 78.0, 30.0]] + }, + "fates_leaf_vcmaxha": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "activation energy for vcmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", + "units": "J/mol", + "data": [65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0, 65330.0] + }, + "fates_leaf_vcmaxhd": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "deactivation energy for vcmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", + "units": "J/mol", + "data": [149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0, 149250.0] + }, + "fates_leaf_vcmaxse": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "entropy term for vcmax. NOTE if fates_leaf_photo_tempsens_model2 then these values are NOT USED", + "units": "J/mol/K", + "data": [485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0, 485.0] + }, + "fates_leafn_vert_scaler_coeff1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Coefficient one for decrease in leaf nitrogen through the canopy, from Lloyd et al. 2010.", + "units": "unitless", + "data": [0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963] + }, + "fates_leafn_vert_scaler_coeff2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Coefficient two for decrease in leaf nitrogen through the canopy, from Lloyd et al. 2010.", + "units": "unitless", + "data": [2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43] + }, + "fates_maintresp_leaf_atkin2017_baserate": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf maintenance respiration base rate parameter (r0) per Atkin et al 2017", + "units": "umol CO2/m^2/s", + "data": [1.756, 1.4995, 1.4995, 1.756, 1.756, 1.756, 2.0749, 2.0749, 2.0749, 2.0749, 2.0749, 2.1956, 2.1956, 2.1956, 2.1956] + }, + "fates_maintresp_leaf_ryan1991_baserate": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf maintenance respiration base rate per Ryan et al 1991", + "units": "gC/gN/s", + "data": [2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06, 2.525e-06] + }, + "fates_maintresp_leaf_vert_scaler_coeff1": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf maintenance respiration decrease through the canopy. Only applies to Atkin et al. 2017. For proportionality between photosynthesis and respiration through the canopy, match with fates_leafn_vert_scaler_coeff1.", + "units": "unitless", + "data": [0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963, 0.00963] + }, + "fates_maintresp_leaf_vert_scaler_coeff2": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf maintenance respiration decrease through the canopy. Only applies to Atkin et al. 2017. For proportionality between photosynthesis and respiration through the canopy, match with fates_leafn_vert_scaler_coeff2.", + "units": "unitless", + "data": [2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43, 2.43] + }, + "fates_maintresp_reduction_curvature": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "curvature of MR reduction as f(carbon storage), 1linear, 0very curved", + "units": "unitless (0-1)", + "data": [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + }, + "fates_maintresp_reduction_intercept": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "intercept of MR reduction as f(carbon storage), 0no throttling, 1max throttling", + "units": "unitless (0-1)", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_maintresp_reduction_upthresh": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "upper threshold for storage biomass (relative to leaf biomass) above which MR is not reduced", + "units": "unitless (0-1)", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_mort_bmort": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "background mortality rate", + "units": "1/yr", + "data": [0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.016, 0.01, 0.014, 0.014, 0.014, 0.014] + }, + "fates_mort_freezetol": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "minimum temperature tolerance", + "units": "degrees C", + "data": [2.5, -55.0, -80.0, -30.0, 2.5, -80.0, -60.0, -10.0, -80.0, -71.0, -95.0, -89.0, -20.0, 2.5, -89.0] + }, + "fates_mort_hf_flc_threshold": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "plant fractional loss of conductivity at which drought mortality begins for hydraulic model", + "units": "fraction", + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] + }, + "fates_mort_hf_sm_threshold": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "soil moisture (btran units) at which drought mortality begins for non-hydraulic model", + "units": "unitless", + "data": [1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06] + }, + "fates_mort_ip_age_senescence": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Mortality cohort age senescence inflection point. If _ this mortality term is off. Setting this value turns on age dependent mortality.", + "units": "years", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_mort_ip_size_senescence": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Mortality dbh senescence inflection point. If _ this mortality term is off. Setting this value turns on size dependent mortality", + "units": "dbh cm", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_mort_prescribed_canopy": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "mortality rate of canopy trees for prescribed physiology mode", + "units": "1/yr", + "data": [0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194, 0.0194] + }, + "fates_mort_prescribed_understory": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "mortality rate of understory trees for prescribed physiology mode", + "units": "1/yr", + "data": [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025] + }, + "fates_mort_r_age_senescence": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Mortality age senescence rate of change. Sensible range is around 0.03-0.06. Larger values givesteeper mortality curves.", + "units": "mortality rate year^-1", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_mort_r_size_senescence": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Mortality dbh senescence rate of change. Sensible range is around 0.03-0.06. Larger values give steeper mortality curves.", + "units": "mortality rate dbh^-1", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_mort_scalar_coldstress": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum mortality rate from cold stress", + "units": "1/yr", + "data": [3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 2.3, 3.0, 3.0, 2.3] + }, + "fates_mort_scalar_cstarvation": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum mortality rate from carbon starvation", + "units": "1/yr", + "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.57, 0.6, 0.6, 0.6, 0.6] + }, + "fates_mort_scalar_hydrfailure": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum mortality rate from hydraulic failure", + "units": "1/yr", + "data": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.8, 0.6, 0.6, 0.6, 0.6] + }, + "fates_mort_upthresh_cstarvation": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "threshold for storage biomass (relative to target leaf biomass) above which carbon starvation is zero", + "units": "unitless", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_nonhydro_smpsc": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Soil water potential at full stomatal closure", + "units": "mm", + "data": [-255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0, -255000.0] + }, + "fates_nonhydro_smpso": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Soil water potential at full stomatal opening", + "units": "mm", + "data": [-66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0, -66000.0] + }, + "fates_phen_cold_size_threshold": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "the dbh size above which will lead to phenology-related stem and leaf drop", + "units": "cm", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_phen_drought_threshold": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "threshold for drought phenology (or lower threshold for semi-deciduous PFTs) the quantity depends on the sign if positive, the threshold is volumetric soil moisture (m3/m3). If negative, the threshold is soil matric potentical (mm)", + "units": "m3/m3 or mm", + "data": [-152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4, -152957.4] + }, + "fates_phen_flush_fraction": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Upon bud-burst, the maximum fraction of storage carbon used for flushing leaves", + "units": "fraction", + "data": [null, null, 0.5, null, 0.5, 0.5, null, 0.5, 0.5, null, 0.5, 0.5, 0.5, 0.5, 0.5] + }, + "fates_phen_fnrt_drop_fraction": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of fine roots to drop during drought/cold", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_phen_leaf_habit": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "Flag for leaf phenology habit. 1 - evergreen 2 - season (cold) deciduous 3 - stress (hydro) deciduous 4 - stress (hydro) semi-deciduous", + "units": "flag", + "data": [1, 1, 2, 1, 3, 2, 1, 3, 2, 1, 2, 2, 3, 3, 1] + }, + "fates_phen_mindaysoff": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "day threshold compared against days since leaves abscised (shed)", + "units": "days", + "data": [100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] + }, + "fates_phen_moist_threshold": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "upper threshold for drought phenology (only for drought semi-deciduous PFTs) the quantity depends on the sign if positive, the threshold is volumetric soil moisture (m3/m3). If negative, the threshold is soil matric potentical (mm)", + "units": "m3/m3 or mm", + "data": [-122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9, -122365.9] + }, + "fates_phen_stem_drop_fraction": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of stems to drop for non-woody species during drought/cold", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_prescribed_npp_canopy": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "NPP per unit crown area of canopy trees for prescribed physiology mode", + "units": "kgC / m^2 / yr", + "data": [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4] + }, + "fates_prescribed_npp_understory": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "NPP per unit crown area of understory trees for prescribed physiology mode", + "units": "kgC / m^2 / yr", + "data": [0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125, 0.03125] + }, + "fates_rad_leaf_clumping_index": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "factor describing how much self-occlusion of leaf scattering elements decreases light interception", + "units": "fraction (0-1)", + "data": [0.85, 0.85, 0.8, 0.85, 0.85, 0.9, 0.85, 0.9, 0.9, 0.85, 0.9, 0.75, 0.75, 0.75, 10.0] + }, + "fates_rad_leaf_rhonir": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf reflectance near-IR", + "units": "fraction", + "data": [0.46, 0.41, 0.39, 0.46, 0.41, 0.41, 0.46, 0.41, 0.41, 0.46, 0.41, 0.28, 0.28, 0.28, 0.28] + }, + "fates_rad_leaf_rhovis": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf reflectance visible", + "units": "fraction", + "data": [0.11, 0.09, 0.08, 0.11, 0.08, 0.08, 0.11, 0.08, 0.08, 0.11, 0.08, 0.05, 0.05, 0.05, 0.05] + }, + "fates_rad_leaf_taunir": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf transmittance near-IR", + "units": "fraction", + "data": [0.33, 0.32, 0.42, 0.33, 0.43, 0.43, 0.33, 0.43, 0.43, 0.33, 0.43, 0.4, 0.4, 0.4, 0.01] + }, + "fates_rad_leaf_tauvis": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf transmittance visible", + "units": "fraction", + "data": [0.06, 0.04, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.05, 0.05, 0.05, 0.01] + }, + "fates_rad_leaf_xl": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Leaf/stem orientation index", + "units": "unitless", + "data": [0.32, 0.01, 0.01, 0.32, 0.2, 0.59, 0.32, 0.59, 0.59, 0.32, 0.59, -0.23, -0.23, -0.23, 0.0] + }, + "fates_rad_stem_rhonir": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Stem reflectance near-IR", + "units": "fraction", + "data": [0.49, 0.36, 0.36, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.49, 0.53, 0.53, 0.53, 0.53] + }, + "fates_rad_stem_rhovis": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Stem reflectance visible", + "units": "fraction", + "data": [0.21, 0.12, 0.12, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.21, 0.31, 0.31, 0.31, 0.31] + }, + "fates_rad_stem_taunir": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Stem transmittance near-IR", + "units": "fraction", + "data": [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.25, 0.25, 0.25, 0.01] + }, + "fates_rad_stem_tauvis": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Stem transmittance visible", + "units": "fraction", + "data": [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.12, 0.12, 0.12, 0.01] + }, + "fates_recruit_height_min": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "the minimum height (ie starting height) of a newly recruited plant", + "units": "m", + "data": [1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 0.2, 0.2, 0.2, 0.8, 0.8, 0.11, 0.2, 0.2, 0.11] + }, + "fates_recruit_init_density": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "initial seedling density for a cold-start near-bare-ground simulation. If negative sets initial tree dbh - only to be used in nocomp mode", + "units": "stems/m2", + "data": [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.16, 0.2, 0.2, 0.2, 0.2, 0.2] + }, + "fates_recruit_init_seed": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "initial seed pool - per m2 of associated pft-patch for no-comp, per m2 of whole site for non no-comp", + "units": "kg/m2", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_recruit_prescribed_rate": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "recruitment rate for prescribed physiology mode", + "units": "n/yr", + "data": [0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02] + }, + "fates_recruit_seed_alloc": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of available carbon balance allocated to seeds", + "units": "fraction", + "data": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.07, 0.1, 0.0, 0.0, 0.0, 0.0] + }, + "fates_recruit_seed_alloc_mature": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of available carbon balance allocated to seeds in mature plants (adds to fates_seed_alloc)", + "units": "fraction", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.9, 0.9, 0.9, 0.9, 0.9, 0.25, 0.25, 0.2, 0.25] + }, + "fates_recruit_seed_dbh_repro_threshold": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "the diameter where the plant will increase allocation to the seed pool by fraction fates_recruit_seed_alloc_mature", + "units": "cm", + "data": [90.0, 80.0, 80.0, 80.0, 90.0, 80.0, 3.0, 3.0, 2.0, 2.4, 1.9, 3.0, 3.0, 3.0, 3.0] + }, + "fates_recruit_seed_germination_rate": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of seeds that germinate per year", + "units": "yr-1", + "data": [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.4, 0.49, 0.29, 0.5, 0.5, 0.29] + }, + "fates_recruit_seed_supplement": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Supplemental external seed rain source term (non-mass conserving)", + "units": "KgC/m2/yr", + "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_seed_dispersal_fraction": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of seed rain to be dispersed to other grid cells", + "units": "fraction", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_seed_dispersal_max_dist": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "maximum seed dispersal distance for a given pft", + "units": "m", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_seed_dispersal_pdf_scale": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "seed dispersal probability density function scale parameter, A, Table 1 Bullock et al 2016", + "units": "unitless", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_seed_dispersal_pdf_shape": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "seed dispersal probability density function shape parameter, B, Table 1 Bullock et al 2016", + "units": "unitless", + "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] + }, + "fates_stoich_nitr": { + "dtype": "float", + "dims": ["fates_plant_organs", "fates_pft"], + "long_name": "target nitrogen concentration (ratio with carbon) of organs", + "units": "gN/gC", + "data": [[0.033, 0.029, 0.04, 0.033, 0.04, 0.04, 0.033, 0.04, 0.04, 0.033, 0.04, 0.04, 0.04, 0.04, 0.04], [0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024, 0.024], [1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08], [0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047, 0.0047]] + }, + "fates_stoich_phos": { + "dtype": "float", + "dims": ["fates_plant_organs", "fates_pft"], + "long_name": "target phosphorus concentration (ratio with carbon) of organs", + "units": "gP/gC", + "data": [[0.0033, 0.0029, 0.004, 0.0033, 0.004, 0.004, 0.0033, 0.004, 0.004, 0.0033, 0.004, 0.004, 0.004, 0.004, 0.004], [0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024, 0.0024], [1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09], [0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047, 0.00047]] + }, + "fates_trim_inc": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Arbitrary incremental change in trimming function.", + "units": "m2/m2", + "data": [0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03] + }, + "fates_trim_limit": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Arbitrary limit to reductions in leaf area with stress", + "units": "m2/m2", + "data": [0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3] + }, + "fates_trs_repro_alloc_a": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "shape parameter for sigmoidal function relating dbh to reproductive allocation", + "units": "fraction", + "data": [0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049, 0.0049] + }, + "fates_trs_repro_alloc_b": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "intercept parameter for sigmoidal function relating dbh to reproductive allocation", + "units": "fraction", + "data": [-2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171, -2.6171] + }, + "fates_trs_repro_frac_seed": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "fraction of reproductive mass that is seed", + "units": "fraction", + "data": [0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24] + }, + "fates_trs_seedling_a_emerg": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "mean fraction of seed bank emerging", + "units": "day -1", + "data": [0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003] + }, + "fates_trs_seedling_b_emerg": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "seedling emergence sensitivity to soil moisture", + "units": "day -1", + "data": [1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2] + }, + "fates_trs_seedling_background_mort": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "background seedling mortality rate", + "units": "yr-1", + "data": [0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371, 0.1085371] + }, + "fates_trs_seedling_h2o_mort_a": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "coefficient in moisture-based seedling mortality", + "units": "-", + "data": [4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17, 4.070565e-17] + }, + "fates_trs_seedling_h2o_mort_b": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "coefficient in moisture-based seedling mortality", + "units": "-", + "data": [-6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11, -6.390757e-11] + }, + "fates_trs_seedling_h2o_mort_c": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "coefficient in moisture-based seedling mortality", + "units": "-", + "data": [1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05, 1.268992e-05] + }, + "fates_trs_seedling_light_mort_a": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "light-based seedling mortality coefficient", + "units": "-", + "data": [-0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694, -0.009897694] + }, + "fates_trs_seedling_light_mort_b": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "light-based seedling mortality coefficient", + "units": "-", + "data": [-7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063, -7.154063] + }, + "fates_trs_seedling_light_rec_a": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "coefficient in light-based seedling to sapling transition", + "units": "-", + "data": [0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007] + }, + "fates_trs_seedling_light_rec_b": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "coefficient in light-based seedling to sapling transition", + "units": "-", + "data": [0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615, 0.8615] + }, + "fates_trs_seedling_mdd_crit": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "critical moisture deficit (suction) day accumulation for seedling moisture-based seedling mortality to begin", + "units": "mm H2O day", + "data": [1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0, 1400000.0] + }, + "fates_trs_seedling_par_crit_germ": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "critical light level for germination", + "units": "MJ m-2 day-1", + "data": [0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656, 0.656] + }, + "fates_trs_seedling_psi_crit": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "critical soil moisture (suction) for seedling stress", + "units": "mm H2O", + "data": [-251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7, -251995.7] + }, + "fates_trs_seedling_psi_emerg": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "critical soil moisture for seedling emergence", + "units": "mm h20 suction", + "data": [-15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65, -15744.65] + }, + "fates_trs_seedling_root_depth": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "rooting depth of seedlings", + "units": "m", + "data": [0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06] + }, + "fates_turb_displar": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Ratio of displacement height to canopy top height", + "units": "unitless", + "data": [0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67] + }, + "fates_turb_leaf_diameter": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Characteristic leaf dimension", + "units": "m", + "data": [0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04] + }, + "fates_turb_z0mr": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "Ratio of momentum roughness length to canopy top height", + "units": "unitless", + "data": [0.075, 0.055, 0.055, 0.075, 0.055, 0.055, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12] + }, + "fates_turnover_branch": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "turnover time of branches", + "units": "yr", + "data": [150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 150.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_turnover_fnrt": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "root longevity (alternatively, turnover time)", + "units": "yr", + "data": [1.0, 2.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_turnover_leaf_canopy": { + "dtype": "float", + "dims": ["fates_leafage_class", "fates_pft"], + "long_name": "Leaf longevity (ie turnover timescale) of canopy plants. For drought-deciduous PFTs, this also indicates the maximum length of the growing (i.e., leaves on) season.", + "units": "yr", + "data": [[1.5, 4.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0, 1.0]] + }, + "fates_turnover_leaf_ustory": { + "dtype": "float", + "dims": ["fates_leafage_class", "fates_pft"], + "long_name": "Leaf longevity (ie turnover timescale) of understory plants.", + "units": "yr", + "data": [[1.5, 4.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.5, 1.0, 1.0, 1.0, 1.0, 1.0]] + }, + "fates_turnover_senleaf_fdrought": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "multiplication factor for leaf longevity of senescent leaves during drought", + "units": "unitless[0-1]", + "data": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + }, + "fates_wood_density": { + "dtype": "float", + "dims": ["fates_pft"], + "long_name": "mean density of woody tissue in plant", + "units": "g/cm3", + "data": [0.548327, 0.44235, 0.454845, 0.754336, 0.548327, 0.566452, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7] + }, + "fates_woody": { + "dtype": "integer", + "dims": ["fates_pft"], + "long_name": "Binary woody lifeform flag", + "units": "logical flag", + "data": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0] + }, + "fates_hlm_pft_map": { + "dtype": "float", + "dims": ["fates_hlm_pftno", "fates_pft"], + "long_name": "In fixed biogeog mode, fraction of HLM area associated with each FATES PFT", + "units": "area fraction", + "data": [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.8, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]] + }, + "fates_fire_FBD": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "fuel bulk density", + "units": "kg Biomass/m3", + "data": [15.4, 16.8, 19.6, 999.0, 4.0, 4.0] + }, + "fates_fire_low_moisture_Coeff": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "spitfire parameter, equation B1 Thonicke et al 2010", + "units": "NA", + "data": [1.12, 1.09, 0.98, 0.8, 1.15, 1.15] + }, + "fates_fire_low_moisture_Slope": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "spitfire parameter, equation B1 Thonicke et al 2010", + "units": "NA", + "data": [0.62, 0.72, 0.85, 0.8, 0.62, 0.62] + }, + "fates_fire_mid_moisture": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "spitfire litter moisture threshold to be considered medium dry", + "units": "NA", + "data": [0.72, 0.51, 0.38, 1.0, 0.8, 0.8] + }, + "fates_fire_mid_moisture_Coeff": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "spitfire parameter, equation B1 Thonicke et al 2010", + "units": "NA", + "data": [2.35, 1.47, 1.06, 0.8, 3.2, 3.2] + }, + "fates_fire_mid_moisture_Slope": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "spitfire parameter, equation B1 Thonicke et al 2010", + "units": "NA", + "data": [2.35, 1.47, 1.06, 0.8, 3.2, 3.2] + }, + "fates_fire_min_moisture": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "spitfire litter moisture threshold to be considered very dry", + "units": "NA", + "data": [0.18, 0.12, 0.0, 0.0, 0.24, 0.24] + }, + "fates_fire_SAV": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "fuel surface area to volume ratio", + "units": "cm-1", + "data": [13.0, 3.58, 0.98, 0.2, 66.0, 66.0] + }, + "fates_frag_maxdecomp": { + "dtype": "float", + "dims": ["fates_litterclass"], + "long_name": "maximum rate of litter and CWD transfer from non-decomposing class into decomposing class", + "units": "yr-1", + "data": [0.52, 0.383, 0.383, 0.19, 1.0, 999.0] + }, + "fates_frag_cwd_frac": { + "dtype": "float", + "dims": ["fates_NCWD"], + "long_name": "fraction of woody (bdead+bsw) biomass destined for CWD pool", + "units": "fraction", + "data": [0.045, 0.075, 0.21, 0.67] + }, + "fates_landuse_crop_lu_pft_vector": { + "dtype": "integer", + "dims": ["fates_landuseclass"], + "long_name": "the FATES PFT index to use on a given crop land-use type (dummy value of -999 for non-crop types)", + "units": "NA", + "data": [-999, -999, -999, -999, 13] + }, + "fates_landuse_grazing_rate": { + "dtype": "float", + "dims": ["fates_landuseclass"], + "long_name": "fraction of leaf biomass consumed by grazers per day", + "units": "1/day", + "data": [0.0, 0.0, 0.0, 0.0, 0.0] + }, + "fates_max_nocomp_pfts_by_landuse": { + "dtype": "integer", + "dims": ["fates_landuseclass"], + "long_name": "maximum number of nocomp PFTs on each land use type (only used in nocomp mode)", + "units": "count", + "data": [4, 4, 1, 1, 1] + }, + "fates_maxpatches_by_landuse": { + "dtype": "integer", + "dims": ["fates_landuseclass"], + "long_name": "maximum number of patches per site on each land use type", + "units": "count", + "data": [9, 4, 1, 1, 1] + }, + "fates_canopy_closure_thresh": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "tree canopy coverage at which crown area allometry changes from savanna to forest value", + "units": "unitless", + "data": [0.8] + }, + "fates_cnp_eca_plant_escalar": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "scaling factor for plant fine root biomass to calculate nutrient carrier enzyme abundance (ECA)", + "units": "", + "data": [1.25e-05] + }, + "fates_cohort_age_fusion_tol": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum fraction in differece in cohort age between cohorts.", + "units": "unitless", + "data": [0.08] + }, + "fates_cohort_size_fusion_tol": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum fraction in difference in dbh between cohorts", + "units": "unitless", + "data": [0.08] + }, + "fates_comp_excln": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "IF POSITIVE weighting factor (exponent on dbh) for canopy layer exclusion and promotion, IF NEGATIVE switch to use deterministic height sorting", + "units": "none", + "data": [-1.0] + }, + "fates_damage_canopy_layer_code": { + "dtype": "integer", + "dims": ["scalar"], + "long_name": "Integer code that decides whether damage affects canopy trees (1), understory trees (2)", + "units": "unitless", + "data": [1] + }, + "fates_damage_event_code": { + "dtype": "integer", + "dims": ["scalar"], + "long_name": "Integer code that options how damage events are structured", + "units": "unitless", + "data": [1] + }, + "fates_dev_arbitrary": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Unassociated free parameter that developers can use for testing arbitrary new hypotheses", + "units": "unknown", + "data": [null] + }, + "fates_nvp_extinction_coeff": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Beer's law extinction coefficient for NVP (moss/lichen) radiation absorption", + "units": "unitless", + "data": [0.5] + }, + "fates_nvp_bulk_density": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "NVP (moss/lichen) bulk density", + "units": "kg m-3", + "data": [75.0] + }, + "fates_nvp_sla": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "NVP (moss/lichen) specific leaf area", + "units": "m2 g-1", + "data": [0.3] + }, + "fates_fire_active_crown_fire": { + "dtype": "integer", + "dims": ["scalar"], + "long_name": "flag, 1active crown fire 0no active crown fire", + "units": "0 or 1", + "data": [0] + }, + "fates_fire_cg_strikes": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "fraction of cloud to ground lightning strikes", + "units": "fraction (0-1)", + "data": [0.2] + }, + "fates_fire_drying_ratio": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, fire drying ratio for fuel moisture, alpha_FMC EQ 6 Thonicke et al 2010", + "units": "NA", + "data": [66000.0] + }, + "fates_fire_durat_slope": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, fire max duration slope, Equation 14 Thonicke et al 2010", + "units": "NA", + "data": [-11.06] + }, + "fates_fire_fdi_alpha": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, EQ 7 Venevsky et al. GCB 2002,(modified EQ 8 Thonicke et al. 2010)", + "units": "NA", + "data": [0.00037] + }, + "fates_fire_fuel_energy": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, heat content of fuel", + "units": "kJ/kg", + "data": [18000.0] + }, + "fates_fire_max_durat": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, fire maximum duration, Equation 14 Thonicke et al 2010", + "units": "minutes", + "data": [240.0] + }, + "fates_fire_miner_damp": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, mineral-dampening coefficient EQ A1 Thonicke et al 2010", + "units": "NA", + "data": [0.41739] + }, + "fates_fire_miner_total": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, total mineral content, Table A1 Thonicke et al 2010", + "units": "fraction", + "data": [0.055] + }, + "fates_fire_nignitions": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "number of annual ignitions per square km", + "units": "ignitions per year per km2", + "data": [15.0] + }, + "fates_fire_part_dens": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, oven dry particle density, Table A1 Thonicke et al 2010", + "units": "kg/m2", + "data": [513.0] + }, + "fates_fire_threshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "spitfire parameter, fire intensity threshold for tracking fires that spread", + "units": "kW/m", + "data": [50.0] + }, + "fates_frag_cwd_fcel": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Cellulose fraction for CWD", + "units": "unitless", + "data": [0.76] + }, + "fates_frag_cwd_flig": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Lignin fraction of coarse woody debris", + "units": "unitless", + "data": [0.24] + }, + "fates_hydro_kmax_rsurf1": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum conducitivity for unit root surface (into root)", + "units": "kg water/m2 root area/Mpa/s", + "data": [20.0] + }, + "fates_hydro_kmax_rsurf2": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum conducitivity for unit root surface (out of root)", + "units": "kg water/m2 root area/Mpa/s", + "data": [0.0001] + }, + "fates_hydro_psi0": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "sapwood water potential at saturation", + "units": "MPa", + "data": [0.0] + }, + "fates_hydro_psicap": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "sapwood water potential at which capillary reserves exhausted", + "units": "MPa", + "data": [-0.6] + }, + "fates_landuse_grazing_carbon_use_eff": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "carbon use efficiency of material eaten by grazers/browsers (i.e. amount in manure / amount consumed)", + "units": "unitless", + "data": [0.0] + }, + "fates_landuse_grazing_maxheight": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum height that grazers (browsers, actually) can reach", + "units": "m", + "data": [1.0] + }, + "fates_landuse_grazing_nitrogen_use_eff": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "nitrogen use efficiency of material eaten by grazers/browsers (i.e. amount in manure / amount consumed)", + "units": "unitless", + "data": [0.25] + }, + "fates_landuse_grazing_phosphorus_use_eff": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "phosphorus use efficiency of material eaten by grazers/browsers (i.e. amount in manure / amount consumed)", + "units": "unitless", + "data": [0.5] + }, + "fates_landuse_logging_coll_under_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Fraction of stems killed in the understory when logging generates disturbance", + "units": "fraction", + "data": [0.0] + }, + "fates_landuse_logging_collateral_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Fraction of large stems in upperstory that die from logging collateral damage", + "units": "fraction", + "data": [0.0] + }, + "fates_landuse_logging_dbhmax": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Maximum dbh below which logging is applied (unset values flag this to be unused)", + "units": "cm", + "data": [null] + }, + "fates_landuse_logging_dbhmax_infra": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Tree diameter, above which infrastructure from logging does not impact damage or mortality.", + "units": "cm", + "data": [0.0] + }, + "fates_landuse_logging_dbhmin": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Minimum dbh at which logging is applied", + "units": "cm", + "data": [0.0] + }, + "fates_landuse_logging_direct_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Fraction of stems logged directly per event", + "units": "fraction", + "data": [1.0] + }, + "fates_landuse_logging_event_code": { + "dtype": "integer", + "dims": ["scalar"], + "long_name": "Integer code that options how logging events are structured", + "units": "unitless", + "data": [-30] + }, + "fates_landuse_logging_export_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "fraction of trunk product being shipped offsite, the leftovers will be left onsite as large CWD", + "units": "fraction", + "data": [0.8] + }, + "fates_landuse_logging_mechanical_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Fraction of stems killed due infrastructure an other mechanical means", + "units": "fraction", + "data": [0.0] + }, + "fates_leaf_photo_temp_acclim_thome_time": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Length of the window for the long-term (i.e. T_home in Kumarathunge et al 2019) exponential moving average (ema) of vegetation temperature used in photosynthesis temperature acclimation (used if fates_leaf_photo_tempsens_model 2)", + "units": "years", + "data": [30.0] + }, + "fates_leaf_photo_temp_acclim_timescale": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Length of the window for the exponential moving average (ema) of vegetation temperature used in photosynthesis temperature acclimation (used if fates_maintresp_leaf_model2 or fates_leaf_photo_tempsens_model 2)", + "units": "days", + "data": [30.0] + }, + "fates_maintresp_nonleaf_baserate": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Base maintenance respiration rate for plant tissues, using Ryan 1991", + "units": "gC/gN/s", + "data": [2.525e-06] + }, + "fates_maxcohort": { + "dtype": "integer", + "dims": ["scalar"], + "long_name": "maximum number of cohorts per patch. Actual number of cohorts also depend on cohort fusion tolerances", + "units": "count", + "data": [100] + }, + "fates_mort_disturb_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "fraction of canopy mortality that results in disturbance (i.e. transfer of area from old to new patch)", + "units": "fraction", + "data": [1.0] + }, + "fates_mort_understorey_death": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "fraction of plants in understorey cohort impacted by overstorey tree-fall", + "units": "fraction", + "data": [0.55983] + }, + "fates_patch_fusion_tol": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum fraction in difference in profiles between patches", + "units": "unitless", + "data": [0.05] + }, + "fates_phen_chilltemp": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "chilling day counting threshold for vegetation", + "units": "degrees C", + "data": [5.0] + }, + "fates_phen_coldtemp": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "vegetation temperature exceedance that flags a cold-day for leaf-drop", + "units": "degrees C", + "data": [7.5] + }, + "fates_phen_gddthresh_a": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "GDD accumulation function, intercept parameter gdd_thesh a + b exp(c*ncd)", + "units": "none", + "data": [-68.0] + }, + "fates_phen_gddthresh_b": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "GDD accumulation function, multiplier parameter gdd_thesh a + b exp(c*ncd)", + "units": "none", + "data": [638.0] + }, + "fates_phen_gddthresh_c": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "GDD accumulation function, exponent parameter gdd_thesh a + b exp(c*ncd)", + "units": "none", + "data": [-0.01] + }, + "fates_phen_mindayson": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "day threshold compared against days since leaves became on-allometry", + "units": "days", + "data": [90.0] + }, + "fates_phen_ncolddayslim": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "day threshold exceedance for temperature leaf-drop", + "units": "days", + "data": [5.0] + }, + "fates_q10_froz": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Q10 for frozen-soil respiration rates", + "units": "unitless", + "data": [1.5] + }, + "fates_q10_mr": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Q10 for maintenance respiration", + "units": "unitless", + "data": [1.5] + }, + "fates_rxfire_AB": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "daily burn capacity of prescribed fire", + "units": "fraction/day", + "data": [0.01] + }, + "fates_rxfire_fuel_max": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum fuel load at or above which prescribed fire is disallowed", + "units": "kgC/m2", + "data": [1.5] + }, + "fates_rxfire_fuel_min": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum fuel load at or below which prescribed fire is disallowed", + "units": "kgC/m2", + "data": [0.5] + }, + "fates_rxfire_max_threshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum energy threshold at or above which prescribed fire is disallowed", + "units": "kJ/m/s or kW/m", + "data": [500.0] + }, + "fates_rxfire_min_frac": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum fraction of land needs to be burnable to allow rx fire", + "units": "fraction", + "data": [0.1] + }, + "fates_rxfire_min_threshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum energy threshold at or above which prescribed fire is disallowed", + "units": "kJ/m/s or kW/m", + "data": [50.0] + }, + "fates_rxfire_rh_lwthreshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum relative humidity threshold below which prescribed fire is disallowed", + "units": "%", + "data": [30.0] + }, + "fates_rxfire_rh_upthreshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum relative humidity threshold above which prescribed fire is disallowed", + "units": "%", + "data": [55.0] + }, + "fates_rxfire_temp_lwthreshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum temprature threshold below which prescribed fire is disallowed", + "units": "degree C", + "data": [5.0] + }, + "fates_rxfire_temp_upthreshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum temprature threshold above which prescribed fire is disallowed", + "units": "degree C", + "data": [30.0] + }, + "fates_rxfire_wind_lwthreshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "minimum wind speed threshold below which prescribed fire is disallowed", + "units": "%", + "data": [2.0] + }, + "fates_rxfire_wind_upthreshold": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "maximum wind speed threshold above which prescribed fire is disallowed", + "units": "%", + "data": [10.0] + }, + "fates_soil_salinity": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "soil salinity used for model when not coupled to dynamic soil salinity", + "units": "ppt", + "data": [0.4] + }, + "fates_trs_seedling2sap_par_timescale": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Length of the window for the exponential moving average of par at the seedling layer used to calculate seedling to sapling transition rates", + "units": "days", + "data": [32.0] + }, + "fates_trs_seedling_emerg_h2o_timescale": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Length of the window for the exponential moving average of smp used to calculate seedling emergence", + "units": "days", + "data": [7.0] + }, + "fates_trs_seedling_mdd_timescale": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Length of the window for the exponential moving average of moisture deficit days used to calculate seedling mortality", + "units": "days", + "data": [126.0] + }, + "fates_trs_seedling_mort_par_timescale": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "Length of the window for the exponential moving average of par at the seedling layer used to calculate seedling mortality", + "units": "days", + "data": [32.0] + }, + "fates_vai_top_bin_width": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "width in VAI units of uppermost leaf+stem layer scattering element in each canopy layer", + "units": "m2/m2", + "data": [1.0] + }, + "fates_vai_width_increase_factor": { + "dtype": "float", + "dims": ["scalar"], + "long_name": "factor by which each leaf+stem scattering element increases in VAI width (1 uniform spacing)", + "units": "unitless", + "data": [1.0] + } + } +} diff --git a/radiation/FatesRadiationDriveMod.F90 b/radiation/FatesRadiationDriveMod.F90 index a401388f7e..c1ddf81823 100644 --- a/radiation/FatesRadiationDriveMod.F90 +++ b/radiation/FatesRadiationDriveMod.F90 @@ -12,8 +12,11 @@ module FatesRadiationDriveMod use EDTypesMod , only : ed_site_type use FatesPatchMod, only : fates_patch_type + ! [PORTED by Hui Tang: NVP cohort access for Beer's law radiation] + use FatesCohortMod, only : fates_cohort_type use EDParamsMod, only : maxpft use EDParamsMod , only : GetNVegLayers + use EDParamsMod , only : nvp_extinction_coeff ! [PORTED by Hui Tang: NVP Beer's law k from parameter file] use FatesConstantsMod , only : r8 => fates_r8 use FatesConstantsMod , only : fates_unset_r8 use FatesConstantsMod , only : itrue @@ -24,6 +27,9 @@ module FatesRadiationDriveMod use FatesInterfaceTypesMod , only : bc_out_type use FatesInterfaceTypesMod , only : numpft use FatesInterfaceTypesMod , only : hlm_radiation_model + ! [PORTED by Hui Tang: NVP control flag and radiation model switch] + use FatesInterfaceTypesMod , only : hlm_use_nvp + use FatesInterfaceTypesMod , only : hlm_nvp_rad_model_ground use FatesRadiationMemMod, only : num_rad_stream_types use FatesRadiationMemMod, only : idirect, idiffuse use FatesRadiationMemMod, only : num_swb, ivis, inir, ipar @@ -42,7 +48,9 @@ module FatesRadiationDriveMod use FatesGlobals, only : endrun => fates_endrun use EDPftvarcon, only : EDPftvarcon_inst use FatesNormanRadMod, only : PatchNormanRadiation - + ! [PORTED by Hui Tang: NVP PFT identification by zero stomatal intercept] + use LeafBiophysicsMod, only : lb_params + ! CIME globals use shr_log_mod , only : errMsg => shr_log_errMsg @@ -51,6 +59,7 @@ module FatesRadiationDriveMod private public :: FatesNormalizedCanopyRadiation ! Surface albedo and two-stream fluxes public :: FatesSunShadeFracs + public :: NVPBeerLawAbsorptance ! Beer's law NVP absorptance (Approach A) logical :: debug = .false. ! for debugging this module character(len=*), parameter, private :: sourcefile = & @@ -91,6 +100,12 @@ subroutine FatesNormalizedCanopyRadiation(sites, bc_in, bc_out ) ! index at lop of layer real(r8) :: vai ! total VAI of the scattering element type(fates_patch_type), pointer :: currentPatch ! patch pointer + ! [PORTED by Hui Tang: NVP radiation (R3 ground-albedo modification, R4 Beer's law)] + ! lai_nvp_pa already computed in EDCanopyStructureMod; only a brief cohort walk is + ! needed here to find nvp_ft (the NVP PFT index) for the albedo lookup in R3. + type(fates_cohort_type), pointer :: currentCohort ! cohort pointer (NVP PFT lookup only) + integer :: nvp_ft ! NVP PFT index for EDPftvarcon albedo lookup + real(r8) :: nvp_frac ! NVP fractional coverage of patch [0-1] !----------------------------------------------------------------------- ! ------------------------------------------------------------------------------- @@ -139,7 +154,56 @@ subroutine FatesNormalizedCanopyRadiation(sites, bc_in, bc_out ) currentPatch%gnd_alb_dir(1:num_swb) = bc_in(s)%albgr_dir_rb(1:num_swb) currentPatch%fcansno = bc_in(s)%fcansno_pa(ifp) currentPatch%rad_error(:) = hlm_hio_ignore_val - + + ! [PORTED by Hui Tang: Step 8 R3 - modify ground albedo for NVP (no-snow case only)] + ! Walk cohort list once to find the NVP PFT index for the albedo lookup. + ! NVP is below snow, so ground albedo is only modified when frac_sno_eff_si == 0. + nvp_frac = bc_out(s)%nvp_frac_pa(ifp) + nvp_ft = 0 + ! [PORTED by Hui Tang: R3 - find nvp_ft whenever NVP is present (needed for + ! both no-snow ground albedo R3 and SNICAR omega output nvp_omega_pa)] + if (hlm_use_nvp == itrue .and. nvp_frac > nearzero) then + currentCohort => currentPatch%shortest + do while (associated(currentCohort)) + if (currentCohort%nvp_dz > nearzero) then + nvp_ft = currentCohort%pft + exit + end if + currentCohort => currentCohort%taller + end do + if (nvp_ft > 0) then + ! [PORTED by Hui Tang: set nvp_omega_pa for SNICAR layer-0 (both snow and no-snow)] + ! omega(ib) = rhol + taul: fraction of intercepted radiation that is scattered. + ! Used in SurfaceAlbedoMod to characterise NVP as a SNICAR pseudo-layer. + do ib = 1, num_swb + bc_out(s)%nvp_omega_pa(ifp,ib) = EDPftvarcon_inst%rhol(nvp_ft,ib) + & + EDPftvarcon_inst%taul(nvp_ft,ib) + end do + ! No-snow case only: modify ground albedo for Norman solver (R3) + ! Previous implementation (kept for reference): + ! if (bc_in(s)%frac_sno_eff_si <= 0._r8) then + ! do ib = 1, num_swb + ! currentPatch%gnd_alb_dir(ib) = ... + ! currentPatch%gnd_alb_dif(ib) = ... + ! end do + ! end if + ! [PORTED by Hui Tang: R3 applies only for Approach A (NVP as ground boundary)] + ! Approach B uses soil albedo as lower boundary; Norman solver handles NVP as + ! a canopy leaf layer, so ground albedo must remain the true soil albedo. + if (hlm_nvp_rad_model_ground == itrue .and. & + bc_in(s)%frac_sno_eff_si <= 0._r8) then + do ib = 1, num_swb + currentPatch%gnd_alb_dir(ib) = & + nvp_frac * EDPftvarcon_inst%rhol(nvp_ft,ib) + & + (1._r8 - nvp_frac) * bc_in(s)%albgr_dir_rb(ib) + currentPatch%gnd_alb_dif(ib) = & + nvp_frac * EDPftvarcon_inst%rhol(nvp_ft,ib) + & + (1._r8 - nvp_frac) * bc_in(s)%albgr_dif_rb(ib) + end do + end if + end if + end if + if_zenith_flag: if( bc_in(s)%coszen>0._r8 )then select case(hlm_radiation_model) @@ -221,6 +285,39 @@ subroutine FatesNormalizedCanopyRadiation(sites, bc_in, bc_out ) end associate end select + + ! [PORTED by Hui Tang: NVP absorptance for CLM energy balance when there when no-snow] + ! Approach A: Stand-alone Beer's law on below-vascular-canopy fluxes (trd/tri). NVP not in + ! Norman's canopy so ftdd/ftii are fluxes incident on NVP from above. + ! Approach B: NVP IS in Norman's canopy; sum Norman's per-layer absorbed fractions + ! (fabd_sun_z + fabd_sha_z) for NVP cohort layers. These are per m2 ground, + ! area-weighted. k_nvp band-independent => apply PAR-band value to all swb bands. + if (hlm_use_nvp == itrue) then + if (hlm_nvp_rad_model_ground == itrue) then + ! Approach A: Beer's law absorptance from below-vascular-canopy flux + call NVPBeerLawAbsorptance(nvp_frac, bc_out(s)%lai_nvp_pa(ifp), & + bc_out(s)%fabd_nvp_pa(ifp,:), bc_out(s)%fabi_nvp_pa(ifp,:)) + else + ! Approach B: sum Norman per-layer output for NVP cohorts + bc_out(s)%fabd_nvp_pa(ifp,:) = 0._r8 + bc_out(s)%fabi_nvp_pa(ifp,:) = 0._r8 + if (nvp_frac > nearzero) then + do cl = 1, currentPatch%ncl_p + do ft = 1, numpft + if (lb_params%stomatal_intercept(ft) <= nearzero) then + do iv = 1, currentPatch%nrad(cl,ft) + bc_out(s)%fabd_nvp_pa(ifp,:) = bc_out(s)%fabd_nvp_pa(ifp,:) + & + currentPatch%fabd_sun_z(cl,ft,iv) + currentPatch%fabd_sha_z(cl,ft,iv) + bc_out(s)%fabi_nvp_pa(ifp,:) = bc_out(s)%fabi_nvp_pa(ifp,:) + & + currentPatch%fabi_sun_z(cl,ft,iv) + currentPatch%fabi_sha_z(cl,ft,iv) + end do + end if + end do + end do + end if + end if + end if + endif if_zenith_flag end if if_bareground currentPatch => currentPatch%younger @@ -232,6 +329,30 @@ end subroutine FatesNormalizedCanopyRadiation ! ====================================================================================== + subroutine NVPBeerLawAbsorptance(nvp_frac, lai_nvp, fabd_nvp, fabi_nvp) + ! [PORTED by Hui Tang: Beer's law NVP absorptance - extracted from FatesNormalizedCanopyRadiation] + ! Computes Beer's law absorbed fraction per unit ground area for all radiation bands. + ! k_nvp is band-independent so fabd_nvp == fabi_nvp. + ! Used for CLM energy balance (sabg_lyr layer 0) and Approach A photosynthesis PAR. + implicit none + real(r8), intent(in) :: nvp_frac ! NVP fractional patch coverage [0-1] + real(r8), intent(in) :: lai_nvp ! NVP thallus LAI [m2 thallus / m2 NVP crown] + real(r8), intent(out) :: fabd_nvp(num_swb) ! Beer's law direct absorptance per band [-] + real(r8), intent(out) :: fabi_nvp(num_swb) ! Beer's law diffuse absorptance per band [-] + integer :: ib + if (nvp_frac > nearzero) then + do ib = 1, num_swb + fabd_nvp(ib) = nvp_frac * (1._r8 - exp(-nvp_extinction_coeff * lai_nvp)) + fabi_nvp(ib) = fabd_nvp(ib) ! band-independent: identical to direct + end do + else + fabd_nvp(:) = 0._r8 + fabi_nvp(:) = 0._r8 + end if + end subroutine NVPBeerLawAbsorptance + + ! ====================================================================================== + subroutine FatesSunShadeFracs(nsites, sites,bc_in,bc_out) implicit none @@ -262,6 +383,11 @@ subroutine FatesSunShadeFracs(nsites, sites,bc_in,bc_out) real(r8) :: vai logical :: call_fail type(fates_patch_type), pointer :: fpatch ! patch pointer for failure reporting + ! [PORTED by Hui Tang: NVP PAR computation - below-canopy and approach-dependent absorptance] + real(r8) :: trd_nvp ! below-canopy direct PAR [W/m2 ground] + real(r8) :: tri_nvp ! below-canopy diffuse PAR [W/m2 ground] + real(r8) :: nvp_absv_dir ! NVP direct absorptance fraction (Beer's law or SNICAR) [-] + real(r8) :: nvp_absv_dif ! NVP diffuse absorptance fraction (Beer's law or SNICAR) [-] do s = 1,nsites @@ -342,9 +468,64 @@ subroutine FatesSunShadeFracs(nsites, sites,bc_in,bc_out) end do !iv end do !ft end do !cl - - - + + ! [PORTED by Hui Tang: NVP PAR override - approach-conditioned for Approach A and B] + ! Below-canopy (top-of-snow) direct and diffuse PAR [W/m2 ground]. + ! Approach A (NVP as ground boundary): always override ed_parsun_z/ed_parsha_z + ! using Beer's law fabd_nvp_pa (no-snow) or SNICAR flx_absdv (snow). + ! Also set ed_laisha_z since elai_profile=0 for NVP in Approach A. + ! Approach B (NVP as leaf layer): override snow case only using SNICAR fractions; + ! no-snow case is handled by Norman solver via standard fabd_sun_z/fabd_sha_z. + if (hlm_use_nvp == itrue .and. bc_in(s)%coszen > 0._r8) then + trd_nvp = bc_in(s)%solad_parb(ifp,ipar) * bc_out(s)%ftdd_parb(ifp,ipar) + tri_nvp = bc_in(s)%solad_parb(ifp,ipar) * bc_out(s)%ftid_parb(ifp,ipar) + & + bc_in(s)%solai_parb(ifp,ipar) * bc_out(s)%ftii_parb(ifp,ipar) + + if (hlm_nvp_rad_model_ground == itrue) then + ! Approach A: always override — Beer's law (no snow) or SNICAR (snow) + if (bc_in(s)%snow_depth_si > 0._r8) then + nvp_absv_dir = bc_in(s)%flx_absdv(ifp) ! SNICAR NVP absorption fraction + nvp_absv_dif = bc_in(s)%flx_absiv(ifp) + else + nvp_absv_dir = bc_out(s)%fabd_nvp_pa(ifp,ipar) ! Beer's law (NVPBeerLawAbsorptance) + nvp_absv_dif = bc_out(s)%fabi_nvp_pa(ifp,ipar) + end if + do cl = 1, cpatch%ncl_p + do ft = 1, numpft + if (lb_params%stomatal_intercept(ft) <= nearzero) then + do iv = 1, cpatch%nrad(cl,ft) + cpatch%ed_parsun_z(cl,ft,iv) = 0._r8 + cpatch%ed_parsha_z(cl,ft,iv) = nvp_absv_dir*trd_nvp + nvp_absv_dif*tri_nvp + ! Set NVP LAI for ConvertPar: elai_profile=0 (excluded from Norman), + ! so ed_laisha_z must be set explicitly here. + ! lai_nvp_pa [m2 thallus/m2 NVP crown] x canopy_area_profile gives + ! total thallus per ground area consumed by ConvertPar. + cpatch%ed_laisun_z(cl,ft,iv) = 0._r8 + cpatch%ed_laisha_z(cl,ft,iv) = bc_out(s)%lai_nvp_pa(ifp) + end do + end if + end do + end do + + else + ! Approach B: Norman solver handles no-snow case; override snow case only + if (bc_in(s)%snow_depth_si > 0._r8) then + do cl = 1, cpatch%ncl_p + do ft = 1, numpft + if (lb_params%stomatal_intercept(ft) <= nearzero) then + do iv = 1, cpatch%nrad(cl,ft) + cpatch%ed_parsun_z(cl,ft,iv) = 0._r8 + cpatch%ed_parsha_z(cl,ft,iv) = & + bc_in(s)%flx_absdv(ifp) * trd_nvp + & + bc_in(s)%flx_absiv(ifp) * tri_nvp + end do + end if + end do + end do + end if + end if + end if + else ! if_norm_twostr ! If there is no sun out, we have a trivial solution