Changeset 267 for trunk


Ignore:
Timestamp:
Aug 8, 2011, 2:35:47 PM (14 years ago)
Author:
acolaitis
Message:

--- AC 03/08/2011 ---
M 265 libf/phymars/physiq.F
<> Added a PBL section for outputs, with a call to SL outputs via surflayer_interpol and thermals outputs

A 0 libf/phymars/surflayer_interpol.F
<> New subroutine to interpolate horizontal velocity norm and potential temperature in the surface layer.

THIS ROUTINE IS NOT VALIDATED YET. IT IS TURNED OFF BY DEFAULT AND IS HERE FOR DEVELOPMENT PURPOSES ONLY FOR NOW.

M 265 libf/phymars/vdif_cd.F
<> Important modification to the Reynolds formula : due to a confusion of symbols used in the litterature, a wrong simplification of

numerical values had been implicitely done... It is now corrected and yields better results for the mixed layer temperature.

M 265 libf/phymars/vdifc.F
<> Cosmetic modif (added comment for more clarity)


Location:
trunk/LMDZ.MARS
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r256 r267  
    847847- vdifc.F Now takes into account sub-grid gustiness, evaluated from thermals activity (it's proxy being the maximum vertical velocity)
    848848- Minor modification in meso_inc_les.F: u* is now taken from the new vdifc and not recomputed from a simple law
     849== 08/08/2011 == AC
     850- Formula correction for the Reynolds in vdif_cd : will affect the thermal roughness length. Results obtained with the precedent formula (previous commit) probably underestimate by about 1K the temperature in the mixing layer.
     851- Added a new subroutine to libf/phymars called surflayer_interpol.F. This routine can be called as a diagnostic for interpolation of horizontal velocity norm and temperature in the surface layer, in 1D or 3D. The output height is controlled by a parameter z_out, to be set in physiq.F. This might be later added to a .def file. z_out is set to 0. by default, resulting in no call to this subroutine.
  • trunk/LMDZ.MARS/libf/phymars/physiq.F

    r263 r267  
    318318      REAL time_phys
    319319
    320 c Variables from thermal
     320c Variables for PBL
    321321
    322322      REAL lmax_th_out(ngridmx),zmax_th(ngridmx)
    323323      REAL, SAVE :: wmax_th(ngridmx)
    324       REAL, SAVE :: hfmax_th(ngridmx)  !! AS: pourquoi en save ?
     324      REAL hfmax_th(ngridmx)
    325325      REAL pdu_th(ngridmx,nlayermx),pdv_th(ngridmx,nlayermx)
    326326      REAL pdt_th(ngridmx,nlayermx),pdq_th(ngridmx,nlayermx,nqmx)
     
    328328      REAL dtke_th(ngridmx,nlayermx+1)
    329329      REAL zcdv(ngridmx)
     330      REAL Teta_out(ngridmx),u_out(ngridmx)  ! Interpolated teta and u at z_out
     331      REAL z_out                          ! height of interpolation between z0 and z1
     332      REAL ustar(ngridmx),tstar(ngridmx)  ! friction velocity and friction potential temp
     333      REAL zu2(ngridmx)
    330334c=======================================================================
    331335
     
    15531557
    15541558c        ----------------------------------------------------------
     1559c        ----------------------------------------------------------
     1560c        PBL OUTPUS
     1561c        ----------------------------------------------------------
     1562c        ----------------------------------------------------------
     1563
     1564
     1565c        ----------------------------------------------------------
     1566c        Outputs of surface layer
     1567c        ----------------------------------------------------------
     1568
     1569
     1570         z_out=0.
     1571         if (calltherm .and. (z_out .gt. 0.)) then
     1572         call surflayer_interpol(ngrid,nlayer,z0,g,zzlay,zu,zv,wmax_th
     1573     &              ,tsurf,zt(:,:)*(zplay(:,:)/zplev(:,:))**rcp
     1574     &              ,z_out,Teta_out,u_out,ustar,tstar)
     1575
     1576         zu2(:)=sqrt(zu(:,1)*zu(:,1)+zv(:,1)*zv(:,1))
     1577         call WRITEDIAGFI(ngridmx,'sqrt(zu2)',
     1578     &              'horizontal velocity norm','m/s',
     1579     &                         2,zu2)
     1580
     1581         call WRITEDIAGFI(ngridmx,'Teta_out',
     1582     &              'potential temperature at z_out','K',
     1583     &                         2,Teta_out)
     1584         call WRITEDIAGFI(ngridmx,'u_out',
     1585     &              'horizontal velocity norm at z_out','m/s',
     1586     &                         2,u_out)
     1587         call WRITEDIAGFI(ngridmx,'u*',
     1588     &              'friction velocity','m/s',
     1589     &                         2,ustar)
     1590         call WRITEDIAGFI(ngridmx,'teta*',
     1591     &              'friction potential temperature','K',
     1592     &                         2,tstar)
     1593         else
     1594           if((.not. calltherm).and.(z_out .gt. 0.)) then
     1595            print*, 'WARNING : no interpolation in surface-layer :'
     1596            print*, 'Outputing surface-layer quantities without thermals
     1597     & does not make sense'
     1598           endif
     1599         endif
     1600
     1601c        ----------------------------------------------------------
    15551602c        Outputs of thermals
    15561603c        ----------------------------------------------------------
     
    15891636
    15901637c        ----------------------------------------------------------
     1638c        ----------------------------------------------------------
     1639c        END OF PBL OUTPUS
     1640c        ----------------------------------------------------------
     1641c        ----------------------------------------------------------
     1642
     1643
     1644c        ----------------------------------------------------------
    15911645c        Output in netcdf file "diagsoil.nc" for subterranean
    15921646c          variables (output every "ecritphy", as for writediagfi)
  • trunk/LMDZ.MARS/libf/phymars/vdif_cd.F

    r265 r267  
    5252      INTEGER ig
    5353
    54       REAL karman
     54      REAL karman,nu    ! Von Karman constant and fluid kinematic viscosity
    5555      LOGICAL firstcal
    56       DATA karman/.41/
     56      DATA karman,nu/.41,0.001/
    5757      DATA firstcal/.true./
    58       SAVE karman
     58      SAVE karman,nu
    5959
    6060c    Local(2):
     
    179179      endif
    180180
    181        reynolds(ig)=sqrt(fm(ig))*sqrt(pu(ig,1)**2 + pv(ig,1)**2)*pz0(ig)
    182      &                   /(log(z1z0))
     181       reynolds(ig)=karman*sqrt(fm(ig))*sqrt(pu(ig,1)**2 + pv(ig,1)**2)
     182     &       *pz0(ig)/(log(z1z0)*nu)
    183183       pz0tcomp(ig)=pz0(ig)*exp(-karman*7.3*
    184184     &              (reynolds(ig)**0.25)*(prandtl(ig)**0.5))
  • trunk/LMDZ.MARS/libf/phymars/vdifc.F

    r265 r267  
    238238
    239239        zu2=pu(ig,1)*pu(ig,1)+pv(ig,1)*pv(ig,1)
    240      &             +(1.2*wmax(ig))**2
    241 
     240     &             +(1.2*wmax(ig))**2        !subgrid gustiness is used to enhance surface flux only, and not u*,t* computations
     241       
    242242        zcdv(ig)=zcdv_true(ig)*sqrt(zu2)
    243243        zcdh(ig)=zcdh_true(ig)*sqrt(zu2)
Note: See TracChangeset for help on using the changeset viewer.