Ignore:
Timestamp:
May 1, 2025, 6:00:03 PM (2 months ago)
Author:
aborella
Message:

Changed the contrails classes that are advected

File:
1 edited

Legend:

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

    r5631 r5641  
    2525     dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj,      &
    2626     dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati,        &
    27      cfa_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, &
    2929     qcritcont, potcontfraP, potcontfraNP,              &
    3030     cloudth_sth,                                       &
     
    128128USE phys_local_var_mod, ONLY : issrfra100to150, issrfra150to200, issrfra200to250
    129129USE 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
     130USE phys_local_var_mod, ONLY : dcfl_ini, dqil_ini, dqtl_ini, dcfl_sub, dqil_sub, dqtl_sub
     131USE phys_local_var_mod, ONLY : dcfl_cir, dqtl_cir, dcfl_mix, dqil_mix, dqtl_mix
     132USE phys_local_var_mod, ONLY : dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix
    132133
    133134IMPLICIT NONE
     
    190191  ! INPUT/OUTPUT aviation
    191192  !--------------------------------------------------
    192   REAL, DIMENSION(klon,klev),      INTENT(INOUT):: cfa_seri         ! linear contrails fraction [-]
    193   REAL, DIMENSION(klon,klev),      INTENT(INOUT):: pcf_seri         ! contrails induced cirrus fraction [-]
    194   REAL, DIMENSION(klon,klev),      INTENT(INOUT):: qva_seri         ! linear contrails total specific humidity [kg/kg]
    195   REAL, DIMENSION(klon,klev),      INTENT(INOUT):: qia_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]
    196197  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_dist      ! aviation distance flown within the mesh [m/s/mesh]
    197198  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_h2o       ! aviation H2O emitted within the mesh [kgH2O/s/mesh]
     
    251252  ! for contrails and aviation
    252253
    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]
    254256  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: Tcritcont      !--critical temperature for contrail formation [K]
    255257  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qcritcont      !--critical specific humidity for contrail formation [kg/kg]
     
    332334  REAL :: delta_z
    333335  ! for contrails
    334   REAL, DIMENSION(klon) :: contfra, perscontfra, qcont
     336  REAL, DIMENSION(klon) :: lincontfra, circontfra, qlincont, qcircont
    335337  REAL, DIMENSION(klon) :: zq_nodeep
    336338  LOGICAL, DIMENSION(klon) :: pt_pron_clds
     
    662664          !--Initialisation
    663665          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.
    667670          ENDIF
    668671
     
    816819                        dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), dqised(:,k), &
    817820                        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, &
    820824                        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))
    825831
    826832                    DO i = 1, klon
     
    10491055      !--Contrails precipitate as natural clouds. We save the partition of ice
    10501056      !--between natural clouds and contrails
    1051       !--NB. we use qcont as a temporary variable to save this partition
     1057      !--NB. we use qlincont / qcircont as a temporary variable to save this partition
    10521058      DO i = 1, klon
     1059        dcf_sub(i,k) = lincontfra(i)
     1060        dqi_sub(i,k) = qlincont(i)
    10531061        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)
    10551064        ELSE
    1056           qcont(i) = 0.
     1065          qlincont(i) = 0.
     1066          qcircont(i) = 0.
    10571067        ENDIF
    10581068      ENDDO
     
    10951105      !--Contrails fraction is left unchanged, but contrails water has changed
    10961106      DO i = 1, klon
    1097         IF ( zoliqi(i) .LE. 0. ) THEN
    1098           contfra(i) = 0.
    1099           qcont(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)
    11001110        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.
    11021115        ENDIF
    11031116      ENDDO
     
    11981211    !--AB Write diagnostics and tracers for ice supersaturation
    11991212    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(:)
    12031217      DO i = 1, klon
    12041218        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)
    12081225        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.
    12181228        ENDIF
    12191229      ENDDO
Note: See TracChangeset for help on using the changeset viewer.