|
SURFEX v7.3
General documentation of Surfex
|
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
1.8.0