17    cldfra, cldemi, cldtaupd,&
 
   18    ok_ade, ok_aie, flag_aerosol,&
 
   20    tau_aero, piz_aero, cg_aero,&
 
   21    tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm,& 
 
   25    ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
 
   26    heat,heat0,cool,cool0,albpla,&
 
   27    topsw,toplw,solsw,sollw,&
 
   29    topsw0,toplw0,solsw0,sollw0,&
 
   32    topswad_aero, solswad_aero,&
 
   33    topswai_aero, solswai_aero, &
 
   34    topswad0_aero, solswad0_aero,&
 
   35    topsw_aero, topsw0_aero,&
 
   36    solsw_aero, solsw0_aero, &
 
   37    topswcf_aero, solswcf_aero,&
 
   39    toplwad_aero, sollwad_aero,&
 
   40    toplwai_aero, sollwai_aero, &
 
   41    toplwad0_aero, sollwad0_aero,&
 
   43    zlwft0_i, zfldn0, zflup0,&
 
   44    zswft0_i, zfsdn0, zfsup0)
 
   53   USE chem_rep
, ONLY : solairetime, ok_suntime, ndimozon
 
  173   REAL,    
INTENT(in)  :: dist
 
  174   REAL,    
INTENT(in)  :: rmu0(
klon), fract(
klon)
 
  178   REAL,    
INTENT(in)  :: tsol(
klon)
 
  179   REAL,    
INTENT(in) :: alb_dir(
klon,nsw),alb_dif(
klon,nsw)
 
  180   real, 
intent(in) :: SFRWL(6)
 
  184   REAL, 
INTENT(in):: wo(:, :, :) 
 
  189   LOGICAL, 
INTENT(in)  :: ok_ade, ok_aie                                 
 
  191   INTEGER, 
INTENT(in)  :: flag_aerosol                                   
 
  192   LOGICAL, 
INTENT(in)  :: flag_aerosol_strat                             
 
  198   REAL,    
INTENT(in)  :: tau_aero_sw_rrtm(
klon,
klev,2,nsw)                 
 
  199   REAL,    
INTENT(in)  :: piz_aero_sw_rrtm(
klon,
klev,2,nsw)                 
 
  200   REAL,    
INTENT(in)  :: cg_aero_sw_rrtm(
klon,
klev,2,nsw)                  
 
  205   REAL,    
INTENT(in)  :: tau_aero_lw_rrtm(
klon,
klev,2,
nlw)                 
 
  211   REAL,    
INTENT(in)  :: cldtaupi(
klon,
klev)                            
 
  212   LOGICAL, 
INTENT(in)  :: new_aod                                        
 
  216   REAL,    
INTENT(in)  :: ref_liq(
klon,
klev) 
 
  217   REAL,    
INTENT(in)  :: ref_ice(
klon,
klev) 
 
  218   REAL,    
INTENT(in)  :: ref_liq_pi(
klon,
klev) 
 
  219   REAL,    
INTENT(in)  :: ref_ice_pi(
klon,
klev) 
 
  224   REAL,    
INTENT(out) :: topsw(
klon), toplw(
klon)
 
  225   REAL,    
INTENT(out) :: solsw(
klon), sollw(
klon), albpla(
klon)
 
  227   REAL,    
INTENT(out) :: sollwdown(
klon)
 
  232   REAL,    
INTENT(out) :: topswad_aero(
klon), solswad_aero(
klon)         
 
  233   REAL,    
INTENT(out) :: topswai_aero(
klon), solswai_aero(
klon)         
 
  234   REAL,    
INTENT(out) :: toplwad_aero(
klon), sollwad_aero(
klon)         
 
  235   REAL,    
INTENT(out) :: toplwai_aero(
klon), sollwai_aero(
klon)         
 
  236   REAL, 
DIMENSION(klon), 
INTENT(out)    :: topswad0_aero 
 
  237   REAL, 
DIMENSION(klon), 
INTENT(out)    :: solswad0_aero
 
  238   REAL, 
DIMENSION(klon), 
INTENT(out)    :: toplwad0_aero 
 
  239   REAL, 
DIMENSION(klon), 
INTENT(out)    :: sollwad0_aero
 
  240   REAL, 
DIMENSION(kdlon,9), 
INTENT(out) :: topsw_aero
 
  241   REAL, 
DIMENSION(kdlon,9), 
INTENT(out) :: topsw0_aero
 
  242   REAL, 
DIMENSION(kdlon,9), 
INTENT(out) :: solsw_aero
 
  243   REAL, 
DIMENSION(kdlon,9), 
INTENT(out) :: solsw0_aero
 
  244   REAL, 
DIMENSION(kdlon,3), 
INTENT(out) :: topswcf_aero
 
  245   REAL, 
DIMENSION(kdlon,3), 
INTENT(out) :: solswcf_aero
 
  246   REAL, 
DIMENSION(kdlon,kflev+1), 
INTENT(out) :: ZSWFT0_i
 
  247   REAL, 
DIMENSION(kdlon,kflev+1), 
INTENT(out) :: ZLWFT0_i
 
  258   REAL(KIND=8) zx_alpha1, zx_alpha2
 
  259   INTEGER k, kk, i, j, iof, nb_gr
 
  260   INTEGER ist,iend,ktdia,kmode
 
  265   REAL(KIND=8) PALBD_NEW(
kdlon,nsw), PALBP_NEW(
kdlon,nsw)
 
  283   REAL(KIND=8) zfract(
kdlon), zrmu0(
kdlon), zdist
 
  288   REAL(KIND=8) zsollwdown(
kdlon)
 
  291   REAL(KIND=8) zznormcp
 
  297   REAL(KIND=8) ztopswadaero(
kdlon), zsolswadaero(
kdlon)     
 
  298   REAL(KIND=8) ztopswad0aero(
kdlon), zsolswad0aero(
kdlon)   
 
  299   REAL(KIND=8) ztopswaiaero(
kdlon), zsolswaiaero(
kdlon)     
 
  301   REAL(KIND=8) ztoplwadaero(
kdlon), zsollwadaero(
kdlon)     
 
  302   REAL(KIND=8) ztoplwad0aero(
kdlon), zsollwad0aero(
kdlon)   
 
  303   REAL(KIND=8) ztoplwaiaero(
kdlon), zsollwaiaero(
kdlon)     
 
  305   REAL(KIND=8) ztopsw_aero(
kdlon,9), ztopsw0_aero(
kdlon,9)
 
  306   REAL(KIND=8) zsolsw_aero(
kdlon,9), zsolsw0_aero(
kdlon,9)
 
  307   REAL(KIND=8) ztopswcf_aero(
kdlon,3), zsolswcf_aero(
kdlon,3)     
 
  311       REAL(KIND=8) GEMU(
klon)
 
  317       REAL(KIND=8) ref_liq_pi_i(
klon,
klev) 
 
  318       REAL(KIND=8) ref_ice_pi_i(
klon,
klev) 
 
  323       REAL(KIND=8) POZON_i(
kdlon,
kflev, size(wo, 3)) 
 
  336       REAL(KIND=8) ZCTRSO(
klon,2)       
 
  337       REAL(KIND=8) ZCEMTR(
klon,2)     
 
  338       REAL(KIND=8) ZTRSOD(
klon)        
 
  339       REAL(KIND=8) ZLWFC (
klon,2)      
 
  341       REAL(KIND=8) ZSWFC (
klon,2)      
 
  344       REAL(KIND=8) PPIZA_TOT(
klon,
klev,nsw)
 
  345       REAL(KIND=8) PCGA_TOT(
klon,
klev,nsw)
 
  346       REAL(KIND=8) PTAU_TOT(
klon,
klev,nsw)
 
  347       REAL(KIND=8) PPIZA_NAT(
klon,
klev,nsw)
 
  348       REAL(KIND=8) PCGA_NAT(
klon,
klev,nsw)
 
  349       REAL(KIND=8) PTAU_NAT(
klon,
klev,nsw)
 
  354       REAL(KIND=8) PSFSWDIR(
klon,nsw)
 
  355       REAL(KIND=8) PSFSWDIF(
klon,nsw)
 
  356       REAL(KIND=8) PFSDNN(
klon)
 
  357       REAL(KIND=8) PFSDNV(
klon)
 
  362       REAL(KIND=8) ZFLUX_i (
klon,2,
klev+1)
 
  363       REAL(KIND=8) ZFLUC_i (
klon,2,
klev+1)
 
  372   real, 
parameter:: dobson_u = 2.1415e-05 
 
  373   CHARACTER (LEN=80) :: abort_message
 
  374   CHARACTER (LEN=80) :: modname=
'radlwsw_m' 
  376   call assert(
size(wo, 1) == 
klon, 
size(wo, 2) == 
klev, 
"radlwsw wo")
 
  391       print*, 
"kdlon mauvais:", 
klon, 
kdlon, nb_gr
 
  395       print*, 
"kflev differe de KLEV, kflev, KLEV" 
  410   psct = solaire/zdist/zdist
 
  414      if(ok_suntime) psct = solairetime/zdist/zdist
 
  415      print*,
'Constante solaire: ',psct*zdist*zdist
 
  422       zfract(i) = fract(iof+i)
 
  424       zrmu0(i) = rmu0(iof+i)
 
  444       if(iflag_rrtm==0)
then 
  447           palbd(i,1)=alb_dif(iof+i,1)
 
  448           palbd(i,2)=alb_dif(iof+i,2)
 
  449           palbp(i,1)=alb_dir(iof+i,1)
 
  450           palbp(i,2)=alb_dir(iof+i,2)
 
  452           palbd(i,1)=alb_dif(iof+i,1)
 
  453           palbd(i,2)=(alb_dif(iof+i,2)*sfrwl(2)+alb_dif(iof+i,3)*sfrwl(3) &
 
  454                  +alb_dif(iof+i,4)*sfrwl(4))/(sfrwl(2)+sfrwl(3)+sfrwl(4))
 
  455           palbp(i,1)=alb_dir(iof+i,1)
 
  456           palbp(i,2)=(alb_dir(iof+i,2)*sfrwl(2)+alb_dir(iof+i,3)*sfrwl(3) &
 
  457                  +alb_dir(iof+i,4)*sfrwl(4))/(sfrwl(2)+sfrwl(3)+sfrwl(4))
 
  459           palbd(i,1)=(alb_dif(iof+i,1)*sfrwl(1)+alb_dif(iof+i,2)*sfrwl(2) &
 
  460                  +alb_dif(iof+i,3)*sfrwl(3))/(sfrwl(1)+sfrwl(2)+sfrwl(3))
 
  461           palbd(i,2)=(alb_dif(iof+i,4)*sfrwl(4)+alb_dif(iof+i,5)*sfrwl(5) &
 
  462                  +alb_dif(iof+i,6)*sfrwl(6))/(sfrwl(4)+sfrwl(5)+sfrwl(6))
 
  463           palbp(i,1)=(alb_dir(iof+i,1)*sfrwl(1)+alb_dir(iof+i,2)*sfrwl(2)  &
 
  464                  +alb_dir(iof+i,3)*sfrwl(3))/(sfrwl(1)+sfrwl(2)+sfrwl(3))
 
  465           palbp(i,2)=(alb_dir(iof+i,4)*sfrwl(4)+alb_dir(iof+i,5)*sfrwl(5)  &
 
  466                  +alb_dir(iof+i,6)*sfrwl(6))/(sfrwl(4)+sfrwl(5)+sfrwl(6))
 
  468       elseif(iflag_rrtm==1)
then 
  470          palbd_new(i,kk)=alb_dif(iof+i,kk)
 
  471          palbp_new(i,kk)=alb_dir(iof+i,kk)
 
  481       ppsol(i) = paprs(iof+i,1)
 
  482       zx_alpha1 = (paprs(iof+i,1)-pplay(iof+i,2))/(pplay(iof+i,1)-pplay(iof+i,2))
 
  483       zx_alpha2 = 1.0 - zx_alpha1
 
  484       ptl(i,1) = t(iof+i,1) * zx_alpha1 + t(iof+i,2) * zx_alpha2
 
  486       pdt0(i) = tsol(iof+i) - ptl(i,1)
 
  490         ptl(i,k) = (t(iof+i,k)+t(iof+i,k-1))*0.5
 
  495         pdp(i,k) = paprs(iof+i,k)-paprs(iof+i,k+1)
 
  496         ptave(i,k) = t(iof+i,k)
 
  497         pwv(i,k) = max(q(iof+i,k), 1.0e-12)
 
  499         pozon(i,k, :) = wo(iof+i, k, :) * 
rg * dobson_u * 1e3 &
 
  500              / (paprs(iof+i, k) - paprs(iof+i, k+1))
 
  504         pcldld(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
 
  505         pcldlu(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
 
  506         pcldsw(i,k) = cldfra(iof+i,k)
 
  507         ptau(i,1,k) = max(cldtaupi(iof+i,k), 1.0e-05)
 
  508         ptau(i,2,k) = max(cldtaupi(iof+i,k), 1.0e-05)
 
  509         pomega(i,1,k) = 0.9999 - 5.0e-04 * exp(-0.5 * ptau(i,1,k))
 
  510         pomega(i,2,k) = 0.9988 - 2.5e-03 * exp(-0.05 * ptau(i,2,k))
 
  519         ptaua(i,1,k) = max(cldtaupd(iof+i,k), 1.0e-05)
 
  520         ptaua(i,2,k) = max(cldtaupd(iof+i,k), 1.0e-05)
 
  521         pomegaa(i,1,k) = 0.9999 - 5.0e-04 * exp(-0.5 * ptaua(i,1,k))
 
  522         pomegaa(i,2,k) = 0.9988 - 2.5e-03 * exp(-0.05 * ptaua(i,2,k))
 
  528        ndimozon = 
size(wo, 3)
 
  529        CALL rad_interactif(pozon,iof)
 
  536         ppmb(i,k) = paprs(iof+i,k)/100.0
 
  544           paer(i,k,kk) = 1.0e-15   
 
  550         tauaero(i,k,:,1)=tau_aero(iof+i,k,:,1)
 
  551         pizaero(i,k,:,1)=piz_aero(iof+i,k,:,1)
 
  552         cgaero(i,k,:,1) =cg_aero(iof+i,k,:,1)
 
  553         tauaero(i,k,:,2)=tau_aero(iof+i,k,:,2)
 
  554         pizaero(i,k,:,2)=piz_aero(iof+i,k,:,2)
 
  555         cgaero(i,k,:,2) =cg_aero(iof+i,k,:,2)
 
  562     IF (iflag_rrtm == 0) 
THEN        
  594             ptl, ptave, pwv, pozon(:, :, 1), paer,&
 
  598             ztoplw,zsollw,ztoplw0,zsollw0,&
 
  600             zflup, zfldn, zflup0,zfldn0)
 
  632        IF (.NOT. new_aod) 
THEN  
  636                ppsol, palbd, palbp,&
 
  637                ptave, pwv, pqs, pozon(:, :, 
size(wo, 3)), paer,&
 
  638                pcldsw, ptau, pomega, pcg,&
 
  640                zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,&
 
  641                zfsup,zfsdn,zfsup0,zfsdn0,&
 
  642                tauaero(:,:,5,:), pizaero(:,:,5,:), cgaero(:,:,5,:),& 
 
  644                ztopswadaero,zsolswadaero,&
 
  645                ztopswaiaero,zsolswaiaero,& 
 
  651                ppsol, palbd, palbp,&
 
  652                ptave, pwv, pqs, pozon(:, :, 
size(wo, 3)), paer,&
 
  653                pcldsw, ptau, pomega, pcg,&
 
  655                zalbpla,ztopsw,zsolsw,ztopsw0,zsolsw0,&
 
  656                zfsup,zfsdn,zfsup0,zfsdn0,&
 
  657                tauaero, pizaero, cgaero, &
 
  659                ztopswadaero,zsolswadaero,&
 
  660                ztopswad0aero,zsolswad0aero,&
 
  661                ztopswaiaero,zsolswaiaero, & 
 
  662                ztopsw_aero,ztopsw0_aero,&
 
  663                zsolsw_aero,zsolsw0_aero,&
 
  664                ztopswcf_aero,zsolswcf_aero, & 
 
  665                ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat) 
 
  674          lwdn0( iof+i,k)   = zfldn0( i,k)
 
  675          lwdn( iof+i,k)   = zfldn( i,k)
 
  676          lwup0( iof+i,k)   = zflup0( i,k)
 
  677          lwup( iof+i,k)   = zflup( i,k)
 
  678          swdn0( iof+i,k)   = zfsdn0( i,k)
 
  679          swdn( iof+i,k)   = zfsdn( i,k)
 
  680          swup0( iof+i,k)   = zfsup0( i,k)
 
  681          swup( iof+i,k)   = zfsup( i,k)
 
  722       ptau_tot(i,
kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,2,kk)
 
  723       ppiza_tot(i,
kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,2,kk)
 
  724       pcga_tot(i,
kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,2,kk)
 
  726       ptau_nat(i,
kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,1,kk)
 
  727       ppiza_nat(i,
kflev+1-k,kk)=piz_aero_sw_rrtm(i,k,1,kk)
 
  728       pcga_nat(i,
kflev+1-k,kk)=cg_aero_sw_rrtm(i,k,1,kk)
 
  743       ptau_lw_tot(i,
kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,2,kk)
 
  744       ptau_lw_nat(i,
kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,1,kk)
 
  771          paprs_i(:,1)=paprs(:,
klev+1)
 
  811          rii0=solaire/zdist/zdist
 
  843          palbd_new,palbp_new, paprs_i , pplay_i , rco2   , cldfra_i,&
 
  844          pozon_i  , paer_i  , pdp_i   , pemis   , rmu0   ,&
 
  845           q_i     , qsat_i  , fiwc_i  , flwc_i  , 
