next up previous contents
Next: NSummary Up: Fortran: Module Interface CNSummaryMod Previous: Fortran: Module Interface CNSummaryMod   Contents

CSummary


INTERFACE:

 subroutine CSummary(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_flush
ARGUMENTS:
    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 pfts
CALLED FROM:
   subroutine CNEcosystemDyn
REVISION HISTORY:
   12/9/03: Created by Peter Thornton
LOCAL VARIABLES:
   local pointers to implicit in scalars
    integer , pointer :: ivt(:)                ! pft vegetation type
    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, harvest, and hrv_xsmrpool flux, positive for source
    real(r8), pointer :: nep(:)                ! (gC/m2/s) net ecosystem production, excludes fire, land-use, and harvest flux, positive for sink
    real(r8), pointer :: nbp(:)                ! (gC/m2/s) net biome production, includes fire, land-use, and harvest 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_litfall(:)        ! (gC/m2/s) total pft-level litterfall 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 (slowest pool)
    real(r8), pointer :: col_ctrunc(:)         ! (gC/m2) column-level sink for C truncation
    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 :: xsmrpool_to_atm(:)        ! excess MR pool harvest mortality (gC/m2/s)
    real(r8), pointer :: cpool_grain_gr(:)         ! grain growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_grain_storage_gr(:) ! grain growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_to_grainc(:)        ! allocation to grain C storage (gC/m2/s)
    real(r8), pointer :: grainc_xfer_to_grainc(:)  ! grain C growth from storage (gC/m2/s)
    real(r8), pointer :: transfer_grain_gr(:)      ! grain growth respiration from storage (gC/m2/s)
    real(r8), pointer :: grainc_to_food(:)         ! grain C to food (gC/m2/s)
    real(r8), pointer :: livestemc_to_litter(:)    ! live stem C litterfall (gC/m2/s)
    real(r8), pointer :: grainc(:)                 ! (gC/m2) grain C
    real(r8), pointer :: grainc_storage(:)         ! (gC/m2) grain C storage
    real(r8), pointer :: grainc_xfer(:)            ! (gC/m2) grain C transfer
    real(r8), pointer :: cpool_deadcroot_gr(:)     ! dead coarse root growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_deadcroot_storage_gr(:) ! dead coarse root growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_deadstem_gr(:)          ! dead stem growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_deadstem_storage_gr(:)  ! dead stem growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_froot_gr(:)             ! fine root growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_froot_storage_gr(:)     ! fine root  growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_leaf_gr(:)              ! leaf growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_leaf_storage_gr(:)      ! leaf growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_livecroot_gr(:)         ! live coarse root growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_livecroot_storage_gr(:) ! live coarse root growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_livestem_gr(:)          ! live stem growth respiration (gC/m2/s)
    real(r8), pointer :: cpool_livestem_storage_gr(:)  ! live stem growth respiration to storage (gC/m2/s)
    real(r8), pointer :: cpool_to_deadcrootc(:)        ! allocation to dead coarse root C (gC/m2/s)
    real(r8), pointer :: cpool_to_deadstemc(:)         ! allocation to dead stem C (gC/m2/s)
    real(r8), pointer :: cpool_to_frootc(:)            ! allocation to fine root C (gC/m2/s)
    real(r8), pointer :: cpool_to_leafc(:)             ! allocation to leaf C (gC/m2/s)
    real(r8), pointer :: cpool_to_livecrootc(:)        ! allocation to live coarse root C (gC/m2/s)
    real(r8), pointer :: cpool_to_livestemc(:)         ! allocation to live stem C (gC/m2/s)
    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 :: 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 :: litfall(:)            ! (gC/m2/s) litterfall (leaves and fine roots)
    real(r8), pointer :: livecrootc_xfer_to_livecrootc(:)
    real(r8), pointer :: livecroot_mr(:)
    real(r8), pointer :: livestemc_xfer_to_livestemc(:) 
    real(r8), pointer :: livestem_mr(:)  
    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 :: col_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 :: pft_ctrunc(:)         ! (gC/m2) pft-level sink for C truncation
    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
    real(r8), pointer :: tempsum_npp(:)        ! temporary annual sum of NPP (gC/m2/yr)
 #if (defined CNDV)
    real(r8), pointer :: tempsum_litfall(:)      !temporary annual sum of litfall (gC/m2/yr)
 #endif
    ! for landcover change
    real(r8), pointer :: landuseflux(:)        ! (gC/m2/s) dwt_closs+product_closs
    real(r8), pointer :: landuptake(:)         ! (gC/m2/s) nee-landuseflux
    real(r8), pointer :: dwt_closs(:)          ! (gC/m2/s) total carbon loss from land cover 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 :: seedc(:)              ! (gC/m2) column-level pool for seeding new PFTs
    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
 
    real(r8), pointer :: frootc_alloc(:)       ! fine root C allocation (gC/m2/s)
    real(r8), pointer :: frootc_loss(:)        ! fine root C loss (gC/m2/s)
    real(r8), pointer :: leafc_alloc(:)        ! leaf C allocation (gC/m2/s)
    real(r8), pointer :: leafc_loss(:)         ! leaf C loss (gC/m2/s)
    real(r8), pointer :: woodc(:)              ! wood C (gC/m2)
    real(r8), pointer :: woodc_alloc(:)        ! wood C allocation (gC/m2/s)
    real(r8), pointer :: woodc_loss(:)         ! wood C loss (gC/m2/s)
    real(r8), pointer :: cwdc_hr(:)            ! coarse woody debris C heterotrophic respiration (gC/m2/s)
    real(r8), pointer :: cwdc_loss(:)          ! coarse woody debris C loss (gC/m2/s)
    real(r8), pointer :: litterc_loss(:)       ! litter C loss (gC/m2/s)
    real(r8), pointer :: litr1c_to_soil1c(:)   ! litter1 C loss to soil1 (gC/m2/s)
    real(r8), pointer :: litr2c_to_soil2c(:)   ! litter2 C loss to soil2 (gC/m2/s)
    real(r8), pointer :: litr3c_to_soil3c(:)   ! litter3 C loss to soil3 (gC/m2/s)
    real(r8), pointer :: cwdc_to_litr2c(:)     ! cwdc C to soil2 (gC/m2/s)
    real(r8), pointer :: cwdc_to_litr3c(:)     ! cwdc C to soil3 (gC/m2/s)
   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



Erik Kluzek 2011-06-15