Ignore:
Timestamp:
Sep 27, 2016, 6:02:46 PM (8 years ago)
Author:
jyg
Message:

Some cleaning in the wake routines: (i) the wake
number per unit area (wdens) is now a state
variable (held constant for the time being);
(ii) wake state variable changes are computed in
subroutine 'physiq' if iflag_wake_tend=1 (it is
computed within wake routines if
iflag_wake_tend=0, consistent with earlier
versions); (iii) the new routine 'add_wake_tend'
adds tendencies to wake state variables; (iv)
tendencies due to various processes (pbl, wakes,
thermals) are named and added separately.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90

    r2607 r2635  
    253253      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp
    254254!$OMP THREADPRIVATE(sens, flwp, fiwp)
    255       REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils
    256 !$OMP THREADPRIVATE(ale_wake, alp_wake, bils)
     255!!
     256!!         Wake variables
     257      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: ale_wake, alp_wake
     258!$OMP THREADPRIVATE(ale_wake, alp_wake)           
     259      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: wake_h
     260!$OMP THREADPRIVATE(wake_h)                       
     261    REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)            :: wake_omg
     262!$OMP THREADPRIVATE(wake_omg)                     
     263    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_wk, d_deltaq_wk
     264!$OMP THREADPRIVATE(d_deltat_wk, d_deltaq_wk)
     265      REAL,ALLOCATABLE,SAVE,DIMENSION(:)            :: d_s_wk, d_dens_wk
     266!$OMP THREADPRIVATE(d_s_wk, d_dens_wk)
     267    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_wk_gw, d_deltaq_wk_gw
     268!$OMP THREADPRIVATE(d_deltat_wk_gw, d_deltaq_wk_gw)
     269    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_vdf, d_deltaq_vdf
     270!$OMP THREADPRIVATE(d_deltat_vdf, d_deltaq_vdf)
     271!!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)          :: d_s_vdf, d_dens_vdf
     272!!!OMP THREADPRIVATE(d_s_vdf, d_dens_vdf)
     273    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:)          :: d_deltat_the, d_deltaq_the
     274!$OMP THREADPRIVATE(d_deltat_the, d_deltaq_the)
     275!!!      REAL,ALLOCATABLE,SAVE,DIMENSION(:)          :: d_s_the, d_dens_the
     276!!!OMP THREADPRIVATE(d_s_the, d_dens_the)
     277      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)           :: d_deltat_ajs_cv, d_deltaq_ajs_cv
     278!$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)                       
     279!!         End of Wake variables
     280!!
     281      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: bils
     282!$OMP THREADPRIVATE(bils)
    257283      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh
    258284!$OMP THREADPRIVATE(cdragm, cdragh)
     
    312338      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dqvdf_x, dqvdf_w
    313339!$OMP THREADPRIVATE(dqvdf_x, dqvdf_w)
    314       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: undi_tke, wake_tke
    315 !$OMP THREADPRIVATE(undi_tke, wake_tke)
    316340! Variables supplémentaires dans physiq.F relative au splitting de la surface
    317341      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pbl_tke_input
     
    330354!>jyg+nrlmd
    331355  !
    332       REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m
    333 !$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m)
     356      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wbeff, zmax_th, zq2m, zt2m
     357!$OMP THREADPRIVATE(wbeff, zmax_th, zq2m, zt2m)
    334358      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zt2m_min_mon, zt2m_max_mon
    335359!$OMP THREADPRIVATE(zt2m_min_mon, zt2m_max_mon)
     
    365389      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq_pi, ref_ice_pi
    366390!$OMP THREADPRIVATE(ref_liq_pi, ref_ice_pi)
    367       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh
    368 !$OMP THREADPRIVATE(wake_omg, zx_rh)
     391      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zx_rh
     392!$OMP THREADPRIVATE(zx_rh)
    369393      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca
    370394!$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca)
     
    530554      ALLOCATE(tal1(klon), pal1(klon), pab1(klon), pab2(klon))
    531555      ALLOCATE(ptstar(klon),pt0(klon),slp(klon))
    532       ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon))
     556!!
     557!!          Wake variables
     558      ALLOCATE(ale_wake(klon), alp_wake(klon))
     559      ALLOCATE(wake_h(klon))
     560      ALLOCATE(wake_omg(klon, klev))
     561      ALLOCATE(d_deltat_wk(klon, klev), d_deltaq_wk(klon, klev))
     562      ALLOCATE(d_s_wk(klon), d_dens_wk(klon))
     563      ALLOCATE(d_deltat_wk_gw(klon, klev), d_deltaq_wk_gw(klon, klev))
     564      ALLOCATE(d_deltat_vdf(klon, klev), d_deltaq_vdf(klon, klev))
     565!!      ALLOCATE( d_s_vdf(klon), d_dens_vdf(klon))
     566      ALLOCATE(d_deltat_the(klon, klev), d_deltaq_the(klon, klev))
     567!!      ALLOCATE( d_s_the(klon), d_dens_the(klon))
     568      ALLOCATE(d_deltat_ajs_cv(klon, klev), d_deltaq_ajs_cv(klon, klev))
     569!!         End of wake variables
     570!!
     571      ALLOCATE(bils(klon))
    533572      ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
    534573      ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon))
     
    561600      ALLOCATE(dtvdf_x(klon,klev), dtvdf_w(klon,klev))
    562601      ALLOCATE(dqvdf_x(klon,klev), dqvdf_w(klon,klev))
    563       ALLOCATE(undi_tke(klon,klev), wake_tke(klon,klev))
    564602      ALLOCATE(pbl_tke_input(klon,klev+1,nbsrf))
    565603      ALLOCATE(t_therm(klon,klev), q_therm(klon,klev),u_therm(klon,klev), v_therm(klon,klev))
     
    568606      ALLOCATE(kh(klon), kh_x(klon), kh_w(klon))
    569607!
    570       ALLOCATE(wake_h(klon), wbeff(klon), zmax_th(klon))
     608      ALLOCATE(wbeff(klon), zmax_th(klon))
    571609      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
    572610      ALLOCATE(zt2m_min_mon(klon), zt2m_max_mon(klon))
     
    589627      ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
    590628      ALLOCATE(ref_liq_pi(klon, klev), ref_ice_pi(klon, klev))
    591       ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev))
     629      ALLOCATE(zphi(klon, klev), zx_rh(klon, klev))
    592630      ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
    593631
     
    741779      DEALLOCATE(tal1, pal1, pab1, pab2)
    742780      DEALLOCATE(ptstar, pt0, slp)
    743       DEALLOCATE(ale_wake, alp_wake, bils)
     781!
     782      DEALLOCATE(ale_wake, alp_wake)
     783      DEALLOCATE(wake_h)
     784      DEALLOCATE(wake_omg)
     785      DEALLOCATE(d_deltat_wk, d_deltaq_wk)
     786      DEALLOCATE(d_s_wk, d_dens_wk)
     787      DEALLOCATE(d_deltat_wk_gw, d_deltaq_wk_gw)
     788      DEALLOCATE(d_deltat_vdf, d_deltaq_vdf)
     789!!      DEALLOCATE( d_s_vdf, d_dens_vdf)
     790      DEALLOCATE(d_deltat_the, d_deltaq_the)
     791!!      DEALLOCATE( d_s_the, d_dens_the)
     792      DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
     793!
     794      DEALLOCATE(bils)
    744795      DEALLOCATE(cdragm, cdragh, cldh, cldl)
    745796      DEALLOCATE(cldm, cldq, cldt, qsat2m)
     
    770821      DEALLOCATE(dtvdf_x, dtvdf_w)
    771822      DEALLOCATE(dqvdf_x, dqvdf_w)
    772       DEALLOCATE(undi_tke, wake_tke)
    773823      DEALLOCATE(pbl_tke_input)
    774824      DEALLOCATE(t_therm, q_therm, u_therm, v_therm)
     
    777827      DEALLOCATE(kh, kh_x, kh_w)
    778828!
    779       DEALLOCATE(wake_h, wbeff, zmax_th)
     829      DEALLOCATE(wbeff, zmax_th)
    780830      DEALLOCATE(zq2m, zt2m, weak_inversion)
    781831      DEALLOCATE(zt2m_min_mon, zt2m_max_mon)
     
    798848      DEALLOCATE(ref_liq, ref_ice, theta)
    799849      DEALLOCATE(ref_liq_pi, ref_ice_pi)
    800       DEALLOCATE(zphi, wake_omg, zx_rh)
     850      DEALLOCATE(zphi, zx_rh)
    801851      DEALLOCATE(pmfd, pmfu)
    802852
Note: See TracChangeset for help on using the changeset viewer.