Changeset 5797 for LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_main.f90
- Timestamp:
- Aug 5, 2025, 2:22:14 PM (23 hours ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_main.f90
r5796 r5797 30 30 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, & 31 31 dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati, & 32 cfc_seri, qtc_seri, nic_seri,&32 cfc_seri, qtc_seri, qic_seri, nic_seri, & 33 33 qice_cont, flight_dist, flight_fuel, & 34 34 contfrarad, qradice_cont, & … … 129 129 USE lmdz_lscp_ini, ONLY : ok_ice_supersat, ok_unadjusted_clouds, iflag_icefrac 130 130 USE lmdz_lscp_ini, ONLY : ok_weibull_warm_clouds, ok_no_issr_strato, ok_ice_sedim 131 USE lmdz_lscp_ini, ONLY : ok_plane_contrail 131 USE lmdz_lscp_ini, ONLY : ok_plane_contrail, ok_unadjusted_contrails 132 132 USE lmdz_lscp_ini, ONLY : ok_nodeep_lscp, ok_higher_cirrus_cover 133 133 USE lmdz_lscp_ini, ONLY : ok_lscp_mergecond, gamma_mixth … … 141 141 USE phys_local_var_mod, ONLY : dcfc_ini, dqic_ini, dqtc_ini, dnic_ini 142 142 USE phys_local_var_mod, ONLY : dcfc_sub, dqic_sub, dqtc_sub, dnic_sub 143 USE phys_local_var_mod, ONLY : dcfc_mix, dqic_mix, dqtc_mix, dnic_mix, dnic_agg 143 USE phys_local_var_mod, ONLY : dcfc_mix, dqic_mix, dqtc_mix, dnic_mix 144 USE phys_local_var_mod, ONLY : dnic_agg, dqic_adj, dqtc_adj 144 145 USE phys_local_var_mod, ONLY : dcfc_sed, dqic_sed, dqtc_sed, dnic_sed 145 146 USE phys_local_var_mod, ONLY : dcfc_auto, dqic_auto, dqtc_auto, dnic_auto 146 147 USE phys_local_var_mod, ONLY : dcf_auto, dqi_auto, dqvc_auto 147 148 USE phys_local_var_mod, ONLY : nice_ygcont, iwc_ygcont, rvol_ygcont, tau_ygcont 149 USE phys_local_var_mod, ONLY : nice_vscont, iwc_vscont, rvol_vscont, tau_vscont 148 150 USE phys_local_var_mod, ONLY : nice_cont, iwc_cont, rvol_cont, tau_cont 149 151 … … 219 221 REAL, DIMENSION(klon,klev), INTENT(INOUT):: cfc_seri ! contrail fraction [-] 220 222 REAL, DIMENSION(klon,klev), INTENT(INOUT):: qtc_seri ! contrail total specific humidity [kg/kg] 223 REAL, DIMENSION(klon,klev), INTENT(INOUT):: qic_seri ! contrail ice specific humidity [kg/kg] 221 224 REAL, DIMENSION(klon,klev), INTENT(INOUT):: nic_seri ! contrail ice crystals concentration [#/kg] 222 225 REAL, DIMENSION(klon,klev), INTENT(IN) :: flight_dist ! aviation distance flown concentration [m/s/m3] … … 367 370 REAL :: delta_z, deepconv_coef 368 371 ! for contrails 369 REAL, DIMENSION(klon) :: contfra, qcont, Ncont372 REAL, DIMENSION(klon) :: contfra, qcont, qvcont, Ncont 370 373 REAL, DIMENSION(klon) :: totfra_in, qtot_in 371 374 LOGICAL, DIMENSION(klon) :: pt_pron_clds … … 489 492 dqtc_sub(:,:) = 0. 490 493 dnic_sub(:,:) = 0. 494 dqic_adj(:,:) = 0. 495 dqtc_adj(:,:) = 0. 491 496 dcfc_mix(:,:) = 0. 492 497 dqic_mix(:,:) = 0. … … 787 792 contfra(:) = 0. 788 793 qcont(:) = 0. 794 qvcont(:) = 0. 789 795 Ncont(:) = 0. 790 796 dzsed_cont(:) = 0. … … 858 864 cfc_seri(i,k) = cfc_seri(i,k) * deepconv_coef 859 865 qtc_seri(i,k) = qtc_seri(i,k) * deepconv_coef 866 qic_seri(i,k) = qic_seri(i,k) * deepconv_coef 860 867 nic_seri(i,k) = nic_seri(i,k) * deepconv_coef 861 868 ENDIF … … 973 980 dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), & 974 981 dqvc_sed(:,k), dqvc_auto(:,k), & 975 cfc_seri(:,k), qtc_seri(:,k), nic_seri(:,k), &982 cfc_seri(:,k), qtc_seri(:,k), qic_seri(:,k), nic_seri(:,k), & 976 983 flight_dist(:,k), flight_fuel(:,k), & 977 contfra, qcont, Ncont, &984 contfra, qcont, qvcont, Ncont, & 978 985 Tcritcont(:,k), qcritcont(:,k), potcontfraP(:,k), potcontfraNP(:,k), & 979 986 AEI_contrails(:,k), AEI_surv_contrails(:,k), & … … 983 990 dcfc_ini(:,k), dqic_ini(:,k), dqtc_ini(:,k), dnic_ini(:,k), & 984 991 dcfc_sub(:,k), dqic_sub(:,k), dqtc_sub(:,k), dnic_sub(:,k), & 985 dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k), dnic_mix(:,k), dnic_agg(:,k), & 992 dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k), dnic_mix(:,k), & 993 dnic_agg(:,k), dqic_adj(:,k), dqtc_adj(:,k), & 986 994 dcfc_sed(:,k), dqic_sed(:,k), dqtc_sed(:,k), dnic_sed(:,k), & 987 995 dcfc_auto(:,k), dqic_auto(:,k), dqtc_auto(:,k), dnic_auto(:,k)) … … 1113 1121 ENDIF 1114 1122 1115 IF ( ok_unadjusted_clouds ) THEN1123 IF ( ok_unadjusted_clouds .OR. ok_unadjusted_contrails ) THEN 1116 1124 !--AB We relax the saturation adjustment assumption 1117 1125 !-- qvc (grid-mean vapor in cloud) is calculated by the condensation scheme … … 1171 1179 zqn(i) = zq(i) 1172 1180 rneb(i,k) = 1.0 1173 IF ( ok_unadjusted_clouds ) THEN1181 IF ( ok_unadjusted_clouds .OR. ok_unadjusted_contrails ) THEN 1174 1182 !--AB We relax the saturation adjustment assumption 1175 1183 !-- qvc (grid-mean vapor in cloud) is calculated by the condensation scheme … … 1180 1188 rhcl(i,k)=1.0 1181 1189 ELSE 1182 IF ( ok_unadjusted_clouds ) THEN1190 IF ( ok_unadjusted_clouds .OR. ok_unadjusted_contrails ) THEN 1183 1191 !--AB We relax the saturation adjustment assumption 1184 1192 … … 1375 1383 contfra(i) = 0. 1376 1384 qcont(i) = 0. 1385 qvcont(i) = 0. 1377 1386 Ncont(i) = 0. 1378 1387 ENDIF 1379 1388 ENDDO 1380 1389 cfc_seri(:,k) = contfra(:) 1381 qtc_seri(:,k) = qcont(:)1382 1390 nic_seri(:,k) = Ncont(:) 1383 1391 !--Ice water content of contrails 1384 qice_cont(:,k) = qcont(:) - zqs(:) * contfra(:) 1392 qice_cont(:,k) = qcont(:) - qvcont(:) 1393 IF ( ok_unadjusted_contrails ) THEN 1394 qtc_seri(:,k) = qvcont(:) 1395 qic_seri(:,k) = qice_cont(:,k) 1396 ELSE 1397 qtc_seri(:,k) = qcont(:) 1398 ENDIF 1385 1399 !--Radiative properties 1386 1400 contfrarad(:,k) = contfra(:) … … 1508 1522 rhodz = ( paprs(i,k) - paprs(i,k+1) ) / RG 1509 1523 iwp_cont = 1e3 * dqic_ini(i,k) / dcfc_ini(i,k) * rhodz 1510 rei_cont = MIN( 100., MAX(10., rvol_ygcont(i,k) / eff2vol_radius_contrails))1524 rei_cont = MIN(200., MAX(10., rvol_ygcont(i,k) / eff2vol_radius_contrails)) 1511 1525 tau_ygcont(i,k) = iwp_cont*(3.448e-3+2.431/rei_cont) 1512 1526 ELSE … … 1517 1531 ENDIF 1518 1532 !--All contrails 1519 IF ( cfc_seri(i,k) .GT. 1e- 3) THEN1533 IF ( cfc_seri(i,k) .GT. 1e-8 ) THEN 1520 1534 rho = pplay(i,k) / zt(i) / RD 1521 1535 nice_cont(i,k) = nic_seri(i,k) / cfc_seri(i,k) / 1e6 * rho … … 1525 1539 rhodz = ( paprs(i,k) - paprs(i,k+1) ) / RG 1526 1540 iwp_cont = 1e3 * qice_cont(i,k) / contfrarad(i,k) * rhodz 1527 rei_cont = MIN( 100., MAX(10., rvol_cont(i,k) / eff2vol_radius_contrails))1541 rei_cont = MIN(200., MAX(10., rvol_cont(i,k) / eff2vol_radius_contrails)) 1528 1542 tau_cont(i,k) = iwp_cont*(3.448e-3+2.431/rei_cont) 1543 IF ( tau_cont(i,k) .GT. 0.05 ) THEN 1544 nice_vscont(i,k) = nice_cont(i,k) 1545 iwc_vscont(i,k) = iwc_cont(i,k) 1546 rvol_vscont(i,k) = rvol_cont(i,k) 1547 tau_vscont(i,k) = tau_cont(i,k) 1548 ELSE 1549 nice_vscont(i,k) = missing_val 1550 iwc_vscont(i,k) = missing_val 1551 rvol_vscont(i,k) = missing_val 1552 tau_vscont(i,k) = missing_val 1553 ENDIF 1529 1554 ELSE 1530 1555 nice_cont(i,k) = missing_val … … 1532 1557 rvol_cont(i,k) = missing_val 1533 1558 tau_cont(i,k) = missing_val 1559 nice_vscont(i,k) = missing_val 1560 iwc_vscont(i,k) = missing_val 1561 rvol_vscont(i,k) = missing_val 1562 tau_vscont(i,k) = missing_val 1534 1563 ENDIF 1535 1564 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.