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