next up previous contents
Next: StabilityFunc Up: Fortran: Module Interface FrictionVelocityMod Previous: Fortran: Module Interface FrictionVelocityMod   Contents



   subroutine FrictionVelocity(lbn, ubn, fn, filtern, &
                               displa, z0m, z0h, z0q, &
                               obu, iter, ur, um, ustar, &
                               temp1, temp2, temp12m, temp22m, fm, landunit_index)

Calculation of the friction velocity, relation for potential temperature and humidity profiles of surface boundary layer. The scheme is based on the work of Zeng et al. (1998): Intercomparison of bulk aerodynamic algorithms for the computation of sea surface fluxes using TOGA CORE and TAO data. J. Climate, Vol. 11, 2628-2644.


    use clmtype
    use clm_atmlnd, only : clm_a2l
    use clm_varcon, only : vkc
    use clm_varctl, only : iulog
    implicit none
    integer , intent(in)  :: lbn, ubn         ! pft/landunit array bounds
    integer , intent(in)  :: fn               ! number of filtered pft/landunit elements
    integer , intent(in)  :: filtern(fn)      ! pft/landunit filter
    real(r8), intent(in)  :: displa(lbn:ubn)  ! displacement height (m)
    real(r8), intent(in)  :: z0m(lbn:ubn)     ! roughness length over vegetation, momentum [m]
    real(r8), intent(in)  :: z0h(lbn:ubn)     ! roughness length over vegetation, sensible heat [m]
    real(r8), intent(in)  :: z0q(lbn:ubn)     ! roughness length over vegetation, latent heat [m]
    real(r8), intent(in)  :: obu(lbn:ubn)     ! monin-obukhov length (m)
    integer,  intent(in)  :: iter             ! iteration number
    real(r8), intent(in)  :: ur(lbn:ubn)      ! wind speed at reference height [m/s]
    real(r8), intent(in)  :: um(lbn:ubn)      ! wind speed including the stablity effect [m/s]
    logical,  optional, intent(in)  :: landunit_index  ! optional argument that defines landunit or pft level
    real(r8), intent(out) :: ustar(lbn:ubn)   ! friction velocity [m/s]
    real(r8), intent(out) :: temp1(lbn:ubn)   ! relation for potential temperature profile
    real(r8), intent(out) :: temp12m(lbn:ubn) ! relation for potential temperature profile applied at 2-m
    real(r8), intent(out) :: temp2(lbn:ubn)   ! relation for specific humidity profile
    real(r8), intent(out) :: temp22m(lbn:ubn) ! relation for specific humidity profile applied at 2-m
    real(r8), intent(inout) :: fm(lbn:ubn)    ! diagnose 10m wind (DUST only)
   15 September 1999: Yongjiu Dai; Initial code
   15 December 1999:  Paul Houser and Jon Radakovich; F90 Revision
   12/19/01, Peter Thornton
   Added arguments to eliminate passing clm derived type into this function.
   Created by Mariana Vertenstein
   local pointers to implicit in arguments
    integer , pointer :: ngridcell(:)      !pft/landunit gridcell index
    real(r8), pointer :: forc_hgt_u_pft(:) !observational height of wind at pft level [m]
    real(r8), pointer :: forc_hgt_t_pft(:) !observational height of temperature at pft level [m]
    real(r8), pointer :: forc_hgt_q_pft(:) !observational height of specific humidity at pft level [m]
    integer , pointer :: pfti(:)           !beginning pfti index for landunit
    integer , pointer :: pftf(:)           !final pft index for landunit
   local pointers to implicit out arguments
    real(r8), pointer :: u10(:)         ! 10-m wind (m/s) (for dust model)
    real(r8), pointer :: fv(:)          ! friction velocity (m/s) (for dust model)
    real(r8), pointer :: vds(:)         ! dry deposition velocity term (m/s) (for SO4 NH4NO3)
    real(r8), pointer :: u10_clm(:)     ! 10-m wind (m/s)
    real(r8), pointer :: va(:)          ! atmospheric wind speed plus convective velocity (m/s)

Erik Kluzek 2011-06-15