INTERFACE:
subroutine CNDecompAlloc (lbp, ubp, lbc, ubc, num_soilc, filter_soilc, &
num_soilp, filter_soilp, num_pcropp)
DESCRIPTION:
USES:
use clmtype
use CNAllocationMod , only: CNAllocation
use clm_time_manager, only: get_step_size
use pft2colMod , only: p2c
use clm_varcon , only: secspday
ARGUMENTS:
implicit none
integer, intent(in) :: lbp, ubp ! pft-index bounds
integer, intent(in) :: lbc, ubc ! column-index bounds
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
integer, intent(in) :: num_pcropp ! number of pfts in prognostic crop filter
CALLED FROM:
subroutine CNEcosystemDyn in module CNEcosystemDynMod.F90REVISION HISTORY:
8/15/03: Created by Peter ThorntonLOCAL VARIABLES:
local pointers to implicit in scalars
! column level
real(r8), pointer :: t_soisno(:,:) ! soil temperature (Kelvin) (-nlevsno+1:nlevgrnd)
real(r8), pointer :: psisat(:,:) ! soil water potential at saturation for CN code (MPa)
real(r8), pointer :: soilpsi(:,:) ! soil water potential in each soil layer (MPa)
real(r8), pointer :: dz(:,:) ! soil layer thickness (m)
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 :: 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
integer, pointer :: clandunit(:) ! index into landunit level quantities
integer , pointer :: itypelun(:) ! landunit type
! pft level
real(r8), pointer :: rootfr(:,:) ! fraction of roots in each soil layer (nlevgrnd)
local pointers to implicit in/out scalars
real(r8), pointer :: fpi(:) ! fraction of potential immobilization (no units)
real(r8), pointer :: cwdc_to_litr2c(:)
real(r8), pointer :: cwdc_to_litr3c(:)
real(r8), pointer :: litr1_hr(:)
real(r8), pointer :: litr1c_to_soil1c(:)
real(r8), pointer :: litr2_hr(:)
real(r8), pointer :: litr2c_to_soil2c(:)
real(r8), pointer :: litr3_hr(:)
real(r8), pointer :: litr3c_to_soil3c(:)
real(r8), pointer :: soil1_hr(:)
real(r8), pointer :: soil1c_to_soil2c(:)
real(r8), pointer :: soil2_hr(:)
real(r8), pointer :: soil2c_to_soil3c(:)
real(r8), pointer :: soil3_hr(:)
real(r8), pointer :: soil3c_to_soil4c(:)
real(r8), pointer :: soil4_hr(:)
real(r8), pointer :: cwdn_to_litr2n(:)
real(r8), pointer :: cwdn_to_litr3n(:)
real(r8), pointer :: potential_immob(:)
real(r8), pointer :: litr1n_to_soil1n(:)
real(r8), pointer :: sminn_to_soil1n_l1(:)
real(r8), pointer :: litr2n_to_soil2n(:)
real(r8), pointer :: sminn_to_soil2n_l2(:)
real(r8), pointer :: litr3n_to_soil3n(:)
real(r8), pointer :: sminn_to_soil3n_l3(:)
real(r8), pointer :: soil1n_to_soil2n(:)
real(r8), pointer :: sminn_to_soil2n_s1(:)
real(r8), pointer :: soil2n_to_soil3n(:)
real(r8), pointer :: sminn_to_soil3n_s2(:)
real(r8), pointer :: soil3n_to_soil4n(:)
real(r8), pointer :: sminn_to_soil4n_s3(:)
real(r8), pointer :: soil4n_to_sminn(:)
real(r8), pointer :: sminn_to_denit_l1s1(:)
real(r8), pointer :: sminn_to_denit_l2s2(:)
real(r8), pointer :: sminn_to_denit_l3s3(:)
real(r8), pointer :: sminn_to_denit_s1s2(:)
real(r8), pointer :: sminn_to_denit_s2s3(:)
real(r8), pointer :: sminn_to_denit_s3s4(:)
real(r8), pointer :: sminn_to_denit_s4(:)
real(r8), pointer :: sminn_to_denit_excess(:)
real(r8), pointer :: gross_nmin(:)
real(r8), pointer :: net_nmin(:)
local pointers to implicit out scalars
!OTHER LOCAL VARIABLES:
integer :: c,j !indices
integer :: fc !lake filter column index
real(r8):: dt !decomp timestep (seconds)
real(r8):: dtd !decomp timestep (days)
real(r8), pointer:: fr(:,:) !column-level rooting fraction by soil depth
real(r8):: frw(lbc:ubc) !rooting fraction weight
real(r8):: t_scalar(lbc:ubc) !soil temperature scalar for decomp
real(r8):: minpsi, maxpsi !limits for soil water scalar for decomp
real(r8):: psi !temporary soilpsi for water scalar
real(r8):: w_scalar(lbc:ubc) !soil water scalar for decomp
real(r8):: rate_scalar !combined rate scalar for decomp
real(r8):: cn_l1(lbc:ubc) !C:N for litter 1
real(r8):: cn_l2(lbc:ubc) !C:N for litter 2
real(r8):: cn_l3(lbc:ubc) !C:N for litter 3
real(r8):: cn_s1 !C:N for SOM 1
real(r8):: cn_s2 !C:N for SOM 2
real(r8):: cn_s3 !C:N for SOM 3
real(r8):: cn_s4 !C:N for SOM 4
real(r8):: rf_l1s1 !respiration fraction litter 1 -> SOM 1
real(r8):: rf_l2s2 !respiration fraction litter 2 -> SOM 2
real(r8):: rf_l3s3 !respiration fraction litter 3 -> SOM 3
real(r8):: rf_s1s2 !respiration fraction SOM 1 -> SOM 2
real(r8):: rf_s2s3 !respiration fraction SOM 2 -> SOM 3
real(r8):: rf_s3s4 !respiration fraction SOM 3 -> SOM 4
real(r8):: k_l1 !decomposition rate constant litter 1
real(r8):: k_l2 !decomposition rate constant litter 2
real(r8):: k_l3 !decomposition rate constant litter 3
real(r8):: k_s1 !decomposition rate constant SOM 1
real(r8):: k_s2 !decomposition rate constant SOM 2
real(r8):: k_s3 !decomposition rate constant SOM 3
real(r8):: k_s4 !decomposition rate constant SOM 3
real(r8):: k_frag !fragmentation rate constant CWD
real(r8):: ck_l1 !corrected decomposition rate constant litter 1
real(r8):: ck_l2 !corrected decomposition rate constant litter 2
real(r8):: ck_l3 !corrected decomposition rate constant litter 3
real(r8):: ck_s1 !corrected decomposition rate constant SOM 1
real(r8):: ck_s2 !corrected decomposition rate constant SOM 2
real(r8):: ck_s3 !corrected decomposition rate constant SOM 3
real(r8):: ck_s4 !corrected decomposition rate constant SOM 3
real(r8):: ck_frag !corrected fragmentation rate constant CWD
real(r8):: cwd_fcel !cellulose fraction of coarse woody debris
real(r8):: cwd_flig !lignin fraction of coarse woody debris
real(r8):: cwdc_loss !fragmentation rate for CWD carbon (gC/m2/s)
real(r8):: cwdn_loss !fragmentation rate for CWD nitrogen (gN/m2/s)
real(r8):: plitr1c_loss(lbc:ubc) !potential C loss from litter 1
real(r8):: plitr2c_loss(lbc:ubc) !potential C loss from litter 2
real(r8):: plitr3c_loss(lbc:ubc) !potential C loss from litter 3
real(r8):: psoil1c_loss(lbc:ubc) !potential C loss from SOM 1
real(r8):: psoil2c_loss(lbc:ubc) !potential C loss from SOM 2
real(r8):: psoil3c_loss(lbc:ubc) !potential C loss from SOM 3
real(r8):: psoil4c_loss(lbc:ubc) !potential C loss from SOM 4
real(r8):: pmnf_l1s1(lbc:ubc) !potential mineral N flux, litter 1 -> SOM 1
real(r8):: pmnf_l2s2(lbc:ubc) !potential mineral N flux, litter 2 -> SOM 2
real(r8):: pmnf_l3s3(lbc:ubc) !potential mineral N flux, litter 3 -> SOM 3
real(r8):: pmnf_s1s2(lbc:ubc) !potential mineral N flux, SOM 1 -> SOM 2
real(r8):: pmnf_s2s3(lbc:ubc) !potential mineral N flux, SOM 2 -> SOM 3
real(r8):: pmnf_s3s4(lbc:ubc) !potential mineral N flux, SOM 3 -> SOM 4
real(r8):: pmnf_s4(lbc:ubc) !potential mineral N flux, SOM 4
real(r8):: immob(lbc:ubc) !potential N immobilization
real(r8):: ratio !temporary variable
real(r8):: dnp !denitrification proportion
integer :: nlevdecomp ! bottom layer to consider for decomp controls
real(r8):: spinup_scalar !multiplier for AD_SPINUP algorithm