Changeset 5625
- Timestamp:
- Apr 22, 2025, 6:03:13 PM (2 months ago)
- Location:
- LMDZ6/branches/contrails/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90 ¶
r5624 r5625 1204 1204 pcf_seri(:,k) = perscontfra(:) 1205 1205 qva_seri(:,k) = zqs(:) * contfra(:) 1206 qia_seri(:,k) = qcont(:) - zqs(:) * contfra(:)1207 1206 DO i = 1, klon 1207 IF ( zoliqi(i) .GT. 0. ) THEN 1208 !--The quantity of ice in linear contrails has been reduced by precipitation 1209 !--with the same factor as the rest of the clouds 1210 qia_seri(i,k) = ( qcont(i) - zqs(i) * contfra(i) ) / zoliqi(i) * radocond(i,k) 1211 ELSE 1212 qia_seri(i,k) = 0. 1213 ENDIF 1208 1214 IF ( ( rneb(i,k) - cfa_seri(i,k) ) .GT. eps ) THEN 1215 !--The in-cloud quantity of ice in persistent contrail cirrus is the same as 1216 !--the one from all natural cirrus clouds 1209 1217 qice_perscont(i,k) = ( radocond(i,k) - qia_seri(i,k) ) & 1210 1218 * perscontfra(i) / ( rneb(i,k) - cfa_seri(i,k) ) … … 1219 1227 DO i = 1, klon 1220 1228 1229 !--We save the cloud properties that will be advected 1221 1230 cf_seri(i,k) = rneb(i,k) 1222 1231 qvc_seri(i,k) = qvc(i) 1232 1233 !--Deep convection clouds properties are removed from radiative properties 1234 !--outputed from lscp (NB. rneb and radocond are only used for the radiative 1235 !--properties and are NOT prognostics) 1236 !--We must have iflag_coupl == 5 for this coupling to work 1237 IF ( ptconv(i,k) .AND. pt_pron_clds(i) ) THEN 1238 rneb(i,k) = rneb(i,k) - cfcon(i,k) 1239 radocond(i,k) = radocond(i,k) - qccon(i,k) * cfcon(i,k) 1240 ENDIF 1241 1242 !--If everything was precipitated, the remaining empty cloud is dissipated 1243 !--and everything is transfered to the subsaturated clear sky region 1244 !--NB. we do not change rneb, as it is a diagnostic only 1223 1245 IF ( zoliq(i) .LE. 0. ) THEN 1224 !--If everything was precipitated, the remaining empty cloud is dissipated1225 !--and everything is transfered to the subsaturated clear sky region1226 !--NB. we do not change rneb, as it is a diagnostic only1227 1246 cf_seri(i,k) = 0. 1247 qvc_seri(i,k) = 0. 1228 1248 qvc(i) = 0. 1229 1249 ENDIF 1230 1231 qvc_seri(i,k) = qvc(i)1232 1250 1233 1251 !--Diagnostics -
TabularUnified LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90 ¶
r5623 r5625 127 127 USE lmdz_lscp_ini, ONLY: beta_pdf_lscp, temp_thresh_pdf_lscp 128 128 USE lmdz_lscp_ini, ONLY: std100_pdf_lscp, k0_pdf_lscp, kappa_pdf_lscp 129 USE lmdz_lscp_ini, ONLY: coef_mixing_lscp, coef_shear_lscp, incld_ice_thresh129 USE lmdz_lscp_ini, ONLY: coef_mixing_lscp, coef_shear_lscp, cooling_rate_ice_thresh 130 130 131 131 USE lmdz_lscp_ini, ONLY: ok_plane_contrail, aspect_ratio_contrails … … 244 244 ! 245 245 ! for dissipation 246 REAL :: pdf_shape247 REAL :: dcf_sub_tmp, dqvc_sub_tmp246 REAL, DIMENSION(klon) :: temp_diss, qsati_diss 247 REAL :: pdf_shape, qiceincld_min 248 248 ! 249 249 ! for condensation 250 REAL, DIMENSION(klon) :: qsatl, dqsat l250 REAL, DIMENSION(klon) :: qsatl, dqsat_tmp 251 251 REAL, DIMENSION(klon) :: pdf_alpha, pdf_scale, pdf_gamma 252 252 REAL :: rhl_clr, pdf_loc … … 278 278 279 279 !--Calculation of qsat w.r.t. liquid 280 CALL calc_qsat_ecmwf(klon, temp, qzero, pplay, RTT, 1, .FALSE., qsatl, dqsatl) 280 CALL calc_qsat_ecmwf(klon, temp, qzero, pplay, RTT, 1, .FALSE., qsatl, dqsat_tmp) 281 !--Calculation of qsat max for dissipation 282 temp_diss(:) = temp(:) + cooling_rate_ice_thresh * dtime 283 CALL calc_qsat_ecmwf(klon, temp_diss, qzero, pplay, RTT, 2, .FALSE., qsati_diss, dqsat_tmp) 281 284 282 285 ! … … 530 533 ELSE 531 534 532 !--Cirrus clouds cannot have an in-cloud ice water content lower than533 !--incld_ice_thresh times the saturation534 IF ( qiceincld .LT. ( incld_ice_thresh * qsat(i) ) ) THEN535 dcf_sub_tmp = ( qiceincld / ( incld_ice_thresh * qsat(i) ) - 1. ) * cldfra(i)536 dqvc_sub_tmp = qvapincld * dcf_sub_tmp537 538 cldfra(i) = cldfra(i) + dcf_sub_tmp539 qcld(i) = qcld(i) + dqvc_sub_tmp540 qvc(i) = qvc(i) + dqvc_sub_tmp541 clrfra(i) = MIN(1., clrfra(i) - dcf_sub_tmp)542 qclr(i) = qclr(i) - dqvc_sub_tmp543 ELSE544 dcf_sub_tmp = 0.545 dqvc_sub_tmp = 0.546 ENDIF547 548 535 IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN 549 536 IF ( qvapincld .GE. qsat(i) ) THEN … … 574 561 !-- DISSIPATION OF THE CLOUD -- 575 562 !------------------------------------ 563 !--Additionally to a minimum in cloud water vapor, we impose a minimum 564 !--in in-cloud ice water content. It is calculated following 565 !--Marti and Mauersberger (1993), see also Schiller et al. (2008) 566 qiceincld_min = qsati_diss(i) - qsat(i) 576 567 577 568 !--If the dissipation process must be activated 578 IF ( qvapincld_new.GT. qvapincld ) THEN569 IF ( ( qvapincld_new + qiceincld_min ) .GT. qvapincld ) THEN 579 570 !--Gamma distribution starting at qvapincld 580 571 pdf_shape = nu_iwc_pdf_lscp / qiceincld 581 pdf_y = pdf_shape * ( qvapincld_new - qvapincld )572 pdf_y = pdf_shape * ( qvapincld_new + qiceincld_min - qvapincld ) 582 573 pdf_e1 = GAMMAINC ( nu_iwc_pdf_lscp , pdf_y ) 583 574 pdf_e2 = GAMMAINC ( nu_iwc_pdf_lscp + 1. , pdf_y ) … … 610 601 qclr(i) = qclr(i) - dqvc_sub(i) - dqi_sub(i) 611 602 ENDIF ! qvapincld_new .GT. qvapincld 612 613 !--We readd previously calculated dcf_sub_tmp and dqvc_sub_tmp to the diagnostics614 dcf_sub(i) = dcf_sub(i) + dcf_sub_tmp615 dqvc_sub(i) = dqvc_sub(i) + dqvc_sub_tmp616 603 617 604 … … 849 836 qiceinmix = ( qcld(i) - qvc(i) ) / cldfra(i) / ( 1. + clrfra_mix / cldfra_mix ) 850 837 tauinv_depsub = qiceinmix**(1./3.) * kappa_depsub 851 qvapinmix_lim = qsat(i) - qiceinmix / ( 1. - EXP( - dtime / 2.* tauinv_depsub ) )838 qvapinmix_lim = qsat(i) - qiceinmix / ( 1. - EXP( - dtime * tauinv_depsub ) ) 852 839 qvapinclr_lim = qvapinmix_lim * ( 1. + cldfra_mix / clrfra_mix ) & 853 840 - qvc(i) / cldfra(i) * cldfra_mix / clrfra_mix … … 1126 1113 IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN 1127 1114 tauinv_depsub = qiceincld**(1./3.) * kappa_depsub 1128 qvapinclr_lim = qsat(i) - qiceincld / ( 1. - EXP( - dtime / 2.* tauinv_depsub ) )1115 qvapinclr_lim = qsat(i) - qiceincld / ( 1. - EXP( - dtime * tauinv_depsub ) ) 1129 1116 ELSE 1130 1117 qvapinclr_lim = qsat(i) - qiceincld -
TabularUnified LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90 ¶
r5615 r5625 165 165 !$OMP THREADPRIVATE(ffallv_issr) 166 166 167 REAL, SAVE, PROTECTED :: incld_ice_thresh=1.E-3 ! [-] minimum in-cloud ice water content, relative to saturation168 !$OMP THREADPRIVATE( incld_ice_thresh)167 REAL, SAVE, PROTECTED :: cooling_rate_ice_thresh=2.e-5 ! [K/s] minimum virtual cooling rate before ice is sublimated 168 !$OMP THREADPRIVATE(cooling_rate_ice_thresh) 169 169 170 170 REAL, SAVE, PROTECTED :: depo_coef_cirrus=.7 ! [-] deposition coefficient for growth of ice crystals in cirrus clouds … … 484 484 ffallv_issr=ffallv_lsc 485 485 CALL getin_p('ffallv_issr',ffallv_issr) 486 CALL getin_p(' incld_ice_thresh',incld_ice_thresh)486 CALL getin_p('cooling_rate_ice_thresh',cooling_rate_ice_thresh) 487 487 CALL getin_p('depo_coef_cirrus',depo_coef_cirrus) 488 488 CALL getin_p('capa_cond_cirrus',capa_cond_cirrus) … … 583 583 WRITE(lunout,*) 'lscp_ini, ok_weibull_warm_clouds:', ok_weibull_warm_clouds 584 584 WRITE(lunout,*) 'lscp_ini, ffallv_issr', ffallv_issr 585 WRITE(lunout,*) 'lscp_ini, incld_ice_thresh', incld_ice_thresh585 WRITE(lunout,*) 'lscp_ini, cooling_rate_ice_thresh', cooling_rate_ice_thresh 586 586 WRITE(lunout,*) 'lscp_ini, depo_coef_cirrus:', depo_coef_cirrus 587 587 WRITE(lunout,*) 'lscp_ini, capa_cond_cirrus:', capa_cond_cirrus
Note: See TracChangeset
for help on using the changeset viewer.