Ignore:
Timestamp:
Feb 27, 2012, 10:44:32 AM (13 years ago)
Author:
acolaitis
Message:

27/02/12 == AC

Continuation of thermals setting, comparisons with mesoscale results on Case C
Added possibility to call gcm (or 1d) with constant prescribed sensible heat flux, in the spirit of direct comparisons with LES

... This is directly comparable to the variable tke_heat_flux in namelist.input
... Requires the use of yamada4.F from terrestrial GCM (mixes more, seem more numerically stable)
... Usually requires high timesteps (>1000) to avoids crashes. Best approach is to compare
height of first model level z1 and teta_1 between LES and 1D, and increase the timesteps until results
between the two models are comparable (might require a slitghly different tke_heat_flux between the two models
due to difference in vertical diffusion schemes and subgrid effects)
... Syntax for use is to add "tke_heat_flux = ..." in callphys.def

Corrected some stuff with tke transport in thermals (which is anyway deactivated but one day maybe...)

File:
1 edited

Legend:

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

    r532 r544  
    113113      REAL zdz,zbuoy(ngridmx,nlayermx),zw2m
    114114      LOGICAL activecell(ngridmx),activetmp(ngridmx)
    115       REAL a1,b1,ae,be,ad,bd,fdfu,b1inv,a1inv,omega
     115      REAL a1,b1,ae,be,ad,bd,fdfu,b1inv,a1inv,omega,adalim
    116116      INTEGER tic
    117117
     
    381381      b1inv=b1
    382382      omega=0.
     383      adalim=0.
    383384
    384385! One good config for 34/35 levels
     
    389390! Best configuration for 222 levels:
    390391
    391       omega=0.06
    392       b1=0.
    393       a1=1.
    394       a1inv=0.25*a1
    395       b1inv=0.0002
     392!      omega=0.06
     393!      b1=0.
     394!      a1=1.
     395!      a1inv=0.25*a1
     396!      b1inv=0.0002
     397!!
     398!!
     399!!      ae=0.9*ae
    396400
    397401! Best config for norad 222 levels:
    398 
    399 !       omega=0.06
    400 !       a1=1.
    401 !       b1=0.
    402 !       a1inv=a1
    403 !       be=1.1*be
    404 !       ad = 0.0004
    405 !       b1inv=0.00035
     402! with yamada4 and alim at sqrt(zlev)
     403
     404       omega=0.06
     405       a1=1.
     406       b1=0.
     407       a1inv=a1
     408       be=1.1*be
     409       ad = 0.0004
     410       b1inv=0.00035
     411       adalim=0.
     412
     413      b1inv=0.00025
    406414
    407415! Trying stuff :
     416
     417!      omega=0.04
     418!!      b1=0.
     419!      a1=1.
     420!      a1inv=a1
     421!      b1inv=0.0005689
     422!!      be=1.1*be
     423!!      ae=0.96*ae
     424
    408425
    409426!       omega=0.06
     
    431448            if (ztv(ig,1)>=(ztv(ig,2))) then
    432449               alim_star(ig,1)=MAX((ztv(ig,1)-ztv(ig,2)),0.)  &
    433      &                       *sqrt(zlev(ig,2))
     450!     &                       *sqrt(zlev(ig,2))
    434451!     &                       /sqrt(zlev(ig,2))
    435 !      &                       *zlev(ig,2)
     452      &                       *zlev(ig,2)
    436453               lalim(ig)=2
    437454               alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,1)
     
    444461           if (ztv(ig,l)>(ztv(ig,l+1)+0.) .and. ztv(ig,1)>=ztv(ig,l) .and. (alim_star(ig,l-1) .ne. 0.)) then ! .and. (zlev(ig,l+1) .lt. 1000.)) then
    445462               alim_star(ig,l)=MAX((ztv(ig,l)-ztv(ig,l+1)),0.)  &
    446      &                       *sqrt(zlev(ig,l+1))
    447 !      &                       *zlev(ig,2)
     463!     &                       *sqrt(zlev(ig,l+1))
     464!     &                       /sqrt(zlev(ig,l+1))
     465      &                       *zlev(ig,l+1)
    448466                lalim(ig)=l+1
    449467               alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,l)
     
    562580          if(zbuoy(ig,l) .gt. 0.) then
    563581             if(l .lt. lalim(ig)) then
    564                 detr_star(ig,l)=0.
     582
     583!                detr_star(ig,l)=0.
     584                 detr_star(ig,l) = f_star(ig,l)*zdz*              &
     585            &  adalim
    565586             else
    566587
     
    628649!---------------------------------------------------------------------------
    629650
    630       DO tic=0,0  ! internal convergence loop
     651      DO tic=0,5  ! internal convergence loop
    631652      activetmp(:)=activecell(:) .and. f_star(:,l+1)>1.e-10
    632653      do ig=1,ngridmx
     
    674695          if(zbuoy(ig,l) .gt. 0.) then
    675696             if(l .lt. lalim(ig)) then
    676                 detr_star(ig,l)=0.
     697
     698!                detr_star(ig,l)=0.
     699                 detr_star(ig,l) = f_star(ig,l)*zdz*              &
     700            &  adalim
     701
    677702             else
    678703                 detr_star(ig,l) = f_star(ig,l)*zdz*              &
Note: See TracChangeset for help on using the changeset viewer.