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: secspdayARGUMENTS:
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 filterCALLED 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