Changeset 852 for LMDZ4/trunk/libf/phytherm/physiq.F
- Timestamp:
- Oct 11, 2007, 3:43:42 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phytherm/physiq.F
r839 r852 189 189 190 190 integer lmax_th(klon) 191 integer limbas(klon) 191 192 real ratqscth(klon,klev) 192 193 real ratqsdiff(klon,klev) … … 945 946 REAL fluxu(klon,klev, nbsrf) ! flux turbulent de vitesse u 946 947 REAL fluxv(klon,klev, nbsrf) ! flux turbulent de vitesse v 948 949 REAL, DIMENSION(:,:,:), ALLOCATABLE, SAVE :: pbl_tke ! turb kinetic energy 950 c !$OMP THREADPRIVATE(pbl_tke) 951 947 952 c 948 953 REAL zxfluxt(klon, klev) … … 1066 1071 c$OMP THREADPRIVATE(d_u_con,d_v_con) 1067 1072 REAL d_t_lsc(klon,klev),d_q_lsc(klon,klev),d_ql_lsc(klon,klev) 1073 REAL d_t_ajsb(klon,klev), d_q_ajsb(klon,klev) 1068 1074 REAL d_t_ajs(klon,klev), d_q_ajs(klon,klev) 1069 1075 REAL d_u_ajs(klon,klev), d_v_ajs(klon,klev) … … 1554 1560 itaprad = 0 1555 1561 1562 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1563 !! Un petit travail à faire ici. 1564 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1565 1566 if (iflag_pbl>1) then 1567 PRINT*, "Using method MELLOR&YAMADA" 1568 endif 1569 ! NB! pbl_tke could/should be read and written from (re)startphy.nc 1570 ALLOCATE(pbl_tke(klon,klev+1,nbsrf)) 1571 pbl_tke(:,:,:) = 1.e-8 1572 1573 1556 1574 CALL phyetat0 ("startphy.nc",dtime,co2_ppm_etat0,solaire_etat0, 1557 1575 . rlat,rlon,pctsrf, ftsol, … … 1561 1579 . radsol,clesphy0, 1562 1580 . zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,tabcntr0, 1563 . t_ancien, q_ancien, ancien_ok, rnebcon, ratqs,clwcon) 1581 . t_ancien, q_ancien, ancien_ok, rnebcon, ratqs,clwcon, 1582 . pbl_tke) 1583 1584 1585 1586 1587 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1588 1564 1589 1565 1590 DO i=1,klon … … 1643 1668 ENDIF 1644 1669 1670 rugoro=0. 1645 1671 c34EK 1646 1672 IF (ok_orodr) THEN 1647 DO i=1,klon 1648 rugoro(i) = MAX(1.0e-05, zstd(i)*zsig(i)/2.0) 1649 ENDDO 1673 1674 rugoro=0. 1675 1676 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1677 ! FH sans doute a enlever de finitivement ou, si on le garde, l'activer 1678 ! justement quand ok_orodr = false. 1679 ! ce rugoro est utilise par la couche limite et fait double emploi 1680 ! avec les paramétrisations spécifiques de Francois Lott. 1681 ! DO i=1,klon 1682 ! rugoro(i) = MAX(1.0e-05, zstd(i)*zsig(i)/2.0) 1683 ! ENDDO 1684 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1685 1650 1686 CALL SUGWD(klon,klev,paprs,pplay) 1651 1687 DO i=1,klon … … 2061 2097 d wfbils, wfbilo, fluxt, fluxu, fluxv, 2062 2098 - dsens, devap, zxsnow, 2063 - zxfluxt, zxfluxq, q2m, fluxq )2099 - zxfluxt, zxfluxq, q2m, fluxq, pbl_tke ) 2064 2100 c 2065 2101 c … … 2233 2269 DO i = 1, klon 2234 2270 ema_pct(i) = paprs(i,itop_con(i)) 2271 if (itop_con(i).gt.klev-3) then 2272 print*,'La convection monte trop haut ' 2273 print*,'itop_con(,',i,',)=',itop_con(i) 2274 endif 2235 2275 ENDDO 2236 2276 DO i = 1, klon … … 2321 2361 2322 2362 2363 d_t_ajsb(:,:)=0. 2364 d_q_ajsb(:,:)=0. 2323 2365 d_t_ajs(:,:)=0. 2324 2366 d_u_ajs(:,:)=0. … … 2336 2378 c ==== 2337 2379 IF(prt_level>9)WRITE(lunout,*)'pas de convection' 2338 else if(iflag_thermals.eq.0) then 2339 2340 c Ajustement sec 2341 c ============== 2342 IF(prt_level>9)WRITE(lunout,*)'ajsec' 2343 CALL ajsec(paprs, pplay, t_seri,q_seri, d_t_ajs, d_q_ajs) 2344 t_seri(:,:) = t_seri(:,:) + d_t_ajs(:,:) 2345 q_seri(:,:) = q_seri(:,:) + d_q_ajs(:,:) 2380 2381 2346 2382 else 2383 2347 2384 c Thermiques 2348 2385 c ========== … … 2351 2388 print*,'JUSTE AVANT , iflag_thermals=' 2352 2389 s ,iflag_thermals,' nsplit_thermals=',nsplit_thermals 2390 2391 2392 if (iflag_thermals.gt.1) then 2353 2393 call calltherm(pdtphys 2354 2394 s ,pplay,paprs,pphi,weak_inversion … … 2357 2397 s ,fm_therm,entr_therm,zqasc,clwcon0th,lmax_th,ratqscth, 2358 2398 s ratqsdiff,zqsatth) 2399 endif 2359 2400 2360 2401 ! call calltherm(pdtphys … … 2363 2404 ! s ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs 2364 2405 ! s ,fm_therm,entr_therm) 2406 2407 c Ajustement sec 2408 c ============== 2409 2410 ! Dans le cas où on active les thermiques, on fait partir l'ajustement 2411 ! a partir du sommet des thermiques. 2412 ! Dans le cas contraire, on demarre au niveau 1. 2413 2414 if (iflag_thermals.ge.13.or.iflag_thermals.eq.0) then 2415 2416 if(iflag_thermals.eq.0) then 2417 IF(prt_level>9)WRITE(lunout,*)'ajsec' 2418 limbas(:)=1 2419 else 2420 limbas(:)=lmax_th(:) 2421 endif 2422 2423 ! Attention : le call ajsec_convV2 n'est maintenu que momentanneement 2424 ! pour des test de convergence numerique. 2425 ! Le nouveau ajsec est a priori mieux, meme pour le cas 2426 ! iflag_thermals = 0 (l'ancienne version peut faire des tendances 2427 ! non nulles numeriquement pour des mailles non concernees. 2428 2429 if (iflag_thermals.eq.0) then 2430 CALL ajsec_convV2(paprs, pplay, t_seri,q_seri 2431 s , d_t_ajsb, d_q_ajsb) 2432 else 2433 CALL ajsec(paprs, pplay, t_seri,q_seri,limbas 2434 s , d_t_ajsb, d_q_ajsb) 2435 endif 2436 2437 t_seri(:,:) = t_seri(:,:) + d_t_ajsb(:,:) 2438 q_seri(:,:) = q_seri(:,:) + d_q_ajsb(:,:) 2439 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) 2440 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:) 2441 2442 endif 2443 2365 2444 endif 2366 2445 c … … 2397 2476 ptconvth(:,:)=.false. 2398 2477 ratqsc(:,:)=0. 2399 print*,'avant clouds_gno '2478 print*,'avant clouds_gno thermique' 2400 2479 call clouds_gno 2401 2480 s (klon,klev,q_seri,zqsat,clwcon0th,ptconvth,ratqsc,rnebcon0th) … … 3321 3400 . radsol, 3322 3401 . zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro, 3323 . t_ancien, q_ancien, rnebcon, ratqs, clwcon) 3402 . t_ancien, q_ancien, rnebcon, ratqs, clwcon, 3403 . pbl_tke) 3324 3404 ENDIF 3325 3405
Note: See TracChangeset
for help on using the changeset viewer.