next up previous contents
Next: Fortran: Module Interface CNrestMod Up: Fortran: Module Interface CNPrecisionControlMod Previous: Fortran: Module Interface CNPrecisionControlMod   Contents

CNPrecisionControl


INTERFACE:

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

On the radiation time step, force leaf and deadstem c and n to 0 if they get too small.


USES:

    use clmtype
    use abortutils,   only: endrun
    use clm_varctl,   only: iulog
    use pftvarcon,    only: nc3crop
    use surfrdMod,    only: crop_prog
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:
   8/1/03: Created by Peter Thornton
LOCAL VARIABLES:
   local pointers to implicit in scalars
    real(r8), pointer :: col_ctrunc(:)         ! (gC/m2) column-level sink for C truncation
    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)
 #if (defined C13)
    real(r8), pointer :: c13_col_ctrunc(:)     ! (gC/m2) column-level sink for C truncation
    real(r8), pointer :: c13_cwdc(:)           ! (gC/m2) coarse woody debris C
    real(r8), pointer :: c13_litr1c(:)         ! (gC/m2) litter labile C
    real(r8), pointer :: c13_litr2c(:)         ! (gC/m2) litter cellulose C
    real(r8), pointer :: c13_litr3c(:)         ! (gC/m2) litter lignin C
    real(r8), pointer :: c13_soil1c(:)         ! (gC/m2) soil organic matter C (fast pool)
    real(r8), pointer :: c13_soil2c(:)         ! (gC/m2) soil organic matter C (medium pool)
    real(r8), pointer :: c13_soil3c(:)         ! (gC/m2) soil organic matter C (slow pool)
    real(r8), pointer :: c13_soil4c(:)         ! (gC/m2) soil organic matter C (slowest pool)
 #endif
    real(r8), pointer :: col_ntrunc(:)         ! (gN/m2) column-level sink for N truncation
    real(r8), pointer :: cwdn(:)               ! (gN/m2) coarse woody debris N
    real(r8), pointer :: litr1n(:)             ! (gN/m2) litter labile N
    real(r8), pointer :: litr2n(:)             ! (gN/m2) litter cellulose N
    real(r8), pointer :: litr3n(:)             ! (gN/m2) litter lignin N
    real(r8), pointer :: soil1n(:)             ! (gN/m2) soil organic matter N (fast pool)
    real(r8), pointer :: soil2n(:)             ! (gN/m2) soil organic matter N (medium pool)
    real(r8), pointer :: soil3n(:)             ! (gN/m2) soil orgainc matter N (slow pool)
    real(r8), pointer :: soil4n(:)             ! (gN/m2) soil orgainc matter N (slowest pool)
    real(r8), pointer :: cpool(:)              ! (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 :: 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 :: pft_ctrunc(:)         ! (gC/m2) pft-level sink for C truncation
    real(r8), pointer :: xsmrpool(:)           ! (gC/m2) execss maint resp C pool
    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
 #if (defined C13)
    real(r8), pointer :: c13_cpool(:)              ! (gC/m2) temporary photosynthate C pool
    real(r8), pointer :: c13_deadcrootc(:)         ! (gC/m2) dead coarse root C
    real(r8), pointer :: c13_deadcrootc_storage(:) ! (gC/m2) dead coarse root C storage
    real(r8), pointer :: c13_deadcrootc_xfer(:)    ! (gC/m2) dead coarse root C transfer
    real(r8), pointer :: c13_deadstemc(:)          ! (gC/m2) dead stem C
    real(r8), pointer :: c13_deadstemc_storage(:)  ! (gC/m2) dead stem C storage
    real(r8), pointer :: c13_deadstemc_xfer(:)     ! (gC/m2) dead stem C transfer
    real(r8), pointer :: c13_frootc(:)             ! (gC/m2) fine root C
    real(r8), pointer :: c13_frootc_storage(:)     ! (gC/m2) fine root C storage
    real(r8), pointer :: c13_frootc_xfer(:)        ! (gC/m2) fine root C transfer
    real(r8), pointer :: c13_gresp_storage(:)      ! (gC/m2) growth respiration storage
    real(r8), pointer :: c13_gresp_xfer(:)         ! (gC/m2) growth respiration transfer
    real(r8), pointer :: c13_leafc(:)              ! (gC/m2) leaf C
    real(r8), pointer :: c13_leafc_storage(:)      ! (gC/m2) leaf C storage
    real(r8), pointer :: c13_leafc_xfer(:)         ! (gC/m2) leaf C transfer
    real(r8), pointer :: c13_livecrootc(:)         ! (gC/m2) live coarse root C
    real(r8), pointer :: c13_livecrootc_storage(:) ! (gC/m2) live coarse root C storage
    real(r8), pointer :: c13_livecrootc_xfer(:)    ! (gC/m2) live coarse root C transfer
    real(r8), pointer :: c13_livestemc(:)          ! (gC/m2) live stem C
    real(r8), pointer :: c13_livestemc_storage(:)  ! (gC/m2) live stem C storage
    real(r8), pointer :: c13_livestemc_xfer(:)     ! (gC/m2) live stem C transfer
    real(r8), pointer :: c13_pft_ctrunc(:)         ! (gC/m2) pft-level sink for C truncation
 #endif
    real(r8), pointer :: deadcrootn(:)         ! (gN/m2) dead coarse root N
    real(r8), pointer :: deadcrootn_storage(:) ! (gN/m2) dead coarse root N storage
    real(r8), pointer :: deadcrootn_xfer(:)    ! (gN/m2) dead coarse root N transfer
    real(r8), pointer :: deadstemn(:)          ! (gN/m2) dead stem N
    real(r8), pointer :: deadstemn_storage(:)  ! (gN/m2) dead stem N storage
    real(r8), pointer :: deadstemn_xfer(:)     ! (gN/m2) dead stem N transfer
    real(r8), pointer :: frootn(:)             ! (gN/m2) fine root N
    real(r8), pointer :: frootn_storage(:)     ! (gN/m2) fine root N storage
    real(r8), pointer :: frootn_xfer(:)        ! (gN/m2) fine root N transfer
    real(r8), pointer :: leafn(:)              ! (gN/m2) leaf N 
    real(r8), pointer :: leafn_storage(:)      ! (gN/m2) leaf N storage
    real(r8), pointer :: leafn_xfer(:)         ! (gN/m2) leaf N transfer
    real(r8), pointer :: livecrootn(:)         ! (gN/m2) live coarse root N
    real(r8), pointer :: livecrootn_storage(:) ! (gN/m2) live coarse root N storage
    real(r8), pointer :: livecrootn_xfer(:)    ! (gN/m2) live coarse root N transfer
    real(r8), pointer :: grainn(:)             ! (gC/m2) grain N
    real(r8), pointer :: grainn_storage(:)     ! (gC/m2) grain N storage
    real(r8), pointer :: grainn_xfer(:)        ! (gC/m2) grain N transfer
    real(r8), pointer :: livestemn(:)          ! (gN/m2) live stem N
    real(r8), pointer :: livestemn_storage(:)  ! (gN/m2) live stem N storage
    real(r8), pointer :: livestemn_xfer(:)     ! (gN/m2) live stem N transfer
    real(r8), pointer :: npool(:)              ! (gN/m2) temporary plant N pool
    real(r8), pointer :: pft_ntrunc(:)         ! (gN/m2) pft-level sink for N truncation
    real(r8), pointer :: retransn(:)           ! (gN/m2) plant pool of retranslocated N
    integer , pointer :: ivt(:)                ! pft vegetation type
   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
    real(r8):: pc,pn    ! truncation terms for pft-level corrections
    real(r8):: cc,cn    ! truncation terms for column-level corrections
 #if (defined C13)
    real(r8):: pc13     ! truncation terms for pft-level corrections
    real(r8):: cc13     ! truncation terms for column-level corrections
 #endif
    real(r8):: ccrit    ! critical carbon state value for truncation
    real(r8):: ncrit    ! critical nitrogen state value for truncation



Erik Kluzek 2011-06-15