Ignore:
Timestamp:
Jun 4, 2013, 12:11:38 PM (11 years ago)
Author:
Laurent Fairhead
Message:

New version of Mellor et Yamada pronostic TKE

... based on energy transfer from the mean state.

The new version is yamada_c.
It must be called after vertical diffusion rather than just before
since the source terms u_z w'u' + v_z w'theta' and g/theta w'theta'
are diagnosed from the vertical diffusion (as energy loss from the mean
state) rather than computed as K (u_z2+v_z2) or g/\theta K theta_z
(where _z means vertical derivative).
The call to this version is controled by iflag_pbl.

iflag_pbl = 20 : with TKE computed at interfaces between layers
iflag_pbl = 25 : with TKE computed within the layer
In both cases, the dissipation of turbulence is translated into heat, and
passed to the physics as dtdiss (temperature tendency due to dissipation

of TKE).

The diffusion coefficient being computed after dissipation, it must be
kept for diffusion at the next time step, and thus be stored in the
restartphy file.
This coefficient must be computed and stored for each sub-surface.

A new way of managing subsurface variables is introduced.
For arrays of the form X(:,nbsrf) are extented to X(:,nbsrf+1), where
is_ave=nbsrf+1, is an additional sub-surface which contains the averaged values.

coef_diff_turb_mod.F90 : change of flags.
ener_conserv.F90 : energy conservation must not be applied in those

cases

indicesol.h : definition of is_ave
pbl_surface_mod.F90 : call to yamada_c and changes in the management of

coefh/coefm

physiq.F : Change in the initialisation of pmflxr/s and

modified calls to pbl_surface_mod (introduction
of dtdiss, initialisation
of pbl_tke and coefh in 1D).

phys_local_var_mod.F90 : declaration of d_t_diss
phys_output_mod.F90 : new outputs (bils_tke and bils_diss) and

coefh->coefh(:,:,is_ave)

phys_state_var_mod.F90 : modified declaration for coefh and coefm

(nbsrf -> nbsrf+1)

FH

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/physiq.F

    r1753 r1761  
    655655      real w0(klon)                                          ! Vitesse des thermiques au LCL
    656656      real w_conv(klon)                                      ! Vitesse verticale de grande \'echelle au LCL
     657      real tke0(klon,klev+1)                              ! TKE au début du pas de temps
    657658      real therm_tke_max0(klon)                              ! TKE dans les thermiques au LCL
    658659      real env_tke_max0(klon)                                ! TKE dans l'environnement au LCL
     
    694695cAA
    695696cAA  Pour phytrac
    696 cAA
    697       REAL coefh(klon,klev)     ! coef d'echange pour phytrac, valable pour 2<=k<=klev
    698       REAL coefm(klon,klev)     ! coef d'echange pour U, V
    699697      REAL u1(klon)             ! vents dans la premiere couche U
    700698      REAL v1(klon)             ! vents dans la premiere couche V
     
    12881286          pbase=0
    12891287cIM 180608
    1290 c         pmflxr=0.
    1291 c         pmflxs=0.
    12921288
    12931289        itau_con=0
     
    13961392
    13971393         CALL phyetat0 ("startphy.nc",clesphy0,tabcntr0)
     1394         IF (klon_glo==1) THEN
     1395         coefh=0. ; coefm=0. ; pbl_tke=0.
     1396         coefh(:,2,:)=1.e-2 ; coefm(:,2,:)=1.e-2 ; pbl_tke(:,2,:)=1.e-2
     1397         PRINT*,'FH WARNING : lignes a supprimer'
     1398         ENDIF
    13981399cIM begin
    13991400          print*,'physiq: clwcon rnebcon ratqs',clwcon(1,1),rnebcon(1,1)
     
    17701771      d1a(:,:)=0.
    17711772      dam(:,:)=0.
     1773          pmflxr=0.
     1774          pmflxs=0.
    17721775! RomP <<<
    17731776
     
    17851788      ENDDO
    17861789      ENDDO
     1790      tke0(:,:)=pbl_tke(:,:,is_ave)
    17871791      IF (nqtot.GE.3) THEN
    17881792      DO iq = 3, nqtot
     
    20732077     s     albsol1,   albsol2,   sens,    evap, 
    20742078     s     zxtsol,    zxfluxlat, zt2m,    qsat2m,
    2075      s     d_t_vdf,   d_q_vdf,   d_u_vdf, d_v_vdf,
     2079     s     d_t_vdf,   d_q_vdf,   d_u_vdf, d_v_vdf, d_t_diss,
    20762080     s     coefh,     coefm,     slab_wfbils,               
    20772081     d     qsol,      zq2m,      s_pblh,  s_lcl,
     
    20892093!-----------------------------------------------------------------------------------------
    20902094! ajout des tendances de la diffusion turbulente
    2091       CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf')
     2095      CALL add_phys_tend
     2096     s     (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,'vdf')
    20922097!-----------------------------------------------------------------------------------------
    20932098
     
    31753180     $                          paprs,
    31763181     $                          pplay,
    3177      $                          coefh,
     3182     $                          coefh(:,:,is_ave),
    31783183     $                          pphi,
    31793184     $                          t_seri,
     
    36963701     I     paprs,    pplay,     pmfu,     pmfd,
    36973702     I     pen_u,    pde_u,     pen_d,    pde_d,
    3698      I     cdragh,   coefh,     fm_therm, entr_therm,
     3703     I     cdragh,   coefh(:,:,is_ave),     fm_therm, entr_therm,
    36993704     I     u1,       v1,        ftsol,    pctsrf,
    37003705     I     ustar,     u10m,      v10m,
     
    37233728     I                   t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
    37243729     I                   fm_therm,entr_therm,
    3725      I                   cdragh,coefh,u1,v1,ftsol,pctsrf,
     3730     I                   cdragh,coefh(:,:,is_ave),u1,v1,ftsol,pctsrf,
    37263731     I                   frac_impa, frac_nucl,
    37273732     I                   pphis,airephy,dtime,itap,
     
    37583763      forall (k=1: llm) exner(:, k) = (pplay(:, k)/paprs(:,1))**RKAPPA
    37593764      CALL ener_conserv(klon,klev,pdtphys,u,v,t,qx(:,:,ivap),
    3760      s        u_seri,v_seri,t_seri,q_seri,
     3765     s        u_seri,v_seri,t_seri,q_seri,pbl_tke(:,:,is_ave)-tke0(:,:),
    37613766     s        zmasse,exner,d_t_ec)
    37623767      t_seri(:,:)=t_seri(:,:)+d_t_ec(:,:)
     
    39633968
    39643969
     3970
    39653971c=============================================================
    39663972! Separation entre thermiques et non thermiques dans les sorties
     
    39913997      endif
    39923998
    3993  
    39943999#include "phys_output_write.h"
    39954000
     
    40704075         ENDIF !if callstats
    40714076     
    4072 
    40734077      IF (lafin) THEN
    40744078         itau_phy = itau_phy + itap
Note: See TracChangeset for help on using the changeset viewer.