4  &, 
paprs , pgelam, psin  , pclon, pslon , 
pth &
 
   67 USE yoeozoc  , ONLY : cozqc    ,cozqs    ,cozhc    ,cozhs
 
   69 USE yoeaerc  , ONLY : rsinct   ,rsincv   ,repaer   ,&
 
   70             &rtaebc  ,rtaeor   ,rtaesd   ,rtaess   ,rtaesu   , &
 
   84 integer_m :: kcf, krint, kshift
 
   86 integer_m :: kcp__radaca
 
   87 integer_m :: kdim_radaca
 
  103 integer_m :: iinla1(
klon), iinla2(
klon)
 
  104 integer_m :: iinlo1(
klon), iinlo2(
klon)
 
  117 real_b :: zfaed(21)    , zfael(21)    , zfaes(21)    , zfaeu(21)
 
  118 real_b :: zfozq(11)    , zfozh(11)
 
  119 real_b :: zgrth(
klon)
 
  120 real_b :: zlon(
klon)  , zlonr(72)    , znlo1(
klon) , znlo2(
klon)
 
  124 real_b :: zsilat(
klon), zsinr(46)
 
  127 integer_m :: il, imm, imnc, imns, inla, inla1, inla2, inlo1, inlo2, &
 
  128           &itotpt, jk, jl, jlr, jmm, &
 
  129           &jnn, nlatr, nlonr, jaer, jend, jil, jjl, iprint, itot
 
  132 real_b :: zaetr, zcos1, zcos10, zcos2, zcos3, zcos4,&
 
  133           &zcos5, zcos6, zcos7, zcos8, zcos9, zcphn3, &
 
  134           &zcpho3, zdpnmo, zgridr, zlatr, zsdpn3, zsdpo3, &
 
  135           &zsin, zsin1, zsin10, zsin2, zsin3, zsin4, &
 
  136           &zsin5, zsin6, zsin7, zsin8, zsin9
 
  137 real_b :: zaerbc1, zaerbc2, zaeror1, zaeror2, zaersd1, zaersd2, &
 
  138           &zaerss1, zaerss2, zaersu1, zaersu2
 
  159   zgridr=180._jprb/(nlatr-1)
 
  161     zlatr=90._jprb-(jlr-1)*zgridr
 
  162     zsinr(jlr)=sin(zlatr*
rpi/180._jprb)
 
  169     zsilat(il)=-9999._jprb
 
  172       IF (zsin <= zsinr(jlr) .AND. zsin > zsinr(jlr+1)) 
THEN 
  174         zsilat(il)=(zsin-zsinr(inla))/(zsinr(inla+1)-zsinr(inla))
 
  175         zaervo(il)=rtaevo(inla)+zsilat(il)*(rtaevo(inla+1)-rtaevo(inla))
 
  178     IF (zsin <= zsinr(nlatr-1) .AND. zsin >= zsinr(nlatr))
THEN 
  180       zsilat(il)=(zsin-zsinr(inla-1))/(zsinr(inla)-zsinr(inla-1))
 
  181       zaervo(il)=rtaevo(inla-1)&
 
  182        &+zsilat(il)*(rtaevo(inla)-rtaevo(inla-1))
 
  186       stop 
' Problem with lat. interpolation in radaca!' 
  212 9001    
format(1
x,
'RADACA ',1
x,i5,1
x,2e15.8)
 
  217   zgridr=180._jprb/(nlatr-1)
 
  219     zlatr=90._jprb-(jlr-1)*zgridr
 
  220     zsinr(jlr)=sin(zlatr*
rpi/180._jprb)
 
  223   zdlonr=2._jprb*
rpi/nlonr
 
  225     zlonr(jlr)=(jlr-1)*zdlonr
 
  230 9121     
format(1
x,
'ZSINR ',8e15.7)
 
  232 9122     
format(1
x,
'ZLONR ',8e15.7)
 
  239     zsilat(il)=-9999._jprb
 
  242       IF (zsin <= zsinr(jlr) .AND. zsin > zsinr(jlr+1)) 
