Ignore:
Timestamp:
Jan 11, 2021, 11:24:08 PM (3 years ago)
Author:
lguez
Message:

Sync latest trunk changes to 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

    r3605 r3798  
    2121   tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm,& ! rajoute par OB pour RRTM
    2222   tau_aero_lw_rrtm, &                                   ! rajoute par C. Kleinschmitt pour RRTM
    23    cldtaupi, new_aod, &
     23   cldtaupi, &
    2424   qsat, flwc, fiwc, &
    2525   ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
    2626   heat,heat0,cool,cool0,albpla,&
    2727   heat_volc, cool_volc,&
    28    topsw,toplw,solsw,sollw,&
     28   topsw,toplw,solsw,solswfdiff,sollw,&
    2929   sollwdown,&
    3030   topsw0,toplw0,solsw0,sollw0,&
     
    117117  ! toplw----output-R- ray. IR montant au sommet de l'atmosphere
    118118  ! solsw----output-R- flux solaire net a la surface
     119  ! solswfdiff----output-R- fraction de rayonnement diffus pour le flux solaire descendant a la surface
    119120  ! sollw----output-R- ray. IR montant a la surface
    120121  ! solswad---output-R- ray. solaire net absorbe a la surface (aerosol dir)
     
    188189  REAL,    INTENT(in)  :: tsol(KLON)
    189190  REAL,    INTENT(in) :: alb_dir(KLON,NSW),alb_dif(KLON,NSW)
    190   real, intent(in) :: SFRWL(6)
     191  REAL,    INTENT(in) :: SFRWL(6)
    191192!albedo SB <<<
    192193  REAL,    INTENT(in)  :: t(KLON,KLEV), q(KLON,KLEV)
     
    222223
    223224  REAL,    INTENT(in)  :: cldtaupi(KLON,KLEV)                            ! cloud optical thickness for pre-industrial aerosol concentrations
    224   LOGICAL, INTENT(in)  :: new_aod                                        ! flag pour retrouver les resultats exacts de l'AR4 dans le cas ou l'on ne travaille qu'avec les sulfates
    225225  REAL,    INTENT(in)  :: qsat(klon,klev) ! Variable pour iflag_rrtm=1
    226226  REAL,    INTENT(in)  :: flwc(klon,klev) ! Variable pour iflag_rrtm=1
     
    236236  REAL,    INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL
    237237  REAL,    INTENT(out) :: topsw(KLON), toplw(KLON)
    238   REAL,    INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON)
     238  REAL,    INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON), solswfdiff(KLON)
    239239  REAL,    INTENT(out) :: topsw0(KLON), toplw0(KLON), solsw0(KLON), sollw0(KLON)
    240240  REAL,    INTENT(out) :: sollwdown(KLON)
     
    287287  REAL(KIND=8) PWV(kdlon,kflev), PQS(kdlon,kflev)
    288288
    289   real(kind=8) POZON(kdlon, kflev, size(wo, 3)) ! mass fraction of ozone
     289  REAL(kind=8) POZON(kdlon, kflev, size(wo, 3)) ! mass fraction of ozone
    290290  ! "POZON(:, :, 1)" is for the average day-night field,
    291291  ! "POZON(:, :, 2)" is for daylight time.
     
    303303  REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL
    304304  REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon)
    305   REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon)
     305  REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon), zsolswfdiff(kdlon)
    306306  REAL(KIND=8) zsollwdown(kdlon)
    307307  REAL(KIND=8) ztopsw0(kdlon), ztoplw0(kdlon)
     
    330330!MPL input supplementaires pour RECMWFL
    331331! flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
    332       REAL(KIND=8) GEMU(klon)
     332  REAL(KIND=8) GEMU(klon)
    333333!MPL input RECMWFL:
    334334! Tableaux aux niveaux inverses pour respecter convention Arpege
    335       REAL(KIND=8) ref_liq_i(klon,klev) ! cloud droplet radius present-day from newmicro (inverted)
    336       REAL(KIND=8) ref_ice_i(klon,klev) ! ice crystal radius present-day from newmicro (inverted)
     335  REAL(KIND=8) ref_liq_i(klon,klev) ! cloud droplet radius present-day from newmicro (inverted)
     336  REAL(KIND=8) ref_ice_i(klon,klev) ! ice crystal radius present-day from newmicro (inverted)
    337337!--OB
    338       REAL(KIND=8) ref_liq_pi_i(klon,klev) ! cloud droplet radius pre-industrial from newmicro (inverted)
    339       REAL(KIND=8) ref_ice_pi_i(klon,klev) ! ice crystal radius pre-industrial from newmicro (inverted)
     338  REAL(KIND=8) ref_liq_pi_i(klon,klev) ! cloud droplet radius pre-industrial from newmicro (inverted)
     339  REAL(KIND=8) ref_ice_pi_i(klon,klev) ! ice crystal radius pre-industrial from newmicro (inverted)
    340340!--end OB
    341       REAL(KIND=8) paprs_i(klon,klev+1)
    342       REAL(KIND=8) pplay_i(klon,klev)
    343       REAL(KIND=8) cldfra_i(klon,klev)
    344       REAL(KIND=8) POZON_i(kdlon,kflev, size(wo, 3)) ! mass fraction of ozone
     341  REAL(KIND=8) paprs_i(klon,klev+1)
     342  REAL(KIND=8) pplay_i(klon,klev)
     343  REAL(KIND=8) cldfra_i(klon,klev)
     344  REAL(KIND=8) POZON_i(kdlon,kflev, size(wo, 3)) ! mass fraction of ozone
    345345  ! "POZON(:, :, 1)" is for the average day-night field,
    346346  ! "POZON(:, :, 2)" is for daylight time.
    347347!!!!! Modif MPL 6.01.09 avec RRTM, on passe de 5 a 6     
    348       REAL(KIND=8) PAER_i(kdlon,kflev,6)
    349       REAL(KIND=8) PDP_i(klon,klev)
    350       REAL(KIND=8) t_i(klon,klev),q_i(klon,klev),qsat_i(klon,klev)
    351       REAL(KIND=8) flwc_i(klon,klev),fiwc_i(klon,klev)
     348  REAL(KIND=8) PAER_i(kdlon,kflev,6)
     349  REAL(KIND=8) PDP_i(klon,klev)
     350  REAL(KIND=8) t_i(klon,klev),q_i(klon,klev),qsat_i(klon,klev)
     351  REAL(KIND=8) flwc_i(klon,klev),fiwc_i(klon,klev)
    352352!MPL output RECMWFL:
    353       REAL(KIND=8) ZEMTD (klon,klev+1),ZEMTD_i (klon,klev+1)       
    354       REAL(KIND=8) ZEMTU (klon,klev+1),ZEMTU_i (klon,klev+1)     
    355       REAL(KIND=8) ZTRSO (klon,klev+1),ZTRSO_i (klon,klev+1)   
    356       REAL(KIND=8) ZTH   (klon,klev+1),ZTH_i   (klon,klev+1)   
    357       REAL(KIND=8) ZCTRSO(klon,2)       
    358       REAL(KIND=8) ZCEMTR(klon,2)     
    359       REAL(KIND=8) ZTRSOD(klon)       
    360       REAL(KIND=8) ZLWFC (klon,2)     
    361       REAL(KIND=8) ZLWFT (klon,klev+1),ZLWFT_i (klon,klev+1)   
    362       REAL(KIND=8) ZSWFC (klon,2)     
    363       REAL(KIND=8) ZSWFT (klon,klev+1),ZSWFT_i (klon,klev+1)
    364       REAL(KIND=8) ZFLUCDWN_i(klon,klev+1),ZFLUCUP_i(klon,klev+1)
    365       REAL(KIND=8) PPIZA_TOT(klon,klev,NSW)
    366       REAL(KIND=8) PCGA_TOT(klon,klev,NSW)
    367       REAL(KIND=8) PTAU_TOT(klon,klev,NSW)
    368       REAL(KIND=8) PPIZA_NAT(klon,klev,NSW)
    369       REAL(KIND=8) PCGA_NAT(klon,klev,NSW)
    370       REAL(KIND=8) PTAU_NAT(klon,klev,NSW)
     353  REAL(KIND=8) ZEMTD (klon,klev+1),ZEMTD_i (klon,klev+1)       
     354  REAL(KIND=8) ZEMTU (klon,klev+1),ZEMTU_i (klon,klev+1)     
     355  REAL(KIND=8) ZTRSO (klon,klev+1),ZTRSO_i (klon,klev+1)   
     356  REAL(KIND=8) ZTH   (klon,klev+1),ZTH_i   (klon,klev+1)   
     357  REAL(KIND=8) ZCTRSO(klon,2)       
     358  REAL(KIND=8) ZCEMTR(klon,2)     
     359  REAL(KIND=8) ZTRSOD(klon)       
     360  REAL(KIND=8) ZLWFC (klon,2)     
     361  REAL(KIND=8) ZLWFT (klon,klev+1),ZLWFT_i (klon,klev+1)   
     362  REAL(KIND=8) ZSWFC (klon,2)     
     363  REAL(KIND=8) ZSWFT (klon,klev+1),ZSWFT_i (klon,klev+1)
     364  REAL(KIND=8) ZFLUCDWN_i(klon,klev+1),ZFLUCUP_i(klon,klev+1)
     365  REAL(KIND=8) PPIZA_TOT(klon,klev,NSW)
     366  REAL(KIND=8) PCGA_TOT(klon,klev,NSW)
     367  REAL(KIND=8) PTAU_TOT(klon,klev,NSW)
     368  REAL(KIND=8) PPIZA_NAT(klon,klev,NSW)
     369  REAL(KIND=8) PCGA_NAT(klon,klev,NSW)
     370  REAL(KIND=8) PTAU_NAT(klon,klev,NSW)
    371371#ifdef CPP_RRTM
    372       REAL(KIND=8) PTAU_LW_TOT(klon,klev,NLW)
    373       REAL(KIND=8) PTAU_LW_NAT(klon,klev,NLW)
     372  REAL(KIND=8) PTAU_LW_TOT(klon,klev,NLW)
     373  REAL(KIND=8) PTAU_LW_NAT(klon,klev,NLW)
    374374#endif
    375       REAL(KIND=8) PSFSWDIR(klon,NSW)
    376       REAL(KIND=8) PSFSWDIF(klon,NSW)
    377       REAL(KIND=8) PFSDNN(klon)
    378       REAL(KIND=8) PFSDNV(klon)
     375  REAL(KIND=8) PSFSWDIR(klon,NSW)
     376  REAL(KIND=8) PSFSWDIF(klon,NSW)
     377  REAL(KIND=8) PFSDNN(klon)
     378  REAL(KIND=8) PFSDNV(klon)
    379379!MPL On ne redefinit pas les tableaux ZFLUX,ZFLUC,
    380380!MPL ZFSDWN,ZFCDWN,ZFSUP,ZFCUP car ils existent deja
    381381!MPL sous les noms de ZFLDN,ZFLDN0,ZFLUP,ZFLUP0,
    382382!MPL ZFSDN,ZFSDN0,ZFSUP,ZFSUP0
    383       REAL(KIND=8) ZFLUX_i (klon,2,klev+1)
    384       REAL(KIND=8) ZFLUC_i (klon,2,klev+1)
    385       REAL(KIND=8) ZFSDWN_i (klon,klev+1)
    386       REAL(KIND=8) ZFCDWN_i (klon,klev+1)
    387       REAL(KIND=8) ZFCCDWN_i (klon,klev+1)
    388       REAL(KIND=8) ZFSUP_i (klon,klev+1)
    389       REAL(KIND=8) ZFCUP_i (klon,klev+1)
    390       REAL(KIND=8) ZFCCUP_i (klon,klev+1)
    391       REAL(KIND=8) ZFLCCDWN_i (klon,klev+1)
    392       REAL(KIND=8) ZFLCCUP_i (klon,klev+1)
     383  REAL(KIND=8) ZFLUX_i (klon,2,klev+1)
     384  REAL(KIND=8) ZFLUC_i (klon,2,klev+1)
     385  REAL(KIND=8) ZFSDWN_i (klon,klev+1)
     386  REAL(KIND=8) ZFCDWN_i (klon,klev+1)
     387  REAL(KIND=8) ZFCCDWN_i (klon,klev+1)
     388  REAL(KIND=8) ZFSUP_i (klon,klev+1)
     389  REAL(KIND=8) ZFCUP_i (klon,klev+1)
     390  REAL(KIND=8) ZFCCUP_i (klon,klev+1)
     391  REAL(KIND=8) ZFLCCDWN_i (klon,klev+1)
     392  REAL(KIND=8) ZFLCCUP_i (klon,klev+1)
    393393! 3 lignes suivantes a activer pour CCMVAL (MPL 20100412)
    394394!      REAL(KIND=8) RSUN(3,2)
    395395!      REAL(KIND=8) SUN(3)
    396396!      REAL(KIND=8) SUN_FRACT(2)
    397   real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
     397  REAL, PARAMETER:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
    398398  CHARACTER (LEN=80) :: abort_message
    399399  CHARACTER (LEN=80) :: modname='radlwsw_m'
    400400
    401   call assert(size(wo, 1) == klon, size(wo, 2) == klev, "radlwsw wo")
     401  REAL zdir, zdif
     402
     403  CALL assert(size(wo, 1) == klon, size(wo, 2) == klev, "radlwsw wo")
    402404  ! initialisation
    403405  ist=1
     
    415417  zsolsw0_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4
    416418
    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 
     419  ZTOPSWADAERO(:)  = 0. !ym missing init
     420  ZSOLSWADAERO(:)  = 0. !ym missing init
     421  ZTOPSWAD0AERO(:) = 0. !ym missing init
     422  ZSOLSWAD0AERO(:) = 0. !ym missing init
     423  ZTOPSWAIAERO(:)  = 0. !ym missing init
     424  ZSOLSWAIAERO(:)  = 0. !ym missing init 
     425  ZTOPSWCF_AERO(:,:)= 0.!ym missing init 
     426  ZSOLSWCF_AERO(:,:) =0. !ym missing init 
    426427
    427428  !
     
    454455  IF (type_trac == 'repr') THEN
    455456#ifdef REPROBUS
    456      if(ok_SUNTIME) PSCT = solaireTIME/zdist/zdist
    457      print*,'Constante solaire: ',PSCT*zdist*zdist
     457    IF (iflag_rrtm==0) THEN
     458      IF (ok_SUNTIME) PSCT = solaireTIME/zdist/zdist
     459      print*,'Constante solaire: ',PSCT*zdist*zdist
     460    ENDIF
    458461#endif
    459   END IF
     462  ENDIF
    460463
    461464  DO j = 1, nb_gr
     
    540543       CALL RAD_INTERACTIF(POZON,iof)
    541544#endif
    542     END IF
    543 
     545    ENDIF
    544546    !
    545547    DO k = 1, kflev+1
     
    567569      ENDDO
    568570    ENDDO
    569 
    570571!
    571572!===== iflag_rrtm ================================================
    572573!     
    573574    IF (iflag_rrtm == 0) THEN       !!!! remettre 0 juste pour tester l'ancien rayt via rrtm
     575!
    574576!--- Mise a zero des tableaux output du rayonnement LW-AR4 ----------             
    575577      DO k = 1, kflev+1
     
    650652      zsolswaiaero(i)=0.
    651653      ENDDO
     654
     655      !--fraction of diffuse radiation in surface SW downward radiation
     656      !--not computed with old radiation scheme
     657      zsolswfdiff(:) = -999.999
     658
    652659!     print *,'Avant SW_LMDAR4: PSCT zrmu0 zfract',PSCT, zrmu0, zfract
    653660       ! daylight ozone, if we have it, for short wave
    654        IF (.NOT. new_aod) THEN
    655           ! use old version
    656           CALL SW_LMDAR4(PSCT, zrmu0, zfract,&
    657                PPMB, PDP, &
    658                PPSOL, PALBD, PALBP,&
    659                PTAVE, PWV, PQS, POZON(:, :, size(wo, 3)), PAER,&
    660                PCLDSW, PTAU, POMEGA, PCG,&
    661                zheat, zheat0,&
    662                zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,&
    663                ZFSUP,ZFSDN,ZFSUP0,ZFSDN0,&
    664                tauaero(:,:,5,:), pizaero(:,:,5,:), cgaero(:,:,5,:),&
    665                PTAUA, POMEGAA,&
    666                ztopswadaero,zsolswadaero,&
    667                ztopswaiaero,zsolswaiaero,&
    668                ok_ade, ok_aie)
    669          
    670        ELSE ! new_aod=T         
    671           CALL SW_AEROAR4(PSCT, zrmu0, zfract,&
     661      CALL SW_AEROAR4(PSCT, zrmu0, zfract,&
    672662               PPMB, PDP,&
    673663               PPSOL, PALBD, PALBP,&
     
    686676               ztopswcf_aero,zsolswcf_aero, &
    687677               ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)
    688        ENDIF
    689678
    690679       ZSWFT0_i(:,:) = ZFSDN0(:,:)-ZFSUP0(:,:)
     
    693682       DO i=1,kdlon
    694683       DO k=1,kflev+1
    695 !        print *,'iof i k klon klev=',iof,i,k,klon,klev
    696684         lwdn0 ( iof+i,k)   = ZFLDN0 ( i,k)
    697685         lwdn  ( iof+i,k)   = ZFLDN  ( i,k)
     
    704692       ENDDO 
    705693       ENDDO 
    706 !          print*,'SW_AR4 ZFSDN0 1 , klev:',ZFSDN0(1:klon,1),ZFSDN0(1:klon,klev)
    707 !          print*,'SW_AR4 swdn0  1 , klev:',swdn0(1:klon,1),swdn0(1:klon,klev)
    708 !          print*,'SW_AR4 ZFSUP0 1 , klev:',ZFSUP0(1:klon,1),ZFSUP0(1:klon,klev)
    709 !          print*,'SW_AR4 swup0  1 , klev:',swup0(1:klon,1),swup0(1:klon,klev)
    710 !          print*,'SW_AR4 ZFSDN  1 , klev:',ZFSDN(1:klon,1) ,ZFSDN(1:klon,klev)
    711 !          print*,'SW_AR4 ZFSUP  1 , klev:',ZFSUP(1:klon,1) ,ZFSUP(1:klon,klev)
     694!
    712695    ELSE 
    713696#ifdef CPP_RRTM
     
    717700      DO k = 1, kflev+1
    718701      DO i = 1, kdlon
    719       ZEMTD_i(i,k)=0.
    720       ZEMTU_i(i,k)=0.
    721       ZTRSO_i(i,k)=0.
    722       ZTH_i(i,k)=0.
    723       ZLWFT_i(i,k)=0.
    724       ZSWFT_i(i,k)=0.
    725       ZFLUX_i(i,1,k)=0.
    726       ZFLUX_i(i,2,k)=0.
    727       ZFLUC_i(i,1,k)=0.
    728       ZFLUC_i(i,2,k)=0.
    729       ZFSDWN_i(i,k)=0.
    730       ZFCDWN_i(i,k)=0.
    731       ZFCCDWN_i(i,k)=0.
    732       ZFSUP_i(i,k)=0.
    733       ZFCUP_i(i,k)=0.
    734       ZFCCUP_i(i,k)=0.
    735       ZFLCCDWN_i(i,k)=0.
    736       ZFLCCUP_i(i,k)=0.
     702        ZEMTD_i(i,k)=0.
     703        ZEMTU_i(i,k)=0.
     704        ZTRSO_i(i,k)=0.
     705        ZTH_i(i,k)=0.
     706        ZLWFT_i(i,k)=0.
     707        ZSWFT_i(i,k)=0.
     708        ZFLUX_i(i,1,k)=0.
     709        ZFLUX_i(i,2,k)=0.
     710        ZFLUC_i(i,1,k)=0.
     711        ZFLUC_i(i,2,k)=0.
     712        ZFSDWN_i(i,k)=0.
     713        ZFCDWN_i(i,k)=0.
     714        ZFCCDWN_i(i,k)=0.
     715        ZFSUP_i(i,k)=0.
     716        ZFCUP_i(i,k)=0.
     717        ZFCCUP_i(i,k)=0.
     718        ZFLCCDWN_i(i,k)=0.
     719        ZFLCCUP_i(i,k)=0.
    737720      ENDDO
    738721      ENDDO
     
    788771      PFSDNV(i)=0.
    789772      DO kk = 1, NSW
    790       PSFSWDIR(i,kk)=0.
    791       PSFSWDIF(i,kk)=0.
     773        PSFSWDIR(i,kk)=0.
     774        PSFSWDIF(i,kk)=0.
    792775      ENDDO
    793776      ENDDO
     
    796779! On met les donnees dans l'ordre des niveaux arpege
    797780         paprs_i(:,1)=paprs(:,klev+1)
    798          do k=1,klev
     781         DO k=1,klev
    799782            paprs_i(1:klon,k+1) =paprs(1:klon,klev+1-k)
    800783            pplay_i(1:klon,k)   =pplay(1:klon,klev+1-k)
     
    811794            ref_liq_pi_i(1:klon,k) =ref_liq_pi(1:klon,klev+1-k)
    812795            ref_ice_pi_i(1:klon,k) =ref_ice_pi(1:klon,klev+1-k)
    813          enddo
    814          do k=1,kflev
     796         ENDDO
     797         DO k=1,kflev
    815798           POZON_i(1:klon,k,:)=POZON(1:klon,kflev+1-k,:)
    816799!!!            POZON_i(1:klon,k)=POZON(1:klon,k)            !!! on laisse 1=sol et klev=top
    817800!          print *,'Juste avant RECMWFL: k tsol temp',k,tsol,t(1,k)
    818801!!!!!!! Modif MPL 6.01.09 avec RRTM, on passe de 5 a 6     
    819             do i=1,6
     802            DO i=1,6
    820803            PAER_i(1:klon,k,i)=PAER(1:klon,kflev+1-k,i)
    821             enddo
    822          enddo
     804            ENDDO
     805         ENDDO
    823806!       print *,'RADLWSW: avant RECMWFL, RI0,rmu0=',solaire,rmu0
    824807
     
    849832!    s   'RECMWF ')
    850833!
    851       if(lldebug) then
     834      IF (lldebug) THEN
    852835        CALL writefield_phy('paprs_i',paprs_i,klev+1)
    853836        CALL writefield_phy('pplay_i',pplay_i,klev)
     
    863846        CALL writefield_phy('palbd_new',PALBD_NEW,NSW)
    864847        CALL writefield_phy('palbp_new',PALBP_NEW,NSW)
    865       endif
     848      ENDIF
    866849
    867850! Nouvel appel a RECMWF (celui du cy32t0)
     
    893876           
    894877!        print *,'RADLWSW: apres RECMWF'
    895       if(lldebug) then
     878      IF (lldebug) THEN
    896879        CALL writefield_phy('zemtd_i',ZEMTD_i,klev+1)
    897880        CALL writefield_phy('zemtu_i',ZEMTU_i,klev+1)
     
    918901        CALL writefield_phy('zfcdwn_i',ZFCDWN_i,klev+1)
    919902        CALL writefield_phy('zfcup_i',ZFCUP_i,klev+1)
    920       endif
     903      ENDIF
    921904! --------- output RECMWFL
    922905!  ZEMTD        (KPROMA,KLEV+1)  ; TOTAL DOWNWARD LONGWAVE EMISSIVITY
     
    969952         ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1)
    970953         ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1)
    971          IF(ok_volcan) THEN
     954         IF (ok_volcan) THEN
    972955            ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL
    973956         ENDIF
     
    1009992! On renseigne les champs LMDz, pour avoir la meme chose qu'en sortie de
    1010993! LW_LMDAR4 et SW_LMDAR4
     994
     995      !--fraction of diffuse radiation in surface SW downward radiation
     996      DO i = 1, kdlon
     997       IF (fract(i).GT.0.0) THEN
     998         zdir=SUM(PSFSWDIR(i,:))
     999         zdif=SUM(PSFSWDIF(i,:))
     1000         zsolswfdiff(i) = zdif/(zdir+zdif)
     1001       ELSE  !--night
     1002         zsolswfdiff(i) = 1.0
     1003       ENDIF
     1004      ENDDO
     1005!
    10111006      DO i = 1, kdlon
    10121007         zsolsw(i)    = ZSWFT(i,1)
     
    10261021         ztoplw0(i)   = ZLWFT0_i(i,klev+1)*(-1)
    10271022!         
    1028            IF (fract(i) == 0.) THEN
     1023         IF (fract(i) == 0.) THEN
    10291024!!!!! A REVOIR MPL (20090630) ca n a pas de sens quand fract=0
    10301025! pas plus que dans le sw_AR4
     
    10471042! ZLWFT(klon,k),ZSWFT
    10481043
    1049       do k=1,kflev
    1050          do i=1,kdlon
     1044      DO k=1,kflev
     1045         DO i=1,kdlon
    10511046           zheat(i,k)=(ZSWFT(i,k+1)-ZSWFT(i,k))*RDAY*RG/RCPD/PDP(i,k)
    10521047           zheat0(i,k)=(ZSWFT0_i(i,k+1)-ZSWFT0_i(i,k))*RDAY*RG/RCPD/PDP(i,k)
    10531048           zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
    10541049           zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
    1055            IF(ok_volcan) THEN
     1050           IF (ok_volcan) THEN
    10561051              zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RG/RCPD/PDP(i,k) !NL
    10571052              zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RG/RCPD/PDP(i,k) !NL
     
    10601055!          ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k)
    10611056!          ZFLUCDWN_i(i,k)=ZFLUC_i(i,2,k)         
    1062          enddo
    1063       enddo
     1057         ENDDO
     1058      ENDDO
    10641059#else
    10651060    abort_message="You should compile with -rrtm if running with iflag_rrtm=1"
     
    10731068      toplw(iof+i) = ztoplw(i)
    10741069      solsw(iof+i) = zsolsw(i)
     1070      solswfdiff(iof+i) = zsolswfdiff(i)
    10751071      sollw(iof+i) = zsollw(i)
    10761072      sollwdown(iof+i) = zsollwdown(i)
Note: See TracChangeset for help on using the changeset viewer.