Changeset 5396


Ignore:
Timestamp:
Dec 6, 2024, 4:35:41 PM (2 months ago)
Author:
evignon
Message:

ajout de ql_seri et qi_seri dans lmdz_lscp

Location:
LMDZ6/trunk/libf
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp.f90

    r5384 r5396  
    77!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    88SUBROUTINE lscp(klon,klev,dtime,missing_val,            &
    9      paprs,pplay,omega,temp,qt,ptconv,ratqs,sigma_qtherm, &
     9     paprs, pplay, omega, temp, qt, ql_seri, qi_seri,   &
     10     ptconv, ratqs, sigma_qtherm,                       &
    1011     d_t, d_q, d_ql, d_qi, rneb, rneblsvol,             &
    1112     pfraclr, pfracld,                                  &
     
    2021     cf_seri, rvc_seri, u_seri, v_seri,                 &
    2122     qsub, qissr, qcld, subfra, issrfra, gamma_cond,    &
    22      ratio_qi_qtot, dcf_sub, dcf_con, dcf_mix,          &
     23     dcf_sub, dcf_con, dcf_mix,          &
    2324     dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj,      &
    2425     dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati,        &
     
    139140  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: omega           ! vertical velocity [Pa/s]
    140141  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: qt              ! total specific humidity (in vapor phase in input) [kg/kg]
     142  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: ql_seri         ! liquid specific content [kg/kg]
     143  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: qi_seri         ! ice specific content [kg/kg]
    141144  INTEGER,                         INTENT(IN)   :: iflag_cld_th    ! flag that determines the distribution of convective clouds
    142145  INTEGER,                         INTENT(IN)   :: iflag_ice_thermo! flag to activate the ice thermodynamics
     
    164167  !--------------------------------------------------
    165168  REAL, DIMENSION(klon,klev),      INTENT(INOUT):: cf_seri          ! cloud fraction [-]
    166   REAL, DIMENSION(klon,klev),      INTENT(INOUT):: ratio_qi_qtot    ! solid specific water to total specific water ratio [-]
    167169  REAL, DIMENSION(klon,klev),      INTENT(INOUT):: rvc_seri         ! cloudy water vapor to total water vapor ratio [-]
    168170  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: u_seri           ! eastward wind [m/s]
     
    569571    ENDIF
    570572
    571     qice_ini = zq(:)*ratio_qi_qtot(:,k)
     573    qice_ini = qi_seri(:,k)
    572574    ! --------------------------------------------------------------------
    573575    ! P2> Precipitation evaporation/sublimation/melting
     
    962964                        klon, dtime, missing_val, &
    963965                        pplay(:,k), paprs(:,k), paprs(:,k+1), &
    964                         cf_seri(:,k), rvc_seri(:,k), ratio_qi_qtot(:,k), &
     966                        cf_seri(:,k), rvc_seri(:,k), ql_seri(:,k), qi_seri(:,k), &
    965967                        shear(:), tke_dissip(:,k), cell_area(:), &
    966968                        Tbef(:), zq(:), zqs(:), gammasat(:), ratqs(:,k), keepgoing(:), &
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_condensation.f90

    r5383 r5396  
    9696SUBROUTINE condensation_ice_supersat( &
    9797      klon, dtime, missing_val, pplay, paprsdn, paprsup, &
    98       cf_seri, rvc_seri, ratio_qi_qtot, shear, pbl_eps, cell_area, &
     98      cf_seri, rvc_seri, ql_seri, qi_seri, shear, pbl_eps, cell_area, &
    9999      temp, qtot, qsat, gamma_cond, ratqs, keepgoing, &
    100100      cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, &
     
    142142REAL,     INTENT(IN)   , DIMENSION(klon) :: cf_seri       ! cloud fraction [-]
    143143REAL,     INTENT(IN)   , DIMENSION(klon) :: rvc_seri      ! gridbox-mean water vapor in cloud [kg/kg]
    144 REAL,     INTENT(IN)   , DIMENSION(klon) :: ratio_qi_qtot ! specific ice water content to total specific water ratio [-]
     144REAL,     INTENT(IN)   , DIMENSION(klon) :: ql_seri       ! specific liquid water content [kg/kg]
     145REAL,     INTENT(IN)   , DIMENSION(klon) :: qi_seri       ! specific ice water content [kg/kg]
    145146REAL,     INTENT(IN)   , DIMENSION(klon) :: shear         ! vertical shear [s-1]
    146147REAL,     INTENT(IN)   , DIMENSION(klon) :: pbl_eps       !
     
    350351        !--can be greater than the total water in the gridbox
    351352        cldfra(i) = MAX(0., MIN(1., cf_seri(i)))
    352         qcld(i)   = MAX(0., MIN(qtot(i), ( ratio_qi_qtot(i) + rvc_seri(i) ) * qtot(i)))
     353        qcld(i)   = MAX(0., MIN(qtot(i), rvc_seri(i) * qtot(i) + qi_seri(i)))
    353354        qvc(i)    = MAX(0., MIN(qcld(i), rvc_seri(i) * qtot(i)))
    354355        ok_warm_cloud = .FALSE.
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r5252 r5396  
    647647      REAL, SAVE, ALLOCATABLE :: gamma_cond(:,:)
    648648      !$OMP THREADPRIVATE(gamma_cond)
     649      REAL, SAVE, ALLOCATABLE :: ql_seri_lscp(:,:)
     650      !$OMP THREADPRIVATE(ql_seri_lscp)
     651      REAL, SAVE, ALLOCATABLE :: ratio_ql_qtot(:,:)
     652      !$OMP THREADPRIVATE(ratio_ql_qtot)
     653      REAL, SAVE, ALLOCATABLE :: qi_seri_lscp(:,:)
     654      !$OMP THREADPRIVATE(qi_seri_lscp)
    649655      REAL, SAVE, ALLOCATABLE :: ratio_qi_qtot(:,:)
    650656      !$OMP THREADPRIVATE(ratio_qi_qtot)
     
    11991205      ALLOCATE(qsub(klon,klev), qissr(klon,klev), qcld(klon,klev))
    12001206      ALLOCATE(subfra(klon,klev), issrfra(klon,klev))
    1201       ALLOCATE(gamma_cond(klon,klev), ratio_qi_qtot(klon,klev))
     1207      ALLOCATE(gamma_cond(klon,klev), ql_seri_lscp(klon,klev), ratio_ql_qtot(klon,klev))
     1208      ALLOCATE(qi_seri_lscp(klon,klev), ratio_qi_qtot(klon,klev))
    12021209      ALLOCATE(dcf_sub(klon,klev), dcf_con(klon,klev), dcf_mix(klon,klev))
    12031210      ALLOCATE(dqi_adj(klon,klev), dqi_sub(klon,klev), dqi_con(klon,klev), dqi_mix(klon,klev))
     
    16041611      DEALLOCATE(qsub, qissr, qcld)
    16051612      DEALLOCATE(subfra, issrfra)
    1606       DEALLOCATE(gamma_cond, ratio_qi_qtot)
     1613      DEALLOCATE(gamma_cond, ql_seri_lscp, ratio_ql_qtot, qi_seri_lscp, ratio_qi_qtot)
    16071614      DEALLOCATE(dcf_sub, dcf_con, dcf_mix)
    16081615      DEALLOCATE(dqi_adj, dqi_sub, dqi_con, dqi_mix)
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5383 r5396  
    320320       distcltop, temp_cltop,  &
    321321       !-- LSCP - condensation and ice supersaturation variables
    322        qsub, qissr, qcld, subfra, issrfra, gamma_cond, ratio_qi_qtot, &
     322       qsub, qissr, qcld, subfra, issrfra, gamma_cond, &
     323       ql_seri_lscp, ratio_ql_qtot, qi_seri_lscp, ratio_qi_qtot, &
    323324       dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    324325       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
     
    23132314
    23142315      !--Init for LSCP - condensation
     2316      ratio_ql_qtot(:,:) = 0.
    23152317      ratio_qi_qtot(:,:) = 0.
    23162318
     
    26442646        DO i = 1, klon
    26452647          IF ( ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) .GT. 0. ) THEN
     2648            ratio_ql_qtot(i,k) = ql_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    26462649            ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    26472650            rvc_seri(i,k) = rvc_seri(i,k) * q_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    26482651          ELSE
     2652            ratio_ql_qtot(i,k) = 0.
    26492653            ratio_qi_qtot(i,k) = 0.
    26502654            rvc_seri(i,k) = 0.
     
    26562660        DO i = 1, klon
    26572661          IF ( ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) .GT. 0. ) THEN
     2662            ratio_ql_qtot(i,k) = ql_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    26582663            ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    26592664          ELSE
     2665            ratio_ql_qtot(i,k) = 0.
    26602666            ratio_qi_qtot(i,k) = 0.
    26612667          ENDIF
     
    38323838    IF (ok_new_lscp) THEN
    38333839
     3840 
     3841    DO k = 1, klev
     3842      DO i = 1, klon
     3843        ql_seri_lscp(i,k) = ratio_ql_qtot(i,k) * q_seri(i,k)
     3844        qi_seri_lscp(i,k) = ratio_qi_qtot(i,k) * q_seri(i,k)
     3845      ENDDO
     3846    ENDDO
     3847
     3848
    38343849    !--mise à jour de flight_m et flight_h2o dans leur module
    38353850    !IF (ok_plane_h2o .OR. ok_plane_contrail) THEN
     
    38383853
    38393854    CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay,omega, &
    3840          t_seri, q_seri, ptconv, ratqs, sigma_qtherm, &
     3855         t_seri, q_seri, ql_seri_lscp, qi_seri_lscp, ptconv, ratqs, sigma_qtherm, &
    38413856         d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, &
    38423857         pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb,  &
     
    38493864         cell_area, &
    38503865         cf_seri, rvc_seri, u_seri, v_seri, &
    3851          qsub, qissr, qcld, subfra, issrfra, gamma_cond, ratio_qi_qtot, &
     3866         qsub, qissr, qcld, subfra, issrfra, gamma_cond, &
    38523867         dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    38533868         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r5383 r5396  
    365365       distcltop, temp_cltop,  &
    366366       !-- LSCP - condensation and ice supersaturation variables
    367        qsub, qissr, qcld, subfra, issrfra, gamma_cond, ratio_qi_qtot, &
     367       qsub, qissr, qcld, subfra, issrfra, gamma_cond, &
     368       ql_seri_lscp, ratio_ql_qtot, qi_seri_lscp, ratio_qi_qtot, &
    368369       dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    369370       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
     
    24802481
    24812482      !--Init for LSCP - condensation
     2483      ratio_ql_qtot(:,:) = 0.
    24822484      ratio_qi_qtot(:,:) = 0.
    24832485
     
    30103012        DO i = 1, klon
    30113013          IF ( ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) .GT. 0. ) THEN
     3014            ratio_ql_qtot(i,k) = ql_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    30123015            ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    30133016            rvc_seri(i,k) = rvc_seri(i,k) * q_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
    30143017          ELSE
     3018            ratio_ql_qtot(i,k) = 0.
    30153019            ratio_qi_qtot(i,k) = 0.
    30163020            rvc_seri(i,k) = 0.
     3021          ENDIF
     3022        ENDDO
     3023      ENDDO
     3024    ELSE
     3025      DO k = 1, klev
     3026        DO i = 1, klon
     3027          IF ( ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) .GT. 0. ) THEN
     3028            ratio_ql_qtot(i,k) = ql_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
     3029            ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
     3030          ELSE
     3031            ratio_ql_qtot(i,k) = 0.
     3032            ratio_qi_qtot(i,k) = 0.
    30173033          ENDIF
    30183034        ENDDO
     
    50605076    IF (ok_new_lscp) THEN
    50615077
     5078 
     5079    DO k = 1, klev
     5080      DO i = 1, klon
     5081        ql_seri_lscp(i,k) = ratio_ql_qtot(i,k) * q_seri(i,k)
     5082        qi_seri_lscp(i,k) = ratio_qi_qtot(i,k) * q_seri(i,k)
     5083      ENDDO
     5084    ENDDO
     5085
     5086
    50625087    !--mise à jour de flight_m et flight_h2o dans leur module
    50635088    !IF (ok_plane_h2o .OR. ok_plane_contrail) THEN
     
    50665091
    50675092    CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay,omega, &
    5068          t_seri, q_seri, ptconv, ratqs, sigma_qtherm, &
     5093         t_seri, q_seri, ql_seri_lscp, qi_seri_lscp, ptconv, ratqs, sigma_qtherm, &
    50695094         d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, &
    50705095         pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb,  &
     
    50775102         cell_area, &
    50785103         cf_seri, rvc_seri, u_seri, v_seri, &
    5079          qsub, qissr, qcld, subfra, issrfra, gamma_cond, ratio_qi_qtot, &
     5104         qsub, qissr, qcld, subfra, issrfra, gamma_cond, &
    50805105         dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    50815106         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
Note: See TracChangeset for help on using the changeset viewer.