INTERFACE:
subroutine C13Summary(num_soilc, filter_soilc, num_soilp, filter_soilp)DESCRIPTION:
On the radiation time step, perform pft and column-level carbon summary calculations
USES:
use clmtype use pft2colMod, only: p2c use clm_varctl, only: iulog use shr_sys_mod, only: shr_sys_flushARGUMENTS:
implicit none integer, intent(in) :: num_soilc ! number of soil columns in filter integer, intent(in) :: filter_soilc(:) ! filter for soil columns integer, intent(in) :: num_soilp ! number of soil pfts in filter integer, intent(in) :: filter_soilp(:) ! filter for soil pftsCALLED FROM:
subroutine CNEcosystemDynREVISION HISTORY:
12/9/03: Created by Peter ThorntonLOCAL VARIABLES:
local pointers to implicit in scalars real(r8), pointer :: col_fire_closs(:) ! (gC/m2/s) total column-level fire C loss real(r8), pointer :: er(:) ! (gC/m2/s) total ecosystem respiration, autotrophic + heterotrophic real(r8), pointer :: hr(:) ! (gC/m2/s) total heterotrophic respiration real(r8), pointer :: litfire(:) ! (gC/m2/s) litter fire losses real(r8), pointer :: lithr(:) ! (gC/m2/s) litter heterotrophic respiration real(r8), pointer :: litr1_hr(:) real(r8), pointer :: litr2_hr(:) real(r8), pointer :: litr3_hr(:) real(r8), pointer :: m_cwdc_to_fire(:) real(r8), pointer :: m_litr1c_to_fire(:) real(r8), pointer :: m_litr2c_to_fire(:) real(r8), pointer :: m_litr3c_to_fire(:) real(r8), pointer :: nee(:) ! (gC/m2/s) net ecosystem exchange of carbon, includes fire, land-use, and wood products flux, positive for source real(r8), pointer :: nbp(:) ! (gC/m2/s) net biome production, includes fire, land-use, and wood products flux, positive for sink real(r8), pointer :: nep(:) ! (gC/m2/s) net ecosystem production, excludes fire, land-use, and wood products flux, positive for sink real(r8), pointer :: col_ar(:) ! (gC/m2/s) autotrophic respiration (MR + GR) real(r8), pointer :: col_gpp(:) !GPP flux before downregulation (gC/m2/s) real(r8), pointer :: col_npp(:) ! (gC/m2/s) net primary production real(r8), pointer :: col_pft_fire_closs(:) ! (gC/m2/s) total pft-level fire C loss real(r8), pointer :: col_rr(:) ! (gC/m2/s) root respiration (fine root MR + total root GR) real(r8), pointer :: col_vegfire(:) ! (gC/m2/s) pft-level fire loss (obsolete, mark for removal) real(r8), pointer :: col_wood_harvestc(:) real(r8), pointer :: soil1_hr(:) real(r8), pointer :: soil2_hr(:) real(r8), pointer :: soil3_hr(:) real(r8), pointer :: soil4_hr(:) real(r8), pointer :: somfire(:) ! (gC/m2/s) soil organic matter fire losses real(r8), pointer :: somhr(:) ! (gC/m2/s) soil organic matter heterotrophic respiration real(r8), pointer :: sr(:) ! (gC/m2/s) total soil respiration (HR + root resp) real(r8), pointer :: totfire(:) ! (gC/m2/s) total ecosystem fire losses real(r8), pointer :: cwdc(:) ! (gC/m2) coarse woody debris C real(r8), pointer :: litr1c(:) ! (gC/m2) litter labile C real(r8), pointer :: litr2c(:) ! (gC/m2) litter cellulose C real(r8), pointer :: litr3c(:) ! (gC/m2) litter lignin C real(r8), pointer :: col_totpftc(:) ! (gC/m2) total pft-level carbon, including cpool real(r8), pointer :: col_totvegc(:) ! (gC/m2) total vegetation carbon, excluding cpool real(r8), pointer :: soil1c(:) ! (gC/m2) soil organic matter C (fast pool) real(r8), pointer :: soil2c(:) ! (gC/m2) soil organic matter C (medium pool) real(r8), pointer :: soil3c(:) ! (gC/m2) soil organic matter C (slow pool) real(r8), pointer :: soil4c(:) ! (gC/m2) soil organic matter C (slow pool) real(r8), pointer :: totcolc(:) ! (gC/m2) total column carbon, incl veg and cpool real(r8), pointer :: totecosysc(:) ! (gC/m2) total ecosystem carbon, incl veg but excl cpool real(r8), pointer :: totlitc(:) ! (gC/m2) total litter carbon real(r8), pointer :: totsomc(:) ! (gC/m2) total soil organic matter carbon real(r8), pointer :: agnpp(:) ! (gC/m2/s) aboveground NPP real(r8), pointer :: ar(:) ! (gC/m2/s) autotrophic respiration (MR + GR) real(r8), pointer :: bgnpp(:) ! (gC/m2/s) belowground NPP real(r8), pointer :: cpool_deadcroot_gr(:) real(r8), pointer :: cpool_deadcroot_storage_gr(:) real(r8), pointer :: cpool_deadstem_gr(:) real(r8), pointer :: cpool_deadstem_storage_gr(:) real(r8), pointer :: cpool_froot_gr(:) real(r8), pointer :: cpool_froot_storage_gr(:) real(r8), pointer :: cpool_leaf_gr(:) real(r8), pointer :: cpool_leaf_storage_gr(:) real(r8), pointer :: cpool_livecroot_gr(:) real(r8), pointer :: cpool_livecroot_storage_gr(:) real(r8), pointer :: cpool_livestem_gr(:) real(r8), pointer :: cpool_livestem_storage_gr(:) real(r8), pointer :: cpool_to_deadcrootc(:) real(r8), pointer :: cpool_to_deadstemc(:) real(r8), pointer :: cpool_to_frootc(:) real(r8), pointer :: cpool_to_leafc(:) real(r8), pointer :: cpool_to_livecrootc(:) real(r8), pointer :: cpool_to_livestemc(:) real(r8), pointer :: current_gr(:) ! (gC/m2/s) growth resp for new growth displayed in this timestep real(r8), pointer :: deadcrootc_xfer_to_deadcrootc(:) real(r8), pointer :: deadstemc_xfer_to_deadstemc(:) real(r8), pointer :: frootc_to_litter(:) real(r8), pointer :: frootc_xfer_to_frootc(:) real(r8), pointer :: froot_mr(:) real(r8), pointer :: froot_curmr(:) real(r8), pointer :: froot_xsmr(:) real(r8), pointer :: gpp(:) !GPP flux before downregulation (gC/m2/s) real(r8), pointer :: gr(:) ! (gC/m2/s) total growth respiration real(r8), pointer :: leafc_to_litter(:) real(r8), pointer :: leafc_xfer_to_leafc(:) real(r8), pointer :: leaf_mr(:) real(r8), pointer :: leaf_curmr(:) real(r8), pointer :: leaf_xsmr(:) real(r8), pointer :: litfall(:) ! (gC/m2/s) litterfall (leaves and fine roots) real(r8), pointer :: livecrootc_xfer_to_livecrootc(:) real(r8), pointer :: livecroot_mr(:) real(r8), pointer :: livecroot_curmr(:) real(r8), pointer :: livecroot_xsmr(:) real(r8), pointer :: livestemc_xfer_to_livestemc(:) real(r8), pointer :: livestem_mr(:) real(r8), pointer :: livestem_curmr(:) real(r8), pointer :: livestem_xsmr(:) real(r8), pointer :: m_deadcrootc_storage_to_fire(:) real(r8), pointer :: m_deadcrootc_storage_to_litter(:) real(r8), pointer :: m_deadcrootc_to_fire(:) real(r8), pointer :: m_deadcrootc_to_litter(:) real(r8), pointer :: m_deadcrootc_to_litter_fire(:) real(r8), pointer :: m_deadcrootc_xfer_to_fire(:) real(r8), pointer :: m_deadcrootc_xfer_to_litter(:) real(r8), pointer :: m_deadstemc_storage_to_fire(:) real(r8), pointer :: m_deadstemc_storage_to_litter(:) real(r8), pointer :: m_deadstemc_to_fire(:) real(r8), pointer :: m_deadstemc_to_litter(:) real(r8), pointer :: m_deadstemc_to_litter_fire(:) real(r8), pointer :: m_deadstemc_xfer_to_fire(:) real(r8), pointer :: m_deadstemc_xfer_to_litter(:) real(r8), pointer :: m_frootc_storage_to_fire(:) real(r8), pointer :: m_frootc_storage_to_litter(:) real(r8), pointer :: m_frootc_to_fire(:) real(r8), pointer :: m_frootc_to_litter(:) real(r8), pointer :: m_frootc_xfer_to_fire(:) real(r8), pointer :: m_frootc_xfer_to_litter(:) real(r8), pointer :: m_gresp_storage_to_fire(:) real(r8), pointer :: m_gresp_storage_to_litter(:) real(r8), pointer :: m_gresp_xfer_to_fire(:) real(r8), pointer :: m_gresp_xfer_to_litter(:) real(r8), pointer :: m_leafc_storage_to_fire(:) real(r8), pointer :: m_leafc_storage_to_litter(:) real(r8), pointer :: m_leafc_to_fire(:) real(r8), pointer :: m_leafc_to_litter(:) real(r8), pointer :: m_leafc_xfer_to_fire(:) real(r8), pointer :: m_leafc_xfer_to_litter(:) real(r8), pointer :: m_livecrootc_storage_to_fire(:) real(r8), pointer :: m_livecrootc_storage_to_litter(:) real(r8), pointer :: m_livecrootc_to_fire(:) real(r8), pointer :: m_livecrootc_to_litter(:) real(r8), pointer :: m_livecrootc_xfer_to_fire(:) real(r8), pointer :: m_livecrootc_xfer_to_litter(:) real(r8), pointer :: m_livestemc_storage_to_fire(:) real(r8), pointer :: m_livestemc_storage_to_litter(:) real(r8), pointer :: m_livestemc_to_fire(:) real(r8), pointer :: m_livestemc_to_litter(:) real(r8), pointer :: m_livestemc_xfer_to_fire(:) real(r8), pointer :: m_livestemc_xfer_to_litter(:) real(r8), pointer :: hrv_leafc_to_litter(:) real(r8), pointer :: hrv_leafc_storage_to_litter(:) real(r8), pointer :: hrv_leafc_xfer_to_litter(:) real(r8), pointer :: hrv_frootc_to_litter(:) real(r8), pointer :: hrv_frootc_storage_to_litter(:) real(r8), pointer :: hrv_frootc_xfer_to_litter(:) real(r8), pointer :: hrv_livestemc_to_litter(:) real(r8), pointer :: hrv_livestemc_storage_to_litter(:) real(r8), pointer :: hrv_livestemc_xfer_to_litter(:) real(r8), pointer :: hrv_deadstemc_to_prod10c(:) real(r8), pointer :: hrv_deadstemc_to_prod100c(:) real(r8), pointer :: hrv_deadstemc_storage_to_litter(:) real(r8), pointer :: hrv_deadstemc_xfer_to_litter(:) real(r8), pointer :: hrv_livecrootc_to_litter(:) real(r8), pointer :: hrv_livecrootc_storage_to_litter(:) real(r8), pointer :: hrv_livecrootc_xfer_to_litter(:) real(r8), pointer :: hrv_deadcrootc_to_litter(:) real(r8), pointer :: hrv_deadcrootc_storage_to_litter(:) real(r8), pointer :: hrv_deadcrootc_xfer_to_litter(:) real(r8), pointer :: hrv_gresp_storage_to_litter(:) real(r8), pointer :: hrv_gresp_xfer_to_litter(:) real(r8), pointer :: hrv_xsmrpool_to_atm(:) real(r8), pointer :: mr(:) ! (gC/m2/s) maintenance respiration real(r8), pointer :: npp(:) ! (gC/m2/s) net primary production real(r8), pointer :: pft_fire_closs(:) ! (gC/m2/s) total pft-level fire C loss real(r8), pointer :: psnshade_to_cpool(:) real(r8), pointer :: psnsun_to_cpool(:) real(r8), pointer :: rr(:) ! (gC/m2/s) root respiration (fine root MR + total root GR) real(r8), pointer :: storage_gr(:) ! (gC/m2/s) growth resp for growth sent to storage for later display real(r8), pointer :: transfer_deadcroot_gr(:) real(r8), pointer :: transfer_deadstem_gr(:) real(r8), pointer :: transfer_froot_gr(:) real(r8), pointer :: transfer_gr(:) ! (gC/m2/s) growth resp for transfer growth displayed in this timestep real(r8), pointer :: transfer_leaf_gr(:) real(r8), pointer :: transfer_livecroot_gr(:) real(r8), pointer :: transfer_livestem_gr(:) real(r8), pointer :: wood_harvestc(:) ! (gC/m2/s) pft-level wood harvest (to product pools) real(r8), pointer :: vegfire(:) ! (gC/m2/s) pft-level fire loss (obsolete, mark for removal) real(r8), pointer :: cpool(:) ! (gC/m2) temporary photosynthate C pool real(r8), pointer :: xsmrpool(:) ! (gC/m2) temporary photosynthate C pool real(r8), pointer :: deadcrootc(:) ! (gC/m2) dead coarse root C real(r8), pointer :: deadcrootc_storage(:) ! (gC/m2) dead coarse root C storage real(r8), pointer :: deadcrootc_xfer(:) !(gC/m2) dead coarse root C transfer real(r8), pointer :: deadstemc(:) ! (gC/m2) dead stem C real(r8), pointer :: deadstemc_storage(:) ! (gC/m2) dead stem C storage real(r8), pointer :: deadstemc_xfer(:) ! (gC/m2) dead stem C transfer real(r8), pointer :: dispvegc(:) ! (gC/m2) displayed veg carbon, excluding storage and cpool real(r8), pointer :: frootc(:) ! (gC/m2) fine root C real(r8), pointer :: frootc_storage(:) ! (gC/m2) fine root C storage real(r8), pointer :: frootc_xfer(:) ! (gC/m2) fine root C transfer real(r8), pointer :: gresp_storage(:) ! (gC/m2) growth respiration storage real(r8), pointer :: gresp_xfer(:) ! (gC/m2) growth respiration transfer real(r8), pointer :: leafc(:) ! (gC/m2) leaf C real(r8), pointer :: leafc_storage(:) ! (gC/m2) leaf C storage real(r8), pointer :: leafc_xfer(:) ! (gC/m2) leaf C transfer real(r8), pointer :: livecrootc(:) ! (gC/m2) live coarse root C real(r8), pointer :: livecrootc_storage(:) ! (gC/m2) live coarse root C storage real(r8), pointer :: livecrootc_xfer(:) !(gC/m2) live coarse root C transfer real(r8), pointer :: livestemc(:) ! (gC/m2) live stem C real(r8), pointer :: livestemc_storage(:) ! (gC/m2) live stem C storage real(r8), pointer :: livestemc_xfer(:) ! (gC/m2) live stem C transfer real(r8), pointer :: storvegc(:) ! (gC/m2) stored vegetation carbon, excluding cpool real(r8), pointer :: totpftc(:) ! (gC/m2) total pft-level carbon, including cpool real(r8), pointer :: totvegc(:) ! (gC/m2) total vegetation carbon, excluding cpool ! for landcover change real(r8), pointer :: dwt_closs(:) ! (gC/m2/s) total carbon loss from product pools and conversion real(r8), pointer :: dwt_conv_cflux(:) ! (gC/m2/s) conversion C flux (immediate loss to atm) real(r8), pointer :: prod10c_loss(:) ! (gC/m2/s) loss from 10-yr wood product pool real(r8), pointer :: prod100c_loss(:) ! (gC/m2/s) loss from 100-yr wood product pool real(r8), pointer :: product_closs(:) ! (gC/m2/s) total wood product carbon loss real(r8), pointer :: prod10c(:) ! (gC/m2) wood product C pool, 10-year lifespan real(r8), pointer :: prod100c(:) ! (gC/m2) wood product C pool, 100-year lifespan real(r8), pointer :: totprodc(:) ! (gC/m2) total wood product C local pointers to implicit in/out scalars local pointers to implicit out scalars !OTHER LOCAL VARIABLES: integer :: c,p ! indices integer :: fp,fc ! lake filter indices