Changeset 5641 for LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90
- Timestamp:
- May 1, 2025, 6:00:03 PM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90 ¶
r5631 r5641 25 25 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, & 26 26 dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati, & 27 cf a_seri, pcf_seri, qva_seri, qia_seri,flight_dist,&28 flight_h2o, qice_ perscont, Tcritcont,&27 cfl_seri, cfc_seri, qtl_seri, qtc_seri,flight_dist,& 28 flight_h2o, qice_lincont, qice_circont, Tcritcont, & 29 29 qcritcont, potcontfraP, potcontfraNP, & 30 30 cloudth_sth, & … … 128 128 USE phys_local_var_mod, ONLY : issrfra100to150, issrfra150to200, issrfra200to250 129 129 USE phys_local_var_mod, ONLY : issrfra250to300, issrfra300to400, issrfra400to500 130 USE phys_local_var_mod, ONLY : dcfa_ini, dqia_ini, dqta_ini, dcfa_sub, dqia_sub, dqta_sub 131 USE phys_local_var_mod, ONLY : dcfa_cir, dqta_cir, dcfa_mix, dqia_mix, dqta_mix 130 USE phys_local_var_mod, ONLY : dcfl_ini, dqil_ini, dqtl_ini, dcfl_sub, dqil_sub, dqtl_sub 131 USE phys_local_var_mod, ONLY : dcfl_cir, dqtl_cir, dcfl_mix, dqil_mix, dqtl_mix 132 USE phys_local_var_mod, ONLY : dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix 132 133 133 134 IMPLICIT NONE … … 190 191 ! INPUT/OUTPUT aviation 191 192 !-------------------------------------------------- 192 REAL, DIMENSION(klon,klev), INTENT(INOUT):: cf a_seri ! linear contrails fraction [-]193 REAL, DIMENSION(klon,klev), INTENT(INOUT):: pcf_seri ! contrails inducedcirrus fraction [-]194 REAL, DIMENSION(klon,klev), INTENT(INOUT):: q va_seri ! linear contrails total specific humidity [kg/kg]195 REAL, DIMENSION(klon,klev), INTENT(INOUT):: q ia_seri ! linear contrails total specific humidity [kg/kg]193 REAL, DIMENSION(klon,klev), INTENT(INOUT):: cfl_seri ! linear contrails fraction [-] 194 REAL, DIMENSION(klon,klev), INTENT(INOUT):: cfc_seri ! contrail cirrus fraction [-] 195 REAL, DIMENSION(klon,klev), INTENT(INOUT):: qtl_seri ! linear contrails total specific humidity [kg/kg] 196 REAL, DIMENSION(klon,klev), INTENT(INOUT):: qtc_seri ! contrail cirrus total specific humidity [kg/kg] 196 197 REAL, DIMENSION(klon,klev), INTENT(IN) :: flight_dist ! aviation distance flown within the mesh [m/s/mesh] 197 198 REAL, DIMENSION(klon,klev), INTENT(IN) :: flight_h2o ! aviation H2O emitted within the mesh [kgH2O/s/mesh] … … 251 252 ! for contrails and aviation 252 253 253 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qice_perscont !--condensed water in contrail induced cirrus used in the radiation scheme [kg/kg] 254 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qice_lincont !--condensed water in linear contrails used in the radiation scheme [kg/kg] 255 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qice_circont !--condensed water in contrail cirrus used in the radiation scheme [kg/kg] 254 256 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tcritcont !--critical temperature for contrail formation [K] 255 257 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcritcont !--critical specific humidity for contrail formation [kg/kg] … … 332 334 REAL :: delta_z 333 335 ! for contrails 334 REAL, DIMENSION(klon) :: contfra, perscontfra, qcont336 REAL, DIMENSION(klon) :: lincontfra, circontfra, qlincont, qcircont 335 337 REAL, DIMENSION(klon) :: zq_nodeep 336 338 LOGICAL, DIMENSION(klon) :: pt_pron_clds … … 662 664 !--Initialisation 663 665 IF ( ok_plane_contrail ) THEN 664 contfra(:) = 0. 665 qcont(:) = 0. 666 perscontfra(:) = 0. 666 lincontfra(:) = 0. 667 circontfra(:) = 0. 668 qlincont(:) = 0. 669 qcircont(:) = 0. 667 670 ENDIF 668 671 … … 816 819 dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), dqised(:,k), & 817 820 dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), dqvcsed(:,k), & 818 cfa_seri(:,k), pcf_seri(:,k), qva_seri(:,k), qia_seri(:,k), & 819 flight_dist(:,k), flight_h2o(:,k), contfra, perscontfra, qcont, & 821 cfl_seri(:,k), cfc_seri(:,k), qtl_seri(:,k), qtc_seri(:,k), & 822 flight_dist(:,k), flight_h2o(:,k), & 823 lincontfra, circontfra, qlincont, qcircont, & 820 824 Tcritcont(:,k), qcritcont(:,k), potcontfraP(:,k), potcontfraNP(:,k), & 821 dcfa_ini(:,k), dqia_ini(:,k), dqta_ini(:,k), & 822 dcfa_sub(:,k), dqia_sub(:,k), dqta_sub(:,k), & 823 dcfa_cir(:,k), dqta_cir(:,k), & 824 dcfa_mix(:,k), dqia_mix(:,k), dqta_mix(:,k)) 825 dcfl_ini(:,k), dqil_ini(:,k), dqtl_ini(:,k), & 826 dcfl_sub(:,k), dqil_sub(:,k), dqtl_sub(:,k), & 827 dcfl_cir(:,k), dqtl_cir(:,k), & 828 dcfl_mix(:,k), dqil_mix(:,k), dqtl_mix(:,k), & 829 dcfc_sub(:,k), dqic_sub(:,k), dqtc_sub(:,k), & 830 dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k)) 825 831 826 832 DO i = 1, klon … … 1049 1055 !--Contrails precipitate as natural clouds. We save the partition of ice 1050 1056 !--between natural clouds and contrails 1051 !--NB. we use q cont as a temporary variable to save this partition1057 !--NB. we use qlincont / qcircont as a temporary variable to save this partition 1052 1058 DO i = 1, klon 1059 dcf_sub(i,k) = lincontfra(i) 1060 dqi_sub(i,k) = qlincont(i) 1053 1061 IF ( zoliqi(i) .GT. 0. ) THEN 1054 qcont(i) = ( qcont(i) - zqs(i) * contfra(i) ) / zoliqi(i) 1062 qlincont(i) = ( qlincont(i) - zqs(i) * lincontfra(i) ) / zoliqi(i) 1063 qcircont(i) = ( qcircont(i) - zqs(i) * circontfra(i) ) / zoliqi(i) 1055 1064 ELSE 1056 qcont(i) = 0. 1065 qlincont(i) = 0. 1066 qcircont(i) = 0. 1057 1067 ENDIF 1058 1068 ENDDO … … 1095 1105 !--Contrails fraction is left unchanged, but contrails water has changed 1096 1106 DO i = 1, klon 1097 IF ( zoliqi(i) . LE. 0. ) THEN1098 contfra(i) = 0.1099 qc ont(i) = 0.1107 IF ( zoliqi(i) .GT. 0. ) THEN 1108 qlincont(i) = zqs(i) * lincontfra(i) + zoliqi(i) * qlincont(i) 1109 qcircont(i) = zqs(i) * circontfra(i) + zoliqi(i) * qcircont(i) 1100 1110 ELSE 1101 qcont(i) = zqs(i) * contfra(i) + zoliqi(i) * qcont(i) 1111 lincontfra(i) = 0. 1112 circontfra(i) = 0. 1113 qlincont(i) = 0. 1114 qcircont(i) = 0. 1102 1115 ENDIF 1103 1116 ENDDO … … 1198 1211 !--AB Write diagnostics and tracers for ice supersaturation 1199 1212 IF ( ok_plane_contrail ) THEN 1200 cfa_seri(:,k) = contfra(:) 1201 pcf_seri(:,k) = perscontfra(:) 1202 qva_seri(:,k) = zqs(:) * contfra(:) 1213 cfl_seri(:,k) = lincontfra(:) 1214 cfc_seri(:,k) = circontfra(:) 1215 qtl_seri(:,k) = qlincont(:) 1216 qtc_seri(:,k) = qcircont(:) 1203 1217 DO i = 1, klon 1204 1218 IF ( zoliqi(i) .GT. 0. ) THEN 1205 !--The quantity of ice in linear contrails has been reduced by precipitation 1206 !--with the same factor as the rest of the clouds 1207 qia_seri(i,k) = ( qcont(i) - zqs(i) * contfra(i) ) / zoliqi(i) * radocond(i,k) 1219 !--The ice water content seen by radiation is higher than the actual ice 1220 !--water content. We take into account this difference 1221 qice_lincont(i,k) = ( qlincont(i) - zqs(i) * lincontfra(i) ) & 1222 / zoliqi(i) * radocond(i,k) 1223 qice_circont(i,k) = ( qcircont(i) - zqs(i) * circontfra(i) ) & 1224 / zoliqi(i) * radocond(i,k) 1208 1225 ELSE 1209 qia_seri(i,k) = 0. 1210 ENDIF 1211 IF ( ( rneb(i,k) - cfa_seri(i,k) ) .GT. eps ) THEN 1212 !--The in-cloud quantity of ice in persistent contrail cirrus is the same as 1213 !--the one from all natural cirrus clouds 1214 qice_perscont(i,k) = ( radocond(i,k) - qia_seri(i,k) ) & 1215 * perscontfra(i) / ( rneb(i,k) - cfa_seri(i,k) ) 1216 ELSE 1217 qice_perscont(i,k) = 0. 1226 qice_lincont(i,k) = 0. 1227 qice_circont(i,k) = 0. 1218 1228 ENDIF 1219 1229 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.