THEN 
  246         zsilat(il)=(zsin-zsinr(inla))/(zsinr(inla+1)-zsinr(inla))
 
  249     IF (zsin <= zsinr(nlatr-1) .AND. zsin >= zsinr(nlatr))
THEN 
  253       zsilat(il)=(zsin-zsinr(inla-1))/(zsinr(inla)-zsinr(inla-1))
 
  257       stop 
' Problem with lat. interpolation in radaca!' 
  260 9123     
format(1
x,
'Interp.Latit.',2i4,f10.7,i4,2f10.7)          
 
  271       IF (pgelam(jl) < zlonr(jlr+1) .AND. pgelam(jl) >= zlonr(jlr)) &
 
  276         znlo2(il)=zlonr(jlr+1)
 
  279     IF (pgelam(jl) >= zlonr(72)) 
THEN 
  284       znlo2(il)=zlonr(72)+zdlonr
 
  294     IF (iinlo1(il).EQ.0 .OR. iinlo2(il).EQ.0) 
THEN  
  296       stop 
' Problem with long. interpolation in radaca!' 
  298     zlon(il)=(pgelam(jl)-znlo1(il))/(znlo2(il)-znlo1(il))
 
  304     zaerbc1=rtaebc(inlo1,inla1) &
 
  305      &      +zsilat(il)*(rtaebc(inlo1,inla2)-rtaebc(inlo1,inla1))  
 
  306     zaerbc2=rtaebc(inlo2,inla1) &
 
  307      &      +zsilat(il)*(rtaebc(inlo2,inla2)-rtaebc(inlo2,inla1))  
 
  308     zaerbc(il)=zaerbc1+zlon(il)*(zaerbc2-zaerbc1)
 
  310     zaeror1=rtaeor(inlo1,inla1) &
 
  311      &      +zsilat(il)*(rtaeor(inlo1,inla2)-rtaeor(inlo1,inla1))  
 
  312     zaeror2=rtaeor(inlo2,inla1) &
 
  313      &      +zsilat(il)*(rtaeor(inlo2,inla2)-rtaeor(inlo2,inla1))  
 
  314     zaeror(il)=zaeror1+zlon(il)*(zaeror2-zaeror1)
 
  316     zaersd1=rtaesd(inlo1,inla1) &
 
  317      &      +zsilat(il)*(rtaesd(inlo1,inla2)-rtaesd(inlo1,inla1))  
 
  318     zaersd2=rtaesd(inlo2,inla1) &
 
  319      &      +zsilat(il)*(rtaesd(inlo2,inla2)-rtaesd(inlo2,inla1))  
 
  320     zaersd(il)=zaersd1+zlon(il)*(zaersd2-zaersd1)
 
  322     zaerss1=rtaess(inlo1,inla1) &
 
  323      &      +zsilat(il)*(rtaess(inlo1,inla2)-rtaess(inlo1,inla1))  
 
  324     zaerss2=rtaess(inlo2,inla1) &
 
  325      &      +zsilat(il)*(rtaess(inlo2,inla2)-rtaess(inlo2,inla1))  
 
  326     zaerss(il)=zaerss1+zlon(il)*(zaerss2-zaerss1)
 
  328     zaersu1=rtaesu(inlo1,inla1) &
 
  329      &      +zsilat(il)*(rtaesu(inlo1,inla2)-rtaesu(inlo1,inla1))  
 
  330     zaersu2=rtaesu(inlo2,inla1) &
 
  331      &      +zsilat(il)*(rtaesu(inlo2,inla2)-rtaesu(inlo2,inla1))  
 
  332     zaersu(il)=zaersu1+zlon(il)*(zaersu2-zaersu1)
 
  360 CALL legtri (zsin,kcp__radaca,kdim_radaca,zalp)
 
  377     zfozq(imm)=zfozq(imm)+zalp(imnc)*cozqc(imnc)
 
  378     zfozh(imm)=zfozh(imm)+zalp(imnc)*cozhc(imnc)
 
  384       zfozq(imm)=zfozq(imm)+zalp(imns+6)*cozqs(imns)
 
  385       zfozh(imm)=zfozh(imm)+zalp(imns+6)*cozhs(imns)
 
  398   zcos2=zcos1*zcos1-zsin1*zsin1
 
  399   zsin2=zsin1*zcos1+zcos1*zsin1
 
  400   zcos3=zcos2*zcos1-zsin2*zsin1
 
  401   zsin3=zsin2*zcos1+zcos2*zsin1
 
  402   zcos4=zcos3*zcos1-zsin3*zsin1
 
  403   zsin4=zsin3*zcos1+zcos3*zsin1
 
  404   zcos5=zcos4*zcos1-zsin4*zsin1
 
  405   zsin5=zsin4*zcos1+zcos4*zsin1
 
  407    &zfozq(1)+_two_*(zfozq(2)*zcos1+zfozq(3)*zsin1+zfozq(4)*zcos2 &
 
  408    &+zfozq(5)*zsin2+zfozq(6)*zcos3+zfozq(7)*zsin3+zfozq(8)&
 
  409    &*zcos4+zfozq(9)*zsin4+zfozq(10)*zcos5+zfozq(11)*zsin5)
 
  411    &zfozh(1)+_two_*(zfozh(2)*zcos1+zfozh(3)*zsin1+zfozh(4)*zcos2 &
 
  412    &+zfozh(5)*zsin2+zfozh(6)*zcos3+zfozh(7)*zsin3+zfozh(8)&
 
  413    &*zcos4+zfozh(9)*zsin4+zfozh(10)*zcos5+zfozh(11)*zsin5)
 
  414   zozh(il)=sqrt(zozh(il))**3
 
  427 CALL legtri (zsin,kcp__radaca,kdim_radaca,zalp)
 
  446     zfaes(imm) = zfaes(imm)+zalp(imnc)*
