Ignore:
Timestamp:
Dec 23, 2024, 6:12:29 PM (5 weeks ago)
Author:
aborella
Message:

First implementation of the contrails parameterisation
Lacks the emission of H2O + the impact on radiative transfer

Location:
LMDZ6/branches/contrails/libf
Files:
1 added
11 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/misc/readTracFiles_mod.f90

    r5393 r5452  
    122122  !--- SOME PARAMETERS THAT ARE NOT LIKELY TO CHANGE OFTEN
    123123  CHARACTER(LEN=maxlen), SAVE      :: tran0        = 'air'      !--- Default transporting fluid
    124   CHARACTER(LEN=maxlen), PARAMETER :: old_phases   = 'vlibfc'    !--- Old phases for water (no separator)
    125   CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsbfc'    !--- Known phases initials
     124  CHARACTER(LEN=maxlen), PARAMETER :: old_phases   = 'vlibfca'    !--- Old phases for water (no separator)
     125  CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsbfca'    !--- Known phases initials
    126126  INTEGER, PARAMETER :: nphases = LEN_TRIM(known_phases)        !--- Number of phases
    127127  CHARACTER(LEN=maxlen), SAVE      :: phases_names(nphases) &   !--- Known phases names
    128                                 = ['gaseous  ', 'liquid   ', 'solid    ','blownSnow', 'fracCloud', 'cldVapRat']
     128                                = ['gaseous  ', 'liquid   ', 'solid    ','blownSnow', 'fracCloud', 'cldVapRat', 'aviContRa']
    129129  CHARACTER(LEN=1),      SAVE :: phases_sep  =  '_'             !--- Phase separator
    130130  CHARACTER(LEN=maxlen), SAVE :: isoFile = 'isotopes_params.def'!--- Name of the isotopes parameters file
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90

    r5450 r5452  
    2424     dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj,      &
    2525     dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati,        &
    26      Tcontr, qcontr, qcontr2, fcontrN, fcontrP, dcf_avi,&
    27      dqi_avi, dqvc_avi, flight_dist, flight_h2o,        &
     26     rcont_seri, flight_dist, flight_h2o,               &
     27     Tcritcont, qcritcont, potcontfraP, potcontfraNP,   &
     28     dcf_avi, dqi_avi, dqvc_avi,                        &
    2829     cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
    2930     qraindiag, qsnowdiag, dqreva, dqssub, dqrauto,     &
     
    119120USE lmdz_lscp_ini, ONLY : ok_poprecip, ok_bug_phase_lscp
    120121USE lmdz_lscp_ini, ONLY : ok_ice_supersat, ok_unadjusted_clouds, iflag_icefrac
     122USE lmdz_lscp_ini, ONLY : ok_plane_contrail
    121123
    122124IMPLICIT NONE
     
    172174  ! INPUT/OUTPUT aviation
    173175  !--------------------------------------------------
     176  REAL, DIMENSION(klon,klev),      INTENT(INOUT):: rcont_seri       ! ratio of contrails fraction to total cloud fraction [-]
    174177  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_dist      ! Aviation distance flown within the mesh [m/s/mesh]
    175178  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_h2o       ! Aviation H2O emitted within the mesh [kg H2O/s/mesh]
     
    229232  ! for contrails and aviation
    230233
    231   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: Tcontr         !--threshold temperature for contrail formation [K]
    232   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qcontr         !--threshold humidity for contrail formation [kg/kg]
    233   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qcontr2        !--// (2nd expression more consistent with LMDZ expression of q)
    234   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: fcontrN        !--fraction of grid favourable to non-persistent contrails
    235   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: fcontrP        !--fraction of grid favourable to persistent contrails
     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 [-]
    236238  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dcf_avi        !--cloud fraction tendency because of aviation [s-1]
    237239  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqi_avi        !--specific ice content tendency because of aviation [kg/kg/s]
     
    308310  REAL, DIMENSION(klon) :: qvc, qvcl, shear
    309311  REAL :: delta_z
    310   !--Added for ice supersaturation (ok_ice_supersat) and contrails (ok_plane_contrails)
     312  ! for contrails
     313  REAL, DIMENSION(klon) :: contfra
     314  !--Added for ice supersaturation (ok_ice_supersat) and contrails (ok_plane_contrail)
    311315  ! Constants used for calculating ratios that are advected (using a parent-child
    312316  ! formalism). This is not done in the dynamical core because at this moment,
     
    412416dqvc_con(:,:)   = 0.
    413417dqvc_mix(:,:)   = 0.
    414 fcontrN(:,:)    = 0.
    415 fcontrP(:,:)    = 0.
    416 Tcontr(:,:)     = missing_val
    417 qcontr(:,:)     = missing_val
    418 qcontr2(:,:)    = missing_val
     418Tcritcont(:,:)  = missing_val
     419qcritcont(:,:)  = missing_val
     420potcontfraP(:,:)= missing_val
     421potcontfraNP(:,:)= missing_val
    419422dcf_avi(:,:)    = 0.
    420423dqi_avi(:,:)    = 0.
     
    725728                        dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), &
    726729                        dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), &
    727                         Tcontr(:,k), qcontr(:,k), qcontr2(:,k), fcontrN(:,k), fcontrP(:,k), &
    728                         flight_dist(:,k), flight_h2o(:,k), &
     730                        rcont_seri(:,k), flight_dist(:,k), flight_h2o(:,k), contfra, &
     731                        Tcritcont(:,k), qcritcont(:,k), potcontfraP(:,k), potcontfraNP(:,k), &
    729732                        dcf_avi(:,k), dqi_avi(:,k), dqvc_avi(:,k))
    730733
     
    10701073        !--The MAX barrier is a safeguard that should not be activated
    10711074        rvc_seri(i,k) = MIN(MAX(rvc_seri(i,k), 0.), 1.)
     1075        IF ( ok_plane_contrail ) THEN
     1076          IF ( rneb(i,k) .GT. min_qParent ) THEN
     1077            rcont_seri(i,k) = contfra(i) / rneb(i,k)
     1078          ELSE
     1079            rcont_seri(i,k) = min_ratio
     1080          ENDIF
     1081          !--This barrier should never be activated
     1082          rcont_seri(i,k) = MIN(MAX(rcont_seri(i,k), 0.), 1.)
     1083        ENDIF
    10721084
    10731085        !--Diagnostics
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5450 r5452  
    9999      cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, &
    100100      dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, &
    101       Tcontr, qcontr, qcontr2, fcontrN, fcontrP, flight_dist, flight_h2o, &
    102       dcf_avi, dqi_avi, dqvc_avi)
     101      rcont_seri, flight_dist, flight_h2o, contfra, &
     102      Tcritcont, qcritcont, potcontfraP, potcontfraNP, dcf_avi, dqi_avi, dqvc_avi)
    103103
    104104!----------------------------------------------------------------------
     
    119119USE lmdz_lscp_ini,        ONLY: eps, temp_nowater, ok_weibull_warm_clouds
    120120USE lmdz_lscp_ini,        ONLY: ok_unadjusted_clouds, iflag_cloud_sublim_pdf
    121 USE lmdz_lscp_ini,        ONLY: lunout
     121USE lmdz_lscp_ini,        ONLY: ok_plane_contrail
    122122
    123123USE lmdz_lscp_ini,        ONLY: depo_coef_cirrus, capa_cond_cirrus, std_subl_pdf_lscp, &
    124124                                mu_subl_pdf_lscp, beta_pdf_lscp, temp_thresh_pdf_lscp, &
    125125                                std100_pdf_lscp, k0_pdf_lscp, kappa_pdf_lscp, &
    126                                 coef_mixing_lscp, coef_shear_lscp, &
    127                                 chi_mixing_lscp, rho_ice
     126                                coef_mixing_lscp, coef_shear_lscp, chi_mixing_lscp
     127
     128USE lmdz_aviation,        ONLY: contrails_mixing, contrails_formation_evolution
    128129
    129130IMPLICIT NONE
     
    144145REAL,     INTENT(IN)   , DIMENSION(klon) :: qi_seri       ! specific ice water content [kg/kg]
    145146REAL,     INTENT(IN)   , DIMENSION(klon) :: shear         ! vertical shear [s-1]
    146 REAL,     INTENT(IN)   , DIMENSION(klon) :: pbl_eps       !
    147 REAL,     INTENT(IN)   , DIMENSION(klon) :: cell_area     !
     147REAL,     INTENT(IN)   , DIMENSION(klon) :: pbl_eps       ! TKE dissipation [m2/s3]
     148REAL,     INTENT(IN)   , DIMENSION(klon) :: cell_area     ! cell area [m2]
    148149REAL,     INTENT(IN)   , DIMENSION(klon) :: temp          ! temperature [K]
    149150REAL,     INTENT(IN)   , DIMENSION(klon) :: qtot          ! total specific humidity (without precip) [kg/kg]
     
    155156! Input for aviation
    156157!
     158REAL,     INTENT(INOUT), DIMENSION(klon) :: rcont_seri    ! ratio of contrails fraction to total cloud fraction [-]
    157159REAL,     INTENT(IN),    DIMENSION(klon) :: flight_dist   !
    158160REAL,     INTENT(IN),    DIMENSION(klon) :: flight_h2o    !
     
    189191!  NB. idem for the INOUT
    190192!
    191 REAL,     INTENT(INOUT), DIMENSION(klon) :: Tcontr   ! critical temperature for contrail formation (T_LM in Schumann 1996, Eq 31 in appendix 2) [K]
    192 REAL,     INTENT(INOUT), DIMENSION(klon) :: qcontr   !
    193 REAL,     INTENT(INOUT), DIMENSION(klon) :: qcontr2  !
    194 REAL,     INTENT(INOUT), DIMENSION(klon) :: fcontrN  !
    195 REAL,     INTENT(INOUT), DIMENSION(klon) :: fcontrP  !
    196 REAL,     INTENT(INOUT), DIMENSION(klon) :: dcf_avi  ! cloud fraction tendency because of aviation [s-1]
    197 REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_avi  ! specific ice content tendency because of aviation [kg/kg/s]
    198 REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_avi ! specific cloud water vapor tendency because of aviation [kg/kg/s]
     193REAL,     INTENT(INOUT), DIMENSION(klon) :: contfra      ! contrail fraction [-]
     194REAL,     INTENT(INOUT), DIMENSION(klon) :: Tcritcont    ! critical temperature for contrail formation [K]
     195REAL,     INTENT(INOUT), DIMENSION(klon) :: qcritcont    ! critical specific humidity for contrail formation [kg/kg]
     196REAL,     INTENT(INOUT), DIMENSION(klon) :: potcontfraP  ! potential persistent contrail fraction [-]
     197REAL,     INTENT(INOUT), DIMENSION(klon) :: potcontfraNP ! potential non-persistent contrail fraction [-]
     198REAL,     INTENT(INOUT), DIMENSION(klon) :: dcf_avi      ! cloud fraction tendency because of aviation [s-1]
     199REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_avi      ! specific ice content tendency because of aviation [kg/kg/s]
     200REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_avi     ! specific cloud water vapor tendency because of aviation [kg/kg/s]
    199201!
    200202! Local
     
    237239! for cell properties
    238240REAL :: rho, rhodz, dz
    239 !REAL :: V_cell, M_cell
    240 !
    241 ! for aviation and cell properties
    242 !REAL :: dqt_avi
    243 !REAL :: contrail_fra
    244 !
    245 !
    246 !--more local variables for diagnostics
    247 !--imported from YOMCST.h
    248 !--eps_w = 0.622 = ratio of molecular masses of water and dry air (kg H2O kg air -1)
    249 !--RCPD = 1004 J kg air−1 K−1 = the isobaric heat capacity of air
    250 !--values from Schumann, Meteorol Zeitschrift, 1996
    251 !--EiH2O = 1.25 / 2.24 / 8.94 kg H2O / kg fuel for kerosene / methane / dihydrogen
    252 !--Qheat = 43.  /  50. / 120. MJ / kg fuel for kerosene / methane / dihydrogen
    253 !REAL, PARAMETER :: EiH2O=1.25  !--emission index of water vapour for kerosene (kg kg-1)
    254 !REAL, PARAMETER :: Qheat=43.E6 !--specific combustion heat for kerosene (J kg-1)
    255 !REAL, PARAMETER :: eta=0.3     !--average propulsion efficiency of the aircraft
    256 !--Gcontr is the slope of the mean phase trajectory in the turbulent exhaust field on an absolute
    257 !--temperature versus water vapor partial pressure diagram. G has the unit of Pa K−1. Rap et al JGR 2010.
    258 !REAL :: Gcontr
    259 !--Tcontr = critical temperature for contrail formation (T_LM in Schumann 1996, Eq 31 in appendix 2)
    260 !--qsatliqcontr = e_L(T_LM) in Schumann 1996 but expressed in specific humidity (kg kg humid air-1)
    261 !REAL :: qsatliqcontr
    262 
    263 
    264 !-----------------------------------------------
    265 ! Initialisations
    266 !-----------------------------------------------
    267 
    268 ! Ajout des émissions de H2O dues à l'aviation
    269 ! q is the specific humidity (kg/kg humid air) hence the complicated equation to update q
    270 ! qnew = ( m_humid_air * qold + dm_H2O ) / ( m_humid_air + dm_H2O ) 
    271 !      = ( m_dry_air * qold + dm_h2O * (1-qold) ) / (m_dry_air + dm_H2O * (1-qold) )
    272 ! The equation is derived by writing m_humid_air = m_dry_air + m_H2O = m_dry_air / (1-q)
    273 ! flight_h2O is in kg H2O / s / cell
    274 !
    275 !IF (ok_plane_h2o) THEN
    276 !  q = ( M_cell*q + flight_h2o(i,k)*dtime*(1.-q) ) / (M_cell + flight_h2o(i,k)*dtime*(1.-q) )
    277 !ENDIF
    278 
     241REAL :: V_cell, M_cell
    279242
    280243qzero(:) = 0.
     
    338301        !--and the condensation process is slightly adapted
    339302        !--This can happen only if ok_weibull_warm_clouds = .TRUE.
    340         ! AB WARM CLOUD
    341         !cldfra(i) = 0.
    342         !qcld(i)   = 0.
    343         !qvc(i)    = 0.
    344303        cldfra(i) = MAX(0., MIN(1., cf_seri(i)))
    345304        qcld(i)   = MAX(0., MIN(qtot(i), ql_seri(i) + qi_seri(i) + rvc_seri(i) * qtot(i)))
     
    376335      dz = rhodz / rho
    377336      !--Cell volume [m3]
    378       !V_cell = dz * cell_area(i)
     337      V_cell = dz * cell_area(i)
    379338      !--Cell dry air mass [kg]
    380       !M_cell = rhodz * cell_area(i)
     339      M_cell = rhodz * cell_area(i)
    381340
    382341
     
    411370          qiceincld = ( qcld(i) / cldfra(i) - qvapincld )
    412371
    413           ! AB WARM CLOUD
    414           !IF ( ok_unadjusted_clouds ) THEN
    415372          IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN
    416373            CALL deposition_sublimation(qvapincld, qiceincld, temp(i), qsat(i), &
     
    572529        qt_cond = ( pdf_e3 + pdf_loc * cf_cond ) * qsatl(i) / 100.
    573530
    574         ! AB WARM CLOUD
    575         !IF ( ok_warm_cloud ) THEN
    576         !  !--If the statistical scheme is activated, the calculated increase is equal
    577         !  !--to the cloud fraction, we assume saturation adjustment, and the
    578         !  !--condensation process stops
    579         !  cldfra(i) = cf_cond
    580         !  qcld(i) = qt_cond
    581         !  qvc(i) = cldfra(i) * qsat(i)
    582 
    583         !ELSEIF ( cf_cond .GT. eps ) THEN
    584531        IF ( cf_cond .GT. eps ) THEN
    585532
     
    591538          dqt_con = MIN(dqt_con, qclr)
    592539
    593 
    594           ! AB WARM CLOUD
    595           !IF ( ok_unadjusted_clouds ) THEN
    596540          IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN
    597541            !--Here, the initial vapor in the cloud is gamma_cond*qsat, and we compute
     
    646590      !--but does not cover the entire mesh.
    647591      !
    648       ! AB WARM CLOUD
    649       !IF ( ( cldfra(i) .LT. ( 1. - dcf_con(i) - eps ) ) .AND. ( cldfra(i) .GT. eps ) &
    650       !        .AND. .NOT. ok_warm_cloud ) THEN
    651592      IF ( ( cldfra(i) .LT. ( 1. - eps ) ) .AND. ( cldfra(i) .GT. eps ) ) THEN
    652 
    653593        !--Initialisation
    654594        dcf_mix_sub   = 0.
     
    658598        dqt_mix_issr  = 0.
    659599        dqvc_mix_issr = 0.
    660 
    661600
    662601        !-- PART 1 - TURBULENT DIFFUSION
     
    760699                    / ( subfra_mix + cldfra_mix * sigma_mix )
    761700
    762           ! AB WARM CLOUD
    763           !IF ( ok_unadjusted_clouds ) THEN
    764701          IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN
    765702            qiceincld = ( qcld(i) - qvc(i) ) * cldfra_mix * sigma_mix / cldfra(i) &
     
    801738        IF ( issrfra(i) .GT. eps ) THEN
    802739
    803           ! AB WARM CLOUD
    804           !IF ( ok_unadjusted_clouds ) THEN
    805740          IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN
    806741            qvapinmix = ( qissr(i) * issrfra_mix / issrfra(i) &
     
    821756          ENDIF ! ok_unadjusted_clouds
    822757
    823 
    824758        ENDIF ! issrfra .GT. eps
    825759
     
    829763        dqvc_mix(i) = dqvc_mix_sub + dqvc_mix_issr
    830764        dqi_mix(i)  = dqt_mix - dqvc_mix(i)
     765
     766        IF ( ok_plane_contrail .AND. ( rcont_seri(i) .GT. eps ) ) THEN
     767          CALL contrails_mixing( &
     768              dtime, pplay(i), shear(i), pbl_eps(i), cell_area(i), dz, &
     769              temp(i), qtot(i), qsat(i), subfra(i), qsub(i), issrfra(i), qissr(i), &
     770              cldfra(i), qcld(i), qvc(i), rcont_seri(i), &
     771              dcf_mix(i), dqvc_mix(i), dqi_mix(i), dqt_mix, dcf_mix_issr, dqt_mix_issr)
     772        ENDIF
    831773
    832774        !--Add tendencies
     
    844786      !----------------------------------------
    845787
    846       !--Add a source of cirrus from aviation contrails
    847       !IF ( ok_plane_contrail ) THEN
    848       !  dcf_avi(i) = 0.
    849       !  dqi_avi(i) = 0.
    850       !  dqvc_avi(i) = 0.
    851       !  ! TODO implement ok_unadjusted_clouds
    852       !  IF ( issrfra(i) .GT. eps ) THEN
    853       !    contrail_fra = MIN(1., flight_m(i,k) * dtime * contrail_cross_section / V_cell)
    854       !    dcf_avi(i) = issrfra(i) * contrail_fra
    855       !    dqt_avi = dcf_avi(i) * qissr(i) / issrfra(i)
    856       !    dqvc_avi(i) = qsat(i) * dcf_avi(i)
    857       !   
    858       !    !--Add tendencies
    859       !    cldfra(i) = cldfra(i) + dcf_avi(i)
    860       !    issrfra(i) = issrfra(i) - dcf_avi(i)
    861       !    qcld(i) = qcld(i) + dqt_avi
    862       !    qvc(i) = qvc(i) + dqvc_avi(i)
    863       !    qissr(i) = qissr(i) - dqt_avi
    864 
    865       !    !--Diagnostics
    866       !    dqi_avi(i) = dqt_avi - qsat(i) * dcf_avi(i)
    867       !  ENDIF
    868       !  dcf_avi(i)  = dcf_avi(i)  / dtime
    869       !  dqi_avi(i)  = dqi_avi(i)  / dtime
    870       !  dqvc_avi(i) = dqvc_avi(i) / dtime
    871       !ENDIF
    872 
    873 
     788      IF ( ok_plane_contrail ) THEN
     789        CALL contrails_formation_evolution( &
     790            dtime, pplay(i), temp(i), qsat(i), qsatl(i), gamma_cond(i), &
     791            rcont_seri(i), flight_dist(i), cldfra(i), qvc(i), &
     792            V_cell, M_cell, pdf_loc, pdf_scale, pdf_alpha, &
     793            Tcritcont(i), qcritcont(i), potcontfraP(i), potcontfraNP(i), contfra(i), &
     794            dcf_avi(i), dqvc_avi(i), dqi_avi(i) &
     795            )
     796
     797        !--Add tendencies
     798        issrfra(i) = MAX(0., issrfra(i) - dcf_avi(i))
     799        qissr(i)   = MAX(0., qissr(i) - dqvc_avi(i) - dqi_avi(i))
     800        cldfra(i)  = MIN(1., cldfra(i) + dcf_avi(i))
     801        qcld(i)    = MIN(qtot(i), qcld(i) + dqvc_avi(i) + dqi_avi(i))
     802        qvc(i)     = MIN(qcld(i), qvc(i) + dqvc_avi(i))
     803      ENDIF
    874804
    875805      !-------------------------------------------
     
    899829      dqvc_con(i) = dqvc_con(i) / dtime
    900830      dqvc_mix(i) = dqvc_mix(i) / dtime
     831      IF ( ok_plane_contrail ) THEN
     832        dcf_avi(i)  = dcf_avi(i)  / dtime
     833        dqi_avi(i)  = dqi_avi(i)  / dtime
     834        dqvc_avi(i) = dqvc_avi(i) / dtime
     835      ENDIF
    901836
    902837    ENDIF ! ( temp(i) .GT. temp_nowater ) .AND. .NOT. ok_weibull_warm_clouds
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90

    r5450 r5452  
    205205  !--End of the parameters for condensation and ice supersaturation
    206206
     207  !--Parameters for aviation
     208
     209  LOGICAL, SAVE, PROTECTED :: ok_plane_contrail              ! activates the contrails parameterisation
     210  !$OMP THREADPRIVATE(ok_plane_contrail)
     211
     212  REAL, SAVE, PROTECTED :: aspect_ratio_contrails=.1         ! [-] aspect ratio of the contrails clouds
     213  !$OMP THREADPRIVATE(aspect_ratio_contrails)
     214
     215  REAL, SAVE, PROTECTED :: coef_mixing_contrails             ! [-] tuning coefficient for the contrails mixing process
     216  !$OMP THREADPRIVATE(coef_mixing_contrails)
     217 
     218  REAL, SAVE, PROTECTED :: coef_shear_contrails              ! [-] additional coefficient for the contrails shearing process (subprocess of the contrails mixing process)
     219  !$OMP THREADPRIVATE(coef_shear_contrails)
     220 
     221  REAL, SAVE, PROTECTED :: chi_mixing_contrails              ! [-] factor for the macro distribution of ISSRs wrt clouds in a gridbox
     222  !$OMP THREADPRIVATE(chi_mixing_contrails)
     223
     224  REAL, SAVE, PROTECTED :: rm_ice_crystals_contrails=7.5E-6  ! [m] geometric radius of ice crystals in contrails
     225  !$OMP THREADPRIVATE(rm_ice_crystals_contrails)
     226
     227  REAL, SAVE, PROTECTED :: EI_H2O_aviation=1.25              ! [kgH2O/kg] emission index of water vapor for a given fuel type
     228  !$OMP THREADPRIVATE(EI_H2O_aviation)
     229
     230  REAL, SAVE, PROTECTED :: qheat_fuel_aviation=43.2E6        ! [J/kg] specific combustion heat for a given fuel type
     231  !$OMP THREADPRIVATE(qheat_fuel_aviation)
     232
     233  REAL, SAVE, PROTECTED :: prop_efficiency_aviation=.3       ! [-] average propulsion efficiency of aircraft
     234  !$OMP THREADPRIVATE(prop_efficiency_aviation)
     235
     236  REAL, SAVE, PROTECTED :: linear_contrails_lifetime=10800.  ! [s] timescale of the lifetime of linear contrails
     237  !$OMP THREADPRIVATE(linear_contrails_lifetime)
     238  !--End of the parameters for aviation
     239
    207240  !--Parameters for poprecip
    208241  LOGICAL, SAVE, PROTECTED :: ok_poprecip=.FALSE.           ! use the processes-oriented formulation of precipitations
     
    303336CONTAINS
    304337
    305 SUBROUTINE lscp_ini(dtime,lunout_in,prt_level_in,ok_ice_supersat_in, iflag_ratqs, fl_cor_ebil_in, &
     338SUBROUTINE lscp_ini(dtime, lunout_in, prt_level_in, ok_ice_supersat_in, ok_plane_contrail_in, &
     339                    iflag_ratqs, fl_cor_ebil_in, &
    306340                    RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in, RVTMP2_in, &
    307341                    RTT_in, RD_in, RV_in, RG_in, RPI_in, EPS_W_in)
     
    313347   REAL, INTENT(IN)      :: dtime
    314348   INTEGER, INTENT(IN)   :: lunout_in,prt_level_in,iflag_ratqs,fl_cor_ebil_in
    315    LOGICAL, INTENT(IN)   :: ok_ice_supersat_in
     349   LOGICAL, INTENT(IN)   :: ok_ice_supersat_in, ok_plane_contrail_in
    316350
    317351   REAL, INTENT(IN)      :: RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in
     
    326360
    327361    ok_ice_supersat=ok_ice_supersat_in
     362    ok_plane_contrail=ok_plane_contrail_in
    328363
    329364    RG=RG_in
     
    427462    CALL getin_p('coef_shear_lscp',coef_shear_lscp)
    428463    CALL getin_p('chi_mixing_lscp',chi_mixing_lscp)
     464    ! for aviation
     465    CALL getin_p('aspect_ratio_contrails',aspect_ratio_contrails)
     466    coef_mixing_contrails=coef_mixing_lscp
     467    CALL getin_p('coef_mixing_contrails',coef_mixing_contrails)
     468    coef_shear_contrails=coef_shear_lscp
     469    CALL getin_p('coef_shear_contrails',coef_shear_contrails)
     470    chi_mixing_contrails=chi_mixing_lscp
     471    CALL getin_p('chi_mixing_contrails',chi_mixing_contrails)
     472    CALL getin_p('rm_ice_crystals_contrails',rm_ice_crystals_contrails)
     473    CALL getin_p('EI_H2O_aviation',EI_H2O_aviation)
     474    CALL getin_p('qheat_fuel_aviation',qheat_fuel_aviation)
     475    CALL getin_p('prop_efficiency_aviation',prop_efficiency_aviation)
     476    CALL getin_p('linear_contrails_lifetime',linear_contrails_lifetime)
    429477
    430478
     
    508556    WRITE(lunout,*) 'lscp_ini, coef_shear_lscp:', coef_shear_lscp
    509557    WRITE(lunout,*) 'lscp_ini, chi_mixing_lscp:', chi_mixing_lscp
    510 
    511 
     558    ! for aviation
     559    WRITE(lunout,*) 'lscp_ini, aspect_ratio_contrails:', aspect_ratio_contrails
     560    WRITE(lunout,*) 'lscp_ini, coef_mixing_contrails:', coef_mixing_contrails
     561    WRITE(lunout,*) 'lscp_ini, coef_shear_contrails:', coef_shear_contrails
     562    WRITE(lunout,*) 'lscp_ini, chi_mixing_contrails:', chi_mixing_contrails
     563    WRITE(lunout,*) 'lscp_ini, rm_ice_crystals_contrails:', rm_ice_crystals_contrails
     564    WRITE(lunout,*) 'lscp_ini, EI_H2O_aviation:', EI_H2O_aviation
     565    WRITE(lunout,*) 'lscp_ini, qheat_fuel_aviation:', qheat_fuel_aviation
     566    WRITE(lunout,*) 'lscp_ini, prop_efficiency_aviation:', prop_efficiency_aviation
     567    WRITE(lunout,*) 'lscp_ini, linear_contrails_lifetime:', linear_contrails_lifetime
    512568
    513569
  • LMDZ6/branches/contrails/libf/phylmd/phyetat0_mod.f90

    r5310 r5452  
    2323       falb_dir, falb_dif, prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien, &
    2424       ftsol, pbl_tke, pctsrf, q_ancien, ql_ancien, qs_ancien, qbs_ancien, &
    25        cf_ancien, rvc_ancien, radpas, radsol, rain_fall, ratqs, &
     25       cf_ancien, rvc_ancien, rcont_ancien, radpas, radsol, rain_fall, ratqs, &
    2626       rnebcon, rugoro, sig1, snow_fall, bs_fall, solaire_etat0, sollw, sollwdown, &
    2727       solsw, solswfdiff, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, &
     
    420420  ENDIF
    421421
     422  ! cas specifique des variables de l'aviation
     423  IF ( ok_plane_contrail ) THEN
     424    ancien_ok=ancien_ok.AND.phyetat0_get(rcont_ancien,"RCONTANCIEN","RCONTANCIEN",0.)
     425  ELSE
     426    rcont_ancien(:,:)=0.
     427  ENDIF
     428
    422429  ! Ehouarn: addtional tests to check if t_ancien, q_ancien contain
    423430  !          dummy values (as is the case when generated by ce0l,
     
    443450    IF ( (maxval(cf_ancien).EQ.minval(cf_ancien))     .OR. &
    444451         (maxval(rvc_ancien).EQ.minval(rvc_ancien)) ) THEN
     452       ancien_ok=.false.
     453     ENDIF
     454  ENDIF
     455
     456  IF ( ok_plane_contrail ) THEN
     457    IF ( maxval(rcont_ancien).EQ.minval(rcont_ancien) ) THEN
    445458       ancien_ok=.false.
    446459     ENDIF
  • LMDZ6/branches/contrails/libf/phylmd/phyredem.f90

    r5296 r5452  
    2323                                prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien,      &
    2424                                ql_ancien, qs_ancien, qbs_ancien, cf_ancien, &
    25                                 rvc_ancien, u_ancien, v_ancien,              &
     25                                rvc_ancien, rcont_ancien, u_ancien, v_ancien,&
    2626                                clwcon, rnebcon, ratqs, pbl_tke,             &
    2727                                wake_delta_pbl_tke, zmax0, f0, sig1, w01,    &
     
    254254      CALL put_field(pass,"CFANCIEN", "CFANCIEN", cf_ancien)
    255255      CALL put_field(pass,"RVCANCIEN", "RVCANCIEN", rvc_ancien)
     256    ENDIF
     257
     258    IF ( ok_plane_contrail ) THEN
     259      CALL put_field(pass,"RCONTANCIEN", "RCONTANCIEN", rcont_ancien)
    256260    ENDIF
    257261
  • LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90

    r5431 r5452  
    665665
    666666!-- LSCP - aviation and contrails variables
    667       REAL, SAVE, ALLOCATABLE :: Tcontr(:,:), qcontr(:,:), qcontr2(:,:)
    668       !$OMP THREADPRIVATE(Tcontr, qcontr, qcontr2)
    669       REAL, SAVE, ALLOCATABLE :: fcontrN(:,:), fcontrP(:,:)
    670       !$OMP THREADPRIVATE(fcontrN, fcontrP)
     667      REAL, SAVE, ALLOCATABLE :: rcont_seri(:,:), d_rcont_dyn(:,:)
     668      !$OMP THREADPRIVATE(rcont_seri, d_rcont_dyn)
     669      REAL, SAVE, ALLOCATABLE :: flight_dist(:,:), flight_h2o(:,:)
     670      !$OMP THREADPRIVATE(flight_dist, flight_h2o)
     671      REAL, SAVE, ALLOCATABLE :: Tcritcont(:,:), qcritcont(:,:)
     672      !$OMP THREADPRIVATE(Tcritcont, qcritcont)
     673      REAL, SAVE, ALLOCATABLE :: potcontfraP(:,:), potcontfraNP(:,:)
     674      !$OMP THREADPRIVATE(potcontfraP, potcontfraNP)
    671675      REAL, SAVE, ALLOCATABLE :: dcf_avi(:,:), dqi_avi(:,:), dqvc_avi(:,:)
    672676      !$OMP THREADPRIVATE(dcf_avi, dqi_avi, dqvc_avi)
    673       REAL, SAVE, ALLOCATABLE :: flight_dist(:,:), flight_h2o(:,:)
    674       !$OMP THREADPRIVATE(flight_dist, flight_h2o)
    675677
    676678!-- LSCP - mixed phase clouds variables
     
    12131215
    12141216!-- LSCP - aviation and contrails variables
    1215       ALLOCATE(Tcontr(klon,klev), qcontr(klon,klev), qcontr2(klon,klev))
    1216       ALLOCATE(fcontrN(klon,klev), fcontrP(klon,klev))
     1217      ALLOCATE(rcont_seri(klon,klev), d_rcont_dyn(klon,klev))
     1218      ALLOCATE(flight_dist(klon,klev), flight_h2o(klon,klev))
     1219      ALLOCATE(Tcritcont(klon,klev), qcritcont(klon,klev))
     1220      ALLOCATE(potcontfraP(klon,klev), potcontfraNP(klon,klev))
    12171221      ALLOCATE(dcf_avi(klon,klev), dqi_avi(klon,klev), dqvc_avi(klon,klev))
    1218       ALLOCATE(flight_dist(klon,klev), flight_h2o(klon,klev))
    12191222
    12201223!-- LSCP - POPRECIP variables
     
    16181621
    16191622!-- LSCP - aviation and contrails variables
    1620       DEALLOCATE(Tcontr, qcontr, qcontr2)
    1621       DEALLOCATE(fcontrN, fcontrP)
     1623      DEALLOCATE(rcont_seri, d_rcont_dyn, flight_dist, flight_h2o)
     1624      DEALLOCATE(Tcritcont, qcritcont, potcontfraP, potcontfraNP)
    16221625      DEALLOCATE(dcf_avi, dqi_avi, dqvc_avi)
    1623       DEALLOCATE(flight_dist, flight_h2o)
    16241626
    16251627!-- LSCP - POPRECIP variables
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90

    r5450 r5452  
    21682168
    21692169!-- LSCP - aviation variables
    2170   TYPE(ctrl_out), SAVE :: o_Tcontr = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
    2171     'Tcontr', 'Temperature threshold for contrail formation', 'K', (/ ('',i=1,10) /))
    2172   TYPE(ctrl_out), SAVE :: o_qcontr = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
    2173     'qcontr', 'Specific humidity threshold for contrail formation', 'Pa', (/ ('', i=1, 10) /))
    2174   TYPE(ctrl_out), SAVE :: o_qcontr2 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
    2175     'qcontr2', 'Specific humidity threshold for contrail formation', 'kg/kg', (/ ('', i=1, 10) /))
    2176   TYPE(ctrl_out), SAVE :: o_fcontrN = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
    2177     'fcontrN', 'Fraction with non-persistent contrail in clear-sky', '-', (/ ('', i=1,10)/))
    2178   TYPE(ctrl_out), SAVE :: o_fcontrP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
    2179     'fcontrP', 'Fraction with persistent contrail in ISSR', '-', (/ ('', i=1,10)/))
     2170  TYPE(ctrl_out), SAVE :: o_Tcritcont = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
     2171    'Tcritcont', 'Temperature threshold for contrail formation', 'K', (/ ('',i=1,10) /))
     2172  TYPE(ctrl_out), SAVE :: o_qcritcont = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
     2173    'qcritcont', 'Specific humidity threshold for contrail formation', 'kg/kg', (/ ('', i=1, 10) /))
     2174  TYPE(ctrl_out), SAVE :: o_potcontfraP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
     2175    'potcontfraP', 'Potential persistent contrail fraction', '-', (/ ('', i=1,10)/))
     2176  TYPE(ctrl_out), SAVE :: o_potcontfraNP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),&
     2177    'potcontfraNP', 'Potential non-persistent contrail fraction', '-', (/ ('', i=1,10)/))
    21802178  TYPE(ctrl_out), SAVE :: o_dcfavi = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    21812179    'dcfavi', 'Aviation cloud fraction tendency', 's-1', (/ ('', i=1, 10) /))
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90

    r5450 r5452  
    226226         o_dqvcadj, o_dqvcsub, o_dqvccon, o_dqvcmix, o_qsatl, o_qsati, &
    227227!-- LSCP - aviation variables
    228          o_Tcontr, o_qcontr, o_qcontr2, o_fcontrN, o_fcontrP, &
     228         o_Tcritcont, o_qcritcont, o_potcontfraP, o_potcontfraNP, &
    229229         o_dcfavi, o_dqiavi, o_dqvcavi, o_flight_dist, o_flight_h2o, &
    230230!--interactive CO2
     
    349349         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, &
    350350         qsatliq, qsatice, &
    351          Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &
     351         Tcritcont, qcritcont, potcontfraP, potcontfraNP, &
    352352         dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
    353353         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
     
    21232123!-- LSCP - aviation variables
    21242124       IF (ok_plane_contrail) THEN
    2125          CALL histwrite_phy(o_Tcontr, Tcontr)
    2126          CALL histwrite_phy(o_qcontr, qcontr)
    2127          CALL histwrite_phy(o_qcontr2, qcontr2)
    2128          CALL histwrite_phy(o_fcontrN, fcontrN)
    2129          CALL histwrite_phy(o_fcontrP, fcontrP)
     2125         CALL histwrite_phy(o_flight_dist, flight_dist)
     2126         CALL histwrite_phy(o_Tcritcont, Tcritcont)
     2127         CALL histwrite_phy(o_qcritcont, qcritcont)
     2128         CALL histwrite_phy(o_potcontfraP, potcontfraP)
     2129         CALL histwrite_phy(o_potcontfraNP, potcontfraNP)
    21302130         CALL histwrite_phy(o_dcfavi, dcf_avi)
    21312131         CALL histwrite_phy(o_dqiavi, dqi_avi)
    21322132         CALL histwrite_phy(o_dqvcavi, dqvc_avi)
    2133          CALL histwrite_phy(o_flight_dist, flight_dist)
    21342133       ENDIF
    21352134       IF (ok_plane_h2o) THEN
  • LMDZ6/branches/contrails/libf/phylmd/phys_state_var_mod.F90

    r5394 r5452  
    9292      REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:)
    9393!$OMP THREADPRIVATE(u_ancien, v_ancien)
    94       REAL, ALLOCATABLE, SAVE :: cf_ancien(:,:), rvc_ancien(:,:)
    95 !$OMP THREADPRIVATE(cf_ancien, rvc_ancien)
     94      REAL, ALLOCATABLE, SAVE :: cf_ancien(:,:), rvc_ancien(:,:), rcont_ancien(:,:)
     95!$OMP THREADPRIVATE(cf_ancien, rvc_ancien, rcont_ancien)
    9696!!! RomP >>>
    9797      REAL, ALLOCATABLE, SAVE :: tr_ancien(:,:,:)
     
    586586      ALLOCATE(prw_ancien(klon), prlw_ancien(klon), prsw_ancien(klon), prbsw_ancien(klon))
    587587      ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev))
    588       ALLOCATE(cf_ancien(klon,klev), rvc_ancien(klon,klev))
     588      ALLOCATE(cf_ancien(klon,klev), rvc_ancien(klon,klev), rcont_ancien(klon,klev))
    589589!!! Rom P >>>
    590590      ALLOCATE(tr_ancien(klon,klev,nbtr))
     
    813813      DEALLOCATE(qtc_cv,sigt_cv,detrain_cv,fm_cv)
    814814      DEALLOCATE(u_ancien, v_ancien)
    815       DEALLOCATE(cf_ancien, rvc_ancien)
     815      DEALLOCATE(cf_ancien, rvc_ancien, rcont_ancien)
    816816      DEALLOCATE(tr_ancien)                           !RomP
    817817      DEALLOCATE(ratqs, pbl_tke,coefh,coefm)
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5450 r5452  
    327327       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
    328328       !-- LSCP - aviation and contrails variables
    329        Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &
    330        dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
     329       rcont_seri, d_rcont_dyn, flight_dist, flight_h2o, &
     330       Tcritcont, qcritcont, potcontfraP, potcontfraNP, &
     331       dcf_avi, dqi_avi, dqvc_avi, &
    331332       !
    332333       cldemi,  &
     
    511512    !
    512513    ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional), blowing snow (optional)
    513     INTEGER,SAVE :: ivap, iliq, isol, ibs, icf, irvc
    514 !$OMP THREADPRIVATE(ivap, iliq, isol, ibs, icf, irvc)
     514    INTEGER,SAVE :: ivap, iliq, isol, ibs, icf, irvc, ircont
     515!$OMP THREADPRIVATE(ivap, iliq, isol, ibs, icf, irvc, ircont)
    515516    !
    516517    !
     
    13561357       icf  = strIdx(tracers(:)%name, addPhase('H2O', 'f'))
    13571358       irvc = strIdx(tracers(:)%name, addPhase('H2O', 'c'))
     1359       ircont = strIdx(tracers(:)%name, addPhase('H2O', 'a'))
    13581360!       CALL init_etat0_limit_unstruct
    13591361!       IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed)
     
    14181420       IF (ok_plane_contrail.AND..NOT.ok_ice_supersat) THEN
    14191421          WRITE (lunout, *) ' ok_plane_contrail=y requires ok_ice_supersat=y '
     1422          abort_message='see above'
     1423          CALL abort_physic(modname,abort_message,1)
     1424       ENDIF
     1425
     1426       IF (ok_plane_contrail.AND.(nqo.LT.6)) THEN
     1427          WRITE (lunout, *) ' ok_plane_contrail=y requires 6 H2O tracers ', &
     1428              '(H2O_g, H2O_l, H2O_s, H2O_f, H2O_c, H2O_a) but nqo=', nqo, '. Might as well stop here.'
    14201429          abort_message='see above'
    14211430          CALL abort_physic(modname,abort_message,1)
     
    18431852   &    RG,RD,RCPD,RKAPPA,RLVTT,RETV)
    18441853       CALL ratqs_ini(klon,klev,iflag_thermals,lunout,nbsrf,is_lic,is_ter,RG,RV,RD,RCPD,RLSTT,RLVTT,RTT)
    1845        CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_supersat,iflag_ratqs,fl_cor_ebil, &
     1854       CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_supersat,&
     1855                     ok_plane_contrail,iflag_ratqs,fl_cor_ebil, &
    18461856                     RCPD,RLSTT,RLVTT,RLMLT,RVTMP2,RTT,RD,RV,RG,RPI,EPS_W)
    18471857       CALL blowing_snow_ini(RCPD, RLSTT, RLVTT, RLMLT, &
     
    24332443          cf_seri(i,k) = 0.
    24342444          rvc_seri(i,k)= 0.
     2445          rcont_seri(i,k)= 0.
    24352446          !CR: ATTENTION, on rajoute la variable glace
    24362447          IF (nqo.EQ.2) THEN             !--vapour and liquid only
     
    24432454               cf_seri(i,k) = qx(i,k,icf)
    24442455               rvc_seri(i,k) = qx(i,k,irvc)
     2456             ENDIF
     2457             IF (ok_plane_contrail) THEN
     2458               rcont_seri(i,k) = qx(i,k,ircont)
    24452459             ENDIF
    24462460             IF (ok_bs) THEN
     
    25212535       d_cf_dyn(:,:) = (cf_seri(:,:)-cf_ancien(:,:))/phys_tstep
    25222536       d_rvc_dyn(:,:)= (rvc_seri(:,:)-rvc_ancien(:,:))/phys_tstep
     2537       d_rcont_dyn(:,:)= (rcont_seri(:,:)-rcont_ancien(:,:))/phys_tstep
    25232538       CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d)
    25242539       d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/phys_tstep
     
    25422557       d_cf_dyn(:,:) = 0.0
    25432558       d_rvc_dyn(:,:)= 0.0
     2559       d_rcont_dyn(:,:)= 0.0
    25442560       d_q_dyn2d(:)  = 0.0
    25452561       d_ql_dyn2d(:) = 0.0
     
    38893905         dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    38903906         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
    3891          Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &
    3892          dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
     3907         rcont_seri, flight_dist, flight_h2o, &
     3908         Tcritcont, qcritcont, potcontfraP, potcontfraNP, dcf_avi, dqi_avi, dqvc_avi, &
    38933909         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
    38943910         qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, dqrcol, dqrmelt, &
     
    56065622             d_qx(i,k,icf) = ( cf_seri(i,k) - qx(i,k,icf) ) / phys_tstep
    56075623             d_qx(i,k,irvc) = ( rvc_seri(i,k) - qx(i,k,irvc) ) / phys_tstep
     5624             IF (nqo.ge.6 .and. ok_plane_contrail) THEN
     5625               d_qx(i,k,ircont) = ( rcont_seri(i,k) - qx(i,k,ircont) ) / phys_tstep
     5626             ENDIF
    56085627          ENDIF
    56095628
     
    56425661    cf_ancien(:,:) = cf_seri(:,:)
    56435662    rvc_ancien(:,:)= rvc_seri(:,:)
     5663    rcont_ancien(:,:)= rcont_seri(:,:)
    56445664    CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien)
    56455665    CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien)
Note: See TracChangeset for help on using the changeset viewer.