Changeset 499


Ignore:
Timestamp:
Jan 16, 2012, 10:16:46 AM (13 years ago)
Author:
acolaitis
Message:

M 498 libf/phymars/calltherm_interface.F90
------------------> Added computation of wstar. Wmax is no longer an output.

M 498 libf/phymars/physiq.F
------------------> Minor changes.

M 498 libf/phymars/vdif_cd.F
------------------> Changed computation of bulk Richardson number to allow more unstable configurations.

M 498 libf/phymars/vdifc.F
------------------> Changed computation of surface conductance coefficients following a new approach. Comparisons with LES are much better.

Location:
trunk/LMDZ.MARS/libf/phymars
Files:
4 edited

Legend:

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

    r342 r499  
    66     & ptimestep,pu,pv,pt,pq,pdu,pdv,pdt,pdq,q2, &
    77     & pplay,pplev,pphi,zpopsk, &
    8      & pdu_th,pdv_th,pdt_th,pdq_th,lmax,zmaxth,pbl_dtke,hfmax,wmax)
     8     & pdu_th,pdv_th,pdt_th,pdq_th,lmax,zmaxth,pbl_dtke,hfmax,wstar)
    99
    1010       USE ioipsl_getincom
     
    4545      REAL, INTENT(OUT) :: zmaxth(ngridmx)
    4646      REAL, INTENT(OUT) :: pbl_dtke(ngridmx,nlayermx+1)
     47      REAL, INTENT(OUT) :: wstar(ngridmx)
    4748
    4849!--------------------------------------------------------
     
    6667      REAL zdz(ngridmx,nlayermx)
    6768      LOGICAL qtransport_thermals,dtke_thermals
    68       INTEGER l,ig,iq
     69      INTEGER l,ig,iq,ii(1)
    6970      CHARACTER (LEN=20) :: modname
    7071
     
    9798      REAL buoyancyEst(ngridmx,nlayermx)
    9899      REAL hfmax(ngridmx),wmax(ngridmx)
     100      REAL pbl_teta(ngridmx),dteta(ngridmx,nlayermx)
    99101
    100102!---------------------------------------------------------
     
    352354           pdt_th(:,:)=d_t_ajs(:,:)/ptimestep
    353355
     356
     357! **********************************************************************
     358! Compute the free convection velocity scale for vdifc
     359! **********************************************************************
     360
     361
     362! Potential temperature gradient
     363
     364      dteta(:,nlayermx)=0.
     365      DO l=1,nlayermx-1
     366         DO ig=1, ngridmx
     367            dteta(ig,l) = ((zt(ig,l+1)-zt(ig,l))/zpopsk(ig,l))          &
     368     &              /(zzlay(ig,l+1)-zzlay(ig,l))
     369         ENDDO
     370      ENDDO
     371
     372! Computation of the pbl mixed layer temperature
     373
     374      DO ig=1, ngridmx
     375         ii=MINLOC(abs(dteta(ig,1:lmax(ig))))
     376         pbl_teta(ig) = zt(ig,ii(1))/zpopsk(ig,ii(1))
     377      ENDDO
     378
     379! We follow Spiga et. al 2010 (QJRMS)
     380! ------------
     381
     382      DO ig=1, ngridmx
     383         IF (zmax(ig) .gt. 0.) THEN
     384            wstar(ig)=(g*zmaxth(ig)*hfmax(ig)/pbl_teta(ig))**(1./3.)
     385         ELSE
     386            wstar(ig)=0.
     387         ENDIF
     388      ENDDO
     389
     390
     391
    354392! **********************************************************************
    355393! Diagnostics
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r496 r499  
    332332
    333333      REAL lmax_th_out(ngridmx),zmax_th(ngridmx)
    334       REAL, SAVE :: wmax_th(ngridmx)
     334      REAL, SAVE :: wstar(ngridmx)
    335335      REAL, SAVE :: hfmax_th(ngridmx)
    336336      REAL pdu_th(ngridmx,nlayermx),pdv_th(ngridmx,nlayermx)
     
    342342      REAL z_out                          ! height of interpolation between z0 and z1 [meters]
    343343      REAL ustar(ngridmx),tstar(ngridmx)  ! friction velocity and friction potential temp
    344       REAL L_mo(ngridmx),wstar(ngridmx),vhf(ngridmx),vvv(ngridmx)
     344      REAL L_mo(ngridmx),wstarpbl(ngridmx),vhf(ngridmx),vvv(ngridmx)
    345345      REAL zu2(ngridmx)
    346346c=======================================================================
     
    359359         fluxrad(:)=0
    360360
    361          wmax_th(:)=0.
     361         wstar(:)=0.
    362362
    363363c        read startfi
     
    747747          DO ig=1, ngridmx
    748748             IF (zh(ig,1) .lt. tsurf(ig)) THEN
    749                wmax_th(ig)=1.
     749               wstar(ig)=1.
    750750               hfmax_th(ig)=0.2
    751751             ELSE
    752                wmax_th(ig)=0.
     752               wstar(ig)=0.
    753753               hfmax_th(ig)=0.
    754754             ENDIF     
     
    768768     $        zdum1,zdum2,zdh,pdq,zflubid,
    769769     $        zdudif,zdvdif,zdhdif,zdtsdif,q2,
    770      &        zdqdif,zdqsdif,wmax_th,zcdv,zcdh,hfmax_th)
     770     &        zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th)
    771771
    772772#ifdef MESOSCALE
     
    829829     $ pplay,pplev,pphi,zpopsk,
    830830     $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,zmax_th,
    831      $ dtke_th,hfmax_th,wmax_th)
     831     $ dtke_th,hfmax_th,wstar)
    832832 
    833833         DO l=1,nlayer
     
    858858        else   !of if calltherm
    859859        lmax_th(:)=0
    860         wmax_th(:)=0.
     860        wstar(:)=0.
    861861        hfmax_th(:)=0.
    862862        lmax_th_out(:)=0.
     
    18121812
    18131813         call pbl_parameters(ngrid,nlayer,z0,
    1814      & g,zzlay,zu,zv,wmax_th,hfmax_th,zmax_th,tsurf,zh,z_out,
    1815      & Teta_out,u_out,ustar,tstar,wstar,L_mo,vhf,vvv)
     1814     & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out,
     1815     & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv)
    18161816
    18171817         else
     
    18511851     &              'maximum TH heat flux','K.m/s',
    18521852     &                         2,hfmax_th)
    1853         call WRITEDIAGFI(ngridmx,'wmax_th',
     1853        call WRITEDIAGFI(ngridmx,'wstar',
    18541854     &              'maximum TH vertical velocity','m/s',
    1855      &                         2,wmax_th)
     1855     &                         2,wstar)
    18561856
    18571857         endif
     
    19051905
    19061906         call pbl_parameters(ngrid,nlayer,z0,
    1907      & g,zzlay,zu,zv,wmax_th,hfmax_th,zmax_th,tsurf,zh,z_out,
    1908      & Teta_out,u_out,ustar,tstar,wstar,L_mo,vhf,vvv)
     1907     & g,zzlay,zu,zv,wstar,hfmax_th,zmax_th,tsurf,zh,z_out,
     1908     & Teta_out,u_out,ustar,tstar,wstarpbl,L_mo,vhf,vvv)
    19091909
    19101910         else
     
    19271927     &              'maximum TH heat flux','K.m/s',
    19281928     &                         0,hfmax_th)
    1929         call WRITEDIAGFI(ngridmx,'wmax_th',
     1929        call WRITEDIAGFI(ngridmx,'wstar',
    19301930     &              'maximum TH vertical velocity','m/s',
    1931      &                         0,wmax_th)
     1931     &                         0,wstar)
    19321932
    19331933         co2col(:)=0.
  • trunk/LMDZ.MARS/libf/phymars/vdif_cd.F

    r496 r499  
    11      SUBROUTINE vdif_cd(ngrid,nlay,pz0,
    2      &           pg,pz,pu,pv,wmax,pts,ph,pcdv,pcdh)
     2     &           pg,pz,pu,pv,wstar,pts,ph,pcdv,pcdh)
    33      IMPLICIT NONE
    44c=======================================================================
     
    4646      REAL, INTENT(IN) :: pu(ngrid,nlay),pv(ngrid,nlay)
    4747      REAL, INTENT(IN) :: pts(ngrid),ph(ngrid,nlay)
    48       REAL, INTENT(IN) :: wmax(ngrid)
     48      REAL, INTENT(IN) :: wstar(ngrid)
    4949      REAL, INTENT(OUT) :: pcdv(ngrid),pcdh(ngrid) ! momentum and heat drag coefficient
    5050
     
    146146c Richardson number formulation proposed by D.E. England et al. (1995)
    147147
    148 !         zu2=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),0.25*wmax(ig)**2)
     148!         zu2=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),0.25*wstar(ig)**2)
    149149!         zu2=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1)
    150          zu2(ig)=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),wmax(ig)**2)
    151 !       zu2(ig)=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (0.5*wmax(ig))**2
    152 
    153                ! we add the wmax to simulate
     150         zu2(ig)=MAX(pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1),             &
     151     &      (0.3*wstar(ig))**2)
     152!       zu2(ig)=pu(ig,1)*pu(ig,1) + pv(ig,1)*pv(ig,1) + (0.5*wstar(ig))**2
     153
     154               ! we add the wstar to simulate
    154155               ! bulk Ri changes due to subgrid wind feeding the thermals
    155156
  • trunk/LMDZ.MARS/libf/phymars/vdifc.F

    r496 r499  
    55     $                pdufi,pdvfi,pdhfi,pdqfi,pfluxsrf,
    66     $                pdudif,pdvdif,pdhdif,pdtsrf,pq2,
    7      $                pdqdif,pdqsdif,wmax,zcdv_true,zcdh_true,hfmax)
     7     $                pdqdif,pdqsdif,wstar,zcdv_true,zcdh_true,hfmax)
    88      IMPLICIT NONE
    99
     
    6060c    Argument added to account for subgrid gustiness :
    6161
    62       REAL wmax(ngridmx), hfmax(ngridmx)
     62      REAL wstar(ngridmx), hfmax(ngridmx), zi(ngridmx)
    6363
    6464c    Traceurs :
     
    313313c       ---------------------
    314314
    315       CALL vdif_cd(ngrid,nlay,pz0,g,pzlay,pu,pv,wmax,ptsrf,ph
     315      CALL vdif_cd(ngrid,nlay,pz0,g,pzlay,pu,pv,wstar,ptsrf,ph
    316316     &             ,zcdv_true,zcdh_true)
    317317
     
    319319
    320320        IF (callrichsl) THEN
    321        zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+(6.*hfmax(:))**2)     ! subgrid gustiness added by quadratic interpolation with a coeff beta
    322        zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+(10.*hfmax(:))**2)     ! LES comparisons. This parameter is linked to the thermals settings)
    323 
    324 !       zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+(0.7*wmax(:))**2)     ! subgrid gustiness added by quadratic interpolation with a coeff beta
    325 !       zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+(1.2*wmax(:))**2)     ! LES comparisons. This parameter is linked to the thermals settings)
    326 
    327         ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+(6.*hfmax(:))**2)
     321       zcdv(:)=zcdv_true(:)*sqrt(zu2(:)+
     322     &  (14.75*sqrt(hfmax(:)) - 10.*hfmax(:) + 1.7*hfmax(:)**2)**2)     ! subgrid gustiness added by quadratic interpolation with a coeff beta
     323       zcdh(:)=zcdh_true(:)*sqrt(zu2(:)+
     324     &  (20.6*hfmax(:) - 22.8*hfmax(:)**2 + 9.*hfmax(:)**4)**2)     ! LES comparisons. This parameter is linked to the thermals settings)
     325
     326        ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+
     327     &  (14.75*sqrt(hfmax(:)) - 10.*hfmax(:) + 1.7*hfmax(:)**2)**2)
    328328        tst(:)=(ph(:,1)-ptsrf(:))*zcdh(:)/ust(:)
    329 !        ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:)+(0.7*wmax(:))**2)
    330 !        tst(:)=(ph(:,1)-ptsrf(:))*zcdh(:)/ust(:)
    331329!        ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:))
    332330!        tst(:)=(ph(:,1)-ptsrf(:))*zcdh_true(:)/sqrt(zcdv_true(:))
     
    334332        zcdv(:)=zcdv_true(:)*sqrt(zu2(:))     ! 1 / bulk aerodynamic momentum conductance
    335333        zcdh(:)=zcdh_true(:)*sqrt(zu2(:))     ! 1 / bulk aerodynamic heat conductance
    336 !        ust(:)=sqrt(zcdv_true(:))*sqrt(zu2(:))
    337 !        tst(:)=(ph(:,1)-ptsrf(:))*zcdh(:)/ust(:)
    338334        ENDIF
    339335
Note: See TracChangeset for help on using the changeset viewer.