Ignore:
Timestamp:
Nov 14, 2014, 9:22:21 PM (10 years ago)
Author:
idelkadi
Message:

Les modifications introduites ont pour but :
1/ d'autoriser le couplage entre INCA-aerosol et les parametrisations de
la nouvelle physique (NP) de LMDZ, en particulier les thermiques et le
transport convectif,
2/ generaliser les routines de calcul de proprietes optiques des
aerosols pour RRTM au cas ou les aerosols sont interactifs
3/ d'inclure les effets LW des aerosols stratospheriques pour RRTM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/rrtm/recmwf_aero.F90

    r2005 r2146  
    2020 & PPIZA_NAT,PCGA_NAT,PTAU_NAT, &
    2121!--fin OB
     22!--C.Kleinschmitt
     23 & PTAU_LW_TOT, PTAU_LW_NAT, &
     24!--end
    2225 & PFLUX,PFLUC,&
    2326 & PFSDN ,PFSUP , PFSCDN , PFSCUP,&
     
    2730 & PTOPSWAIAERO,PSOLSWAIAERO,&
    2831 & PTOPSWCFAERO,PSOLSWCFAERO,&
     32!--LW diagnostics CK
     33 & PTOPLWADAERO,PSOLLWADAERO,&
     34 & PTOPLWAD0AERO,PSOLLWAD0AERO,&
     35 & PTOPLWAIAERO,PSOLLWAIAERO,&
     36!..end
    2937 & ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
    3038!--fin
     
    7987! PCGA_NAT   : (KPROMA,KLEV,NSW); Assymetry factor for natural aerosol
    8088! PTAU_NAT: (KPROMA,KLEV,NSW)   ; Optical depth of natural aerosol
     89! PTAU_LW_TOT  (KPROMA,KLEV,NLW); LW Optical depth of total aerosols 
     90! PTAU_LW_NAT  (KPROMA,KLEV,NLW); LW Optical depth of natural aerosols
    8191!--fin OB
    8292
     
    136146USE YOMCST   , ONLY :         RMD      ,RMO3
    137147USE YOMPHY3  , ONLY : RII0
     148USE YOERAD   , ONLY : NLW, NAER, RCCNLND  ,RCCNSEA 
    138149USE YOERAD   , ONLY : NAER, RCCNLND  ,RCCNSEA 
    139150USE YOERDU   , ONLY : REPSCQ
     
    150161IMPLICIT NONE
    151162INCLUDE "clesphys.h"
     163
    152164
    153165INTEGER(KIND=JPIM),INTENT(IN)    :: KPROMA
     
    186198REAL(KIND=JPRB)                  :: PTAU_ZERO(KPROMA,KLEV,NSW)
    187199!--fin
     200!--C.Kleinschmitt
     201REAL(KIND=JPRB)                  :: PTAU_LW_ZERO(KPROMA,KLEV,NLW)
     202REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW_TOT(KPROMA,KLEV,NLW)
     203REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAU_LW_NAT(KPROMA,KLEV,NLW)
     204!--end
    188205REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_LIQ(KPROMA,KLEV)
    189206REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE(KPROMA,KLEV)
     
    199216REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPSWCFAERO(KPROMA,3), PSOLSWCFAERO(KPROMA,3) !--do we keep this ?
    200217!--fin
     218!--CK
     219REAL(KIND=JPRB)   ,INTENT(out)   :: PTOPLWADAERO(KPROMA), PSOLLWADAERO(KPROMA)       ! LW Aerosol direct forcing at TOA + surface
     220REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWAD0AERO(KPROMA), PSOLLWAD0AERO(KPROMA)     ! LW Aerosol direct forcing at TOA + surface
     221REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPLWAIAERO(KPROMA), PSOLLWAIAERO(KPROMA)       ! LW Aer. indirect forcing at TOA + surface
     222!--end
    201223REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMTD(KPROMA,KLEV+1)
    202224REAL(KIND=JPRB)   ,INTENT(OUT)   :: PEMTU(KPROMA,KLEV+1)
     
    295317REAL(KIND=JPRB) ::  ZFSUP0_AERO(KPROMA,KLEV+1,5)
    296318REAL(KIND=JPRB) ::  ZFSDN0_AERO(KPROMA,KLEV+1,5)
     319!--LW (CK):
     320REAL(KIND=JPRB) ::  LWUP_AERO(KPROMA,KLEV+1,5)
     321REAL(KIND=JPRB) ::  LWDN_AERO(KPROMA,KLEV+1,5)
     322REAL(KIND=JPRB) ::  LWUP0_AERO(KPROMA,KLEV+1,5)
     323REAL(KIND=JPRB) ::  LWDN0_AERO(KPROMA,KLEV+1,5)
    297324
    298325#include "radlsw.intfb.h"
     
    313340ZFSDN0_AERO(:,:,:)=0.
    314341
     342LWUP_AERO (:,:,:)=0.
     343LWDN_AERO (:,:,:)=0.
     344LWUP0_AERO(:,:,:)=0.
     345LWDN0_AERO(:,:,:)=0.
     346
    315347PTAU_ZERO(:,:,:) =1.e-15
    316348PPIZA_ZERO(:,:,:)=1.0
    317349PCGA_ZERO(:,:,:) =0.0
     350
     351PTAU_LW_ZERO(:,:,:) =1.e-15
    318352
    319353
     
    431465 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    432466 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    433  & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PFLUX,PFLUC,&
     467 & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PTAU_LW_NAT,PFLUX,PFLUC,&
    434468 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    435469
     
    440474ZFSUP_AERO(:,:,1) =  PFSUP(:,:)
    441475ZFSDN_AERO(:,:,1) =  PFSDN(:,:)
     476
     477LWUP0_AERO(:,:,1) = PFLUC(:,1,:)
     478LWDN0_AERO(:,:,1) = PFLUC(:,2,:)
     479
     480LWUP_AERO(:,:,1) = PFLUX(:,1,:)
     481LWDN_AERO(:,:,1) = PFLUX(:,2,:)
    442482
    443483ENDIF
     
    463503 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    464504 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    465  & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PFLUX,PFLUC,&
     505 & LRDUST,PPIZA_NAT,PCGA_NAT,PTAU_NAT,PTAU_LW_NAT,PFLUX,PFLUC,&
    466506 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    467507
     
    472512ZFSUP_AERO(:,:,2) =  PFSUP(:,:)
    473513ZFSDN_AERO(:,:,2) =  PFSDN(:,:)
     514
     515LWUP0_AERO(:,:,2) = PFLUC(:,1,:)
     516LWDN0_AERO(:,:,2) = PFLUC(:,2,:)
     517
     518LWUP_AERO(:,:,2) = PFLUX(:,1,:)
     519LWDN_AERO(:,:,2) = PFLUX(:,2,:)
    474520
    475521ENDIF ! ok_aie     
     
    495541 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    496542 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    497  & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PFLUX,PFLUC,&
     543 & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PTAU_LW_TOT,PFLUX,PFLUC,&
    498544 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    499545
     
    504550ZFSUP_AERO(:,:,3) =  PFSUP(:,:)
    505551ZFSDN_AERO(:,:,3) =  PFSDN(:,:)
     552
     553LWUP0_AERO(:,:,3) = PFLUC(:,1,:)
     554LWDN0_AERO(:,:,3) = PFLUC(:,2,:)
     555
     556LWUP_AERO(:,:,3) = PFLUX(:,1,:)
     557LWDN_AERO(:,:,3) = PFLUX(:,2,:)
    506558
    507559ENDIF !-end ok_ade
     
    527579 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    528580 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    529  & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PFLUX,PFLUC,&
     581 & LRDUST,PPIZA_TOT,PCGA_TOT,PTAU_TOT,PTAU_LW_TOT,PFLUX,PFLUC,&
    530582 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    531583
     
    536588ZFSUP_AERO(:,:,4) =  PFSUP(:,:)
    537589ZFSDN_AERO(:,:,4) =  PFSDN(:,:)
     590
     591LWUP0_AERO(:,:,4) = PFLUC(:,1,:)
     592LWDN0_AERO(:,:,4) = PFLUC(:,2,:)
     593
     594LWUP_AERO(:,:,4) = PFLUX(:,1,:)
     595LWDN_AERO(:,:,4) = PFLUX(:,2,:)
    538596
    539597ENDIF ! ok_ade .and. ok_aie
     
    563621 & ZFRSOD, ZSUDU  , ZUVDF   , ZPARF   , ZPARCF, ZTINCF, PSFSWDIR,&
    564622 & PSFSWDIF,PFSDNN, PFSDNV  ,& 
    565  & LRDUST,PPIZA_ZERO,PCGA_ZERO,PTAU_ZERO,PFLUX,PFLUC,&
     623 & LRDUST,PPIZA_ZERO,PCGA_ZERO,PTAU_ZERO, PTAU_LW_ZERO,PFLUX,PFLUC,&
    566624 & PFSDN , PFSUP  , PFSCDN  , PFSCUP )
    567625
     
    572630ZFSUP_AERO(:,:,5) =  PFSUP(:,:)
    573631ZFSDN_AERO(:,:,5) =  PFSDN(:,:)
     632
     633LWUP0_AERO(:,:,5) = PFLUC(:,1,:)
     634LWDN0_AERO(:,:,5) = PFLUC(:,2,:)
     635
     636LWUP_AERO(:,:,5) = PFLUX(:,1,:)
     637LWDN_AERO(:,:,5) = PFLUX(:,2,:)
    574638
    575639ENDIF ! .not. AEROSOLFEEDBACK_ACTIVE
     
    643707    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,4)
    644708    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,4)
     709
     710    PFLUX(:,1,:) =  LWUP_AERO(:,:,4)
     711    PFLUX(:,2,:) =  LWDN_AERO(:,:,4)
     712    PFLUC(:,1,:) =  LWUP0_AERO(:,:,4)
     713    PFLUC(:,2,:) =  LWDN0_AERO(:,:,4)   
    645714  ENDIF
    646715
     
    650719    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,3)
    651720    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,3)
     721
     722    PFLUX(:,1,:) =  LWUP_AERO(:,:,3)
     723    PFLUX(:,2,:) =  LWDN_AERO(:,:,3)
     724    PFLUC(:,1,:) =  LWUP0_AERO(:,:,3)
     725    PFLUC(:,2,:) =  LWDN0_AERO(:,:,3)
    652726  ENDIF
    653727
     
    657731    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,2)
    658732    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,2)
     733
     734    PFLUX(:,1,:) =  LWUP_AERO(:,:,2)
     735    PFLUX(:,2,:) =  LWDN_AERO(:,:,2)
     736    PFLUC(:,1,:) =  LWUP0_AERO(:,:,2)
     737    PFLUC(:,2,:) =  LWDN0_AERO(:,:,2)
    659738  ENDiF
    660739
     
    664743    PFSCUP(:,:) =   ZFSUP0_AERO(:,:,1)
    665744    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,1)
     745
     746    PFLUX(:,1,:) =  LWUP_AERO(:,:,1)
     747    PFLUX(:,2,:) =  LWDN_AERO(:,:,1)
     748    PFLUC(:,1,:) =  LWUP0_AERO(:,:,1)
     749    PFLUC(:,2,:) =  LWDN0_AERO(:,:,1)
    666750  ENDIF
    667751
     
    677761    PFSCDN(:,:) =   ZFSDN0_AERO(:,:,5)
    678762
     763    PFLUX(:,1,:) =  LWUP_AERO(:,:,5)
     764    PFLUX(:,2,:) =  LWDN_AERO(:,:,5)
     765    PFLUC(:,1,:) =  LWUP0_AERO(:,:,5)
     766    PFLUC(:,2,:) =  LWDN0_AERO(:,:,5)
     767
    679768ENDIF
    680769
     
    683772! requires a natural aerosol field read and used
    684773! Difference of net fluxes from double call to radiation
    685 ! Will need to be extended to LW radiation
     774! Will need to be extended to LW radiation -> done by CK (2014-05-23)
    686775
    687776IF (flag_aerosol .GT. 0 .OR. flag_aerosol_strat) THEN
     
    709798     PTOPSWCFAERO(:,3) = 0.0
    710799
     800! LW direct anthropogenic forcing
     801     PSOLLWADAERO(:)  = (-LWDN_AERO(:,1,4)      -LWUP_AERO(:,1,4))      -(-LWDN_AERO(:,1,2)      -LWUP_AERO(:,1,2))
     802     PTOPLWADAERO(:)  = (-LWDN_AERO(:,KLEV+1,4) -LWUP_AERO(:,KLEV+1,4)) -(-LWDN_AERO(:,KLEV+1,2) -LWUP_AERO(:,KLEV+1,2))
     803     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,4)     -LWUP0_AERO(:,1,4))     -(-LWDN0_AERO(:,1,2)     -LWUP0_AERO(:,1,2))
     804     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,4)-LWUP0_AERO(:,KLEV+1,4))-(-LWDN0_AERO(:,KLEV+1,2)-LWUP0_AERO(:,KLEV+1,2))
     805
     806! LW indirect anthropogenic forcing
     807     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,4)     -LWUP_AERO(:,1,4))     -(-LWDN_AERO(:,1,3)     -LWUP_AERO(:,1,3))
     808     PTOPLWAIAERO(:) = (-LWDN_AERO(:,KLEV+1,4)-LWUP_AERO(:,KLEV+1,4))-(-LWDN_AERO(:,KLEV+1,3)-LWUP_AERO(:,KLEV+1,3))
     809
    711810ENDIF
    712811
     
    733832     PTOPSWCFAERO(:,3) = 0.0
    734833
     834! LW direct anthropogenic forcing
     835     PSOLLWADAERO(:)  = (-LWDN_AERO(:,1,3)      -LWUP_AERO(:,1,3))      -(-LWDN_AERO(:,1,1)      -LWUP_AERO(:,1,1))
     836     PTOPLWADAERO(:)  = (-LWDN_AERO(:,KLEV+1,3) -LWUP_AERO(:,KLEV+1,3)) -(-LWDN_AERO(:,KLEV+1,1) -LWUP_AERO(:,KLEV+1,1))
     837     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,3)     -LWUP0_AERO(:,1,3))     -(-LWDN0_AERO(:,1,1)     -LWUP0_AERO(:,1,1))
     838     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,3)-LWUP0_AERO(:,KLEV+1,3))-(-LWDN0_AERO(:,KLEV+1,1)-LWUP0_AERO(:,KLEV+1,1))
     839
     840! LW indirect anthropogenic forcing
     841     PSOLLWAIAERO(:) = 0.0
     842     PTOPLWAIAERO(:) = 0.0
     843
    735844ENDIF
    736845
     
    757866     PTOPSWCFAERO(:,3) = 0.0
    758867
     868! LW direct anthropogenic forcing
     869     PSOLLWADAERO(:)  = 0.0
     870     PTOPLWADAERO(:)  = 0.0
     871     PSOLLWAD0AERO(:) = 0.0
     872     PTOPLWAD0AERO(:) = 0.0
     873
     874! LW indirect anthropogenic forcing
     875     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,2)     -LWUP_AERO(:,1,2))     -(-LWDN_AERO(:,1,1)     -LWUP_AERO(:,1,1))
     876     PTOPLWAIAERO(:) = (-LWDN_AERO(:,KLEV+1,2)-LWUP_AERO(:,KLEV+1,2))-(-LWDN_AERO(:,KLEV+1,1)-LWUP_AERO(:,KLEV+1,1))
     877
    759878ENDIF
    760879
     
    781900     PTOPSWCFAERO(:,3) = 0.0
    782901
     902! LW direct anthropogenic forcing
     903     PSOLLWADAERO(:)  = 0.0
     904     PTOPLWADAERO(:)  = 0.0
     905     PSOLLWAD0AERO(:) = 0.0
     906     PTOPLWAD0AERO(:) = 0.0
     907
     908! LW indirect anthropogenic forcing
     909     PSOLLWAIAERO(:) = 0.0
     910     PTOPLWAIAERO(:) = 0.0
     911
    783912ENDIF
    784913
     
    790919     PSOLSWCFAERO(:,3) = (ZFSDN_AERO(:,1,5)     -ZFSUP_AERO(:,1,5))     -(ZFSDN0_AERO(:,1,5)     -ZFSUP0_AERO(:,1,5))
    791920     PTOPSWCFAERO(:,3) = (ZFSDN_AERO(:,KLEV+1,5)-ZFSUP_AERO(:,KLEV+1,5))-(ZFSDN0_AERO(:,KLEV+1,5)-ZFSUP0_AERO(:,KLEV+1,5))
     921
    792922ENDIF
    793923
Note: See TracChangeset for help on using the changeset viewer.