3 &
paer , palbp , pdsig , prayl , psec,&
4 & pcgaz , ppizaz, pray1 , pray2 , prefz , prj,&
5 & prk , prmu0 , ptauaz, ptra1 , ptra2 , ptrclr, &
7 & lddust,ppiza_dst, pcga_dst, ptau_dst )
76 INTEGER(KIND=JPIM),
INTENT(IN) :: KLON
77 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
78 INTEGER(KIND=JPIM),
INTENT(IN) :: KIDIA
79 INTEGER(KIND=JPIM),
INTENT(IN) :: KFDIA
80 INTEGER(KIND=JPIM),
INTENT(IN) :: KAER
81 INTEGER(KIND=JPIM),
INTENT(IN) :: KNU
82 REAL(KIND=JPRB) ,
INTENT(IN) :: PAER(klon,6,klev)
83 REAL(KIND=JPRB) ,
INTENT(IN) :: PALBP(klon,nsw)
84 REAL(KIND=JPRB) ,
INTENT(IN) :: PDSIG(klon,klev)
85 REAL(KIND=JPRB) ,
INTENT(IN) :: PRAYL(klon)
86 REAL(KIND=JPRB) ,
INTENT(IN) :: PSEC(klon)
88 LOGICAL ,
INTENT(IN) :: LDDUST
89 REAL(KIND=JPRB) ,
INTENT(IN) :: PPIZA_DST(klon,klev)
90 REAL(KIND=JPRB) ,
INTENT(IN) :: PCGA_DST(klon,klev)
91 REAL(KIND=JPRB) ,
INTENT(IN) :: PTAU_DST(klon,klev)
93 REAL(KIND=JPRB) ,
INTENT(OUT) :: PCGAZ(klon,klev)
94 REAL(KIND=JPRB) ,
INTENT(OUT) :: PPIZAZ(klon,klev)
95 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRAY1(klon,klev+1)
96 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRAY2(klon,klev+1)
97 REAL(KIND=JPRB) ,
INTENT(OUT) :: PREFZ(klon,2,klev+1)
98 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRJ(klon,6,klev+1)
99 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRK(klon,6,klev+1)
100 REAL(KIND=JPRB) ,
INTENT(OUT) :: PRMU0(klon,klev+1)
101 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTAUAZ(klon,klev)
102 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTRA1(klon,klev+1)
103 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTRA2(klon,klev+1)
104 REAL(KIND=JPRB) ,
INTENT(OUT) :: PTRCLR(klon)
114 REAL(KIND=JPRB) :: ZC0I(klon,klev+1)&
115 & , ZCLE0(KLON,KLEV), ZCLEAR(KLON) &
117 & , ZR23(KLON) , ZSS0(KLON) , ZSCAT(KLON)&
118 & , ZTR(KLON,2,KLEV+1)
120 INTEGER(KIND=JPIM) :: IKL, JA, JAE, JAJ, JK, JKL, JKLP1, JKM1, JL, INU1
122 REAL(KIND=JPRB) :: ZBMU0, ZBMU1, ZCORAE, ZDEN, ZDEN1, ZFACOA,&
123 & ZFF, ZGAP, ZGAR, ZMU1, ZMUE, ZRATIO, ZRE11, &
124 & ZTO, ZTRAY, ZWW, ZDENB
125 REAL(KIND=JPRB) :: ZRR,ZMU0,ZI2MU1,ZIMU1,ZIDEN,ZIDEN1
126 REAL(KIND=JPRB) :: ZHOOK_HANDLE
128 REAL(KIND=JPRB) ::ZFACOA_NEW(klon,klev)
141 prj(jl,ja,jk) = 0.0_jprb
142 prk(jl,ja,jk) = 0.0_jprb
152 pcgaz(jl,jk) = 0.0_jprb
153 ppizaz(jl,jk) = 0.0_jprb
154 ptauaz(jl,jk) = 0.0_jprb
155 zfacoa_new(jl,jk) = 0.0_jprb
164 ptauaz(jl,jk)=ptau_dst(jl,ikl)
167 ppizaz(jl,jk)=ptau_dst(jl,ikl)*ppiza_dst(jl,ikl)
170 pcgaz(jl,jk)=ptau_dst(jl,ikl)*ppiza_dst(jl,ikl)*pcga_dst(jl,ikl)
182 ptauaz(jl,jk)= ptau_dst(jl,ikl)
186 ppizaz(jl,jk)=ptau_dst(jl,ikl)*ppiza_dst(jl,ikl)
190 pcgaz(jl,jk) = ptau_dst(jl,ikl)*ppiza_dst(jl,ikl)*pcga_dst(jl,ikl)
195 zfacoa_new(jl,jk)= zfacoa_new(jl,jk)+&
196 & ptau_dst(jl,ikl) *ppiza_dst(jl,ikl)*pcga_dst(jl,ikl)*&
221 pcgaz(jl,jk)=pcgaz(jl,jk)/ppizaz(jl,jk)
222 ppizaz(jl,jk)=ppizaz(jl,jk)/ptauaz(jl,jk)
230 ztray= prayl(jl) * pdsig(jl,jk)
232 zdenb = ztray + ptauaz(jl,jk)*(1.0_jprb-ppizaz(jl,jk)*zff)
235 ptauaz(jl,jk)=ztray+ptauaz(jl,jk)*(1.0_jprb-ppizaz(jl,jk)*zff)
236 pcgaz(jl,jk) = zgar * (1.0_jprb - zratio) / (1.0_jprb + zgar)
237 ppizaz(jl,jk) =zratio+(1.0_jprb-zratio)*ppizaz(jl,jk)*(1.0_jprb-zff)&
238 & / (1.0_jprb - ppizaz(jl,jk) * zff)
240 ztray = prayl(jl) * pdsig(jl,jk)
241 ptauaz(jl,jk) = ztray
242 pcgaz(jl,jk) = 0.0_jprb
243 ppizaz(jl,jk) = 1.0_jprb-
repsct
249 ztray = prayl(jl) * pdsig(jl,jk)
250 zratio =ppizaz(jl,jk)+ztray
252 zfacoa_new(jl,jk)= zfacoa_new(jl,jk)/zratio
254 ppizaz(jl,jk)=zratio/(ptauaz(jl,jk)+ztray)
256 pcgaz(jl,jk)=pcgaz(jl,jk)/zratio
258 ptauaz(jl,jk)=(ztray+ptauaz(jl,jk))*&
259 & (1.0_jprb-ppizaz(jl,jk)*zfacoa_new(jl,jk))
261 ppizaz(jl,jk)=ppizaz(jl,jk)*(1.0_jprb-zfacoa_new(jl,jk))/&
262 & (1.0_jprb-zfacoa_new(jl,jk)*ppizaz(jl,jk))
264 pcgaz(jl,jk)=pcgaz(jl,jk)/(1.0_jprb+pcgaz(jl,jk))
267 ztray = prayl(jl) * pdsig(jl,jk)
268 zfacoa_new(jl,jk)= 0.0_jprb
269 ptauaz(jl,jk) = ztray
270 pcgaz(jl,jk) = 0.0_jprb
271 ppizaz(jl,jk) = 1.0_jprb-
repsct
286 zc0i(jl,klev+1) = 0.0_jprb
287 zclear(jl) = 1.0_jprb
297 zfacoa = ptauaz(jl,jk)
298 zcorae = zfacoa * psec(jl)
300 zfacoa = 1.0_jprb - ppizaz(jl,jkl)*pcgaz(jl,jkl)*pcgaz(jl,jkl)
301 zcorae = zfacoa * ptauaz(jl,jkl) * psec(jl)
304 zr21(jl) = exp(-zcorae )
305 zss0(jl) = 1.0_jprb-zr21(jl)
306 zcle0(jl,jkl) = zss0(jl)
310 zclear(jl) = zclear(jl)&
311 & *(1.0_jprb-max(zss0(jl),zscat(jl)))&
312 & /(1.0_jprb-min(zscat(jl),1.0_jprb-
repclc))
313 zc0i(jl,jkl) = 1.0_jprb - zclear(jl)
315 ELSEIF (
novlp == 2)
THEN
317 zscat(jl) = max( zss0(jl) , zscat(jl) )
318 zc0i(jl,jkl) = zscat(jl)
323 zclear(jl)=zclear(jl)*(1.0_jprb-zss0(jl))
324 zscat(jl) = 1.0_jprb - zclear(jl)
325 zc0i(jl,jkl) = zscat(jl)
335 zfacoa = ptauaz(jl,jk)
336 zcorae = zfacoa * psec(jl)
338 zfacoa = 1.0_jprb - ppizaz(jl,jkl)*pcgaz(jl,jkl)*pcgaz(jl,jkl)
339 zcorae = zfacoa * ptauaz(jl,jkl) * psec(jl)
342 zr21(jl) = exp(-zcorae )
343 zss0(jl) = 1.0_jprb-zr21(jl)
344 zcle0(jl,jkl) = zss0(jl)
348 zclear(jl) = zclear(jl)&
349 & *(1.0_jprb-max(zss0(jl),zscat(jl)))&
350 & /(1.0_jprb-min(zscat(jl),1.0_jprb-
repclc))
351 zc0i(jl,jkl) = 1.0_jprb - zclear(jl)
353 ELSEIF (
novlp == 2)
THEN
355 zscat(jl) = max( zss0(jl) , zscat(jl) )
356 zc0i(jl,jkl) = zscat(jl)
361 zclear(jl)=zclear(jl)*(1.0_jprb-zss0(jl))
362 zscat(jl) = 1.0_jprb - zclear(jl)
363 zc0i(jl,jkl) = zscat(jl)
374 pray1(jl,klev+1) = 0.0_jprb
375 pray2(jl,klev+1) = 0.0_jprb
376 prefz(jl,2,1) = palbp(jl,knu)
377 prefz(jl,1,1) = palbp(jl,knu)
378 ptra1(jl,klev+1) = 1.0_jprb
379 ptra2(jl,klev+1) = 1.0_jprb
391 zmue = (1.0_jprb-zc0i(jl,jk)) * psec(jl)+ zc0i(jl,jk) * 1.66_jprb
392 prmu0(jl,jk) = 1.0_jprb/zmue
400 zgap = pcgaz(jl,jkm1)
401 zbmu0 = 0.5_jprb - 0.75_jprb * zgap *zmu0
402 zww = ppizaz(jl,jkm1)
403 zto = ptauaz(jl,jkm1)
404 zden = 1.0_jprb + (1.0_jprb - zww + zbmu0 * zww) * zto * zmue &
405 & + (1-zww) * (1.0_jprb - zww +2.0_jprb*zbmu0*zww)*zto*zto*zmue*zmue
406 ziden=1.0_jprb / zden
407 pray1(jl,jkm1) = zbmu0 * zww * zto * zmue * ziden
408 ptra1(jl,jkm1) = ziden
413 zbmu1 = 0.5_jprb - 0.75_jprb * zgap * zmu1
414 zden1= 1.0_jprb + (1.0_jprb - zww + zbmu1 * zww) * zto * zimu1 &
415 & + (1-zww) * (1.0_jprb - zww +2.0_jprb*zbmu1*zww)*zto*zto*zi2mu1
416 ziden1=1.0_jprb / zden1
417 pray2(jl,jkm1) = zbmu1 * zww * zto * zimu1 *ziden1
418 ptra2(jl,jkm1) = ziden1
420 zrr=1.0_jprb/(1.0_jprb-pray2(jl,jkm1)*prefz(jl,1,jkm1))
421 prefz(jl,1,jk) = pray1(jl,jkm1)&
422 & + prefz(jl,1,jkm1) * ptra1(jl,jkm1)&
426 ztr(jl,1,jkm1) = ptra1(jl,jkm1)&
429 prefz(jl,2,jk) = pray1(jl,jkm1)&
430 & + prefz(jl,2,jkm1) * ptra1(jl,jkm1)&
433 ztr(jl,2,jkm1) = ptra1(jl,jkm1)
438 zmue = (1.0_jprb-zc0i(jl,1))*psec(jl)+zc0i(jl,1)*1.66_jprb
439 prmu0(jl,1)=1.0_jprb/zmue
440 ptrclr(jl)=1.0_jprb-zc0i(jl,1)
450 ELSEIF (nsw == 6)
THEN
454 IF (knu <= inu1)
THEN
457 prj(jl,jaj,klev+1) = 1.0_jprb
458 prk(jl,jaj,klev+1) = prefz(jl, 1,klev+1)
465 zre11= prj(jl,jaj,jklp1) * ztr(jl, 1,jkl)
466 prj(jl,jaj,jkl) = zre11
467 prk(jl,jaj,jkl) = zre11 * prefz(jl, 1,jkl)
475 prj(jl,jaj,klev+1) = 1.0_jprb
476 prk(jl,jaj,klev+1) = prefz(jl,jaj,klev+1)
483 zre11= prj(jl,jaj,jklp1) * ztr(jl,jaj,jkl)
484 prj(jl,jaj,jkl) = zre11
485 prk(jl,jaj,jkl) = zre11 * prefz(jl,jaj,jkl)
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(6, 6) rtaua
real(kind=jprb), dimension(6, 6) rcga
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
real(kind=jprb), dimension(6, 6) rpiza
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer