Changeset 3756 for LMDZ6


Ignore:
Timestamp:
Jul 10, 2020, 11:50:17 PM (4 years ago)
Author:
oboucher
Message:

The fraction of SW down radiation that is diffuse is extracted from radlwsw.F90 and passed on to pbl_surface for inclusion in fields_out for transfer to ORCHIDEE if it requested in input file coupling_fields.def. Hence there is nothing automatic here. The fraction of SW down radiation is also added as a diagnostic. To satisfy the case when this new quantity is used in ORCHIDEE, then it is added in the restart (and read in case it is there).

Location:
LMDZ6/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/DefLists/field_def_lmdz.xml

    r3702 r3756  
    142142        <field id="SWdnSFCclr"    long_name="SWdn clear sky at surface"    unit="W/m2" />
    143143        <field id="SWdnSFCcleanclr"    long_name="SWdn clean (no aerosol) clear sky at surface"    unit="W/m2" />
     144        <field id="fdiffSWdnSFC"    long_name="Fraction of diffuse SWdn at surface"    unit="-" />
    144145        <field id="LWupSFC"    long_name="Upwd. IR rad. at surface"    unit="W/m2" />
    145146        <field id="LWupSFCclr"    long_name="CS Upwd. IR rad. at surface"    unit="W/m2" />
  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r3435 r3756  
    164164       rlon,      rlat,      rugoro,   rmu0,          &
    165165       zsig,      lwdown_m,  pphi,     cldt,          &
    166        rain_f,    snow_f,    solsw_m,  sollw_m,       &
     166       rain_f,    snow_f,    solsw_m,  solswfdiff_m, sollw_m,       &
    167167       gustiness,                                     &
    168168       t,         q,         u,        v,             &
     
    318318    REAL, DIMENSION(klon),        INTENT(IN)        :: snow_f  ! snow fall
    319319    REAL, DIMENSION(klon),        INTENT(IN)        :: solsw_m ! net shortwave radiation at mean surface
     320    REAL, DIMENSION(klon),        INTENT(IN)        :: solswfdiff_m ! diffuse fraction fordownward shortwave radiation at mean surface
    320321    REAL, DIMENSION(klon),        INTENT(IN)        :: sollw_m ! net longwave radiation at mean surface
    321322    REAL, DIMENSION(klon,klev),   INTENT(IN)        :: t       ! temperature (K)
     
    453454    REAL, DIMENSION(klon, klev),  INTENT(OUT)       :: zxfluxu    ! u wind tension, mean for each grid point
    454455    REAL, DIMENSION(klon, klev),  INTENT(OUT)       :: zxfluxv    ! v wind tension, mean for each grid point
    455     REAL, DIMENSION(klon, nbsrf+1), INTENT(INOUT)     :: z0m,z0h      ! rugosity length (m)
    456     REAL, DIMENSION(klon, nbsrf), INTENT(INOUT)       :: agesno   ! age of snow at surface
     456    REAL, DIMENSION(klon, nbsrf+1), INTENT(INOUT)   :: z0m,z0h      ! rugosity length (m)
     457    REAL, DIMENSION(klon, nbsrf), INTENT(INOUT)     :: agesno   ! age of snow at surface
    457458    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: solsw      ! net shortwave radiation at surface
    458459    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: sollw      ! net longwave radiation at surface
    459460    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: d_ts       ! change in temperature at surface
    460     REAL, DIMENSION(klon, nbsrf), INTENT(INOUT)       :: evap     ! evaporation at surface
     461    REAL, DIMENSION(klon, nbsrf), INTENT(INOUT)     :: evap     ! evaporation at surface
    461462    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: fluxlat    ! latent flux
    462463    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: t2m        ! temperature at 2 meter height
     
    965966    yqsurf = 0.0  ; yalb = 0.0 ; yalb_vis = 0.0
    966967!albedo SB <<<
    967     yrain_f = 0.0 ; ysnow_f = 0.0    ; yfder = 0.0     ; ysolsw = 0.0   
     968    yrain_f = 0.0 ; ysnow_f = 0.0    ; yfder = 0.0     ; ysolsw = 0.0
    968969    ysollw = 0.0  ; yz0m = 0.0 ; yz0h = 0.0    ; yu1 = 0.0   
    969970    yv1 = 0.0     ; ypaprs = 0.0     ; ypplay = 0.0
     
    11831184!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    11841185
     1186!--OB this line is not satisfactory because alb is the direct albedo not total albedo
    11851187          solsw(i,nsrf) = solsw_m(i) * (1.-alb(i,nsrf)) / (1.-alb_m(i))
    11861188       ENDDO
     
    12051207!>al1
    12061208
     1209!--OB add diffuse fraction of SW down
     1210   DO n=1,nbcf_out
     1211       IF (cfname_out(n) == "swdownfdiff" ) fields_out(:,n) = solswfdiff_m(:)
     1212   ENDDO
    12071213! >> PC
    12081214   IF (carbon_cycle_cpl .AND. carbon_cycle_tr .AND. nbcf_out.GT.0 ) THEN
  • LMDZ6/trunk/libf/phylmd/phyetat0.F90

    r3581 r3756  
    1515       ftsol, pbl_tke, pctsrf, q_ancien, ql_ancien, qs_ancien, radpas, radsol, rain_fall, ratqs, &
    1616       rnebcon, rugoro, sig1, snow_fall, solaire_etat0, sollw, sollwdown, &
    17        solsw, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, &
     17       solsw, solswfdiff, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, &
    1818       wake_deltat, wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, &
    1919       wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, &
     
    307307
    308308  found=phyetat0_get(1,solsw,"solsw","net SW radiation surf",0.)
     309  found=phyetat0_get(1,solswfdiff,"solswfdiff","fraction of SW radiation surf that is diffuse",1.)
    309310  found=phyetat0_get(1,sollw,"sollw","net LW radiation surf",0.)
    310311  found=phyetat0_get(1,sollwdown,"sollwdown","down LW radiation surf",0.)
    311312  IF (.NOT. found) THEN
    312      sollwdown = 0. ;  zts=0.
    313      do nsrf=1,nbsrf
     313     sollwdown(:) = 0. ;  zts(:)=0.
     314     DO nsrf=1,nbsrf
    314315        zts(:)=zts(:)+ftsol(:,nsrf)*pctsrf(:,nsrf)
    315      enddo
     316     ENDDO
    316317     sollwdown(:)=sollw(:)+RSIGMA*zts(:)**4
    317318  ENDIF
  • LMDZ6/trunk/libf/phylmd/phyredem.F90

    r3506 r3756  
    2727                                ale_wake, ale_bl_stat,                       &
    2828                                du_gwd_rando, du_gwd_front, u10m, v10m,      &
    29                                 treedrg
     29                                treedrg, solswfdiff
    3030  USE geometry_mod, ONLY : longitude_deg, latitude_deg
    3131  USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var
     
    184184
    185185    CALL put_field(pass,"solsw", "Rayonnement solaire a la surface", solsw)
     186
     187    CALL put_field(pass,"solswfdiff", "Fraction du rayonnement solaire a la surface qui est diffus", solswfdiff)
    186188
    187189    CALL put_field(pass,"sollw", "Rayonnement IF a la surface", sollw)
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r3702 r3756  
    461461  TYPE(ctrl_out), SAVE :: o_SWupSFCcleanclr = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    462462    'SWupSFCcleanclr', 'SWup clear sky clean (no aerosol) at surface', 'W/m2', (/ ('', i=1, 10) /))
    463   TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 5, 10, 11, 11, 11, 11/), &
     463  TYPE(ctrl_out), SAVE :: o_fdiffSWdnSFC = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     464    'fdiffSWdnSFC', 'Fraction of diffuse SWdn at surface', 'W/m2', (/ ('', i=1, 10) /))
     465  TYPE(ctrl_out), SAVE :: o_SWdnSFC = ctrl_out((/ 1, 1, 1, 10, 5, 10, 11, 11, 11, 11/), &
    464466    'SWdnSFC', 'SWdn at surface', 'W/m2', (/ ('', i=1, 10) /))
    465467  TYPE(ctrl_out), SAVE :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 5, 10, 11, 11, 11, 11/), &
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r3748 r3756  
    4545         o_snow, o_msnow, o_fsnow, o_evap, o_ep,o_epmax_diag, & ! epmax_cape
    4646         o_tops, o_tops0, o_topl, o_topl0, &
    47          o_SWupTOA, o_SWupTOAclr, o_SWupTOAcleanclr, o_SWdnTOA, &
     47         o_SWupTOA, o_SWupTOAclr, o_SWupTOAcleanclr, o_SWdnTOA, o_fdiffSWdnSFC, &
    4848         o_SWdnTOAclr, o_nettop, o_SWup200, &
    4949         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
     
    223223         qsol, z0m, z0h, fevap, agesno, &
    224224         nday_rain, rain_con, snow_con, &
    225          topsw, toplw, toplw0, swup, swdn, &
     225         topsw, toplw, toplw0, swup, swdn, solswfdiff, &
    226226         topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, &
    227227         SWdn200, SWdn200clr, LWup200, LWup200clr, &
     
    938938       ENDIF
    939939       CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
     940
     941       CALL histwrite_phy(o_fdiffSWdnSFC, solswfdiff)
    940942
    941943       IF (vars_defined) THEN
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r3496 r3756  
    4747!albedo SB >>>
    4848      REAL, ALLOCATABLE, SAVE :: falb_dif(:,:,:), falb_dir(:,:,:)
    49       real, allocatable, save :: chl_con(:)
     49      REAL, ALLOCATABLE, SAVE :: chl_con(:)
    5050!$OMP THREADPRIVATE(falb_dir,falb_dif,chl_con)
    5151!albedo SB <<<
     
    5454      REAL, ALLOCATABLE, SAVE :: rain_fall(:), snow_fall(:)
    5555!$OMP THREADPRIVATE( rain_fall, snow_fall)
    56       REAL, ALLOCATABLE, SAVE :: solsw(:), sollw(:)
    57 !$OMP THREADPRIVATE(solsw, sollw)
     56      REAL, ALLOCATABLE, SAVE :: solsw(:), solswfdiff(:), sollw(:)
     57!$OMP THREADPRIVATE(solsw, solswfdiff, sollw)
    5858      REAL, ALLOCATABLE, SAVE :: radsol(:)
    5959!$OMP THREADPRIVATE(radsol)
     
    358358      REAL,ALLOCATABLE,SAVE :: albplap(:)
    359359!$OMP THREADPRIVATE(albplap)
    360       REAL,ALLOCATABLE,SAVE :: solswp(:), sollwp(:)
    361 !$OMP THREADPRIVATE(solswp, sollwp)
     360      REAL,ALLOCATABLE,SAVE :: solswp(:), solswfdiffp(:), sollwp(:)
     361!$OMP THREADPRIVATE(solswp, solswfdiffp, sollwp)
    362362      REAL,ALLOCATABLE,SAVE :: sollwdownp(:)
    363363!$OMP THREADPRIVATE(sollwdownp)
     
    466466      ALLOCATE(rain_fall(klon))
    467467      ALLOCATE(snow_fall(klon))
    468       ALLOCATE(solsw(klon), sollw(klon))
     468      ALLOCATE(solsw(klon), solswfdiff(klon), sollw(klon))
    469469      sollw=0.0
    470470      ALLOCATE(radsol(klon))
     
    597597      ALLOCATE(radsolp(klon), topswp(klon), toplwp(klon))
    598598      ALLOCATE(albplap(klon))
    599       ALLOCATE(solswp(klon), sollwp(klon))
     599      ALLOCATE(solswp(klon), solswfdiffp(klon), sollwp(klon))
    600600      ALLOCATE(gustiness(klon))
    601601      ALLOCATE(sollwdownp(klon))
     
    628628!!! fin nrlmd le 10/04/2012
    629629      IF (ok_gwd_rando) THEN
    630         allocate(du_gwd_rando(klon, klev))
     630        ALLOCATE(du_gwd_rando(klon, klev))
    631631        du_gwd_rando(:,:)=0.
    632632      ENDIF
     
    644644include "clesphys.h"
    645645
    646       deallocate(pctsrf, ftsol, falb1, falb2)
    647       deallocate(qsol,fevap,z0m,z0h,agesno)
     646      DEALLOCATE(pctsrf, ftsol, falb1, falb2)
     647      DEALLOCATE(qsol,fevap,z0m,z0h,agesno)
    648648!FC
    649       deallocate(treedrg)
    650       deallocate(rain_fall, snow_fall, solsw, sollw, radsol, swradcorr)
    651       deallocate(zmea, zstd, zsig, zgam)
    652       deallocate(zthe, zpic, zval)
    653       deallocate(rugoro, t_ancien, q_ancien, clwcon, rnebcon)
    654       deallocate(qs_ancien, ql_ancien)
    655       deallocate(prw_ancien, prlw_ancien, prsw_ancien)
    656       deallocate(qtc_cv,sigt_cv)
    657       deallocate(u_ancien, v_ancien)
    658       deallocate(tr_ancien)                           !RomP
    659       deallocate(ratqs, pbl_tke,coefh,coefm)
     649      DEALLOCATE(treedrg)
     650      DEALLOCATE(rain_fall, snow_fall, solsw, solswfdiff, sollw, radsol, swradcorr)
     651      DEALLOCATE(zmea, zstd, zsig, zgam)
     652      DEALLOCATE(zthe, zpic, zval)
     653      DEALLOCATE(rugoro, t_ancien, q_ancien, clwcon, rnebcon)
     654      DEALLOCATE(qs_ancien, ql_ancien)
     655      DEALLOCATE(prw_ancien, prlw_ancien, prsw_ancien)
     656      DEALLOCATE(qtc_cv,sigt_cv)
     657      DEALLOCATE(u_ancien, v_ancien)
     658      DEALLOCATE(tr_ancien)                           !RomP
     659      DEALLOCATE(ratqs, pbl_tke,coefh,coefm)
    660660!nrlmd<
    661       deallocate(delta_tsurf)
     661      DEALLOCATE(delta_tsurf)
    662662!>nrlmd
    663       deallocate(zmax0, f0)
    664       deallocate(sig1, w01)
    665       deallocate(entr_therm, fm_therm)
    666       deallocate(detr_therm)
    667       deallocate(clwcon0th, rnebcon0th)
     663      DEALLOCATE(zmax0, f0)
     664      DEALLOCATE(sig1, w01)
     665      DEALLOCATE(entr_therm, fm_therm)
     666      DEALLOCATE(detr_therm)
     667      DEALLOCATE(clwcon0th, rnebcon0th)
    668668! radiation outputs
    669       deallocate(swdnc0, swdn0, swdn)
    670       deallocate(swupc0, swup0, swup)
    671       deallocate(lwdnc0, lwdn0, lwdn)
    672       deallocate(lwupc0, lwup0, lwup)
    673       deallocate(SWdn200clr, SWdn200)
    674       deallocate(SWup200clr, SWup200)
    675       deallocate(LWdn200clr, LWdn200)
    676       deallocate(LWup200clr, LWup200)
    677       deallocate(LWdnTOA, LWdnTOAclr)
     669      DEALLOCATE(swdnc0, swdn0, swdn)
     670      DEALLOCATE(swupc0, swup0, swup)
     671      DEALLOCATE(lwdnc0, lwdn0, lwdn)
     672      DEALLOCATE(lwupc0, lwup0, lwup)
     673      DEALLOCATE(SWdn200clr, SWdn200)
     674      DEALLOCATE(SWup200clr, SWup200)
     675      DEALLOCATE(LWdn200clr, LWdn200)
     676      DEALLOCATE(LWup200clr, LWup200)
     677      DEALLOCATE(LWdnTOA, LWdnTOAclr)
    678678! pressure level
    679       deallocate(tsumSTD)
    680       deallocate(usumSTD, vsumSTD)
    681       deallocate(wsumSTD, phisumSTD)
    682       deallocate(tnondef)
    683       deallocate(qsumSTD, rhsumSTD)
    684       deallocate(uvsumSTD)
    685       deallocate(vqsumSTD)
    686       deallocate(vTsumSTD)
    687       deallocate(wqsumSTD)
    688       deallocate(vphisumSTD)
    689       deallocate(wTsumSTD)
    690       deallocate(u2sumSTD)
    691       deallocate(v2sumSTD)
    692       deallocate(T2sumSTD)
    693       deallocate(O3sumSTD)
    694       deallocate(O3daysumSTD)
     679      DEALLOCATE(tsumSTD)
     680      DEALLOCATE(usumSTD, vsumSTD)
     681      DEALLOCATE(wsumSTD, phisumSTD)
     682      DEALLOCATE(tnondef)
     683      DEALLOCATE(qsumSTD, rhsumSTD)
     684      DEALLOCATE(uvsumSTD)
     685      DEALLOCATE(vqsumSTD)
     686      DEALLOCATE(vTsumSTD)
     687      DEALLOCATE(wqsumSTD)
     688      DEALLOCATE(vphisumSTD)
     689      DEALLOCATE(wTsumSTD)
     690      DEALLOCATE(u2sumSTD)
     691      DEALLOCATE(v2sumSTD)
     692      DEALLOCATE(T2sumSTD)
     693      DEALLOCATE(O3sumSTD)
     694      DEALLOCATE(O3daysumSTD)
    695695!IM beg
    696       deallocate(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD)
    697       deallocate(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD,O3STD,O3daySTD)
     696      DEALLOCATE(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD)
     697      DEALLOCATE(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD,O3STD,O3daySTD)
    698698!IM end
    699       deallocate(seed_old)
    700       deallocate(zuthe, zvthe)
    701       deallocate(alb_neig)
    702       deallocate(ema_cbmf)
    703       deallocate(ema_pcb, ema_pct)
    704       deallocate(Mipsh, Ma, qcondc)
    705       deallocate(wd, sigd)
    706       deallocate(cin, ALE, ALP)
    707       deallocate(ftd, fqd)
    708       deallocate(Ale_bl, Alp_bl)
    709       deallocate(ale_wake)
    710       deallocate(ale_bl_stat)
    711       deallocate(lalim_conv, wght_th)
    712       deallocate(wake_deltat, wake_deltaq)
    713       deallocate(wake_s, awake_dens, wake_dens)
    714       deallocate(wake_Cstar, wake_pe, wake_fip)
     699      DEALLOCATE(seed_old)
     700      DEALLOCATE(zuthe, zvthe)
     701      DEALLOCATE(alb_neig)
     702      DEALLOCATE(ema_cbmf)
     703      DEALLOCATE(ema_pcb, ema_pct)
     704      DEALLOCATE(Mipsh, Ma, qcondc)
     705      DEALLOCATE(wd, sigd)
     706      DEALLOCATE(cin, ALE, ALP)
     707      DEALLOCATE(ftd, fqd)
     708      DEALLOCATE(Ale_bl, Alp_bl)
     709      DEALLOCATE(ale_wake)
     710      DEALLOCATE(ale_bl_stat)
     711      DEALLOCATE(lalim_conv, wght_th)
     712      DEALLOCATE(wake_deltat, wake_deltaq)
     713      DEALLOCATE(wake_s, awake_dens, wake_dens)
     714      DEALLOCATE(wake_Cstar, wake_pe, wake_fip)
    715715!jyg<
    716       deallocate(wake_delta_pbl_TKE)
     716      DEALLOCATE(wake_delta_pbl_TKE)
    717717!>jyg
    718       deallocate(pfrac_impa, pfrac_nucl)
    719       deallocate(pfrac_1nucl)
    720       deallocate(total_rain, nday_rain)
    721       deallocate(paire_ter)
    722       deallocate(albsol1, albsol2)
     718      DEALLOCATE(pfrac_impa, pfrac_nucl)
     719      DEALLOCATE(pfrac_1nucl)
     720      DEALLOCATE(total_rain, nday_rain)
     721      DEALLOCATE(paire_ter)
     722      DEALLOCATE(albsol1, albsol2)
    723723!albedo SB >>>
    724       deallocate(albsol_dir,albsol_dif,falb_dir,falb_dif,chl_con)
     724      DEALLOCATE(albsol_dir,albsol_dif,falb_dir,falb_dif,chl_con)
    725725!albedo SB <<<
    726       deallocate(wo)
    727       deallocate(clwcon0,rnebcon0)
    728       deallocate(heat, heat0)
    729       deallocate(cool, cool0)
    730       deallocate(heat_volc, cool_volc)
    731       deallocate(topsw, toplw)
    732       deallocate(sollwdown, sollwdownclr)
    733       deallocate(gustiness)
    734       deallocate(toplwdown, toplwdownclr)
    735       deallocate(topsw0,toplw0,solsw0,sollw0)
    736       deallocate(albpla)
     726      DEALLOCATE(wo)
     727      DEALLOCATE(clwcon0,rnebcon0)
     728      DEALLOCATE(heat, heat0)
     729      DEALLOCATE(cool, cool0)
     730      DEALLOCATE(heat_volc, cool_volc)
     731      DEALLOCATE(topsw, toplw)
     732      DEALLOCATE(sollwdown, sollwdownclr)
     733      DEALLOCATE(gustiness)
     734      DEALLOCATE(toplwdown, toplwdownclr)
     735      DEALLOCATE(topsw0,toplw0,solsw0,sollw0)
     736      DEALLOCATE(albpla)
    737737!IM ajout variables CFMIP2/CMIP5
    738       deallocate(heatp, coolp)
    739       deallocate(heat0p, cool0p)
    740       deallocate(radsolp, topswp, toplwp)
    741       deallocate(albplap)
    742       deallocate(solswp, sollwp)
    743       deallocate(sollwdownp)
    744       deallocate(topsw0p,toplw0p)
    745       deallocate(solsw0p,sollw0p)
    746       deallocate(lwdnc0p, lwdn0p, lwdnp)
    747       deallocate(lwupc0p, lwup0p, lwupp)
    748       deallocate(swdnc0p, swdn0p, swdnp)
    749       deallocate(swupc0p, swup0p, swupp)
    750       deallocate(cape)
    751       deallocate(pbase,bbase)
    752       deallocate(zqasc)
    753       deallocate(ibas_con, itop_con)
    754       deallocate(rain_con, snow_con)
    755       deallocate(rlonPOS)
    756       deallocate(newsst)
    757       deallocate(ustar,u10m, v10m,wstar)
    758       deallocate(topswad, solswad)
    759       deallocate(topswai, solswai)
    760       deallocate(tau_aero,piz_aero,cg_aero)
    761       deallocate(tau_aero_sw_rrtm,piz_aero_sw_rrtm,cg_aero_sw_rrtm)
    762       deallocate(tau_aero_lw_rrtm,piz_aero_lw_rrtm,cg_aero_lw_rrtm)
    763       deallocate(ccm)
    764       if (ok_gwd_rando) deallocate(du_gwd_rando)
    765       if (.not. ok_hines .and. ok_gwd_rando) deallocate(du_gwd_front)
     738      DEALLOCATE(heatp, coolp)
     739      DEALLOCATE(heat0p, cool0p)
     740      DEALLOCATE(radsolp, topswp, toplwp)
     741      DEALLOCATE(albplap)
     742      DEALLOCATE(solswp, solswfdiffp, sollwp)
     743      DEALLOCATE(sollwdownp)
     744      DEALLOCATE(topsw0p,toplw0p)
     745      DEALLOCATE(solsw0p,sollw0p)
     746      DEALLOCATE(lwdnc0p, lwdn0p, lwdnp)
     747      DEALLOCATE(lwupc0p, lwup0p, lwupp)
     748      DEALLOCATE(swdnc0p, swdn0p, swdnp)
     749      DEALLOCATE(swupc0p, swup0p, swupp)
     750      DEALLOCATE(cape)
     751      DEALLOCATE(pbase,bbase)
     752      DEALLOCATE(zqasc)
     753      DEALLOCATE(ibas_con, itop_con)
     754      DEALLOCATE(rain_con, snow_con)
     755      DEALLOCATE(rlonPOS)
     756      DEALLOCATE(newsst)
     757      DEALLOCATE(ustar,u10m, v10m,wstar)
     758      DEALLOCATE(topswad, solswad)
     759      DEALLOCATE(topswai, solswai)
     760      DEALLOCATE(tau_aero,piz_aero,cg_aero)
     761      DEALLOCATE(tau_aero_sw_rrtm,piz_aero_sw_rrtm,cg_aero_sw_rrtm)
     762      DEALLOCATE(tau_aero_lw_rrtm,piz_aero_lw_rrtm,cg_aero_lw_rrtm)
     763      DEALLOCATE(ccm)
     764      if (ok_gwd_rando) DEALLOCATE(du_gwd_rando)
     765      if (.not. ok_hines .and. ok_gwd_rando) DEALLOCATE(du_gwd_front)
    766766       
    767767!!! nrlmd le 10/04/2012
    768       deallocate(ale_bl_trig)
     768      DEALLOCATE(ale_bl_trig)
    769769!!! fin nrlmd le 10/04/2012
    770770      is_initialized=.FALSE.
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r3726 r3756  
    25142514            longitude_deg, latitude_deg, rugoro,  zrmu0,      &
    25152515            zsig,      sollwdown, pphi,    cldt,      &
    2516             rain_fall, snow_fall, solsw,   sollw,     &
     2516            rain_fall, snow_fall, solsw,   solswfdiff, sollw,     &
    25172517            gustiness,                                &
    25182518            t_seri,    q_seri,    u_seri,  v_seri,    &
     
    41434143               heat,heat0,cool,cool0,albpla, &
    41444144               heat_volc,cool_volc, &
    4145                topsw,toplw,solsw,sollw, &
     4145               topsw,toplw,solsw,solswfdiff,sollw, &
    41464146               sollwdown, &
    41474147               topsw0,toplw0,solsw0,sollw0, &
     
    42304230                     heatp,heat0p,coolp,cool0p,albplap, &
    42314231                     heat_volc,cool_volc, &
    4232                      topswp,toplwp,solswp,sollwp, &
     4232                     topswp,toplwp,solswp,solswfdiffp,sollwp, &
    42334233                     sollwdownp, &
    42344234                     topsw0p,toplw0p,solsw0p,sollw0p, &
  • LMDZ6/trunk/libf/phylmd/radlwsw_m.F90

    r3666 r3756  
    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)
     
    235236  REAL,    INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL
    236237  REAL,    INTENT(out) :: topsw(KLON), toplw(KLON)
    237   REAL,    INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON)
     238  REAL,    INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON), solswfdiff(KLON)
    238239  REAL,    INTENT(out) :: topsw0(KLON), toplw0(KLON), solsw0(KLON), sollw0(KLON)
    239240  REAL,    INTENT(out) :: sollwdown(KLON)
     
    286287  REAL(KIND=8) PWV(kdlon,kflev), PQS(kdlon,kflev)
    287288
    288   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
    289290  ! "POZON(:, :, 1)" is for the average day-night field,
    290291  ! "POZON(:, :, 2)" is for daylight time.
     
    302303  REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL
    303304  REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon)
    304   REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon)
     305  REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon), zsolswfdiff(kdlon)
    305306  REAL(KIND=8) zsollwdown(kdlon)
    306307  REAL(KIND=8) ztopsw0(kdlon), ztoplw0(kdlon)
     
    329330!MPL input supplementaires pour RECMWFL
    330331! flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
    331       REAL(KIND=8) GEMU(klon)
     332  REAL(KIND=8) GEMU(klon)
    332333!MPL input RECMWFL:
    333334! Tableaux aux niveaux inverses pour respecter convention Arpege
    334       REAL(KIND=8) ref_liq_i(klon,klev) ! cloud droplet radius present-day from newmicro (inverted)
    335       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)
    336337!--OB
    337       REAL(KIND=8) ref_liq_pi_i(klon,klev) ! cloud droplet radius pre-industrial from newmicro (inverted)
    338       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)
    339340!--end OB
    340       REAL(KIND=8) paprs_i(klon,klev+1)
    341       REAL(KIND=8) pplay_i(klon,klev)
    342       REAL(KIND=8) cldfra_i(klon,klev)
    343       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
    344345  ! "POZON(:, :, 1)" is for the average day-night field,
    345346  ! "POZON(:, :, 2)" is for daylight time.
    346347!!!!! Modif MPL 6.01.09 avec RRTM, on passe de 5 a 6     
    347       REAL(KIND=8) PAER_i(kdlon,kflev,6)
    348       REAL(KIND=8) PDP_i(klon,klev)
    349       REAL(KIND=8) t_i(klon,klev),q_i(klon,klev),qsat_i(klon,klev)
    350       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)
    351352!MPL output RECMWFL:
    352       REAL(KIND=8) ZEMTD (klon,klev+1),ZEMTD_i (klon,klev+1)       
    353       REAL(KIND=8) ZEMTU (klon,klev+1),ZEMTU_i (klon,klev+1)     
    354       REAL(KIND=8) ZTRSO (klon,klev+1),ZTRSO_i (klon,klev+1)   
    355       REAL(KIND=8) ZTH   (klon,klev+1),ZTH_i   (klon,klev+1)   
    356       REAL(KIND=8) ZCTRSO(klon,2)       
    357       REAL(KIND=8) ZCEMTR(klon,2)     
    358       REAL(KIND=8) ZTRSOD(klon)       
    359       REAL(KIND=8) ZLWFC (klon,2)     
    360       REAL(KIND=8) ZLWFT (klon,klev+1),ZLWFT_i (klon,klev+1)   
    361       REAL(KIND=8) ZSWFC (klon,2)     
    362       REAL(KIND=8) ZSWFT (klon,klev+1),ZSWFT_i (klon,klev+1)
    363       REAL(KIND=8) ZFLUCDWN_i(klon,klev+1),ZFLUCUP_i(klon,klev+1)
    364       REAL(KIND=8) PPIZA_TOT(klon,klev,NSW)
    365       REAL(KIND=8) PCGA_TOT(klon,klev,NSW)
    366       REAL(KIND=8) PTAU_TOT(klon,klev,NSW)
    367       REAL(KIND=8) PPIZA_NAT(klon,klev,NSW)
    368       REAL(KIND=8) PCGA_NAT(klon,klev,NSW)
    369       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)
    370371#ifdef CPP_RRTM
    371       REAL(KIND=8) PTAU_LW_TOT(klon,klev,NLW)
    372       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)
    373374#endif
    374       REAL(KIND=8) PSFSWDIR(klon,NSW)
    375       REAL(KIND=8) PSFSWDIF(klon,NSW)
    376       REAL(KIND=8) PFSDNN(klon)
    377       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)
    378379!MPL On ne redefinit pas les tableaux ZFLUX,ZFLUC,
    379380!MPL ZFSDWN,ZFCDWN,ZFSUP,ZFCUP car ils existent deja
    380381!MPL sous les noms de ZFLDN,ZFLDN0,ZFLUP,ZFLUP0,
    381382!MPL ZFSDN,ZFSDN0,ZFSUP,ZFSUP0
    382       REAL(KIND=8) ZFLUX_i (klon,2,klev+1)
    383       REAL(KIND=8) ZFLUC_i (klon,2,klev+1)
    384       REAL(KIND=8) ZFSDWN_i (klon,klev+1)
    385       REAL(KIND=8) ZFCDWN_i (klon,klev+1)
    386       REAL(KIND=8) ZFCCDWN_i (klon,klev+1)
    387       REAL(KIND=8) ZFSUP_i (klon,klev+1)
    388       REAL(KIND=8) ZFCUP_i (klon,klev+1)
    389       REAL(KIND=8) ZFCCUP_i (klon,klev+1)
    390       REAL(KIND=8) ZFLCCDWN_i (klon,klev+1)
    391       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)
    392393! 3 lignes suivantes a activer pour CCMVAL (MPL 20100412)
    393394!      REAL(KIND=8) RSUN(3,2)
    394395!      REAL(KIND=8) SUN(3)
    395396!      REAL(KIND=8) SUN_FRACT(2)
    396   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
    397398  CHARACTER (LEN=80) :: abort_message
    398399  CHARACTER (LEN=80) :: modname='radlwsw_m'
    399400
    400   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")
    401404  ! initialisation
    402405  ist=1
     
    414417  zsolsw0_aero(:,:) = 0. !ym missing init : warning : not initialized in SW_AEROAR4
    415418
    416 
    417    ZTOPSWADAERO(:)  = 0. !ym missing init
    418    ZSOLSWADAERO(:)  = 0. !ym missing init
    419    ZTOPSWAD0AERO(:) = 0. !ym missing init
    420    ZSOLSWAD0AERO(:) = 0. !ym missing init
    421    ZTOPSWAIAERO(:)  = 0. !ym missing init
    422    ZSOLSWAIAERO(:)  = 0. !ym missing init 
    423    ZTOPSWCF_AERO(:,:)= 0.!ym missing init 
    424    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 
    425427
    426428  !
     
    454456#ifdef REPROBUS
    455457    IF (iflag_rrtm==0) THEN
    456       if(ok_SUNTIME) PSCT = solaireTIME/zdist/zdist
     458      IF (ok_SUNTIME) PSCT = solaireTIME/zdist/zdist
    457459      print*,'Constante solaire: ',PSCT*zdist*zdist
    458     END IF
     460    ENDIF
    459461#endif
    460   END IF
     462  ENDIF
    461463
    462464  DO j = 1, nb_gr
     
    541543       CALL RAD_INTERACTIF(POZON,iof)
    542544#endif
    543     END IF
    544 
     545    ENDIF
    545546    !
    546547    DO k = 1, kflev+1
     
    568569      ENDDO
    569570    ENDDO
    570 
    571571!
    572572!===== iflag_rrtm ================================================
    573573!     
    574574    IF (iflag_rrtm == 0) THEN       !!!! remettre 0 juste pour tester l'ancien rayt via rrtm
     575!
    575576!--- Mise a zero des tableaux output du rayonnement LW-AR4 ----------             
    576577      DO k = 1, kflev+1
     
    651652      zsolswaiaero(i)=0.
    652653      ENDDO
     654
     655      !--fraction of diffuse radiation in surface SW downward radiation
     656      !--not computed with old radiation scheme
     657      zsolswfdiff(:) = -999.999
     658
    653659!     print *,'Avant SW_LMDAR4: PSCT zrmu0 zfract',PSCT, zrmu0, zfract
    654660       ! daylight ozone, if we have it, for short wave
     
    676682       DO i=1,kdlon
    677683       DO k=1,kflev+1
    678 !        print *,'iof i k klon klev=',iof,i,k,klon,klev
    679684         lwdn0 ( iof+i,k)   = ZFLDN0 ( i,k)
    680685         lwdn  ( iof+i,k)   = ZFLDN  ( i,k)
     
    687692       ENDDO 
    688693       ENDDO 
    689 !          print*,'SW_AR4 ZFSDN0 1 , klev:',ZFSDN0(1:klon,1),ZFSDN0(1:klon,klev)
    690 !          print*,'SW_AR4 swdn0  1 , klev:',swdn0(1:klon,1),swdn0(1:klon,klev)
    691 !          print*,'SW_AR4 ZFSUP0 1 , klev:',ZFSUP0(1:klon,1),ZFSUP0(1:klon,klev)
    692 !          print*,'SW_AR4 swup0  1 , klev:',swup0(1:klon,1),swup0(1:klon,klev)
    693 !          print*,'SW_AR4 ZFSDN  1 , klev:',ZFSDN(1:klon,1) ,ZFSDN(1:klon,klev)
    694 !          print*,'SW_AR4 ZFSUP  1 , klev:',ZFSUP(1:klon,1) ,ZFSUP(1:klon,klev)
     694!
    695695    ELSE 
    696696#ifdef CPP_RRTM
     
    700700      DO k = 1, kflev+1
    701701      DO i = 1, kdlon
    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.
     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.
    720720      ENDDO
    721721      ENDDO
     
    771771      PFSDNV(i)=0.
    772772      DO kk = 1, NSW
    773       PSFSWDIR(i,kk)=0.
    774       PSFSWDIF(i,kk)=0.
     773        PSFSWDIR(i,kk)=0.
     774        PSFSWDIF(i,kk)=0.
    775775      ENDDO
    776776      ENDDO
     
    779779! On met les donnees dans l'ordre des niveaux arpege
    780780         paprs_i(:,1)=paprs(:,klev+1)
    781          do k=1,klev
     781         DO k=1,klev
    782782            paprs_i(1:klon,k+1) =paprs(1:klon,klev+1-k)
    783783            pplay_i(1:klon,k)   =pplay(1:klon,klev+1-k)
     
    794794            ref_liq_pi_i(1:klon,k) =ref_liq_pi(1:klon,klev+1-k)
    795795            ref_ice_pi_i(1:klon,k) =ref_ice_pi(1:klon,klev+1-k)
    796          enddo
    797          do k=1,kflev
     796         ENDDO
     797         DO k=1,kflev
    798798           POZON_i(1:klon,k,:)=POZON(1:klon,kflev+1-k,:)
    799799!!!            POZON_i(1:klon,k)=POZON(1:klon,k)            !!! on laisse 1=sol et klev=top
    800800!          print *,'Juste avant RECMWFL: k tsol temp',k,tsol,t(1,k)
    801801!!!!!!! Modif MPL 6.01.09 avec RRTM, on passe de 5 a 6     
    802             do i=1,6
     802            DO i=1,6
    803803            PAER_i(1:klon,k,i)=PAER(1:klon,kflev+1-k,i)
    804             enddo
    805          enddo
     804            ENDDO
     805         ENDDO
    806806!       print *,'RADLWSW: avant RECMWFL, RI0,rmu0=',solaire,rmu0
    807807
     
    832832!    s   'RECMWF ')
    833833!
    834       if(lldebug) then
     834      IF (lldebug) THEN
    835835        CALL writefield_phy('paprs_i',paprs_i,klev+1)
    836836        CALL writefield_phy('pplay_i',pplay_i,klev)
     
    846846        CALL writefield_phy('palbd_new',PALBD_NEW,NSW)
    847847        CALL writefield_phy('palbp_new',PALBP_NEW,NSW)
    848       endif
     848      ENDIF
    849849
    850850! Nouvel appel a RECMWF (celui du cy32t0)
     
    876876           
    877877!        print *,'RADLWSW: apres RECMWF'
    878       if(lldebug) then
     878      IF (lldebug) THEN
    879879        CALL writefield_phy('zemtd_i',ZEMTD_i,klev+1)
    880880        CALL writefield_phy('zemtu_i',ZEMTU_i,klev+1)
     
    901901        CALL writefield_phy('zfcdwn_i',ZFCDWN_i,klev+1)
    902902        CALL writefield_phy('zfcup_i',ZFCUP_i,klev+1)
    903       endif
     903      ENDIF
    904904! --------- output RECMWFL
    905905!  ZEMTD        (KPROMA,KLEV+1)  ; TOTAL DOWNWARD LONGWAVE EMISSIVITY
     
    952952         ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1)
    953953         ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1)
    954          IF(ok_volcan) THEN
     954         IF (ok_volcan) THEN
    955955            ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL
    956956         ENDIF
     
    992992! On renseigne les champs LMDz, pour avoir la meme chose qu'en sortie de
    993993! 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!
    9941006      DO i = 1, kdlon
    9951007         zsolsw(i)    = ZSWFT(i,1)
     
    10091021         ztoplw0(i)   = ZLWFT0_i(i,klev+1)*(-1)
    10101022!         
    1011            IF (fract(i) == 0.) THEN
     1023         IF (fract(i) == 0.) THEN
    10121024!!!!! A REVOIR MPL (20090630) ca n a pas de sens quand fract=0
    10131025! pas plus que dans le sw_AR4
     
    10301042! ZLWFT(klon,k),ZSWFT
    10311043
    1032       do k=1,kflev
    1033          do i=1,kdlon
     1044      DO k=1,kflev
     1045         DO i=1,kdlon
    10341046           zheat(i,k)=(ZSWFT(i,k+1)-ZSWFT(i,k))*RDAY*RG/RCPD/PDP(i,k)
    10351047           zheat0(i,k)=(ZSWFT0_i(i,k+1)-ZSWFT0_i(i,k))*RDAY*RG/RCPD/PDP(i,k)
    10361048           zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
    10371049           zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
    1038            IF(ok_volcan) THEN
     1050           IF (ok_volcan) THEN
    10391051              zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RG/RCPD/PDP(i,k) !NL
    10401052              zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RG/RCPD/PDP(i,k) !NL
     
    10431055!          ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k)
    10441056!          ZFLUCDWN_i(i,k)=ZFLUC_i(i,2,k)         
    1045          enddo
    1046       enddo
     1057         ENDDO
     1058      ENDDO
    10471059#else
    10481060    abort_message="You should compile with -rrtm if running with iflag_rrtm=1"
     
    10561068      toplw(iof+i) = ztoplw(i)
    10571069      solsw(iof+i) = zsolsw(i)
     1070      solswfdiff(iof+i) = zsolswfdiff(i)
    10581071      sollw(iof+i) = zsollw(i)
    10591072      sollwdown(iof+i) = zsollwdown(i)
Note: See TracChangeset for help on using the changeset viewer.