Ignore:
Timestamp:
Mar 26, 2025, 6:05:40 PM (5 months ago)
Author:
aborella
Message:

Multiple changes:

  • added new radiative diagnostics for contrails
  • added ok_rad_contrail option to allow for a double call of RRTM (w/ and w/o contrails)
  • transformed resuspension of snow into ice sedimentation (poprecip)
  • some modifications in poprecip in line with the ones from EV
  • cleaned sublimation of ice clouds in lmdz_lscp_condensation, option ok_ice_supersat
  • aviation emissions can now be read with IOIPSL (in lon/lat mode)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/phylmd/rrtm/recmwf_aero.F90

    r5294 r5589  
    4040     !..end
    4141     & ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat,&
    42      & flag_aer_feedback)
     42     & flag_aer_feedback, &
     43     !--AB contrails radiative effect
     44     & ok_rad_contrail, PCLFR_NOCONT, PQIWP_NOCONT, PREF_ICE_NOCONT, &
     45     & PTOPSWNOCONT, PSOLSWNOCONT, PTOPLWNOCONT, PSOLLWNOCONT)
    4346  !--fin
    4447
     
    266269  REAL(KIND=JPRB)   ,INTENT(OUT)   :: volmip_solsw(KPROMA) ! SW clear sky in the case of VOLMIP
    267270  INTEGER, INTENT(IN)              :: flag_volc_surfstrat !--VOlMIP Modif
     271  !--AB contrails radiative effect
     272  LOGICAL           ,INTENT(IN)    :: ok_rad_contrail
     273  REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLFR_NOCONT(KPROMA,KLEV)
     274  REAL(KIND=JPRB)   ,INTENT(IN)    :: PQIWP_NOCONT(KPROMA,KLEV)
     275  REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE_NOCONT(KPROMA,KLEV)
     276  REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPSWNOCONT(KPROMA), PSOLSWNOCONT(KPROMA) ! No contrails experiment forcing at TOA and surface (SW)
     277  REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWNOCONT(KPROMA), PSOLLWNOCONT(KPROMA) ! No contrails experiment forcing at TOA and surface (LW)
    268278
    269279  !     ==== COMPUTED IN RADITE ===
     
    346356  REAL(KIND=JPRB) ::  LWUP0_AERO(KPROMA,KLEV+1,5)
    347357  REAL(KIND=JPRB) ::  LWDN0_AERO(KPROMA,KLEV+1,5)
     358  !--AB contrails radiative effect
     359  REAL(KIND=JPRB) :: ZRCLC_NOCONT(KPROMA,KLEV), ZQIWP_NOCONT(KPROMA,KLEV)
     360  REAL(KIND=JPRB) :: PREF_LIQ_NOCONT(KPROMA,KLEV)
     361  REAL(KIND=JPRB) :: PPIZA_NOCONT(KPROMA,KLEV,NSW)
     362  REAL(KIND=JPRB) :: PCGA_NOCONT(KPROMA,KLEV,NSW)
     363  REAL(KIND=JPRB) :: PTAU_NOCONT(KPROMA,KLEV,NSW)
     364  REAL(KIND=JPRB) :: PTAU_LW_NOCONT(KPROMA,KLEV,NLW)
    348365
    349366#include "radlsw.intfb.h"
     
    673690  ENDIF ! .not. AEROSOLFEEDBACK_ACTIVE
    674691
     692
     693  !--Double call to radiative routine for contrails
     694  !--The calculation are done again WITHOUT contrails
     695  IF (ok_rad_contrail) THEN
     696
     697     !--The same base case is used
     698     !--NB. here we could use pointers...
     699     IF ( flag_aerosol .EQ. 0 ) THEN
     700        PREF_LIQ_NOCONT(:,:) = PREF_LIQ_PI(:,:)
     701        PPIZA_NOCONT(:,:,:) = PPIZA_ZERO(:,:,:)
     702        PCGA_NOCONT(:,:,:) = PCGA_ZERO(:,:,:)
     703        PTAU_NOCONT(:,:,:) = PTAU_ZERO(:,:,:)
     704        PTAU_LW_NOCONT(:,:,:) = PTAU_LW_ZERO(:,:,:)
     705     ELSEIF ( .not. ok_ade .AND. .not. ok_aie ) THEN
     706        PREF_LIQ_NOCONT(:,:) = PREF_LIQ_PI(:,:)
     707        PPIZA_NOCONT(:,:,:) = PPIZA_NAT(:,:,:)
     708        PCGA_NOCONT(:,:,:) = PCGA_NAT(:,:,:)
     709        PTAU_NOCONT(:,:,:) = PTAU_NAT(:,:,:)
     710        PTAU_LW_NOCONT(:,:,:) = PTAU_LW_NAT(:,:,:)
     711     ELSEIF ( .not. ok_ade .AND. ok_aie ) THEN
     712        PREF_LIQ_NOCONT(:,:) = PREF_LIQ(:,:)
     713        PPIZA_NOCONT(:,:,:) = PPIZA_NAT(:,:,:)
     714        PCGA_NOCONT(:,:,:) = PCGA_NAT(:,:,:)
     715        PTAU_NOCONT(:,:,:) = PTAU_NAT(:,:,:)
     716        PTAU_LW_NOCONT(:,:,:) = PTAU_LW_NAT(:,:,:)
     717     ELSEIF ( ok_ade .AND. .not. ok_aie ) THEN
     718        PREF_LIQ_NOCONT(:,:) = PREF_LIQ_PI(:,:)
     719        PPIZA_NOCONT(:,:,:) = PPIZA_TOT(:,:,:)
     720        PCGA_NOCONT(:,:,:) = PCGA_TOT(:,:,:)
     721        PTAU_NOCONT(:,:,:) = PTAU_TOT(:,:,:)
     722        PTAU_LW_NOCONT(:,:,:) = PTAU_LW_TOT(:,:,:)
     723     ELSEIF ( ok_ade .AND. ok_aie ) THEN
     724        PREF_LIQ_NOCONT(:,:) = PREF_LIQ(:,:)
     725        PPIZA_NOCONT(:,:,:) = PPIZA_TOT(:,:,:)
     726        PCGA_NOCONT(:,:,:) = PCGA_TOT(:,:,:)
     727        PTAU_NOCONT(:,:,:) = PTAU_TOT(:,:,:)
     728        PTAU_LW_NOCONT(:,:,:) = PTAU_LW_TOT(:,:,:)
     729     ENDIF
     730
     731     DO JK=1,KLEV
     732         DO JL=IBEG,IEND
     733             ZRCLC_NOCONT(JL,JK)=MAX( 0.0_JPRB ,MIN( 1.0_JPRB ,PCLFR_NOCONT(JL,JK)))
     734             IF (ZRCLC_NOCONT(JL,JK) > REPCLC) THEN
     735                 ZQIWP_NOCONT(JL,JK)=PQIWP_NOCONT(JL,JK)
     736             ELSE
     737                 ZQIWP_NOCONT(JL,JK)=REPH2O*ZRCLC_NOCONT(JL,JK)
     738             ENDIF
     739         ENDDO
     740     ENDDO
     741
     742     CALL RADLSW (&
     743          & IBEG  , IEND   , KPROMA  , KLEV  , KMODE , NAER,&
     744          & ZRII0 ,&
     745          & ZRAER , PALBD  , PALBP   , PAPRS , ZRPR  ,&
     746          & ZCCNL , ZCCNO  ,&
     747          & PCCO2 , ZRCLC_NOCONT  , PDP     , PEMIS , ZEMIW ,PSLM    , ZRMU0 , ZPQO3,&
     748          & ZQ    , ZQIWP_NOCONT  , ZQLWP   , ZQS   , ZQRAIN,ZQRAINT ,&
     749          & PTH   , ZRTI   , PTS     , ZNBAS , ZNTOP ,&
     750          & PREF_LIQ_NOCONT, PREF_ICE_NOCONT,&
     751          & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
     752          & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
     753          & PSFSWDIF,PFSDNN, PFSDNV  ,& 
     754          & LRDUST,PPIZA_NOCONT,PCGA_NOCONT,PTAU_NOCONT,PTAU_LW_NOCONT,PFLUX,PFLUC,&
     755          & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
     756
     757     ! save budgets LW and SW at TOA and surface
     758     PTOPSWNOCONT(:) = PFSDN(:,KLEV+1) - PFSUP(:,KLEV+1)
     759     PSOLSWNOCONT(:) = PFSDN(:,1) - PFSUP(:,1)
     760     PTOPLWNOCONT(:) = PFLUX(:,1,KLEV+1) + PFLUX(:,2,KLEV+1)
     761     PSOLLWNOCONT(:) = - PFLUX(:,1,1) - PFLUX(:,2,1)
     762
     763  ENDIF
     764
    675765  !*         4.2     TRANSFORM FLUXES TO MODEL HISTORICAL VARIABLES
    676766
Note: See TracChangeset for help on using the changeset viewer.