Ignore:
Timestamp:
Mar 28, 2024, 6:06:40 PM (8 months ago)
Author:
evignon
Message:

extraction plus propre de la dissipation de TKE

Location:
LMDZ6/trunk/libf/phylmdiso
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmdiso/pbl_surface_mod.F90

    r4745 r4881  
    2424  USE climb_wind_mod,      ONLY : climb_wind_down, climb_wind_up
    2525  USE coef_diff_turb_mod,  ONLY : coef_diff_turb
    26   USE lmdz_call_atke,      ONLY :  call_atke
     26  USE lmdz_call_atke,      ONLY : call_atke
    2727  USE ioipsl_getin_p_mod,  ONLY : getin_p
    2828  USE cdrag_mod
     
    308308!jyg<
    309309!!       zxfluxt,   zxfluxq,   q2m,      flux_q, tke,   &
    310        zxfluxt,   zxfluxq, zxfluxqbs,   q2m, flux_q, flux_qbs, tke_x, &
     310       zxfluxt,   zxfluxq, zxfluxqbs,   q2m, flux_q, flux_qbs, tke_x, eps_x, &
    311311!>jyg
    312312!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
     
    506506! Output variables
    507507!****************************************************************************************
     508    REAL, DIMENSION(klon,klev+1,nbsrf+1), INTENT(OUT)   :: eps_x      ! TKE dissipation rate
     509
    508510    REAL, DIMENSION(klon),        INTENT(OUT)       :: cdragh     ! drag coefficient for T and Q
    509511    REAL, DIMENSION(klon),        INTENT(OUT)       :: cdragm     ! drag coefficient for wind
     
    765767    REAL, DIMENSION(klon,klev)         :: delp
    766768    REAL, DIMENSION(klon,klev+1)       :: ypaprs
    767     REAL, DIMENSION(klon,klev+1)       :: ytke
     769    REAL, DIMENSION(klon,klev+1)       :: ytke, yeps
    768770    REAL, DIMENSION(klon,nsoilmx)      :: ytsoil
    769771!FC
     
    785787    REAL, DIMENSION(klon)              :: ywake_s, ywake_cstar, ywake_dens
    786788!!!
    787     REAL, DIMENSION(klon,klev+1)       :: ytke_x, ytke_w
     789    REAL, DIMENSION(klon,klev+1)       :: ytke_x, ytke_w, yeps_x, yeps_w
    788790    REAL, DIMENSION(klon,klev+1)       :: ywake_dltke
    789791    REAL, DIMENSION(klon,klev)         :: yu_x, yv_x, yu_w, yv_w
     
    12611263!!    tke(:,:,is_ave)=0.
    12621264    tke_x(:,:,is_ave)=0.
     1265    eps_x(:,:,is_ave)=0.
    12631266
    12641267    wake_dltke(:,:,is_ave)=0.
     
    12951298
    12961299    ytke=0.
     1300    yeps=0.
    12971301    yri0(:)=0.
    12981302!FC
     
    13081312!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
    13091313    ytke_x=0.     ; ytke_w=0.        ; ywake_dltke=0.
     1314    yeps_x=0.     ; yeps_w=0.
    13101315    y_d_t_x=0.    ; y_d_t_w=0.       ; y_d_q_x=0.      ; y_d_q_w=0.
    13111316!!    d_t_w=0.      ; d_q_w=0.         
     
    19791984        CALL call_atke(dtime,knon,klev,ycdragm(1:knon), ycdragh(1:knon),yus0(1:knon),yvs0(1:knon),yts(1:knon), &
    19801985                  yu(1:knon,:),yv(1:knon,:),yt(1:knon,:),yq(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:),       &
    1981                   ytke(1:knon,:),ycoefm(1:knon,:), ycoefh(1:knon,:))
     1986                  ytke(1:knon,:),yeps(1:knon,:), ycoefm(1:knon,:), ycoefh(1:knon,:))
    19821987
    19831988        ELSE
     
    19851990        CALL coef_diff_turb(dtime, nsrf, knon, ni,  &
    19861991            ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, &
    1987             ycoefm, ycoefh, ytke, y_treedrg)
     1992            ycoefm, ycoefh, ytke, yeps, y_treedrg)
    19881993!            ycoefm, ycoefh, ytke)
    19891994!FC y_treedrg ajoute
     
    20232028        CALL call_atke(dtime,knon,klev,ycdragm_x(1:knon),ycdragh_x(1:knon),yus0(1:knon),yvs0(1:knon),yts_x(1:knon),    &
    20242029                       yu_x(1:knon,:),yv_x(1:knon,:),yt_x(1:knon,:),yq_x(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:),  &
    2025                        ytke_x(1:knon,:),ycoefm_x(1:knon,:), ycoefh_x(1:knon,:))
     2030                       ytke_x(1:knon,:),yeps_x(1:knon,:),ycoefm_x(1:knon,:), ycoefh_x(1:knon,:))
    20262031
    20272032        ELSE
     
    20292034        CALL coef_diff_turb(dtime, nsrf, knon, ni,  &
    20302035            ypaprs, ypplay, yu_x, yv_x, yq_x, yt_x, yts_x, yqsurf_x, ycdragm_x, &
    2031             ycoefm_x, ycoefh_x, ytke_x,y_treedrg)
     2036            ycoefm_x, ycoefh_x, ytke_x,yeps_x,y_treedrg)
    20322037!            ycoefm_x, ycoefh_x, ytke_x)
    20332038!FC doit on le mettre ( on ne l utilise pas si il y a du spliting)
     
    20632068        CALL call_atke(dtime,knon,klev,ycdragm_w(1:knon),ycdragh_w(1:knon),yus0(1:knon),yvs0(1:knon),yts_w(1:knon), &
    20642069                yu_w(1:knon,:),yv_w(1:knon,:),yt_w(1:knon,:),yq_w(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:),      &
    2065                 ytke_w(1:knon,:),ycoefm_w(1:knon,:), ycoefh_w(1:knon,:))
     2070                ytke_w(1:knon,:),yeps_w(1:knon,:),ycoefm_w(1:knon,:),ycoefh_w(1:knon,:))
    20662071
    20672072        ELSE
    2068 
    20692073
    20702074        CALL coef_diff_turb(dtime, nsrf, knon, ni,  &
    20712075            ypaprs, ypplay, yu_w, yv_w, yq_w, yt_w, yts_w, yqsurf_w, ycdragm_w, &
    2072             ycoefm_w, ycoefh_w, ytke_w,y_treedrg)
     2076            ycoefm_w, ycoefh_w, ytke_w,yeps_w,y_treedrg)
    20732077!            ycoefm_w, ycoefh_w, ytke_w)
    20742078       IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN
     
    33323336!!              tke(i,k,is_ave) = tke(i,k,is_ave) + ytke(j,k)*ypct(j)
    33333337              tke_x(i,k,nsrf)    = ytke(j,k)
    3334               tke_x(i,k,is_ave) = tke_x(i,k,is_ave) + ytke(j,k)*ypct(j)
    3335 
     3338              tke_x(i,k,is_ave)  = tke_x(i,k,is_ave) + ytke(j,k)*ypct(j)
     3339              eps_x(i,k,nsrf)    = yeps(j,k)
     3340              eps_x(i,k,is_ave)  = eps_x(i,k,is_ave) + yeps(j,k)*ypct(j)
    33363341!>jyg
    33373342           ENDDO
     
    33473352!!            tke(i,k,is_ave) = tke(i,k,is_ave) + tke(i,k,nsrf)*ypct(j)
    33483353            tke_x(i,k,nsrf)   = ytke_x(j,k)
    3349             tke_x(i,k,is_ave)   = tke_x(i,k,is_ave) + tke_x(i,k,nsrf)*ypct(j)       
     3354            tke_x(i,k,is_ave)   = tke_x(i,k,is_ave) + tke_x(i,k,nsrf)*ypct(j)       
     3355            eps_x(i,k,nsrf)   = yeps_x(j,k)
     3356            eps_x(i,k,is_ave)   = eps_x(i,k,is_ave) + eps_x(i,k,nsrf)*ypct(j)
    33503357            wake_dltke(i,k,is_ave)   = wake_dltke(i,k,is_ave) + wake_dltke(i,k,nsrf)*ypct(j)
    33513358           
  • LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90

    r4844 r4881  
    2222      REAL, SAVE, ALLOCATABLE :: d_rneb_dyn(:,:)
    2323      !$OMP THREADPRIVATE(d_rneb_dyn)
    24       REAL, SAVE, ALLOCATABLE :: l_mixmin(:,:,:),l_mix(:,:,:),tke_dissip(:,:,:),wprime(:,:,:)
    25       !$OMP THREADPRIVATE(l_mixmin, l_mix, tke_dissip,wprime)
     24      REAL, SAVE, ALLOCATABLE :: l_mixmin(:,:,:),l_mix(:,:,:),wprime(:,:,:)
     25      !$OMP THREADPRIVATE(l_mixmin, l_mix, wprime)
     26      REAL, SAVE, ALLOCATABLE :: pbl_eps(:,:,:)
     27      !$OMP THREADPRIVATE(pbl_eps)
    2628      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
    2729      !$OMP THREADPRIVATE(tr_seri)
     
    764766      ALLOCATE(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev), qbs_seri(klon,klev))
    765767      ALLOCATE(u_seri(klon,klev),v_seri(klon,klev))
    766       ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),tke_dissip(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
    767       l_mix(:,:,:)=0.;l_mixmin(:,:,:)=0.;tke_dissip(:,:,:)=0.;wprime(:,:,:)=0. ! doit etre initialse car pas toujours remplis
    768 
     768      ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
     769      l_mix(:,:,:)=0.;l_mixmin(:,:,:)=0.;wprime(:,:,:)=0. ! doit etre initialse car pas toujours remplis
     770      ALLOCATE(pbl_eps(klon,klev+1,nbsrf))     
    769771      ALLOCATE(tr_seri(klon,klev,nbtr))
    770772      ALLOCATE(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
     
    11751177      DEALLOCATE(t_seri,q_seri,ql_seri,qs_seri, qbs_seri)
    11761178      DEALLOCATE(u_seri,v_seri)
    1177       DEALLOCATE(l_mixmin,l_mix, tke_dissip,wprime)
     1179      DEALLOCATE(l_mixmin,l_mix,wprime)
     1180      DEALLOCATE(pbl_eps)
    11781181
    11791182      DEALLOCATE(tr_seri)
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r4844 r4881  
    294294       zxfluxlat_x, zxfluxlat_w, &
    295295       !
    296        pbl_tke_input, tke_dissip, l_mix, wprime,&
     296       pbl_tke_input, pbl_eps, l_mix, wprime,&
    297297       t_therm, q_therm, u_therm, v_therm, &
    298298       cdragh_x, cdragh_w, &
     
    13211321    integer iostat
    13221322
    1323     REAL, dimension(klon,klev+1) :: tke_dissip_ave, l_mix_ave, wprime_ave
     1323    REAL, dimension(klon,klev+1) :: l_mix_ave, wprime_ave
    13241324    REAL zzz
    13251325    !albedo SB >>>
     
    31923192            fluxt,   fluxu,  fluxv, &
    31933193            dsens,     devap,     zxsnow, &
    3194             zxfluxt,   zxfluxq,  zxfluxqbs,  q2m, fluxq, fluxqbs, pbl_tke, &
     3194            zxfluxt,   zxfluxq,  zxfluxqbs,  q2m, fluxq, fluxqbs, pbl_tke, pbl_eps,  &
    31953195                                !nrlmd+jyg<
    31963196            wake_delta_pbl_TKE, &
     
    47564756    ! water distribution
    47574757
    4758     tke_dissip_ave(:,:)=0.
    47594758    l_mix_ave(:,:)=0.
    47604759    wprime_ave(:,:)=0.
     
    47624761    DO nsrf = 1, nbsrf
    47634762       DO i = 1, klon
    4764           tke_dissip_ave(i,:) = tke_dissip_ave(i,:) + tke_dissip(i,:,nsrf)*pctsrf(i,nsrf)
    47654763          l_mix_ave(i,:) = l_mix_ave(i,:) + l_mix(i,:,nsrf)*pctsrf(i,nsrf)
    47664764          wprime_ave(i,:) = wprime_ave(i,:) + wprime(i,:,nsrf)*pctsrf(i,nsrf)
     
    47764774         paprs,pplay,t_seri,q_seri, &
    47774775         qtc_cv, sigt_cv,detrain_cv,fm_cv,fqd,fqcomp,sigd,zqsat, &
    4778          omega,pbl_tke(:,:,is_ave),tke_dissip_ave,l_mix_ave,wprime_ave, &
     4776         omega,pbl_tke(:,:,is_ave),pbl_eps(:,:,is_ave),l_mix_ave,wprime_ave, &
    47794777         t2m,q2m,fm_therm,entr_therm,detr_therm,cell_area, &
    47804778         ratqs,ratqsc,ratqs_inter_)
Note: See TracChangeset for help on using the changeset viewer.