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 CNEcosystemDynREVISION HISTORY:
8/1/03: Created by Peter ThorntonLOCAL 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