zmasq  , t_i  ,tsol,&
 
  846          ref_liq_i, ref_ice_i, &
 
  847          ref_liq_pi_i, ref_ice_pi_i, &   
 
  848          zemtd_i  , zemtu_i , ztrso_i ,&
 
  849          zth_i    , zctrso  , zcemtr  , ztrsod  ,&
 
  850          zlwfc    , zlwft_i , zswfc   , zswft_i ,&
 
  851          psfswdir , psfswdif, pfsdnn  , pfsdnv  ,&
 
  852          ppiza_tot, pcga_tot,ptau_tot,&
 
  853          ppiza_nat, pcga_nat,ptau_nat,           &  
 
  854          ptau_lw_tot, ptau_lw_nat,               &  
 
  856          zfsdwn_i , zfsup_i , zfcdwn_i, zfcup_i,&
 
  857          ztopswadaero,zsolswadaero,&  
 
  858          ztopswad0aero,zsolswad0aero,&
 
  859          ztopswaiaero,zsolswaiaero, &
 
  860          ztopswcf_aero,zsolswcf_aero, &
 
  861          ztoplwadaero,zsollwadaero,&  
 
  862          ztoplwad0aero,zsollwad0aero,&
 
  863          ztoplwaiaero,zsollwaiaero, &
 
  864          ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat) 
 
  925          zemtd(i,k+1)  = zemtd_i(i,k+1)
 
  926          zemtu(i,k+1)  = zemtu_i(i,k+1)
 
  927          ztrso(i,k+1)  = ztrso_i(i,k+1)
 
  928          zth(i,k+1)    = zth_i(i,k+1)
 
  931          zflup(i,k+1)  = zflux_i(i,1,k+1)
 
  932          zfldn(i,k+1)  = zflux_i(i,2,k+1)
 
  933          zflup0(i,k+1) = zfluc_i(i,1,k+1)
 
  934          zfldn0(i,k+1) = zfluc_i(i,2,k+1)
 
  935          zfsdn(i,k+1)  = zfsdwn_i(i,k+1)*fract(i)
 
  936          zfsdn0(i,k+1) = zfcdwn_i(i,k+1)*fract(i)
 
  937          zfsup(i,k+1) = zfsup_i(i,k+1)*fract(i)
 
  938          zfsup0(i,k+1) = zfcup_i(i,k+1)*fract(i)
 
  941          zswft(i,k+1)  = (zfsdwn_i(i,k+1)-zfsup_i(i,k+1))*fract(i)
 
  942          zswft0_i(i,k+1) = (zfcdwn_i(i,k+1)-zfcup_i(i,k+1))*fract(i)
 
  945          zlwft(i,k+1) =-zflux_i(i,2,k+1)-zflux_i(i,1,k+1)
 
  946          zlwft0_i(i,k+1)=-zfluc_i(i,2,k+1)-zfluc_i(i,1,k+1)
 
  953       ztopswadaero(:) =ztopswadaero(:) *fract(:)
 
  954       zsolswadaero(:) =zsolswadaero(:) *fract(:)
 
  955       ztopswad0aero(:)=ztopswad0aero(:)*fract(:)
 
  956       zsolswad0aero(:)=zsolswad0aero(:)*fract(:)
 
  957       ztopswaiaero(:) =ztopswaiaero(:) *fract(:)
 
  958       zsolswaiaero(:) =zsolswaiaero(:) *fract(:)
 
  959       ztopswcf_aero(:,1)=ztopswcf_aero(:,1)*fract(:) 
 
  960       ztopswcf_aero(:,2)=ztopswcf_aero(:,2)*fract(:) 
 
  961       ztopswcf_aero(:,3)=ztopswcf_aero(:,3)*fract(:) 
 
  962       zsolswcf_aero(:,1)=zsolswcf_aero(:,1)*fract(:)
 
  963       zsolswcf_aero(:,2)=zsolswcf_aero(:,2)*fract(:)
 
  964       zsolswcf_aero(:,3)=zsolswcf_aero(:,3)*fract(:)
 
  976          zsolsw(i)    = zswft(i,1)
 
  977          zsolsw0(i)   = zswft0_i(i,1)
 
  979          ztopsw(i)    = zswft(i,
klev+1)
 
  980          ztopsw0(i)   = zswft0_i(i,
klev+1)
 
  987          zsollw(i)    = zlwft(i,1)
 
  988          zsollw0(i)   = zlwft0_i(i,1)
 
  989          ztoplw(i)    = zlwft(i,
klev+1)*(-1)
 
  990          ztoplw0(i)   = zlwft0_i(i,
klev+1)*(-1)
 
  992            IF (fract(i) == 0.) 
