SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
surface_cdch_1darp.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6 SUBROUTINE surface_cdch_1darp (PZREF, PZ0EFF, PZ0H, PVMOD, PTA, PTG, &
7  pqa, pqs, pcd, pcdn, pch )
8 ! ###################################################################
9 ! Purpose :
10 ! ------
11 
12 ! - CALCUL DES COEFFICIENTS D'ECHANGE TURBULENT Cd ET Ch
13 ! DE LA MEME FACON QU'ARPEGE. (cf ACHMT)
14 
15 !-----------------------------------------------------------------------
16 ! -------
17 ! Auteur.
18 ! -------
19 ! Dec 2007 : M. Jidane * MAROC METEO *
20 !
21 !-----------------------------------------------------------------------
22 
23 ! - ARGUMENTS D'ENTREE.
24 ! -------------------
25 ! PZ0EFF : LA LONGUEUR DE RUGOSITE COURANTE.
26 ! PZ0H : LONGUEUR DE RUGOSITE THERMIQUE COURANTE
27 ! PTA : TEMPERATURE.
28 ! PTG : TEMPERATURE DE SURFACE.
29 ! PQA : specific humidity
30 ! PQS : humidity at surface
31 
32 !-----------------------------------------------------------------------
33 
34 ! - ARGUMENTS DE SORTIE.
35 ! --------------------
36 ! PCD : COEFFICIENT D'ECHANGE EN SURFACE POUR U ET V.
37 ! PCDN : COEFFICIENT NEUTRE D'ECHANGE EN SURFACE.
38 ! PCH : COEFFICIENT D'ECHANGE EN SURFACE POUR T ET Q
39 
40 USE modd_csts, ONLY : xg, xrd, xrv, xcpd, xkarman
41 USE modd_surf_atm, ONLY : xedb, xedc, xedd, xedk, xusuric, xusurid, xusuricl
42 
43 !
44 USE yomhook ,ONLY : lhook, dr_hook
45 USE parkind1 ,ONLY : jprb
46 !
47 IMPLICIT NONE
48 
49 REAL, DIMENSION(:), INTENT(IN) :: pzref
50 REAL, DIMENSION(:), INTENT(IN) :: pz0eff
51 REAL, DIMENSION(:), INTENT(IN) :: pz0h
52 REAL, DIMENSION(:), INTENT(IN) :: pvmod
53 REAL, DIMENSION(:), INTENT(IN) :: pta
54 REAL, DIMENSION(:), INTENT(IN) :: ptg
55 REAL, DIMENSION(:), INTENT(IN) :: pqa
56 REAL, DIMENSION(:), INTENT(IN) :: pqs
57 REAL, DIMENSION(:), INTENT(OUT) :: pcd
58 REAL, DIMENSION(:), INTENT(OUT) :: pcdn
59 REAL, DIMENSION(:), INTENT(OUT) :: pch
60 
61 INTEGER :: jlon
62 
63 REAL, DIMENSION(0:3,1:4) :: gcz0h
64 
65 REAL, DIMENSION(SIZE(PTA)) :: zstab
66 ! ZSTAB : INDICE DE STABILITE A LA SURFACE.
67 REAL, DIMENSION(SIZE(PTA)) :: zcdnh, zrti, zu
68 
69 REAL :: zr, zrs
70 ! ZR : CONSTANTE DES GAZ POUR L'AIR.
71 ! ZRS : CONSTANTE DES GAZ POUR L'AIR AU SOL.
72 
73 REAL :: z2b, z3b, z3bc, zcd, zcd0, zch, zch0, zcis, zdid, &
74  zdih, zds, zloi, zlos, zmu, zpd, zph, zrzd, zrzh, &
75  zusuric, zsta, zixp, zstah, zhs
76 REAL(KIND=JPRB) :: zhook_handle
77 
78 !*
79 ! ------------------------------------------------------------------
80 ! I - CONSTANTES AUXILIAIRES.
81 ! ISBA - roughness length
82 IF (lhook) CALL dr_hook('SURFACE_CDCH_1DARP',0,zhook_handle)
83 gcz0h(0,1)=7.5
84 gcz0h(1,1)=2.39037
85 gcz0h(2,1)=-.28583
86 gcz0h(3,1)=.01074
87 gcz0h(0,2)=0.5
88 gcz0h(1,2)=-.07028
89 gcz0h(2,2)=.01023
90 gcz0h(3,2)=-.00067
91 gcz0h(0,3)=5.0
92 gcz0h(1,3)=4.51268
93 gcz0h(2,3)=.34012
94 gcz0h(3,3)=-.05330
95 gcz0h(0,4)=0.5
96 gcz0h(1,4)=-.09421
97 gcz0h(2,4)=.01463
98 gcz0h(3,4)=-.00099
99 
100 
101 zusuric=xusuric*xusuricl
102 
103 !*
104 ! ------------------------------------------------------------------
105 ! II - CALCUL DES PARAMETRES DERIVES ET CONSTANTE DE SECURITE (POUR
106 ! LE CARRE DU CISAILLEMENT DE VENT).
107 
108 ! COMPUTATION OF DERIVED PARAMETERS AND SECURITY CONSTANT (FOR
109 ! THE SQUARE OF THE WIND SHEAR).
110 
111 z2b=2.0*xedb
112 z3b=3.*xedb
113 z3bc=3.*xedb*xedc
114 
115 !*
116 ! ------------------------------------------------------------------
117 ! IV - CALCUL DE L EPAISSEUR DE LA CLS (EN GEOPOTENTIEL).
118 
119 ! COMPUTATION OF THE THICKNESS OF THE SBL (IN GEOPOTENTIAL).
120 
121 ! - TEMPORAIRE(S) 1D .
122 
123 !*
124 ! ------------------------------------------------------------------
125 ! VI - CALCULS PROPREMENT DITS DES CARACTERISTIQUES DE SURFACE.
126 
127 ! EFFECTIVE CALCULATIONS OF THE SURFACE CHARACTERISTICS.
128 
129 IF(xusurid == 0.0) THEN
130  zixp=1.0
131 ELSE
132  zixp=3.
133 ENDIF
134 
135 DO jlon=1, SIZE(pta)
136 
137  zr = xrd + (xrv-xrd)*pqa(jlon)
138  zrs = xrd + (xrv-xrd)*pqs(jlon)
139 
140 ! CALCULS GEOMETRIQUES.
141 ! GEOMETRIC CALCULATIONS.
142 
143  zrzd=1.0+pzref(jlon)/pz0eff(jlon)
144  pcdn(jlon)=(xkarman/log(zrzd))**2
145 
146 ! CALCUL PRELIMINAIRES NECESSAIRES A LA DETERMINATION DES
147 ! COEFFICIENTS D'ECHANGE CD ET CH DANS LE CAS DE DEUX RUGOSITES
148 ! DYNAMIQUE Z0 ET THERMIQUE ZOH.
149 
150 ! PRELIMINARY COMPUTATIONS NECESSARY FOR THE DETERMINATION OF
151 ! EXCHANGE COEFFICIENTS CD AND CH IN THE CASE OF TWO ROUGHNESS
152 ! LENGTHS Z0 DYNAMICAL AND ZOH THERMAL.
153 
154 ! - TEMPORAIRE(S) 1D .
155 
156 ! ZCDNH : COEFFICIENT THERMIQUE NEUTRE D'ECHANGE EN SURFACE.
157 ! : NEUTRAL SURFACE THERMAL EXCHANGE COEFFICIENT.
158 
159  zrzh=1.0+pzref(jlon)/pz0h(jlon)
160  zcdnh(jlon)=xkarman**2/(log(zrzh)*log(zrzd))
161  zmu=log(pz0eff(jlon)/pz0h(jlon))
162  zcd0=(gcz0h(0,1)+zmu*(gcz0h(1,1)+zmu*(gcz0h(2,1)+zmu &
163  *gcz0h(3,1))))/(1.5*xedc)
164  zpd=(gcz0h(0,2)+zmu*(gcz0h(1,2)+zmu*(gcz0h(2,2)+zmu*gcz0h(3,2))))-0.5
165  zch0=(gcz0h(0,3)+zmu*(gcz0h(1,3)+zmu*(gcz0h(2,3)+zmu*gcz0h(3,3))))/xedc
166  zph=(gcz0h(0,4)+zmu*(gcz0h(1,4)+zmu*(gcz0h(2,4)+zmu*gcz0h(3,4))))-0.5
167  zcd=zcd0*zrzd**zpd
168  zch=zch0*zrzh**zph
169 
170 ! CISAILLEMENT DE VENT.
171 ! WIND SHEAR.
172 
173 ! - TEMPORAIRE(S) 1D .
174 
175 ! ZU : MODULE DU VENT DE SURFACE.
176 ! : SURFACE WIND SPEED.
177 
178  zcis=pvmod(jlon)**2
179  zu(jlon)=pvmod(jlon)
180 
181 ! CALCUL DE STABILITE.
182 ! STABILITY COMPUTATION.
183 
184 ! - TEMPORAIRE(S) 1D .
185 
186 ! ZRTI : INVERSE DE R*T.
187 ! : INVERSE OF R*T.
188 ! ZSTA : APPROXIMATION DE DELTA(PHI)*DELTA(LN(THETA)).
189 ! : APPROXIMATION OF DELTA(PHI)*DELTA(LN(THETA)).
190 
191  zrti(jlon)=2.0/(zr*pta(jlon)+(xrd/xcpd)*xg*pzref(jlon)&
192  +zrs*ptg(jlon))
193  zsta=xg*pzref(jlon)*(zr*pta(jlon)+(xrd/xcpd) &
194  *xg*pzref(jlon)-zrs*ptg(jlon))*zrti(jlon)
195  zstah=zsta/(1.0+zixp*zusuric*max(0.0,zsta)/zcis)**(1.0/zixp)
196  zsta=zsta/(1.0+zusuric*max(0.0,zsta)/zcis)
197  zstab(jlon)=max(0.0,sign(1.0,zsta))
198 
199 ! CALCULS COMMUNS POUR QUANTITE DE MOUVEMENT ET ENERGIE.
200 ! COMMON COMPUTATIONS FOR MOMENTUM AND ENERGY.
201 
202  zds=sqrt(zcis+xedd/xedk*abs(zsta))
203  zhs=sqrt(zcis+xedd*xedk*abs(zstah))
204  zdid=1.0/(zu(jlon)+zcd*z3bc*pcdn(jlon)*sqrt(abs(zsta)*zrzd))
205  zdih=1.0/(zu(jlon)+zch*z3bc*zcdnh(jlon)*sqrt(abs(zsta)*zrzh))
206 
207 ! CALCULS POUR LES COMPOSANTES DU VENT DE CD ET DE SON PRODUIT PAR
208 ! DENSITE FOIS MODULE DU VENT.
209 ! COMPUTATIONS FOR MOMENTUM OF CD AND OF ITS PRODUCT BY DENSITY
210 ! TIME WIND SPEED.
211 
212  zlos=zcis*zds/(zu(jlon)*zds+z2b*abs(zsta))
213  zloi=zu(jlon)-z2b*zsta*zdid
214  pcd(jlon)=(zloi+zstab(jlon)*(zlos-zloi))*pcdn(jlon)/zu(jlon)
215 
216 ! IDEM POUR LA TEMPERATURE ET L'HUMIDITE.
217 ! THE SAME FOR TEMPERATURE AND HUMIDITY.
218 
219  zlos=zcis**2/(zu(jlon)*zcis+z3b*abs(zstah)*zhs)
220  zloi=zu(jlon)-z3b*zsta*zdih
221  pch(jlon)=(zloi+zstab(jlon)*(zlos-zloi))*zcdnh(jlon)/zu(jlon)
222 
223 ENDDO
224 IF (lhook) CALL dr_hook('SURFACE_CDCH_1DARP',1,zhook_handle)
225 
226 END SUBROUTINE surface_cdch_1darp
subroutine surface_cdch_1darp(PZREF, PZ0EFF, PZ0H, PVMOD, PTA, PTG, PQA, PQS, PCD, PCDN, PCH)