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/phys_output_write.h

    r1753 r1761  
    360360       ENDIF
    361361
     362       IF (o_bils_diss%flag(iff)<=lev_files(iff)) THEN
     363      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
     364     $o_bils_diss%name,itau_w,bils_diss)
     365       ENDIF
     366
    362367       IF (o_bils_ec%flag(iff)<=lev_files(iff)) THEN
    363368      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
    364369     $o_bils_ec%name,itau_w,bils_ec)
     370       ENDIF
     371
     372       IF (o_bils_tke%flag(iff)<=lev_files(iff)) THEN
     373      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
     374     $o_bils_tke%name,itau_w,bils_tke)
    365375       ENDIF
    366376
     
    13331343
    13341344!====MS forcing diagnostics
    1335         if (new_aod) then             
     1345        if (new_aod) then
    13361346        IF (o_swtoaas_nat%flag(iff)<=lev_files(iff)) THEN
    13371347        CALL histwrite_phy(nid_files(iff),clef_stations(iff),
     
    17151725       IF (o_kz%flag(iff)<=lev_files(iff)) THEN
    17161726      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
    1717      $o_kz%name,itau_w,coefh)
     1727     $o_kz%name,itau_w,coefh(:,:,is_ave))
    17181728       ENDIF
    17191729
     
    17211731       IF (o_kz_max%flag(iff)<=lev_files(iff)) THEN
    17221732      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
    1723      $o_kz_max%name,itau_w,coefh)
     1733     $o_kz_max%name,itau_w,coefh(:,:,is_ave))
    17241734       ENDIF
    17251735      ENDIF
     
    19081918       ENDIF
    19091919
     1920       IF (o_dtdis%flag(iff)<=lev_files(iff)) THEN
     1921      zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
     1922      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
     1923     $o_dtdis%name,itau_w,zx_tmp_fi3d)
     1924       ENDIF
     1925
    19101926       IF (o_dqvdf%flag(iff)<=lev_files(iff)) THEN
    19111927      zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
     
    21912207       IF (o_evu%flag(iff)<=lev_files(iff)) THEN
    21922208      CALL histwrite_phy(nid_files(iff),clef_stations(iff),
    2193      $o_evu%name,itau_w,coefm)
     2209     $o_evu%name,itau_w,coefm(:,:,is_ave))
    21942210       ENDIF
    21952211
Note: See TracChangeset for help on using the changeset viewer.