Changeset 5639 for LMDZ6


Ignore:
Timestamp:
Apr 30, 2025, 3:08:27 PM (5 weeks ago)
Author:
aborella
Message:

Small bugfixes contrails RF

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

Legend:

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

    r5618 r5639  
    173173  REAL zflwp_var, zfiwp_var
    174174  REAL d_rei_dt
    175   REAL pclc_cont, pclc_perscont
     175  REAL pclc_cont(klon,klev), pclc_perscont(klon,klev)
    176176  REAL rei_cont, rei_perscont
    177177
     
    574574        reice_nocont(i,k) = 0.
    575575        pclc_nocont(i,k) = 0.
     576        pclc_cont(i,k) = 0.
     577        pclc_perscont(i,k) = 0.
    576578        pcltau_cont(i,k) = 0.
    577579        pclemi_cont(i,k) = 0.
     
    688690
    689691        IF ( contfra(i,k) .GT. 0.01 * seuil_neb ) THEN
    690           pclc_cont = contfra(i,k)
     692          pclc_cont(i,k) = contfra(i,k)
    691693          rei_cont = re_ice_crystals_contrails * 1.E6
    692694        ELSE
    693           pclc_cont = 0.
     695          pclc_cont(i,k) = 0.
    694696          rei_cont = 1.
    695697        ENDIF
     
    698700        IF ( perscontfra(i,k) .GT. 0.01 * seuil_neb ) THEN
    699701          !--Everything is the same but with contrails
    700           pclc_perscont = perscontfra(i,k)
     702          pclc_perscont(i,k) = perscontfra(i,k)
    701703
    702704          tc = temp(i, k) - 273.15
     
    705707
    706708        ELSE
    707           pclc_perscont = 0.
     709          pclc_perscont(i,k) = 0.
    708710          rei_perscont = 1.
    709711        ENDIF
     
    711713        IF ( MAX(contfra(i,k), perscontfra(i,k)) .GT. 0.01 * seuil_neb ) THEN
    712714
    713           rei = ( rei_cont * pclc_cont + rei_perscont * pclc_perscont ) &
    714               / ( pclc_cont + pclc_perscont )
     715          rei = ( rei_cont * pclc_cont(i,k) + rei_perscont * pclc_perscont(i,k) ) &
     716              / ( pclc_cont(i,k) + pclc_perscont(i,k) )
    715717          zfiwp_var = 1000.*(xfiwc(i, k)-xfiwc_nocont(i, k))&
    716718                    / (pclc(i, k)-pclc_nocont(i, k))*rhodz(i, k)
     
    730732
    731733
    732         rei = ( rei_cont * pclc_cont + rei_perscont * pclc_perscont &
     734        rei = ( rei_cont * pclc_cont(i,k) + rei_perscont * pclc_perscont(i,k) &
    733735            + reice_nocont(i, k) * pclc_nocont(i, k) ) &
    734             / ( pclc_cont + pclc_perscont + pclc_nocont(i,k) )
     736            / ( pclc_cont(i,k) + pclc_perscont(i,k) + pclc_nocont(i,k) )
    735737
    736738        zflwp_var = 1000.*xflwc(i, k)/pclc(i, k)*rhodz(i, k)
     
    879881    DO k = klev, 1, -1
    880882      DO i = 1, klon
    881         zclear(i) = zclear(i)*(1.-max(contfra(i,k)+perscontfra(i,k),zcloud(i)))/&
     883        zclear(i) = zclear(i)*(1.-max(pclc_cont(i,k)+pclc_perscont(i,k),zcloud(i)))/&
    882884          (1.-min(real(zcloud(i),kind=8),1.-zepsec))
    883885        pct_cont(i) = 1. - zclear(i)
    884         zcloud(i) = contfra(i,k) + perscontfra(i,k)
     886        zcloud(i) = pclc_cont(i,k) + pclc_perscont(i,k)
    885887        IF (paprs(i,k)<prmhc) THEN
    886888          pch_nocont(i) = pch_nocont(i)*(1.-max(pclc_nocont(i,k),zcloudh(i)))/(1.-min(real( &
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_cloud_optics_prop_ini.f90

    r5589 r5639  
    2929  REAL, PARAMETER :: prlmc=680.*100. ! Pressure between low and medium level cloud in Pa
    3030  REAL, PARAMETER :: coef_froi=0.09, coef_chau =0.13
    31   REAL, PARAMETER :: seuil_neb=0.001
     31  REAL, PROTECTED :: seuil_neb=0.001
    3232! if iflag_t_glace=0, old values are used for liquid/ice partitionning:
    3333  REAL, PARAMETER :: t_glace_min_old = 258.
     
    4343!$OMP THREADPRIVATE(rei_coef, rei_min_temp)
    4444!$OMP THREADPRIVATE(zepsec)
    45 !$OMP THREADPRIVATE(re_ice_crystals_contrails)
     45!$OMP THREADPRIVATE(re_ice_crystals_contrails, seuil_neb)
    4646
    4747 
     
    111111    CALL getin_p('rei_min_temp',rei_min_temp)
    112112    CALL getin_p('re_ice_crystals_contrails', re_ice_crystals_contrails)
     113    CALL getin_p('seuil_neb_rad', seuil_neb)
     114    write(lunout,*)'seuil_neb_rad=',seuil_neb
    113115
    114116   
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5634 r5639  
    456456      IF ( ok_plane_contrail ) THEN
    457457        contfra(i) = MAX(0., MIN(cldfra(i), contfra_in(i)))
    458         perscontfra(i) = MAX(0., MIN(cldfra(i), perscontfra_in(i)))
     458        perscontfra(i) = MAX(0., MIN(cldfra(i) - contfra(i), perscontfra_in(i)))
    459459        qcont(i) = MAX(0., MIN(qcld(i), qva_in(i) + qia_in(i)))
    460460
     
    12751275      IF ( cldfra(i) .GE. ( 1. - cfcon(i) - eps ) ) THEN
    12761276        contrails_conversion_factor = 1.
     1277      ELSEIF ( contfra(i) .LT. 1.e-6 ) THEN
     1278        contrails_conversion_factor = 1.
    12771279      ELSE
    12781280        contrails_conversion_factor = ( 1. - &
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90

    r5618 r5639  
    21982198         IF (ok_rad_contrail) THEN
    21992199           IF (vars_defined) zx_tmp_fi2d = topsw_nocont * swradcorr
    2200            CALL histwrite_phy(o_tops_nocont, topsw_nocont)
     2200           CALL histwrite_phy(o_tops_nocont, zx_tmp_fi2d)
    22012201           CALL histwrite_phy(o_topl_nocont, toplw_nocont)
    22022202           IF (vars_defined) zx_tmp_fi2d = topsw_nocont * swradcorr - toplw_nocont
    22032203           CALL histwrite_phy(o_nettop_nocont, zx_tmp_fi2d)
    22042204           IF (vars_defined) zx_tmp_fi2d = solsw_nocont * swradcorr
    2205            CALL histwrite_phy(o_sols_nocont, solsw_nocont)
     2205           CALL histwrite_phy(o_sols_nocont, zx_tmp_fi2d)
    22062206           CALL histwrite_phy(o_soll_nocont, sollw_nocont)
    22072207         ENDIF
Note: See TracChangeset for help on using the changeset viewer.