- Timestamp:
- Aug 2, 2024, 2:12:03 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_alp.F90
r5153 r5158 133 133 134 134 !------------Test sur le LCL des thermiques 135 doig = 1, ngrid135 DO ig = 1, ngrid 136 136 ok_lcl(ig) = .FALSE. 137 137 IF ((pcon(ig) > pplay(ig, nlay - 1)) .AND. (pcon(ig) < pplay(ig, 1))) ok_lcl(ig) = .TRUE. … … 139 139 140 140 !------------Localisation des niveaux entourant le LCL et du coef d'interpolation 141 dol = 1, nlay - 1142 doig = 1, ngrid141 DO l = 1, nlay - 1 142 DO ig = 1, ngrid 143 143 IF (ok_lcl(ig)) THEN 144 144 !ATTENTION,zw2 calcule en pplev … … 155 155 enddo 156 156 157 doig = 1, ngrid157 DO ig = 1, ngrid 158 158 !CR:REHABILITATION ZMAX CONTINU 159 159 IF (ok_lcl(ig)) THEN … … 173 173 174 174 !-----Initialisation de la TKE moyenne 175 dol = 1, nlay176 doig = 1, ngrid175 DO l = 1, nlay 176 DO ig = 1, ngrid 177 177 pbl_tke_max(ig, l) = 0. 178 178 enddo … … 180 180 181 181 !-----Calcul de la TKE moyenne 182 donsrf = 1, nbsrf183 dol = 1, nlay184 doig = 1, ngrid182 DO nsrf = 1, nbsrf 183 DO l = 1, nlay 184 DO ig = 1, ngrid 185 185 pbl_tke_max(ig, l) = pctsrf(ig, nsrf) * pbl_tke(ig, l, nsrf) + pbl_tke_max(ig, l) 186 186 enddo … … 189 189 190 190 !-----Initialisations des TKE dans et hors des thermiques 191 dol = 1, nlay192 doig = 1, ngrid191 DO l = 1, nlay 192 DO ig = 1, ngrid 193 193 therm_tke_max(ig, l) = pbl_tke_max(ig, l) 194 194 env_tke_max(ig, l) = pbl_tke_max(ig, l) … … 202 202 203 203 !-----Calcul des profils verticaux de TKE hors thermiques : env_tke_max, et de la vitesse verticale grande échelle : W_ls 204 dol = 1, nlay205 doig = 1, ngrid204 DO l = 1, nlay 205 DO ig = 1, ngrid 206 206 pbl_tke_max(ig, l) = fraca(ig, l) * therm_tke_max(ig, l) + (1. - fraca(ig, l)) * env_tke_max(ig, l) ! Recalcul de TKE moyenne après transport de TKE_TH 207 207 env_tke_max(ig, l) = (pbl_tke_max(ig, l) - fraca(ig, l) * therm_tke_max(ig, l)) / (1. - fraca(ig, l)) ! Recalcul de TKE dans l'environnement après transport de TKE_TH … … 211 211 ! print *,' apres w_ls = ' !!jyg 212 212 213 doig = 1, ngrid213 DO ig = 1, ngrid 214 214 IF (ok_lcl(ig)) THEN 215 215 fraca0(ig) = fraca(ig, klcl(ig)) + (fraca(ig, klcl(ig) + 1) & … … 252 252 253 253 !-----Epaisseur du nuage (depth) et détermination de la queue du spectre de panaches (n2,s2) et du panache le plus gros (s_max) 254 doig = 1, ngrid254 DO ig = 1, ngrid 255 255 zmax_moy(ig) = zlcl(ig) + zmax_moy_coef * (zmax(ig) - zlcl(ig)) 256 256 depth(ig) = zmax_moy(ig) - zlcl(ig) … … 276 276 strig(:) = s_trig 277 277 ELSE IF (iflag_strig==1) THEN 278 doig = 1, ngrid278 DO ig = 1, ngrid 279 279 ! zcong_moy(ig)=zlcl(ig)+zmax_moy_coef*(zcong(ig)-zlcl(ig)) 280 280 ! strig(ig)=(hcoef*(zcong_moy(ig)-zlcl(ig))+hmin(ig))**2 … … 282 282 enddo 283 283 ELSE IF (iflag_strig==2) THEN 284 doig = 1, ngrid284 DO ig = 1, ngrid 285 285 IF (h_trig>zlcl(ig)) THEN 286 286 strig(ig) = (h_trig - zlcl(ig))**2 … … 293 293 susqr2pi = su_cst * sqrt(2. * Rpi) 294 294 reuler = exp(1.) 295 doig = 1, ngrid295 DO ig = 1, ngrid 296 296 IF ((depth(ig)>=10.) .AND. (s_max(ig)>susqr2pi * reuler)) THEN 297 297 w_max(ig) = w0(ig) * (1. + sqrt(2. * log(s_max(ig) / susqr2pi) - log(2. * log(s_max(ig) / susqr2pi)))) … … 311 311 312 312 !-----Calcul de ALP_BL_STAT 313 doig = 1, ngrid313 DO ig = 1, ngrid 314 314 alp_bl_det(ig) = 0.5 * coef_m * rhobarz0(ig) * (w0(ig)**3) * fraca0(ig) * (1. - 2. * fraca0(ig)) / ((1. - fraca0(ig))**2) 315 315 alp_bl_fluct_m(ig) = 1.5 * rhobarz0(ig) * fraca0(ig) * (w_conv(ig) + coef_m * w0(ig)) * & … … 327 327 328 328 !-----Sécurité ALP infinie 329 doig = 1, ngrid329 DO ig = 1, ngrid 330 330 IF (fraca0(ig)>0.98) alp_bl_stat(ig) = 2. 331 331 enddo … … 340 340 ale_bl(:) = 0. 341 341 ! PRINT*,'ALE,ALP ,l,zw2(ig,l),ale_bl(ig),alp_bl(ig)' 342 dol = 1, nlay343 doig = 1, ngrid342 DO l = 1, nlay 343 DO ig = 1, ngrid 344 344 alp_bl(ig) = max(alp_bl(ig), 0.5 * rhobarz(ig, l) * wth3(ig, l)) 345 345 ale_bl(ig) = max(ale_bl(ig), 0.5 * zw2(ig, l)**2) … … 359 359 lalim_conv(:) = lalim(:) 360 360 361 dok = 1, nlay362 doig = 1, ngrid361 DO k = 1, nlay 362 DO ig = 1, ngrid 363 363 IF (k<=lalim_conv(ig)) fm_tot(ig) = fm_tot(ig) + fm(ig, k) 364 364 enddo … … 367 367 ! assez bizarre car, si on est dans la couche d'alim et que alim_star et 368 368 ! plus petit que 1.e-10, on prend wght_th=1. 369 dok = 1, nlay370 doig = 1, ngrid369 DO k = 1, nlay 370 DO ig = 1, ngrid 371 371 IF (k<=lalim_conv(ig).AND.alim_star(ig, k)>1.e-10) THEN 372 372 wght_th(ig, k) = alim_star(ig, k) … … 377 377 ! PRINT*,'apres wght_th' 378 378 !test pour prolonger la convection 379 doig = 1, ngrid379 DO ig = 1, ngrid 380 380 !v1d if ((alim_star(ig,1).lt.1.e-10).AND.(therm)) THEN 381 381 IF ((alim_star(ig, 1)<1.e-10)) THEN … … 395 395 alp_int(:) = 0. 396 396 dp_int(:) = 0. 397 dol = 2, nlay398 doig = 1, ngrid397 DO l = 2, nlay 398 DO ig = 1, ngrid 399 399 IF(l<=lmax(ig)) THEN 400 400 zdp = pplay(ig, l - 1) - pplay(ig, l) … … 406 406 407 407 IF (iflag_coupl>=3 .AND. iflag_coupl<=5) THEN 408 doig = 1, ngrid408 DO ig = 1, ngrid 409 409 !valeur integree de alp_bl * 0.5: 410 410 IF (dp_int(ig)>0.) THEN
Note: See TracChangeset
for help on using the changeset viewer.