#include <misc.h> #include <preproc.h> module CNGRespMod 1,1 #ifdef CN !----------------------------------------------------------------------- !BOP ! ! !MODULE: CNGRespMod ! ! !DESCRIPTION: ! Module for growth respiration fluxes, ! for coupled carbon-nitrogen code. ! ! !USES: use shr_kind_mod, only: r8 => shr_kind_r8 implicit none save private ! !PUBLIC MEMBER FUNCTIONS: public :: CNGResp ! ! !REVISION HISTORY: ! 9/12/03: Created by Peter Thornton ! 10/27/03, Peter Thornton: migrated to vector data structures ! !EOP !----------------------------------------------------------------------- contains !----------------------------------------------------------------------- !BOP ! ! !IROUTINE: CNGResp ! ! !INTERFACE: subroutine CNGResp(num_soilp, filter_soilp) 1,1 ! ! !DESCRIPTION: ! On the radiation time step, update all the prognostic carbon state ! variables ! ! !USES: use clmtype ! ! !ARGUMENTS: implicit none integer, intent(in) :: num_soilp ! number of soil pfts in filter integer, intent(in) :: filter_soilp(:) ! filter for soil pfts ! ! !CALLED FROM: ! subroutine CNEcosystemDyn, in module CNEcosystemDynMod.F90 ! ! !REVISION HISTORY: ! 8/1/03: Created by Peter Thornton ! ! !LOCAL VARIABLES: ! local pointers to implicit in scalars ! integer , pointer :: ivt(:) ! pft vegetation type real(r8), pointer :: cpool_to_leafc(:) real(r8), pointer :: cpool_to_leafc_storage(:) real(r8), pointer :: cpool_to_frootc(:) real(r8), pointer :: cpool_to_frootc_storage(:) real(r8), pointer :: cpool_to_livestemc(:) real(r8), pointer :: cpool_to_livestemc_storage(:) real(r8), pointer :: cpool_to_deadstemc(:) real(r8), pointer :: cpool_to_deadstemc_storage(:) real(r8), pointer :: cpool_to_livecrootc(:) real(r8), pointer :: cpool_to_livecrootc_storage(:) real(r8), pointer :: cpool_to_deadcrootc(:) real(r8), pointer :: cpool_to_deadcrootc_storage(:) real(r8), pointer :: leafc_xfer_to_leafc(:) real(r8), pointer :: frootc_xfer_to_frootc(:) real(r8), pointer :: livestemc_xfer_to_livestemc(:) real(r8), pointer :: deadstemc_xfer_to_deadstemc(:) real(r8), pointer :: livecrootc_xfer_to_livecrootc(:) real(r8), pointer :: deadcrootc_xfer_to_deadcrootc(:) real(r8), pointer :: woody(:) !binary flag for woody lifeform (1=woody, 0=not woody) ! ! local pointers to implicit in/out scalars ! real(r8), pointer :: cpool_leaf_gr(:) real(r8), pointer :: cpool_leaf_storage_gr(:) real(r8), pointer :: transfer_leaf_gr(:) real(r8), pointer :: cpool_froot_gr(:) real(r8), pointer :: cpool_froot_storage_gr(:) real(r8), pointer :: transfer_froot_gr(:) real(r8), pointer :: cpool_livestem_gr(:) real(r8), pointer :: cpool_livestem_storage_gr(:) real(r8), pointer :: transfer_livestem_gr(:) real(r8), pointer :: cpool_deadstem_gr(:) real(r8), pointer :: cpool_deadstem_storage_gr(:) real(r8), pointer :: transfer_deadstem_gr(:) real(r8), pointer :: cpool_livecroot_gr(:) real(r8), pointer :: cpool_livecroot_storage_gr(:) real(r8), pointer :: transfer_livecroot_gr(:) real(r8), pointer :: cpool_deadcroot_gr(:) real(r8), pointer :: cpool_deadcroot_storage_gr(:) real(r8), pointer :: transfer_deadcroot_gr(:) ! ! local pointers to implicit out scalars ! ! ! !OTHER LOCAL VARIABLES: integer :: p ! indices integer :: fp ! lake filter pft index real(r8):: grperc, grpnow ! growth respirarion parameters !EOP !----------------------------------------------------------------------- ! Assign local pointers to derived type arrays (in) ivt => clm3%g%l%c%p%itype cpool_to_leafc => clm3%g%l%c%p%pcf%cpool_to_leafc cpool_to_leafc_storage => clm3%g%l%c%p%pcf%cpool_to_leafc_storage cpool_to_frootc => clm3%g%l%c%p%pcf%cpool_to_frootc cpool_to_frootc_storage => clm3%g%l%c%p%pcf%cpool_to_frootc_storage cpool_to_livestemc => clm3%g%l%c%p%pcf%cpool_to_livestemc cpool_to_livestemc_storage => clm3%g%l%c%p%pcf%cpool_to_livestemc_storage cpool_to_deadstemc => clm3%g%l%c%p%pcf%cpool_to_deadstemc cpool_to_deadstemc_storage => clm3%g%l%c%p%pcf%cpool_to_deadstemc_storage cpool_to_livecrootc => clm3%g%l%c%p%pcf%cpool_to_livecrootc cpool_to_livecrootc_storage => clm3%g%l%c%p%pcf%cpool_to_livecrootc_storage cpool_to_deadcrootc => clm3%g%l%c%p%pcf%cpool_to_deadcrootc cpool_to_deadcrootc_storage => clm3%g%l%c%p%pcf%cpool_to_deadcrootc_storage leafc_xfer_to_leafc => clm3%g%l%c%p%pcf%leafc_xfer_to_leafc frootc_xfer_to_frootc => clm3%g%l%c%p%pcf%frootc_xfer_to_frootc livestemc_xfer_to_livestemc => clm3%g%l%c%p%pcf%livestemc_xfer_to_livestemc deadstemc_xfer_to_deadstemc => clm3%g%l%c%p%pcf%deadstemc_xfer_to_deadstemc livecrootc_xfer_to_livecrootc => clm3%g%l%c%p%pcf%livecrootc_xfer_to_livecrootc deadcrootc_xfer_to_deadcrootc => clm3%g%l%c%p%pcf%deadcrootc_xfer_to_deadcrootc woody => pftcon%woody ! Assign local pointers to derived type arrays (out) cpool_leaf_gr => clm3%g%l%c%p%pcf%cpool_leaf_gr cpool_leaf_storage_gr => clm3%g%l%c%p%pcf%cpool_leaf_storage_gr transfer_leaf_gr => clm3%g%l%c%p%pcf%transfer_leaf_gr cpool_froot_gr => clm3%g%l%c%p%pcf%cpool_froot_gr cpool_froot_storage_gr => clm3%g%l%c%p%pcf%cpool_froot_storage_gr transfer_froot_gr => clm3%g%l%c%p%pcf%transfer_froot_gr cpool_livestem_gr => clm3%g%l%c%p%pcf%cpool_livestem_gr cpool_livestem_storage_gr => clm3%g%l%c%p%pcf%cpool_livestem_storage_gr transfer_livestem_gr => clm3%g%l%c%p%pcf%transfer_livestem_gr cpool_deadstem_gr => clm3%g%l%c%p%pcf%cpool_deadstem_gr cpool_deadstem_storage_gr => clm3%g%l%c%p%pcf%cpool_deadstem_storage_gr transfer_deadstem_gr => clm3%g%l%c%p%pcf%transfer_deadstem_gr cpool_livecroot_gr => clm3%g%l%c%p%pcf%cpool_livecroot_gr cpool_livecroot_storage_gr => clm3%g%l%c%p%pcf%cpool_livecroot_storage_gr transfer_livecroot_gr => clm3%g%l%c%p%pcf%transfer_livecroot_gr cpool_deadcroot_gr => clm3%g%l%c%p%pcf%cpool_deadcroot_gr cpool_deadcroot_storage_gr => clm3%g%l%c%p%pcf%cpool_deadcroot_storage_gr transfer_deadcroot_gr => clm3%g%l%c%p%pcf%transfer_deadcroot_gr ! set some parameters (temporary, these will eventually go into ! either pepc, or parameter file grperc = 0.3_r8 grpnow = 1.0_r8 ! Loop through pfts ! start pft loop do fp = 1,num_soilp p = filter_soilp(fp) ! leaf and fine root growth respiration cpool_leaf_gr(p) = cpool_to_leafc(p) * grperc cpool_leaf_storage_gr(p) = cpool_to_leafc_storage(p) * grperc * grpnow transfer_leaf_gr(p) = leafc_xfer_to_leafc(p) * grperc * (1._r8 - grpnow) cpool_froot_gr(p) = cpool_to_frootc(p) * grperc cpool_froot_storage_gr(p) = cpool_to_frootc_storage(p) * grperc * grpnow transfer_froot_gr(p) = frootc_xfer_to_frootc(p) * grperc * (1._r8 - grpnow) if (woody(ivt(p)) == 1._r8) then cpool_livestem_gr(p) = cpool_to_livestemc(p) * grperc cpool_livestem_storage_gr(p) = cpool_to_livestemc_storage(p) * grperc * grpnow transfer_livestem_gr(p) = livestemc_xfer_to_livestemc(p) * grperc * (1._r8 - grpnow) cpool_deadstem_gr(p) = cpool_to_deadstemc(p) * grperc cpool_deadstem_storage_gr(p) = cpool_to_deadstemc_storage(p) * grperc * grpnow transfer_deadstem_gr(p) = deadstemc_xfer_to_deadstemc(p) * grperc * (1._r8 - grpnow) cpool_livecroot_gr(p) = cpool_to_livecrootc(p) * grperc cpool_livecroot_storage_gr(p) = cpool_to_livecrootc_storage(p) * grperc * grpnow transfer_livecroot_gr(p) = livecrootc_xfer_to_livecrootc(p) * grperc * (1._r8 - grpnow) cpool_deadcroot_gr(p) = cpool_to_deadcrootc(p) * grperc cpool_deadcroot_storage_gr(p) = cpool_to_deadcrootc_storage(p) * grperc * grpnow transfer_deadcroot_gr(p) = deadcrootc_xfer_to_deadcrootc(p) * grperc * (1._r8 - grpnow) end if end do end subroutine CNGResp #endif end module CNGRespMod