SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/surface_cdch_1darp.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE SURFACE_CDCH_1DARP (PZREF, PZ0EFF, PZ0H, PVMOD, PTA, PTG, &
00003                                  PQA, PQS, PCD, PCDN, PCH              )    
00004 !   ###################################################################
00005 !     Purpose :
00006 !     ------
00007 
00008 !     - CALCUL DES COEFFICIENTS D'ECHANGE TURBULENT Cd ET Ch
00009 !       DE LA MEME FACON QU'ARPEGE. (cf ACHMT)
00010 
00011 !-----------------------------------------------------------------------
00012 !     -------
00013 !     Auteur.
00014 !     -------
00015 !  Dec 2007 : M. Jidane      * MAROC METEO *
00016 !
00017 !-----------------------------------------------------------------------
00018 
00019 ! -   ARGUMENTS D'ENTREE.
00020 !     -------------------
00021 ! PZ0EFF     : LA LONGUEUR DE RUGOSITE COURANTE.
00022 ! PZ0H       : LONGUEUR DE RUGOSITE THERMIQUE COURANTE
00023 ! PTA        : TEMPERATURE.
00024 ! PTG        : TEMPERATURE DE SURFACE.
00025 ! PQA        : specific humidity
00026 ! PQS        : humidity at surface
00027 
00028 !-----------------------------------------------------------------------
00029 
00030 ! -   ARGUMENTS DE SORTIE.
00031 !     --------------------
00032 ! PCD        : COEFFICIENT D'ECHANGE EN SURFACE POUR U ET V.
00033 ! PCDN       : COEFFICIENT NEUTRE D'ECHANGE EN SURFACE.
00034 ! PCH        : COEFFICIENT D'ECHANGE EN SURFACE POUR T ET Q
00035 
00036 USE MODD_CSTS,        ONLY : XG, XRD, XRV, XCPD, XKARMAN
00037 USE MODD_SURF_ATM,    ONLY : XEDB, XEDC, XEDD, XEDK, XUSURIC, XUSURID, XUSURICL
00038 
00039 !
00040 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00041 USE PARKIND1  ,ONLY : JPRB
00042 !
00043 IMPLICIT NONE
00044 
00045 REAL, DIMENSION(:), INTENT(IN)  :: PZREF
00046 REAL, DIMENSION(:), INTENT(IN)  :: PZ0EFF
00047 REAL, DIMENSION(:), INTENT(IN)  :: PZ0H
00048 REAL, DIMENSION(:), INTENT(IN)  :: PVMOD
00049 REAL, DIMENSION(:), INTENT(IN)  :: PTA
00050 REAL, DIMENSION(:), INTENT(IN)  :: PTG
00051 REAL, DIMENSION(:), INTENT(IN)  :: PQA
00052 REAL, DIMENSION(:), INTENT(IN)  :: PQS
00053 REAL, DIMENSION(:), INTENT(OUT) :: PCD
00054 REAL, DIMENSION(:), INTENT(OUT) :: PCDN
00055 REAL, DIMENSION(:), INTENT(OUT) :: PCH
00056 
00057 INTEGER         :: JLON
00058 
00059 REAL, DIMENSION(0:3,1:4) :: GCZ0H
00060 
00061 REAL, DIMENSION(SIZE(PTA))     :: ZSTAB
00062 !                         ZSTAB : INDICE DE STABILITE A LA SURFACE.
00063 REAL, DIMENSION(SIZE(PTA))     :: ZCDNH, ZRTI, ZU
00064 
00065 REAL :: ZR, ZRS
00066 !                         ZR  : CONSTANTE DES GAZ POUR L'AIR.
00067 !                         ZRS : CONSTANTE DES GAZ POUR L'AIR AU SOL.
00068 
00069 REAL :: Z2B, Z3B, Z3BC, ZCD, ZCD0, ZCH, ZCH0, ZCIS, ZDID, 
00070           ZDIH, ZDS, ZLOI, ZLOS, ZMU, ZPD, ZPH, ZRZD, ZRZH, 
00071           ZUSURIC, ZSTA, ZIXP, ZSTAH, ZHS  
00072 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00073 
00074 !*
00075 !     ------------------------------------------------------------------
00076 !     I - CONSTANTES AUXILIAIRES.
00077 !  ISBA - roughness length
00078 IF (LHOOK) CALL DR_HOOK('SURFACE_CDCH_1DARP',0,ZHOOK_HANDLE)
00079 GCZ0H(0,1)=7.5
00080 GCZ0H(1,1)=2.39037
00081 GCZ0H(2,1)=-.28583
00082 GCZ0H(3,1)=.01074
00083 GCZ0H(0,2)=0.5
00084 GCZ0H(1,2)=-.07028
00085 GCZ0H(2,2)=.01023
00086 GCZ0H(3,2)=-.00067
00087 GCZ0H(0,3)=5.0
00088 GCZ0H(1,3)=4.51268
00089 GCZ0H(2,3)=.34012
00090 GCZ0H(3,3)=-.05330
00091 GCZ0H(0,4)=0.5
00092 GCZ0H(1,4)=-.09421
00093 GCZ0H(2,4)=.01463
00094 GCZ0H(3,4)=-.00099
00095 
00096 
00097 ZUSURIC=XUSURIC*XUSURICL
00098 
00099 !*
00100 !     ------------------------------------------------------------------
00101 !     II - CALCUL DES PARAMETRES DERIVES ET CONSTANTE DE SECURITE (POUR
00102 !     LE CARRE DU CISAILLEMENT DE VENT).
00103 
00104 !          COMPUTATION OF DERIVED PARAMETERS AND SECURITY CONSTANT (FOR
00105 !     THE SQUARE OF THE WIND SHEAR).
00106 
00107 Z2B=2.0*XEDB
00108 Z3B=3.*XEDB
00109 Z3BC=3.*XEDB*XEDC
00110 
00111 !*
00112 !     ------------------------------------------------------------------
00113 !     IV - CALCUL DE L EPAISSEUR DE LA CLS (EN GEOPOTENTIEL).
00114 
00115 !          COMPUTATION OF THE THICKNESS OF THE SBL (IN GEOPOTENTIAL).
00116 
00117 ! - TEMPORAIRE(S) 1D .
00118 
00119 !*
00120 !     ------------------------------------------------------------------
00121 !     VI - CALCULS PROPREMENT DITS DES CARACTERISTIQUES DE SURFACE.
00122 
00123 !          EFFECTIVE CALCULATIONS OF THE SURFACE CHARACTERISTICS.
00124 
00125 IF(XUSURID == 0.0) THEN
00126   ZIXP=1.0
00127 ELSE
00128   ZIXP=3.
00129 ENDIF
00130 
00131 DO JLON=1, SIZE(PTA)
00132 
00133   ZR  = XRD + (XRV-XRD)*PQA(JLON)
00134   ZRS = XRD + (XRV-XRD)*PQS(JLON)
00135 
00136 !     CALCULS GEOMETRIQUES.
00137 !     GEOMETRIC CALCULATIONS.
00138 
00139   ZRZD=1.0+PZREF(JLON)/PZ0EFF(JLON)
00140   PCDN(JLON)=(XKARMAN/LOG(ZRZD))**2
00141 
00142 !     CALCUL PRELIMINAIRES NECESSAIRES A LA DETERMINATION DES
00143 !     COEFFICIENTS D'ECHANGE CD ET CH DANS LE CAS DE DEUX RUGOSITES
00144 !     DYNAMIQUE Z0 ET THERMIQUE ZOH.
00145 
00146 !     PRELIMINARY COMPUTATIONS NECESSARY FOR THE DETERMINATION OF
00147 !     EXCHANGE COEFFICIENTS CD AND CH IN THE CASE OF TWO ROUGHNESS
00148 !     LENGTHS Z0 DYNAMICAL AND ZOH THERMAL.
00149 
00150 ! - TEMPORAIRE(S) 1D .
00151 
00152 ! ZCDNH     : COEFFICIENT THERMIQUE NEUTRE D'ECHANGE EN SURFACE.
00153 !           : NEUTRAL SURFACE THERMAL EXCHANGE COEFFICIENT.
00154 
00155   ZRZH=1.0+PZREF(JLON)/PZ0H(JLON)
00156   ZCDNH(JLON)=XKARMAN**2/(LOG(ZRZH)*LOG(ZRZD))
00157   ZMU=LOG(PZ0EFF(JLON)/PZ0H(JLON))
00158   ZCD0=(GCZ0H(0,1)+ZMU*(GCZ0H(1,1)+ZMU*(GCZ0H(2,1)+ZMU &
00159         *GCZ0H(3,1))))/(1.5*XEDC)    
00160   ZPD=(GCZ0H(0,2)+ZMU*(GCZ0H(1,2)+ZMU*(GCZ0H(2,2)+ZMU*GCZ0H(3,2))))-0.5
00161   ZCH0=(GCZ0H(0,3)+ZMU*(GCZ0H(1,3)+ZMU*(GCZ0H(2,3)+ZMU*GCZ0H(3,3))))/XEDC
00162   ZPH=(GCZ0H(0,4)+ZMU*(GCZ0H(1,4)+ZMU*(GCZ0H(2,4)+ZMU*GCZ0H(3,4))))-0.5
00163   ZCD=ZCD0*ZRZD**ZPD
00164   ZCH=ZCH0*ZRZH**ZPH
00165 
00166 !     CISAILLEMENT DE VENT.
00167 !     WIND SHEAR.
00168 
00169 ! - TEMPORAIRE(S) 1D .
00170 
00171 ! ZU        : MODULE DU VENT DE SURFACE.
00172 !           : SURFACE WIND SPEED.
00173 
00174   ZCIS=PVMOD(JLON)**2
00175   ZU(JLON)=PVMOD(JLON)
00176 
00177 !     CALCUL DE STABILITE.
00178 !     STABILITY COMPUTATION.
00179 
00180 ! - TEMPORAIRE(S) 1D .
00181 
00182 ! ZRTI      : INVERSE DE R*T.
00183 !           : INVERSE OF R*T.
00184 ! ZSTA      : APPROXIMATION DE DELTA(PHI)*DELTA(LN(THETA)).
00185 !           : APPROXIMATION OF DELTA(PHI)*DELTA(LN(THETA)).
00186 
00187   ZRTI(JLON)=2.0/(ZR*PTA(JLON)+(XRD/XCPD)*XG*PZREF(JLON)&
00188         +ZRS*PTG(JLON))    
00189   ZSTA=XG*PZREF(JLON)*(ZR*PTA(JLON)+(XRD/XCPD) &
00190         *XG*PZREF(JLON)-ZRS*PTG(JLON))*ZRTI(JLON)    
00191   ZSTAH=ZSTA/(1.0+ZIXP*ZUSURIC*MAX(0.0,ZSTA)/ZCIS)**(1.0/ZIXP)
00192   ZSTA=ZSTA/(1.0+ZUSURIC*MAX(0.0,ZSTA)/ZCIS)
00193   ZSTAB(JLON)=MAX(0.0,SIGN(1.0,ZSTA))
00194 
00195 !     CALCULS COMMUNS POUR QUANTITE DE MOUVEMENT ET ENERGIE.
00196 !     COMMON COMPUTATIONS FOR MOMENTUM AND ENERGY.
00197 
00198   ZDS=SQRT(ZCIS+XEDD/XEDK*ABS(ZSTA))
00199   ZHS=SQRT(ZCIS+XEDD*XEDK*ABS(ZSTAH))
00200   ZDID=1.0/(ZU(JLON)+ZCD*Z3BC*PCDN(JLON)*SQRT(ABS(ZSTA)*ZRZD))
00201   ZDIH=1.0/(ZU(JLON)+ZCH*Z3BC*ZCDNH(JLON)*SQRT(ABS(ZSTA)*ZRZH))
00202 
00203 !     CALCULS POUR LES COMPOSANTES DU VENT DE CD ET DE SON PRODUIT PAR
00204 !     DENSITE FOIS MODULE DU VENT.
00205 !     COMPUTATIONS FOR MOMENTUM OF CD AND OF ITS PRODUCT BY DENSITY
00206 !     TIME WIND SPEED.
00207 
00208   ZLOS=ZCIS*ZDS/(ZU(JLON)*ZDS+Z2B*ABS(ZSTA))
00209   ZLOI=ZU(JLON)-Z2B*ZSTA*ZDID
00210   PCD(JLON)=(ZLOI+ZSTAB(JLON)*(ZLOS-ZLOI))*PCDN(JLON)/ZU(JLON)
00211 
00212 !     IDEM POUR LA TEMPERATURE ET L'HUMIDITE.
00213 !     THE SAME FOR TEMPERATURE AND HUMIDITY.
00214 
00215   ZLOS=ZCIS**2/(ZU(JLON)*ZCIS+Z3B*ABS(ZSTAH)*ZHS)
00216   ZLOI=ZU(JLON)-Z3B*ZSTA*ZDIH
00217   PCH(JLON)=(ZLOI+ZSTAB(JLON)*(ZLOS-ZLOI))*ZCDNH(JLON)/ZU(JLON)
00218 
00219 ENDDO
00220 IF (LHOOK) CALL DR_HOOK('SURFACE_CDCH_1DARP',1,ZHOOK_HANDLE)
00221 
00222 END SUBROUTINE SURFACE_CDCH_1DARP