INTERFACE:
subroutine CNHarvest (num_soilc, filter_soilc, num_soilp, filter_soilp)DESCRIPTION:
Harvest mortality routine for coupled carbon-nitrogen code (CN)
USES:
use clmtype use pftvarcon , only : noveg, nbrdlf_evr_shrub, pprodharv10 use clm_varcon , only : secspday use clm_time_manager, only : get_days_per_yearARGUMENTS:
implicit none integer, intent(in) :: num_soilc ! number of soil columns in filter integer, intent(in) :: filter_soilc(:) ! column filter for soil points integer, intent(in) :: num_soilp ! number of soil pfts in filter integer, intent(in) :: filter_soilp(:) ! pft filter for soil pointsCALLED FROM:
subroutine CNEcosystemDynREVISION HISTORY:
3/29/04: Created by Peter ThorntonLOCAL VARIABLES:
local pointers to implicit in arrays integer , pointer :: pgridcell(:) ! pft-level index into gridcell-level quantities integer , pointer :: ivt(:) ! pft vegetation type real(r8), pointer :: leafc(:) ! (gC/m2) leaf C real(r8), pointer :: frootc(:) ! (gC/m2) fine root C real(r8), pointer :: livestemc(:) ! (gC/m2) live stem C real(r8), pointer :: deadstemc(:) ! (gC/m2) dead stem C real(r8), pointer :: livecrootc(:) ! (gC/m2) live coarse root C real(r8), pointer :: deadcrootc(:) ! (gC/m2) dead coarse root C real(r8), pointer :: xsmrpool(:) ! (gC/m2) abstract C pool to meet excess MR demand real(r8), pointer :: leafc_storage(:) ! (gC/m2) leaf C storage real(r8), pointer :: frootc_storage(:) ! (gC/m2) fine root C storage real(r8), pointer :: livestemc_storage(:) ! (gC/m2) live stem C storage real(r8), pointer :: deadstemc_storage(:) ! (gC/m2) dead stem C storage real(r8), pointer :: livecrootc_storage(:) ! (gC/m2) live coarse root C storage real(r8), pointer :: deadcrootc_storage(:) ! (gC/m2) dead coarse root C storage real(r8), pointer :: gresp_storage(:) ! (gC/m2) growth respiration storage real(r8), pointer :: leafc_xfer(:) ! (gC/m2) leaf C transfer real(r8), pointer :: frootc_xfer(:) ! (gC/m2) fine root C transfer real(r8), pointer :: livestemc_xfer(:) ! (gC/m2) live stem C transfer real(r8), pointer :: deadstemc_xfer(:) ! (gC/m2) dead stem C transfer real(r8), pointer :: livecrootc_xfer(:) ! (gC/m2) live coarse root C transfer real(r8), pointer :: deadcrootc_xfer(:) ! (gC/m2) dead coarse root C transfer real(r8), pointer :: gresp_xfer(:) ! (gC/m2) growth respiration transfer real(r8), pointer :: leafn(:) ! (gN/m2) leaf N real(r8), pointer :: frootn(:) ! (gN/m2) fine root N real(r8), pointer :: livestemn(:) ! (gN/m2) live stem N real(r8), pointer :: deadstemn(:) ! (gN/m2) dead stem N real(r8), pointer :: livecrootn(:) ! (gN/m2) live coarse root N real(r8), pointer :: deadcrootn(:) ! (gN/m2) dead coarse root N real(r8), pointer :: retransn(:) ! (gN/m2) plant pool of retranslocated N real(r8), pointer :: leafn_storage(:) ! (gN/m2) leaf N storage real(r8), pointer :: frootn_storage(:) ! (gN/m2) fine root N storage real(r8), pointer :: livestemn_storage(:) ! (gN/m2) live stem N storage real(r8), pointer :: deadstemn_storage(:) ! (gN/m2) dead stem N storage real(r8), pointer :: livecrootn_storage(:) ! (gN/m2) live coarse root N storage real(r8), pointer :: deadcrootn_storage(:) ! (gN/m2) dead coarse root N storage real(r8), pointer :: leafn_xfer(:) ! (gN/m2) leaf N transfer real(r8), pointer :: frootn_xfer(:) ! (gN/m2) fine root N transfer real(r8), pointer :: livestemn_xfer(:) ! (gN/m2) live stem N transfer real(r8), pointer :: deadstemn_xfer(:) ! (gN/m2) dead stem N transfer real(r8), pointer :: livecrootn_xfer(:) ! (gN/m2) live coarse root N transfer real(r8), pointer :: deadcrootn_xfer(:) ! (gN/m2) dead coarse root N transfer local pointers to implicit in/out arrays local pointers to implicit out arrays real(r8), pointer :: hrv_leafc_to_litter(:) real(r8), pointer :: hrv_frootc_to_litter(:) real(r8), pointer :: hrv_livestemc_to_litter(:) real(r8), pointer :: hrv_deadstemc_to_prod10c(:) real(r8), pointer :: hrv_deadstemc_to_prod100c(:) real(r8), pointer :: hrv_livecrootc_to_litter(:) real(r8), pointer :: hrv_deadcrootc_to_litter(:) real(r8), pointer :: hrv_xsmrpool_to_atm(:) real(r8), pointer :: hrv_leafc_storage_to_litter(:) real(r8), pointer :: hrv_frootc_storage_to_litter(:) real(r8), pointer :: hrv_livestemc_storage_to_litter(:) real(r8), pointer :: hrv_deadstemc_storage_to_litter(:) real(r8), pointer :: hrv_livecrootc_storage_to_litter(:) real(r8), pointer :: hrv_deadcrootc_storage_to_litter(:) real(r8), pointer :: hrv_gresp_storage_to_litter(:) real(r8), pointer :: hrv_leafc_xfer_to_litter(:) real(r8), pointer :: hrv_frootc_xfer_to_litter(:) real(r8), pointer :: hrv_livestemc_xfer_to_litter(:) real(r8), pointer :: hrv_deadstemc_xfer_to_litter(:) real(r8), pointer :: hrv_livecrootc_xfer_to_litter(:) real(r8), pointer :: hrv_deadcrootc_xfer_to_litter(:) real(r8), pointer :: hrv_gresp_xfer_to_litter(:) real(r8), pointer :: hrv_leafn_to_litter(:) real(r8), pointer :: hrv_frootn_to_litter(:) real(r8), pointer :: hrv_livestemn_to_litter(:) real(r8), pointer :: hrv_deadstemn_to_prod10n(:) real(r8), pointer :: hrv_deadstemn_to_prod100n(:) real(r8), pointer :: hrv_livecrootn_to_litter(:) real(r8), pointer :: hrv_deadcrootn_to_litter(:) real(r8), pointer :: hrv_retransn_to_litter(:) real(r8), pointer :: hrv_leafn_storage_to_litter(:) real(r8), pointer :: hrv_frootn_storage_to_litter(:) real(r8), pointer :: hrv_livestemn_storage_to_litter(:) real(r8), pointer :: hrv_deadstemn_storage_to_litter(:) real(r8), pointer :: hrv_livecrootn_storage_to_litter(:) real(r8), pointer :: hrv_deadcrootn_storage_to_litter(:) real(r8), pointer :: hrv_leafn_xfer_to_litter(:) real(r8), pointer :: hrv_frootn_xfer_to_litter(:) real(r8), pointer :: hrv_livestemn_xfer_to_litter(:) real(r8), pointer :: hrv_deadstemn_xfer_to_litter(:) real(r8), pointer :: hrv_livecrootn_xfer_to_litter(:) real(r8), pointer :: hrv_deadcrootn_xfer_to_litter(:) !OTHER LOCAL VARIABLES: integer :: p ! pft index integer :: g ! gridcell index integer :: fp ! pft filter index real(r8):: am ! rate for fractional harvest mortality (1/yr) real(r8):: m ! rate for fractional harvest mortality (1/s) real(r8):: days_per_year ! days per year