Ignore:
Timestamp:
Aug 4, 2025, 3:03:07 PM (12 days ago)
Author:
aborella
Message:

Additional diags for contrails + simplified coupling between deep conv and cirrus clouds + small modifsin RRTM for RF of contrails alone

File:
1 edited

Legend:

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

    r5791 r5796  
    4343     & flag_aer_feedback, &
    4444     !--AB contrails radiative effect
    45      & ok_rad_contrail, PCLFR_NOCONT, PQIWP_NOCONT, PREF_ICE_NOCONT, &
     45     & ok_rad_contrail, PCLFR_CONT, PQIWP_CONT, PREF_ICE_CONT, &
    4646     & PTOPSWNOCONT, PSOLSWNOCONT, PTOPLWNOCONT, PSOLLWNOCONT)
    4747  !--fin
     
    274274  !--AB contrails radiative effect
    275275  LOGICAL           ,INTENT(IN)    :: ok_rad_contrail
    276   REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLFR_NOCONT(KPROMA,KLEV)
    277   REAL(KIND=JPRB)   ,INTENT(IN)    :: PQIWP_NOCONT(KPROMA,KLEV)
    278   REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE_NOCONT(KPROMA,KLEV)
     276  REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLFR_CONT(KPROMA,KLEV)
     277  REAL(KIND=JPRB)   ,INTENT(IN)    :: PQIWP_CONT(KPROMA,KLEV)
     278  REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE_CONT(KPROMA,KLEV)
    279279  REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPSWNOCONT(KPROMA), PSOLSWNOCONT(KPROMA) ! No contrails experiment forcing at TOA and surface (SW)
    280280  REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWNOCONT(KPROMA), PSOLLWNOCONT(KPROMA) ! No contrails experiment forcing at TOA and surface (LW)
     
    360360  REAL(KIND=JPRB) ::  LWDN0_AERO(KPROMA,KLEV+1,5)
    361361  !--AB contrails radiative effect
    362   REAL(KIND=JPRB) :: ZRCLC_NOCONT(KPROMA,KLEV), ZQIWP_NOCONT(KPROMA,KLEV)
     362  REAL(KIND=JPRB) :: ZRCLC_CONT(KPROMA,KLEV), ZQIWP_CONT(KPROMA,KLEV)
     363  REAL(KIND=JPRB) :: ZRCLC_ZERO(KPROMA,KLEV), ZQIWP_ZERO(KPROMA,KLEV)
     364  REAL(KIND=JPRB) :: PREF_ICE_ZERO(KPROMA,KLEV)
    363365  REAL(KIND=JPRB) :: PREF_LIQ_NOCONT(KPROMA,KLEV)
     366  REAL(KIND=JPRB) :: PREF_ICE_NOCONT(KPROMA,KLEV)
    364367  REAL(KIND=JPRB) :: PPIZA_NOCONT(KPROMA,KLEV,NSW)
    365368  REAL(KIND=JPRB) :: PCGA_NOCONT(KPROMA,KLEV,NSW)
     
    413416        !   ZPQO3(JL,JK)=PQO3(JL,JK)*PDP(JL,JK)*RMD/RMO3
    414417        ZPQO3(JL,JK)=PQO3(JL,JK)*PDP(JL,JK)
    415         ZRCLC(JL,JK)=MAX( 0.0_JPRB ,MIN( 1.0_JPRB ,PCLFR(JL,JK)))
    416         IF (ZRCLC(JL,JK) > REPCLC) THEN
    417            ZQLWP(JL,JK)=PQLWP(JL,JK)
    418            ZQIWP(JL,JK)=PQIWP(JL,JK)
    419         ELSE
    420            ZQLWP(JL,JK)=REPH2O*ZRCLC(JL,JK)
    421            ZQIWP(JL,JK)=REPH2O*ZRCLC(JL,JK)
    422         ENDIF
    423418        ZQRAIN(JL,JK)=0.
    424419        ZQRAINT(JL,JK)=0.
     
    429424     ENDDO
    430425  ENDDO
     426
     427  IF ( ok_rad_contrail ) THEN
     428    DO JK=1,KLEV
     429       DO JL=IBEG,IEND
     430          ZRCLC(JL,JK)=MAX( 0.0_JPRB ,MIN( 1.0_JPRB ,PCLFR(JL,JK)-PCLFR_CONT(JL,JK)))
     431          IF (ZRCLC(JL,JK) > REPCLC) THEN
     432             ZQLWP(JL,JK)=PQLWP(JL,JK)
     433             ZQIWP(JL,JK)=PQIWP(JL,JK)-PQIWP_CONT(JL,JK)
     434          ELSE
     435             ZQLWP(JL,JK)=REPH2O*ZRCLC(JL,JK)
     436             ZQIWP(JL,JK)=REPH2O*ZRCLC(JL,JK)
     437          ENDIF
     438          ZRCLC_CONT(JL,JK)=MAX( 0.0_JPRB ,MIN( 1.0_JPRB ,PCLFR_CONT(JL,JK)))
     439          IF (ZRCLC_CONT(JL,JK) > REPCLC) THEN
     440             ZQIWP_CONT(JL,JK)=PQIWP_CONT(JL,JK)
     441          ELSE
     442             ZQIWP_CONT(JL,JK)=REPH2O*ZRCLC_CONT(JL,JK)
     443          ENDIF
     444       ENDDO
     445    ENDDO
     446  ELSE
     447    DO JK=1,KLEV
     448       DO JL=IBEG,IEND
     449          ZRCLC(JL,JK)=MAX( 0.0_JPRB ,MIN( 1.0_JPRB ,PCLFR(JL,JK)))
     450          IF (ZRCLC(JL,JK) > REPCLC) THEN
     451             ZQLWP(JL,JK)=PQLWP(JL,JK)
     452             ZQIWP(JL,JK)=PQIWP(JL,JK)
     453          ELSE
     454             ZQLWP(JL,JK)=REPH2O*ZRCLC(JL,JK)
     455             ZQIWP(JL,JK)=REPH2O*ZRCLC(JL,JK)
     456          ENDIF
     457          ZRCLC_CONT(JL,JK)=0.0_JPRB
     458          ZQIWP_CONT(JL,JK)=0.0_JPRB
     459       ENDDO
     460    ENDDO
     461  ENDIF
    431462
    432463  IF (NAER == 0) THEN
     
    512543             & PTH   , ZRTI   , PTS     , ZNBAS , ZNTOP ,&
    513544             & PREF_LIQ_PI, PREF_ICE_PI,&
     545             & ZRCLC_CONT, ZQIWP_CONT, PREF_ICE_CONT,& ! AB FOR CONTRAILS
    514546             & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
    515547             & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
     
    553585             & PTH   , ZRTI   , PTS     , ZNBAS , ZNTOP ,&
    554586             & PREF_LIQ, PREF_ICE,&
     587             & ZRCLC_CONT, ZQIWP_CONT, PREF_ICE_CONT,& ! AB FOR CONTRAILS
    555588             & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
    556589             & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
     
    594627             & PTH   , ZRTI   , PTS     , ZNBAS , ZNTOP ,&
    595628             & PREF_LIQ_PI, PREF_ICE_PI,&
     629             & ZRCLC_CONT, ZQIWP_CONT, PREF_ICE_CONT,& ! AB FOR CONTRAILS
    596630             & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
    597631             & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
     
    634668             & PTH   , ZRTI   , PTS     , ZNBAS , ZNTOP ,&
    635669             & PREF_LIQ, PREF_ICE,&
     670             & ZRCLC_CONT, ZQIWP_CONT, PREF_ICE_CONT,& ! AB FOR CONTRAILS
    636671             & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
    637672             & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
     
    676711          !--this needs to be changed to fixed cloud optical properties
    677712          & PREF_LIQ_PI, PREF_ICE_PI,&
     713          & ZRCLC_CONT, ZQIWP_CONT, PREF_ICE_CONT,& ! AB FOR CONTRAILS
    678714          & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
    679715          & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
     
    701737  !--Double call to radiative routine for contrails
    702738  !--The calculation are done again WITHOUT contrails
    703   IF (ok_rad_contrail) THEN
     739  IF ( ok_rad_contrail ) THEN
    704740
    705741     !--The same base case is used
     
    707743     IF ( flag_aerosol .EQ. 0 ) THEN
    708744        PREF_LIQ_NOCONT(:,:) = PREF_LIQ_PI(:,:)
     745        PREF_ICE_NOCONT(:,:) = PREF_ICE_PI(:,:)
    709746        PPIZA_NOCONT(:,:,:) = PPIZA_ZERO(:,:,:)
    710747        PCGA_NOCONT(:,:,:) = PCGA_ZERO(:,:,:)
     
    713750     ELSEIF ( .not. ok_ade .AND. .not. ok_aie ) THEN
    714751        PREF_LIQ_NOCONT(:,:) = PREF_LIQ_PI(:,:)
     752        PREF_ICE_NOCONT(:,:) = PREF_ICE_PI(:,:)
    715753        PPIZA_NOCONT(:,:,:) = PPIZA_NAT(:,:,:)
    716754        PCGA_NOCONT(:,:,:) = PCGA_NAT(:,:,:)
     
    719757     ELSEIF ( .not. ok_ade .AND. ok_aie ) THEN
    720758        PREF_LIQ_NOCONT(:,:) = PREF_LIQ(:,:)
     759        PREF_ICE_NOCONT(:,:) = PREF_ICE(:,:)
    721760        PPIZA_NOCONT(:,:,:) = PPIZA_NAT(:,:,:)
    722761        PCGA_NOCONT(:,:,:) = PCGA_NAT(:,:,:)
     
    725764     ELSEIF ( ok_ade .AND. .not. ok_aie ) THEN
    726765        PREF_LIQ_NOCONT(:,:) = PREF_LIQ_PI(:,:)
     766        PREF_ICE_NOCONT(:,:) = PREF_ICE_PI(:,:)
    727767        PPIZA_NOCONT(:,:,:) = PPIZA_TOT(:,:,:)
    728768        PCGA_NOCONT(:,:,:) = PCGA_TOT(:,:,:)
     
    731771     ELSEIF ( ok_ade .AND. ok_aie ) THEN
    732772        PREF_LIQ_NOCONT(:,:) = PREF_LIQ(:,:)
     773        PREF_ICE_NOCONT(:,:) = PREF_ICE(:,:)
    733774        PPIZA_NOCONT(:,:,:) = PPIZA_TOT(:,:,:)
    734775        PCGA_NOCONT(:,:,:) = PCGA_TOT(:,:,:)
     
    739780     DO JK=1,KLEV
    740781         DO JL=IBEG,IEND
    741              ZRCLC_NOCONT(JL,JK)=MAX( 0.0_JPRB ,MIN( 1.0_JPRB ,PCLFR_NOCONT(JL,JK)))
    742              IF (ZRCLC_NOCONT(JL,JK) > REPCLC) THEN
    743                  ZQIWP_NOCONT(JL,JK)=PQIWP_NOCONT(JL,JK)
    744              ELSE
    745                  ZQIWP_NOCONT(JL,JK)=REPH2O*ZRCLC_NOCONT(JL,JK)
    746              ENDIF
     782             ZRCLC_ZERO(JL,JK)=0.0_JPRB
     783             ZQIWP_ZERO(JL,JK)=0.0_JPRB
     784             PREF_ICE_ZERO(JL,JK)=1.0_JPRB
    747785         ENDDO
    748786     ENDDO
     
    753791          & ZRAER , PALBD  , PALBP   , PAPRS , ZRPR  ,&
    754792          & ZCCNL , ZCCNO  ,&
    755           & PCCO2 , ZRCLC_NOCONT  , PDP     , PEMIS , ZEMIW ,PSLM    , ZRMU0 , ZPQO3,&
    756           & ZQ    , ZQIWP_NOCONT  , ZQLWP   , ZQS   , ZQRAIN,ZQRAINT ,&
     793          & PCCO2 , ZRCLC  , PDP     , PEMIS , ZEMIW ,PSLM    , ZRMU0 , ZPQO3,&
     794          & ZQ    , ZQIWP  , ZQLWP   , ZQS   , ZQRAIN,ZQRAINT ,&
    757795          & PTH   , ZRTI   , PTS     , ZNBAS , ZNTOP ,&
    758796          & PREF_LIQ_NOCONT, PREF_ICE_NOCONT,&
     797          & ZRCLC_ZERO, ZQIWP_ZERO, PREF_ICE_ZERO,& ! AB FOR CONTRAILS
    759798          & ZEMIT , ZFCT   , ZFLT    , ZFCS    , ZFLS  ,&
    760799          & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
Note: See TracChangeset for help on using the changeset viewer.