raesc(imnc)
 
  447     zfael(imm) = zfael(imm)+zalp(imnc)*
raelc(imnc)
 
  448     zfaeu(imm) = zfaeu(imm)+zalp(imnc)*
raeuc(imnc)
 
  449     zfaed(imm) = zfaed(imm)+zalp(imnc)*
raedc(imnc)
 
  455       zfaes(imm) = zfaes(imm)+zalp(imns+11)*
raess(imns)
 
  456       zfael(imm) = zfael(imm)+zalp(imns+11)*
raels(imns)
 
  457       zfaeu(imm) = zfaeu(imm)+zalp(imns+11)*
raeus(imns)
 
  458       zfaed(imm) = zfaed(imm)+zalp(imns+11)*
raeds(imns)
 
  471   zcos2    = zcos1*zcos1-zsin1*zsin1
 
  472   zsin2    = zsin1*zcos1+zcos1*zsin1
 
  473   zcos3    = zcos2*zcos1-zsin2*zsin1
 
  474   zsin3    = zsin2*zcos1+zcos2*zsin1
 
  475   zcos4    = zcos3*zcos1-zsin3*zsin1
 
  476   zsin4    = zsin3*zcos1+zcos3*zsin1
 
  477   zcos5    = zcos4*zcos1-zsin4*zsin1
 
  478   zsin5    = zsin4*zcos1+zcos4*zsin1
 
  479   zcos6    = zcos5*zcos1-zsin5*zsin1
 
  480   zsin6    = zsin5*zcos1+zcos5*zsin1
 
  481   zcos7    = zcos6*zcos1-zsin6*zsin1
 
  482   zsin7    = zsin6*zcos1+zcos6*zsin1
 
  483   zcos8    = zcos7*zcos1-zsin7*zsin1
 
  484   zsin8    = zsin7*zcos1+zcos7*zsin1
 
  485   zcos9    = zcos8*zcos1-zsin8*zsin1
 
  486   zsin9    = zsin8*zcos1+zcos8*zsin1
 
  487   zcos10   = zcos9*zcos1-zsin9*zsin1
 
  488   zsin10   = zsin9*zcos1+zcos9*zsin1
 
  489   zaes(il) = zfaes(1) + _two_*&
 
  490    &( zfaes(2)*zcos1  + zfaes(3)*zsin1  + zfaes(4)*zcos2 &
 
  491    &+ zfaes(5)*zsin2  + zfaes(6)*zcos3  + zfaes(7)*zsin3 &
 
  492    &+ zfaes(8)*zcos4  + zfaes(9)*zsin4  + zfaes(10)*zcos5 &
 
  493    &+ zfaes(11)*zsin5 + zfaes(12)*zcos6 + zfaes(13)*zsin6 &
 
  494    &+ zfaes(14)*zcos7 + zfaes(15)*zsin7 + zfaes(16)*zcos8 &
 
  495    &+ zfaes(17)*zsin8 + zfaes(18)*zcos9 + zfaes(19)*zsin9 &
 
  496    &+ zfaes(20)*zcos10+ zfaes(21)*zsin10                 )
 
  497   zael(il) = zfael(1) + _two_*&
 
  498    &( zfael(2)*zcos1  + zfael(3)*zsin1  + zfael(4)*zcos2 &
 
  499    &+ zfael(5)*zsin2  + zfael(6)*zcos3  + zfael(7)*zsin3 &
 
  500    &+ zfael(8)*zcos4  + zfael(9)*zsin4  + zfael(10)*zcos5 &
 
  501    &+ zfael(11)*zsin5 + zfael(12)*zcos6 + zfael(13)*zsin6 &
 
  502    &+ zfael(14)*zcos7 + zfael(15)*zsin7 + zfael(16)*zcos8 &
 
  503    &+ zfael(17)*zsin8 + zfael(18)*zcos9 + zfael(19)*zsin9 &
 
  504    &+ zfael(20)*zcos10+ zfael(21)*zsin10                 )
 
  505   zaeu(il) = zfaeu(1) + _two_*&
 
  506    &( zfaeu(2)*zcos1  + zfaeu(3)*zsin1  + zfaeu(4)*zcos2 &
 
  507    &+ zfaeu(5)*zsin2  + zfaeu(6)*zcos3  + zfaeu(7)*zsin3 &
 
  508    &+ zfaeu(8)*zcos4  + zfaeu(9)*zsin4  + zfaeu(10)*zcos5 &
 
  509    &+ zfaeu(11)*zsin5 + zfaeu(12)*zcos6 + zfaeu(13)*zsin6 &
 
  510    &+ zfaeu(14)*zcos7 + zfaeu(15)*zsin7 + zfaeu(16)*zcos8 &
 
  511    &+ zfaeu(17)*zsin8 + zfaeu(18)*zcos9 + zfaeu(19)*zsin9 &
 
  512    &+ zfaeu(20)*zcos10+ zfaeu(21)*zsin10                 )
 
  513   zaed(il) = zfaed(1) + _two_*&
 
  514    &( zfaed(2)*zcos1  + zfaed(3)*zsin1  + zfaed(4)*zcos2 &
 
  515    &+ zfaed(5)*zsin2  + zfaed(6)*zcos3  + zfaed(7)*zsin3 &
 
  516    &+ zfaed(8)*zcos4  + zfaed(9)*zsin4  + zfaed(10)*zcos5 &
 
  517    &+ zfaed(11)*zsin5 + zfaed(12)*zcos6 + zfaed(13)*zsin6 &
 
  518    &+ zfaed(14)*zcos7 + zfaed(15)*zsin7 + zfaed(16)*zcos8 &
 
  519    &+ zfaed(17)*zsin8 + zfaed(18)*zcos9 + zfaed(19)*zsin9 &
 
  520    &+ zfaed(20)*zcos10+ zfaed(21)*zsin10                 )
 
  534   zcpho3=
