Changeset 2298 for LMDZ5/branches/testing/libf/phylmd/calcul_fluxs_mod.F90
- Timestamp:
- Jun 14, 2015, 9:13:32 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2238-2257,2259-2271,2273,2277-2282,2284-2288,2290-2291
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/calcul_fluxs_mod.F90
r1910 r2298 5 5 CONTAINS 6 6 SUBROUTINE calcul_fluxs( knon, nisurf, dtime, & 7 tsurf, p1lay, cal, beta, c oef1lay, ps, &7 tsurf, p1lay, cal, beta, cdragh, cdragq, ps, & 8 8 precip_rain, precip_snow, snow, qsurf, & 9 radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, &10 petAcoef, peqAcoef, petBcoef, peqBcoef, &9 radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, & 10 fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, & 11 11 tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 12 12 13 13 USE dimphy, ONLY : klon 14 14 USE indice_sol_mod 15 16 INCLUDE "clesphys.h" 15 17 16 18 ! Cette routine calcule les fluxs en h et q a l'interface et eventuellement … … 26 28 ! cal capacite calorifique du sol 27 29 ! beta evap reelle 28 ! coef1lay coefficient d'echange 30 ! cdragh coefficient d'echange temperature 31 ! cdragq coefficient d'echange evaporation 29 32 ! ps pression au sol 30 33 ! precip_rain precipitations liquides … … 59 62 REAL, DIMENSION(klon), INTENT(IN) :: petBcoef, peqBcoef 60 63 REAL, DIMENSION(klon), INTENT(IN) :: ps, q1lay 61 REAL, DIMENSION(klon), INTENT(IN) :: tsurf, p1lay, cal, beta, c oef1lay64 REAL, DIMENSION(klon), INTENT(IN) :: tsurf, p1lay, cal, beta, cdragh,cdragq 62 65 REAL, DIMENSION(klon), INTENT(IN) :: precip_rain, precip_snow ! pas utiles 63 66 REAL, DIMENSION(klon), INTENT(IN) :: radsol, dif_grnd 64 REAL, DIMENSION(klon), INTENT(IN) :: t1lay, u1lay, v1lay 67 REAL, DIMENSION(klon), INTENT(IN) :: t1lay, u1lay, v1lay,gustiness 68 REAL, INTENT(IN) :: fqsat ! correction factor on qsat (generally 0.98 over salty water, 1 everywhere else) 65 69 66 70 ! Parametres entree-sorties … … 79 83 REAL, DIMENSION(klon) :: zx_mh, zx_nh, zx_oh 80 84 REAL, DIMENSION(klon) :: zx_mq, zx_nq, zx_oq 81 REAL, DIMENSION(klon) :: zx_pkh, zx_dq_s_dt, zx_qsat , zx_coef82 REAL, DIMENSION(klon) :: zx_sl, zx_ k185 REAL, DIMENSION(klon) :: zx_pkh, zx_dq_s_dt, zx_qsat 86 REAL, DIMENSION(klon) :: zx_sl, zx_coefh, zx_coefq, zx_wind 83 87 REAL, DIMENSION(klon) :: d_ts 84 88 REAL :: zdelta, zcvm5, zx_qs, zcor, zx_dq_s_dh … … 125 129 fluxlat=0. 126 130 dflux_s = 0. 127 dflux_l = 0. 131 dflux_l = 0. 128 132 ! 129 133 ! zx_qs = qsat en kg/kg … … 154 158 zx_dq_s_dt(i) = RCPD * zx_pkh(i) * zx_dq_s_dh 155 159 zx_qsat(i) = zx_qs 156 zx_coef(i) = coef1lay(i) * & 157 (1.0+SQRT(u1lay(i)**2+v1lay(i)**2)) * & 158 p1lay(i)/(RD*t1lay(i)) 159 160 zx_wind(i)=min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2) 161 zx_coefh(i) = cdragh(i) * zx_wind(i) * p1lay(i)/(RD*t1lay(i)) 162 zx_coefq(i) = cdragq(i) * zx_wind(i) * p1lay(i)/(RD*t1lay(i)) 163 ! zx_wind(i)=min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2) & 164 ! * p1lay(i)/(RD*t1lay(i)) 165 ! zx_coefh(i) = cdragh(i) * zx_wind(i) 166 ! zx_coefq(i) = cdragq(i) * zx_wind(i) 160 167 ENDDO 161 168 … … 168 175 zx_sl(i) = RLVTT 169 176 IF (tsurf(i) .LT. RTT) zx_sl(i) = RLSTT 170 zx_k1(i) = zx_coef(i)171 177 ENDDO 172 178 … … 174 180 DO i = 1, knon 175 181 ! Q 176 zx_oq(i) = 1. - (beta(i) * zx_k1(i) * peqBcoef(i) * dtime) 177 zx_mq(i) = beta(i) * zx_k1(i) * & 178 (peqAcoef(i) - zx_qsat(i) + & 179 zx_dq_s_dt(i) * tsurf(i)) & 182 zx_oq(i) = 1. - (beta(i) * zx_coefq(i) * peqBcoef(i) * dtime) 183 zx_mq(i) = beta(i) * zx_coefq(i) * & 184 (peqAcoef(i) - & 185 ! conv num avec precedente version 186 fqsat * zx_qsat(i) + fqsat * zx_dq_s_dt(i) * tsurf(i)) & 187 ! fqsat * ( zx_qsat(i) - zx_dq_s_dt(i) * tsurf(i)) ) & 180 188 / zx_oq(i) 181 zx_nq(i) = beta(i) * zx_ k1(i) * (-1.* zx_dq_s_dt(i)) &189 zx_nq(i) = beta(i) * zx_coefq(i) * (- fqsat * zx_dq_s_dt(i)) & 182 190 / zx_oq(i) 183 191 184 192 ! H 185 zx_oh(i) = 1. - (zx_ k1(i) * petBcoef(i) * dtime)186 zx_mh(i) = zx_ k1(i) * petAcoef(i) / zx_oh(i)187 zx_nh(i) = - (zx_ k1(i) * RCPD * zx_pkh(i))/ zx_oh(i)193 zx_oh(i) = 1. - (zx_coefh(i) * petBcoef(i) * dtime) 194 zx_mh(i) = zx_coefh(i) * petAcoef(i) / zx_oh(i) 195 zx_nh(i) = - (zx_coefh(i) * RCPD * zx_pkh(i))/ zx_oh(i) 188 196 189 197 ! Tsurface … … 244 252 ! 245 253 SUBROUTINE calcul_flux_wind(knon, dtime, & 246 u0, v0, u1, v1, cdrag_m, &254 u0, v0, u1, v1, gustiness, cdrag_m, & 247 255 AcoefU, AcoefV, BcoefU, BcoefV, & 248 256 p1lay, t1lay, & … … 251 259 USE dimphy 252 260 INCLUDE "YOMCST.h" 261 INCLUDE "clesphys.h" 253 262 254 263 ! Input arguments … … 257 266 REAL, INTENT(IN) :: dtime 258 267 REAL, DIMENSION(klon), INTENT(IN) :: u0, v0 ! u and v at niveau 0 259 REAL, DIMENSION(klon), INTENT(IN) :: u1, v1 ! u and v at niveau 1268 REAL, DIMENSION(klon), INTENT(IN) :: u1, v1, gustiness ! u and v at niveau 1 260 269 REAL, DIMENSION(klon), INTENT(IN) :: cdrag_m ! cdrag pour momentum 261 270 REAL, DIMENSION(klon), INTENT(IN) :: AcoefU, AcoefV, BcoefU, BcoefV … … 277 286 !**************************************************************************************** 278 287 DO i=1,knon 279 mod_wind = 1.0 + SQRT((u1(i) - u0(i))**2 + (v1(i)-v0(i))**2)288 mod_wind = min_wind_speed + SQRT(gustiness(i)+(u1(i) - u0(i))**2 + (v1(i)-v0(i))**2) 280 289 buf = cdrag_m(i) * mod_wind * p1lay(i)/(RD*t1lay(i)) 281 290 flux_u1(i) = (AcoefU(i) - u0(i)) / (1/buf - BcoefU(i)*dtime )
Note: See TracChangeset
for help on using the changeset viewer.