next up previous contents
Next: Fortran: Module Interface CNWoodProductsMod Up: Fortran: Module Interface CNVegStructUpdateMod Previous: Fortran: Module Interface CNVegStructUpdateMod   Contents

CNVegStructUpdate


INTERFACE:

 subroutine CNVegStructUpdate(num_soilp, filter_soilp)
DESCRIPTION:

On the radiation time step, use C state variables and epc to diagnose vegetation structure (LAI, SAI, height)


USES:

    use clmtype
    use clm_atmlnd   , only: clm_a2l
    use pftvarcon    , only: noveg, nc3crop, nirrig, nbrdlf_evr_shrub, nbrdlf_dcd_brl_shrub
    use pftvarcon    , only: ncorn, npcropmin, ztopmx, laimx
    use clm_varctl   , only: iulog
    use shr_sys_mod  , only: shr_sys_flush
    use shr_const_mod, only: SHR_CONST_PI
    use clm_time_manager , only : get_rad_step_size
ARGUMENTS:
    implicit none
    integer, intent(in) :: num_soilp                 ! number of column soil points in pft filter
    integer, intent(in) :: filter_soilp(:)   ! pft filter for soil points
CALLED FROM:
   subroutine CNEcosystemDyn
REVISION HISTORY:
   10/28/03: Created by Peter Thornton
   2/29/08, David Lawrence: revised snow burial fraction for short vegetation
LOCAL VARIABLES:
   local pointers to implicit in scalars
 #if (defined CNDV)
    real(r8), pointer :: allom2(:)     ! ecophys const
    real(r8), pointer :: allom3(:)     ! ecophys const
    real(r8), pointer :: nind(:)       ! number of individuals (#/m**2)
    real(r8), pointer :: fpcgrid(:)    ! fractional area of pft (pft area/nat veg area)
 #endif
    integer , pointer :: ivt(:)        ! pft vegetation type
    integer , pointer :: pcolumn(:)    ! column index associated with each pft
    integer , pointer :: pgridcell(:)  ! pft's gridcell index
    real(r8), pointer :: snowdp(:)     ! snow height (m)
    real(r8), pointer :: leafc(:)      ! (gC/m2) leaf C
    real(r8), pointer :: deadstemc(:)  ! (gC/m2) dead stem C
    real(r8), pointer :: woody(:)      !binary flag for woody lifeform (1=woody, 0=not woody)
    real(r8), pointer :: slatop(:)     !specific leaf area at top of canopy, projected area basis [m^2/gC]
    real(r8), pointer :: dsladlai(:)   !dSLA/dLAI, projected area basis [m^2/gC]
    real(r8), pointer :: z0mr(:)       !ratio of momentum roughness length to canopy top height (-)
    real(r8), pointer :: displar(:)    !ratio of displacement height to canopy top height (-)
    real(r8), pointer :: forc_hgt_u_pft(:) ! observational height of wind at pft-level [m]
    real(r8), pointer :: dwood(:)      ! density of wood (gC/m^3)
   local pointers to implicit in/out scalars
    integer , pointer :: frac_veg_nosno_alb(:) ! frac of vegetation not covered by snow [-]
    real(r8), pointer :: tlai(:) !one-sided leaf area index, no burying by snow
    real(r8), pointer :: tsai(:) !one-sided stem area index, no burying by snow
    real(r8), pointer :: htop(:) !canopy top (m)
    real(r8), pointer :: hbot(:) !canopy bottom (m)
    real(r8), pointer :: elai(:)     ! one-sided leaf area index with burying by snow
    real(r8), pointer :: esai(:)     ! one-sided stem area index with burying by snow
    real(r8), pointer :: htmx(:)     ! max hgt attained by a crop during yr (m)
    integer , pointer :: peaklai(:)  ! 1: max allowed lai; 0: not at max
    integer , pointer :: harvdate(:) ! harvest date
   local pointers to implicit out scalars
   !OTHER LOCAL VARIABLES:
    integer :: p,c,g        !indices
    integer :: fp           !lake filter indices
    real(r8):: taper        ! ratio of height:radius_breast_height (tree allometry)
    real(r8):: stocking     ! #stems / ha (stocking density)
    real(r8):: ol           ! thickness of canopy layer covered by snow (m)
    real(r8):: fb           ! fraction of canopy layer covered by snow
    real(r8) :: tlai_old    ! for use in Zeng tsai formula
    real(r8) :: tsai_old    ! for use in Zeng tsai formula
    real(r8) :: tsai_min    ! PFT derived minimum tsai
    real(r8) :: tsai_alpha  ! monthly decay rate of tsai
    real(r8) dt             ! radiation time step (sec)
 
    real(r8), parameter :: dtsmonth = 2592000._r8 ! number of seconds in a 30 day month (60x60x24x30)



Erik Kluzek 2011-06-15