Changeset 5779 for LMDZ6/branches


Ignore:
Timestamp:
Jul 16, 2025, 3:40:25 PM (11 days ago)
Author:
aborella
Message:

Added autoconversion for contrails + various small modifications for residual bugs

Location:
LMDZ6/branches/contrails
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/DefLists/context_input_lmdz.xml

    r5717 r5779  
    409409  <file id="aviation_file" name="aviation" enabled="false" mode="read" output_freq="1mo" type="one_file" time_counter_name="toto" >
    410410
    411     <field id="KMFLOWN_id" name="seg_length_km" operation="instant"  grid_ref="aviation_grid" freq_offset="1ts"  />
     411    <field id="KMFLOWN_id" name="seg_length_m" operation="instant"  grid_ref="aviation_grid" freq_offset="1ts"  />
    412412    <field id="levaviation_id" name="pressure_Pa" axis_ref="aviation_lev" operation="instant" freq_offset="1ts" />
    413413    <field id="timeaviation_id" name="time" axis_ref="aviation_time" operation="instant" freq_offset="1ts" />
  • LMDZ6/branches/contrails/DefLists/field_def_lmdz.xml

    r5728 r5779  
    904904        <field id="dcfmix"     long_name="Cloud mixing cloud fraction tendency"    unit="s-1" />
    905905        <field id="dcfsed"     long_name="Sedimentation cloud fraction tendency"    unit="s-1" />
     906        <field id="dcfauto"    long_name="Autoconversion cloud fraction tendency"    unit="s-1" />
    906907        <field id="dqiadj"     long_name="Temperature adjustment ice tendency"    unit="kg/kg/s" />
    907908        <field id="dqisub"     long_name="Sublimation ice tendency"    unit="kg/kg/s" />
     
    909910        <field id="dqimix"     long_name="Cloud mixing ice tendency"    unit="kg/kg/s" />
    910911        <field id="dqised"     long_name="Sedimentation ice tendency"    unit="kg/kg/s" />
     912        <field id="dqiauto"    long_name="Autoconversion ice tendency"    unit="kg/kg/s" />
    911913        <field id="dqvcadj"    long_name="Temperature adjustment cloudy water vapor tendency"    unit="kg/kg/s" />
    912914        <field id="dqvcsub"    long_name="Sublimation cloudy water vapor tendency"    unit="kg/kg/s" />
     
    914916        <field id="dqvcmix"    long_name="Cloud mixing cloudy water vapor tendency"    unit="kg/kg/s" />
    915917        <field id="dqvcsed"    long_name="Sedimentation cloudy water vapor tendency"    unit="kg/kg/s" />
     918        <field id="dqvcauto"   long_name="Autoconversion cloudy water vapor tendency"    unit="kg/kg/s" />
    916919        <field id="qsatl"      long_name="Saturation with respect to liquid"    unit="kg/kg" />
    917920        <field id="qsati"      long_name="Saturation with respect to ice"    unit="kg/kg" />
     
    945948        <field id="dqilsed"    long_name="Ice sedimentation linear contrail ice specific humidity tendency"    unit="kg/kg/s" />
    946949        <field id="dqtlsed"    long_name="Ice sedimentation linear contrail total specific humidity tendency"    unit="kg/kg/s" />
     950        <field id="dcflauto"   long_name="Ice autoconversion linear contrail fraction tendency"    unit="s-1" />
     951        <field id="dqilauto"   long_name="Ice autoconversion linear contrail ice specific humidity tendency"    unit="kg/kg/s" />
     952        <field id="dqtlauto"   long_name="Ice autoconversion linear contrail total specific humidity tendency"    unit="kg/kg/s" />
    947953        <field id="dcfcsub"    long_name="Sublimation contrail cirrus fraction tendency"    unit="s-1" />
    948954        <field id="dqicsub"    long_name="Sublimation contrail cirrus ice specific humidity tendency"    unit="kg/kg/s" />
     
    954960        <field id="dqicsed"    long_name="Ice sedimentation contrail cirrus ice specific humidity tendency"    unit="kg/kg/s" />
    955961        <field id="dqtcsed"    long_name="Ice sedimentation contrail cirrus total specific humidity tendency"    unit="kg/kg/s" />
     962        <field id="dcfcauto"   long_name="Ice autoconversion contrail cirrus fraction tendency"    unit="s-1" />
     963        <field id="dqicauto"   long_name="Ice autoconversion contrail cirrus ice specific humidity tendency"    unit="kg/kg/s" />
     964        <field id="dqtcauto"   long_name="Ice autoconversion contrail cirrus total specific humidity tendency"    unit="kg/kg/s" />
    956965        <field id="flightdist" long_name="Aviation flown distance concentration"    unit="m/s/m3" />
    957966        <field id="flighth2o"  long_name="Aviation emitted H2O concentration"    unit="kg H2O/s/m3" />
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90

    r5684 r5779  
    134134DO i = 1, klon
    135135  IF ( keepgoing(i) ) THEN
    136     Tcritcont(i)    = 0.
    137136    qcritcont(i)    = 0.
    138137    potcontfraP(i)  = 0.
     
    162161
    163162DO i = 1, klon
    164   IF ( keepgoing(i) .AND. pt_pron_clds(i) .AND. ( temp(i) .LE. temp_nowater ) ) THEN
     163  IF ( keepgoing(i) .AND. pt_pron_clds(i) ) THEN
    165164   
    166165    psatl_crit = qsatl_crit(i) / ( EPS_W + ( 1. - EPS_W ) * qsatl_crit(i) ) * pplay(i)
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5728 r5779  
    101101      dzsed_circont_abv, flsed_circont_abv, cfsed_circont_abv, &
    102102      dzsed, flsed, cfsed, dzsed_lincont, flsed_lincont, cfsed_lincont, &
    103       dzsed_circont, flsed_circont, cfsed_circont, &
    104       cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, dcf_sed, &
    105       dqi_adj, dqi_sub, dqi_con, dqi_mix, dqi_sed, &
    106       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, dqvc_sed, &
     103      dzsed_circont, flsed_circont, cfsed_circont, flauto, &
     104      cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, dcf_sed, dcf_auto, &
     105      dqi_adj, dqi_sub, dqi_con, dqi_mix, dqi_sed, dqi_auto, &
     106      dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, dqvc_sed, dqvc_auto, &
    107107      lincontfra_in, circontfra_in, qtl_in, qtc_in, flight_dist, flight_h2o, &
    108108      lincontfra, circontfra, qlincont, qcircont, &
     
    110110      dcfl_ini, dqil_ini, dqtl_ini, dcfl_sub, dqil_sub, dqtl_sub, &
    111111      dcfl_cir, dqtl_cir, dcfl_mix, dqil_mix, dqtl_mix, &
    112       dcfl_sed, dqtl_sed, dqil_sed, dcfc_sed, dqtc_sed, dqic_sed, &
    113       dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix)
     112      dcfl_sed, dqil_sed, dqtl_sed, dcfl_auto, dqil_auto, dqtl_auto, &
     113      dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix, &
     114      dcfc_sed, dqic_sed, dqtc_sed, dcfc_auto, dqic_auto, dqtc_auto)
    114115
    115116!----------------------------------------------------------------------
     
    189190REAL,     INTENT(INOUT), DIMENSION(klon) :: flsed_circont ! sedimentated ice flux in contrails cirrus [kg/s/m2]
    190191REAL,     INTENT(INOUT), DIMENSION(klon) :: cfsed_circont ! sedimentated contrails cirrus fraction [-]
     192REAL,     INTENT(INOUT), DIMENSION(klon) :: flauto        ! autoconverted ice flux [kg/s/m2]
    191193!
    192194! Input for aviation
     
    219221REAL,     INTENT(INOUT), DIMENSION(klon) :: dcf_mix  ! cloud fraction tendency because of cloud mixing [s-1]
    220222REAL,     INTENT(INOUT), DIMENSION(klon) :: dcf_sed  ! cloud fraction tendency because of sedimentation [s-1]
     223REAL,     INTENT(INOUT), DIMENSION(klon) :: dcf_auto ! cloud fraction tendency because of autoconversion [s-1]
    221224REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_adj  ! specific ice content tendency because of temperature adjustment [kg/kg/s]
    222225REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_sub  ! specific ice content tendency because of sublimation [kg/kg/s]
     
    224227REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_mix  ! specific ice content tendency because of cloud mixing [kg/kg/s]
    225228REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_sed  ! specific ice content tendency because of sedimentation [kg/kg/s]
     229REAL,     INTENT(INOUT), DIMENSION(klon) :: dqi_auto ! specific ice content tendency because of autoconversion [kg/kg/s]
    226230REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_adj ! specific cloud water vapor tendency because of temperature adjustment [kg/kg/s]
    227231REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_sub ! specific cloud water vapor tendency because of sublimation [kg/kg/s]
     
    229233REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_mix ! specific cloud water vapor tendency because of cloud mixing [kg/kg/s]
    230234REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_sed ! specific cloud water vapor tendency because of sedimentation [kg/kg/s]
     235REAL,     INTENT(INOUT), DIMENSION(klon) :: dqvc_auto! specific cloud water vapor tendency because of autoconversion [kg/kg/s]
    231236!
    232237!  Diagnostics for aviation
     
    255260REAL,     INTENT(INOUT), DIMENSION(klon) :: dqil_sed     ! linear contrails ice specific humidity tendency because of ice sedimentation [kg/kg/s]
    256261REAL,     INTENT(INOUT), DIMENSION(klon) :: dqtl_sed     ! linear contrails total specific humidity tendency because of ice sedimentation [kg/kg/s]
     262REAL,     INTENT(INOUT), DIMENSION(klon) :: dcfl_auto    ! linear contrails cloud fraction tendency because of ice autoconversion [s-1]
     263REAL,     INTENT(INOUT), DIMENSION(klon) :: dqil_auto    ! linear contrails ice specific humidity tendency because of ice autoconversion [kg/kg/s]
     264REAL,     INTENT(INOUT), DIMENSION(klon) :: dqtl_auto    ! linear contrails total specific humidity tendency because of ice autoconversion [kg/kg/s]
    257265REAL,     INTENT(INOUT), DIMENSION(klon) :: dcfc_sub     ! contrail cirrus cloud fraction tendency because of sublimation [s-1]
    258266REAL,     INTENT(INOUT), DIMENSION(klon) :: dqic_sub     ! contrail cirrus ice specific humidity tendency because of sublimation [kg/kg/s]
     
    264272REAL,     INTENT(INOUT), DIMENSION(klon) :: dqic_sed     ! contrail cirrus ice specific humidity tendency because of ice sedimentation [kg/kg/s]
    265273REAL,     INTENT(INOUT), DIMENSION(klon) :: dqtc_sed     ! contrail cirrus total specific humidity tendency because of ice sedimentation [kg/kg/s]
     274REAL,     INTENT(INOUT), DIMENSION(klon) :: dcfc_auto    ! contrail cirrus cloud fraction tendency because of ice autoconversion [s-1]
     275REAL,     INTENT(INOUT), DIMENSION(klon) :: dqic_auto    ! contrail cirrus ice specific humidity tendency because of ice autoconversion [kg/kg/s]
     276REAL,     INTENT(INOUT), DIMENSION(klon) :: dqtc_auto    ! contrail cirrus total specific humidity tendency because of ice autoconversion [kg/kg/s]
    266277!
    267278! Local
     
    295306REAL :: dqt_con
    296307!
    297 ! for sedimentation
     308! for sedimentation and autoconversion
    298309REAL, DIMENSION(klon) :: qised_abv
    299 REAL :: iwc, icefall_velo, qice_sedim
     310REAL :: iwc, icefall_velo, coef_sed, qice_sedim
    300311REAL :: sedfra_abv, sedfra1, sedfra2, sedfra3, sedfra_tmp
    301312REAL :: dcf_sed1, dcf_sed2, dqvc_sed1, dqvc_sed2, dqi_sed1, dqi_sed2
     313REAL :: dz_auto, coef_auto, qice_auto
    302314!
    303315! for mixing
     
    319331REAL :: dcfl_sed1, dcfl_sed2, dqtl_sed1, dqtl_sed2, dqil_sed1, dqil_sed2
    320332REAL :: dcfc_sed1, dcfc_sed2, dqtc_sed1, dqtc_sed2, dqic_sed1, dqic_sed2
     333REAL :: dz_auto_lincont, dz_auto_circont
    321334
    322335qzero(:) = 0.
     
    341354  !--formed elsewhere)
    342355  IF (keepgoing(i)) THEN
     356
     357    !--Initialisation
     358    issrfra(i) = 0.
     359    qissr(i) = 0.
     360    IF ( ok_ice_sedim ) THEN
     361      flauto(i) = 0.
     362      flsed(i) = 0.
     363      dzsed(i) = 0.
     364      cfsed(i) = 0.
     365    ENDIF
     366    IF ( ok_plane_contrail ) THEN
     367      lincontfra(i) = 0.
     368      circontfra(i) = 0.
     369      qlincont(i) = 0.
     370      qcircont(i) = 0.
     371      IF ( ok_ice_sedim ) THEN
     372        flsed_lincont(i) = 0.
     373        flsed_circont(i) = 0.
     374        dzsed_lincont(i) = 0.
     375        dzsed_circont(i) = 0.
     376        cfsed_lincont(i) = 0.
     377        cfsed_circont(i) = 0.
     378      ENDIF
     379    ENDIF
    343380
    344381    !--If the temperature is higher than the threshold below which
     
    415452        !--to the total water vapor in the precipitation routine. Here we remove it
    416453        !--(it will be reincluded later)
    417         qised_abv(i) = flsed_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime
     454        !--The barrier is needed because although the sedimented ice was vaporised,
     455        !--inacurracies in the advection scheme might lead to considering this water
     456        !--to be cloudy (hence not in the clear sky region)
     457        qised_abv(i) = MIN(qclr(i), flsed_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime)
    418458        qclr(i) = qclr(i) - qised_abv(i)
    419459      ENDIF
     
    528568          !--to the total water vapor in the precipitation routine. Here we remove it
    529569          !--(it will be reincluded later)
    530           qised_lincont_abv(i) = flsed_lincont_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime
     570          !--The barrier is needed because although the sedimented ice was vaporised,
     571          !--inacurracies in the advection scheme might lead to considering this water
     572          !--to be cloudy (hence not in the clear sky region)
     573          qised_lincont_abv(i) = MIN(qclr(i), flsed_lincont_abv(i) &
     574              / ( paprsdn(i) - paprsup(i) ) * RG * dtime)
    531575          qclr(i) = qclr(i) - qised_lincont_abv(i)
    532576        ENDIF
     
    537581          !--to the total water vapor in the precipitation routine. Here we remove it
    538582          !--(it will be reincluded later)
    539           qised_circont_abv(i) = flsed_circont_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime
     583          !--The barrier is needed because although the sedimented ice was vaporised,
     584          !--inacurracies in the advection scheme might lead to considering this water
     585          !--to be cloudy (hence not in the clear sky region)
     586          qised_circont_abv(i) = MIN(qclr(i), flsed_circont_abv(i) &
     587              / ( paprsdn(i) - paprsup(i) ) * RG * dtime)
    540588          qclr(i) = qclr(i) - qised_circont_abv(i)
    541589        ENDIF
     
    578626      !--If there is a linear contrail
    579627      IF ( lincontfra(i) .GT. eps ) THEN
    580         !--The contrail is always adjusted to saturation
    581         qiceincld = ( qlincont(i) / lincontfra(i) - qsat(i) )
    582         !--If the ice water content is too low, the cloud is purely sublimated
    583         IF ( qiceincld .LT. qiceincld_min(i) ) THEN
    584           dcfl_sub(i) = - lincontfra(i)
    585           dqil_sub(i) = - qiceincld * lincontfra(i)
    586           dqtl_sub(i) = - qlincont(i)
    587           lincontfra(i) = 0.
    588           qlincont(i) = 0.
    589           clrfra(i) = MIN(totfra_in(i), clrfra(i) - dcfl_sub(i))
    590           qclr(i) = qclr(i) - dqtl_sub(i)
    591         ENDIF   ! qiceincld .LT. eps
    592628        !--We remove contrails from the main class
    593629        cldfra(i) = MAX(0., cldfra(i) - lincontfra(i))
    594630        qcld(i) = MAX(0., qcld(i) - qlincont(i))
    595631        qvc(i) = MAX(0., MIN(qcld(i), qvc(i) - qsat(i) * lincontfra(i)))
     632
     633        !--The contrail is always adjusted to saturation
     634        qiceincld = ( qlincont(i) / lincontfra(i) - qsat(i) )
     635
     636        !--If the ice water content is too low, the cloud is purely sublimated
     637        IF ( qiceincld .LT. eps ) THEN
     638          dcfl_sub(i) = - lincontfra(i)
     639          dqil_sub(i) = - qiceincld * lincontfra(i)
     640          dqtl_sub(i) = - qlincont(i)
     641       
     642        !--Only a part of the contrail is sublimated
     643        ELSE
     644          !--Gamma distribution starting at qvapincld (everything that is below qiceincld_min)
     645          pdf_shape = nu_iwc_pdf_lscp / qiceincld
     646          pdf_y = pdf_shape * qiceincld_min(i)
     647          pdf_e1 = GAMMAINC ( nu_iwc_pdf_lscp      , pdf_y )
     648          pdf_e2 = GAMMAINC ( nu_iwc_pdf_lscp + 1. , pdf_y )
     649
     650          !--Tendencies and diagnostics
     651          dcfl_sub(i) = - lincontfra(i) * pdf_e1
     652          dqil_sub(i) = - lincontfra(i) * pdf_e2 / pdf_shape
     653          dqtl_sub(i) = dqil_sub(i) + dcfl_sub(i) * qsat(i)
     654        ENDIF ! qiceincld .LT. eps
     655
     656        !--Add tendencies
     657        lincontfra(i) = lincontfra(i) + dcfl_sub(i)
     658        qlincont(i)   = qlincont(i) + dqtl_sub(i)
     659        clrfra(i)     = clrfra(i) - dcfl_sub(i)
     660        qclr(i)       = qclr(i) - dqtl_sub(i)
    596661      ENDIF ! lincontfra(i) .GT. eps
    597662
    598663      !--If there is a contrail cirrus
    599664      IF ( circontfra(i) .GT. eps ) THEN
    600         !--The contrail is always adjusted to saturation
    601         qiceincld = ( qcircont(i) / circontfra(i) - qsat(i) )
    602         !--If the ice water content is too low, the cloud is purely sublimated
    603         IF ( qiceincld .LT. qiceincld_min(i) ) THEN
    604           dcfc_sub(i) = - circontfra(i)
    605           dqic_sub(i) = - qiceincld * circontfra(i)
    606           dqtc_sub(i) = - qcircont(i)
    607           circontfra(i) = 0.
    608           qcircont(i) = 0.
    609           clrfra(i) = MIN(totfra_in(i), clrfra(i) - dcfc_sub(i))
    610           qclr(i) = qclr(i) - dqtc_sub(i)
    611         ENDIF   ! qiceincld .LT. eps
    612665        !--We remove contrails from the main class
    613666        cldfra(i) = MAX(0., cldfra(i) - circontfra(i))
    614667        qcld(i) = MAX(0., qcld(i) - qcircont(i))
    615668        qvc(i) = MAX(0., MIN(qcld(i), qvc(i) - qsat(i) * circontfra(i)))
     669
     670        !--The contrail is always adjusted to saturation
     671        qiceincld = ( qcircont(i) / circontfra(i) - qsat(i) )
     672
     673        !--If the ice water content is too low, the cloud is purely sublimated
     674        IF ( qiceincld .LT. eps ) THEN
     675          dcfc_sub(i) = - circontfra(i)
     676          dqic_sub(i) = - qiceincld * circontfra(i)
     677          dqtc_sub(i) = - qcircont(i)
     678       
     679        !--Only a part of the contrail is sublimated
     680        ELSE
     681          !--Gamma distribution starting at qvapincld (everything that is below qiceincld_min)
     682          pdf_shape = nu_iwc_pdf_lscp / qiceincld
     683          pdf_y = pdf_shape * qiceincld_min(i)
     684          pdf_e1 = GAMMAINC ( nu_iwc_pdf_lscp      , pdf_y )
     685          pdf_e2 = GAMMAINC ( nu_iwc_pdf_lscp + 1. , pdf_y )
     686
     687          !--Tendencies and diagnostics
     688          dcfc_sub(i) = - circontfra(i) * pdf_e1
     689          dqic_sub(i) = - circontfra(i) * pdf_e2 / pdf_shape
     690          dqtc_sub(i) = dqic_sub(i) + dcfc_sub(i) * qsat(i)
     691        ENDIF ! qiceincld .LT. eps
     692
     693        !--Add tendencies
     694        circontfra(i) = circontfra(i) + dcfc_sub(i)
     695        qcircont(i)   = qcircont(i) + dqtc_sub(i)
     696        clrfra(i)     = clrfra(i) - dcfc_sub(i)
     697        qclr(i)       = qclr(i) - dqtc_sub(i)
    616698      ENDIF ! circontfra(i) .GT. eps
    617699
     
    789871        pdf_scale(i) = MAX(eps, MIN(rhl_clr / pdf_gamma(i), pdf_std / SQRT( &
    790872                                    GAMMA(1. + 2. / pdf_alpha(i)) - pdf_gamma(i)**2 )))
     873        !--rhl_clr is not bounded for the location parameter
     874        rhl_clr = qclr(i) / clrfra(i) / qsatl(i) * 100.
    791875        pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    792876
     
    11311215          !--If the linear contrail increases in size, the increment is considered
    11321216          !--to be a contrail cirrus
    1133           dcfc_mix(i) = dcfc_mix(i) + clrfra_mix
    1134           dqtc_mix(i) = dqtc_mix(i) + clrfra_mix * qclr(i) / clrfra(i)
    1135           dqic_mix(i) = dqic_mix(i) + clrfra_mix * ( qclr(i) / clrfra(i) - qsat(i) )
     1217          dcfl_mix(i) = dcfl_mix(i) + clrfra_mix
     1218          dqtl_mix(i) = dqtl_mix(i) + clrfra_mix * qclr(i) / clrfra(i)
     1219          dqil_mix(i) = dqil_mix(i) + clrfra_mix * ( qclr(i) / clrfra(i) - qsat(i) )
    11361220        ELSE
    11371221          !--We then calculate the clear sky part where the humidity is lower than
     
    11761260
    11771261          IF ( pdf_fra_above_lim .GT. eps ) THEN
     1262            dcfl_mix(i) = dcfl_mix(i) + clrfra_mix * sigma_mix
     1263            dqtl_mix(i) = dqtl_mix(i) + clrfra_mix * sigma_mix &
     1264                        * pdf_q_above_lim / pdf_fra_above_lim
     1265            dqil_mix(i) = dqil_mix(i) + clrfra_mix * sigma_mix &
     1266                        * ( pdf_q_above_lim / pdf_fra_above_lim - qsat(i) )
    11781267            !--If the linear contrail increases in size, the increment is considered
    11791268            !--to be a contrail cirrus
    1180             qvapinmix = ( pdf_q_above_lim / pdf_fra_above_lim * clrfra_mix &
    1181                       + qlincont(i) / lincontfra(i) * cldfra_mix ) &
    1182                       / ( clrfra_mix + cldfra_mix )
    1183             qiceinmix = ( qlincont(i) / lincontfra(i) - qsat(i) ) * cldfra_mix &
    1184                       / ( clrfra_mix + cldfra_mix )
    1185             dcfc_mix(i) = dcfc_mix(i) + clrfra_mix * sigma_mix
    1186             dqtc_mix(i) = dqtc_mix(i) + clrfra_mix * sigma_mix * qvapinmix
    1187             dqtl_mix(i) = dqtl_mix(i) - cldfra_mix * sigma_mix &
    1188                         * ( qlincont(i) / lincontfra(i) - qvapinmix )
    1189             dqic_mix(i) = dqic_mix(i) + clrfra_mix * sigma_mix * qiceinmix
    1190             dqil_mix(i) = dqil_mix(i) - cldfra_mix * sigma_mix &
    1191                         * ( qlincont(i) / lincontfra(i) - qsat(i) - qiceinmix )
     1269            !qvapinmix = ( pdf_q_above_lim / pdf_fra_above_lim * clrfra_mix &
     1270            !          + qlincont(i) / lincontfra(i) * cldfra_mix ) &
     1271            !          / ( clrfra_mix + cldfra_mix )
     1272            !qiceinmix = ( qlincont(i) / lincontfra(i) - qsat(i) ) * cldfra_mix &
     1273            !          / ( clrfra_mix + cldfra_mix )
     1274            !dcfc_mix(i) = dcfc_mix(i) + clrfra_mix * sigma_mix
     1275            !dqtc_mix(i) = dqtc_mix(i) + clrfra_mix * sigma_mix * qvapinmix
     1276            !dqtl_mix(i) = dqtl_mix(i) - cldfra_mix * sigma_mix &
     1277            !            * ( qlincont(i) / lincontfra(i) - qvapinmix )
     1278            !dqic_mix(i) = dqic_mix(i) + clrfra_mix * sigma_mix * qiceinmix
     1279            !dqil_mix(i) = dqil_mix(i) - cldfra_mix * sigma_mix &
     1280            !            * ( qlincont(i) / lincontfra(i) - qsat(i) - qiceinmix )
    11921281          ENDIF
    11931282
     
    13991488      IF ( ok_ice_sedim ) THEN
    14001489        !--Initialisation
     1490        dz_auto = 0.
     1491        dz_auto_lincont = 0.
     1492        dz_auto_circont = 0.
    14011493        dcf_sed1  = 0.
    14021494        dqvc_sed1 = 0.
     
    14281520        IF ( cldfra(i) .GT. eps ) THEN
    14291521          iwc = rho * ( qcld(i) - qvc(i) ) / cldfra(i)
    1430           icefall_velo = fallice_sedim * cice_velo * iwc**dice_velo
    1431           dzsed(i) = icefall_velo * dtime * MAX(0., MIN(1., (2. - icefall_velo * dtime / dz)))
     1522          icefall_velo = fallice_sedim * cice_velo * MAX(0., iwc)**dice_velo
     1523
     1524          !--Sedimentation
     1525          coef_sed = MAX(0., MIN(1., 2. - icefall_velo * dtime / dz))
     1526          dzsed(i) = MIN(dz, icefall_velo * dtime) * coef_sed
    14321527          cfsed(i) = cldfra(i)
    14331528          qice_sedim = ( qcld(i) - qvc(i) ) * dzsed(i) / dz
     
    14381533          !--Convert to flux
    14391534          flsed(i) = qice_sedim * ( paprsdn(i) - paprsup(i) ) / RG / dtime
     1535
     1536          !--Autoconversion
     1537          coef_auto = MAX(0., MIN(1., icefall_velo * dtime / dz - 1.))
     1538          dz_auto = MIN(dz, icefall_velo * dtime) * coef_auto
     1539          qice_auto = ( qcld(i) - qvc(i) ) * dz_auto / dz
     1540          !--Tendencies
     1541          dcf_auto(i) = - cldfra(i) * dz_auto / dz
     1542          dqi_auto(i) = - qice_auto
     1543          dqvc_auto(i) = - qvc(i) * dz_auto / dz
     1544          !--Convert to flux
     1545          flauto(i) = flauto(i) + qice_auto * ( paprsdn(i) - paprsup(i) ) / RG / dtime
     1546
    14401547          !--Save the vapor in the cloud (will be needed later)
    14411548          qvapincld = qvc(i) / cldfra(i)
    14421549          !--Add tendencies
    1443           cldfra(i)  = cldfra(i) + dcf_sed1
    1444           qcld(i)    = qcld(i) + dqvc_sed1 + dqi_sed1
    1445           qvc(i)     = qvc(i) + dqvc_sed1
    1446           clrfra(i)  = clrfra(i) - dcf_sed1
    1447           qclr(i)    = qclr(i) - dqvc_sed1 - dqi_sed1
     1550          cldfra(i)  = cldfra(i) + dcf_sed1 + dcf_auto(i)
     1551          qcld(i)    = qcld(i) + dqvc_sed1 + dqi_sed1 + dqvc_auto(i) + dqi_auto(i)
     1552          qvc(i)     = qvc(i) + dqvc_sed1 + dqvc_auto(i)
     1553          clrfra(i)  = clrfra(i) - dcf_sed1 - dcf_auto(i)
     1554          qclr(i)    = qclr(i) - dqvc_sed1 - dqi_sed1 - dqvc_auto(i) - dqi_auto(i)
    14481555        ENDIF
    14491556        !
    14501557        IF ( lincontfra(i) .GT. eps ) THEN
    14511558          icefall_velo = fallice_linear_contrails
    1452           dzsed_lincont(i) = icefall_velo * dtime * MAX(0., MIN(1., (2. - icefall_velo * dtime / dz)))
     1559
     1560          !--Sedimentation
     1561          coef_sed = MAX(0., MIN(1., 2. - icefall_velo * dtime / dz))
     1562          dzsed_lincont(i) = MIN(dz, icefall_velo * dtime) * coef_sed
    14531563          cfsed_lincont(i) = lincontfra(i)
    1454           qice_sedim = ( qlincont(i) - qsat(i) ) * dzsed_lincont(i) / dz
     1564          qice_sedim = ( qlincont(i) - qsat(i) * lincontfra(i) ) * dzsed_lincont(i) / dz
    14551565          !--Tendencies
    14561566          dcfl_sed1 = - lincontfra(i) * dzsed_lincont(i) / dz
     
    14591569          !--Convert to flux
    14601570          flsed_lincont(i) = qice_sedim * ( paprsdn(i) - paprsup(i) ) / RG / dtime
     1571
     1572          !--Autoconversion
     1573          coef_auto = MAX(0., MIN(1., icefall_velo * dtime / dz - 1.))
     1574          dz_auto_lincont = MIN(dz, icefall_velo * dtime) * coef_auto
     1575          qice_auto = ( qlincont(i) - qsat(i) * lincontfra(i) ) * dz_auto_lincont / dz
     1576          !--Tendencies
     1577          dcfl_auto(i) = - lincontfra(i) * dz_auto_lincont / dz
     1578          dqil_auto(i) = - qice_auto
     1579          dqtl_auto(i) = - qlincont(i) * dz_auto_lincont / dz
     1580          !--Convert to flux
     1581          flauto(i) = flauto(i) + qice_auto * ( paprsdn(i) - paprsup(i) ) / RG / dtime
     1582
    14611583          !--Add tendencies
    1462           lincontfra(i)  = lincontfra(i) + dcfl_sed1
    1463           qlincont(i)    = qlincont(i) + dqtl_sed1
    1464           clrfra(i)  = clrfra(i) - dcfl_sed1
    1465           qclr(i)    = qclr(i) - dqtl_sed1
     1584          lincontfra(i)  = lincontfra(i) + dcfl_sed1 + dcfl_auto(i)
     1585          qlincont(i)    = qlincont(i) + dqtl_sed1 + dqtl_auto(i)
     1586          clrfra(i)  = clrfra(i) - dcfl_sed1 - dcfl_auto(i)
     1587          qclr(i)    = qclr(i) - dqtl_sed1 - dqtl_auto(i)
    14661588        ENDIF
    14671589        !
    14681590        IF ( circontfra(i) .GT. eps ) THEN
    1469           icefall_velo = fallice_cirrus_contrails
    1470           dzsed_circont(i) = icefall_velo * dtime * MAX(0., MIN(1., (2. - icefall_velo * dtime / dz)))
     1591          !icefall_velo = fallice_cirrus_contrails
     1592          iwc = rho * ( qcircont(i) / circontfra(i) - qsat(i) )
     1593          icefall_velo = fallice_sedim * cice_velo * MAX(0., iwc)**dice_velo
     1594
     1595          !--Sedimentation
     1596          coef_sed = MAX(0., MIN(1., 2. - icefall_velo * dtime / dz))
     1597          dzsed_circont(i) = MIN(dz, icefall_velo) * dtime * coef_sed
    14711598          cfsed_circont(i) = circontfra(i)
    1472           qice_sedim = ( qcircont(i) - qsat(i) ) * dzsed_circont(i) / dz
     1599          qice_sedim = ( qcircont(i) - qsat(i) * circontfra(i) ) * dzsed_circont(i) / dz
    14731600          !--Tendencies
    14741601          dcfc_sed1 = - circontfra(i) * dzsed_circont(i) / dz
     
    14771604          !--Convert to flux
    14781605          flsed_circont(i) = qice_sedim * ( paprsdn(i) - paprsup(i) ) / RG / dtime
     1606
     1607          !--Autoconversion
     1608          coef_auto = MAX(0., MIN(1., icefall_velo * dtime / dz - 1.))
     1609          dz_auto_circont = MIN(dz, icefall_velo * dtime) * coef_auto
     1610          qice_auto = ( qcircont(i) - qsat(i) * circontfra(i) ) * dz_auto_circont / dz
     1611          !--Tendencies
     1612          dcfc_auto(i) = - circontfra(i) * dz_auto_circont / dz
     1613          dqic_auto(i) = - qice_auto
     1614          dqtc_auto(i) = - qcircont(i) * dz_auto_circont / dz
     1615          !--Convert to flux
     1616          flauto(i) = flauto(i) + qice_auto * ( paprsdn(i) - paprsup(i) ) / RG / dtime
     1617
    14791618          !--Add tendencies
    1480           circontfra(i)  = circontfra(i) + dcfc_sed1
    1481           qcircont(i)    = qcircont(i) + dqtc_sed1
    1482           clrfra(i)  = clrfra(i) - dcfc_sed1
    1483           qclr(i)    = qclr(i) - dqtc_sed1
     1619          circontfra(i)  = circontfra(i) + dcfc_sed1 + dcfc_auto(i)
     1620          qcircont(i)    = qcircont(i) + dqtc_sed1 + dqtc_auto(i)
     1621          clrfra(i)  = clrfra(i) - dcfc_sed1 - dcfc_auto(i)
     1622          qclr(i)    = qclr(i) - dqtc_sed1 - dqtc_auto(i)
    14841623        ENDIF
    14851624        !
     
    15071646          !--background vapor
    15081647          sedfra2 = MIN(cfsed(i), cfsed_abv(i)) &
    1509                   * MAX(0., MIN(dz, dzsed_abv(i)) - dzsed(i)) / dz
     1648                  * MAX(0., MIN(dz, dzsed_abv(i)) - dzsed(i) - dz_auto) / dz
    15101649          sedfra3 = MIN(cfsed(i), cfsed_abv(i)) &
    1511                   * MIN(MIN(dz, dzsed_abv(i)), dzsed(i)) / dz
     1650                  * MIN(MIN(dz, dzsed_abv(i)), dzsed(i) + dz_auto) / dz
    15121651          sedfra1 = sedfra_abv - sedfra3 - sedfra2
    15131652
     
    16061745            !--background vapor
    16071746            sedfra2 = MIN(cfsed_lincont(i), cfsed_lincont_abv(i)) &
    1608                     * MAX(0., MIN(dz, dzsed_lincont_abv(i)) - dzsed_lincont(i)) / dz
     1747                    * MAX(0., MIN(dz, dzsed_lincont_abv(i)) &
     1748                    - dzsed_lincont(i) - dz_auto_lincont) / dz
    16091749            sedfra3 = MIN(cfsed_lincont(i), cfsed_lincont_abv(i)) &
    1610                     * MIN(MIN(dz, dzsed_lincont_abv(i)), dzsed_lincont(i)) / dz
     1750                    * MIN(MIN(dz, dzsed_lincont_abv(i)), &
     1751                    dzsed_lincont(i) + dz_auto_lincont) / dz
    16111752            sedfra1 = sedfra_abv - sedfra3 - sedfra2
    16121753
     
    16501791                IF ( pdf_fra_above_lim .GT. eps ) THEN
    16511792                  dcfl_sed2 = dcfl_sed2 + sedfra_tmp
    1652                   dqtl_sed2 = dqtl_sed2 + sedfra_tmp * qsat(i)
     1793                  dqtl_sed2 = dqtl_sed2 + sedfra_tmp &
     1794                                   * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim)
    16531795                  dqil_sed2 = dqil_sed2 + sedfra_tmp &
    16541796                                   * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim - qsat(i))
     
    16941836            !--background vapor
    16951837            sedfra2 = MIN(cfsed_circont(i), cfsed_circont_abv(i)) &
    1696                     * MAX(0., MIN(dz, dzsed_circont_abv(i)) - dzsed_circont(i)) / dz
     1838                    * MAX(0., MIN(dz, dzsed_circont_abv(i)) &
     1839                    - dzsed_circont(i) - dz_auto_circont) / dz
    16971840            sedfra3 = MIN(cfsed_circont(i), cfsed_circont_abv(i)) &
    1698                     * MIN(MIN(dz, dzsed_circont_abv(i)), dzsed_circont(i)) / dz
     1841                    * MIN(MIN(dz, dzsed_circont_abv(i)), &
     1842                    dzsed_circont(i) + dz_auto_circont) / dz
    16991843            sedfra1 = sedfra_abv - sedfra3 - sedfra2
    17001844
     
    17381882                IF ( pdf_fra_above_lim .GT. eps ) THEN
    17391883                  dcfc_sed2 = dcfc_sed2 + sedfra_tmp
    1740                   dqtc_sed2 = dqtc_sed2 + sedfra_tmp * qsat(i)
     1884                  dqtc_sed2 = dqtc_sed2 + sedfra_tmp &
     1885                                   * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim)
    17411886                  dqic_sed2 = dqic_sed2 + sedfra_tmp &
    17421887                                   * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim - qsat(i))
     
    18712016      dcf_mix(i)  = dcf_mix(i)  / dtime
    18722017      dcf_sed(i)  = dcf_sed(i)  / dtime
     2018      dcf_auto(i) = dcf_auto(i) / dtime
    18732019      dqi_adj(i)  = dqi_adj(i)  / dtime
    18742020      dqi_sub(i)  = dqi_sub(i)  / dtime
     
    18762022      dqi_mix(i)  = dqi_mix(i)  / dtime
    18772023      dqi_sed(i)  = dqi_sed(i)  / dtime
     2024      dqi_auto(i) = dqi_auto(i) / dtime
    18782025      dqvc_adj(i) = dqvc_adj(i) / dtime
    18792026      dqvc_sub(i) = dqvc_sub(i) / dtime
     
    18812028      dqvc_mix(i) = dqvc_mix(i) / dtime
    18822029      dqvc_sed(i) = dqvc_sed(i) / dtime
     2030      dqvc_auto(i) = dqvc_auto(i) / dtime
    18832031
    18842032    ENDIF ! pt_pron_clds(i)
     
    19872135      dqil_mix(i) = dqil_mix(i) / dtime
    19882136      dqtl_mix(i) = dqtl_mix(i) / dtime
     2137      dcfl_sed(i) = dcfl_sed(i) / dtime
     2138      dqil_sed(i) = dqil_sed(i) / dtime
     2139      dqtl_sed(i) = dqtl_sed(i) / dtime
     2140      dcfl_auto(i) = dcfl_auto(i) / dtime
     2141      dqil_auto(i) = dqil_auto(i) / dtime
     2142      dqtl_auto(i) = dqtl_auto(i) / dtime
    19892143      dcfc_sub(i) = dcfc_sub(i) / dtime
    19902144      dqic_sub(i) = dqic_sub(i) / dtime
     
    19932147      dqic_mix(i) = dqic_mix(i) / dtime
    19942148      dqtc_mix(i) = dqtc_mix(i) / dtime
     2149      dcfc_sed(i) = dcfc_sed(i) / dtime
     2150      dqic_sed(i) = dqic_sed(i) / dtime
     2151      dqtc_sed(i) = dqtc_sed(i) / dtime
     2152      dcfc_auto(i) = dcfc_auto(i) / dtime
     2153      dqic_auto(i) = dqic_auto(i) / dtime
     2154      dqtc_auto(i) = dqtc_auto(i) / dtime
    19952155
    19962156    ENDIF ! keepgoing
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90

    r5717 r5779  
    232232  !$OMP THREADPRIVATE(ok_plane_contrail)
    233233
    234   LOGICAL, SAVE, PROTECTED :: ok_precip_contrails=.TRUE.     ! if True, contrails can be autoconverted to snow
    235   !$OMP THREADPRIVATE(ok_precip_contrails)
     234  LOGICAL, SAVE, PROTECTED :: ok_precip_lincontrails=.TRUE.  ! if True, linear contrails can be autoconverted to snow
     235  !$OMP THREADPRIVATE(ok_precip_lincontrails)
     236
     237  LOGICAL, SAVE, PROTECTED :: ok_precip_circontrails=.FALSE. ! if True, cirrus contrails can be autoconverted to snow
     238  !$OMP THREADPRIVATE(ok_precip_circontrails)
    236239
    237240  REAL, SAVE, PROTECTED :: aspect_ratio_lincontrails=.1      ! [-] aspect ratio of linear contrails
     
    565568    CALL getin_p('chi_mixing',chi_mixing)
    566569    ! for aviation
    567     CALL getin_p('ok_precip_contrails',ok_precip_contrails)
     570    CALL getin_p('ok_precip_lincontrails',ok_precip_lincontrails)
     571    CALL getin_p('ok_precip_circontrails',ok_precip_circontrails)
    568572    CALL getin_p('aspect_ratio_lincontrails',aspect_ratio_lincontrails)
    569573    coef_mixing_lincontrails=coef_mixing_lscp
     
    685689    WRITE(lunout,*) 'lscp_ini, chi_mixing:', chi_mixing
    686690    ! for aviation
    687     WRITE(lunout,*) 'lscp_ini, ok_precip_contrails:', ok_precip_contrails
     691    WRITE(lunout,*) 'lscp_ini, ok_precip_lincontrails:', ok_precip_lincontrails
     692    WRITE(lunout,*) 'lscp_ini, ok_precip_circontrails:', ok_precip_circontrails
    688693    WRITE(lunout,*) 'lscp_ini, aspect_ratio_lincontrails:', aspect_ratio_lincontrails
    689694    WRITE(lunout,*) 'lscp_ini, coef_mixing_lincontrails:', coef_mixing_lincontrails
     
    746751    ENDIF
    747752
     753    IF ( ok_ice_sedim .AND. ffallv_issr .NE. 0. ) THEN
     754      abort_message = 'in lscp, ok_ice_sedim=y needs ffallv_issr=0.'
     755      CALL abort_physic (modname,abort_message,1)
     756    ENDIF
     757
    748758    IF ( (iflag_icefrac .GE. 1) .AND. (.NOT. ok_poprecip .AND. (iflag_evap_prec .LT. 4)) ) THEN
    749759      abort_message = 'in lscp, icefracturb works with poprecip or with precip evap option >=4'
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_main.f90

    r5728 r5779  
    2525     cf_seri, qvc_seri, u_seri, v_seri,                 &
    2626     qsub, qissr, qcld, subfra, issrfra, gamma_cond,    &
    27      dcf_sub, dcf_con, dcf_mix, dqised, dcfsed, dqvcsed,&
     27     dcf_sub, dcf_con, dcf_mix,                         &
     28     dqi_sed, dcf_sed, dqvc_sed,                        &
    2829     dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj,      &
    2930     dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati,        &
     
    126127USE lmdz_lscp_ini, ONLY : ok_poprecip, ok_bug_phase_lscp
    127128USE lmdz_lscp_ini, ONLY : ok_ice_supersat, ok_unadjusted_clouds, iflag_icefrac
    128 USE lmdz_lscp_ini, ONLY : ok_weibull_warm_clouds, ok_no_issr_strato
    129 USE lmdz_lscp_ini, ONLY : ok_plane_contrail, ok_precip_contrails, ok_ice_sedim
     129USE lmdz_lscp_ini, ONLY : ok_weibull_warm_clouds, ok_no_issr_strato, ok_ice_sedim
     130USE lmdz_lscp_ini, ONLY : ok_plane_contrail, ok_precip_lincontrails, ok_precip_circontrails
    130131USE lmdz_lscp_ini, ONLY : ok_nodeep_lscp, ok_nodeep_lscp_rad
    131132USE lmdz_lscp_ini, ONLY : ok_lscp_mergecond, gamma_mixth
     
    138139USE phys_local_var_mod, ONLY : dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix
    139140USE phys_local_var_mod, ONLY : dcfl_sed, dqil_sed, dqtl_sed, dcfc_sed, dqic_sed, dqtc_sed
     141USE phys_local_var_mod, ONLY : dcfl_auto, dqil_auto, dqtl_auto, dcfc_auto, dqic_auto, dqtc_auto
     142USE phys_local_var_mod, ONLY : dcf_auto, dqi_auto, dqvc_auto
    140143USE geometry_mod, ONLY: longitude_deg, latitude_deg
    141144
     
    268271  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqvc_con       !--specific cloud water vapor tendency because of condensation [kg/kg/s]
    269272  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqvc_mix       !--specific cloud water vapor tendency because of cloud mixing [kg/kg/s]
    270   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqised         !--ice water content tendency due to sedmentation of ice crystals [kg/kg/s]
    271   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dcfsed         !--cloud fraction tendency due to sedimentation of ice crystals [kg/kg/s]
    272   REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqvcsed        !--cloud water vapor tendency due to sedimentation of ice crystals [kg/kg/s]
     273  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqi_sed        !--ice water content tendency due to sedmentation of ice crystals [kg/kg/s]
     274  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dcf_sed        !--cloud fraction tendency due to sedimentation of ice crystals [kg/kg/s]
     275  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqvc_sed       !--cloud water vapor tendency due to sedimentation of ice crystals [kg/kg/s]
    273276  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qsatl          !--saturation specific humidity wrt liquid [kg/kg]
    274277  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qsati          !--saturation specific humidity wrt ice [kg/kg] 
     
    348351  REAL, DIMENSION(klon) :: dzsed, flsed, cfsed
    349352  REAL, DIMENSION(klon) :: dzsed_abv, flsed_abv, cfsed_abv
     353  REAL, DIMENSION(klon) :: flauto
    350354  REAL :: qice_sedim
    351355
     
    365369  REAL, DIMENSION(klon) :: dzsed_lincont_abv, flsed_lincont_abv, cfsed_lincont_abv
    366370  REAL, DIMENSION(klon) :: dzsed_circont_abv, flsed_circont_abv, cfsed_circont_abv
    367   REAL :: qice_cont
    368371  !--for Lamquin et al 2012 diagnostics
    369372  REAL, DIMENSION(klon) :: issrfra100to150UP, issrfra150to200UP, issrfra200to250UP
     
    451454dcf_con(:,:)    = 0.
    452455dcf_mix(:,:)    = 0.
    453 dcfsed(:,:)     = 0.
     456dcf_sed(:,:)    = 0.
     457dcf_auto(:,:)   = 0.
    454458dqi_adj(:,:)    = 0.
    455459dqi_sub(:,:)    = 0.
    456460dqi_con(:,:)    = 0.
    457461dqi_mix(:,:)    = 0.
    458 dqised(:,:)     = 0.
     462dqi_sed(:,:)    = 0.
     463dqi_auto(:,:)   = 0.
    459464dqvc_adj(:,:)   = 0.
    460465dqvc_sub(:,:)   = 0.
    461466dqvc_con(:,:)   = 0.
    462467dqvc_mix(:,:)   = 0.
    463 dqvcsed(:,:)    = 0.
     468dqvc_sed(:,:)   = 0.
     469dqvc_auto(:,:)  = 0.
    464470qvc(:)          = 0.
    465471shear(:)        = 0.
    466472flsed(:)        = 0.
     473flauto(:)       = 0.
    467474flsed_lincont(:)= 0.
    468475flsed_circont(:)= 0.
     
    725732              cfsed_circont_abv(:) = cfsed_circont(:)
    726733            ENDIF
    727             dzsed_lincont(:) = 0.
    728             flsed_lincont(:) = 0.
    729             cfsed_lincont(:) = 0.
    730             dzsed_circont(:) = 0.
    731             flsed_circont(:) = 0.
    732             cfsed_circont(:) = 0.
    733734            lincontfra(:)    = 0.
    734735            circontfra(:)    = 0.
     
    746747            cfsed_abv(:) = cfsed(:)
    747748          ENDIF
    748           dzsed(:) = 0.
    749           flsed(:) = 0.
    750           cfsed(:) = 0.
    751749
    752750          DO i = 1, klon
     
    787785                qvc_in(i) = qvc_in(i) + qvcon_old(i,k) * ( cfcon_old(i,k) - cfcon(i,k) )
    788786                qice_in(i) = qice_in(i) + qccon_old(i,k) * ( cfcon_old(i,k) - cfcon(i,k) )
    789               ELSE
     787              ELSEIF ( cldfra_in(i) .GT. eps ) THEN
    790788                !--Else if deep convection is strengthening, it consumes the existing cloud
    791789                !--fraction (which does not at this moment represent deep convection)
    792                 deepconv_coef = 1. - ( cfcon(i,k) - cfcon_old(i,k) ) / ( 1. - cfcon_old(i,k) )
     790                !deepconv_coef = 1. - ( cfcon(i,k) - cfcon_old(i,k) ) / ( 1. - cfcon_old(i,k) )
     791                deepconv_coef = MAX(0., 1. - ( cfcon(i,k) - cfcon_old(i,k) ) / cldfra_in(i) )
    793792                cldfra_in(i) = cldfra_in(i) * deepconv_coef
    794793                qvc_in(i)    = qvc_in(i)    * deepconv_coef
     
    930929                        dzsed_circont_abv, flsed_circont_abv, cfsed_circont_abv, &
    931930                        dzsed, flsed, cfsed, dzsed_lincont, flsed_lincont, cfsed_lincont, &
    932                         dzsed_circont, flsed_circont, cfsed_circont, &
     931                        dzsed_circont, flsed_circont, cfsed_circont, flauto, &
    933932                        rneb(:,k), zqn, qvc, issrfra(:,k), qissr(:,k), &
    934                         dcf_sub(:,k), dcf_con(:,k), dcf_mix(:,k), dcfsed(:,k), &
    935                         dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), dqised(:,k), &
    936                         dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), dqvcsed(:,k), &
     933                        dcf_sub(:,k), dcf_con(:,k), dcf_mix(:,k), &
     934                        dcf_sed(:,k), dcf_auto(:,k), &
     935                        dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), &
     936                        dqi_sed(:,k), dqi_auto(:,k), &
     937                        dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), &
     938                        dqvc_sed(:,k), dqvc_auto(:,k), &
    937939                        cfl_seri(:,k), cfc_seri(:,k), qtl_seri(:,k), qtc_seri(:,k), &
    938940                        flight_dist(:,k), flight_h2o(:,k), &
     
    944946                        dcfl_mix(:,k), dqil_mix(:,k), dqtl_mix(:,k), &
    945947                        dcfl_sed(:,k), dqil_sed(:,k), dqtl_sed(:,k), &
     948                        dcfl_auto(:,k), dqil_auto(:,k), dqtl_auto(:,k), &
     949                        dcfc_sub(:,k), dqic_sub(:,k), dqtc_sub(:,k), &
     950                        dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k), &
    946951                        dcfc_sed(:,k), dqic_sed(:,k), dqtc_sed(:,k), &
    947                         dcfc_sub(:,k), dqic_sub(:,k), dqtc_sub(:,k), &
    948                         dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k))
     952                        dcfc_auto(:,k), dqic_auto(:,k), dqtc_auto(:,k))
    949953
    950954                    IF ( ok_nodeep_lscp ) THEN
     
    11051109
    11061110                        IF ( ok_ice_sedim ) THEN
    1107                           qice_sedim = (flsed(i) + flsed_lincont(i) + flsed_circont(i)) &
    1108                               / ( paprs(i,k) - paprs(i,k+1) ) * RG * dtime
     1111                          qice_sedim = (flauto(i) + flsed(i) + flsed_lincont(i) &
     1112                              + flsed_circont(i)) / ( paprs(i,k) - paprs(i,k+1) ) * RG * dtime
    11091113                          ! Add the ice that was sedimented, as it is not included in zqn
    11101114                          qlibef(i) = qlibef(i) + qice_sedim
     
    11861190
    11871191                IF ( ok_ice_sedim ) THEN
    1188                   qice_sedim = (flsed(i) + flsed_lincont(i) + flsed_circont(i)) &
     1192                  qice_sedim = (flauto(i) + flsed(i) + flsed_lincont(i) + flsed_circont(i)) &
    11891193                      / ( paprs(i,k) - paprs(i,k+1) ) * RG * dtime
    11901194                  ! Remove the ice that was sedimented. As it is not included in zqn,
     
    12271231      !--between natural clouds and contrails
    12281232      !--NB. we use qlincont / qcircont as a temporary variable to save this partition
    1229       IF ( ok_precip_contrails ) THEN
     1233      IF ( ok_precip_lincontrails ) THEN
    12301234        DO i = 1, klon
    12311235          IF ( zoliqi(i) .GT. 0. ) THEN
    12321236            qlincont(i) = qice_lincont(i,k) / zoliqi(i)
    1233             qcircont(i) = qice_circont(i,k) / zoliqi(i)
    12341237          ELSE
    12351238            qlincont(i) = 0.
    1236             qcircont(i) = 0.
    12371239          ENDIF
    12381240        ENDDO
     
    12411243        !--the cloud variables
    12421244        DO i = 1, klon
    1243           qice_cont = qice_lincont(i,k) + qice_circont(i,k)
    1244           rneb(i,k) = rneb(i,k) - ( lincontfra(i) + circontfra(i) )
    1245           zoliq(i) = zoliq(i) - qice_cont
    1246           zoliqi(i) = zoliqi(i) - qice_cont
     1245          rneb(i,k) = rneb(i,k) - lincontfra(i)
     1246          zoliq(i) = zoliq(i) - qice_lincont(i,k)
     1247          zoliqi(i) = zoliqi(i) - qice_lincont(i,k)
     1248        ENDDO
     1249      ENDIF
     1250      IF ( ok_precip_circontrails ) THEN
     1251        DO i = 1, klon
     1252          IF ( zoliqi(i) .GT. 0. ) THEN
     1253            qcircont(i) = qice_circont(i,k) / zoliqi(i)
     1254          ELSE
     1255            qcircont(i) = 0.
     1256          ENDIF
     1257        ENDDO
     1258      ELSE
     1259        !--If contrails cirrus do not precipitate, they are removed temporarily from
     1260        !--the cloud variables
     1261        DO i = 1, klon
     1262          rneb(i,k) = rneb(i,k) - circontfra(i)
     1263          zoliq(i) = zoliq(i) - qice_circont(i,k)
     1264          zoliqi(i) = zoliqi(i) - qice_circont(i,k)
    12471265        ENDDO
    12481266      ENDIF
     
    12621280                            dqrcol(:,k), dqrmelt(:,k), dqrfreez(:,k), &
    12631281                            dqsauto(:,k), dqsagg(:,k), dqsrim(:,k), &
    1264                             dqsmelt(:,k), dqsfreez(:,k), dqised(:,k) &
     1282                            dqsmelt(:,k), dqsfreez(:,k) &
    12651283                            )
    12661284      DO i = 1, klon
     
    12771295                            zneb, tot_zneb, zrho_up, zvelo_up, &
    12781296                            zrfl, zrflclr, zrflcld, zifl, ziflclr, ziflcld, &
    1279                             zradocond, zradoice, dqrauto(:,k), dqsauto(:,k), dqised(:,k) &
     1297                            zradocond, zradoice, dqrauto(:,k), dqsauto(:,k) &
    12801298                            )
    12811299
    12821300    ENDIF ! ok_poprecip
     1301
     1302    IF ( ok_ice_sedim ) THEN
     1303      zifl(:) = zifl(:) + flauto(:)
     1304      ziflcld(:) = ziflcld(:) + flauto(:)
     1305    ENDIF
    12831306
    12841307    IF ( ok_plane_contrail ) THEN
     
    12861309      !--We alse compute the ice content that will be seen by radiation
    12871310      !--(qradice_lincont/circont)
    1288       IF ( ok_precip_contrails ) THEN
     1311      IF ( ok_precip_circontrails ) THEN
    12891312        DO i = 1, klon
    12901313          IF ( zoliqi(i) .GT. 0. ) THEN
    1291             qradice_lincont(i,k) = zradocond(i) * qlincont(i)
    1292             qlincont(i) = zqs(i) * lincontfra(i) + zoliqi(i) * qlincont(i)
    12931314            qradice_circont(i,k) = zradocond(i) * qcircont(i)
    12941315            qcircont(i) = zqs(i) * circontfra(i) + zoliqi(i) * qcircont(i)
    12951316          ELSE
    1296             qradice_lincont(i,k) = 0.
    1297             lincontfra(i) = 0.
    1298             qlincont(i) = 0.
    12991317            qradice_circont(i,k) = 0.
    13001318            circontfra(i) = 0.
     
    13061324        !--the cloud variables
    13071325        DO i = 1, klon
    1308           rneb(i,k) = rneb(i,k) + ( lincontfra(i) + circontfra(i) )
    1309           qice_cont = qice_lincont(i,k) + qice_circont(i,k)
    1310           zoliq(i) = zoliq(i) + qice_cont
    1311           zoliqi(i) = zoliqi(i) + qice_cont
    1312           zradocond(i) = zradocond(i) + qice_cont
    1313           zradoice(i) = zradoice(i) + qice_cont
     1326          rneb(i,k) = rneb(i,k) + circontfra(i)
     1327          zoliq(i) = zoliq(i) + qice_circont(i,k)
     1328          zoliqi(i) = zoliqi(i) + qice_circont(i,k)
     1329          zradocond(i) = zradocond(i) + qice_circont(i,k)
     1330          zradoice(i) = zradoice(i) + qice_circont(i,k)
     1331          qradice_circont(i,k) = qice_circont(i,k)
     1332        ENDDO
     1333      ENDIF
     1334      IF ( ok_precip_lincontrails ) THEN
     1335        DO i = 1, klon
     1336          IF ( zoliqi(i) .GT. 0. ) THEN
     1337            qradice_lincont(i,k) = zradocond(i) * qlincont(i)
     1338            qlincont(i) = zqs(i) * lincontfra(i) + zoliqi(i) * qlincont(i)
     1339          ELSE
     1340            qradice_lincont(i,k) = 0.
     1341            lincontfra(i) = 0.
     1342            qlincont(i) = 0.
     1343          ENDIF
     1344        ENDDO
     1345      ELSE
     1346        !--If contrails do not precipitate, they are put back into
     1347        !--the cloud variables
     1348        DO i = 1, klon
     1349          rneb(i,k) = rneb(i,k) + lincontfra(i)
     1350          zoliq(i) = zoliq(i) + qice_lincont(i,k)
     1351          zoliqi(i) = zoliqi(i) + qice_lincont(i,k)
     1352          zradocond(i) = zradocond(i) + qice_lincont(i,k)
     1353          zradoice(i) = zradoice(i) + qice_lincont(i,k)
    13141354          qradice_lincont(i,k) = qice_lincont(i,k)
    1315           qradice_circont(i,k) = qice_circont(i,k)
    13161355        ENDDO
    13171356      ENDIF
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_precip.f90

    r5728 r5779  
    345345        rneb, znebprecipclr, znebprecipcld, zneb, tot_zneb, zrho_up, zvelo_up, &
    346346        zrfl, zrflclr, zrflcld, zifl, ziflclr, ziflcld, &
    347         zradocond, zradoice, dqrauto, dqsauto, dqised &
     347        zradocond, zradoice, dqrauto, dqsauto &
    348348        )
    349349
     
    402402REAL,    INTENT(OUT),   DIMENSION(klon) :: dqrauto        !--rain tendency due to autoconversion of cloud liquid [kg/kg/s]
    403403REAL,    INTENT(OUT),   DIMENSION(klon) :: dqsauto        !--snow tendency due to autoconversion of cloud ice [kg/kg/s]
    404 REAL,    INTENT(INOUT), DIMENSION(klon) :: dqised         !--ice water content tendency due to sedimentation of ice crystals [kg/kg/s]
    405404
    406405
     
    13761375           rain, rainclr, raincld, snow, snowclr, snowcld, &
    13771376           qraindiag, qsnowdiag, dqrauto, dqrcol, dqrmelt, dqrfreez, &
    1378            dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez, dqised)
     1377           dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez)
    13791378
    13801379USE lmdz_lscp_ini, ONLY : prt_level, lunout
     
    14391438REAL,    INTENT(OUT),   DIMENSION(klon) :: dqsfreez       !--snow tendency due to freezing [kg/kg/s]
    14401439REAL,    INTENT(OUT),   DIMENSION(klon) :: dqrfreez       !--rain tendency due to freezing [kg/kg/s]
    1441 REAL,    INTENT(INOUT), DIMENSION(klon) :: dqised         !--ice water content tendency due to sedimentation of ice crystals [kg/kg/s]
    14421440
    14431441
  • LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90

    r5728 r5779  
    671671      REAL, SAVE, ALLOCATABLE :: dqvc_adj(:,:), dqvc_sub(:,:), dqvc_con(:,:), dqvc_mix(:,:)
    672672      !$OMP THREADPRIVATE(dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix)
     673      REAL, SAVE, ALLOCATABLE :: dqi_sed(:,:), dcf_sed(:,:), dqvc_sed(:,:)
     674      !$OMP THREADPRIVATE(dqi_sed, dcf_sed, dqvc_sed)
     675      REAL, SAVE, ALLOCATABLE :: dqi_auto(:,:), dcf_auto(:,:), dqvc_auto(:,:)
     676      !$OMP THREADPRIVATE(dqi_auto, dcf_auto, dqvc_auto)
    673677      REAL, SAVE, ALLOCATABLE :: qsatliq(:,:), qsatice(:,:)
    674678      !$OMP THREADPRIVATE(qsatliq, qsatice)
     
    711715      REAL, SAVE, ALLOCATABLE :: dcfc_sed(:,:), dqic_sed(:,:), dqtc_sed(:,:)
    712716      !$OMP THREADPRIVATE(dcfc_sed, dqic_sed, dqtc_sed)
     717      REAL, SAVE, ALLOCATABLE :: dcfl_auto(:,:), dqil_auto(:,:), dqtl_auto(:,:)
     718      !$OMP THREADPRIVATE(dcfl_auto, dqil_auto, dqtl_auto)
     719      REAL, SAVE, ALLOCATABLE :: dcfc_auto(:,:), dqic_auto(:,:), dqtc_auto(:,:)
     720      !$OMP THREADPRIVATE(dcfc_auto, dqic_auto, dqtc_auto)
    713721      REAL, SAVE, ALLOCATABLE :: dcfc_sub(:,:), dqic_sub(:,:), dqtc_sub(:,:)
    714722      !$OMP THREADPRIVATE(dcfc_sub, dqic_sub, dqtc_sub)
     
    763771      REAL, SAVE, ALLOCATABLE :: dqsfreez(:,:)
    764772      !$OMP THREADPRIVATE(dqsfreez)
    765       REAL, SAVE, ALLOCATABLE :: dqised(:,:)
    766       !$OMP THREADPRIVATE(dqised)
    767       REAL, SAVE, ALLOCATABLE :: dcfsed(:,:)
    768       !$OMP THREADPRIVATE(dcfsed)
    769       REAL, SAVE, ALLOCATABLE :: dqvcsed(:,:)
    770       !$OMP THREADPRIVATE(dqvcsed)
    771773
    772774! variables for stratospheric aerosol
     
    12891291      ALLOCATE(dqi_adj(klon,klev), dqi_sub(klon,klev), dqi_con(klon,klev), dqi_mix(klon,klev))
    12901292      ALLOCATE(dqvc_adj(klon,klev), dqvc_sub(klon,klev), dqvc_con(klon,klev), dqvc_mix(klon,klev))
     1293      ALLOCATE(dqi_sed(klon,klev), dcf_sed(klon,klev), dqvc_sed(klon,klev))
     1294      ALLOCATE(dqi_auto(klon,klev), dcf_auto(klon,klev), dqvc_auto(klon,klev))
    12911295      ALLOCATE(qsatliq(klon,klev), qsatice(klon,klev))
    12921296      ALLOCATE(issrfra100to150(klon), issrfra150to200(klon), issrfra200to250(klon))
     
    13091313      ALLOCATE(dcfl_mix(klon,klev), dqil_mix(klon,klev), dqtl_mix(klon,klev))
    13101314      ALLOCATE(dcfl_sed(klon,klev), dqil_sed(klon,klev), dqtl_sed(klon,klev))
     1315      ALLOCATE(dcfl_auto(klon,klev), dqil_auto(klon,klev), dqtl_auto(klon,klev))
    13111316      ALLOCATE(dcfc_sub(klon,klev), dqic_sub(klon,klev), dqtc_sub(klon,klev))
    13121317      ALLOCATE(dcfc_mix(klon,klev), dqic_mix(klon,klev), dqtc_mix(klon,klev))
    13131318      ALLOCATE(dcfc_sed(klon,klev), dqic_sed(klon,klev), dqtc_sed(klon,klev))
     1319      ALLOCATE(dcfc_auto(klon,klev), dqic_auto(klon,klev), dqtc_auto(klon,klev))
    13141320      ALLOCATE(cldfra_nocont(klon,klev), cldtau_nocont(klon,klev), cldemi_nocont(klon,klev))
    13151321      ALLOCATE(cldh_nocont(klon), contcov(klon), conttau(klon,klev), contemi(klon,klev))
     
    13251331      ALLOCATE(dqrauto(klon,klev), dqrcol(klon,klev), dqrmelt(klon,klev), dqrfreez(klon,klev))
    13261332      ALLOCATE(dqsauto(klon,klev), dqsagg(klon,klev), dqsrim(klon,klev), dqsmelt(klon,klev), dqsfreez(klon,klev))
    1327       ALLOCATE(dqised(klon,klev), dcfsed(klon,klev), dqvcsed(klon,klev))
    13281333
    13291334IF (CPPKEY_STRATAER) THEN
     
    17291734      DEALLOCATE(dqi_adj, dqi_sub, dqi_con, dqi_mix)
    17301735      DEALLOCATE(dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix)
     1736      DEALLOCATE(dqi_sed, dcf_sed, dqvc_sed)
     1737      DEALLOCATE(dqi_auto, dcf_auto, dqvc_auto)
    17311738      DEALLOCATE(qsatliq, qsatice)
    17321739      DEALLOCATE(issrfra100to150, issrfra150to200, issrfra200to250)
     
    17431750      DEALLOCATE(dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix)
    17441751      DEALLOCATE(dcfl_sed, dqil_sed, dqtl_sed, dcfc_sed, dqic_sed, dqtc_sed)
     1752      DEALLOCATE(dcfl_auto, dqil_auto, dqtl_auto, dcfc_auto, dqic_auto, dqtc_auto)
    17451753      DEALLOCATE(cldfra_nocont, cldtau_nocont, cldemi_nocont, conttau, contemi)
    17461754      DEALLOCATE(cldh_nocont, contcov, fiwp_nocont, fiwc_nocont, ref_ice_nocont)
     
    17551763      DEALLOCATE(dqrauto, dqrcol, dqrmelt, dqrfreez)
    17561764      DEALLOCATE(dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez)
    1757       DEALLOCATE(dqised, dcfsed, dqvcsed)
    17581765
    17591766IF (CPPKEY_STRATAER) THEN
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90

    r5728 r5779  
    19311931  TYPE(ctrl_out), SAVE :: o_dqsfreez = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    19321932    'dqsfreez', 'LS snow tendency due to freezing', 'kg/kg/s', (/ ('', i=1, 10) /))
    1933   TYPE(ctrl_out), SAVE :: o_dqised = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    1934     'dqised', 'Ice water content tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /))
    1935   TYPE(ctrl_out), SAVE :: o_dcfsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    1936     'dcfsed', 'Cloud fraction tendency due to sedimentation', 's-1', (/ ('', i=1, 10) /))
    1937   TYPE(ctrl_out), SAVE :: o_dqvcsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    1938     'dqvcsed', 'Cloud water vapor tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /))
    19391933  TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11, 11/), &
    19401934    'rhum', 'Relative humidity', '-', (/ ('', i=1, 10) /))
     
    24892483  TYPE(ctrl_out), SAVE :: o_dqvcmix = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    24902484    'dqvcmix', 'Cloud mixing cloudy water vapor tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
     2485  TYPE(ctrl_out), SAVE :: o_dqised = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2486    'dqised', 'Ice water content tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /))
     2487  TYPE(ctrl_out), SAVE :: o_dcfsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2488    'dcfsed', 'Cloud fraction tendency due to sedimentation', 's-1', (/ ('', i=1, 10) /))
     2489  TYPE(ctrl_out), SAVE :: o_dqvcsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2490    'dqvcsed', 'Cloud water vapor tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /))
     2491  TYPE(ctrl_out), SAVE :: o_dqiauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2492    'dqiauto', 'Ice water content tendency due to autoconversion', 'kg/kg/s', (/ ('', i=1, 10) /))
     2493  TYPE(ctrl_out), SAVE :: o_dcfauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2494    'dcfauto', 'Cloud fraction tendency due to autoconversion', 's-1', (/ ('', i=1, 10) /))
     2495  TYPE(ctrl_out), SAVE :: o_dqvcauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2496    'dqvcauto', 'Cloud water vapor tendency due to autoconversion', 'kg/kg/s', (/ ('', i=1, 10) /))
    24912497  TYPE(ctrl_out), SAVE :: o_qsatl = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    24922498    'qsatl', 'Saturation with respect to liquid', 'kg/kg', (/ ('', i=1, 10) /))
     
    25712577  TYPE(ctrl_out), SAVE :: o_dqtcsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    25722578    'dqtcsed', 'Ice sedimentation contrail cirrus total specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
     2579  TYPE(ctrl_out), SAVE :: o_dcflauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2580    'dcflauto', 'Ice autoconversion linear contrail fraction tendency', 's-1', (/ ('', i=1, 10) /))
     2581  TYPE(ctrl_out), SAVE :: o_dqilauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2582    'dqilauto', 'Ice autoconversion linear contrail ice specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
     2583  TYPE(ctrl_out), SAVE :: o_dqtlauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2584    'dqtlauto', 'Ice autoconversion linear contrail total specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
     2585  TYPE(ctrl_out), SAVE :: o_dcfcauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2586    'dcfcauto', 'Ice autoconversion contrail cirrus fraction tendency', 's-1', (/ ('', i=1, 10) /))
     2587  TYPE(ctrl_out), SAVE :: o_dqicauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2588    'dqicauto', 'Ice autoconversion contrail cirrus ice specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
     2589  TYPE(ctrl_out), SAVE :: o_dqtcauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2590    'dqtcauto', 'Ice autoconversion contrail cirrus total specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
    25732591  TYPE(ctrl_out), SAVE :: o_dcfcsub = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    25742592    'dcfcsub', 'Sublimation contrail cirrus fraction tendency', 's-1', (/ ('', i=1, 10) /))
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90

    r5728 r5779  
    150150         o_qrainlsc, o_qsnowlsc, o_dqreva, o_dqrauto, o_dqrcol, o_dqrmelt, o_dqrfreez, &
    151151         o_dqssub, o_dqsauto, o_dqsagg, o_dqsrim, o_dqsmelt, o_dqsfreez, &
    152          o_dqised, o_dcfsed, o_dqvcsed, &
    153152         o_duphy, o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, &
    154153         o_dqsphy, o_dqsphy2d, o_dqbsphy, o_dqbsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
     
    235234         o_qsub, o_qissr, o_qcld, o_subfra, o_issrfra, o_gammacond, &
    236235         o_dcfsub, o_dcfcon, o_dcfmix, o_dqiadj, o_dqisub, o_dqicon, o_dqimix, &
     236         o_dqised, o_dcfsed, o_dqvcsed, o_dqiauto, o_dcfauto, o_dqvcauto, &
    237237         o_dqvcadj, o_dqvcsub, o_dqvccon, o_dqvcmix, o_qsatl, o_qsati, &
    238238         o_issrfra100to150, o_issrfra150to200, o_issrfra200to250, &
     
    246246         o_dcflmix, o_dqilmix, o_dqtlmix, &
    247247         o_dcflsed, o_dqilsed, o_dqtlsed, o_dcfcsed, o_dqicsed, o_dqtcsed, &
     248         o_dcflauto, o_dqilauto, o_dqtlauto, o_dcfcauto, o_dqicauto, o_dqtcauto, &
    248249         o_dcfcsub, o_dqicsub, o_dqtcsub, o_dcfcmix, o_dqicmix, o_dqtcmix, &
    249250         o_cldfra_nocont, o_cldtau_nocont, o_cldemi_nocont, o_cldh_nocont, &
     
    374375         dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    375376         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, &
     377         dqi_sed, dcf_sed, dqvc_sed, dqi_auto, dcf_auto, dqvc_auto, &
    376378         qsatliq, qsatice, &
    377379         issrfra100to150, issrfra150to200, issrfra200to250, &
     
    384386         dcfl_mix, dqil_mix, dqtl_mix, &
    385387         dcfl_sed, dqil_sed, dqtl_sed, dcfc_sed, dqic_sed, dqtc_sed, &
     388         dcfl_auto, dqil_auto, dqtl_auto, dcfc_auto, dqic_auto, dqtc_auto, &
    386389         dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix, &
    387390         cldfra_nocont, cldtau_nocont, cldemi_nocont, cldh_nocont, &
     
    415418         dqrauto,dqrcol,dqrmelt,dqrfreez, &
    416419         dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, &
    417          dqised, dcfsed, dqvcsed, &
    418420         d_t_dyn,  &
    419421         d_q_dyn,  d_ql_dyn, d_qs_dyn, d_qbs_dyn,  &
     
    22252227         CALL histwrite_phy(o_issrfra400to500, issrfra400to500)
    22262228         IF ( ok_ice_sedim ) THEN
    2227           CALL histwrite_phy(o_dqised, dqised)
    2228           CALL histwrite_phy(o_dcfsed, dcfsed)
    2229           CALL histwrite_phy(o_dqvcsed, dqvcsed)
     2229          CALL histwrite_phy(o_dqised, dqi_sed)
     2230          CALL histwrite_phy(o_dcfsed, dcf_sed)
     2231          CALL histwrite_phy(o_dqvcsed, dqvc_sed)
     2232          CALL histwrite_phy(o_dqiauto, dqi_auto)
     2233          CALL histwrite_phy(o_dcfauto, dcf_auto)
     2234          CALL histwrite_phy(o_dqvcauto, dqvc_auto)
    22302235         ENDIF
    22312236       ENDIF
     
    22612266         CALL histwrite_phy(o_dqilsed, dqil_sed)
    22622267         CALL histwrite_phy(o_dqtlsed, dqtl_sed)
     2268         CALL histwrite_phy(o_dcflauto, dcfl_auto)
     2269         CALL histwrite_phy(o_dqilauto, dqil_auto)
     2270         CALL histwrite_phy(o_dqtlauto, dqtl_auto)
    22632271         CALL histwrite_phy(o_dcfcsub, dcfc_sub)
    22642272         CALL histwrite_phy(o_dqicsub, dqic_sub)
     
    22702278         CALL histwrite_phy(o_dqicsed, dqic_sed)
    22712279         CALL histwrite_phy(o_dqtcsed, dqtc_sed)
     2280         CALL histwrite_phy(o_dcfcauto, dcfc_auto)
     2281         CALL histwrite_phy(o_dqicauto, dqic_auto)
     2282         CALL histwrite_phy(o_dqtcauto, dqtc_auto)
    22722283         CALL histwrite_phy(o_cldfra_nocont, cldfra_nocont)
    22732284         CALL histwrite_phy(o_cldtau_nocont, cldtau_nocont)
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5717 r5779  
    192192       ! proprecip
    193193       qraindiag, qsnowdiag, &
    194        dqreva, dqssub, dqised, dcfsed, dqvcsed, &
     194       dqreva, dqssub, &
    195195       dqrauto,dqrcol,dqrmelt,dqrfreez, &
    196196       dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, &
     
    334334       ql_seri_lscp, qi_seri_lscp, &
    335335       dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
     336       dqi_sed, dcf_sed, dqvc_sed, &
    336337       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
    337338       !-- LSCP - aviation and contrails variables
     
    40104011         cf_seri, qvc_seri, u_seri, v_seri, &
    40114012         qsub, qissr, qcld, subfra, issrfra, gamma_cond,  &
    4012          dcf_sub, dcf_con, dcf_mix, dqised, dcfsed, dqvcsed, &
     4013         dcf_sub, dcf_con, dcf_mix, dqi_sed, dcf_sed, dqvc_sed, &
    40134014         dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    40144015         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
Note: See TracChangeset for help on using the changeset viewer.