Ignore:
Timestamp:
May 12, 2011, 3:32:22 PM (13 years ago)
Author:
idelkadi
Message:

Modifications des routines de convection :

  • correction de bug : le champ sigd n'etait pas decompresse avant d'etre sorti de la convection.
  • sortir de nouveaux champs de convection (plcl, plfc, wb)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/cv3p1_closure.F

    r1516 r1518  
    77     o                      ,sig,w0,ptop2,cape,cin,m,iflag,coef
    88     :                      ,Plim1,Plim2,asupmax,supmax0
    9      :                      ,asupmaxmin,cbmf)
     9     :                      ,asupmaxmin,cbmf,plfc,wbeff)
    1010
    1111*
     
    4949      real asupmax(nloc,nd),supmax0(nloc)
    5050      real asupmaxmin(nloc)
     51      real cbmf(nloc),plfc(nloc)
     52      real wbeff(nloc)
    5153      integer iflag(nloc)
    5254c
     
    6365      integer nsupmax(nloc)
    6466      real supcrit,temp(nloc,nd)
    65       real P1(nloc),Pmin(nloc),plfc(nloc)
     67      real P1(nloc),Pmin(nloc)
    6668      real asupmax0(nloc)
    6769      logical ok(nloc)
    6870      real siglim(nloc,nd),wlim(nloc,nd),mlim(nloc,nd)
    6971      real wb2(nloc)
    70       real cbmflim(nloc),cbmf1(nloc),cbmfmax(nloc),cbmf(nloc)
     72      real cbmflim(nloc),cbmf1(nloc),cbmfmax(nloc)
    7173      real cbmflast(nloc)
    72       real wbeff(nloc)
    73 
    7474      real coef(nloc)
    7575      real xp(nloc),xq(nloc),xr(nloc),discr(nloc),b3(nloc),b4(nloc)
     
    203203           nsupmax(il)=i
    204204           ok(il)=.false.
    205         ENDIF    ! end IF (P(i) ...
     205        ENDIF    ! end IF (P(i) ...  )
    206206        ENDIF    ! end IF (icb+1 le i le inb)
    207207        ENDDO
     
    308308     $             /(P(il,i)-P(il,i-1))
    309309         GO TO 425
    310         ENDIF    ! end IF (P(i) ...
     310        ENDIF    ! end IF (P(i) ... )
    311311        ENDIF    ! end IF (icb+1 le i le inb)
    312312        ENDDO
     
    517517      ENDDO
    518518c
    519       if (flag_wb==0) then
    520          wbeff(:)=wbmax
    521       else if (flag_wb==1) then
    522          wbeff(1:ncum)=wbmax/(1.+500./(ph(1:ncum,1)-plfc(1:ncum)))
    523       else
    524          stop'cas non prevu iflag_wb'
    525 ! ligne a suprimer un jour ...
    526       endif
    527 !     if (ncum==1) print*,'WB ',plfc,wbeff,alp2,cin
    528 
     519      IF (flag_wb==0) THEN
     520        wbeff(:) = wbmax
     521      ELSE IF (flag_wb==1) THEN
     522        wbeff(1:ncum) = wbmax/(1.+500./(ph(1:ncum,1)-plfc(1:ncum)))
     523      ELSE IF (flag_wb==2) THEN
     524        wbeff(1:ncum) = wbmax*(0.01*(ph(1:ncum,1)-plfc(1:ncum)))**2
     525      ENDIF
     526c
    529527      DO il = 1,ncum
    530 
    531 !jyg    Modification du coef de wb*wb pour conformite avec papier Wake
    532 !       cbmf1(il) = alp2(il)/(0.5*wb*wb-Cin(il))
    533 ! A partir de mai 2011 on revient au 2 wb^2, conformement au papier.
    534 ! les versions d'avant (NPv2 et al) tournaient avec 0.5 wb^2 et wb=1m/s
    535 ! equivalent  a wb=1 m/s pour la nouvelle formulation
    536 ! Puis passage de wb constant a wbeff variable suivant flag_wb
    537 
     528cjyg    Modification du coef de wb*wb pour conformite avec papier Wake
     529cc       cbmf1(il) = alp2(il)/(0.5*wb*wb-Cin(il))
    538530       cbmf1(il) = alp2(il)/(2.*wbeff(il)*wbeff(il)-Cin(il))
    539 
    540531       if(cbmf1(il).EQ.0.AND.alp2(il).NE.0.) THEN
    541532        write(lunout,*)
Note: See TracChangeset for help on using the changeset viewer.