Ignore:
Timestamp:
Jul 29, 2025, 5:41:19 PM (7 days ago)
Author:
aborella
Message:

Added an option to increase cirrus cover for radiative transfer (Brooks et al, 2005)

File:
1 edited

Legend:

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

    r5791 r5794  
    3131     dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati,        &
    3232     cfc_seri, qtc_seri, nic_seri,                      &
    33      qice_cont, flight_dist, flight_fuel, qradice_cont, &
     33     qice_cont, flight_dist, flight_fuel,               &
     34     contfrarad, qradice_cont,                          &
    3435     Tcritcont, qcritcont, potcontfraP, potcontfraNP,   &
    3536     cloudth_sth,                                       &
     
    129130USE lmdz_lscp_ini, ONLY : ok_weibull_warm_clouds, ok_no_issr_strato, ok_ice_sedim
    130131USE lmdz_lscp_ini, ONLY : ok_plane_contrail
    131 USE lmdz_lscp_ini, ONLY : ok_nodeep_lscp, ok_nodeep_lscp_rad
     132USE lmdz_lscp_ini, ONLY : ok_nodeep_lscp, ok_nodeep_lscp_rad, ok_higher_cirrus_cover
    132133USE lmdz_lscp_ini, ONLY : ok_lscp_mergecond, gamma_mixth
    133134
     
    281282
    282283  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qice_cont      !--condensed water in contrails [kg/kg]
     284  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: contfrarad     !--contrail fraction for radiation [-]
    283285  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: qradice_cont   !--condensed water in contrails used in the radiation scheme [kg/kg]
    284286  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: Tcritcont      !--critical temperature for contrail formation [K]
     
    356358  REAL, DIMENSION(klon) :: zradocond, zradoice
    357359  REAL, DIMENSION(klon) :: zrho_up, zvelo_up
     360  REAL :: dz, coef_cover
    358361 
    359362  ! for condensation and ice supersaturation
     
    742745
    743746
     747        DO i = 1, klon
     748          !--Calculate the shear value (input for condensation and ice supersat)
     749          !--Cell thickness [m]
     750          delta_z = ( paprs(i,k) - paprs(i,k+1) ) / RG / pplay(i,k) * zt(i) * RD
     751          IF ( iftop ) THEN
     752            ! top
     753            shear(i) = SQRT( ( (u_seri(i,k) - u_seri(i,k-1)) / delta_z )**2. &
     754                           + ( (v_seri(i,k) - v_seri(i,k-1)) / delta_z )**2. )
     755          ELSEIF ( k .EQ. 1 ) THEN
     756            ! surface
     757            shear(i) = SQRT( ( (u_seri(i,k+1) - u_seri(i,k)) / delta_z )**2. &
     758                           + ( (v_seri(i,k+1) - v_seri(i,k)) / delta_z )**2. )
     759          ELSE
     760            ! other layers
     761            shear(i) = SQRT( ( ( (u_seri(i,k+1) + u_seri(i,k)) / 2. &
     762                               - (u_seri(i,k) + u_seri(i,k-1)) / 2. ) / delta_z )**2. &
     763                           + ( ( (v_seri(i,k+1) + v_seri(i,k)) / 2. &
     764                               - (v_seri(i,k) + v_seri(i,k-1)) / 2. ) / delta_z )**2. )
     765          ENDIF
     766        ENDDO
     767
    744768        IF ( ok_ice_supersat ) THEN
    745769
     
    832856                  nic_seri(i,k) = nic_seri(i,k) * deepconv_coef
    833857                ENDIF
    834               ENDIF
    835 
    836               !--Calculate the shear value (input for condensation and ice supersat)
    837               !--Cell thickness [m]
    838               delta_z = ( paprs(i,k) - paprs(i,k+1) ) / RG / pplay(i,k) * zt(i) * RD
    839               IF ( iftop ) THEN
    840                 ! top
    841                 shear(i) = SQRT( ( (u_seri(i,k) - u_seri(i,k-1)) / delta_z )**2. &
    842                                + ( (v_seri(i,k) - v_seri(i,k-1)) / delta_z )**2. )
    843               ELSEIF ( k .EQ. 1 ) THEN
    844                 ! surface
    845                 shear(i) = SQRT( ( (u_seri(i,k+1) - u_seri(i,k)) / delta_z )**2. &
    846                                + ( (v_seri(i,k+1) - v_seri(i,k)) / delta_z )**2. )
    847               ELSE
    848                 ! other layers
    849                 shear(i) = SQRT( ( ( (u_seri(i,k+1) + u_seri(i,k)) / 2. &
    850                                    - (u_seri(i,k) + u_seri(i,k-1)) / 2. ) / delta_z )**2. &
    851                                + ( ( (v_seri(i,k+1) + v_seri(i,k)) / 2. &
    852                                    - (v_seri(i,k) + v_seri(i,k-1)) / 2. ) / delta_z )**2. )
    853858              ENDIF
    854859            ENDIF
     
    14151420      qtc_seri(:,k) = qcont(:)
    14161421      nic_seri(:,k) = Ncont(:)
     1422      contfrarad(:,k) = contfra(:)
    14171423    ENDIF
    14181424
    14191425    IF ( ok_ice_supersat ) THEN
    1420 
    14211426      DO i = 1, klon
    14221427
     
    14701475        qsub(i,k) = zq(i) - qvc(i) - qissr(i,k)
    14711476        qcld(i,k) = qvc(i) + zoliq(i)
     1477
     1478        IF ( ok_higher_cirrus_cover .AND. pt_pron_clds(i) .AND. .NOT. ptconv(i,k) ) THEN
     1479          !--Following Brooks et al. (2005)
     1480          !--This is only valid for cirrus clouds
     1481          !--We do not apply it do convective clouds
     1482          IF ( ( rneb(i,k) .GT. eps ) .AND. ( rneb(i,k) .LT. (1. - eps) ) ) THEN
     1483            dz = ( paprs(i,k) - paprs(i,k+1) ) / RG / pplay(i,k) * zt(i) * RD
     1484            coef_cover = (0.0706 + 0.1274 * shear(i)**0.3015) &
     1485                * dz**0.7679 / SQRT(cell_area(i))**0.2254
     1486            rneb(i,k) = 1. / (1. + EXP(-coef_cover) * (1. / rneb(i,k) - 1.))
     1487            IF ( contfrarad(i,k) .GT. eps ) THEN
     1488              contfrarad(i,k) = cfc_seri(i,k) / cf_seri(i,k) * rneb(i,k)
     1489            ENDIF
     1490          ENDIF
     1491        ENDIF
    14721492
    14731493        !--Calculation of the ice supersaturated fraction following Lamquin et al (2012)
Note: See TracChangeset for help on using the changeset viewer.