Changeset 1032 for LMDZ4/trunk


Ignore:
Timestamp:
Oct 24, 2008, 5:35:40 PM (16 years ago)
Author:
lmdzadmin
Message:

Options sur le schéma de nuage
FH/IM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/physiq.F

    r1015 r1032  
    163163      save iflag_ratqs
    164164c$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)
    165169
    166170      integer lmax_th(klon)
     
    537541c
    538542cc      INTEGER iflag_con
    539 cc      SAVE iflag_con              ! indicateur de la convection
    540543c
    541544      INTEGER itap
     
    650653cRR:fin declarations poches froides
    651654c=======================================================================================================
     655
     656      REAL zw2(klon,klev+1)
     657      REAL fraca(klon,klev+1)
    652658
    653659c Variables locales pour la couche limite (al1):
     
    11281134      pde_u(:,:) = 0.
    11291135      aam=0.
     1136
    11301137      torsfc=0.
    11311138
     
    12021209         solswad(:)=0.
    12031210
     1211         lambda_th(:,:)=0.
     1212         wmax_th(:)=0.
     1213         tau_overturning_th(:)=0.
    12041214         IF (config_inca /= 'none') THEN
    12051215            tau_inca(:,:,:,:) = 0.
     
    12371247     .                  bl95_b0, bl95_b1,
    12381248     .                  iflag_thermals,nsplit_thermals,tau_thermals,
     1249     .                  iflag_thermals_ed,iflag_thermals_optflux,
    12391250cnv flags pour la convection et les poches froides
    12401251     .                   iflag_coupl,iflag_clos,iflag_wake)
     
    23072318     s      ,ratqsdiff,zqsatth
    23082319con 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)
    23102321         endif
    23112322
    2312 !        call calltherm(pdtphys
    2313 !    s      ,pplay,paprs,pphi
    2314 !    s      ,u_seri,v_seri,t_seri,q_seri
    2315 !    s      ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs
    2316 !    s      ,fm_therm,entr_therm)
    23172323
    23182324c  Ajustement sec
     
    23872393         enddo
    23882394         enddo
     2395
     2396c-----------------------------------------------------------------------
     2397c  par nversion de la fonction log normale
     2398c-----------------------------------------------------------------------
    23892399      else if (iflag_cldcon.eq.4) then
    23902400         ptconvth(:,:)=.false.
     
    23942404     s   (klon,klev,q_seri,zqsat,clwcon0th,ptconvth,ratqsc,rnebcon0th)
    23952405         if(prt_level.ge.9) print*,' CLOUDS_GNO OK'
     2406
     2407c-----------------------------------------------------------------------
     2408c   par calcul direct de l'ecart-type
     2409c-----------------------------------------------------------------------
     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
     2423c On impose que l'air autour de la fraction couverte par le thermique
     2424c plus son air detraine durant tau_overturning_th soit superieur
     2425c 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
    23962455      endif
    23972456
     
    24572516
    24582517      if (iflag_cldcon.eq.1 .or.iflag_cldcon.eq.2
    2459      s    .or.iflag_cldcon.eq.4) then
     2518     s    .or.iflag_cldcon.ge.4) then
    24602519
    24612520! On ajoute une constante au ratqsc*2 pour tenir compte de
Note: See TracChangeset for help on using the changeset viewer.