THEN 
  997           zalbpla(i)   = zfsup(i,
klev+1)/zfsdn(i,
klev+1)
 
 1001          zsollwdown(i)= -1.*zfldn(i,1)
 
 1015            zheat(i,k)=(zswft(i,k+1)-zswft(i,k))*rday*
rg/rcpd/pdp(i,k)
 
 1016            zheat0(i,k)=(zswft0_i(i,k+1)-zswft0_i(i,k))*rday*
rg/rcpd/pdp(i,k)
 
 1017            zcool(i,k)=(zlwft(i,k)-zlwft(i,k+1))*rday*
rg/rcpd/pdp(i,k)
 
 1018            zcool0(i,k)=(zlwft0_i(i,k)-zlwft0_i(i,k+1))*rday*
rg/rcpd/pdp(i,k)
 
 1025     abort_message=
"You should compile with -rrtm if running with iflag_rrtm=1" 
 1032       topsw(iof+i) = ztopsw(i)
 
 1033       toplw(iof+i) = ztoplw(i)
 
 1034       solsw(iof+i) = zsolsw(i)
 
 1035       sollw(iof+i) = zsollw(i)
 
 1036       sollwdown(iof+i) = zsollwdown(i)
 
 1038         lwdn0( iof+i,k)   = zfldn0( i,k)
 
 1039         lwdn( iof+i,k)   = zfldn( i,k)
 
 1040         lwup0( iof+i,k)   = zflup0( i,k)
 
 1041         lwup( iof+i,k)   = zflup( i,k)
 
 1043       topsw0(iof+i) = ztopsw0(i)
 
 1044       toplw0(iof+i) = ztoplw0(i)
 
 1045       solsw0(iof+i) = zsolsw0(i)
 
 1046       sollw0(iof+i) = zsollw0(i)
 
 1047       albpla(iof+i) = zalbpla(i)
 
 1050         swdn0( iof+i,k)   = zfsdn0( i,k)
 
 1051         swdn( iof+i,k)   = zfsdn( i,k)
 
 1052         swup0( iof+i,k)   = zfsup0( i,k)
 
 1053         swup( iof+i,k)   = zfsup( i,k)
 
 1060           topswad_aero(iof+i) = ztopswadaero(i)
 
 1061           topswad0_aero(iof+i) = ztopswad0aero(i)
 
 1062           solswad_aero(iof+i) = zsolswadaero(i)
 
 1063           solswad0_aero(iof+i) = zsolswad0aero(i)
 
 1069           topsw_aero(iof+i,:) = ztopsw_aero(i,:)
 
 1070           topsw0_aero(iof+i,:) = ztopsw0_aero(i,:)
 
 1071           solsw_aero(iof+i,:) = zsolsw_aero(i,:)
 
 1072           solsw0_aero(iof+i,:) = zsolsw0_aero(i,:)
 
 1073           topswcf_aero(iof+i,:) = ztopswcf_aero(i,:)
 
 1074           solswcf_aero(iof+i,:) = zsolswcf_aero(i,:)   
 
 1076           toplwad_aero(iof+i) = ztoplwadaero(i)
 
 1077           toplwad0_aero(iof+i) = ztoplwad0aero(i)
 
 1078           sollwad_aero(iof+i) = zsollwadaero(i)
 
 1079           sollwad0_aero(iof+i) = zsollwad0aero(i)    
 
 1083           topswad_aero(iof+i) = 0.0
 
 1084           solswad_aero(iof+i) = 0.0
 
 1085           topswad0_aero(iof+i) = 0.0
 
 1086           solswad0_aero(iof+i) = 0.0
 
 1087           topsw_aero(iof+i,:) = 0.
 
 1088           topsw0_aero(iof+i,:) =0.
 
 1089           solsw_aero(iof+i,:) = 0.
 
 1090           solsw0_aero(iof+i,:) = 0.
 
 1092           toplwad_aero(iof+i) = 0.0
 
 1093           sollwad_aero(iof+i) = 0.0
 
 1094           toplwad0_aero(iof+i) = 0.0
 
 1095           sollwad0_aero(iof+i) = 0.0
 
 1100           topswai_aero(iof+i) = ztopswaiaero(i)
 
 1101           solswai_aero(iof+i) = zsolswaiaero(i)
 
 1103           toplwai_aero(iof+i) = ztoplwaiaero(i)
 
 1104           sollwai_aero(iof+i) = zsollwaiaero(i)
 
 1108           topswai_aero(iof+i) = 0.0
 
 1109           solswai_aero(iof+i) = 0.0
 
 1111           toplwai_aero(iof+i) = 0.0
 
 1112           sollwai_aero(iof+i) = 0.0
 
 1119         zznormcp=1.0+rvtmp2*pwv(i,k)
 
 1120         heat(iof+i,k) = zheat(i,k)/zznormcp
 
 1121         cool(iof+i,k) = zcool(i,k)/zznormcp
 
 1122         heat0(iof+i,k) = zheat0(i,k)/zznormcp
 
 1123         cool0(iof+i,k) = zcool0(i,k)/zznormcp
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le & swdn0
 
