Changeset 1032 for LMDZ4/trunk/libf/phylmd
- Timestamp:
- Oct 24, 2008, 5:35:40 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/physiq.F
r1015 r1032 163 163 save iflag_ratqs 164 164 c$OMP THREADPRIVATE(iflag_ratqs) 165 REAL lambda_th(klon,klev),zz,znum,zden 166 REAL wmax_th(klon) 167 REAL zmax_th(klon) 168 REAL tau_overturning_th(klon) 165 169 166 170 integer lmax_th(klon) … … 537 541 c 538 542 cc INTEGER iflag_con 539 cc SAVE iflag_con ! indicateur de la convection540 543 c 541 544 INTEGER itap … … 650 653 cRR:fin declarations poches froides 651 654 c======================================================================================================= 655 656 REAL zw2(klon,klev+1) 657 REAL fraca(klon,klev+1) 652 658 653 659 c Variables locales pour la couche limite (al1): … … 1128 1134 pde_u(:,:) = 0. 1129 1135 aam=0. 1136 1130 1137 torsfc=0. 1131 1138 … … 1202 1209 solswad(:)=0. 1203 1210 1211 lambda_th(:,:)=0. 1212 wmax_th(:)=0. 1213 tau_overturning_th(:)=0. 1204 1214 IF (config_inca /= 'none') THEN 1205 1215 tau_inca(:,:,:,:) = 0. … … 1237 1247 . bl95_b0, bl95_b1, 1238 1248 . iflag_thermals,nsplit_thermals,tau_thermals, 1249 . iflag_thermals_ed,iflag_thermals_optflux, 1239 1250 cnv flags pour la convection et les poches froides 1240 1251 . iflag_coupl,iflag_clos,iflag_wake) … … 2307 2318 s ,ratqsdiff,zqsatth 2308 2319 con rajoute ale et alp, et les caracteristiques de la couche alim 2309 s ,Ale_bl,Alp_bl,lalim_conv,wght_th, zmax0, f0 )2320 s ,Ale_bl,Alp_bl,lalim_conv,wght_th, zmax0, f0, zw2,fraca) 2310 2321 endif 2311 2322 2312 ! call calltherm(pdtphys2313 ! s ,pplay,paprs,pphi2314 ! s ,u_seri,v_seri,t_seri,q_seri2315 ! s ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs2316 ! s ,fm_therm,entr_therm)2317 2323 2318 2324 c Ajustement sec … … 2387 2393 enddo 2388 2394 enddo 2395 2396 c----------------------------------------------------------------------- 2397 c par nversion de la fonction log normale 2398 c----------------------------------------------------------------------- 2389 2399 else if (iflag_cldcon.eq.4) then 2390 2400 ptconvth(:,:)=.false. … … 2394 2404 s (klon,klev,q_seri,zqsat,clwcon0th,ptconvth,ratqsc,rnebcon0th) 2395 2405 if(prt_level.ge.9) print*,' CLOUDS_GNO OK' 2406 2407 c----------------------------------------------------------------------- 2408 c par calcul direct de l'ecart-type 2409 c----------------------------------------------------------------------- 2410 2411 else if (iflag_cldcon>=5) then 2412 wmax_th(:)=0. 2413 zmax_th(:)=0. 2414 do k=1,klev 2415 do i=1,klon 2416 wmax_th(i)=max(wmax_th(i),zw2(i,k)) 2417 if (detr_therm(i,k).gt.0.) zmax_th(i)=pphi(i,k)/rg 2418 enddo 2419 enddo 2420 tau_overturning_th(:)=zmax_th(:)/max(0.5*wmax_th(:),0.1) 2421 print*,'TAU TH OK ',tau_overturning_th(1),detr_therm(1,3) 2422 2423 c On impose que l'air autour de la fraction couverte par le thermique 2424 c plus son air detraine durant tau_overturning_th soit superieur 2425 c a 0.1 q_seri 2426 zz=0.1 2427 do k=1,klev 2428 do i=1,klon 2429 lambda_th(i,k)=0.5*(fraca(i,k)+fraca(i,k+1))+ 2430 s tau_overturning_th(i)*detr_therm(i,k) 2431 s *rg/(paprs(i,k)-paprs(i,k+1)) 2432 znum=(1.-zz)*q_seri(i,k) 2433 zden=zqasc(i,k)-zz*q_seri(i,k) 2434 if (znum-lambda_th(i,k)*zden<0.) lambda_th(i,k)=znum/zden 2435 lambda_th(i,k)=min(lambda_th(i,k),0.9) 2436 enddo 2437 enddo 2438 2439 if(iflag_cldcon==5) then 2440 do k=1,klev 2441 do i=1,klon 2442 ratqsc(i,k)=sqrt(lambda_th(i,k)/(1.-lambda_th(i,k)))* 2443 s abs((zqasc(i,k)-q_seri(i,k))/q_seri(i,k)) 2444 enddo 2445 enddo 2446 else if(iflag_cldcon==6) then 2447 do k=1,klev 2448 do i=1,klon 2449 ratqsc(i,k)=sqrt(lambda_th(i,k))* 2450 s (zqasc(i,k)-q_seri(i,k))/q_seri(i,k) 2451 enddo 2452 enddo 2453 endif 2454 2396 2455 endif 2397 2456 … … 2457 2516 2458 2517 if (iflag_cldcon.eq.1 .or.iflag_cldcon.eq.2 2459 s .or.iflag_cldcon. eq.4) then2518 s .or.iflag_cldcon.ge.4) then 2460 2519 2461 2520 ! On ajoute une constante au ratqsc*2 pour tenir compte de
Note: See TracChangeset
for help on using the changeset viewer.