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_progARGUMENTS:
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 pftsCALLED FROM:
subroutine CNEcosystemDynREVISION HISTORY:
8/1/03: Created by Peter Thornton 12/5/03, Peter Thornton: Added livewood turnover fluxesLOCAL 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)