3 &
paer , palbd , palbp, pcg , pcld , pclear,&
4 & pdsig , pomega, poz , prmu , psec , ptau , pud,&
5 & pfd , pfu , pcd , pcu , psudu1,pdiff , pdirf, &
7 & lrdust,ppiza_dst,pcga_dst,ptaurel_dst &
80 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
81 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
82 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
83 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
84 INTEGER(KIND=JPIM),
INTENT(IN) :: KAER
85 INTEGER(KIND=JPIM),
INTENT(IN) :: KNU
86 REAL(KIND=JPRB) ,
INTENT(IN) :: PAER(klon,6,klev)
87 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBD(klon,nsw)
88 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBP(klon,nsw)
89 REAL(KIND=JPRB) ,
INTENT(IN) :: PCG(klon,nsw,klev)
90 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLD(klon,klev)
91 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLEAR(klon)
92 REAL(KIND=JPRB) ,
INTENT(IN) :: PDSIG(klon,klev)
93 REAL(KIND=JPRB) ,
INTENT(IN) :: POMEGA(klon,nsw,klev)
94 REAL(KIND=JPRB) ,
INTENT(IN) :: POZ(klon,klev)
95 REAL(KIND=JPRB) ,
INTENT(IN) :: PRMU(klon)
96 REAL(KIND=JPRB) ,
INTENT(IN) :: PSEC(klon)
97 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU(klon,nsw,klev)
98 REAL(KIND=JPRB) ,
INTENT(IN) :: PUD(klon,5,klev+1)
100 LOGICAL ,
INTENT(IN) :: LRDUST
101 REAL(KIND=JPRB) ,
INTENT(IN) :: PPIZA_DST(klon,klev)
102 REAL(KIND=JPRB) ,
INTENT(IN) :: PCGA_DST(klon,klev)
103 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAUREL_DST(klon,klev)
105 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFD(klon,klev+1)
106 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFU(klon,klev+1)
107 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCD(klon,klev+1)
108 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCU(klon,klev+1)
109 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSUDU1(klon)
110 REAL(KIND=JPRB) ,
INTENT(OUT) :: PDIFF(klon,klev)
111 REAL(KIND=JPRB) ,
INTENT(OUT) :: PDIRF(klon,klev)
121 INTEGER(KIND=JPIM) :: IIND(6)
123 REAL(KIND=JPRB) :: ZCGAZ(klon,klev)&
124 & , ZDIFF(KLON) , ZDIRF(KLON) &
125 & , ZDIFT(KLON) , ZDIRT(KLON) &
126 & , ZPIZAZ(KLON,KLEV)&
127 & , ZRAYL(KLON), ZRAY1(KLON,KLEV+1), ZRAY2(KLON,KLEV+1)&
128 & , ZREFZ(KLON,2,KLEV+1)&
129 & , ZRJ(KLON,6,KLEV+1), ZRJ0(KLON,6,KLEV+1)&
130 & , ZRK(KLON,6,KLEV+1), ZRK0(KLON,6,KLEV+1)&
131 & , ZRMUE(KLON,KLEV+1), ZRMU0(KLON,KLEV+1)&
133 & , ZTAUAZ(KLON,KLEV)&
134 & , ZTRA1(KLON,KLEV+1), ZTRA2(KLON,KLEV+1)&
135 & , ZTRCLD(KLON) , ZTRCLR(KLON)&
136 & , ZW(KLON,6) , ZO(KLON,2) ,ZT(KLON,2)
138 INTEGER(KIND=JPIM) :: IKL, IKM1, JAJ, JK, JL , JJ
139 REAL(KIND=JPRB) :: ZHOOK_HANDLE
142 #include "swclr.intfb.h"
143 #include "swr.intfb.h"
144 #include "swtt1.intfb.h"
145 #include "swuvo3.intfb.h"
158 zrayl(jl) =
rray(knu,1) + prmu(jl) * (
rray(knu,2) + prmu(jl)&
159 & * (
rray(knu,3) + prmu(jl) * (
rray(knu,4) + prmu(jl)&
160 & * (
rray(knu,5) + prmu(jl) *
rray(knu,6) ))))
172 &( kidia , kfdia , klon , klev , kaer , knu &
173 &, paer , palbp , pdsig , zrayl, psec &
174 &, zcgaz , zpizaz, zray1 , zray2, zrefz, zrj0 &
175 &, zrk0 , zrmu0 , ztauaz, ztra1, ztra2, ztrclr &
176 &, lrdust , ppiza_dst,pcga_dst &
185 & ( kidia ,kfdia ,klon ,klev , knu,&
186 & palbd ,pcg ,pcld ,pomega, psec , ptau,&
187 & zcgaz ,zpizaz,zray1 ,zray2 , zrefz, zrj ,zrk , zrmue,&
188 & ztauaz,ztra1 ,ztra2 ,ztrcld &
226 pfd(jl,klev+1)=((1.0_jprb-pclear(jl))*zrj(jl,jaj,klev+1)&
227 & + pclear(jl) *zrj0(jl,jaj,klev+1)) *
rsun(knu)
228 pcd(jl,klev+1)= zrj0(jl,jaj,klev+1) *
rsun(knu)
233 zw(jl,1)=zw(jl,1)+pud(jl,1,ikl)/zrmue(jl,ikl)
234 zw(jl,2)=zw(jl,2)+pud(jl,2,ikl)/zrmue(jl,ikl)
235 zw(jl,3)=zw(jl,3)+poz(jl, ikl)/zrmue(jl,ikl)
236 zw(jl,4)=zw(jl,4)+pud(jl,1,ikl)/zrmu0(jl,ikl)
237 zw(jl,5)=zw(jl,5)+pud(jl,2,ikl)/zrmu0(jl,ikl)
238 zw(jl,6)=zw(jl,6)+poz(jl, ikl)/zrmu0(jl,ikl)
241 CALL swtt1 ( kidia, kfdia, klon, knu, 6,&
247 zdiff(jl) = zr(jl,1)*zr(jl,2)*zr(jl,3)*zrj(jl,jaj,ikl)
248 zdirf(jl) = zr(jl,4)*zr(jl,5)*zr(jl,6)*zrj0(jl,jaj,ikl)
249 pdiff(jl,ikl) = zdiff(jl) *
rsun(knu)*(1.0_jprb-pclear(jl))
250 pdirf(jl,ikl) = zdirf(jl) *
rsun(knu)*pclear(jl)
251 pfd(jl,ikl) = ((1.0_jprb-pclear(jl)) * zdiff(jl)&
252 & +pclear(jl) * zdirf(jl)) *
rsun(knu)
253 pcd(jl,ikl) = zdirf(jl) *
rsun(knu)
258 zdift(jl) = zr(jl,1)*zr(jl,2)*zr(jl,3)*ztrcld(jl)
259 zdirt(jl) = zr(jl,4)*zr(jl,5)*zr(jl,6)*ztrclr(jl)
260 psudu1(jl) = ((1.0_jprb-pclear(jl)) * zdift(jl)&
261 & +pclear(jl) * zdirt(jl)) *
rsun(knu)
268 pfu(jl,1) = ((1.0_jprb-pclear(jl))*zdiff(jl)*palbd(jl,knu)&
269 & + pclear(jl) *zdirf(jl)*palbp(jl,knu))&
271 pcu(jl,1) = zdirf(jl) * palbp(jl,knu) *
rsun(knu)
277 zw(jl,1)=zw(jl,1)+pud(jl,1,ikm1)*1.66_jprb
278 zw(jl,2)=zw(jl,2)+pud(jl,2,ikm1)*1.66_jprb
279 zw(jl,3)=zw(jl,3)+poz(jl, ikm1)*1.66_jprb
280 zw(jl,4)=zw(jl,4)+pud(jl,1,ikm1)*1.66_jprb
281 zw(jl,5)=zw(jl,5)+pud(jl,2,ikm1)*1.66_jprb
282 zw(jl,6)=zw(jl,6)+poz(jl, ikm1)*1.66_jprb
285 CALL swtt1 ( kidia, kfdia, klon, knu, 6,&
291 zdiff(jl) = zr(jl,1)*zr(jl,2)*zr(jl,3)*zrk(jl,jaj,jk)
292 zdirf(jl) = zr(jl,4)*zr(jl,5)*zr(jl,6)*zrk0(jl,jaj,jk)
293 pfu(jl,jk) = ((1.0_jprb-pclear(jl)) * zdiff(jl)&
294 & +pclear(jl) * zdirf(jl)) *
rsun(knu)
295 pcu(jl,jk) = zdirf(jl) *
rsun(knu)
305 ELSEIF (nsw == 6)
THEN
329 pfd(jl,klev+1)=((1.0_jprb-pclear(jl))*zrj(jl,jaj,klev+1)&
330 & + pclear(jl) *zrj0(jl,jaj,klev+1)) *
rsun(knu)
331 pcd(jl,klev+1)= zrj0(jl,jaj,klev+1) *
rsun(knu)
336 zw(jl,1)=zw(jl,1)+pud(jl,1,ikl)/zrmue(jl,ikl)
337 zw(jl,2)=zw(jl,2)+pud(jl,2,ikl)/zrmue(jl,ikl)
338 zw(jl,3)=zw(jl,3)+pud(jl,1,ikl)/zrmu0(jl,ikl)
339 zw(jl,4)=zw(jl,4)+pud(jl,2,ikl)/zrmu0(jl,ikl)
341 zo(jl,1)=zo(jl,1)+poz(jl, ikl)/zrmue(jl,ikl)
342 zo(jl,2)=zo(jl,2)+poz(jl, ikl)/zrmu0(jl,ikl)
346 CALL swtt1 ( kidia, kfdia, klon, knu, 4,&
353 CALL swuvo3 ( kidia, kfdia, klon, knu, 2,&
359 zdiff(jl) = zr(jl,1)*zr(jl,2)*zt(jl,1)*zrj(jl,jaj,ikl)
360 zdirf(jl) = zr(jl,3)*zr(jl,4)*zt(jl,2)*zrj0(jl,jaj,ikl)
361 pdiff(jl,ikl) = zdiff(jl) *
rsun(knu)*(1.0_jprb-pclear(jl))
362 pdirf(jl,ikl) = zdirf(jl) *
rsun(knu)*pclear(jl)
363 pfd(jl,ikl) = ((1.0_jprb-pclear(jl)) * zdiff(jl)&
364 & +pclear(jl) * zdirf(jl)) *
rsun(knu)
365 pcd(jl,ikl) = zdirf(jl) *
rsun(knu)
380 zdift(jl) = zr(jl,1)*zr(jl,2)*zt(jl,1)*ztrcld(jl)
381 zdirt(jl) = zr(jl,3)*zr(jl,4)*zt(jl,2)*ztrclr(jl)
382 psudu1(jl) = ((1.0_jprb-pclear(jl)) * zdift(jl)&
383 & +pclear(jl) * zdirt(jl)) *
rsun(knu)
390 pfu(jl,1) = ((1.0_jprb-pclear(jl))*zdiff(jl)*palbd(jl,knu)&
391 & + pclear(jl) *zdirf(jl)*palbp(jl,knu))&
393 pcu(jl,1) = zdirf(jl) * palbp(jl,knu) *
rsun(knu)
399 zw(jl,1)=zw(jl,1)+pud(jl,1,ikm1)*1.66_jprb
400 zw(jl,2)=zw(jl,2)+pud(jl,2,ikm1)*1.66_jprb
401 zw(jl,3)=zw(jl,3)+pud(jl,1,ikm1)*1.66_jprb
402 zw(jl,4)=zw(jl,4)+pud(jl,2,ikm1)*1.66_jprb
404 zo(jl,1)=zo(jl,1)+poz(jl, ikm1)*1.66_jprb
405 zo(jl,2)=zo(jl,2)+poz(jl, ikm1)*1.66_jprb
409 CALL swtt1 ( kidia, kfdia, klon, knu, 4,&
416 CALL swuvo3 ( kidia, kfdia, klon, knu, 2,&
422 zdiff(jl) = zr(jl,1)*zr(jl,2)*zt(jl,1)*zrk(jl,jaj,jk)
423 zdirf(jl) = zr(jl,3)*zr(jl,4)*zt(jl,2)*zrk0(jl,jaj,jk)
424 pfu(jl,jk) = ((1.0_jprb-pclear(jl)) * zdiff(jl)&
425 & +pclear(jl) * zdirf(jl)) *
rsun(knu)
426 pcu(jl,jk) = zdirf(jl) *
rsun(knu)
subroutine swclr(KIDIA, KFDIA, KLON, KLEV, KAER, KNU, PAER, PALBP, PDSIG, PRAYL, PSEC, PCGAZ, PPIZAZ, PRAY1, PRAY2, PREFZ, PRJ, PRK, PRMU0, PTAUAZ, PTRA1, PTRA2, PTRCLR,
real(kind=jprb), dimension(:), allocatable rsun
subroutine sw1s(KIDIA, KFDIA, KLON, KLEV, KAER, KNU, PAER, PALBD, PALBP, PCG, PCLD, PCLEAR, PDSIG, POMEGA, POZ, PRMU, PSEC, PTAU, PUD, PFD, PFU, PCD, PCU, PSUDU1, PDIFF, PDIRF,
!$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
subroutine swr(KIDIA, KFDIA, KLON, KLEV, KNU, PALBD, PCG, PCLD, POMEGA, PSEC, PTAU, PCGAZ, PPIZAZ, PRAY1, PRAY2, PREFZ, PRJ, PRK, PRMUE, PTAUAZ, PTRA1, PTRA2, PTRCLD)
subroutine swuvo3(KIDIA, KFDIA, KLON, KNU, KABS, PU, PTR)
subroutine swtt1(KIDIA, KFDIA, KLON, KNU, KABS, KIND, PU, PTR)
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
subroutine writefield_phy(name, Field, ll)
real(kind=jprb), dimension(6, 6) rray
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer