Changeset 5396
- Timestamp:
- Dec 6, 2024, 4:35:41 PM (2 months ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp.f90
r5384 r5396 7 7 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 8 SUBROUTINE 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, & 10 11 d_t, d_q, d_ql, d_qi, rneb, rneblsvol, & 11 12 pfraclr, pfracld, & … … 20 21 cf_seri, rvc_seri, u_seri, v_seri, & 21 22 qsub, qissr, qcld, subfra, issrfra, gamma_cond, & 22 ratio_qi_qtot,dcf_sub, dcf_con, dcf_mix, &23 dcf_sub, dcf_con, dcf_mix, & 23 24 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, & 24 25 dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati, & … … 139 140 REAL, DIMENSION(klon,klev), INTENT(IN) :: omega ! vertical velocity [Pa/s] 140 141 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] 141 144 INTEGER, INTENT(IN) :: iflag_cld_th ! flag that determines the distribution of convective clouds 142 145 INTEGER, INTENT(IN) :: iflag_ice_thermo! flag to activate the ice thermodynamics … … 164 167 !-------------------------------------------------- 165 168 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 [-]167 169 REAL, DIMENSION(klon,klev), INTENT(INOUT):: rvc_seri ! cloudy water vapor to total water vapor ratio [-] 168 170 REAL, DIMENSION(klon,klev), INTENT(IN) :: u_seri ! eastward wind [m/s] … … 569 571 ENDIF 570 572 571 qice_ini = zq(:)*ratio_qi_qtot(:,k)573 qice_ini = qi_seri(:,k) 572 574 ! -------------------------------------------------------------------- 573 575 ! P2> Precipitation evaporation/sublimation/melting … … 962 964 klon, dtime, missing_val, & 963 965 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), & 965 967 shear(:), tke_dissip(:,k), cell_area(:), & 966 968 Tbef(:), zq(:), zqs(:), gammasat(:), ratqs(:,k), keepgoing(:), & -
LMDZ6/trunk/libf/phylmd/lmdz_lscp_condensation.f90
r5383 r5396 96 96 SUBROUTINE condensation_ice_supersat( & 97 97 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, & 99 99 temp, qtot, qsat, gamma_cond, ratqs, keepgoing, & 100 100 cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, & … … 142 142 REAL, INTENT(IN) , DIMENSION(klon) :: cf_seri ! cloud fraction [-] 143 143 REAL, 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 [-] 144 REAL, INTENT(IN) , DIMENSION(klon) :: ql_seri ! specific liquid water content [kg/kg] 145 REAL, INTENT(IN) , DIMENSION(klon) :: qi_seri ! specific ice water content [kg/kg] 145 146 REAL, INTENT(IN) , DIMENSION(klon) :: shear ! vertical shear [s-1] 146 147 REAL, INTENT(IN) , DIMENSION(klon) :: pbl_eps ! … … 350 351 !--can be greater than the total water in the gridbox 351 352 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))) 353 354 qvc(i) = MAX(0., MIN(qcld(i), rvc_seri(i) * qtot(i))) 354 355 ok_warm_cloud = .FALSE. -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r5252 r5396 647 647 REAL, SAVE, ALLOCATABLE :: gamma_cond(:,:) 648 648 !$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) 649 655 REAL, SAVE, ALLOCATABLE :: ratio_qi_qtot(:,:) 650 656 !$OMP THREADPRIVATE(ratio_qi_qtot) … … 1199 1205 ALLOCATE(qsub(klon,klev), qissr(klon,klev), qcld(klon,klev)) 1200 1206 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)) 1202 1209 ALLOCATE(dcf_sub(klon,klev), dcf_con(klon,klev), dcf_mix(klon,klev)) 1203 1210 ALLOCATE(dqi_adj(klon,klev), dqi_sub(klon,klev), dqi_con(klon,klev), dqi_mix(klon,klev)) … … 1604 1611 DEALLOCATE(qsub, qissr, qcld) 1605 1612 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) 1607 1614 DEALLOCATE(dcf_sub, dcf_con, dcf_mix) 1608 1615 DEALLOCATE(dqi_adj, dqi_sub, dqi_con, dqi_mix) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5383 r5396 320 320 distcltop, temp_cltop, & 321 321 !-- 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, & 323 324 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 324 325 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & … … 2313 2314 2314 2315 !--Init for LSCP - condensation 2316 ratio_ql_qtot(:,:) = 0. 2315 2317 ratio_qi_qtot(:,:) = 0. 2316 2318 … … 2644 2646 DO i = 1, klon 2645 2647 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) ) 2646 2649 ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) 2647 2650 rvc_seri(i,k) = rvc_seri(i,k) * q_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) 2648 2651 ELSE 2652 ratio_ql_qtot(i,k) = 0. 2649 2653 ratio_qi_qtot(i,k) = 0. 2650 2654 rvc_seri(i,k) = 0. … … 2656 2660 DO i = 1, klon 2657 2661 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) ) 2658 2663 ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) 2659 2664 ELSE 2665 ratio_ql_qtot(i,k) = 0. 2660 2666 ratio_qi_qtot(i,k) = 0. 2661 2667 ENDIF … … 3832 3838 IF (ok_new_lscp) THEN 3833 3839 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 3834 3849 !--mise à jour de flight_m et flight_h2o dans leur module 3835 3850 !IF (ok_plane_h2o .OR. ok_plane_contrail) THEN … … 3838 3853 3839 3854 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, & 3841 3856 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, & 3842 3857 pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb, & … … 3849 3864 cell_area, & 3850 3865 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, & 3852 3867 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 3853 3868 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5383 r5396 365 365 distcltop, temp_cltop, & 366 366 !-- 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, & 368 369 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 369 370 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & … … 2480 2481 2481 2482 !--Init for LSCP - condensation 2483 ratio_ql_qtot(:,:) = 0. 2482 2484 ratio_qi_qtot(:,:) = 0. 2483 2485 … … 3010 3012 DO i = 1, klon 3011 3013 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) ) 3012 3015 ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) 3013 3016 rvc_seri(i,k) = rvc_seri(i,k) * q_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) 3014 3017 ELSE 3018 ratio_ql_qtot(i,k) = 0. 3015 3019 ratio_qi_qtot(i,k) = 0. 3016 3020 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. 3017 3033 ENDIF 3018 3034 ENDDO … … 5060 5076 IF (ok_new_lscp) THEN 5061 5077 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 5062 5087 !--mise à jour de flight_m et flight_h2o dans leur module 5063 5088 !IF (ok_plane_h2o .OR. ok_plane_contrail) THEN … … 5066 5091 5067 5092 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, & 5069 5094 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, & 5070 5095 pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb, & … … 5077 5102 cell_area, & 5078 5103 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, & 5080 5105 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 5081 5106 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
Note: See TracChangeset
for help on using the changeset viewer.