Ignore:
Timestamp:
Nov 21, 2019, 4:43:45 PM (4 years ago)
Author:
lguez
Message:

Merge revisions 3427:3600 of trunk into branch Ocean_skin

Location:
LMDZ6/branches/Ocean_skin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Ocean_skin

  • LMDZ6/branches/Ocean_skin/libf/phylmd/radlwsw_m.F90

    r3412 r3605  
    1616   t,q,wo,&
    1717   cldfra, cldemi, cldtaupd,&
    18    ok_ade, ok_aie, flag_aerosol,&
     18   ok_ade, ok_aie, ok_volcan, flag_aerosol,&
    1919   flag_aerosol_strat, flag_aer_feedback, &
    2020   tau_aero, piz_aero, cg_aero,&
     
    2525   ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
    2626   heat,heat0,cool,cool0,albpla,&
     27   heat_volc, cool_volc,&
    2728   topsw,toplw,solsw,sollw,&
    2829   sollwdown,&
     
    100101  ! ok_ade---input-L- apply the Aerosol Direct Effect or not?
    101102  ! ok_aie---input-L- apply the Aerosol Indirect Effect or not?
     103  ! ok_volcan-input-L- activate volcanic diags (SW heat & LW cool rate, SW & LW flux)
    102104  ! flag_aerosol-input-I- aerosol flag from 0 to 6
    103105  ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (0, 1, 2)
     
    120122  ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind)
    121123  ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind)
     124  !
     125  ! heat_volc-----output-R- echauffement atmospherique  du au forcage volcanique (visible) (K/s)
     126  ! cool_volc-----output-R- refroidissement dans l'IR du au forcage volcanique (K/s)
    122127  !
    123128  ! ATTENTION: swai and swad have to be interpreted in the following manner:
     
    193198
    194199  LOGICAL, INTENT(in)  :: ok_ade, ok_aie                                 ! switches whether to use aerosol direct (indirect) effects or not
     200  LOGICAL, INTENT(in)  :: ok_volcan                                      ! produce volcanic diags (SW/LW heat flux and rate)
    195201  LOGICAL              :: lldebug
    196202  INTEGER, INTENT(in)  :: flag_aerosol                                   ! takes value 0 (no aerosol) or 1 to 6 (aerosols)
     
    228234  REAL,    INTENT(out) :: heat(KLON,KLEV), cool(KLON,KLEV)
    229235  REAL,    INTENT(out) :: heat0(KLON,KLEV), cool0(KLON,KLEV)
     236  REAL,    INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL
    230237  REAL,    INTENT(out) :: topsw(KLON), toplw(KLON)
    231238  REAL,    INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON)
     
    294301  REAL(KIND=8) zheat(kdlon,kflev), zcool(kdlon,kflev)
    295302  REAL(KIND=8) zheat0(kdlon,kflev), zcool0(kdlon,kflev)
     303  REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL
    296304  REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon)
    297305  REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon)
     
    308316  REAL(KIND=8) ztopswad0aero(kdlon), zsolswad0aero(kdlon)   ! Aerosol direct forcing at TOAand surface
    309317  REAL(KIND=8) ztopswaiaero(kdlon), zsolswaiaero(kdlon)     ! dito, indirect
     318!--NL
     319  REAL(KIND=8) zswadaero(kdlon,kflev+1)                       ! SW Aerosol direct forcing
     320  REAL(KIND=8) zlwadaero(kdlon,kflev+1)                       ! LW Aerosol direct forcing
    310321!-LW by CK
    311322  REAL(KIND=8) ztoplwadaero(kdlon), zsollwadaero(kdlon)     ! LW Aerosol direct forcing at TOAand surface
     
    398409  cgaero(:,:,:,:)=0.
    399410  lldebug=.FALSE.
    400  
     411
     412  ztopsw_aero(:,:)  = 0. !ym missing init : warning : not initialized in SW_AEROAR4
     413  ztopsw0_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4
     414  zsolsw_aero(:,:)  = 0. !ym missing init : warning : not initialized in SW_AEROAR4
     415  zsolsw0_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4
     416
     417
     418   ZTOPSWADAERO(:)  = 0. !ym missing init
     419   ZSOLSWADAERO(:)  = 0. !ym missing init
     420   ZTOPSWAD0AERO(:) = 0. !ym missing init
     421   ZSOLSWAD0AERO(:) = 0. !ym missing init
     422   ZTOPSWAIAERO(:)  = 0. !ym missing init
     423   ZSOLSWAIAERO(:)  = 0. !ym missing init 
     424   ZTOPSWCF_AERO(:,:)= 0.!ym missing init 
     425   ZSOLSWCF_AERO(:,:) =0. !ym missing init 
     426
    401427  !
    402428  !-------------------------------------------
     
    415441      heat(i,k)=0.
    416442      cool(i,k)=0.
     443      heat_volc(i,k)=0. !NL
     444      cool_volc(i,k)=0. !NL
    417445      heat0(i,k)=0.
    418446      cool0(i,k)=0.
     
    558586      ENDDO
    559587      DO k = 1, kflev
    560       DO i = 1, kdlon
    561       zcool(i,k)=0.
    562       zcool0(i,k)=0.
    563       ENDDO
     588         DO i = 1, kdlon
     589            zcool(i,k)=0.
     590            zcool_volc(i,k)=0. !NL
     591            zcool0(i,k)=0.
     592         ENDDO
    564593      ENDDO
    565594      DO i = 1, kdlon
     
    584613!----- Mise a zero des tableaux output du rayonnement SW-AR4
    585614      DO k = 1, kflev+1
    586       DO i = 1, kdlon
    587       ZFSUP(i,k)=0.
    588       ZFSDN(i,k)=0.
    589       ZFSUP0(i,k)=0.
    590       ZFSDN0(i,k)=0.
    591       ZFSUPC0(i,k)=0.
    592       ZFSDNC0(i,k)=0.
    593       ZFLUPC0(i,k)=0.
    594       ZFLDNC0(i,k)=0.
    595       ZSWFT0_i(i,k)=0.
    596       ZFCUP_i(i,k)=0.
    597       ZFCDWN_i(i,k)=0.
    598       ZFCCUP_i(i,k)=0.
    599       ZFCCDWN_i(i,k)=0.
    600       ZFLCCUP_i(i,k)=0.
    601       ZFLCCDWN_i(i,k)=0.
    602       ENDDO
     615         DO i = 1, kdlon
     616            ZFSUP(i,k)=0.
     617            ZFSDN(i,k)=0.
     618            ZFSUP0(i,k)=0.
     619            ZFSDN0(i,k)=0.
     620            ZFSUPC0(i,k)=0.
     621            ZFSDNC0(i,k)=0.
     622            ZFLUPC0(i,k)=0.
     623            ZFLDNC0(i,k)=0.
     624            ZSWFT0_i(i,k)=0.
     625            ZFCUP_i(i,k)=0.
     626            ZFCDWN_i(i,k)=0.
     627            ZFCCUP_i(i,k)=0.
     628            ZFCCDWN_i(i,k)=0.
     629            ZFLCCUP_i(i,k)=0.
     630            ZFLCCDWN_i(i,k)=0.
     631            zswadaero(i,k)=0. !--NL
     632         ENDDO
    603633      ENDDO
    604634      DO k = 1, kflev
    605       DO i = 1, kdlon
    606       zheat(i,k)=0.
    607       zheat0(i,k)=0.
    608       ENDDO
     635         DO i = 1, kdlon
     636            zheat(i,k)=0.
     637            zheat_volc(i,k)=0.
     638            zheat0(i,k)=0.
     639         ENDDO
    609640      ENDDO
    610641      DO i = 1, kdlon
     
    708739!
    709740!--OB
    710 !--aerosol TOT  - anthropogenic+natural
    711 !--aerosol NAT  - natural only
     741!--aerosol TOT  - anthropogenic+natural - index 2
     742!--aerosol NAT  - natural only          - index 1
    712743!
    713744      DO i = 1, kdlon
     
    729760!
    730761!--C. Kleinschmitt
    731 !--aerosol TOT  - anthropogenic+natural
    732 !--aerosol NAT  - natural only
     762!--aerosol TOT  - anthropogenic+natural - index 2
     763!--aerosol NAT  - natural only          - index 1
    733764!
    734765      DO i = 1, kdlon
     
    854885         ZTOPSWAIAERO,ZSOLSWAIAERO, &
    855886         ZTOPSWCF_AERO,ZSOLSWCF_AERO, &
     887         ZSWADAERO, & !--NL
    856888         ZTOPLWADAERO,ZSOLLWADAERO,&  ! rajoute par C. Kleinscmitt pour LW diagnostics
    857889         ZTOPLWAD0AERO,ZSOLLWAD0AERO,&
    858890         ZTOPLWAIAERO,ZSOLLWAIAERO, &
    859          ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat, flag_aer_feedback) ! flags aerosols
     891         ZLWADAERO, & !--NL
     892         ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat, flag_aer_feedback) ! flags aerosols
    860893           
    861894!        print *,'RADLWSW: apres RECMWF'
     
    936969         ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1)
    937970         ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1)
     971         IF(ok_volcan) THEN
     972            ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL
     973         ENDIF
     974         
    938975!   Nouveau calcul car visiblement ZSWFT et ZSWFC sont nuls dans RRTM cy32
    939976!   en sortie de radlsw.F90 - MPL 7.01.09
     
    10161053           zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
    10171054           zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
     1055           IF(ok_volcan) THEN
     1056              zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RG/RCPD/PDP(i,k) !NL
     1057              zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RG/RCPD/PDP(i,k) !NL
     1058           ENDIF
    10181059!          print *,'heat cool heat0 cool0 ',zheat(i,k),zcool(i,k),zheat0(i,k),zcool0(i,k)
    10191060!          ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k)
     
    11251166        heat0(iof+i,k) = zheat0(i,k)/zznormcp
    11261167        cool0(iof+i,k) = zcool0(i,k)/zznormcp
     1168        IF(ok_volcan) THEN !NL
     1169           heat_volc(iof+i,k) = zheat_volc(i,k)/zznormcp
     1170           cool_volc(iof+i,k) = zcool_volc(i,k)/zznormcp
     1171        ENDIF
    11271172      ENDDO
    11281173    ENDDO
Note: See TracChangeset for help on using the changeset viewer.