• Main Page
  • Modules
  • Data Types List
  • Files
  • File List
  • File Members

vmfcalzo.F90

Go to the documentation of this file.
00001 
00002 subroutine vmfcalzo(sib,zzwind,zztemp) 
00003 
00004 
00005 !*****************************************************************************
00006 !     VENTILATION MASS FLUX,Ustar, and transfer coefficients for momentum 
00007 !     and heat fluxes, based on by Louis (1979, 1982), and revised by Holtslag
00008 !     and Boville(1993), and by Beljaars and Holtslag (1991).              
00009 !  
00010 !     Rerences:
00011 !       Beljars and Holtslag (1991): Flux parameterization over land surfaces
00012 !              for atmospheric models. J. Appl. Meteo., 30, 327-341.
00013 !       Holtslag and Boville (1993): Local versus nonlocal boundary-layer 
00014 !              diffusion in a global climate model. J. of Climate, 6, 1825-
00015 !              1842.
00016 !       Louis, J. F., (1979):A parametric model of vertical eddy fluxes in
00017 !              atmosphere. Boundary-Layer Meteo., 17, 187-202.
00018 !       Louis, Tiedke, and Geleyn, (1982): A short history of the PBL
00019 !              parameterization at ECMWF. Proc. ECMWF Workshop on Boundary-
00020 !              Layer parameterization, ECMWF, 59-79.
00021 !
00022 !     General formulation:
00023 !        surface_flux = transfer_coef.*U1*(mean_in_regerence - mean_at_sfc.) 
00024 !     Transfer coefficients for mommentum and heat fluxes are:
00025 !        CU = CUN*Fm, and
00026 !        CT = CTN*Fh
00027 !        where  CUN and CTN are nutral values of momentum and heat transfers,
00028 !           and Fm and Fh are stability functions derived from surface
00029 !           similarity relationships.     
00030 !*****************************************************************************
00031 
00032     use kinds
00033     use sibtype
00034 
00035     use physical_parameters, only:  &
00036         grav
00037 
00038     use sib_const_module, only:  &
00039         vkrmn
00040 
00041     implicit none
00042 
00043 
00044     !----------------------------------------------------------------------
00045 
00046     type(sib_t), intent(inout) :: sib
00047 
00048     !----------------------------------------------------------------------  
00049 
00050 
00051 
00052     real(kind=dbl_kind),intent(in) :: zzwind
00053     real(kind=dbl_kind),intent(in) :: zztemp
00054 
00055 
00056     !...LOCAL VARIABLES...
00057     real(kind=dbl_kind) :: zrib
00058     real(kind=dbl_kind) :: z1z0u
00059     real(kind=dbl_kind) :: z1z0urt
00060     real(kind=dbl_kind) :: cun
00061     real(kind=dbl_kind) :: temv
00062     real(kind=dbl_kind) :: rib
00063     real(kind=dbl_kind) :: fmomn
00064     real(kind=dbl_kind) :: ribtemp
00065     real(kind=dbl_kind) :: dm
00066 
00067     ! constants for surface flux functions, according to Holtslag and
00068     ! Boville (1993, J. Climate)
00069     ! constants for unstable function
00070     real(kind=dbl_kind),parameter:: bunstablM = 10.  
00071     real(kind=dbl_kind),parameter:: cunstablM = 75.
00072 
00073                 ! constants for stable function
00074     real(kind=dbl_kind),parameter:: bstabl = 8.   
00075     real(kind=dbl_kind),parameter:: cstabl = 10.
00076 
00077 
00078     zrib = zzwind**2.0 / zztemp
00079 
00080     !   Ratio of reference height (zwind/ztemp) and roughness length:
00081     z1z0u = zzwind/ 0.0002   ! oceanic roughness length
00082     z1z0urt = sqrt( z1z0U )
00083     z1z0u = log( z1z0U )
00084 
00085     !   Neutral surface transfers for momentum CUN and for heat/moisture CTN:
00086 
00087     cun = vkrmn*vkrmn / (z1z0u*z1z0u )   !neutral Cm & Ct
00088 
00089     !   SURFACE TO AIR DIFFERENCE OF POTENTIAL TEMPERATURE.            
00090     !   RIB IS THE BULK RICHARDSON NUMBER, between reference height and surface.
00091 
00092     temv = sib%prog%tha * sib%prog%spdm * sib%prog%spdm                          
00093     temv = max(1.0e-6_dbl_kind,temv)
00094     rib = -sib%diag%thvgm * grav * zrib / temv 
00095 
00096     !   The stability functions for momentum and heat/moisture fluxes as
00097     !   derived from the surface-similarity theory by Luis (1079, 1982), and
00098     !   revised by Holtslag and Boville(1993), and by Beljaars and Holtslag 
00099     !   (1991).
00100 
00101     if(rib >= 0.0_dbl_kind) then                                           
00102 
00103         !  THE STABLE CASE. RIB IS USED WITH AN UPPER LIMIT              
00104 
00105         rib = min( rib, 0.5_dbl_kind)                   
00106         fmomn = (1. + cstabl * rib * (1.+ bstabl * rib))
00107         fmomn = 1. / fmomn
00108         fmomn = max(1.0e-4_dbl_kind,fmomn)
00109 
00110     else                                  
00111 
00112         !  THE UNSTABLE CASE.    
00113 
00114         ribtemp = abs(rib)
00115         ribtemp = sqrt( ribtemp )
00116         dm = 1. + cunstablm * cun * z1z0urt * ribtemp
00117         fmomn = 1. - (bunstablm * rib ) / dm
00118 
00119     end if    
00120 
00121     !   surface-air transfer coefficients for momentum CU, for heat and 
00122     !   moisture CT.
00123 
00124     sib%diag%cu = cun * fmomn 
00125 
00126     !   Ustar and ventlation mass flux: note that the ustar and ventlation 
00127     !   are calculated differently from the Deardoff's methods due to their
00128     !   differences in define the CU and CT.
00129 
00130     sib%diag%ustar   = sib%prog%spdm * sib%prog%spdm * sib%diag%cu 
00131     sib%diag%ustar   = sqrt( sib%diag%ustar ) 
00132     sib%diag%drag(2) = sib%prog%ros * sib%diag%cu * sib%diag%ustar
00133 
00134     ! Note there is no CHECK FOR VENTMF EXCEEDS TOWNSENDS(1962) FREE CONVECTION  
00135     ! VALUE, like DEARDORFF EQ(40B), because the above CU and CT included
00136     ! free convection conditions. 
00137 
00138 
00139 
00140 end subroutine vmfcalzo

Generated on Tue Apr 16 2013 21:01:40 for SIB by  doxygen 1.7.1