diff --git a/biogeochem/EDPatchDynamicsMod.F90 b/biogeochem/EDPatchDynamicsMod.F90 index a513f7717b..62a21ae5f0 100644 --- a/biogeochem/EDPatchDynamicsMod.F90 +++ b/biogeochem/EDPatchDynamicsMod.F90 @@ -1134,8 +1134,8 @@ subroutine spawn_patches( currentSite, bc_in ) endif - currentSite%mass_balance(el)%burn_flux_to_atm = & - currentSite%mass_balance(el)%burn_flux_to_atm + & + currentSite%mass_balance(el)%burn_flux_to_atm(i_disturbance_type) = & + currentSite%mass_balance(el)%burn_flux_to_atm(i_disturbance_type) + & leaf_burn_frac * leaf_m * nc%n ! This term increments the loss flux from surviving trees @@ -2042,7 +2042,7 @@ subroutine TransLitterNewPatch(currentSite, & if (debug) then - burn_flux0 = site_mass%burn_flux_to_atm + burn_flux0 = site_mass%burn_flux_to_atm(dist_type) litter_stock0 = curr_litt%GetTotalLitterMass()*currentPatch%area + & new_litt%GetTotalLitterMass()*newPatch%area end if @@ -2063,7 +2063,7 @@ subroutine TransLitterNewPatch(currentSite, & new_litt%ag_cwd(c) = new_litt%ag_cwd(c) + donatable_mass*donate_m2 curr_litt%ag_cwd(c) = curr_litt%ag_cwd(c) + donatable_mass*retain_m2 - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass + site_mass%burn_flux_to_atm(dist_type) = site_mass%burn_flux_to_atm(dist_type) + burned_mass ! Transfer below ground CWD (none burns) do sl = 1,currentSite%nlevsoil @@ -2091,7 +2091,7 @@ subroutine TransLitterNewPatch(currentSite, & new_litt%leaf_fines(dcmpy) = new_litt%leaf_fines(dcmpy) + donatable_mass*donate_m2 curr_litt%leaf_fines(dcmpy) = curr_litt%leaf_fines(dcmpy) + donatable_mass*retain_m2 - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass + site_mass%burn_flux_to_atm(dist_type) = site_mass%burn_flux_to_atm(dist_type) + burned_mass ! Transfer root fines (none burns) do sl = 1,currentSite%nlevsoil @@ -2122,7 +2122,7 @@ subroutine TransLitterNewPatch(currentSite, & ! EDMainMod start triggering. ! -------------------------------------------------------------------------- if (debug) then - burn_flux1 = site_mass%burn_flux_to_atm + burn_flux1 = site_mass%burn_flux_to_atm(dist_type) litter_stock1 = curr_litt%GetTotalLitterMass()*remainder_area + & new_litt%GetTotalLitterMass()*newPatch%area error = (litter_stock1 - litter_stock0) + (burn_flux1-burn_flux0) @@ -2301,7 +2301,7 @@ subroutine fire_litter_fluxes(currentSite, currentPatch, & donatable_mass*retain_m2*dcmpy_frac end do - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass + site_mass%burn_flux_to_atm(dtype_ifire) = site_mass%burn_flux_to_atm(dtype_ifire) + burned_mass call set_root_fraction(currentSite%rootfrac_scr, pft, currentSite%zi_soil, & bc_in%max_rooting_depth_index_col) @@ -2363,7 +2363,7 @@ subroutine fire_litter_fluxes(currentSite, currentPatch, & donatable_mass = donatable_mass * (1.0_r8-currentCohort%fraction_crown_burned) burned_mass = num_dead_trees * SF_val_CWD_frac_adj(c) * bstem * & currentCohort%fraction_crown_burned - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass + site_mass%burn_flux_to_atm(dtype_ifire) = site_mass%burn_flux_to_atm(dtype_ifire) + burned_mass endif new_litt%ag_cwd(c) = new_litt%ag_cwd(c) + donatable_mass * donate_m2 curr_litt%ag_cwd(c) = curr_litt%ag_cwd(c) + donatable_mass * retain_m2 @@ -2768,7 +2768,8 @@ subroutine landusechange_litter_fluxes(currentSite, currentPatch, & donatable_mass*retain_m2*dcmpy_frac end do - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass + site_mass%burn_flux_to_atm(dtype_ilandusechange) = & + site_mass%burn_flux_to_atm(dtype_ilandusechange) + burned_mass call set_root_fraction(currentSite%rootfrac_scr, pft, currentSite%zi_soil, & bc_in%max_rooting_depth_index_col) @@ -2828,8 +2829,8 @@ subroutine landusechange_litter_fluxes(currentSite, currentPatch, & burned_mass = num_dead_trees * SF_val_CWD_frac(c) * bstem * & EDPftvarcon_inst%landusechange_frac_burned(pft) - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass - + site_mass%burn_flux_to_atm(dtype_ilandusechange) = & + site_mass%burn_flux_to_atm(dtype_ilandusechange) + burned_mass else ! all other pools can end up as timber products or burn or go to litter donatable_mass = donatable_mass * (1.0_r8-EDPftvarcon_inst%landusechange_frac_exported(pft)) * & (1.0_r8-EDPftvarcon_inst%landusechange_frac_burned(pft)) @@ -2841,7 +2842,8 @@ subroutine landusechange_litter_fluxes(currentSite, currentPatch, & woodproduct_mass = num_dead_trees * SF_val_CWD_frac(c) * bstem * & EDPftvarcon_inst%landusechange_frac_exported(pft) - site_mass%burn_flux_to_atm = site_mass%burn_flux_to_atm + burned_mass + site_mass%burn_flux_to_atm(dtype_ilandusechange) = & + site_mass%burn_flux_to_atm(dtype_ilandusechange) + burned_mass ! Amount of trunk mass exported off site [kg/m2] elflux_diags%exported_harvest = elflux_diags%exported_harvest + & diff --git a/main/ChecksBalancesMod.F90 b/main/ChecksBalancesMod.F90 index 325a1089e8..cb0df00c6b 100644 --- a/main/ChecksBalancesMod.F90 +++ b/main/ChecksBalancesMod.F90 @@ -331,7 +331,7 @@ subroutine CheckIntegratedMassPools(site) ibal%iflux_litter = ibal%iflux_litter + & tot_litter_input - & (site_mass%frag_out*area_inv - ediag%tot_seed_turnover) - & - (site_mass%burn_flux_to_atm*area_inv - ediag%burned_liveveg) + (sum(site_mass%burn_flux_to_atm(:))*area_inv - ediag%burned_liveveg) ediag%err_liveveg = ibal%iflux_liveveg - ibal%state_liveveg diff --git a/main/EDMainMod.F90 b/main/EDMainMod.F90 index 7a5bd21840..3563ba0105 100644 --- a/main/EDMainMod.F90 +++ b/main/EDMainMod.F90 @@ -926,8 +926,8 @@ subroutine ed_update_site( currentSite, bc_in, bc_out, is_restarting ) ! Set boundary condition to HLM for carbon loss to atm from fires and grazing ! [kgC/ha/day]*[ha/m2]*[day/s] = [kg/m2/s] - - bc_out%fire_closs_to_atm_si = site_cmass%burn_flux_to_atm * ha_per_m2 * days_per_sec + + bc_out%fire_closs_to_atm_si = sum(site_cmass%burn_flux_to_atm(:)) * ha_per_m2 * days_per_sec bc_out%grazing_closs_to_atm_si = site_cmass%herbivory_flux_out * ha_per_m2 * days_per_sec @@ -1006,7 +1006,7 @@ subroutine TotalBalanceCheck (currentSite, call_index ) flux_out = sum(site_mass%wood_product_harvest(:)) + & sum(site_mass%wood_product_landusechange(:)) + & - site_mass%burn_flux_to_atm + & + sum(site_mass%burn_flux_to_atm(:)) + & site_mass%seed_out + & site_mass%flux_generic_out + & site_mass%frag_out + & @@ -1039,7 +1039,7 @@ subroutine TotalBalanceCheck (currentSite, call_index ) write(fates_log(),*) 'wood_product_harvest: ',site_mass%wood_product_harvest(:) write(fates_log(),*) 'wood_product_landusechange: ',site_mass%wood_product_landusechange(:) write(fates_log(),*) 'error from patch resizing: ',site_mass%patch_resize_err - write(fates_log(),*) 'burn_flux_to_atm: ',site_mass%burn_flux_to_atm + write(fates_log(),*) 'burn_flux_to_atm: ',site_mass%burn_flux_to_atm(:) write(fates_log(),*) 'seed_out: ',site_mass%seed_out write(fates_log(),*) 'flux_generic_out: ',site_mass%flux_generic_out write(fates_log(),*) 'frag_out: ',site_mass%frag_out diff --git a/main/EDTypesMod.F90 b/main/EDTypesMod.F90 index 90be4df5ec..26d39bcf45 100644 --- a/main/EDTypesMod.F90 +++ b/main/EDTypesMod.F90 @@ -301,7 +301,7 @@ module EDTypesMod real(r8) :: wood_product_landusechange(maxpft) ! Total mass exported as wood product from land use change [kg/site/day] - real(r8) :: burn_flux_to_atm ! Total mass burned and exported to the atmosphere [kg/site/day] + real(r8) :: burn_flux_to_atm(n_dist_types) ! Total mass burned and exported to the atmosphere [kg/site/day] real(r8) :: flux_generic_in ! Used for prescribed or artificial input fluxes ! and initialization [kg/site/day] @@ -311,7 +311,7 @@ module EDTypesMod ! due to re-sizing patches when area math starts to lose ! precision - real(r8) :: herbivory_flux_out ! loss of element due to grazing (and/or browsing) by herbivores + real(r8) :: herbivory_flux_out ! loss of element due to grazing (and/or browsing) by herbivores [kg/site/day] contains @@ -726,7 +726,7 @@ subroutine ZeroMassBalFlux(this) this%frag_out = 0._r8 this%wood_product_harvest(:) = 0._r8 this%wood_product_landusechange(:) = 0._r8 - this%burn_flux_to_atm = 0._r8 + this%burn_flux_to_atm(:) = 0._r8 this%flux_generic_in = 0._r8 this%flux_generic_out = 0._r8 this%patch_resize_err = 0._r8 diff --git a/main/FatesHistoryInterfaceMod.F90 b/main/FatesHistoryInterfaceMod.F90 index 0ac13af5a1..2f2627fb13 100644 --- a/main/FatesHistoryInterfaceMod.F90 +++ b/main/FatesHistoryInterfaceMod.F90 @@ -41,6 +41,7 @@ module FatesHistoryInterfaceMod use FatesConstantsMod , only : dtype_ifall use FatesConstantsMod , only : dtype_ifire use FatesConstantsMod , only : dtype_ilog + use FatesConstantsMod , only : dtype_ilandusechange use FatesIODimensionsMod , only : fates_io_dimension_type use FatesIOVariableKindMod , only : fates_io_variable_kind_type use FatesIOVariableKindMod , only : site_int @@ -306,6 +307,7 @@ module FatesHistoryInterfaceMod integer :: ih_seedling_pool_si ! carbon only integer :: ih_ba_weighted_height_si integer :: ih_ca_weighted_height_si + integer :: ih_patch_weighted_95thpctile_height_si integer :: ih_seeds_in_local_elem integer :: ih_seeds_in_extern_elem integer :: ih_seed_decay_elem @@ -406,6 +408,8 @@ module FatesHistoryInterfaceMod integer :: ih_vis_rad_err_si integer :: ih_nir_rad_err_si integer :: ih_fire_c_to_atm_si + integer :: ih_fire_c_to_atm_landusechange_si + integer :: ih_fire_livec_to_atm_si integer :: ih_interr_liveveg_elem integer :: ih_interr_litter_elem integer :: ih_cbal_err_fates_si @@ -675,14 +679,9 @@ module FatesHistoryInterfaceMod integer :: ih_biomass_si_age integer :: ih_c_stomata_si_age integer :: ih_c_lblayer_si_age - integer :: ih_agesince_anthrodist_si integer :: ih_agesince_anthrodist_si_age - integer :: ih_secondarylands_area_si_age - integer :: ih_primarylands_area_si_age - integer :: ih_area_burnt_si_age - integer :: ih_primarylands_fracarea_si - integer :: ih_secondarylands_fracarea_si integer :: ih_secondarylands_fracarea_si_age + integer :: ih_secondary_agb_si_agesinceanthro integer :: ih_primarylands_fracarea_si_age integer :: ih_fracarea_burnt_si_age integer :: ih_rx_fracarea_burnt_si_age @@ -693,6 +692,7 @@ module FatesHistoryInterfaceMod integer :: ih_rx_intensity_si_age integer :: ih_nonrx_intensity_si_age + ! indices to (site x height) variables integer :: ih_canopy_height_dist_si_height integer :: ih_leaf_height_dist_si_height @@ -2429,7 +2429,8 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) real(r8) :: leaf_herbivory ! mass of leaves eaten by herbivores [kg/yr] real(r8) :: n_perm2 ! abundance per m2 real(r8) :: patch_fracarea ! Fraction of area for this patch - + real(r8) :: crown_area_covered ! accumulator variable for patch crown area + associate( hio_npatches_si => this%hvars(ih_npatches_si)%r81d, & hio_ncohorts_si => this%hvars(ih_ncohorts_si)%r81d, & hio_ncl_si => this%hvars(ih_ncl_si)%r81d, & @@ -2440,6 +2441,7 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) hio_fates_fraction_si => this%hvars(ih_fates_fraction_si)%r81d, & hio_ba_weighted_height_si => this%hvars(ih_ba_weighted_height_si)%r81d, & hio_ca_weighted_height_si => this%hvars(ih_ca_weighted_height_si)%r81d, & + hio_patch_weighted_95thpctile_height_si => this%hvars(ih_patch_weighted_95thpctile_height_si)%r81d, & hio_canopy_spread_si => this%hvars(ih_canopy_spread_si)%r81d, & hio_nesterov_fire_danger_si => this%hvars(ih_nesterov_fire_danger_si)%r81d, & hio_rx_burn_window_si => this%hvars(ih_rx_burn_window_si)%r81d, & @@ -2496,6 +2498,8 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) hio_canopy_mortality_crownarea_si => this%hvars(ih_canopy_mortality_crownarea_si)%r81d, & hio_ustory_mortality_crownarea_si => this%hvars(ih_understory_mortality_crownarea_si)%r81d, & hio_fire_c_to_atm_si => this%hvars(ih_fire_c_to_atm_si)%r81d, & + hio_fire_livec_to_atm_si => this%hvars(ih_fire_livec_to_atm_si)%r81d, & + hio_fire_c_to_atm_landusechange_si => this%hvars(ih_fire_c_to_atm_landusechange_si)%r81d, & hio_demotion_carbonflux_si => this%hvars(ih_demotion_carbonflux_si)%r81d, & hio_promotion_carbonflux_si => this%hvars(ih_promotion_carbonflux_si)%r81d, & hio_canopy_mortality_carbonflux_si => this%hvars(ih_canopy_mortality_carbonflux_si)%r81d, & @@ -2540,7 +2544,11 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) ! Total carbon lost to atmosphere from burning (kgC/site/day -> kgC/m2/s) hio_fire_c_to_atm_si(io_si) = & - sites(s)%mass_balance(element_pos(carbon12_element))%burn_flux_to_atm * & + sum(sites(s)%mass_balance(element_pos(carbon12_element))%burn_flux_to_atm(:)) * & + ha_per_m2 * days_per_sec + + hio_fire_c_to_atm_landusechange_si(io_si) = & + sites(s)%mass_balance(element_pos(carbon12_element))%burn_flux_to_atm(dtype_ilandusechange) * & ha_per_m2 * days_per_sec ! damage variables - site level - this needs to be OUT of the patch loop @@ -2677,6 +2685,9 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) sum(elflux_diags_c%root_litter_input(:))) * & AREA_INV * days_per_sec + hio_fire_livec_to_atm_si(io_si) = & + elflux_diags_c%burned_liveveg * ha_per_m2 * days_per_sec + ! Loop through patches to sum up diagonistics cpatch => sites(s)%oldest_patch patchloop: do while(associated(cpatch)) @@ -2953,7 +2964,7 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) hio_npp_stor_si(io_si) = hio_npp_stor_si(io_si) + & store_m_net_alloc * n_perm2 / days_per_year / sec_per_day - leaf_herbivory = ccohort%prt%GetHerbivory(leaf_organ, carbon12_element) * days_per_year !cdkcdk + leaf_herbivory = ccohort%prt%GetHerbivory(leaf_organ, carbon12_element) * days_per_year hio_grazing_si(io_si) = hio_grazing_si(io_si) + leaf_herbivory * n_perm2 / days_per_year / sec_per_day ! Woody State Variables (basal area growth increment) @@ -3006,6 +3017,24 @@ subroutine update_history_dyn_sitelevel(this,nc,nsites,sites) ccohort => ccohort%taller enddo cohortloop ! cohort loop + ! mean 95th percentile height. loop through cohorts on patch again, this time from tallest to shortest + crown_area_covered = 0._r8 + ccohort => cpatch%tallest + do while(associated(ccohort)) + if (ccohort%canopy_layer .eq. 1) then ! ignore anything not in the canopy + if (((ccohort%c_area + crown_area_covered)/cpatch%area) .ge. 0.05_r8 ) then + hio_patch_weighted_95thpctile_height_si(io_si) = & + hio_patch_weighted_95thpctile_height_si(io_si) + ccohort%height * cpatch%area/AREA + ccohort => null() ! exit the cohort loop + else + crown_area_covered = crown_area_covered + ccohort%c_area + ccohort => ccohort%shorter + endif + else + ccohort => ccohort%shorter + endif + enddo ! cohort loop + cpatch => cpatch%younger end do patchloop !patch loop @@ -3300,9 +3329,6 @@ subroutine update_history_dyn_subsite(this,nc,nsites,sites,bc_in) hio_yesterdaycanopylevel_understory_si_scls => this%hvars(ih_yesterdaycanopylevel_understory_si_scls)%r82d, & hio_fracarea_si => this%hvars(ih_fracarea_si)%r81d, & hio_canopy_fracarea_si => this%hvars(ih_canopy_fracarea_si)%r81d, & - hio_agesince_anthrodist_si => this%hvars(ih_agesince_anthrodist_si)%r81d, & - hio_primarylands_fracarea_si => this%hvars(ih_primarylands_fracarea_si)%r81d, & - hio_secondarylands_fracarea_si => this%hvars(ih_secondarylands_fracarea_si)%r81d, & hio_fracarea_si_landuse => this%hvars(ih_fracarea_si_landuse)%r82d, & hio_npp_si_landuse => this%hvars(ih_npp_si_landuse)%r82d, & hio_biomass_si_landuse => this%hvars(ih_biomass_si_landuse)%r82d, & @@ -3337,6 +3363,7 @@ subroutine update_history_dyn_subsite(this,nc,nsites,sites,bc_in) hio_cstarvmortality_continuous_carbonflux_si_pft => this%hvars(ih_cstarvmortality_continuous_carbonflux_si_pft)%r82d, & hio_transition_matrix_si_lulu => this%hvars(ih_transition_matrix_si_lulu)%r82d, & hio_scorch_height_si_pft => this%hvars(ih_scorch_height_si_pft)%r82d, & + hio_secondary_agb_si_agesinceanthro => this%hvars(ih_secondary_agb_si_agesinceanthro)%r82d, & hio_sapwood_area_scpf => this%hvars(ih_sapwood_area_scpf)%r82d) model_day_int = nint(hlm_model_day) @@ -3395,7 +3422,7 @@ subroutine update_history_dyn_subsite(this,nc,nsites,sites,bc_in) ! Total element lost to atmosphere from burning (kg/site/day -> kg/m2/s) hio_burn_flux_elem(io_si,el) = & - sites(s)%mass_balance(el)%burn_flux_to_atm * ha_per_m2 * & + sum(sites(s)%mass_balance(el)%burn_flux_to_atm(:)) * ha_per_m2 * & days_per_sec end do @@ -3443,25 +3470,6 @@ subroutine update_history_dyn_subsite(this,nc,nsites,sites,bc_in) cpatch%frac_burnt * cpatch%area * AREA_INV / sec_per_day end if - ! some diagnostics on secondary forest area and its age distribution - if ( cpatch%land_use_label .eq. secondaryland ) then - - hio_agesince_anthrodist_si(io_si) = & - hio_agesince_anthrodist_si(io_si) & - + cpatch%area * AREA_INV - - hio_secondarylands_fracarea_si(io_si) = & - hio_secondarylands_fracarea_si(io_si) & - + cpatch%area * AREA_INV - - else if ( cpatch%land_use_label .eq. primaryland ) then - - hio_primarylands_fracarea_si(io_si) = & - hio_primarylands_fracarea_si(io_si) & - + cpatch%area * AREA_INV - - endif - do ft = 1,numpft hio_scorch_height_si_pft(io_si,ft) = hio_scorch_height_si_pft(io_si,ft) + & cpatch%Scorch_ht(ft) * cpatch%area * AREA_INV @@ -3890,6 +3898,16 @@ subroutine update_history_dyn_subsite(this,nc,nsites,sites,bc_in) hio_biomass_si_scls(io_si,scls) = hio_biomass_si_scls(io_si,scls) + & total_m * ccohort%n * AREA_INV + ! agb by patch age since anthropogenic disturbance + if ( cpatch%land_use_label .eq. secondaryland ) then + + iscag_anthrodist = get_age_class_index(cpatch%age_since_anthro_disturbance) + + hio_secondary_agb_si_agesinceanthro(io_si,iscag_anthrodist) = & + hio_secondary_agb_si_agesinceanthro(io_si,iscag_anthrodist) & + + total_m * ccohort%n * prt_params%allom_agb_frac(ccohort%pft) * AREA_INV + endif + ! update size-class quantities hio_nplant_si_scls(io_si,scls) = hio_nplant_si_scls(io_si,scls) + ccohort%n / m2_per_ha @@ -4878,6 +4896,8 @@ subroutine update_history_dyn_subsite_ageclass(this,nc,nsites,sites) hio_secondarylands_fracarea_si_age(io_si,cpatch%age_class) = & hio_secondarylands_fracarea_si_age(io_si,cpatch%age_class) & + patch_area_div_site_area + + else if ( cpatch%land_use_label .eq. primaryland) then hio_primarylands_fracarea_si_age(io_si,cpatch%age_class) = & hio_primarylands_fracarea_si_age(io_si,cpatch%age_class) & @@ -6402,6 +6422,12 @@ subroutine define_history_vars(this, initialize_variables) upfreq=group_dyna_simple, ivar=ivar, initialize=initialize_variables, & index=ih_ca_weighted_height_si) + call this%set_history_var(vname='FATES_MEAN_95PCTILE_HEIGHT', units='m', & + long='The patch-area-weighted mean of 95th percentile height of canopy plants within a given patch', use_default='active', & + avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_dyna_simple, ivar=ivar, initialize=initialize_variables, & + index=ih_patch_weighted_95thpctile_height_si) + call this%set_history_var(vname='FATES_COLD_STATUS', units='', & long='site-level cold status, 0=not cold-dec, 1=too cold for leaves, 2=not too cold', & use_default='active', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & @@ -7004,6 +7030,18 @@ subroutine define_history_vars(this, initialize_variables) upfreq=group_dyna_simple, ivar=ivar, initialize=initialize_variables, & index = ih_fire_c_to_atm_si) + call this%set_history_var(vname='FATES_FIRE_CLOSS_LIVEFUELS', units='kg m-2 s-1', & + long='carbon loss to atmosphere from live fuels only via fire in kg carbon per m2 per second', & + use_default='active', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_dyna_simple, ivar=ivar, initialize=initialize_variables, & + index = ih_fire_livec_to_atm_si) + + call this%set_history_var(vname='FATES_FIRE_CLOSS_LANDUSECHANGE', units='kg m-2 s-1', & + long='carbon loss to atmosphere from fire in kg carbon per m2 per second from land use change only', & + use_default='active', avgflag='A', vtype=site_r8, hlms='CLM:ALM', & + upfreq=group_dyna_simple, ivar=ivar, initialize=initialize_variables, & + index = ih_fire_c_to_atm_landusechange_si) + call this%set_history_var(vname='FATES_CBALANCE_ERROR', & units='kg s-1', & long='total carbon error in kg carbon per second', & @@ -7395,20 +7433,6 @@ subroutine define_history_vars(this, initialize_variables) hlms='CLM:ALM', upfreq=group_dyna_complx, ivar=ivar, initialize=initialize_variables, & index=ih_agesince_anthrodist_si_age) - call this%set_history_var(vname='FATES_SECONDARY_AREA_ANTHRO', & - units='m2 m-2', & - long='secondary forest patch area since anthropgenic disturbance', & - use_default='inactive', avgflag='A', vtype=site_r8, & - hlms='CLM:ALM', upfreq=group_dyna_complx, ivar=ivar, initialize=initialize_variables, & - index=ih_agesince_anthrodist_si) - - call this%set_history_var(vname='FATES_SECONDARY_AREA', & - units='m2 m-2', & - long='secondary forest patch area since any kind of disturbance', & - use_default='inactive', avgflag='A', vtype=site_r8, & - hlms='CLM:ALM', upfreq=group_dyna_complx, ivar=ivar, initialize=initialize_variables, & - index=ih_secondarylands_fracarea_si) - call this%set_history_var(vname='FATES_SECONDARY_AREA_AP', & units='m2 m-2', & long='secondary forest patch area age distribution since any kind of disturbance', & @@ -7416,12 +7440,12 @@ subroutine define_history_vars(this, initialize_variables) hlms='CLM:ALM', upfreq=group_dyna_complx, ivar=ivar, initialize=initialize_variables, & index=ih_secondarylands_fracarea_si_age) - call this%set_history_var(vname='FATES_PRIMARY_AREA', & - units='m2 m-2', & - long='primary forest patch area since any kind of disturbance', & - use_default='inactive', avgflag='A', vtype=site_r8, & + call this%set_history_var(vname='FATES_SECONDARY_AGB_ANTHROAGE_AP', & + units='kg m-2', & + long='secondary forest patch agb as resolved by age since anthropogenic disturbance', & + use_default='inactive', avgflag='A', vtype=site_age_r8, & hlms='CLM:ALM', upfreq=group_dyna_complx, ivar=ivar, initialize=initialize_variables, & - index=ih_primarylands_fracarea_si) + index=ih_secondary_agb_si_agesinceanthro) call this%set_history_var(vname='FATES_PRIMARY_AREA_AP', & units='m2 m-2', &