real(kind=jprb), dimension(6) rebcua
 
real(kind=jprb), dimension(6) ryfwcb
 
real(kind=jprb), dimension(6) ryfwcc
 
real(kind=jprb), dimension(16, 3) rfueta
 
real(kind=jprb), dimension(6) ryfwcd
 
real(kind=jprb), dimension(6) rflbb2
 
real(kind=jprb), dimension(6) rflbb1
 
real(kind=jprb), dimension(6) raswce
 
real(kind=jprb), dimension(6) rflcc3
 
real(kind=jprb), dimension(6) rflbb3
 
real(kind=jprb), dimension(6) rebcuc
 
real(kind=jprb), dimension(6) raswcb
 
real(kind=jprb), dimension(6) rebcuf
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le SWdn200clr CALL SWup200clr CALL LWdn200clr CALL & lwup0
 
subroutine lw_lmdar4(ppmb, pdp, ppsol, pdt0, pemis, ptl, ptave, pwv, pozon,paer, pcldld, pcldlu, pview, pcolr, pcolr0, ptoplw, psollw, ptoplw0,psollw0, psollwdown,
 
subroutine radlwsw(dist, rmu0, fract,
 
real(kind=jprb), dimension(6) ryfwcf
 
real(kind=jprb), dimension(6) rflcc1
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le SWdn200clr CALL SWup200clr CALL & lwdn0
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
 
real(kind=jprb), dimension(6) rebcud
 
real(kind=jprb), dimension(6) rfldd3
 
real(kind=jprb), dimension(6, 6) xp
 
integer, parameter nbands_lw_rrtm
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le SWdn200clr CALL & swup0
 
real(kind=jprb), dimension(16) rebcuh
 
real(kind=jprb), dimension(16) rebcug
 
integer(kind=jpim) nliqopt
 
real, dimension(:), allocatable, save zmasq
 
real(kind=jprb), dimension(6) ryfwca
 
real(kind=jprb), dimension(16, 3) rhsavi
 
real(kind=jprb), dimension(6) rebcub
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL pplay
 
real(kind=jprb), dimension(6) rflcc0
 
real(kind=jprb), dimension(6) ryfwce
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
 
subroutine qsat(dq, q, e, p, t, r)
 
real(kind=jprb), dimension(6) rfldd2
 
real(kind=jprb), dimension(6) rebcuj
 
subroutine recmwf_aero(KST, KEND, KPROMA, KTDIA, KLEV, KMODE, PALBD, PALBP, PAPRS, PAPRSF, PCCO2, PCLFR, PQO3, PAER, PDP, PEMIS, PMU0, PQ, PQS, PQIWP, PQLWP, PSLM, PT, PTS, PREF_LIQ, PREF_ICE,
 
subroutine sw_lmdar4(psct, prmu0, pfrac, ppmb, pdp, ppsol, palbd, palbp, ptave, pwv, pqs, pozon, paer, pcldsw, ptau, pomega, pcg, pheat, pheat0, palbpla, ptopsw, psolsw, ptopsw0, psolsw0, zfsup, zfsdn, zfsup0, zfsdn0, tauae, pizae, cgae, ptaua, pomegaa, ptopswad, psolswad, ptopswai, psolswai, ok_ade, ok_aie)
 
integer(kind=jpim) niceopt
 
real(kind=jprb), dimension(6) rfldd1
 
real(kind=jprb), dimension(181, 16) totplnk
 
integer(kind=jpim) nradlp
 
real(kind=jprb), dimension(6) rflaa1
 
subroutine writefield_phy(name, Field, ll)
 
real(kind=jprb), dimension(6) raswcc
 
character(len=4), save type_trac
 
real(kind=jprb), dimension(16, 3) rfulio
 
real(kind=jprb), dimension(6) rflbb0
 
real(kind=jprb), dimension(16) delwave
 
subroutine abort_physic(modname, message, ierr)
 
integer(kind=jpim) ntraer
 
integer(kind=jpim) nradip
 
subroutine sw_aeroar4(PSCT, PRMU0, PFRAC, PPMB, PDP, PPSOL, PALBD, PALBP, PTAVE, PWV, PQS, POZON, PAER, PCLDSW, PTAU, POMEGA, PCG, PHEAT, PHEAT0, PALBPLA, PTOPSW, PSOLSW, PTOPSW0, PSOLSW0, ZFSUP, ZFSDN, ZFSUP0, ZFSDN0, tauaero, pizaero, cgaero, PTAUA, POMEGAA, PTOPSWADAERO, PSOLSWADAERO, PTOPSWAD0AERO, PSOLSWAD0AERO, PTOPSWAIAERO, PSOLSWAIAERO, PTOPSWAERO, PTOPSW0AERO, PSOLSWAERO, PSOLSW0AERO, PTOPSWCFAERO, PSOLSWCFAERO, ok_ade, ok_aie, flag_aerosol, flag_aerosol_strat)
 
real(kind=jprb), dimension(6) raswcf
 
real(kind=jprb), dimension(6) rfldd0
 
integer, parameter naero_grp
 
real(kind=jprb), dimension(6) rebcue
 
real(kind=jprb), dimension(6) rflcc2
 
real(kind=jprb), dimension(6) rflaa0
 
real(kind=jprb), dimension(6) raswcd
 
real(kind=jprb), dimension(6) raswca
 
real(kind=jprb), dimension(6) rebcui