6 &
pcco2, pclfr , pdp , pemis, pemiw , plsm , pmu0, pozon,&
7 &
pq , pqiwp , pqlwp, pqs , pqrain, praint,&
10 & pemit, pfct , pflt , pfcs , pfls,&
11 & pfrsod,psudu , puvdf, pparf, pparcf, ptincf,&
12 & psfswdir, psfswdif,pfsdnn,pfsdnv ,&
13 & lrdust,ppiza_dst,pcga_dst,ptaurel_dst,&
15 & pflux,pfluc,pfsdn ,pfsup , pfscdn , pfscup)
160 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
161 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
162 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
163 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
164 INTEGER(KIND=JPIM),
INTENT(IN) :: KMODE
165 INTEGER(KIND=JPIM),
INTENT(IN) :: KAER
166 REAL(KIND=JPRB) ,
INTENT(IN) :: PRII0
167 REAL(KIND=JPRB) ,
INTENT(IN) :: PAER(klon,6,klev)
168 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBD(klon,nsw)
169 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBP(klon,nsw)
170 REAL(KIND=JPRB) ,
INTENT(IN) :: PAPH(klon,klev+1)
171 REAL(KIND=JPRB) ,
INTENT(IN) :: PAP(klon,klev)
172 REAL(KIND=JPRB) ,
INTENT(IN) :: PCCNL(klon)
173 REAL(KIND=JPRB) ,
INTENT(IN) :: PCCNO(klon)
174 REAL(KIND=JPRB) ,
INTENT(IN) :: PCCO2
175 REAL(KIND=JPRB) ,
INTENT(IN) :: PCLFR(klon,klev)
176 REAL(KIND=JPRB) ,
INTENT(IN) :: PDP(klon,klev)
177 REAL(KIND=JPRB) ,
INTENT(IN) :: PEMIS(klon)
178 REAL(KIND=JPRB) ,
INTENT(IN) :: PEMIW(klon)
179 REAL(KIND=JPRB) ,
INTENT(IN) :: PLSM(klon)
180 REAL(KIND=JPRB) ,
INTENT(IN) :: PMU0(klon)
181 REAL(KIND=JPRB) ,
INTENT(IN) :: POZON(klon,klev)
182 REAL(KIND=JPRB) ,
INTENT(IN) :: PQ(klon,klev)
183 REAL(KIND=JPRB) ,
INTENT(IN) :: PQIWP(klon,klev)
184 REAL(KIND=JPRB) ,
INTENT(IN) :: PQLWP(klon,klev)
185 REAL(KIND=JPRB) ,
INTENT(IN) :: PQS(klon,klev)
186 REAL(KIND=JPRB) :: PQRAIN(klon,klev)
187 REAL(KIND=JPRB) :: PRAINT(klon,klev)
188 REAL(KIND=JPRB) ,
INTENT(IN) :: PTH(klon,klev+1)
189 REAL(KIND=JPRB) ,
INTENT(IN) :: PT(klon,klev)
190 REAL(KIND=JPRB) ,
INTENT(IN) :: PTS(klon)
191 REAL(KIND=JPRB) ,
INTENT(IN) :: PNBAS(klon)
192 REAL(KIND=JPRB) ,
INTENT(IN) :: PNTOP(klon)
193 LOGICAL ,
INTENT(IN) :: LRDUST
194 REAL(KIND=JPRB) ,
INTENT(IN) :: PPIZA_DST(klon,klev,nsw)
195 REAL(KIND=JPRB) ,
INTENT(IN) :: PCGA_DST(klon,klev,nsw)
196 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAUREL_DST(klon,klev,nsw)
198 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_LW(klon,klev,
nlw)
200 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF_LIQ(klon,klev)
201 REAL(KIND=JPRB) ,
INTENT(IN) :: PREF_ICE(klon,klev)
202 REAL(KIND=JPRB) ,
INTENT(OUT) :: PEMIT(klon)
203 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFCT(klon,klev+1)
204 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLT(klon,klev+1)
205 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFCS(klon,klev+1)
206 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLS(klon,klev+1)
207 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFRSOD(klon)
208 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSUDU(klon)
209 REAL(KIND=JPRB) ,
INTENT(OUT) :: PUVDF(klon)
210 REAL(KIND=JPRB) ,
INTENT(OUT) :: PPARF(klon)
211 REAL(KIND=JPRB) ,
INTENT(OUT) :: PPARCF(klon), PTINCF(klon)
212 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSFSWDIR(klon,nsw)
213 REAL(KIND=JPRB) ,
INTENT(OUT) :: PSFSWDIF(klon,nsw)
214 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSDNN(klon)
215 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSDNV(klon)
216 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLUX(klon,2,klev+1)
217 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFLUC(klon,2,klev+1)
218 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSDN(klon,klev+1)
219 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSUP(klon,klev+1)
220 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSCDN(klon,klev+1)
221 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFSCUP(klon,klev+1)
237 INTEGER(KIND=JPIM) :: IBAS(klon) , ITOP(klon)
240 & ZALBD(KLON,NSW) , ZALBP(KLON,NSW)&
241 & , ZCG(KLON,NSW,KLEV) , ZOMEGA(KLON,NSW,KLEV)&
242 & , ZTAU (KLON,NSW,KLEV) &
243 & , ZTAUCLD(KLON,KLEV,16), ZTCLEAR(KLON)
245 & ZCLDLD(KLON,KLEV) , ZCLDLU(KLON,KLEV)&
246 & , ZCLDSW(KLON,KLEV) , ZCLD0(KLON,KLEV)&
248 & , ZEMIS(KLON) , ZEMIW(KLON)&
249 & , ZFIWP(KLON) , ZFLWP(KLON) , ZFRWP(KLON)&
250 & , ZIWC(KLON) , ZLWC(KLON)&
252 & , zmu0(klon) , zoz(klon,klev) , zozn(klon,klev)&
253 & , zpmb(klon,klev+1) , zpsol(klon)&
254 & , ztave(klon,klev) , ztl(klon,klev+1)&
257 & ZFCDWN(KLON,KLEV+1), ZFCUP(KLON,KLEV+1)&
258 & , ZFSDWN(KLON,KLEV+1), ZFSUP(KLON,KLEV+1)&
259 & , ZFSUPN(KLON) , ZFSUPV(KLON)&
260 & , ZFCUPN(KLON) , ZFCUPV(KLON)&
261 & , ZFSDNN(KLON) , ZFSDNV(KLON)&
262 & , ZFCDNN(KLON) , ZFCDNV(KLON)&
263 & , ZDIRFS(KLON,NSW) , ZDIFFS(KLON,NSW)
265 & ZALFICE(KLON) , ZGAMICE(KLON) , ZBICE(KLON) , ZDESR(KLON)&
266 & , ZRADIP(KLON) , ZRADLP(KLON) &
268 & , zraint(klon) , zres(klon)&
269 & , ztice(klon) , zemit(klon), zbicfu(klon)&
271 REAL(KIND=JPRB) :: ZSUDU(klon) , ZPARF(klon) , ZUVDF(klon), ZPARCF(klon)
272 INTEGER(KIND=JPIM) :: IKL, JK, JKL, JKLP1, JKP1, JL, JNU, JRTM, JSW, INDLAY
274 REAL(KIND=JPRB) :: ZASYMX, ZDIFFD, ZGI, ZGL, ZGR, ZIWGKG, ZLWGKG,&
275 & ZMSAID, ZMSAIU, ZMSALD, ZMSALU, ZRSAIA, ZRSAID, ZRSAIE, ZRSAIF, ZRSAIG, ZRSALD, &
276 & ZMULTI, ZMULTL, ZOI , ZOL, &
277 & ZOMGMX, ZOR, ZRMUZ, ZRWGKG, ZTAUD, ZTAUMX, ZTEMPC, &
278 & ZTOI, ZTOL, ZTOR, ZZFIWP, ZZFLWP, ZDPOG, ZPODT
280 REAL(KIND=JPRB) :: ZALND, ZASEA, ZD, ZDEN, ZNTOT, ZNUM, ZRATIO, Z1RADI, &
281 & Z1RADL, ZBETAI, ZOMGI, ZOMGP, ZFDEL, ZTCELS, ZFSR, ZAIWC, &
282 & ZBIWC, ZTBLAY, ZADDPLK, ZPLANCK, ZEXTCF, Z1MOMG, &
283 & ZDefRe, ZRefDe, ZVI , ZMABSD
286 REAL(KIND=JPRB) :: ZAVTO(klon), ZSQTO(klon)
287 REAL(KIND=JPRB) :: ZSQUAR(klon,klev), ZVARIA(klon,klev)
288 INTEGER(KIND=JPIM) :: IKI, JKI, JEXPLR, JXPLDN
292 REAL(KIND=JPRB) :: ZHOOK_HANDLE
294 #include "lw.intfb.h"
295 #include "rrtm_rrtm_140gp.intfb.h"
296 #include "sw.intfb.h"
307 zdefre = 1.0_jprb / zrefde
310 zfcup(jl,klev+1) = 0.0_jprb
311 zfcdwn(jl,klev+1) =
replog
312 zfsup(jl,klev+1) = 0.0_jprb
313 zfsdwn(jl,klev+1) =
replog
314 pflux(jl,1,klev+1) = 0.0_jprb
315 pflux(jl,2,klev+1) = 0.0_jprb
316 pfluc(jl,1,klev+1) = 0.0_jprb
317 pfluc(jl,2,klev+1) = 0.0_jprb
318 zfsdnn(jl) = 0.0_jprb
319 zfsdnv(jl) = 0.0_jprb
320 zfcdnn(jl) = 0.0_jprb
321 zfcdnv(jl) = 0.0_jprb
322 zfsupn(jl) = 0.0_jprb
323 zfsupv(jl) = 0.0_jprb
324 zfcupn(jl) = 0.0_jprb
325 zfcupv(jl) = 0.0_jprb
326 zpsol(jl) = paph(jl,klev+1)
327 zpmb(jl,1) = zpsol(jl) / 100.0_jprb
328 zdt0(jl) = pts(jl) - pth(jl,klev+1)
333 psfswdir(jl,:)=0.0_jprb
334 psfswdif(jl,:)=0.0_jprb
335 ibas(jl) = int( 0.01_jprb + pnbas(jl) )
336 itop(jl) = int( 0.01_jprb + pntop(jl) )
344 zalbd(jl,jsw)=palbd(jl,jsw)
345 zalbp(jl,jsw)=palbp(jl,jsw)
359 zpmb(jl,jk+1)=paph(jl,jkl)/100.0_jprb
362 zoz(jl,jk) = pozon(jl,jkl) * 46.6968_jprb /
rg
364 zcld0(jl,jk) = 0.0_jprb
365 zfcup(jl,jk) = 0.0_jprb
366 zfcdwn(jl,jk) = 0.0_jprb
367 zfsup(jl,jk) = 0.0_jprb
368 zfsdwn(jl,jk) = 0.0_jprb
369 pflux(jl,1,jk) = 0.0_jprb
370 pflux(jl,2,jk) = 0.0_jprb
371 pfluc(jl,1,jk) = 0.0_jprb
372 pfluc(jl,2,jk) = 0.0_jprb
380 ztl(jl,jk)=pth(jl,jklp1)
381 ztave(jl,jk)=pt(jl,jkl)
385 ztl(jl,klev+1)= pth(jl,1)
386 zpmb(jl,klev+1) = paph(jl,1)/100.0_jprb
403 ztau(jl,jsw,jk) = 0.0_jprb
404 zomega(jl,jsw,jk)= 1.0_jprb
405 zcg(jl,jsw,jk) = 0.0_jprb
409 zcldsw(jl,jk) = 0.0_jprb
410 zcldld(jl,jk) = 0.0_jprb
411 zcldlu(jl,jk) = 0.0_jprb
420 IF (pclfr(jl,ikl) >
repsc )
THEN
421 zlwgkg=max(pqlwp(jl,ikl)*1000.0_jprb,0.0_jprb)
422 ziwgkg=max(pqiwp(jl,ikl)*1000.0_jprb,0.0_jprb)
423 zlwgkg=zlwgkg/pclfr(jl,ikl)
424 ziwgkg=ziwgkg/pclfr(jl,ikl)
445 zflwp(jl)= zlwgkg*zdpog
446 zfiwp(jl)= ziwgkg*zdpog
447 zfrwp(jl)= zrwgkg*zdpog
448 zpodt=pap(jl,ikl)/(
rd*pt(jl,ikl))
449 zlwc(jl)=zlwgkg*zpodt
450 ziwc(jl)=ziwgkg*zpodt
461 zradlp(jl)=10.0_jprb + (100000.0_jprb-pap(jl,ikl))*3.5_jprb
465 IF (plsm(jl) < 0.5_jprb)
THEN
473 IF (plsm(jl) < 0.5_jprb)
THEN
481 zntot=-1.15e-03_jprb*zasea*zasea+0.963_jprb*zasea+5.30_jprb
490 zntot=-2.10e-04_jprb*zalnd*zalnd+0.568_jprb*zalnd-27.9_jprb
492 znum=3.0_jprb*zlwc(jl)*(1.0_jprb+3.0_jprb*zd*zd)**2
493 zden=4.0_jprb*
rpi*zntot*(1.0_jprb+zd*zd)**3
494 IF((znum/zden) >
replog)
THEN
495 zradlp(jl)=100.0_jprb*exp(0.333_jprb*log(znum/zden))
496 zradlp(jl)=max(zradlp(jl), 4.0_jprb)
497 zradlp(jl)=min(zradlp(jl),16.0_jprb)
505 zradlp(jl)=pref_liq(jl,ikl)
524 IF (pt(jl,ikl) < rtice)
THEN
525 ztempc=pt(jl,ikl)-
rtt
529 zradip(jl)=326.3_jprb+ztempc*(12.42_jprb + ztempc*(0.197_jprb + ztempc*&
534 zradip(jl)= 40.0_jprb
535 zdesr(jl) = zdefre * zradip(jl)
540 zradip(jl)=max(zradip(jl),40.0_jprb)
541 zdesr(jl) = zdefre * zradip(jl)
545 zradip(jl)=max(zradip(jl),30.0_jprb)
546 zradip(jl)=min(zradip(jl),60.0_jprb)
547 zdesr(jl)= zdefre * zradip(jl)
549 ELSEIF (
nradip == 3 )
THEN
553 IF (ziwc(jl) > 0.0_jprb )
THEN
554 ztempc = pt(jl,ikl)-83.15_jprb
555 ztcels = pt(jl,ikl)-
rtt
556 zfsr = 1.2351_jprb +0.0105_jprb * ztcels
558 zaiwc = 45.8966_jprb * ziwc(jl)**0.2214_jprb
559 zbiwc = 0.7957_jprb * ziwc(jl)**0.2535_jprb
560 zdesr(jl) = zfsr * (zaiwc + zbiwc*ztempc)
562 zdesr(jl) = min( max( zdesr(jl), 45.0_jprb), 350.0_jprb)
563 zradip(jl)= zrefde * zdesr(jl)
566 zdesr(jl) = 80.0_jprb
567 zradip(jl)= zrefde * zdesr(jl)
570 ELSEIF (
nradip == 4 )
THEN
573 zradip(jl)=pref_ice(jl,ikl)
596 IF (zflwp(jl)+zfiwp(jl)+zfrwp(jl) > 2.0_jprb *
repscw )
THEN
597 IF (zflwp(jl) >=
repscw )
THEN
614 IF (zfiwp(jl) >=
repscw )
THEN
623 z1radi = 1.0_jprb / zdesr(jl)
625 ztoi = zfiwp(jl) * zbetai
626 zomgi=
rflbb0(jsw)+zradip(jl)*(
rflbb1(jsw) + zradip(jl) &
628 zoi = 1.0_jprb - zomgi
629 zomgp=
rflcc0(jsw)+zradip(jl)*(
rflcc1(jsw) + zradip(jl) &
631 zfdel=
rfldd0(jsw)+zradip(jl)*(
rfldd1(jsw) + zradip(jl) &
633 zgi = ((1.0_jprb -zfdel)*zomgp + zfdel*3.0_jprb) / 3.0_jprb
637 z1radi = 1.0_jprb / zdesr(jl)
639 ztoi = zfiwp(jl) * zbetai
642 zoi = 1.0_jprb - zomgi
645 zgi = min(1.0_jprb, zgi)
657 ztaumx= ztol + ztoi + ztor
658 zomgmx= ztol*zol + ztoi*zoi + ztor*zor
659 zasymx= ztol*zol*zgl + ztoi*zoi*zgi + ztor*zor*zgr
661 zasymx= zasymx/zomgmx
662 zomgmx= zomgmx/ztaumx
666 zcldsw(jl,jk) = pclfr(jl,ikl)
667 ztau(jl,jsw,jk) = ztaumx
668 zomega(jl,jsw,jk)= zomgmx
669 zcg(jl,jsw,jk) = zasymx
702 zres(jl) =
xp(1,jnu)+ztice(jl)*(
xp(2,jnu)+ztice(jl)*(
xp(3,&
704 & +ztice(jl)*(
xp(4,jnu)+ztice(jl)*(
xp(5,jnu)+ztice(jl)*(
xp(6,&
707 zbice(jl) = zbice(jl) + zres(jl)
708 zgamice(jl) = zgamice(jl) +
rebcui(jnu)*zres(jl)
709 zalfice(jl) = zalfice(jl) +
rebcuj(jnu)*zres(jl)
717 IF (pt(jl,ikl) < 160.0_jprb)
THEN
719 ztblay =pt(jl,ikl)-160.0_jprb
720 ELSEIF (pt(jl,ikl) < 339.0_jprb )
THEN
721 indlay=pt(jl,ikl)-159.0_jprb
723 ztblay =pt(jl,ikl)-int(pt(jl,ikl))
726 ztblay =pt(jl,ikl)-339.0_jprb
730 zbicfu(jl) = zbicfu(jl) + zplanck
732 IF (ziwc(jl) > 0.0_jprb )
THEN
733 zratio = 1.0_jprb / zdesr(jl)
736 zmabsd =
rfulio(jrtm,1) + zratio &
741 zmabsd =
rfueta(jrtm,1) + zratio &
744 zkicfu(jl) = zkicfu(jl)+ zmabsd*zplanck
751 zgamice(jl) = zgamice(jl) / zbice(jl)
752 zalfice(jl) = zalfice(jl) / zbice(jl)
753 zkicfu(jl) = zkicfu(jl) / zbicfu(jl)
755 IF (zflwp(jl)+zfiwp(jl) >
repscw)
THEN
759 zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
760 zmsald= 0.158_jprb*zmultl
761 zmsalu= 0.130_jprb*zmultl
765 zmsalu= 0.2441_jprb-0.0105_jprb*zradlp(jl)
766 zmsald= 1.2154_jprb*zmsalu
772 zmulti=1.2_jprb-0.006_jprb*zradip(jl)
773 zmsaid= 0.113_jprb*zmulti
774 zmsaiu= 0.093_jprb*zmulti
778 zmsaid= 1.66_jprb*(zalfice(jl)+zgamice(jl)/zradip(jl))
783 zmsaid= 1.66_jprb*zkicfu(jl)
796 zcldld(jl,jk) = pclfr(jl,ikl)*(1.0_jprb-exp(-zmsald*zzflwp-zmsaid* &
798 zcldlu(jl,jk) = pclfr(jl,ikl)*(1.0_jprb-exp(-zmsalu*zzflwp-zmsaiu* &
818 ztaucld(jl,jk,jrtm) = 0.0_jprb
822 IF (zflwp(jl)+zfiwp(jl) >
repscw)
THEN
826 zmultl=1.2_jprb-0.006_jprb*zradlp(jl)
827 zrsald= 0.144_jprb*zmultl / 1.66_jprb
831 zrsald=
rhsavi(jrtm,1) + zradlp(jl)&
836 z1radl = 1.0_jprb / zradlp(jl)
837 zextcf =
rlilia(jrtm,1)+zradlp(jl)*
rlilia(jrtm,2)+ z1radl*&
841 & + zradlp(jl) *(
rlilib(jrtm,3) + zradlp(jl)*
rlilib(jrtm,4) )
842 zrsald = z1momg * zextcf
847 zmulti=1.2_jprb-0.006_jprb*zradip(jl)
848 zrsaid= 0.103_jprb*zmulti / 1.66_jprb
856 z1radi = 1.0_jprb / zdesr(jl)
857 zrsaid =
rfulio(jrtm,1) + z1radi &
863 z1radi = 1.0_jprb / zdesr(jl)
864 zrsaie =
rfueta(jrtm,1) + z1radi &
866 zrsaia = z1radi*(
rfuetb(jrtm,1) +zdesr(jl)*(
rfuetb(jrtm,2) +zdesr(jl)*(
rfuetb(jrtm,3) +zdesr(jl)*
rfuetb(jrtm,4))))
868 zrsaif = 0.5_jprb + zrsaig*( 0.3738_jprb + zrsaig*( 0.0076_jprb + zrsaig*0.1186_jprb ) )
869 zrsaid = (1.0_jprb - zrsaia/zrsaie * zrsaif) * zrsaie
872 ztaud = zrsald*zflwp(jl)+zrsaid*zfiwp(jl)
876 zdiffd=min(max(1.517_jprb-0.156_jprb*log(ztaud) , 1.0_jprb), &
882 ztaucld(jl,jk,jrtm) = ztaud*zdiffd
908 ztau(jl,jsw,jk)=ztau(jl,jsw,jk) *
rswinhf
916 ztaucld(jl,jk,jrtm)=ztaucld(jl,jk,jrtm) *
rlwinhf
921 ELSEIF (jexplr /= 0)
THEN
925 zsquar(jl,jk)=0.0_jprb
926 zvaria(jl,jk)=1.0_jprb
930 DO jk=1+jexplr,klev-jexplr
936 DO jki=jk-jexplr,jk+jexplr
940 zavto(jl)=zavto(jl)+ztau(jl,jsw,jki)
945 zavto(jl)=zavto(jl)/jxpldn
947 DO jki=jk-jexplr,jk+jexplr
951 zsqto(jl)=zsqto(jl)+(ztau(jl,jsw,jki)-zavto(jl))**2
955 zsqto(jl)=sqrt(zsqto(jl)/(jxpldn*(jxpldn-1)))
956 IF (zavto(jl) > 0.0_jprb)
THEN
957 zvaria(jl,jk)=(zsqto(jl)/zavto(jl))**2
958 zsquar(jl,jk)=exp(-zvaria(jl,jk))
960 zvaria(jl,jk)=0.0_jprb
961 zsquar(jl,jk)=1.0_jprb
966 ztau(jl,jsw,jk)=ztau(jl,jsw,jk)*zsquar(jl,jk)
971 ztau(jl,jsw,jk) = ztau(jl,jsw,jk)/(1.0_jprb+zvi)
972 zomega(jl,jsw,jk)= zomega(jl,jsw,jk) &
973 & /(1.0_jprb + zvi*(1.0_jprb-zomega(jl,jsw,jk) ) )
974 zcg(jl,jsw,jk) = zcg(jl,jsw,jk) &
975 & *(1.0_jprb+zvi*(1.0_jprb-zomega(jl,jsw,jk))) &
976 & /(1.0_jprb+zvi*(1.0_jprb-zomega(jl,jsw,jk)*zcg(jl,jsw,jk)))
981 9261
format(1
x,
'Varia1 ',2i3,7f10.4)
989 zsquar(jl,jk)=0.0_jprb
990 zvaria(jl,jk)=1.0_jprb
994 DO jk=1+jexplr,klev-jexplr
1000 DO jki=jk-jexplr,jk+jexplr
1004 zavto(jl)=zavto(jl)+ztaucld(jl,jki,jrtm)
1009 zavto(jl)=zavto(jl)/jxpldn
1011 DO jki=jk-jexplr,jk+jexplr
1015 zsqto(jl)=zsqto(jl)+(ztaucld(jl,jki,jrtm)-zavto(jl))**2
1019 zsqto(jl)=sqrt(zsqto(jl)/(jxpldn*(jxpldn-1)))
1020 IF (zavto(jl) > 0.0_jprb)
THEN
1021 zvaria(jl,jk)=(zsqto(jl)/zavto(jl))**2
1022 zsquar(jl,jk)=exp(-zvaria(jl,jk))
1024 zvaria(jl,jk)=0.0_jprb
1025 zsquar(jl,jk)=1.0_jprb
1030 ztaucld(jl,jk,jrtm)=ztaucld(jl,jk,jrtm)*zsquar(jl,jk)
1033 ELSEIF (
ninhom == 3)
THEN
1035 ztaucld(jl,jk,jrtm)=ztaucld(jl,jk,jrtm)/(1.0_jprb+zvi)
1040 9262
format(1
x,
'Varia2 ',2i3,7f10.4)
1066 IF ( .NOT.
lrrtm)
THEN
1069 & ( kidia , kfdia , klon , klev , kmode,&
1070 & pcco2 , zcldld, zcldlu,&
1071 & pdp , zdt0 , zemis , zemiw,&
1072 & zpmb , pozon , ztl,&
1073 & paer , ztave , zview , pq,&
1074 & zemit , pflux , pfluc &
1099 zozn(jl,jk) = pozon(jl,jk)/pdp(jl,jk)
1105 & ( kidia , kfdia , klon , klev,&
1106 & paer , paph , pap,&
1109 & pq , pcco2 , zozn ,&
1110 & zcldsw , ztaucld,&
1112 & zemit , pflux , pfluc , ztclear )
1118 pflux(:,:,:)= 0.0_jprb
1119 pfluc(:,:,:)= 0.0_jprb
1130 zrmuz = max(zrmuz, zmu0(jl))
1133 IF (
nstep == 0 .AND.
ledbug .AND. zmu0(kidia) > 0.0_jprb)
THEN
1134 WRITE(
nulout,
'(4E15.8)') prii0,pcco2,zpsol(kidia),zmu0(kidia)
1135 WRITE(
nulout,
'("ZALBD ",6E15.8)') (zalbd(kidia,jsw),jsw=1,nsw)
1136 WRITE(
nulout,
'("ZALBP ",6E15.8)') (zalbp(kidia,jsw),jsw=1,nsw)
1137 WRITE(
nulout,
'("PQ ",10E12.5)') (pq(kidia,jk),jk=1,klev)
1138 WRITE(
nulout,
'("PQS ",10E12.5)') (pqs(kidia,jk),jk=1,klev)
1139 WRITE(
nulout,
'("PDP ",10E12.5)') (pdp(kidia,jk),jk=1,klev)
1140 WRITE(
nulout,
'("ZPMB ",10E12.5)') (zpmb(kidia,jk),jk=1,klev+1)
1141 WRITE(
nulout,
'("ZTAVE ",10E12.5)') (ztave(kidia,jk),jk=1,klev)
1142 WRITE(
nulout,
'("ZCLDSW",10E12.5)') (zcldsw(kidia,jk),jk=1,klev)
1143 WRITE(
nulout,
'("ZTAU ",10E12.5)') ((ztau(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1144 WRITE(
nulout,
'("ZCG ",10E12.5)') ((zcg(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1145 WRITE(
nulout,
'("ZOMEGA",10E12.5)') ((zomega(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1146 WRITE(
nulout,
'("ZOZ ",10E12.5)') (zoz(kidia,jk),jk=1,klev)
1147 WRITE(
nulout,
'("PAER ",10E12.5)') ((paer(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1150 IF (
nstep == 0 .AND.
ledbug .AND. zmu0(kidia) > 0.0_jprb)
THEN
1151 WRITE(
nulout,
'(4E15.8)') prii0,pcco2,zpsol(kidia),zmu0(kidia)
1152 WRITE(
nulout,
'("ZALBD ",6E15.8)') (zalbd(kidia,jsw),jsw=1,nsw)
1153 WRITE(
nulout,
'("ZALBP ",6E15.8)') (zalbp(kidia,jsw),jsw=1,nsw)
1154 WRITE(
nulout,
'("PQ ",10E12.5)') (pq(kidia,jk),jk=1,klev)
1155 WRITE(
nulout,
'("PQS ",10E12.5)') (pqs(kidia,jk),jk=1,klev)
1156 WRITE(
nulout,
'("PDP ",10E12.5)') (pdp(kidia,jk),jk=1,klev)
1157 WRITE(
nulout,
'("ZPMB ",10E12.5)') (zpmb(kidia,jk),jk=1,klev+1)
1158 WRITE(
nulout,
'("ZTAVE ",10E12.5)') (ztave(kidia,jk),jk=1,klev)
1159 WRITE(
nulout,
'("ZCLDSW",10E12.5)') (zcldsw(kidia,jk),jk=1,klev)
1160 WRITE(
nulout,
'("ZTAU ",10E12.5)') ((ztau(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1161 WRITE(
nulout,
'("ZCG ",10E12.5)') ((zcg(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1162 WRITE(
nulout,
'("ZOMEGA",10E12.5)') ((zomega(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1163 WRITE(
nulout,
'("ZOZ ",10E12.5)') (zoz(kidia,jk),jk=1,klev)
1164 WRITE(
nulout,
'("PAER ",10E12.5)') ((paer(kidia,jsw,jk),jk=1,klev),jsw=1,nsw)
1167 & ( kidia , kfdia , klon , klev , kaer,&
1168 & prii0 , pcco2 , zpsol , zalbd , zalbp , pq , pqs,&
1169 & zmu0 , zcg , zcldsw, pdp , zomega, zoz , zpmb,&
1170 & ztau , ztave , paer,&
1171 & pfsdn , pfsup , pfscdn, pfscup,&
1172 & zfsdnn, zfsdnv, zfsupn, zfsupv,&
1173 & zfcdnn, zfcdnv, zfcupn, zfcupv,&
1174 & zsudu , zuvdf , zparf ,zparcf, zdiffs, zdirfs, &
1175 & lrdust,ppiza_dst,pcga_dst,ptaurel_dst&
1179 IF (
SIZE(psfswdir,2)>1)
THEN
1183 psfswdir(:,1) = zfsdnv(:) + zfsdnn(:)
1187 IF (
nstep == 0 .AND.
ledbug .AND. zmu0(kidia) > 0.0_jprb)
THEN
1188 WRITE(
nulout,
'("ZFSDWN",10E12.5)') (zfsdwn(kidia,jk),jk=1,klev)
1189 WRITE(
nulout,
'("ZFSUP ",10E12.5)') (zfsup(kidia,jk),jk=1,klev)
1190 WRITE(
nulout,
'("ZFCDWN",10E12.5)') (zfcdwn(kidia,jk),jk=1,klev)
1191 WRITE(
nulout,
'("ZFCUP ",10E12.5)') (zfcup(kidia,jk),jk=1,klev)
1194 IF (
nstep == 0 .AND.
ledbug .AND. zmu0(kidia) > 0.0_jprb)
THEN
1195 WRITE(
nulout,
'("ZFSDWN",10E12.5)') (zfsdwn(kidia,jk),jk=1,klev)
1196 WRITE(
nulout,
'("ZFSUP ",10E12.5)') (zfsup(kidia,jk),jk=1,klev)
1197 WRITE(
nulout,
'("ZFCDWN",10E12.5)') (zfcdwn(kidia,jk),jk=1,klev)
1198 WRITE(
nulout,
'("ZFCUP ",10E12.5)') (zfcup(kidia,jk),jk=1,klev)
1207 jk = klev+1 + 1 - jkl
1209 pfls(jl,jkl) = zfsdwn(jl,jk) - zfsup(jl,jk)
1210 pflt(jl,jkl) = - pflux(jl,1,jk) - pflux(jl,2,jk)
1211 pfcs(jl,jkl) = zfcdwn(jl,jk) - zfcup(jl,jk)
1212 pfct(jl,jkl) = - pfluc(jl,1,jk) - pfluc(jl,2,jk)
1217 pfrsod(jl)=zfsdwn(jl,1)
1222 pparcf(jl)=zparcf(jl)
1223 ptincf(jl)=prii0 * zmu0(jl)
1226 9501
format(1
x,
'RADLSW PUVDF: ',30f6.1)
1228 9502
format(1
x,
'RADLSW PPARF: ',30f6.1)
subroutine sw(KIDIA, KFDIA, KLON, KLEV, KAER, PSCT, PCARDI, PPSOL, PALBD, PALBP, PWV, PQS, PRMU0, PCG, PCLDSW, PDP, POMEGA, POZ, PPMB, PTAU, PTAVE, PAER, PFDOWN, PFUP, PCDOWN, PCUP, PFDNN, PFDNV, PFUPN, PFUPV, PCDNN, PCDNV, PCUPN, PCUPV, PSUDU, PUVDF, PPARF, PPARCF, PDIFFS, PDIRFS, LRDUST, PPIZA_DST, PCGA_DST, PTAUREL_DST)
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
real(kind=jprb), dimension(6) rebcua
real(kind=jprb), dimension(6) ryfwcb
real(kind=jprb), dimension(6) ryfwcc
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
integer(kind=jpim) nulout
real(kind=jprb), dimension(16, 4) rfuetc
real(kind=jprb), dimension(6) rfubb1
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
subroutine lw(KIDIA, KFDIA, KLON, KLEV, KMODE, PCCO2, PCLDLD, PCLDLU, PDP, PDT0, PEMIS, PEMIW, PPMB, PQOF, PTL, PAER, PTAVE, PVIEW, PWV, PEMIT, PFLUX, PFLUC)
real(kind=jprb), dimension(6) rflbb3
real(kind=jprb), dimension(6) rebcuc
real(kind=jprb), dimension(6) raswcb
real(kind=jprb), dimension(6) rebcuf
real(kind=jprb), dimension(6) rfucc2
real(kind=jprb), dimension(6) ryfwcf
real(kind=jprb), dimension(16, 4) rfuetb
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 false
real(kind=jprb), dimension(6) rebcud
real(kind=jprb), dimension(6) rfucc1
real(kind=jprb), dimension(6) rfldd3
subroutine radlsw(KIDIA, KFDIA, KLON, KLEV, KMODE, KAER, PRII0, PAER, PALBD, PALBP, PAPH, PAP, PCCNL, PCCNO, PCCO2, PCLFR, PDP, PEMIS, PEMIW, PLSM, PMU0, POZON, PQ, PQIWP, PQLWP, PQS, PQRAIN, PRAINT, PTH, PT, PTS, PNBAS, PNTOP, PREF_LIQ, PREF_ICE, PEMIT, PFCT, PFLT, PFCS, PFLS, PFRSOD, PSUDU, PUVDF, PPARF, PPARCF, PTINCF, PSFSWDIR, PSFSWDIF, PFSDNN, PFSDNV, LRDUST, PPIZA_DST, PCGA_DST, PTAUREL_DST, PTAU_LW, PFLUX, PFLUC, PFSDN, PFSUP, PFSCDN, PFSCUP)
real(kind=jprb), dimension(6, 6) xp
real(kind=jprb), dimension(16) rebcuh
real(kind=jprb), dimension(16) rebcug
integer(kind=jpim) nliqopt
real(kind=jprb), dimension(16, 5) rlilia
real(kind=jprb), dimension(6) ryfwca
real(kind=jprb), dimension(16, 3) rhsavi
real(kind=jprb), dimension(6) rebcub
real(kind=jprb), dimension(6) rflcc0
real(kind=jprb), dimension(6) ryfwce
real(kind=jprb), dimension(6) rfuaa1
real(kind=jprb), dimension(6) rfucc0
real(kind=jprb), dimension(6) rfldd2
!$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(6) rebcuj
subroutine rrtm_rrtm_140gp(KIDIA, KFDIA, KLON, KLEV, PAER, PAPH, PAP, PTS, PTH, PT, P_ZEMIS, P_ZEMIW, PQ, PCCO2, POZN, PCLDF, PTAUCLD, PTAU_LW, PEMIT, PFLUX, PFLUC, PTCLEAR)
real(kind=jprb), dimension(6) rfubb2
real(kind=jprb), dimension(6) rfuaa0
integer(kind=jpim) niceopt
real(kind=jprb), dimension(6) rfldd1
real(kind=jprb), dimension(16, 4) rlilib
integer(kind=jpim) nlayinh
real(kind=jprb), dimension(181, 16) totplnk
integer(kind=jpim) nradlp
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
real(kind=jprb), dimension(6) rflaa1
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
subroutine writefield_phy(name, Field, ll)
real(kind=jprb), dimension(6) rfucc3
real(kind=jprb), dimension(6) raswcc
real(kind=jprb), dimension(16, 3) rfulio
real(kind=jprb), dimension(6) rflbb0
real(kind=jprb), dimension(16) delwave
real(kind=jprb), dimension(6) rfubb3
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
integer(kind=jpim) ninhom
INTERFACE SUBROUTINE RRTM_ECRT_140GP pap
integer(kind=jpim) ntraer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pts
integer(kind=jpim) nradip
real(kind=jprb), dimension(6) raswcf
real(kind=jprb), dimension(6) rfldd0
INTERFACE SUBROUTINE RRTM_ECRT_140GP && pq
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
real(kind=jprb), dimension(6) rfubb0