SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/sso_beljaars04.F90
Go to the documentation of this file.
00001 !     ###########################################################################
00002 SUBROUTINE SSO_BELJAARS04(KI,KLVL,PZ,PSSO_STDEV,PU,PFORC_U,PDFORC_UDU)
00003 !     ###############################################################################
00004 !
00005 !!****  *SSO_BELJAARS04_n * - prepares forcing for canopy air model
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     V. Masson 
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    07/2006
00024 !!---------------------------------------------------------------
00025 !
00026 USE MODD_SURF_ATM_SSO_n, ONLY : XCOEFBE
00027 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00028 USE PARKIND1  ,ONLY : JPRB
00029 !
00030 IMPLICIT NONE
00031 !
00032 !*      0.1    declarations of arguments
00033 !
00034 INTEGER,                  INTENT(IN)    :: KI        ! number of points
00035 INTEGER,                  INTENT(IN)    :: KLVL      ! number of levels in canopy
00036 REAL, DIMENSION(KI,KLVL), INTENT(IN)    :: PZ        ! heights of canopy levels              (m)
00037 REAL, DIMENSION(KI),      INTENT(IN)    :: PSSO_STDEV! Subgrid scale orography standard dev. (m)
00038 
00039 REAL, DIMENSION(KI,KLVL), INTENT(IN)    :: PU        ! wind for each canopy layer            (m/s)
00040 !
00041 REAL, DIMENSION(KI,KLVL), INTENT(INOUT)   :: PFORC_U   ! tendency of wind due to canopy drag   (m/s2)
00042 REAL, DIMENSION(KI,KLVL), INTENT(INOUT)   :: PDFORC_UDU! formal derivative of the tendency of
00043 !                                                    ! wind due to canopy drag               (1/s)
00044 !
00045 !*      0.2    declarations of local variables
00046 !
00047 !
00048 !* BERJLAARS et al 2004  constants
00049 !
00050 REAL, PARAMETER :: C_ALPHA   = 12.
00051 REAL, PARAMETER :: C_BETA    = 1.
00052 REAL, PARAMETER :: C_CMD     = 0.005
00053 REAL, PARAMETER :: C_COR     = 0.6
00054 REAL, PARAMETER :: C_IH      = 0.00102    !   (m-1)
00055 REAL, PARAMETER :: C_KFLT    = 0.00035    !   (m-1)
00056 REAL, PARAMETER :: C_K1      = 0.003      !   (m-1)
00057 REAL, PARAMETER :: C_N1      = -1.9
00058 REAL, PARAMETER :: C_N2      = -2.8
00059 REAL            :: C_AVAR                 ! = C_K1**(C_N1-C_N2) / (C_IH * C_KFLT**C_N1)  
00060 !                                         ! (unit: m^{1+C_N2}  =  m^-1.8)
00061 !
00062 INTEGER                  :: JL            ! loop counter on canopy heights
00063 REAL, DIMENSION(KI,KLVL) :: ZSSO_DRAG     ! drag due to subgrid-scale orogaphy
00064 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00065 !
00066 !-------------------------------------------------------------------------------------
00067 !-------------------------------------------------------------------------------------
00068 IF (LHOOK) CALL DR_HOOK('SSO_BELJAARS04',0,ZHOOK_HANDLE)
00069 !
00070 !*      2.     Computations of wind tendency due to orographic drag
00071 !              ----------------------------------------------------
00072 !
00073 C_AVAR    = C_K1**(C_N1-C_N2) / (C_IH * C_KFLT**C_N1)   ! (unit: m^{1+C_N2}  =  m^-1.8)
00074 !
00075 !
00076 !*      2.1    Drag coefficient in  drag force by subscale orography 
00077 !              -----------------------------------------------------
00078 !
00079 ! unit : m-1    (m^-1.8 . m ^2 . m^-1.2) 
00080 !
00081 ZSSO_DRAG = 0.
00082 DO JL=1,KLVL
00083   ZSSO_DRAG (:,JL) = XCOEFBE * C_ALPHA * C_BETA * C_COR * C_CMD * 2.109 * EXP( -(PZ(:,JL)/1500.)**1.5) &
00084     * C_AVAR * PSSO_STDEV(:)**2 * PZ(:,JL)**(-1.2)
00085 END DO
00086 !
00087 !
00088 !*      2.2    Impact on each SBL layer
00089 !              ------------------------
00090 !
00091 ! Ext = - Cdrag(z)  * u- * u-       (unit :  m s-2)   subscale orgraphy drag
00092 !
00093 PFORC_U(:,:)    = PFORC_U(:,:)    -       ZSSO_DRAG (:,:) * PU(:,:)**2
00094 !
00095 PDFORC_UDU(:,:) = PDFORC_UDU(:,:) -  2. * ZSSO_DRAG (:,:) * PU(:,:)
00096 !
00097 IF (LHOOK) CALL DR_HOOK('SSO_BELJAARS04',1,ZHOOK_HANDLE)
00098 !-------------------------------------------------------------------------------------
00099 !
00100 END SUBROUTINE SSO_BELJAARS04