Ignore:
Timestamp:
Dec 23, 2024, 9:37:29 PM (24 hours ago)
Author:
aborella
Message:

Added diagnostics for contrails fraction

Location:
LMDZ6/branches/contrails/libf/phylmd
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90

    r5455 r5456  
    6363      cldfra, qvc, dz, V_cell, pdf_loc, pdf_scale, pdf_alpha, &
    6464      Tcritcont, qcritcont, potcontfraP, potcontfraNP, contfra, &
    65       dcf_avi, dqvc_avi, dqi_avi &
     65      dcontfra_cir, dcf_avi, dqvc_avi, dqi_avi &
    6666      )
    6767
     
    100100REAL, INTENT(OUT) :: potcontfraP  ! potential persistent contrail fraction [-]
    101101REAL, INTENT(OUT) :: potcontfraNP ! potential non-persistent contrail fraction [-]
    102 REAL, INTENT(OUT) :: contfra      ! contrail fraction [-]
     102REAL, INTENT(OUT) :: contfra      ! linear contrail fraction [-]
     103REAL, INTENT(OUT) :: dcontfra_cir ! linear contrail fraction to cirrus cloud fraction tendency [s-1]
    103104REAL, INTENT(OUT) :: dcf_avi      ! cloud fraction tendency because of aviation [s-1]
    104105REAL, INTENT(OUT) :: dqvc_avi     ! specific ice content tendency because of aviation [kg/kg/s]
     
    187188!--Convert existing contrail fraction into "natural" cirrus cloud fraction
    188189contfra = rcont_seri * cldfra
    189 contfra = contfra * EXP( - dtime / linear_contrails_lifetime )
     190dcontfra_cir = contfra * ( EXP( - dtime / linear_contrails_lifetime ) - 1. )
     191contfra = contfra + dcontfra_cir
    190192
    191193!--Add a source of contrails from aviation
     
    205207
    206208  !--Add tendencies
    207   contfra = contfra + contfra_new
     209  contfra = contfra + dcf_avi
    208210ENDIF
    209211
     
    644646flight_h2o(:,:) = 0.
    645647
    646 !DO i=1, klon
    647 ! IF ( ( latitude_deg(i) .GE. 42. ) .AND. ( latitude_deg(i) .LE. 48. ) ) THEN
    648 !   flight_dist(i,14) = 50000.  !--5000 m of flight/second in grid cell x 10 scaling
    649 !   flight_h2o(i,14) = 100.  !--10 kgH2O/second in grid cell x 10 scaling
    650 ! ENDIF
    651 !ENDDO
     648DO 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
     653ENDDO
    652654
    653655END SUBROUTINE read_aviation_emissions
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90

    r5455 r5456  
    2121     cf_seri, rvc_seri, u_seri, v_seri,                 &
    2222     qsub, qissr, qcld, subfra, issrfra, gamma_cond,    &
    23      dcf_sub, dcf_con, dcf_mix,          &
     23     dcf_sub, dcf_con, dcf_mix,                         &
    2424     dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj,      &
    2525     dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati,        &
    26      rcont_seri, flight_dist, flight_h2o,               &
     26     rcont_seri, flight_dist, flight_h2o, contfra,      &
    2727     Tcritcont, qcritcont, potcontfraP, potcontfraNP,   &
    28      dcf_avi, dqi_avi, dqvc_avi,                        &
     28     dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi,          &
    2929     cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
    3030     qraindiag, qsnowdiag, dqreva, dqssub, dqrauto,     &
     
    232232  ! for contrails and aviation
    233233
    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]
    238240  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dcf_avi        !--cloud fraction tendency because of aviation [s-1]
    239241  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqi_avi        !--specific ice content tendency because of aviation [kg/kg/s]
     
    311313  REAL :: delta_z
    312314  ! for contrails
    313   REAL, DIMENSION(klon) :: contfra
    314315  !--Added for ice supersaturation (ok_ice_supersat) and contrails (ok_plane_contrail)
    315316  ! Constants used for calculating ratios that are advected (using a parent-child
     
    416417dqvc_con(:,:)   = 0.
    417418dqvc_mix(:,:)   = 0.
     419contfra(:,:)    = 0.
    418420Tcritcont(:,:)  = missing_val
    419421qcritcont(:,:)  = missing_val
    420422potcontfraP(:,:)= 0.
    421423potcontfraNP(:,:)= 0.
     424dcontfra_cir(:,:)= 0.
    422425dcf_avi(:,:)    = 0.
    423426dqi_avi(:,:)    = 0.
     
    728731                        dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), &
    729732                        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), &
    731734                        Tcritcont(:,k), qcritcont(:,k), potcontfraP(:,k), potcontfraNP(:,k), &
    732                         dcf_avi(:,k), dqi_avi(:,k), dqvc_avi(:,k))
     735                        dcontfra_cir(:,k), dcf_avi(:,k), dqi_avi(:,k), dqvc_avi(:,k))
    733736
    734737
     
    10661069          rvc_seri(i,k) = qvc(i) / zq(i)
    10671070        ELSE
    1068           rvc_seri(i,k) = 0.
     1071          rvc_seri(i,k) = min_ratio
    10691072        ENDIF
    10701073        !--The MIN barrier is NEEDED because of:
     
    10751078        IF ( ok_plane_contrail ) THEN
    10761079          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)
    10781081          ELSE
    1079             rcont_seri(i,k) = 0.
     1082            rcont_seri(i,k) = min_ratio
    10801083          ENDIF
    10811084          !--This barrier should never be activated
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5453 r5456  
    100100      dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, &
    101101      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)
    103104
    104105!----------------------------------------------------------------------
     
    191192!  NB. idem for the INOUT
    192193!
    193 REAL,     INTENT(INOUT), DIMENSION(klon) :: contfra      ! contrail fraction [-]
     194REAL,     INTENT(INOUT), DIMENSION(klon) :: contfra      ! linear contrail fraction [-]
    194195REAL,     INTENT(INOUT), DIMENSION(klon) :: Tcritcont    ! critical temperature for contrail formation [K]
    195196REAL,     INTENT(INOUT), DIMENSION(klon) :: qcritcont    ! critical specific humidity for contrail formation [kg/kg]
    196197REAL,     INTENT(INOUT), DIMENSION(klon) :: potcontfraP  ! potential persistent contrail fraction [-]
    197198REAL,     INTENT(INOUT), DIMENSION(klon) :: potcontfraNP ! potential non-persistent contrail fraction [-]
     199REAL,     INTENT(INOUT), DIMENSION(klon) :: dcontfra_cir ! linear contrail fraction to cirrus cloud fraction tendency [s-1]
    198200REAL,     INTENT(INOUT), DIMENSION(klon) :: dcf_avi      ! cloud fraction tendency because of aviation [s-1]
    199201REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_avi      ! specific ice content tendency because of aviation [kg/kg/s]
     
    788790            dz, V_cell, pdf_loc, pdf_scale, pdf_alpha, &
    789791            Tcritcont(i), qcritcont(i), potcontfraP(i), potcontfraNP(i), contfra(i), &
    790             dcf_avi(i), dqvc_avi(i), dqi_avi(i) &
     792            dcontfra_cir(i), dcf_avi(i), dqvc_avi(i), dqi_avi(i) &
    791793            )
    792794
     
    809811        qvc(i)    = 0.
    810812        qincld(i) = qsat(i)
     813        IF ( ok_plane_contrail ) contfra(i) = 0.
    811814      ELSE
    812815        qincld(i) = qcld(i) / cldfra(i)
     
    826829      dqvc_mix(i) = dqvc_mix(i) / dtime
    827830      IF ( ok_plane_contrail ) THEN
     831        dcontfra_cir(i) = dcontfra_cir(i) / dtime
    828832        dcf_avi(i)  = dcf_avi(i)  / dtime
    829833        dqi_avi(i)  = dqi_avi(i)  / dtime
  • LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90

    r5453 r5456  
    675675      REAL, SAVE, ALLOCATABLE :: potcontfraP(:,:), potcontfraNP(:,:)
    676676      !$OMP THREADPRIVATE(potcontfraP, potcontfraNP)
     677      REAL, SAVE, ALLOCATABLE :: contfra(:,:), dcontfra_cir(:,:)
     678      !$OMP THREADPRIVATE(contfra, dcontfra_cir)
    677679      REAL, SAVE, ALLOCATABLE :: dcf_avi(:,:), dqi_avi(:,:), dqvc_avi(:,:)
    678680      !$OMP THREADPRIVATE(dcf_avi, dqi_avi, dqvc_avi)
     
    12221224      ALLOCATE(Tcritcont(klon,klev), qcritcont(klon,klev))
    12231225      ALLOCATE(potcontfraP(klon,klev), potcontfraNP(klon,klev))
     1226      ALLOCATE(contfra(klon,klev), dcontfra_cir(klon,klev))
    12241227      ALLOCATE(dcf_avi(klon,klev), dqi_avi(klon,klev), dqvc_avi(klon,klev))
    12251228
     
    16261629      DEALLOCATE(d_q_avi, rcont_seri, d_rcont_dyn, flight_dist, flight_h2o)
    16271630      DEALLOCATE(Tcritcont, qcritcont, potcontfraP, potcontfraNP)
     1631      DEALLOCATE(contfra, dcontfra_cir)
    16281632      DEALLOCATE(dcf_avi, dqi_avi, dqvc_avi)
    16291633
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90

    r5453 r5456  
    21822182  TYPE(ctrl_out), SAVE :: o_potcontfraNP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
    21832183    '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)/))
    21842188  TYPE(ctrl_out), SAVE :: o_dcfavi = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    21852189    'dcfavi', 'Aviation cloud fraction tendency', 's-1', (/ ('', i=1, 10) /))
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90

    r5453 r5456  
    226226         o_dqvcadj, o_dqvcsub, o_dqvccon, o_dqvcmix, o_qsatl, o_qsati, &
    227227!-- LSCP - aviation variables
    228          o_rcontseri, o_drcontdyn, o_dqavi, &
     228         o_rcontseri, o_drcontdyn, o_dqavi, o_contfra, &
    229229         o_Tcritcont, o_qcritcont, o_potcontfraP, o_potcontfraNP, &
    230          o_dcfavi, 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, &
    231231!--interactive CO2
    232232         o_flx_co2_ocean, o_flx_co2_ocean_cor, &
     
    350350         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, &
    351351         qsatliq, qsatice, &
    352          rcont_seri, d_rcont_dyn, d_q_avi, &
     352         rcont_seri, d_rcont_dyn, d_q_avi, contfra, &
    353353         Tcritcont, qcritcont, potcontfraP, potcontfraNP, &
    354          dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
     354         dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
    355355         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
    356356         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
     
    21322132         CALL histwrite_phy(o_potcontfraP, potcontfraP)
    21332133         CALL histwrite_phy(o_potcontfraNP, potcontfraNP)
     2134         CALL histwrite_phy(o_contfra, contfra)
     2135         CALL histwrite_phy(o_dcontfracir, dcontfra_cir)
    21342136         CALL histwrite_phy(o_dcfavi, dcf_avi)
    21352137         CALL histwrite_phy(o_dqiavi, dqi_avi)
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5453 r5456  
    329329       !-- LSCP - aviation and contrails variables
    330330       d_q_avi, rcont_seri, d_rcont_dyn, flight_dist, flight_h2o, &
    331        Tcritcont, qcritcont, potcontfraP, potcontfraNP, &
    332        dcf_avi, dqi_avi, dqvc_avi, &
     331       contfra, Tcritcont, qcritcont, potcontfraP, potcontfraNP, &
     332       dcontfra_cir, dcf_avi, dqi_avi, dqvc_avi, &
    333333       !
    334334       cldemi,  &
     
    39143914         dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    39153915         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, &
    39183919         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
    39193920         qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, dqrcol, dqrmelt, &
Note: See TracChangeset for help on using the changeset viewer.