SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/init_water_sbl.F90
Go to the documentation of this file.
00001 !     #########
00002     SUBROUTINE INIT_WATER_SBL(KLVL, PPA, PPS, PTA, PQA, PRHOA, PU, PV, PRAIN, PSNOW,     &
00003                               PSFTH, PSFTQ, PZREF, PUREF, PTS, PZ0, PZ,                  &
00004                               PT, PQ, PWIND, PTKE, PP)
00005 !     #################################################################################
00006 !
00007 !!****  *INIT_WATER_SBL* - inits water SBL profiles
00008 !!
00009 !!    PURPOSE
00010 !!    -------
00011 !
00012 !!**  METHOD
00013 !!    ------
00014 !!
00015 !!    REFERENCE
00016 !!    ---------
00017 !!      
00018 !!
00019 !!    AUTHOR
00020 !!    ------
00021 !!     S. Riette
00022 !!
00023 !!    MODIFICATIONS
00024 !!    -------------
00025 !!      Original    03/2010
00026 !!------------------------------------------------------------------
00027 !
00028 USE MODD_CSTS,             ONLY : XCPD, XRD, XP00, XTT, XG
00029 USE MODD_CANOPY_TURB,      ONLY : XALPSBL
00030 !
00031 USE MODI_CLS_WIND
00032 USE MODI_CLS_TQ
00033 USE MODI_WATER_FLUX
00034 !
00035 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00036 USE PARKIND1  ,ONLY : JPRB
00037 !
00038 IMPLICIT NONE
00039 !
00040 !*      0.1    declarations of arguments
00041 !
00042 INTEGER           , INTENT(IN)  :: KLVL      ! number      of levels in canopy
00043 REAL, DIMENSION(:), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
00044 REAL, DIMENSION(:), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
00045 REAL, DIMENSION(:), INTENT(IN)  :: PTA       ! air temperature forcing               (K)
00046 REAL, DIMENSION(:), INTENT(IN)  :: PQA       ! air humidity forcing                  (kg/m3)
00047 REAL, DIMENSION(:), INTENT(IN)  :: PRHOA     ! air density                           (kg/m3)
00048 REAL, DIMENSION(:), INTENT(IN)  :: PU        ! zonal wind                            (m/s)
00049 REAL, DIMENSION(:), INTENT(IN)  :: PV        ! meridian wind                         (m/s)
00050 REAL, DIMENSION(:), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
00051 REAL, DIMENSION(:), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
00052 REAL, DIMENSION(:), INTENT(IN)  :: PZREF     ! height of T,q forcing                 (m)
00053 REAL, DIMENSION(:), INTENT(IN)  :: PUREF     ! height of wind forcing                (m)
00054 REAL, DIMENSION(:), INTENT(IN)  :: PTS       ! surface temperature
00055 REAL, DIMENSION(:,:), INTENT(IN):: PZ        ! height of middle of each level grid   (m)
00056 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0       ! roughness length
00057 REAL, DIMENSION(:), INTENT(OUT) :: PSFTH     ! flux of heat                          (W/m2)
00058 REAL, DIMENSION(:), INTENT(OUT) :: PSFTQ     ! flux of water vapor                   (kg/m2/s)
00059 !
00060 REAL, DIMENSION(:,:), INTENT(OUT) :: PT   ! temperature at each level in SBL      (m/s)
00061 REAL, DIMENSION(:,:), INTENT(OUT) :: PQ   ! humidity    at each level in SBL      (kg/m3)
00062 REAL, DIMENSION(:,:), INTENT(OUT) :: PWIND! wind        at each level in SBL      (m/s)
00063 REAL, DIMENSION(:,:), INTENT(OUT) :: PTKE ! Tke         at each level in SBL      (m2/s2)
00064 REAL, DIMENSION(:,:), INTENT(OUT) :: PP   ! pressure    at each level in SBL      (kg/m3)
00065 !
00066 !*      0.2    declarations of local variables
00067 !
00068 !* forcing variables
00069 !
00070 REAL, DIMENSION(SIZE(PTA))   :: ZWIND    ! lowest atmospheric level wind speed           (m/s)
00071 REAL, DIMENSION(SIZE(PTA))   :: ZEXNA    ! Exner function at lowest SBL scheme level     (-)
00072 REAL, DIMENSION(SIZE(PTA))   :: ZQA      ! specific humidity                             (kg/m3)
00073 !
00074 ! SBL turbulence scheme
00075 !
00076 REAL, DIMENSION(SIZE(PTA))   :: ZUSTAR       ! friction velocity (m/s)
00077 !
00078 REAL, DIMENSION(SIZE(PTA))   :: ZEXNS
00079 REAL, DIMENSION(SIZE(PTA))   :: ZQSAT
00080 REAL, DIMENSION(SIZE(PTA))   :: ZCD
00081 REAL, DIMENSION(SIZE(PTA))   :: ZCDN
00082 REAL, DIMENSION(SIZE(PTA))   :: ZCH
00083 REAL, DIMENSION(SIZE(PTA))   :: ZRI
00084 REAL, DIMENSION(SIZE(PTA))   :: ZRESA_SEA
00085 REAL, DIMENSION(SIZE(PTA))   :: ZZ0H
00086 REAL, DIMENSION(SIZE(PTA))   :: ZCLS_WIND_ZON
00087 REAL, DIMENSION(SIZE(PTA))   :: ZCLS_WIND_MER
00088 REAL, DIMENSION(SIZE(PTA))   :: ZTNM
00089 REAL, DIMENSION(SIZE(PTA))   :: ZQNM
00090 REAL, DIMENSION(SIZE(PTA))   :: ZHUNM
00091 REAL, DIMENSION(SIZE(PTA))   :: ZHU
00092 INTEGER                      :: J
00093 INTEGER                      :: JLAYER
00094 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00095 !-------------------------------------------------------------------------------------
00096 !
00097 !*     1.2     Initialisation at first time step
00098 !              ---------------------------------
00099 !
00100 IF (LHOOK) CALL DR_HOOK('INIT_WATER_SBL',0,ZHOOK_HANDLE)
00101 !
00102 ZEXNA(:) = (PPA(:)/XP00)**(XRD/XCPD)
00103 ZEXNS(:) = (PPS(:)/XP00)**(XRD/XCPD)
00104 ZQA  (:) = PQA(:) / PRHOA(:)
00105 ZWIND(:) = SQRT(PU**2+PV**2)
00106 !
00107 !We choose the case CSEA_FLUX=DIRECT to compute CD, CDN, CH, RI and ZZ0H
00108 !Iterative computation of PZ0 / CD, CDN, CH, ZH0
00109 DO J=1,5
00110   CALL WATER_FLUX(PZ0,                                            &
00111                   PTA, ZEXNA, PRHOA, PTS, ZEXNS, ZQA, PRAIN,      &
00112                   PSNOW, XTT, ZWIND, PZREF, PUREF,                &
00113                   PPS, ZQSAT,  PSFTH, PSFTQ, ZUSTAR,              &
00114                   ZCD, ZCDN, ZCH, ZRI, ZRESA_SEA, ZZ0H            )
00115 ENDDO
00116 !
00117 !Initialisation of T, Q, Wind and TKE on all canopy levels
00118 ZHU(:)=1.
00119 DO JLAYER=1,KLVL
00120   !
00121   CALL CLS_TQ(PTA, ZQA, PPA, PPS, PZREF, ZCD, ZCH, ZRI, PTS, ZHU, ZZ0H, &
00122               PZ(:,JLAYER), ZTNM, ZQNM, ZHUNM                           )
00123   !
00124   PT(:,JLAYER)=ZTNM
00125   PQ(:,JLAYER)=ZQNM
00126   !
00127   CALL CLS_WIND(PU, PV, PUREF, ZCD, ZCDN, ZRI, PZ(:,JLAYER), &
00128                 ZCLS_WIND_ZON, ZCLS_WIND_MER                 )
00129   !
00130   PWIND(:,JLAYER) = SQRT( ZCLS_WIND_ZON(:)**2 + ZCLS_WIND_MER(:)**2 )
00131   PTKE (:,JLAYER) = XALPSBL * ZCD(:) * ( PU(:)**2 + PV(:)**2 )
00132   PP   (:,JLAYER) = PPA(:) + XG * PRHOA(:) * ( PZ(:,KLVL) - PZ(:,JLAYER) )
00133   !
00134 ENDDO
00135 !
00136 IF (LHOOK) CALL DR_HOOK('INIT_WATER_SBL',1,ZHOOK_HANDLE)
00137 !
00138 END SUBROUTINE INIT_WATER_SBL