paprs(jl,1)**3
 
  537     zaeqso(il)= zaerss(il)*
cvdaes(1)
 
  538     zaeqlo(il)=(zaeror(il)+zaersu(il))*
cvdael(1)
 
  539     zaequo(il)= zaerbc(il)*
cvdaeu(1)
 
  540     zaeqdo(il)= zaersd(il)*
cvdaed(1)
 
  548   zqofo(il)=zozq(il)*zsdpo3 / (zsdpo3 + zozh(il))
 
  556       zgrth(il)= 
pth(jl,jk)/
pth(jl,jk+1)
 
  558   ELSEIF (kcf == 1) 
THEN 
  561       zgrth(il)= 
pth(il,jk)/
pth(il,jk+1)
 
  568     zdpn(il)=
paprs(jl,jk+1)
 
  569     zcphn3=
paprs(jl,jk+1)**3
 
  572       zaeqsn(il)= zaerss(il)*
cvdaes(jk+1)
 
  573       zaeqln(il)=(zaeror(il)+zaersu(il))*
cvdael(jk+1)
 
  574       zaequn(il)= zaerbc(il)*
cvdaeu(jk+1)
 
  575       zaeqdn(il)= zaersd(il)*
cvdaed(jk+1)
 
  583     IF (_half_*(
paprs(jl,jk)+
paprs(jl,jk+1)) < 999._jprb) 
THEN 
  588       zaetrn(il)=zaetro(il)*(min(_one_,     zgrth(il)         ))**
