Ignore:
Timestamp:
Sep 9, 2011, 4:24:40 PM (13 years ago)
Author:
acolaitis
Message:

--- AC 07/09/2011 ---

This is a major update for thermals and richardson layer parametrization. This update stabilizes thermals (further
studies might show that we can reduce the value of nsplit in gcm. To be tested.), and prevent downdrafts from descending into
the surface layer, which was acting as a cold feedback on the thermals. The Richardson surface layer now features
different gustiness coefficients for Richardson, heat and momentum so that u* and t* are correctly represented.

Upcoming updates will change surflayer_interpol.F90 to implement those changes in the interpolation scheme as well.

*
IMPORTANT : several parts of the vdifc code might want to use these new definitions for gustiness, u* and t*. exemple : dust devil routines
that recompute u* ? lifting routines ? TODO !

M 289 libf/phymars/thermcell_main_mars.F90
-----------------> Added iterations to the velocity / buoyancy / entrainment / detrainment

computation to ensure correct convergence. Iteration number is for now set to
4, which is probably too much. This will be changed once several cases are tested.
The minimum is probably 2 iterations.

M 289 libf/phymars/vdifc.F
-----------------> Subgrid gustiness parametrization now uses different gustiness beta coefficients

for heat and momentum. Comparisons with LES at Exomars landing site, matching u*
and teta* suggests values of beta=0.7 for momentum and beta=1.2 for heat, where
the formula for large scale horizontal winds in the first layer is :

U02 = pu2 + pv2 + (beta*wmax_th)2

M 289 libf/phymars/vdif_cd.F
-----------------> LES data suggests that Richardson number distribution during daytime has a very large

standart deviation due to highly negative Richardsons on several gridpoints. As a consequence,
the mean Richardson in daytime in the LES is much more negative than in LES. In the gcm,
parametrized subgrid turbulence prevents such cases, which can be dangerous in nearly unstable conditions.
Hence, we use beta=0.5 instead of one, so that we keep the anti-crazy-hfx function of beta and we increase the
norm of negative Richardsons in general for daytime conditions. This is set in conjonction with
beta settings for heat and momentum in vdifc.

M 289 libf/phymars/meso_inc/meso_inc_les.F
-----------------> HFX and USTM computations now uses the different betas for heat and momentum.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/thermcell_main_mars.F90

    r190 r290  
    114114      LOGICAL active(ngridmx),activetmp(ngridmx)
    115115      REAL a1,b1,ae,be,ad,bd
     116      INTEGER tic
    116117
    117118! ==========================================
     
    334335               alim_star(ig,1)=MAX((ztv(ig,1)-ztv(ig,2)),0.)  &
    335336     &                       *sqrt(zlev(ig,2))
     337!     &                       /sqrt(zlev(ig,2))
    336338!      &                       *zlev(ig,2)
    337339               lalim(ig)=2
     
    381383! dans un panache conservatif
    382384          f_star(ig,1)=0.
     385         
    383386          f_star(ig,2)=alim_star(ig,1)
     387
    384388          zw2(ig,2)=2.*g*(ztv(ig,1)-ztv(ig,2))/ztv(ig,2)  &
    385389      &                     *(zlev(ig,2)-zlev(ig,1))  &
    386       &                     *0.4*pphi(ig,1)/(pphi(ig,2)-pphi(ig,1))
     390      &                    *0.4*pphi(ig,1)/(pphi(ig,2)-pphi(ig,1))
    387391          w_est(ig,2)=zw2(ig,2)
    388392
     
    420424
    421425!                if(l .lt. lalim(ig)) then
    422 !                ztva_est(ig,l)=(f_star(ig,l)*ztla(ig,l-1)+  &
     426!               ztva_est(ig,l)=(f_star(ig,l)*ztla(ig,l-1)+  &
    423427!     &            alim_star(ig,l)*ztv(ig,l))  &
    424428!     &            /(f_star(ig,l)+alim_star(ig,l))
     
    522526!---------------------------------------------------------------------------
    523527
     528      DO tic=0,3
     529
    524530      activetmp(:)=active(:) .and. f_star(:,l+1)>1.e-10
    525531      do ig=1,ngridmx
     
    547553      enddo
    548554
     555! ================ RECOMPUTE ENTR, DETR, and F FROM NEW W2 ===================
     556
     557
     558      do ig=1,ngridmx
     559        if (activetmp(ig)) then
     560
     561          zw2m=zw2(ig,l+1)
     562          if(zw2m .gt. 0) then
     563          if((a1*(zbuoy(ig,l)/zw2m)-b1) .gt. 0.) then
     564          entr_star(ig,l)=f_star(ig,l)*zdz*  &
     565        &   MAX(0.,ae*(a1*(zbuoy(ig,l)/zw2m)-b1)**be)
     566          else
     567          entr_star(ig,l)=0.
     568          endif
     569
     570          if(zbuoy(ig,l) .gt. 0.) then
     571             if(l .lt. lalim(ig)) then
     572                detr_star(ig,l)=0.
     573             else
     574                 detr_star(ig,l) = f_star(ig,l)*zdz*              &
     575            &  ad
     576             endif
     577          else
     578          detr_star(ig,l)=f_star(ig,l)*zdz*                        &
     579                &     bd*zbuoy(ig,l)/zw2m
     580          endif
     581          else
     582          entr_star(ig,l)=0.
     583          detr_star(ig,l)=0.
     584          endif
     585
     586! En dessous de lalim, on prend le max de alim_star et entr_star pour
     587! alim_star et 0 sinon
     588
     589        if (l.lt.lalim(ig)) then
     590          alim_star(ig,l)=max(alim_star(ig,l),entr_star(ig,l))
     591          entr_star(ig,l)=0.
     592        endif
     593
     594! Calcul du flux montant normalise
     595
     596      f_star(ig,l+1)=f_star(ig,l)+alim_star(ig,l)+entr_star(ig,l)  &
     597     &              -detr_star(ig,l)
     598
     599      endif
     600      enddo
     601
     602      ENDDO
    549603!---------------------------------------------------------------------------
    550604!initialisations pour le calcul de la hauteur du thermique, de l'inversion et de la vitesse verticale max
     
    11211175      do ig=1,ngridmx
    11221176         if(lmax(ig) .gt. 1) then
    1123          do k=1,lmax(ig)
     1177! No downdraft in the very-near surface layer, we begin at k=3
     1178         do k=3,lmax(ig)
    11241179            zdthladj_down(ig,k)=(1./masse(ig,k))*(fm_down(ig,k+1)*ztv(ig,k+1)- &
    11251180     & fm_down(ig,k)*ztv(ig,k)+fm_down(ig,k)*ztvd(ig,k)-fm_down(ig,k+1)*ztvd(ig,k+1))
Note: See TracChangeset for help on using the changeset viewer.