next up previous contents
Next: Fortran: Module Interface CStateUpdate2Mod Up: Fortran: Module Interface CStateUpdate1Mod Previous: CStateUpdate0   Contents

CStateUpdate1


INTERFACE:

 subroutine CStateUpdate1(num_soilc, filter_soilc, num_soilp, filter_soilp)
DESCRIPTION:

On the radiation time step, update all the prognostic carbon state variables (except for gap-phase mortality and fire fluxes)


USES:

    use clmtype
    use clm_time_manager, only: get_step_size
    use pftvarcon , only: npcropmin, nc3crop
    use surfrdMod , only: crop_prog
ARGUMENTS:
    implicit none
    integer, intent(in) :: num_soilc       ! number of soil columns 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:
   8/1/03: Created by Peter Thornton
   12/5/03, Peter Thornton: Added livewood turnover fluxes
LOCAL VARIABLES:
   local pointers to implicit in arrays
    real(r8), pointer :: woody(:)                ! binary flag for woody lifeform (1=woody, 0=not woody)
    real(r8), pointer :: cwdc_to_litr2c(:)       ! decomp. of coarse woody debris C to litter 2 C (gC/m2/s)
    real(r8), pointer :: cwdc_to_litr3c(:)       ! decomp. of coarse woody debris C to litter 3 C (gC/m2/s)
    integer , pointer :: harvdate(:)             ! harvest date
    real(r8), pointer :: xsmrpool_to_atm(:)      ! excess MR pool harvest mortality (gC/m2/s)
    real(r8), pointer :: grainc_to_litr1c(:)     ! grain C litterfall to litter 1 C (gC/m2/s)
    real(r8), pointer :: grainc_to_litr2c(:)     ! grain C litterfall to litter 2 C (gC/m2/s)
    real(r8), pointer :: grainc_to_litr3c(:)     ! grain C litterfall to litter 3 C (gC/m2/s)
    real(r8), pointer :: livestemc_to_litr1c(:)  ! livestem C litterfall to litter 1 C (gC/m2/s)
    real(r8), pointer :: livestemc_to_litr2c(:)  ! livestem C litterfall to litter 2 C (gC/m2/s)
    real(r8), pointer :: livestemc_to_litr3c(:)  ! livestem C litterfall to litter 3 C (gC/m2/s)
    real(r8), pointer :: frootc_to_litr1c(:)     ! fine root C litterfall to litter 1 C (gC/m2/s)
    real(r8), pointer :: frootc_to_litr2c(:)     ! fine root C litterfall to litter 2 C (gC/m2/s)
    real(r8), pointer :: frootc_to_litr3c(:)     ! fine root C litterfall to litter 3 C (gC/m2/s)
    real(r8), pointer :: leafc_to_litr1c(:)      ! leaf C litterfall to litter 1 C (gC/m2/s)
    real(r8), pointer :: leafc_to_litr2c(:)      ! leaf C litterfall to litter 2 C (gC/m2/s)
    real(r8), pointer :: leafc_to_litr3c(:)      ! leaf C litterfall to litter 3 C (gC/m2/s)
    real(r8), pointer :: litr1_hr(:)             ! het. resp. from litter 1 C (gC/m2/s)
    real(r8), pointer :: litr1c_to_soil1c(:)     ! decomp. of litter 1 C to SOM 1 C (gC/m2/s)
    real(r8), pointer :: litr2_hr(:)             ! het. resp. from litter 2 C (gC/m2/s)
    real(r8), pointer :: litr2c_to_soil2c(:)     ! decomp. of litter 2 C to SOM 2 C (gC/m2/s)
    real(r8), pointer :: litr3_hr(:)             ! het. resp. from litter 3 C (gC/m2/s)
    real(r8), pointer :: litr3c_to_soil3c(:)     ! decomp. of litter 3 C to SOM 3 C (gC/m2/s)
    real(r8), pointer :: soil1_hr(:)             ! het. resp. from SOM 1 C (gC/m2/s)
    real(r8), pointer :: soil1c_to_soil2c(:)     ! decomp. of SOM 1 C to SOM 2 C (gC/m2/s)
    real(r8), pointer :: soil2_hr(:)             ! het. resp. from SOM 2 C (gC/m2/s)
    real(r8), pointer :: soil2c_to_soil3c(:)     ! decomp. of SOM 2 C to SOM 3 C (gC/m2/s)
    real(r8), pointer :: soil3_hr(:)             ! het. resp. from SOM 3 C (gC/m2/s)
    real(r8), pointer :: soil3c_to_soil4c(:)     ! decomp. of SOM 3 C to SOM 4 C (gC/m2/s)
    real(r8), pointer :: soil4_hr(:)             ! het. resp. from SOM 4 C (gC/m2/s)
    real(r8), pointer :: col_ctrunc(:)           ! (gC/m2) column-level sink for C truncation
    integer , pointer :: ivt(:)                  ! pft vegetation type
    real(r8), pointer :: deadcrootc_xfer_to_deadcrootc(:)
    real(r8), pointer :: deadstemc_xfer_to_deadstemc(:)
    real(r8), pointer :: frootc_xfer_to_frootc(:)
    real(r8), pointer :: leafc_xfer_to_leafc(:)
    real(r8), pointer :: livecrootc_xfer_to_livecrootc(:)
    real(r8), pointer :: livestemc_xfer_to_livestemc(:)
    real(r8), pointer :: cpool_to_xsmrpool(:)
    real(r8), pointer :: cpool_to_deadcrootc(:)
    real(r8), pointer :: cpool_to_deadcrootc_storage(:)
    real(r8), pointer :: cpool_to_deadstemc(:)
    real(r8), pointer :: cpool_to_deadstemc_storage(:)
    real(r8), pointer :: cpool_to_frootc(:)
    real(r8), pointer :: cpool_to_frootc_storage(:)
    real(r8), pointer :: cpool_to_gresp_storage(:)
    real(r8), pointer :: cpool_to_leafc(:)
    real(r8), pointer :: cpool_to_leafc_storage(:)
    real(r8), pointer :: cpool_to_livecrootc(:)
    real(r8), pointer :: cpool_to_livecrootc_storage(:)
    real(r8), pointer :: cpool_to_livestemc(:)
    real(r8), pointer :: cpool_to_livestemc_storage(:)
    real(r8), pointer :: deadcrootc_storage_to_xfer(:)
    real(r8), pointer :: deadstemc_storage_to_xfer(:)
    real(r8), pointer :: frootc_storage_to_xfer(:)
    real(r8), pointer :: frootc_to_litter(:)
    real(r8), pointer :: gresp_storage_to_xfer(:)
    real(r8), pointer :: leafc_storage_to_xfer(:)
    real(r8), pointer :: leafc_to_litter(:)
    real(r8), pointer :: livecrootc_storage_to_xfer(:)
    real(r8), pointer :: livecrootc_to_deadcrootc(:)
    real(r8), pointer :: livestemc_storage_to_xfer(:)
    real(r8), pointer :: livestemc_to_deadstemc(:)
    real(r8), pointer :: livestem_mr(:)
    real(r8), pointer :: froot_mr(:)
    real(r8), pointer :: leaf_mr(:)
    real(r8), pointer :: livecroot_mr(:)
    real(r8), pointer :: livestem_curmr(:)
    real(r8), pointer :: froot_curmr(:)
    real(r8), pointer :: leaf_curmr(:)
    real(r8), pointer :: livecroot_curmr(:)
    real(r8), pointer :: livestem_xsmr(:)
    real(r8), pointer :: froot_xsmr(:)
    real(r8), pointer :: leaf_xsmr(:)
    real(r8), pointer :: livecroot_xsmr(:)
    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(:)         ! 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 :: transfer_deadcroot_gr(:)     ! dead coarse root growth respiration from storage (gC/m2/s)
    real(r8), pointer :: transfer_deadstem_gr(:)      ! dead stem growth respiration from storage (gC/m2/s)
    real(r8), pointer :: transfer_froot_gr(:)         ! fine root  growth respiration from storage (gC/m2/s)
    real(r8), pointer :: transfer_leaf_gr(:)          ! leaf growth respiration from storage (gC/m2/s)
    real(r8), pointer :: transfer_livecroot_gr(:)     ! live coarse root growth respiration from storage (gC/m2/s)
    real(r8), pointer :: transfer_livestem_gr(:)      ! live stem growth respiration from storage (gC/m2/s)
    real(r8), pointer :: cpool_to_grainc(:)           ! allocation to grain C (gC/m2/s)
    real(r8), pointer :: cpool_to_grainc_storage(:)   ! allocation to grain C storage (gC/m2/s)
    real(r8), pointer :: grainc_storage_to_xfer(:)    ! grain C shift storage to transfer (gC/m2/s)
    real(r8), pointer :: livestemc_to_litter(:)       ! live stem C litterfall (gC/m2/s)
    real(r8), pointer :: grainc_to_food(:)            ! grain C to food (gC/m2/s)
    real(r8), pointer :: grainc_xfer_to_grainc(:)     ! grain C growth from storage (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 :: transfer_grain_gr(:)         ! grain growth respiration from storage (gC/m2/s)
   local pointers to implicit in/out arrays
    real(r8), pointer :: grainc(:)             ! grain C:N (gC/gN)
    real(r8), pointer :: grainc_storage(:)     ! (gC/m2) grain C storage
    real(r8), pointer :: grainc_xfer(:)        ! (gC/m2) grain C transfer
    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 :: 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 :: cpool(:)              ! (gC/m2) temporary photosynthate C pool
    real(r8), pointer :: xsmrpool(:)           ! (gC/m2) execss maint resp 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 :: 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
 
   local pointers for dynamic landcover fluxes and states
    real(r8), pointer :: dwt_seedc_to_leaf(:)
    real(r8), pointer :: dwt_seedc_to_deadstem(:)
    real(r8), pointer :: dwt_frootc_to_litr1c(:)
    real(r8), pointer :: dwt_frootc_to_litr2c(:)
    real(r8), pointer :: dwt_frootc_to_litr3c(:)
    real(r8), pointer :: dwt_livecrootc_to_cwdc(:)
    real(r8), pointer :: dwt_deadcrootc_to_cwdc(:)
    real(r8), pointer :: seedc(:)
 
   !OTHER LOCAL VARIABLES:
    integer :: c,p     ! indices
    integer :: fp,fc   ! lake filter indices
    real(r8):: dt      ! radiation time step (seconds)



Erik Kluzek 2011-06-15