Changeset 1516


Ignore:
Timestamp:
May 6, 2011, 4:45:19 PM (13 years ago)
Author:
idelkadi
Message:
  • Modification dans physiq.F pour que les pluies stratiformes n'alimentent les pochers que si le spoches occupent plus de 10% de la surface.
  • Dans le cas iflag_wake=2, on ne prend en compte les tendances de fisrtilp pour forcer les poches que si les poches existent deja (en controlant si elles couvrent deja 10% de la maille)
  • On autorise differentes formulations pour la vitesse a la base de la convection WB (plus precisement au niveau de convection libre LFC, en haut de la zone d'inhibition) en fonction de flag_wb, lu dans conv_param.data

flag_wb=0 : wb=wbmax, wbmax etant lu dans conv_param.data
flag_wb=1 : wb=wbmax/[1+ 500hPa / (ps-p_LFC) ]
Concerne cv3_routines.F cv3param.h cv3p1_closure.F

Location:
LMDZ5/trunk/libf/phylmd
Files:
4 edited

Legend:

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

    r1515 r1516  
    3636      real delt ! timestep (seconds)
    3737
     38
    3839      CHARACTER (LEN=20) :: modname='cv3_param'
    3940      CHARACTER (LEN=80) :: abort_message
     
    7475ccc      dttrig = 5.   ! (loose) condition for triggering
    7576      dttrig = 10.   ! (loose) condition for triggering
    76       wb = 1.   ! (m/s) adiab updraught speed at LFC (used in cv3p1_closure)
     77      flag_wb=0
     78      wbmax = 1.   ! (m/s) adiab updraught speed at LFC (used in cv3p1_closure)
    7779
    7880c -- rate of approach to quasi-equilibrium:
     
    9799      READ(99,*,end=9998) spfac
    98100      READ(99,*,end=9998) tau
    99       READ(99,*,end=9998) wb
     101      READ(99,*,end=9998) flag_wb
     102      READ(99,*,end=9998) wbmax
    1001039998  Continue
    101104      CLOSE(99)
     
    107110        WRITE(*,*)'spfac=',spfac
    108111        WRITE(*,*)'tau=',tau
    109         WRITE(*,*)'wb =',wb
     112        WRITE(*,*)'flag_wb =',flag_wb
     113        WRITE(*,*)'wbmax =',wbmax
    110114
    111115cIM Lecture du fichier ep_param.data
  • LMDZ5/trunk/libf/phylmd/cv3p1_closure.F

    r1515 r1516  
    7070      real cbmflim(nloc),cbmf1(nloc),cbmfmax(nloc),cbmf(nloc)
    7171      real cbmflast(nloc)
     72      real wbeff(nloc)
     73
    7274      real coef(nloc)
    7375      real xp(nloc),xq(nloc),xr(nloc),discr(nloc),b3(nloc),b4(nloc)
     
    515517      ENDDO
    516518c
     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
    517529      DO il = 1,ncum
    518 cjyg    Modification du coef de wb*wb pour conformite avec papier Wake
    519 cc       cbmf1(il) = alp2(il)/(0.5*wb*wb-Cin(il))
    520        cbmf1(il) = alp2(il)/(2.*wb*wb-Cin(il))
     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
     538       cbmf1(il) = alp2(il)/(2.*wbeff(il)*wbeff(il)-Cin(il))
     539
    521540       if(cbmf1(il).EQ.0.AND.alp2(il).NE.0.) THEN
    522541        write(lunout,*)
  • LMDZ5/trunk/libf/phylmd/cv3param.h

    r1515 r1516  
    99      integer noff, minorig, nl, nlp, nlm
    1010      real sigdz, spfac
    11       integer flag_epKEorig
     11      integer flag_epKEorig,flag_wb
    1212      real pbcrit, ptcrit
    1313      real elcrit, tlcrit
     
    1515      real dtovsh, dpbase, dttrig
    1616      real dtcrit, tau, beta, alpha, alpha1
    17       real wb
     17      real wbmax
    1818      real delta
    1919      real betad
     
    2727     :                ,dtovsh, dpbase, dttrig
    2828     :                ,dtcrit, tau, beta, alpha, alpha1
    29      :                ,wb
     29     :                ,flag_wb,wbmax
    3030     :                ,delta, betad
    3131!$OMP THREADPRIVATE(/cv3param/)
  • LMDZ5/trunk/libf/phylmd/physiq.F

    r1507 r1516  
    615615      real, save :: alp_max=2.
    616616
     617      real, save :: wake_s_min_lsp=0.1
     618
    617619c$OMP THREADPRIVATE(alp_bl_prescr,ale_bl_prescr)
    618620c$OMP THREADPRIVATE(ale_max,alp_max)
     621c$OMP THREADPRIVATE(wake_s_min_lsp)
    619622
    620623      real ale_wake(klon)
    621624      real alp_wake(klon)
     625
     626      real ok_wk_lsp(klon)
     627
    622628cRC
    623629c Variables liées à la poche froide (jyg et rr)
     
    23632369
    23642370      if (iflag_wake==2) then
    2365          dt_dwn(:,:)= dt_dwn(:,:)+(d_t_eva(:,:)+d_t_lsc(:,:))/dtime
    2366          dq_dwn(:,:)= dq_dwn(:,:)+(d_q_eva(:,:)+d_q_lsc(:,:))/dtime
     2371        ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.)
     2372        DO k = 1,klev
     2373         dt_dwn(:,k)= dt_dwn(:,k)+
     2374     :            ok_wk_lsp(:)*(d_t_eva(:,k)+d_t_lsc(:,k))/dtime
     2375         dq_dwn(:,k)= dq_dwn(:,k)+
     2376     :            ok_wk_lsp(:)*(d_q_eva(:,k)+d_q_lsc(:,k))/dtime
     2377        ENDDO
    23672378      endif
    23682379c
Note: See TracChangeset for help on using the changeset viewer.