Ignore:
Timestamp:
Jun 13, 2017, 7:31:16 PM (7 years ago)
Author:
jbmadeleine
Message:

Changes in the vertical PDF used for shallow convective clouds.
Added vert_alpha_th which is the variance of the vertical PDF used for thermals.
If nothing is specified in the def files, it is set equal to vert_alpha.
Otherwise, it is now possible to have a different vertical PDF in the thermals
and in the environment.
Also added a fourth option iflag_cloudth_vert = 4 where
deltas=vert_alpha*sigmas instead of deltas=a*vert_alpha*sigmas.

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

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/cloudth_mod.F90

    r2910 r2911  
    860860      ! Change the width of the PDF used for vertical subgrid scale heterogeneity
    861861      ! (J Jouhaud, JL Dufresne, JB Madeleine)
    862       REAL,SAVE :: vert_alpha
    863       !$OMP THREADPRIVATE(vert_alpha)
     862      REAL,SAVE :: vert_alpha, vert_alpha_th
     863      !$OMP THREADPRIVATE(vert_alpha, vert_alpha_th)
    864864      LOGICAL, SAVE :: firstcall = .TRUE.
    865865      !$OMP THREADPRIVATE(firstcall)
     
    897897        CALL getin_p('cloudth_vert_alpha',vert_alpha)
    898898        WRITE(*,*) 'cloudth_vert_alpha = ', vert_alpha
     899        ! The factor used for the thermal is equal to that of the environment
     900        !   if nothing is explicitly specified in the def file
     901        vert_alpha_th=vert_alpha
     902        CALL getin_p('cloudth_vert_alpha_th',vert_alpha_th)
     903        WRITE(*,*) 'cloudth_vert_alpha_th = ', vert_alpha_th
    899904        firstcall=.FALSE.
    900905      ENDIF
     
    10011006      qltot(ind1,ind2)=fraca(ind1,ind2)*qlth(ind1,ind2)+(1.-1.*fraca(ind1,ind2))*qlenv(ind1,ind2)
    10021007
    1003       ELSE IF (iflag_cloudth_vert == 3) THEN
     1008      ELSE IF (iflag_cloudth_vert >= 3) THEN
    10041009
    10051010!-------------------------------------------------------------------------------
     
    10101015!      deltasenv=aenv*ratqs(ind1,ind2)*zqsatenv(ind1,ind2)
    10111016!      deltasth=ath*ratqs(ind1,ind2)*zqsatth(ind1,ind2)
    1012       deltasenv=aenv*vert_alpha*sigma1s
    1013       deltasth=ath*vert_alpha*sigma2s
     1017      IF (iflag_cloudth_vert == 3) THEN
     1018        deltasenv=aenv*vert_alpha*sigma1s
     1019        deltasth=ath*vert_alpha_th*sigma2s
     1020      ELSE IF (iflag_cloudth_vert == 4) THEN
     1021        deltasenv=vert_alpha*sigma1s
     1022        deltasth=vert_alpha_th*sigma2s
     1023      ENDIF
    10141024     
    10151025      xenv1=-(senv+deltasenv)/(sqrt(2.)*sigma1s)
     
    10531063
    10541064
    1055       ENDIF ! of if (iflag_cloudth_vert==1 or 3)
     1065      ENDIF ! of if (iflag_cloudth_vert==1 or 3 or 4)
    10561066
    10571067      if (cenv(ind1,ind2).lt.1.e-10.or.cth(ind1,ind2).lt.1.e-10) then
  • LMDZ5/trunk/libf/phylmd/fisrtilp.F90

    r2885 r2911  
    702702                   qcloud,ctot,zpspsk,paprs,ztla,zthl, &
    703703                   ratqs,zqs,t)
    704               elseif (iflag_cloudth_vert==3) then
     704              elseif (iflag_cloudth_vert>=3) then
    705705               call cloudth_v3(klon,klev,k,ztv, &
    706706                   zq,zqta,fraca, &
Note: See TracChangeset for help on using the changeset viewer.