Changeset 5456 for LMDZ6/branches/contrails/libf/phylmd
- Timestamp:
- Dec 23, 2024, 9:37:29 PM (24 hours ago)
- Location:
- LMDZ6/branches/contrails/libf/phylmd
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90
r5455 r5456 63 63 cldfra, qvc, dz, V_cell, pdf_loc, pdf_scale, pdf_alpha, & 64 64 Tcritcont, qcritcont, potcontfraP, potcontfraNP, contfra, & 65 dc f_avi, dqvc_avi, dqi_avi &65 dcontfra_cir, dcf_avi, dqvc_avi, dqi_avi & 66 66 ) 67 67 … … 100 100 REAL, INTENT(OUT) :: potcontfraP ! potential persistent contrail fraction [-] 101 101 REAL, INTENT(OUT) :: potcontfraNP ! potential non-persistent contrail fraction [-] 102 REAL, INTENT(OUT) :: contfra ! contrail fraction [-] 102 REAL, INTENT(OUT) :: contfra ! linear contrail fraction [-] 103 REAL, INTENT(OUT) :: dcontfra_cir ! linear contrail fraction to cirrus cloud fraction tendency [s-1] 103 104 REAL, INTENT(OUT) :: dcf_avi ! cloud fraction tendency because of aviation [s-1] 104 105 REAL, INTENT(OUT) :: dqvc_avi ! specific ice content tendency because of aviation [kg/kg/s] … … 187 188 !--Convert existing contrail fraction into "natural" cirrus cloud fraction 188 189 contfra = rcont_seri * cldfra 189 contfra = contfra * EXP( - dtime / linear_contrails_lifetime ) 190 dcontfra_cir = contfra * ( EXP( - dtime / linear_contrails_lifetime ) - 1. ) 191 contfra = contfra + dcontfra_cir 190 192 191 193 !--Add a source of contrails from aviation … … 205 207 206 208 !--Add tendencies 207 contfra = contfra + contfra_new209 contfra = contfra + dcf_avi 208 210 ENDIF 209 211 … … 644 646 flight_h2o(:,:) = 0. 645 647 646 !DO i=1, klon647 !IF ( ( latitude_deg(i) .GE. 42. ) .AND. ( latitude_deg(i) .LE. 48. ) ) THEN648 ! flight_dist(i,14) = 50000. !--5000 m of flight/second in grid cell x 10 scaling649 ! flight_h2o(i,14) = 100. !--10 kgH2O/second in grid cell x 10 scaling650 !ENDIF651 !ENDDO648 DO i=1, klon 649 IF ( ( latitude_deg(i) .GE. 42. ) .AND. ( latitude_deg(i) .LE. 48. ) ) THEN 650 flight_dist(i,15) = 50000. !--5000 m of flight/second in grid cell x 10 scaling 651 flight_h2o(i,15) = 100. !--10 kgH2O/second in grid cell x 10 scaling 652 ENDIF 653 ENDDO 652 654 653 655 END SUBROUTINE read_aviation_emissions -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90
r5455 r5456 21 21 cf_seri, rvc_seri, u_seri, v_seri, & 22 22 qsub, qissr, qcld, subfra, issrfra, gamma_cond, & 23 dcf_sub, dcf_con, dcf_mix, &23 dcf_sub, dcf_con, dcf_mix, & 24 24 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, & 25 25 dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati, & 26 rcont_seri, flight_dist, flight_h2o, 26 rcont_seri, flight_dist, flight_h2o, contfra, & 27 27 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 28 dc f_avi, dqi_avi, dqvc_avi,&28 dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi, & 29 29 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, & 30 30 qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, & … … 232 232 ! for contrails and aviation 233 233 234 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tcritcont ! critical temperature for contrail formation [K] 235 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcritcont ! critical specific humidity for contrail formation [kg/kg] 236 REAL, DIMENSION(klon,klev), INTENT(OUT) :: potcontfraP ! potential persistent contrail fraction [-] 237 REAL, DIMENSION(klon,klev), INTENT(OUT) :: potcontfraNP ! potential non-persistent contrail fraction [-] 234 REAL, DIMENSION(klon,klev), INTENT(OUT) :: contfra !--linear contrail fraction [-] 235 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tcritcont !--critical temperature for contrail formation [K] 236 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcritcont !--critical specific humidity for contrail formation [kg/kg] 237 REAL, DIMENSION(klon,klev), INTENT(OUT) :: potcontfraP !--potential persistent contrail fraction [-] 238 REAL, DIMENSION(klon,klev), INTENT(OUT) :: potcontfraNP !--potential non-persistent contrail fraction [-] 239 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dcontfra_cir !--linear contrail fraction to cirrus cloud fraction tendency [s-1] 238 240 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dcf_avi !--cloud fraction tendency because of aviation [s-1] 239 241 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqi_avi !--specific ice content tendency because of aviation [kg/kg/s] … … 311 313 REAL :: delta_z 312 314 ! for contrails 313 REAL, DIMENSION(klon) :: contfra314 315 !--Added for ice supersaturation (ok_ice_supersat) and contrails (ok_plane_contrail) 315 316 ! Constants used for calculating ratios that are advected (using a parent-child … … 416 417 dqvc_con(:,:) = 0. 417 418 dqvc_mix(:,:) = 0. 419 contfra(:,:) = 0. 418 420 Tcritcont(:,:) = missing_val 419 421 qcritcont(:,:) = missing_val 420 422 potcontfraP(:,:)= 0. 421 423 potcontfraNP(:,:)= 0. 424 dcontfra_cir(:,:)= 0. 422 425 dcf_avi(:,:) = 0. 423 426 dqi_avi(:,:) = 0. … … 728 731 dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), & 729 732 dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), & 730 rcont_seri(:,k), flight_dist(:,k), flight_h2o(:,k), contfra , &733 rcont_seri(:,k), flight_dist(:,k), flight_h2o(:,k), contfra(:,k), & 731 734 Tcritcont(:,k), qcritcont(:,k), potcontfraP(:,k), potcontfraNP(:,k), & 732 dc f_avi(:,k), dqi_avi(:,k), dqvc_avi(:,k))735 dcontfra_cir(:,k), dcf_avi(:,k), dqi_avi(:,k), dqvc_avi(:,k)) 733 736 734 737 … … 1066 1069 rvc_seri(i,k) = qvc(i) / zq(i) 1067 1070 ELSE 1068 rvc_seri(i,k) = 0.1071 rvc_seri(i,k) = min_ratio 1069 1072 ENDIF 1070 1073 !--The MIN barrier is NEEDED because of: … … 1075 1078 IF ( ok_plane_contrail ) THEN 1076 1079 IF ( rneb(i,k) .GT. min_qParent ) THEN 1077 rcont_seri(i,k) = contfra(i ) / rneb(i,k)1080 rcont_seri(i,k) = contfra(i,k) / rneb(i,k) 1078 1081 ELSE 1079 rcont_seri(i,k) = 0.1082 rcont_seri(i,k) = min_ratio 1080 1083 ENDIF 1081 1084 !--This barrier should never be activated -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90
r5453 r5456 100 100 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, & 101 101 rcont_seri, flight_dist, flight_h2o, contfra, & 102 Tcritcont, qcritcont, potcontfraP, potcontfraNP, dcf_avi, dqi_avi, dqvc_avi) 102 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 103 dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi) 103 104 104 105 !---------------------------------------------------------------------- … … 191 192 ! NB. idem for the INOUT 192 193 ! 193 REAL, INTENT(INOUT), DIMENSION(klon) :: contfra ! contrail fraction [-]194 REAL, INTENT(INOUT), DIMENSION(klon) :: contfra ! linear contrail fraction [-] 194 195 REAL, INTENT(INOUT), DIMENSION(klon) :: Tcritcont ! critical temperature for contrail formation [K] 195 196 REAL, INTENT(INOUT), DIMENSION(klon) :: qcritcont ! critical specific humidity for contrail formation [kg/kg] 196 197 REAL, INTENT(INOUT), DIMENSION(klon) :: potcontfraP ! potential persistent contrail fraction [-] 197 198 REAL, INTENT(INOUT), DIMENSION(klon) :: potcontfraNP ! potential non-persistent contrail fraction [-] 199 REAL, INTENT(INOUT), DIMENSION(klon) :: dcontfra_cir ! linear contrail fraction to cirrus cloud fraction tendency [s-1] 198 200 REAL, INTENT(INOUT), DIMENSION(klon) :: dcf_avi ! cloud fraction tendency because of aviation [s-1] 199 201 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_avi ! specific ice content tendency because of aviation [kg/kg/s] … … 788 790 dz, V_cell, pdf_loc, pdf_scale, pdf_alpha, & 789 791 Tcritcont(i), qcritcont(i), potcontfraP(i), potcontfraNP(i), contfra(i), & 790 dc f_avi(i), dqvc_avi(i), dqi_avi(i) &792 dcontfra_cir(i), dcf_avi(i), dqvc_avi(i), dqi_avi(i) & 791 793 ) 792 794 … … 809 811 qvc(i) = 0. 810 812 qincld(i) = qsat(i) 813 IF ( ok_plane_contrail ) contfra(i) = 0. 811 814 ELSE 812 815 qincld(i) = qcld(i) / cldfra(i) … … 826 829 dqvc_mix(i) = dqvc_mix(i) / dtime 827 830 IF ( ok_plane_contrail ) THEN 831 dcontfra_cir(i) = dcontfra_cir(i) / dtime 828 832 dcf_avi(i) = dcf_avi(i) / dtime 829 833 dqi_avi(i) = dqi_avi(i) / dtime -
LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90
r5453 r5456 675 675 REAL, SAVE, ALLOCATABLE :: potcontfraP(:,:), potcontfraNP(:,:) 676 676 !$OMP THREADPRIVATE(potcontfraP, potcontfraNP) 677 REAL, SAVE, ALLOCATABLE :: contfra(:,:), dcontfra_cir(:,:) 678 !$OMP THREADPRIVATE(contfra, dcontfra_cir) 677 679 REAL, SAVE, ALLOCATABLE :: dcf_avi(:,:), dqi_avi(:,:), dqvc_avi(:,:) 678 680 !$OMP THREADPRIVATE(dcf_avi, dqi_avi, dqvc_avi) … … 1222 1224 ALLOCATE(Tcritcont(klon,klev), qcritcont(klon,klev)) 1223 1225 ALLOCATE(potcontfraP(klon,klev), potcontfraNP(klon,klev)) 1226 ALLOCATE(contfra(klon,klev), dcontfra_cir(klon,klev)) 1224 1227 ALLOCATE(dcf_avi(klon,klev), dqi_avi(klon,klev), dqvc_avi(klon,klev)) 1225 1228 … … 1626 1629 DEALLOCATE(d_q_avi, rcont_seri, d_rcont_dyn, flight_dist, flight_h2o) 1627 1630 DEALLOCATE(Tcritcont, qcritcont, potcontfraP, potcontfraNP) 1631 DEALLOCATE(contfra, dcontfra_cir) 1628 1632 DEALLOCATE(dcf_avi, dqi_avi, dqvc_avi) 1629 1633 -
LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90
r5453 r5456 2182 2182 TYPE(ctrl_out), SAVE :: o_potcontfraNP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2183 2183 'potcontfraNP', 'Potential non-persistent contrail fraction', '-', (/ ('', i=1,10)/)) 2184 TYPE(ctrl_out), SAVE :: o_contfra = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2185 'contfra', 'Linear contrail fraction', '-', (/ ('', i=1,10)/)) 2186 TYPE(ctrl_out), SAVE :: o_dcontfracir = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2187 'dcontfracir', 'Linear contrail fraction to cirrus cloud fraction tendency', '-', (/ ('', i=1,10)/)) 2184 2188 TYPE(ctrl_out), SAVE :: o_dcfavi = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2185 2189 'dcfavi', 'Aviation cloud fraction tendency', 's-1', (/ ('', i=1, 10) /)) -
LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90
r5453 r5456 226 226 o_dqvcadj, o_dqvcsub, o_dqvccon, o_dqvcmix, o_qsatl, o_qsati, & 227 227 !-- LSCP - aviation variables 228 o_rcontseri, o_drcontdyn, o_dqavi, &228 o_rcontseri, o_drcontdyn, o_dqavi, o_contfra, & 229 229 o_Tcritcont, o_qcritcont, o_potcontfraP, o_potcontfraNP, & 230 o_dc favi, o_dqiavi, o_dqvcavi, o_flight_dist, o_flight_h2o, &230 o_dcontfracir, o_dcfavi, o_dqiavi, o_dqvcavi, o_flight_dist, o_flight_h2o, & 231 231 !--interactive CO2 232 232 o_flx_co2_ocean, o_flx_co2_ocean_cor, & … … 350 350 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, & 351 351 qsatliq, qsatice, & 352 rcont_seri, d_rcont_dyn, d_q_avi, &352 rcont_seri, d_rcont_dyn, d_q_avi, contfra, & 353 353 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 354 dc f_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &354 dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, & 355 355 alp_bl_det, alp_bl_fluct_m, alp_bl_conv, & 356 356 alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, & … … 2132 2132 CALL histwrite_phy(o_potcontfraP, potcontfraP) 2133 2133 CALL histwrite_phy(o_potcontfraNP, potcontfraNP) 2134 CALL histwrite_phy(o_contfra, contfra) 2135 CALL histwrite_phy(o_dcontfracir, dcontfra_cir) 2134 2136 CALL histwrite_phy(o_dcfavi, dcf_avi) 2135 2137 CALL histwrite_phy(o_dqiavi, dqi_avi) -
LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90
r5453 r5456 329 329 !-- LSCP - aviation and contrails variables 330 330 d_q_avi, rcont_seri, d_rcont_dyn, flight_dist, flight_h2o, & 331 Tcritcont, qcritcont, potcontfraP, potcontfraNP, &332 dc f_avi, dqi_avi, dqvc_avi, &331 contfra, Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 332 dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi, & 333 333 ! 334 334 cldemi, & … … 3914 3914 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 3915 3915 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & 3916 rcont_seri, flight_dist, flight_h2o, & 3917 Tcritcont, qcritcont, potcontfraP, potcontfraNP, dcf_avi, dqi_avi, dqvc_avi, & 3916 rcont_seri, flight_dist, flight_h2o, contfra, & 3917 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 3918 dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi, & 3918 3919 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, & 3919 3920 qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, dqrcol, dqrmelt, &
Note: See TracChangeset
for help on using the changeset viewer.