rctrpt 
  591     zaetr=sqrt(zaetrn(il)*zaetro(il))
 
  592     zqofn(il)=zozq(il)*zsdpn3/(zsdpn3+zozh(il))
 
  593     zdpnmo    =zdpn(il)-zdpo(il)
 
  594     paer(il,1,jk)=(_one_-zaetr)*(
rctrbga*zdpnmo+ zaeqln(il)-zaeqlo(il))
 
  595     paer(il,2,jk)=(_one_-zaetr)*(zaeqsn(il)-zaeqso(il))
 
  596     paer(il,3,jk)=(_one_-zaetr)*(zaeqdn(il)-zaeqdo(il))
 
  597     paer(il,4,jk)=(_one_-zaetr)*(zaequn(il)-zaequo(il))
 
  599     paer(il,5,jk)=   zaetr  * zaervo(il) * zdpnmo
 
  604     pozon(il,jk)=zqofn(il)-zqofo(il)
 
  614     zaeqso(il)=zaeqsn(il)
 
  615     zaeqlo(il)=zaeqln(il)
 
  616     zaequo(il)=zaequn(il)
 
  617     zaeqdo(il)=zaeqdn(il)
 
  618     zaetro(il)=zaetrn(il)
 
  627       paer(il,jaer,jk)=max(
paer(il,jaer,jk),repaer)
 
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
 
!$Id mode_top_bound COMMON comconstr r
 
real(kind=jprb), dimension(66) raelc
 
real(kind=jprb), dimension(66) raedc
 
real(kind=jprb), dimension(55) raeus
 
real(kind=jprb), dimension(66) raeuc
 
real(kind=jprb), dimension(55) raess
 
real(kind=jprb), dimension(:), allocatable cvdaes
 
real(kind=jprb), dimension(:), allocatable cvdael
 
real(kind=jprb), dimension(:), allocatable cvdaed
 
!$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 radaca(KIDIA, KFDIA, KLON, KTDIA, KLEV, PAPRS, PGELAM, PSIN, PCLON, PSLON, PTH, PAER, POZON)
 
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
 
real(kind=jprb), dimension(66) raesc
 
subroutine legtri(PSIN, KCP, KDIM, PALP)
 
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
 
real(kind=jprb), dimension(:), allocatable cvdaeu
 
real(kind=jprb), dimension(55) raeds
 
real(kind=jprb), dimension(55) raels