Ignore:
Timestamp:
Sep 20, 2024, 4:45:58 PM (7 hours ago)
Author:
Laurent Fairhead
Message:

Louis d'Alencon modifications:
Il s'agit des modifs permettant de choisir de calculer la variance dans les thermiques par le nouveau modèle (iflag_ratqs = 10) ou de
continuer à calculer cette variance par la param d'Arnaud ce qui fait une version hybride avec variance pronostique dans l'environnement mais
variance diagnostique dans les thermiques (iflag_ratqs = 11). Le iflag_ratqs = 4 version standard continue de faire toutes les variances de façon
diagnostique.

Location:
LMDZ6/trunk/libf/phylmd
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/lmdz_cloudth.F90

    r4910 r5208  
    583583     &           ztv,po,zqta,fraca, &
    584584     &           qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &
    585      &           ratqs,zqs,t, &
     585     &           ratqs,sigma_qtherm,zqs,t, &
    586586     &           cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
    587587
     
    617617      real, dimension(ngrid,klev), intent(in) :: ztla
    618618      real, dimension(ngrid,klev), intent(inout) :: zthl
    619       real, dimension(ngrid,klev), intent(in) :: ratqs
     619      real, dimension(ngrid,klev), intent(in) :: ratqs,sigma_qtherm
    620620      real, dimension(ngrid), intent(in) :: zqs
    621621      real, dimension(ngrid,klev), intent(in) :: t
     
    655655     &           ztv,po,zqta,fraca, &
    656656     &           qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &
    657      &           ratqs,zqs,t, &
     657     &           ratqs,sigma_qtherm,zqs,t, &
    658658     &           cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
    659659      RETURN
     
    810810     &           ztv,po,zqta,fraca, &
    811811     &           qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &
    812      &           ratqs,zqs,t, &
     812     &           ratqs,sigma_qtherm,zqs,t, &
    813813     &           cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
    814814
     
    872872      REAL Tbef,zdelta,qsatbef,zcor
    873873      REAL qlbef 
    874       REAL ratqs(ngrid,klev) ! determine la largeur de distribution de vapeur
     874      REAL ratqs(ngrid,klev),sigma_qtherm(ngrid,klev) ! determine la largeur de distribution de vapeur
    875875      ! Change the width of the PDF used for vertical subgrid scale heterogeneity
    876876      ! (J Jouhaud, JL Dufresne, JB Madeleine)
     
    978978      ENDIF
    979979      sigma1s = sigma1s_fraca + sigma1s_ratqs
    980       IF (iflag_ratqs.eq.11) then
     980      sigma2s=(sigma2s_factor*(((sth-senv)**2)**0.5)/((fraca(ind1,ind2)+0.02)**sigma2s_power))+0.002*zqta(ind1,ind2)
     981      IF (iflag_ratqs.eq.10.or.iflag_ratqs.eq.11) then
    981982         sigma1s = ratqs(ind1,ind2)*po(ind1)*aenv
     983         IF (iflag_ratqs.eq.10.and.sigma_qtherm(ind1,ind2).ne.0) then
     984            sigma2s = sigma_qtherm(ind1,ind2)*ath
     985         ENDIF
    982986      ENDIF
    983       sigma2s=(sigma2s_factor*(((sth-senv)**2)**0.5)/((fraca(ind1,ind2)+0.02)**sigma2s_power))+0.002*zqta(ind1,ind2)
     987     
    984988!      tests
    985989!      sigma1s=(0.92**0.5)*(fraca(ind1,ind2)**0.5)/(1-fraca(ind1,ind2))*((sth-senv)**2)**0.5+ratqs(ind1,ind2)*po(ind1)
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp.F90

    r5204 r5208  
    77!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    88SUBROUTINE lscp(klon,klev,dtime,missing_val,            &
    9      paprs,pplay,temp,qt,qice_save,ptconv,ratqs,        &
     9     paprs,pplay,temp,qt,qice_save,ptconv,ratqs,sigma_qtherm, &
    1010     d_t, d_q, d_ql, d_qi, rneb, rneblsvol,             &
    1111     pfraclr, pfracld,                                  &
     
    157157  !------------------------
    158158 
    159   REAL, DIMENSION(klon,klev),      INTENT(INOUT)   :: thl              ! liquid potential temperature [K]
    160   REAL, DIMENSION(klon,klev),      INTENT(INOUT)   :: ratqs            ! function of pressure that sets the large-scale
     159  REAL, DIMENSION(klon,klev),      INTENT(INOUT)   :: thl          ! liquid potential temperature [K]
     160  REAL, DIMENSION(klon,klev),      INTENT(INOUT)   :: ratqs,sigma_qtherm        ! function of pressure that sets the large-scale
     161
    161162
    162163  ! INPUT/OUTPUT condensation and ice supersaturation
     
    814815                         zq,qta,fraca,                                     &
    815816                         qcloud,ctot,ctot_vol,pspsk,paprs,pplay,tla,thl, &
    816                          ratqs,zqs,temp, &
     817                         ratqs,sigma_qtherm,zqs,temp, &
    817818                         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
    818819
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_old.F90

    r4830 r5208  
    44MODULE lmdz_lscp_old
    55CONTAINS
    6 SUBROUTINE fisrtilp(klon,klev,dtime,paprs,pplay,t,q,ptconv,ratqs, &
     6SUBROUTINE fisrtilp(klon,klev,dtime,paprs,pplay,t,q,ptconv,ratqs,sigma_qtherm, &
    77     d_t, d_q, d_ql, d_qi, rneb,rneblsvol,radliq, rain, snow,          &
    88     pfrac_impa, pfrac_nucl, pfrac_1nucl,               &
     
    7979  !
    8080  !  Input/output
    81   REAL, DIMENSION(klon,klev),      INTENT(INOUT):: ratqs  ! determine la largeur de distribution de vapeur
     81  REAL, DIMENSION(klon,klev),      INTENT(INOUT):: ratqs,sigma_qtherm  ! determine la largeur de distribution de vapeur
    8282  !
    8383  ! Principaux outputs:
     
    795795                   zq,zqta,fraca, &
    796796                   qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, &
    797                    ratqs,zqs,t, &
     797                   ratqs,sigma_qtherm,zqs,t, &
    798798                   cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
    799799              !----------------------------------
  • LMDZ6/trunk/libf/phylmd/lmdz_ratqs_main.F90

    r4812 r5208  
    1313           omega,tke,tke_dissip,lmix,wprime, &
    1414           t2m,q2m,fm_therm,entr_therm,detr_therm,cell_area,&
    15            ratqs,ratqsc,ratqs_inter_)
     15           ratqs,ratqsc,ratqs_inter_,sigma_qtherm)
    1616
    1717
     
    5252
    5353! Output
    54 real, dimension(klon,klev),intent(inout) :: ratqs,ratqsc,ratqs_inter_
     54real, dimension(klon,klev),intent(inout) :: ratqs,ratqsc,ratqs_inter_,sigma_qtherm
    5555
    5656logical, dimension(klon,klev),intent(inout) :: ptconvth
     
    194194     
    195195          if (iflag_ratqs .EQ. 10) then
    196              ! interactive ratqs in presence of cold pools     
     196             print*,'avant ratqs_inter'
     197            ! interactive ratqs with several sources
    197198             call ratqs_inter(klon,klev,iflag_ratqs,pdtphys,paprs, &
    198199                       ratqsbas,wake_deltaq,wake_s,q_seri,qtc_cv, sigt_cv, &
    199200                       fm_therm,entr_therm,detr_therm,detrain_cv,fm_cv,fqd,fqcomp,sigd, &
    200                        ratqs_inter_)
    201              do k=1,klev
    202                 do i=1,klon
    203                     ratqs_inter_(i,k)=ratqs_inter_(i,k)-0.5*ratqs_inter_(i,k)*(tanh((ratqsp0-pplay(i,k))/ratqsdp)+1.)
    204                 enddo
    205              enddo
     201                       ratqs_inter_,sigma_qtherm)
    206202             ratqss=ratqss+ratqs_inter_
    207203          else if (iflag_ratqs .EQ. 11) then
     
    211207                       ratqsbas,wake_deltaq,wake_s,q_seri,qtc_cv, sigt_cv, &
    212208                       fm_therm,entr_therm,detr_therm,detrain_cv,fm_cv,fqd,fqcomp,sigd, &
    213                        ratqs_inter_)
     209                       ratqs_inter_,sigma_qtherm)
    214210             ratqss=ratqss+ratqs_inter_
    215211          else if (iflag_ratqs .EQ. 12) then
  • LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.F90

    r4812 r5208  
    2828           ratqsbas, wake_deltaq, wake_s, q_seri,qtc_cv, sigt_cv,     &
    2929           fm_therm,entr_therm,detr_therm,detrain_cv,fm_cv,fqd,fqcomp,sigd, &
    30            ratqs_inter_)
     30           ratqs_inter_,sigma_qtherm)
    3131
    3232USE lmdz_ratqs_ini, ONLY : a_ratqs_cv,tau_var,fac_tau,tau_cumul,a_ratqs_wake, dqimpl
     
    7070real, dimension(klon) :: max_sigd, max_dqconv,max_sigt
    7171real, dimension(klon,klev) :: zoa,zocarrea,pdocarreadj,pocarre,po,pdoadj,varq_therm
    72 real, dimension(klon,klev) :: var_moy, var_var, var_desc_th,var_det_conv,var_desc_prec,var_desc_conv,sigma_therm
     72real, dimension(klon,klev) :: var_moy, var_var, var_desc_th,var_det_conv,var_desc_prec,var_desc_conv,sigma_qtherm
    7373
    7474lev_out=0.
     
    198198           if(q_seri(i,k).ge.1E-7) then
    199199               ratqs_inter_(i,k) = abs(povariance(i,k))**0.5/q_seri(i,k)   
    200                sigma_therm(i,k) = abs(varq_therm(i,k))**0.5     ! sigma dans les thermiques
     200               sigma_qtherm(i,k) = abs(varq_therm(i,k))**0.5     ! sigma dans les thermiques
    201201           else
    202202               ratqs_inter_(i,k) = 0. 
    203                sigma_therm(i,k) = 0.
     203               sigma_qtherm(i,k) = 0.
    204204           endif
    205205        enddo
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r5204 r5208  
    479479!$OMP THREADPRIVATE(ale_bl_trig)
    480480
    481       REAL,SAVE,ALLOCATABLE :: ratqs_inter_(:,:)
    482 !$OMP THREADPRIVATE(ratqs_inter_)
     481      REAL,SAVE,ALLOCATABLE :: ratqs_inter_(:,:),sigma_qtherm(:,:)
     482!$OMP THREADPRIVATE(ratqs_inter_,sigma_qtherm)
    483483
    484484#ifdef ISO
     
    773773
    774774      ALLOCATE(ale_bl_trig(klon))
    775       ALLOCATE(ratqs_inter_(klon,klev))
     775      ALLOCATE(ratqs_inter_(klon,klev),sigma_qtherm(klon,klev))
    776776      IF (ok_gwd_rando) THEN
    777777        ALLOCATE(du_gwd_rando(klon, klev))
     
    942942      if (.not. ok_hines .and. ok_gwd_rando) DEALLOCATE(du_gwd_front)
    943943      DEALLOCATE(ale_bl_trig)
    944       DEALLOCATE(ratqs_inter_)
     944      DEALLOCATE(ratqs_inter_,sigma_qtherm)
    945945
    946946      if (activate_ocean_skin >= 1) then
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5206 r5208  
    18381838               mr_ozone_cosp0,cldtau_cosp0, cldemi_cosp0)
    18391839#endif
    1840       endif  ! ok_cosp
     1840      ENDIF
    18411841
    18421842       !
     
    38413841         omega,pbl_tke(:,:,is_ave),pbl_eps(:,:,is_ave),l_mix_ave,wprime_ave, &
    38423842         t2m,q2m,fm_therm,entr_therm,detr_therm,cell_area, &
    3843          ratqs,ratqsc,ratqs_inter_)
     3843         ratqs,ratqsc,ratqs_inter_,sigma_qtherm)
    38443844
    38453845    !
     
    38623862
    38633863    CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, &
    3864          t_seri, q_seri,qs_ini,ptconv,ratqs, &
     3864         t_seri, q_seri,qs_ini,ptconv,ratqs,sigma_qtherm, &
    38653865         d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, &
    38663866         pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb,  &
     
    38863886
    38873887    CALL fisrtilp(klon,klev,phys_tstep,paprs,pplay, &
    3888          t_seri, q_seri,ptconv,ratqs, &
     3888         t_seri, q_seri,ptconv,ratqs,sigma_qtherm, &
    38893889         d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, radocond, &
    38903890         rain_lsc, snow_lsc, &
Note: See TracChangeset for help on using the changeset viewer.