2 SUBROUTINE sw_lmdar4(psct, prmu0, pfrac, ppmb, pdp, ppsol, palbd, palbp, &
3 ptave, pwv, pqs, pozon,
paer, pcldsw, ptau, pomega, pcg, pheat, pheat0, &
4 palbpla, ptopsw, psolsw, ptopsw0, psolsw0, zfsup, zfsdn, zfsup0, zfsdn0, &
5 tauae, pizae, cgae, ptaua, pomegaa, ptopswad, psolswad, ptopswai, &
6 psolswai, ok_ade, ok_aie)
52 REAL (KIND=8) ppsol(
kdlon)
56 REAL (KIND=8) prmu0(
kdlon)
57 REAL (KIND=8) pfrac(
kdlon)
65 REAL (KIND=8) palbd(
kdlon, 2)
66 REAL (KIND=8) palbp(
kdlon, 2)
75 REAL (KIND=8) palbpla(
kdlon)
76 REAL (KIND=8) ptopsw(
kdlon)
77 REAL (KIND=8) psolsw(
kdlon)
78 REAL (KIND=8) ptopsw0(
kdlon)
79 REAL (KIND=8) psolsw0(
kdlon)
83 REAL,
PARAMETER :: dobson_u = 2.1415e-05
88 REAL (KIND=8) zaki(
kdlon, 2)
90 REAL (KIND=8) zclear(
kdlon)
92 REAL (KIND=8) zfact(
kdlon)
97 REAL (KIND=8) zrmu(
kdlon)
98 REAL (KIND=8) zsec(
kdlon)
107 INTEGER inu, jl, jk, i, k, kpl1
115 DATA appel1er/.
true./
116 SAVE itapsw, appel1er
120 REAL (KIND=8) flag_aer
121 LOGICAL ok_ade, ok_aie
127 REAL (KIND=8) ptopswad(
kdlon)
128 REAL (KIND=8) psolswad(
kdlon)
129 REAL (KIND=8) ptopswai(
kdlon)
130 REAL (KIND=8) psolswai(
kdlon)
132 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zfsupad(:, :)
134 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zfsdnad(:, :)
136 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zfsupai(:, :)
138 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zfsdnai(:, :)
145 DATA initialized/.
false./
151 IF (.NOT. initialized)
THEN
166 WRITE (
lunout, *)
'SW calling frequency : ', swpas
167 WRITE (
lunout, *)
' In general, it should be 1'
171 IF (mod(itapsw,swpas)==0)
THEN
173 tmp_ = 1./(dobson_u*1e3*
rg)
177 zcldsw0(jl, jk) = 0.0
178 zoz(jl, jk) = pozon(jl, jk)*tmp_*pdp(jl, jk)
185 CALL swu_lmdar4(psct, zcldsw0, ppmb, ppsol, prmu0, pfrac, ptave, pwv, &
186 zaki, zcld, zclear, zdsig, zfact, zrmu, zsec, zud)
188 CALL sw1s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, palbd, palbp, &
189 pcg, zcld, zclear, zcldsw0, zdsig, pomega, zoz, zrmu, zsec, ptau, zud, &
192 CALL sw2s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, zaki, palbd, &
193 palbp, pcg, zcld, zclear, zcldsw0, zdsig, pomega, zoz, zrmu, zsec, &
194 ptau, zud, pwv, pqs, zfdown, zfup)
197 zfsup0(jl, jk) = (zfup(jl,jk)+zfu(jl,jk))*zfact(jl)
198 zfsdn0(jl, jk) = (zfdown(jl,jk)+zfd(jl,jk))*zfact(jl)
203 CALL swu_lmdar4(psct, pcldsw, ppmb, ppsol, prmu0, pfrac, ptave, pwv, &
204 zaki, zcld, zclear, zdsig, zfact, zrmu, zsec, zud)
206 CALL sw1s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, palbd, palbp, &
207 pcg, zcld, zclear, pcldsw, zdsig, pomega, zoz, zrmu, zsec, ptau, zud, &
210 CALL sw2s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, zaki, palbd, &
211 palbp, pcg, zcld, zclear, pcldsw, zdsig, pomega, zoz, zrmu, zsec, ptau, &
212 zud, pwv, pqs, zfdown, zfup)
218 zfsup(jl, jk) = (zfup(jl,jk)+zfu(jl,jk))*zfact(jl)
219 zfsdn(jl, jk) = (zfdown(jl,jk)+zfd(jl,jk))*zfact(jl)
228 CALL swu_lmdar4(psct, pcldsw, ppmb, ppsol, prmu0, pfrac, ptave, pwv, &
229 zaki, zcld, zclear, zdsig, zfact, zrmu, zsec, zud)
231 CALL sw1s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, palbd, palbp, &
232 pcg, zcld, zclear, pcldsw, zdsig, pomega, zoz, zrmu, zsec, ptau, zud, &
235 CALL sw2s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, zaki, palbd, &
236 palbp, pcg, zcld, zclear, pcldsw, zdsig, pomega, zoz, zrmu, zsec, &
237 ptau, zud, pwv, pqs, zfdown, zfup)
240 zfsupad(jl, jk) = zfsup(jl, jk)
241 zfsdnad(jl, jk) = zfsdn(jl, jk)
242 zfsup(jl, jk) = (zfup(jl,jk)+zfu(jl,jk))*zfact(jl)
243 zfsdn(jl, jk) = (zfdown(jl,jk)+zfd(jl,jk))*zfact(jl)
253 CALL swu_lmdar4(psct, pcldsw, ppmb, ppsol, prmu0, pfrac, ptave, pwv, &
254 zaki, zcld, zclear, zdsig, zfact, zrmu, zsec, zud)
256 CALL sw1s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, palbd, palbp, &
257 pcg, zcld, zclear, pcldsw, zdsig, pomegaa, zoz, zrmu, zsec, ptaua, &
260 CALL sw2s_lmdar4(inu, paer, flag_aer, tauae, pizae, cgae, zaki, palbd, &
261 palbp, pcg, zcld, zclear, pcldsw, zdsig, pomegaa, zoz, zrmu, zsec, &
262 ptaua, zud, pwv, pqs, zfdown, zfup)
265 zfsupai(jl, jk) = zfsup(jl, jk)
266 zfsdnai(jl, jk) = zfsdn(jl, jk)
267 zfsup(jl, jk) = (zfup(jl,jk)+zfu(jl,jk))*zfact(jl)
268 zfsdn(jl, jk) = (zfdown(jl,jk)+zfd(jl,jk))*zfact(jl)
281 pheat(i, k) = -(zfsup(i,kpl1)-zfsup(i,k)) - (zfsdn(i,k)-zfsdn(i,kpl1))
282 pheat(i, k) = pheat(i, k)*rday*
rg/rcpd/pdp(i, k)
283 pheat0(i, k) = -(zfsup0(i,kpl1)-zfsup0(i,k)) - &
284 (zfsdn0(i,k)-zfsdn0(i,kpl1))
285 pheat0(i, k) = pheat0(i, k)*rday*
rg/rcpd/pdp(i, k)
289 palbpla(i) = zfsup(i,
kflev+1)/(zfsdn(i,
kflev+1)+1.0e-20)
291 psolsw(i) = zfsdn(i, 1) - zfsup(i, 1)
292 ptopsw(i) = zfsdn(i,
kflev+1) - zfsup(i,
kflev+1)
294 psolsw0(i) = zfsdn0(i, 1) - zfsup0(i, 1)
295 ptopsw0(i) = zfsdn0(i,
kflev+1) - zfsup0(i,
kflev+1)
297 psolswad(i) = zfsdnad(i, 1) - zfsupad(i, 1)
298 ptopswad(i) = zfsdnad(i,
kflev+1) - zfsupad(i,
kflev+1)
300 psolswai(i) = zfsdnai(i, 1) - zfsupai(i, 1)
301 ptopswai(i) = zfsdnai(i,
kflev+1) - zfsupai(i,
kflev+1)
310 SUBROUTINE swu_lmdar4(psct, pcldsw, ppmb, ppsol, prmu0, pfrac, ptave, pwv, &
311 paki, pcld, pclear, pdsig, pfact, prmu, psec, pud)
327 REAL (KIND=8) ppsol(
kdlon)
328 REAL (KIND=8) prmu0(
kdlon)
329 REAL (KIND=8) pfrac(
kdlon)
333 REAL (KIND=8) paki(
kdlon, 2)
335 REAL (KIND=8) pclear(
kdlon)
337 REAL (KIND=8) pfact(
kdlon)
338 REAL (KIND=8) prmu(
kdlon)
339 REAL (KIND=8) psec(
kdlon)
346 REAL (KIND=8) zclear(
kdlon)
347 REAL (KIND=8) zcloud(
kdlon)
348 REAL (KIND=8) zn175(
kdlon)
349 REAL (KIND=8) zn190(
kdlon)
350 REAL (KIND=8) zo175(
kdlon)
351 REAL (KIND=8) zo190(
kdlon)
352 REAL (KIND=8) zsign(
kdlon)
353 REAL (KIND=8) zr(
kdlon, 2)
354 REAL (KIND=8) zsigo(
kdlon)
355 REAL (KIND=8) zud(
kdlon, 2)
356 REAL (KIND=8) zrth, zrtu, zwh2o, zdsco2, zdsh2o, zfppw
357 INTEGER jl, jk, jkp1, jkl, jklp1, ja
373 pud(jl, 1,
kflev+1) = 0.
374 pud(jl, 2,
kflev+1) = 0.
375 pud(jl, 3,
kflev+1) = 0.
376 pud(jl, 4,
kflev+1) = 0.
377 pud(jl, 5,
kflev+1) = 0.
378 pfact(jl) = prmu0(jl)*pfrac(jl)*psct
379 prmu(jl) = sqrt(1224.*prmu0(jl)*prmu0(jl)+1.)/35.
380 psec(jl) = 1./prmu(jl)
381 zc1j(jl,
kflev+1) = 0.
391 zo175(jl) = ppsol(jl)**(
zpdumg+1.)
392 zo190(jl) = ppsol(jl)**(
zpdh2o+1.)
393 zsigo(jl) = ppsol(jl)
405 zwh2o = max(pwv(jl,jk), zepscq)
406 zsign(jl) = 100.*ppmb(jl, jkp1)
407 pdsig(jl, jk) = (zsigo(jl)-zsign(jl))/ppsol(jl)
408 zn175(jl) = zsign(jl)**(
zpdumg+1.)
409 zn190(jl) = zsign(jl)**(
zpdh2o+1.)
410 zdsco2 = zo175(jl) - zn175(jl)
411 zdsh2o = zo190(jl) - zn190(jl)
416 zfppw = 1.6078*zwh2o/(1.+0.608*zwh2o)
417 pud(jl, 4, jk) = pud(jl, 1, jk)*zfppw
418 pud(jl, 5, jk) = pud(jl, 1, jk)*(1.-zfppw)
419 zud(jl, 1) = zud(jl, 1) + pud(jl, 1, jk)
420 zud(jl, 2) = zud(jl, 2) + pud(jl, 2, jk)
421 zsigo(jl) = zsign(jl)
422 zo175(jl) = zn175(jl)
423 zo190(jl) = zn190(jl)
426 zclear(jl) = zclear(jl)*(1.-max(pcldsw(jl,jkl),zcloud(jl)))/(1.-min( &
427 zcloud(jl),1.-zepsec))
428 zc1j(jl, jkl) = 1.0 - zclear(jl)
429 zcloud(jl) = pcldsw(jl, jkl)
430 ELSE IF (novlp==2)
THEN
431 zcloud(jl) = max(pcldsw(jl,jkl), zcloud(jl))
432 zc1j(jl, jkl) = zcloud(jl)
433 ELSE IF (novlp==3)
THEN
434 zclear(jl) = zclear(jl)*(1.-pcldsw(jl,jkl))
435 zcloud(jl) = 1.0 - zclear(jl)
436 zc1j(jl, jkl) = zcloud(jl)
441 pclear(jl) = 1. - zc1j(jl, 1)
445 IF (pclear(jl)<1.)
THEN
446 pcld(jl, jk) = pcldsw(jl, jk)/(1.-pclear(jl))
459 zud(jl, ja) = zud(jl, ja)*psec(jl)
467 paki(jl, ja) = -log(zr(jl,ja))/zud(jl, ja)
476 SUBROUTINE sw1s_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, palbd, palbp, &
477 pcg, pcld, pclear, pcldsw, pdsig, pomega, poz, prmu, psec, ptau, pud, &
483 USE chem_rep
, ONLY: rsuntime, ok_suntime
522 REAL (KIND=8) flag_aer
527 REAL (KIND=8) palbd(
kdlon, 2)
528 REAL (KIND=8) palbp(
kdlon, 2)
532 REAL (KIND=8) pclear(
kdlon)
536 REAL (KIND=8) prmu(
kdlon)
537 REAL (KIND=8) psec(
kdlon)
549 REAL (KIND=8) zdiff(
kdlon)
550 REAL (KIND=8) zdirf(
kdlon)
552 REAL (KIND=8) zrayl(
kdlon)
562 REAL (KIND=8) zr(
kdlon, 4)
566 REAL (KIND=8) zw(
kdlon, 4)
568 INTEGER jl, jk, k, jaj, ikm1, ikl
575 rsun(1) = rsuntime(1)
576 rsun(2) = rsuntime(2)
594 zrayl(jl) =
rray(knu, 1) + prmu(jl)*(
rray(knu,2)+prmu(jl)*(
rray(knu, &
595 3)+prmu(jl)*(
rray(knu,4)+prmu(jl)*(
rray(knu,5)+prmu(jl)*
rray(knu,6)))))
609 CALL swclr_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, palbp, pdsig, &
610 zrayl, psec, zcgaz, zpizaz, zray1, zray2, zrefz, zrj0, zrk0, zrmu0, &
611 ztauaz, ztra1, ztra2)
617 CALL swr_lmdar4(knu, palbd, pcg, pcld, pdsig, pomega, zrayl, psec, ptau, &
618 zcgaz, zpizaz, zray1, zray2, zrefz, zrj, zrk, zrmue, ztauaz, ztra1, &
643 pfd(jl,
kflev+1) = ((1.-pclear(jl))*zrj(jl,jaj,
kflev+1)+pclear(jl)*zrj0( &
649 zw(jl, 1) = zw(jl, 1) + pud(jl, 1, ikl)/zrmue(jl, ikl)
650 zw(jl, 2) = zw(jl, 2) + poz(jl, ikl)/zrmue(jl, ikl)
651 zw(jl, 3) = zw(jl, 3) + pud(jl, 1, ikl)/zrmu0(jl, ikl)
652 zw(jl, 4) = zw(jl, 4) + poz(jl, ikl)/zrmu0(jl, ikl)
658 zdiff(jl) = zr(jl, 1)*zr(jl, 2)*zrj(jl, jaj, ikl)
659 zdirf(jl) = zr(jl, 3)*zr(jl, 4)*zrj0(jl, jaj, ikl)
660 pfd(jl, ikl) = ((1.-pclear(jl))*zdiff(jl)+pclear(jl)*zdirf(jl))* &
670 pfu(jl, 1) = ((1.-pclear(jl))*zdiff(jl)*palbd(jl,knu)+pclear(jl)*zdirf(jl &
671 )*palbp(jl,knu))*
rsun(knu)
677 zw(jl, 1) = zw(jl, 1) + pud(jl, 1, ikm1)*1.66
678 zw(jl, 2) = zw(jl, 2) + poz(jl, ikm1)*1.66
679 zw(jl, 3) = zw(jl, 3) + pud(jl, 1, ikm1)*1.66
680 zw(jl, 4) = zw(jl, 4) + poz(jl, ikm1)*1.66
686 zdiff(jl) = zr(jl, 1)*zr(jl, 2)*zrk(jl, jaj, jk)
687 zdirf(jl) = zr(jl, 3)*zr(jl, 4)*zrk0(jl, jaj, jk)
688 pfu(jl, jk) = ((1.-pclear(jl))*zdiff(jl)+pclear(jl)*zdirf(jl))* &
697 SUBROUTINE sw2s_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, paki, palbd, &
698 palbp, pcg, pcld, pclear, pcldsw, pdsig, pomega, poz, prmu, psec, ptau, &
699 pud, pwv, pqs, pfdown, pfup)
704 USE chem_rep
, ONLY: rsuntime, ok_suntime
748 REAL (KIND=8) flag_aer
753 REAL (KIND=8) paki(
kdlon, 2)
754 REAL (KIND=8) palbd(
kdlon, 2)
755 REAL (KIND=8) palbp(
kdlon, 2)
759 REAL (KIND=8) pclear(
kdlon)
764 REAL (KIND=8) prmu(
kdlon)
765 REAL (KIND=8) psec(
kdlon)
775 INTEGER iind2(2), iind3(3)
779 REAL (KIND=8) zg(
kdlon)
780 REAL (KIND=8) zgg(
kdlon)
782 REAL (KIND=8) zrayl(
kdlon)
785 REAL (KIND=8) zref(
kdlon)
787 REAL (KIND=8) zre1(
kdlon)
788 REAL (KIND=8) zre2(
kdlon)
793 REAL (KIND=8) zrl(
kdlon, 8)
796 REAL (KIND=8) zrmuz(
kdlon)
797 REAL (KIND=8) zrneb(
kdlon)
798 REAL (KIND=8) zruef(
kdlon, 8)
799 REAL (KIND=8) zr1(
kdlon)
800 REAL (KIND=8) zr2(
kdlon, 2)
801 REAL (KIND=8) zr3(
kdlon, 3)
802 REAL (KIND=8) zr4(
kdlon)
803 REAL (KIND=8) zr21(
kdlon)
804 REAL (KIND=8) zr22(
kdlon)
805 REAL (KIND=8) zs(
kdlon)
807 REAL (KIND=8) zto1(
kdlon)
811 REAL (KIND=8) ztr1(
kdlon)
812 REAL (KIND=8) ztr2(
kdlon)
813 REAL (KIND=8) zw(
kdlon)
814 REAL (KIND=8) zw1(
kdlon)
815 REAL (KIND=8) zw2(
kdlon, 2)
816 REAL (KIND=8) zw3(
kdlon, 3)
817 REAL (KIND=8) zw4(
kdlon)
818 REAL (KIND=8) zw5(
kdlon)
820 INTEGER jl, jk, k, jaj, ikm1, ikl, jn, jabs, jkm1
821 INTEGER jref, jkl, jklp1, jajp, jkki, jkkp4, jn2j, iabs
822 REAL (KIND=8) zrmum1, zwh2o, zcneb, zaa, zbb, zrki, zre11
829 rsun(1) = rsuntime(1)
830 rsun(2) = rsuntime(2)
847 zrmum1 = 1. - prmu(jl)
848 zrayl(jl) =
rray(knu, 1) + zrmum1*(
rray(knu,2)+zrmum1*(
rray(knu, &
849 3)+zrmum1*(
rray(knu,4)+zrmum1*(
rray(knu,5)+zrmum1*
rray(knu,6)))))
862 CALL swclr_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, palbp, pdsig, &
863 zrayl, psec, zcgaz, zpizaz, zray1, zray2, zrefz, zrj0, zrk0, zrmu0, &
864 ztauaz, ztra1, ztra2)
870 CALL swr_lmdar4(knu, palbd, pcg, pcld, pdsig, pomega, zrayl, psec, ptau, &
871 zcgaz, zpizaz, zray1, zray2, zrefz, zrj, zrk, zrmue, ztauaz, ztra1, &
888 zrefz(jl, 2, 1) = palbd(jl, knu)
889 zrefz(jl, 1, 1) = palbd(jl, knu)
898 ikl =
kflev + 1 - jkm1
900 zrneb(jl) = pcld(jl, jkm1)
901 IF (jabs==1 .AND. zrneb(jl)>2.*zeelog)
THEN
902 zwh2o = max(pwv(jl,jkm1), zeelog)
903 zcneb = max(zeelog, min(zrneb(jl),1.-zeelog))
904 zbb = pud(jl, jabs, jkm1)*pqs(jl, jkm1)/zwh2o
905 zaa = max((pud(jl,jabs,jkm1)-zcneb*zbb)/(1.-zcneb), zeelog)
907 zaa = pud(jl, jabs, jkm1)
910 zrki = paki(jl, jabs)
911 zs(jl) = exp(-zrki*zaa*1.66)
912 zg(jl) = exp(-zrki*zaa/zrmue(jl,jk))
918 zw(jl) = pomega(jl, knu, jkm1)
919 zto1(jl) = ptau(jl, knu, jkm1)/zw(jl) + ztauaz(jl, jkm1)/zpizaz(jl, &
922 zr21(jl) = ptau(jl, knu, jkm1) + ztauaz(jl, jkm1)
923 zr22(jl) = ptau(jl, knu, jkm1)/zr21(jl)
924 zgg(jl) = zr22(jl)*pcg(jl, knu, jkm1) + (1.-zr22(jl))*zcgaz(jl, jkm1)
925 zw(jl) = zr21(jl)/zto1(jl)
926 zref(jl) = zrefz(jl, 1, jkm1)
927 zrmuz(jl) = zrmue(jl, jk)
930 CALL swde_lmdar4(zgg, zref, zrmuz, zto1, zw, zre1, zre2, ztr1, ztr2)
934 zrefz(jl, 2, jk) = (1.-zrneb(jl))*(zray1(jl,jkm1)+zrefz(jl,2,jkm1)* &
935 ztra1(jl,jkm1)*ztra2(jl,jkm1))*zg(jl)*zs(jl) + zrneb(jl)*zre1(jl)
937 ztr(jl, 2, jkm1) = zrneb(jl)*ztr1(jl) + (ztra1(jl,jkm1))*zg(jl)*(1.- &
940 zrefz(jl, 1, jk) = (1.-zrneb(jl))*(zray1(jl,jkm1)+zrefz(jl,1,jkm1)* &
941 ztra1(jl,jkm1)*ztra2(jl,jkm1)/(1.-zray2(jl,jkm1)*zrefz(jl,1, &
942 jkm1)))*zg(jl)*zs(jl) + zrneb(jl)*zre2(jl)
944 ztr(jl, 1, jkm1) = zrneb(jl)*ztr2(jl) + (ztra1(jl,jkm1)/(1.-zray2(jl, &
945 jkm1)*zrefz(jl,1,jkm1)))*zg(jl)*(1.-zrneb(jl))
959 zrj(jl, jn,
kflev+1) = 1.
960 zrk(jl, jn,
kflev+1) = zrefz(jl, jref,
kflev+1)
967 zre11 = zrj(jl, jn, jklp1)*ztr(jl, jref, jkl)
968 zrj(jl, jn, jkl) = zre11
969 zrk(jl, jn, jkl) = zre11*zrefz(jl, jref, jkl)
990 zrj(jl, jaj, jk) = zrj(jl, jaj, jk) - zrj(jl, jajp, jk)
991 zrk(jl, jaj, jk) = zrk(jl, jaj, jk) - zrk(jl, jajp, jk)
992 zrj(jl, jaj, jk) = max(zrj(jl,jaj,jk), zeelog)
993 zrk(jl, jaj, jk) = max(zrk(jl,jaj,jk), zeelog)
1001 zrj(jl, jaj, jk) = max(zrj(jl,jaj,jk), zeelog)
1002 zrk(jl, jaj, jk) = max(zrk(jl,jaj,jk), zeelog)
1011 DO jk = 1,
kflev + 1
1025 zw2(jl, 1) = log(zrj(jl,jn,jk)/zrj(jl,jn2j,jk))/paki(jl, jaj)
1026 zw2(jl, 2) = log(zrk(jl,jn,jk)/zrk(jl,jn2j,jk))/paki(jl, jaj)
1036 zrl(jl, jkki) = zr2(jl, 1)
1037 zruef(jl, jkki) = zw2(jl, 1)
1038 zrl(jl, jkkp4) = zr2(jl, 2)
1039 zruef(jl, jkkp4) = zw2(jl, 2)
1051 pfdown(jl, jk) = zrj(jl, 1, jk)*zrl(jl, 1)*zrl(jl, 3) + &
1052 zrj(jl, 2, jk)*zrl(jl, 2)*zrl(jl, 4)
1053 pfup(jl, jk) = zrk(jl, 1, jk)*zrl(jl, 5)*zrl(jl, 7) + &
1054 zrk(jl, 2, jk)*zrl(jl, 6)*zrl(jl, 8)
1084 ikl =
kflev + 1 - jk
1086 zw3(jl, 1) = zw3(jl, 1) + pud(jl, 1, ikl)/zrmu0(jl, ikl)
1087 zw3(jl, 2) = zw3(jl, 2) + pud(jl, 2, ikl)/zrmu0(jl, ikl)
1088 zw3(jl, 3) = zw3(jl, 3) + poz(jl, ikl)/zrmu0(jl, ikl)
1089 zw4(jl) = zw4(jl) + pud(jl, 4, ikl)/zrmu0(jl, ikl)
1090 zw5(jl) = zw5(jl) + pud(jl, 5, ikl)/zrmu0(jl, ikl)
1097 zfd(jl, ikl) = zr3(jl, 1)*zr3(jl, 2)*zr3(jl, 3)*zr4(jl)* &
1107 zfu(jl, 1) = zfd(jl, 1)*palbp(jl, knu)
1110 DO jk = 2,
kflev + 1
1113 zw3(jl, 1) = zw3(jl, 1) + pud(jl, 1, ikm1)*1.66
1114 zw3(jl, 2) = zw3(jl, 2) + pud(jl, 2, ikm1)*1.66
1115 zw3(jl, 3) = zw3(jl, 3) + poz(jl, ikm1)*1.66
1116 zw4(jl) = zw4(jl) + pud(jl, 4, ikm1)*1.66
1117 zw5(jl) = zw5(jl) + pud(jl, 5, ikm1)*1.66
1124 zfu(jl, jk) = zr3(jl, 1)*zr3(jl, 2)*zr3(jl, 3)*zr4(jl)* &
1144 pfdown(jl,
kflev+1) = ((1.-pclear(jl))*pfdown(jl,
kflev+1)+pclear(jl)*zfd( &
1149 ikl =
kflev + 1 - jk
1151 zw1(jl) = zw1(jl) + poz(jl, ikl)/zrmue(jl, ikl)
1152 zw4(jl) = zw4(jl) + pud(jl, 4, ikl)/zrmue(jl, ikl)
1153 zw5(jl) = zw5(jl) + pud(jl, 5, ikl)/zrmue(jl, ikl)
1160 pfdown(jl, ikl) = ((1.-pclear(jl))*zr1(jl)*zr4(jl)*pfdown(jl,ikl)+ &
1161 pclear(jl)*zfd(jl,ikl))*
rsun(knu)
1169 pfup(jl, 1) = ((1.-pclear(jl))*zr1(jl)*zr4(jl)*pfup(jl,1)+pclear(jl)*zfu( &
1173 DO jk = 2,
kflev + 1
1176 zw1(jl) = zw1(jl) + poz(jl, ikm1)*1.66
1177 zw4(jl) = zw4(jl) + pud(jl, 4, ikm1)*1.66
1178 zw5(jl) = zw5(jl) + pud(jl, 5, ikm1)*1.66
1185 pfup(jl, jk) = ((1.-pclear(jl))*zr1(jl)*zr4(jl)*pfup(jl,jk)+pclear(jl)* &
1186 zfu(jl,jk))*
rsun(knu)
1194 SUBROUTINE swclr_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, palbp, &
1195 pdsig, prayl, psec, pcgaz, ppizaz, pray1, pray2, prefz, prj, prk, prmu0, &
1196 ptauaz, ptra1, ptra2)
1227 REAL (KIND=8) flag_aer
1232 REAL (KIND=8) palbp(
kdlon, 2)
1234 REAL (KIND=8) prayl(
kdlon)
1235 REAL (KIND=8) psec(
kdlon)
1253 REAL (KIND=8) zclear(
kdlon)
1254 REAL (KIND=8) zr21(
kdlon)
1255 REAL (KIND=8) zr23(
kdlon)
1256 REAL (KIND=8) zss0(
kdlon)
1257 REAL (KIND=8) zscat(
kdlon)
1260 INTEGER jl, jk, ja, jae, jkl, jklp1, jaj, jkm1, in
1261 REAL (KIND=8) ztray, zgar, zratio, zff, zfacoa, zcorae
1262 REAL (KIND=8) zmue, zgap, zww, zto, zden, zmu1, zden1
1263 REAL (KIND=8) zbmu0, zbmu1, zre11
1272 DO jk = 1,
kflev + 1
1275 prj(jl, ja, jk) = 0.
1276 prk(jl, ja, jk) = 0.
1301 ptauaz(jl, jk) = flag_aer*tauae(jl, jk, knu)
1302 ppizaz(jl, jk) = flag_aer*pizae(jl, jk, knu)
1303 pcgaz(jl, jk) = flag_aer*cgae(jl, jk, knu)
1306 IF (flag_aer>0)
THEN
1311 ztray = prayl(jl)*pdsig(jl, jk)
1312 zratio = ztray/(ztray+ptauaz(jl,jk))
1313 zgar = pcgaz(jl, jk)
1315 ptauaz(jl, jk) = ztray + ptauaz(jl, jk)*(1.-ppizaz(jl,jk)*zff)
1316 pcgaz(jl, jk) = zgar*(1.-zratio)/(1.+zgar)
1317 ppizaz(jl, jk) = zratio + (1.-zratio)*ppizaz(jl, jk)*(1.-zff)/(1.- &
1322 ztray = prayl(jl)*pdsig(jl, jk)
1323 ptauaz(jl, jk) = ztray
1325 ppizaz(jl, jk) = 1. - repsct
1343 zc0i(jl,
kflev+1) = 0.
1349 jkl =
kflev + 1 - jk
1352 zfacoa = 1. - ppizaz(jl, jkl)*pcgaz(jl, jkl)*pcgaz(jl, jkl)
1353 zcorae = zfacoa*ptauaz(jl, jkl)*psec(jl)
1354 zr21(jl) = exp(-zcorae)
1355 zss0(jl) = 1. - zr21(jl)
1356 zcle0(jl, jkl) = zss0(jl)
1360 zclear(jl) = zclear(jl)*(1.0-max(zss0(jl),zscat(jl)))/ &
1361 (1.0-min(zscat(jl),1.-zepsec))
1362 zc0i(jl, jkl) = 1.0 - zclear(jl)
1363 zscat(jl) = zss0(jl)
1364 ELSE IF (novlp==2)
THEN
1366 zscat(jl) = max(zss0(jl), zscat(jl))
1367 zc0i(jl, jkl) = zscat(jl)
1368 ELSE IF (novlp==3)
THEN
1370 zclear(jl) = zclear(jl)*(1.0-zss0(jl))
1371 zscat(jl) = 1.0 - zclear(jl)
1372 zc0i(jl, jkl) = zscat(jl)
1377 jkl =
kflev + 1 - jk
1380 zfacoa = 1. - ppizaz(jl, jkl)*pcgaz(jl, jkl)*pcgaz(jl, jkl)
1381 zcorae = zfacoa*ptauaz(jl, jkl)*psec(jl)
1382 zr21(jl) = exp(-zcorae)
1383 zss0(jl) = 1. - zr21(jl)
1384 zcle0(jl, jkl) = zss0(jl)
1388 zclear(jl) = zclear(jl)*(1.0-max(zss0(jl),zscat(jl)))/ &
1389 (1.0-min(zscat(jl),1.-zepsec))
1390 zc0i(jl, jkl) = 1.0 - zclear(jl)
1391 zscat(jl) = zss0(jl)
1392 ELSE IF (novlp==2)
THEN
1394 zscat(jl) = max(zss0(jl), zscat(jl))
1395 zc0i(jl, jkl) = zscat(jl)
1396 ELSE IF (novlp==3)
THEN
1398 zclear(jl) = zclear(jl)*(1.0-zss0(jl))
1399 zscat(jl) = 1.0 - zclear(jl)
1400 zc0i(jl, jkl) = zscat(jl)
1412 pray1(jl,
kflev+1) = 0.
1413 pray2(jl,
kflev+1) = 0.
1414 prefz(jl, 2, 1) = palbp(jl, knu)
1415 prefz(jl, 1, 1) = palbp(jl, knu)
1416 ptra1(jl,
kflev+1) = 1.
1417 ptra2(jl,
kflev+1) = 1.
1420 DO jk = 2,
kflev + 1
1430 zmue = (1.-zc0i(jl,jk))*psec(jl) + zc0i(jl, jk)*1.66
1431 prmu0(jl, jk) = 1./zmue
1439 zgap = pcgaz(jl, jkm1)
1440 zbmu0 = 0.5 - 0.75*zgap/zmue
1441 zww = ppizaz(jl, jkm1)
1442 zto = ptauaz(jl, jkm1)
1443 zden = 1. + (1.-zww+zbmu0*zww)*zto*zmue + (1-zww)*(1.-zww+2.*zbmu0*zww) &
1445 pray1(jl, jkm1) = zbmu0*zww*zto*zmue/zden
1446 ptra1(jl, jkm1) = 1./zden
1449 zbmu1 = 0.5 - 0.75*zgap*zmu1
1450 zden1 = 1. + (1.-zww+zbmu1*zww)*zto/zmu1 + (1-zww)*(1.-zww+2.*zbmu1*zww &
1452 pray2(jl, jkm1) = zbmu1*zww*zto/zmu1/zden1
1453 ptra2(jl, jkm1) = 1./zden1
1457 prefz(jl, 1, jk) = (pray1(jl,jkm1)+prefz(jl,1,jkm1)*ptra1(jl,jkm1)* &
1458 ptra2(jl,jkm1)/(1.-pray2(jl,jkm1)*prefz(jl,1,jkm1)))
1460 ztr(jl, 1, jkm1) = (ptra1(jl,jkm1)/(1.-pray2(jl,jkm1)*prefz(jl,1, &
1463 prefz(jl, 2, jk) = (pray1(jl,jkm1)+prefz(jl,2,jkm1)*ptra1(jl,jkm1)* &
1466 ztr(jl, 2, jkm1) = ptra1(jl, jkm1)
1471 zmue = (1.-zc0i(jl,1))*psec(jl) + zc0i(jl, 1)*1.66
1472 prmu0(jl, 1) = 1./zmue
1484 prj(jl, jaj,
kflev+1) = 1.
1485 prk(jl, jaj,
kflev+1) = prefz(jl, 1,
kflev+1)
1489 jkl =
kflev + 1 - jk
1492 zre11 = prj(jl, jaj, jklp1)*ztr(jl, 1, jkl)
1493 prj(jl, jaj, jkl) = zre11
1494 prk(jl, jaj, jkl) = zre11*prefz(jl, 1, jkl)
1502 prj(jl, jaj,
kflev+1) = 1.
1503 prk(jl, jaj,
kflev+1) = prefz(jl, jaj,
kflev+1)
1507 jkl =
kflev + 1 - jk
1510 zre11 = prj(jl, jaj, jklp1)*ztr(jl, jaj, jkl)
1511 prj(jl, jaj, jkl) = zre11
1512 prk(jl, jaj, jkl) = zre11*prefz(jl, jaj, jkl)
1523 SUBROUTINE swr_lmdar4(knu, palbd, pcg, pcld, pdsig, pomega, prayl, psec, &
1524 ptau, pcgaz, ppizaz, pray1, pray2, prefz, prj, prk, prmue, ptauaz, ptra1, &
1560 REAL (KIND=8) palbd(
kdlon, 2)
1565 REAL (KIND=8) prayl(
kdlon)
1566 REAL (KIND=8) psec(
kdlon)
1585 REAL (KIND=8) zclear(
kdlon)
1586 REAL (KIND=8) zcloud(
kdlon)
1587 REAL (KIND=8) zgg(
kdlon)
1588 REAL (KIND=8) zref(
kdlon)
1589 REAL (KIND=8) zre1(
kdlon)
1590 REAL (KIND=8) zre2(
kdlon)
1591 REAL (KIND=8) zrmuz(
kdlon)
1592 REAL (KIND=8) zrneb(
kdlon)
1593 REAL (KIND=8) zr21(
kdlon)
1594 REAL (KIND=8) zr22(
kdlon)
1595 REAL (KIND=8) zr23(
kdlon)
1596 REAL (KIND=8) zss1(
kdlon)
1597 REAL (KIND=8) zto1(
kdlon)
1599 REAL (KIND=8) ztr1(
kdlon)
1600 REAL (KIND=8) ztr2(
kdlon)
1601 REAL (KIND=8) zw(
kdlon)
1603 INTEGER jk, jl, ja, jkl, jklp1, jkm1, jaj
1604 REAL (KIND=8) zfacoa, zfacoc, zcorae, zcorcd
1605 REAL (KIND=8) zmue, zgap, zww, zto, zden, zden1
1606 REAL (KIND=8) zmu1, zre11, zbmu0, zbmu1
1614 DO jk = 1,
kflev + 1
1617 prj(jl, ja, jk) = 0.
1618 prk(jl, ja, jk) = 0.
1631 zc1i(jl,
kflev+1) = 0.
1637 jkl =
kflev + 1 - jk
1640 zfacoa = 1. - ppizaz(jl, jkl)*pcgaz(jl, jkl)*pcgaz(jl, jkl)
1641 zfacoc = 1. - pomega(jl, knu, jkl)*pcg(jl, knu, jkl)*pcg(jl, knu, jkl)
1642 zcorae = zfacoa*ptauaz(jl, jkl)*psec(jl)
1643 zcorcd = zfacoc*ptau(jl, knu, jkl)*psec(jl)
1644 zr21(jl) = exp(-zcorae)
1645 zr22(jl) = exp(-zcorcd)
1646 zss1(jl) = pcld(jl, jkl)*(1.0-zr21(jl)*zr22(jl)) + &
1647 (1.0-pcld(jl,jkl))*(1.0-zr21(jl))
1648 zcleq(jl, jkl) = zss1(jl)
1652 zclear(jl) = zclear(jl)*(1.0-max(zss1(jl),zcloud(jl)))/ &
1653 (1.0-min(zcloud(jl),1.-zepsec))
1654 zc1i(jl, jkl) = 1.0 - zclear(jl)
1655 zcloud(jl) = zss1(jl)
1656 ELSE IF (novlp==2)
THEN
1658 zcloud(jl) = max(zss1(jl), zcloud(jl))
1659 zc1i(jl, jkl) = zcloud(jl)
1660 ELSE IF (novlp==3)
THEN
1662 zclear(jl) = zclear(jl)*(1.0-zss1(jl))
1663 zcloud(jl) = 1.0 - zclear(jl)
1664 zc1i(jl, jkl) = zcloud(jl)
1669 jkl =
kflev + 1 - jk
1672 zfacoa = 1. - ppizaz(jl, jkl)*pcgaz(jl, jkl)*pcgaz(jl, jkl)
1673 zfacoc = 1. - pomega(jl, knu, jkl)*pcg(jl, knu, jkl)*pcg(jl, knu, jkl)
1674 zcorae = zfacoa*ptauaz(jl, jkl)*psec(jl)
1675 zcorcd = zfacoc*ptau(jl, knu, jkl)*psec(jl)
1676 zr21(jl) = exp(-zcorae)
1677 zr22(jl) = exp(-zcorcd)
1678 zss1(jl) = pcld(jl, jkl)*(1.0-zr21(jl)*zr22(jl)) + &
1679 (1.0-pcld(jl,jkl))*(1.0-zr21(jl))
1680 zcleq(jl, jkl) = zss1(jl)
1684 zclear(jl) = zclear(jl)*(1.0-max(zss1(jl),zcloud(jl)))/ &
1685 (1.0-min(zcloud(jl),1.-zepsec))
1686 zc1i(jl, jkl) = 1.0 - zclear(jl)
1687 zcloud(jl) = zss1(jl)
1688 ELSE IF (novlp==2)
THEN
1690 zcloud(jl) = max(zss1(jl), zcloud(jl))
1691 zc1i(jl, jkl) = zcloud(jl)
1692 ELSE IF (novlp==3)
THEN
1694 zclear(jl) = zclear(jl)*(1.0-zss1(jl))
1695 zcloud(jl) = 1.0 - zclear(jl)
1696 zc1i(jl, jkl) = zcloud(jl)
1708 pray1(jl,
kflev+1) = 0.
1709 pray2(jl,
kflev+1) = 0.
1710 prefz(jl, 2, 1) = palbd(jl, knu)
1711 prefz(jl, 1, 1) = palbd(jl, knu)
1712 ptra1(jl,
kflev+1) = 1.
1713 ptra2(jl,
kflev+1) = 1.
1716 DO jk = 2,
kflev + 1
1719 zrneb(jl) = pcld(jl, jkm1)
1731 zmue = (1.-zc1i(jl,jk))*psec(jl) + zc1i(jl, jk)*1.66
1732 prmue(jl, jk) = 1./zmue
1740 zgap = pcgaz(jl, jkm1)
1741 zbmu0 = 0.5 - 0.75*zgap/zmue
1742 zww = ppizaz(jl, jkm1)
1743 zto = ptauaz(jl, jkm1)
1744 zden = 1. + (1.-zww+zbmu0*zww)*zto*zmue + (1-zww)*(1.-zww+2.*zbmu0*zww) &
1746 pray1(jl, jkm1) = zbmu0*zww*zto*zmue/zden
1747 ptra1(jl, jkm1) = 1./zden
1751 zbmu1 = 0.5 - 0.75*zgap*zmu1
1752 zden1 = 1. + (1.-zww+zbmu1*zww)*zto/zmu1 + (1-zww)*(1.-zww+2.*zbmu1*zww &
1754 pray2(jl, jkm1) = zbmu1*zww*zto/zmu1/zden1
1755 ptra2(jl, jkm1) = 1./zden1
1763 zw(jl) = pomega(jl, knu, jkm1)
1764 zto1(jl) = ptau(jl, knu, jkm1)/zw(jl) + ptauaz(jl, jkm1)/ppizaz(jl, &
1766 zr21(jl) = ptau(jl, knu, jkm1) + ptauaz(jl, jkm1)
1767 zr22(jl) = ptau(jl, knu, jkm1)/zr21(jl)
1768 zgg(jl) = zr22(jl)*pcg(jl, knu, jkm1) + (1.-zr22(jl))*pcgaz(jl, jkm1)
1772 IF (zw(jl)==1. .AND. ppizaz(jl,jkm1)==1.)
THEN
1775 zw(jl) = zr21(jl)/zto1(jl)
1777 zref(jl) = prefz(jl, 1, jkm1)
1778 zrmuz(jl) = prmue(jl, jk)
1781 CALL swde_lmdar4(zgg, zref, zrmuz, zto1, zw, zre1, zre2, ztr1, ztr2)
1785 prefz(jl, 1, jk) = (1.-zrneb(jl))*(pray1(jl,jkm1)+prefz(jl,1,jkm1)* &
1786 ptra1(jl,jkm1)*ptra2(jl,jkm1)/(1.-pray2(jl,jkm1)*prefz(jl,1, &
1787 jkm1))) + zrneb(jl)*zre2(jl)
1789 ztr(jl, 1, jkm1) = zrneb(jl)*ztr2(jl) + (ptra1(jl,jkm1)/(1.-pray2(jl, &
1790 jkm1)*prefz(jl,1,jkm1)))*(1.-zrneb(jl))
1792 prefz(jl, 2, jk) = (1.-zrneb(jl))*(pray1(jl,jkm1)+prefz(jl,2,jkm1)* &
1793 ptra1(jl,jkm1)*ptra2(jl,jkm1)) + zrneb(jl)*zre1(jl)
1795 ztr(jl, 2, jkm1) = zrneb(jl)*ztr1(jl) + ptra1(jl, jkm1)*(1.-zrneb(jl))
1800 zmue = (1.-zc1i(jl,1))*psec(jl) + zc1i(jl, 1)*1.66
1801 prmue(jl, 1) = 1./zmue
1813 prj(jl, jaj,
kflev+1) = 1.
1814 prk(jl, jaj,
kflev+1) = prefz(jl, 1,
kflev+1)
1818 jkl =
kflev + 1 - jk
1821 zre11 = prj(jl, jaj, jklp1)*ztr(jl, 1, jkl)
1822 prj(jl, jaj, jkl) = zre11
1823 prk(jl, jaj, jkl) = zre11*prefz(jl, 1, jkl)
1831 prj(jl, jaj,
kflev+1) = 1.
1832 prk(jl, jaj,
kflev+1) = prefz(jl, jaj,
kflev+1)
1836 jkl =
kflev + 1 - jk
1839 zre11 = prj(jl, jaj, jklp1)*ztr(jl, jaj, jkl)
1840 prj(jl, jaj, jkl) = zre11
1841 prk(jl, jaj, jkl) = zre11*prefz(jl, jaj, jkl)
1852 SUBROUTINE swde_lmdar4(pgg, pref, prmuz, pto1, pw, pre1, pre2, ptr1, ptr2)
1883 REAL (KIND=8) pgg(
kdlon)
1884 REAL (KIND=8) pref(
kdlon)
1885 REAL (KIND=8) prmuz(
kdlon)
1886 REAL (KIND=8) pto1(
kdlon)
1887 REAL (KIND=8) pw(
kdlon)
1888 REAL (KIND=8) pre1(
kdlon)
1889 REAL (KIND=8) pre2(
kdlon)
1890 REAL (KIND=8) ptr1(
kdlon)
1891 REAL (KIND=8) ptr2(
kdlon)
1896 REAL (KIND=8) zff, zgp, ztop, zwcp, zdt, zx1, zwm
1897 REAL (KIND=8) zrm2, zrk, zx2, zrp, zalpha, zbeta, zarg
1898 REAL (KIND=8) zexmu0, zarg2, zexkp, zexkm, zxp2p, zxm2p, zap2b, zam2b
1899 REAL (KIND=8) za11, za12, za13, za21, za22, za23
1900 REAL (KIND=8) zdena, zc1a, zc2a, zri0a, zri1a
1901 REAL (KIND=8) zri0b, zri1b
1902 REAL (KIND=8) zb21, zb22, zb23, zdenb, zc1b, zc2b
1903 REAL (KIND=8) zri0c, zri1c, zri0d, zri1d
1914 zff = pgg(jl)*pgg(jl)
1915 zgp = pgg(jl)/(1.+pgg(jl))
1916 ztop = (1.-pw(jl)*zff)*pto1(jl)
1917 zwcp = (1-zff)*pw(jl)/(1.-pw(jl)*zff)
1921 zrm2 = prmuz(jl)*prmuz(jl)
1922 zrk = sqrt(3.*zwm*zx1)
1923 zx2 = 4.*(1.-zrk*zrk*zrm2)
1925 zalpha = 3.*zwcp*zrm2*(1.+zgp*zwm)/zx2
1926 zbeta = 3.*zwcp*prmuz(jl)*(1.+3.*zgp*zrm2*zwm)/zx2
1927 zarg = min(ztop/prmuz(jl), 200._8)
1929 zarg2 = min(zrk*ztop, 200._8)
1932 zxp2p = 1. + zdt*zrp
1933 zxm2p = 1. - zdt*zrp
1934 zap2b = zalpha + zdt*zbeta
1935 zam2b = zalpha - zdt*zbeta
1946 zdena = za11*za22 - za21*za12
1947 zc1a = (za22*za13-za12*za23)/zdena
1948 zc2a = (za11*za23-za21*za13)/zdena
1949 zri0a = zc1a + zc2a - zalpha
1950 zri1a = zrp*(zc1a-zc2a) - zbeta
1951 pre1(jl) = (zri0a-zdt*zri1a)/prmuz(jl)
1952 zri0b = zc1a*zexkm + zc2a*zexkp - zalpha*zexmu0
1953 zri1b = zrp*(zc1a*zexkm-zc2a*zexkp) - zbeta*zexmu0
1954 ptr1(jl) = zexmu0 + (zri0b+zdt*zri1b)/prmuz(jl)
1959 zb21 = za21 - pref(jl)*zxp2p*zexkm
1960 zb22 = za22 - pref(jl)*zxm2p*zexkp
1961 zb23 = za23 - pref(jl)*zexmu0*(zap2b-prmuz(jl))
1962 zdenb = za11*zb22 - zb21*za12
1963 zc1b = (zb22*za13-za12*zb23)/zdenb
1964 zc2b = (za11*zb23-zb21*za13)/zdenb
1965 zri0c = zc1b + zc2b - zalpha
1966 zri1c = zrp*(zc1b-zc2b) - zbeta
1967 pre2(jl) = (zri0c-zdt*zri1c)/prmuz(jl)
1968 zri0d = zc1b*zexkm + zc2b*zexkp - zalpha*zexmu0
1969 zri1d = zrp*(zc1b*zexkm-zc2b*zexkp) - zbeta*zexmu0
1970 ptr2(jl) = zexmu0 + (zri0d+zdt*zri1d)/prmuz(jl)
2012 REAL (KIND=8) pu(
kdlon)
2014 REAL (KIND=8) ptr(
kdlon)
2027 zr1(jl) =
apad(knu, ka, 1) + pu(jl)*(
apad(knu,ka,2)+pu(jl)*(
apad(knu,ka, &
2028 3)+pu(jl)*(
apad(knu,ka,4)+pu(jl)*(
apad(knu,ka,5)+pu(jl)*(
apad(knu,ka,6) &
2029 +pu(jl)*(
apad(knu,ka,7)))))))
2031 zr2(jl) =
bpad(knu, ka, 1) + pu(jl)*(
bpad(knu,ka,2)+pu(jl)*(
bpad(knu,ka, &
2032 3)+pu(jl)*(
bpad(knu,ka,4)+pu(jl)*(
bpad(knu,ka,5)+pu(jl)*(
bpad(knu,ka,6) &
2033 +pu(jl)*(
bpad(knu,ka,7)))))))
2039 ptr(jl) = (zr1(jl)/zr2(jl))*(1.-
d(knu,ka)) +
d(knu, ka)
2081 REAL (KIND=8) pu(
kdlon, kabs)
2083 REAL (KIND=8) ptr(
kdlon, kabs)
2087 REAL (KIND=8) zr1(
kdlon)
2088 REAL (KIND=8) zr2(
kdlon)
2089 REAL (KIND=8) zu(
kdlon)
2090 INTEGER jl, ja, i, j, ia
2101 zr1(jl) =
apad(knu, ia, 1) + zu(jl)*(
apad(knu,ia,2)+zu(jl)*(
apad(knu, &
2102 ia,3)+zu(jl)*(
apad(knu,ia,4)+zu(jl)*(
apad(knu,ia,5)+zu(jl)*(
apad(knu, &
2103 ia,6)+zu(jl)*(
apad(knu,ia,7)))))))
2105 zr2(jl) =
bpad(knu, ia, 1) + zu(jl)*(
bpad(knu,ia,2)+zu(jl)*(
bpad(knu, &
2106 ia,3)+zu(jl)*(
bpad(knu,ia,4)+zu(jl)*(
bpad(knu,ia,5)+zu(jl)*(
bpad(knu, &
2107 ia,6)+zu(jl)*(
bpad(knu,ia,7)))))))
2112 ptr(jl, ja) = (zr1(jl)/zr2(jl))*(1.-
d(knu,ia)) +
d(knu, ia)
2119 SUBROUTINE lw_lmdar4(ppmb, pdp, ppsol, pdt0, pemis, ptl, ptave, pwv, pozon, &
2120 paer, pcldld, pcldlu, pview, pcolr, pcolr0, ptoplw, psollw, ptoplw0, &
2121 psollw0, psollwdown, &
2124 plwup, plwdn, plwup0, plwdn0)
2128 include
"raddimlw.h"
2168 include
"clesphys.h"
2172 REAL (KIND=8) pdt0(
kdlon)
2173 REAL (KIND=8) pemis(
kdlon)
2175 REAL (KIND=8) ppsol(
kdlon)
2180 REAL (KIND=8) pview(
kdlon)
2185 REAL (KIND=8) ptoplw(
kdlon)
2186 REAL (KIND=8) psollw(
kdlon)
2187 REAL (KIND=8) ptoplw0(
kdlon)
2188 REAL (KIND=8) psollw0(
kdlon)
2190 REAL (KIND=8) psollwdown(
kdlon)
2221 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zflux(:, :, :)
2222 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zfluc(:, :, :)
2223 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zbint(:, :)
2224 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zbsui(:)
2225 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zcts(:, :)
2226 REAL (KIND=8),
ALLOCATABLE,
SAVE :: zcntrb(:, :, :)
2229 INTEGER ilim, i, k, kpl1
2236 INTEGER itaplw0, itaplw
2238 SAVE appel1er, itaplw0, itaplw
2240 DATA appel1er/.
true./
2241 DATA itaplw0, itaplw/0, 0/
2245 WRITE (
lunout, *)
'LW clear-sky calling frequency: ', lw0pas
2246 WRITE (
lunout, *)
'LW cloudy-sky calling frequency: ', lwpas
2247 WRITE (
lunout, *)
' In general, they should be 1'
2252 ALLOCATE (zbsui(
kdlon))
2258 IF (mod(itaplw0,lw0pas)==0)
THEN
2262 zoz(i, k) = pozon(i, k)*pdp(i, k)
2266 CALL lwu_lmdar4(paer, pdp, ppmb, ppsol, zoz, ptave, pview, pwv, zabcu)
2267 CALL lwbv_lmdar4(ilim, pdp, pdt0, pemis, ppmb, ptl, ptave, zabcu, zfluc, &
2268 zbint, zbsui, zcts, zcntrb)
2271 itaplw0 = itaplw0 + 1
2273 IF (mod(itaplw,lwpas)==0)
THEN
2274 CALL lwc_lmdar4(ilim, pcldld, pcldlu, pemis, zfluc, zbint, zbsui, zcts, &
2283 pcolr(i, k) = zflux(i, 1, kpl1) + zflux(i, 2, kpl1) - zflux(i, 1, k) - &
2285 pcolr(i, k) = pcolr(i, k)*rday*
rg/rcpd/pdp(i, k)
2286 pcolr0(i, k) = zfluc(i, 1, kpl1) + zfluc(i, 2, kpl1) - zfluc(i, 1, k) - &
2288 pcolr0(i, k) = pcolr0(i, k)*rday*
rg/rcpd/pdp(i, k)
2292 psollw(i) = -zflux(i, 1, 1) - zflux(i, 2, 1)
2293 ptoplw(i) = zflux(i, 1,
kflev+1) + zflux(i, 2,
kflev+1)
2295 psollw0(i) = -zfluc(i, 1, 1) - zfluc(i, 2, 1)
2296 ptoplw0(i) = zfluc(i, 1,
kflev+1) + zfluc(i, 2,
kflev+1)
2297 psollwdown(i) = -zflux(i, 2, 1)
2301 plwup(i, k) = zflux(i, 1, k)
2302 plwup0(i, k) = zfluc(i, 1, k)
2303 plwdn(i, k) = zflux(i, 2, k)
2304 plwdn0(i, k) = zfluc(i, 2, k)
2311 SUBROUTINE lwu_lmdar4(paer, pdp, ppmb, ppsol, poz, ptave, pview, pwv, pabcu)
2316 USE chem_rep
, ONLY: rch42d, rn2o2d, rcfc112d, rcfc122d, ok_rtime2d
2320 include
"raddimlw.h"
2356 include
"clesphys.h"
2360 REAL (KIND=8) ppsol(
kdlon)
2363 REAL (KIND=8) pview(
kdlon)
2372 REAL (KIND=8) zphio(
kdlon)
2373 REAL (KIND=8) zpsc2(
kdlon)
2374 REAL (KIND=8) zpsc3(
kdlon)
2375 REAL (KIND=8) zpsh1(
kdlon)
2376 REAL (KIND=8) zpsh2(
kdlon)
2377 REAL (KIND=8) zpsh3(
kdlon)
2378 REAL (KIND=8) zpsh4(
kdlon)
2379 REAL (KIND=8) zpsh5(
kdlon)
2380 REAL (KIND=8) zpsh6(
kdlon)
2381 REAL (KIND=8) zpsio(
kdlon)
2382 REAL (KIND=8) ztcon(
kdlon)
2383 REAL (KIND=8) zphm6(
kdlon)
2384 REAL (KIND=8) zpsm6(
kdlon)
2385 REAL (KIND=8) zphn6(
kdlon)
2386 REAL (KIND=8) zpsn6(
kdlon)
2388 REAL (KIND=8) ztavi(
kdlon)
2389 REAL (KIND=8) zuaer(
kdlon, ninter)
2390 REAL (KIND=8) zxoz(
kdlon)
2391 REAL (KIND=8) zxwv(
kdlon)
2393 INTEGER jl, jk, jkj, jkjr, jkjp, ig1
2394 INTEGER jki, jkip1, ja, jj
2395 INTEGER jkl, jkp1, jkk, jkjpn
2396 INTEGER jae1, jae2, jae3, jae, jjpn
2397 INTEGER ir, jc, jcp1
2398 REAL (KIND=8) zdpm, zupm, zupmh2o, zupmco2, zupmo3, zu6, zup
2399 REAL (KIND=8) zfppw, ztx, ztx2, zzably
2400 REAL (KIND=8) zcah1, zcbh1, zcah2, zcbh2, zcah3, zcbh3
2401 REAL (KIND=8) zcah4, zcbh4, zcah5, zcbh5, zcah6, zcbh6
2402 REAL (KIND=8) zcac8, zcbc8
2403 REAL (KIND=8) zalup, zdiff
2405 REAL (KIND=8) pvgco2, pvgh2o, pvgo3
2427 zssig(jl, 1) = ppmb(jl, 1)*100.
2431 jkj = (jk-1)*ng1p1 + 1
2435 zssig(jl, jkjp) = ppmb(jl, jk+1)*100.
2440 zssig(jl, jkj) = (zssig(jl,jkjr)+zssig(jl,jkjp))*0.5 + &
2441 rt1(ig1)*(zssig(jl,jkjp)-zssig(jl,jkjr))*0.5
2456 zably(jl, 5, jki) = (zssig(jl,jki)+zssig(jl,jkip1))*0.5
2457 zably(jl, 3, jki) = (zssig(jl,jki)-zssig(jl,jkip1))/(10.*
rg)
2463 jkl =
kflev + 1 - jk
2465 zxwv(jl) = max(pwv(jl,jk), zepscq)
2466 zxoz(jl) = max(poz(jl,jk)/pdp(jl,jk), zepsco)
2468 jkj = (jk-1)*ng1p1 + 1
2472 zdpm = zably(jl, 3, jkk)
2473 zupm = zably(jl, 5, jkk)*zdpm/101325.
2474 zupmco2 = (zably(jl,5,jkk)+pvgco2)*zdpm/101325.
2475 zupmh2o = (zably(jl,5,jkk)+pvgh2o)*zdpm/101325.
2476 zupmo3 = (zably(jl,5,jkk)+pvgo3)*zdpm/101325.
2477 zduc(jl, jkk) = zdpm
2478 zably(jl, 12, jkk) = zxoz(jl)*zdpm
2479 zably(jl, 13, jkk) = zxoz(jl)*zupmo3
2481 zfppw = 1.6078*zxwv(jl)/(1.+0.608*zxwv(jl))
2482 zably(jl, 6, jkk) = zxwv(jl)*zupmh2o
2483 zably(jl, 11, jkk) = zu6*zfppw
2484 zably(jl, 10, jkk) = zu6*(1.-zfppw)
2485 zably(jl, 9, jkk) = rco2*zupmco2
2486 zably(jl, 8, jkk) = rco2*zdpm
2500 pabcu(jl, ja, 3*
kflev+1) = 0.
2505 jj = (jk-1)*ng1p1 + 1
2507 jkl =
kflev + 1 - jk
2513 jae1 = 3*
kflev + 1 - jj
2514 jae2 = 3*
kflev + 1 - (jj+1)
2515 jae3 = 3*
kflev + 1 - jjpn
2518 zuaer(jl, jae) = (
raer(jae,1)*paer(jl,jkl,1)+
raer(jae,2)*paer(jl,jkl, &
2519 2)+
raer(jae,3)*paer(jl,jkl,3)+
raer(jae,4)*paer(jl,jkl,4)+ &
2520 raer(jae,5)*paer(jl,jkl,5))/(zduc(jl,jae1)+zduc(jl,jae2)+zduc(jl, &
2530 ztavi(jl) = ptave(jl, jkl)
2531 ztcon(jl) = exp(6.08*(296./ztavi(jl)-1.))
2532 ztx = ztavi(jl) -
tref
2534 zzably = zably(jl, 6, jae1) + zably(jl, 6, jae2) + zably(jl, 6, jae3)
2535 zup = min(max(0.5*r10e*log(zzably)+5.,0._8), 6._8)
2536 zcah1 = at(1, 1) + zup*(at(1,2)+zup*(at(1,3)))
2537 zcbh1 =
bt(1, 1) + zup*(
bt(1,2)+zup*(
bt(1,3)))
2538 zpsh1(jl) = exp(zcah1*ztx+zcbh1*ztx2)
2539 zcah2 = at(2, 1) + zup*(at(2,2)+zup*(at(2,3)))
2540 zcbh2 =
bt(2, 1) + zup*(
bt(2,2)+zup*(
bt(2,3)))
2541 zpsh2(jl) = exp(zcah2*ztx+zcbh2*ztx2)
2542 zcah3 = at(3, 1) + zup*(at(3,2)+zup*(at(3,3)))
2543 zcbh3 =
bt(3, 1) + zup*(
bt(3,2)+zup*(
bt(3,3)))
2544 zpsh3(jl) = exp(zcah3*ztx+zcbh3*ztx2)
2545 zcah4 = at(4, 1) + zup*(at(4,2)+zup*(at(4,3)))
2546 zcbh4 =
bt(4, 1) + zup*(
bt(4,2)+zup*(
bt(4,3)))
2547 zpsh4(jl) = exp(zcah4*ztx+zcbh4*ztx2)
2548 zcah5 = at(5, 1) + zup*(at(5,2)+zup*(at(5,3)))
2549 zcbh5 =
bt(5, 1) + zup*(
bt(5,2)+zup*(
bt(5,3)))
2550 zpsh5(jl) = exp(zcah5*ztx+zcbh5*ztx2)
2551 zcah6 = at(6, 1) + zup*(at(6,2)+zup*(at(6,3)))
2552 zcbh6 =
bt(6, 1) + zup*(
bt(6,2)+zup*(
bt(6,3)))
2553 zpsh6(jl) = exp(zcah6*ztx+zcbh6*ztx2)
2554 zphm6(jl) = exp(-5.81e-4*ztx-1.13e-6*ztx2)
2555 zpsm6(jl) = exp(-5.57e-4*ztx-3.30e-6*ztx2)
2556 zphn6(jl) = exp(-3.46e-5*ztx+2.05e-7*ztx2)
2557 zpsn6(jl) = exp(3.70e-3*ztx-2.30e-6*ztx2)
2561 ztavi(jl) = ptave(jl, jkl)
2562 ztx = ztavi(jl) -
tref
2564 zzably = zably(jl, 9, jae1) + zably(jl, 9, jae2) + zably(jl, 9, jae3)
2565 zalup = r10e*log(zzably)
2566 zup = max(0._8, 5.0+0.5*zalup)
2567 zpsc2(jl) = (ztavi(jl)/
tref)**zup
2568 zcac8 = at(8, 1) + zup*(at(8,2)+zup*(at(8,3)))
2569 zcbc8 =
bt(8, 1) + zup*(
bt(8,2)+zup*(
bt(8,3)))
2570 zpsc3(jl) = exp(zcac8*ztx+zcbc8*ztx2)
2571 zphio(jl) = exp(
oct(1)*ztx+
oct(2)*ztx2)
2572 zpsio(jl) = exp(2.*(
oct(3)*ztx+
oct(4)*ztx2))
2576 jc = 3*
kflev + 1 - jkk
2580 pabcu(jl, 10, jc) = pabcu(jl, 10, jcp1) + zably(jl, 10, jc)*zdiff
2581 pabcu(jl, 11, jc) = pabcu(jl, 11, jcp1) + zably(jl, 11, jc)*ztcon(jl) &
2584 pabcu(jl, 12, jc) = pabcu(jl, 12, jcp1) + zably(jl, 12, jc)*zphio(jl) &
2586 pabcu(jl, 13, jc) = pabcu(jl, 13, jcp1) + zably(jl, 13, jc)*zpsio(jl) &
2589 pabcu(jl, 7, jc) = pabcu(jl, 7, jcp1) + zably(jl, 9, jc)*zpsc2(jl)* &
2591 pabcu(jl, 8, jc) = pabcu(jl, 8, jcp1) + zably(jl, 9, jc)*zpsc3(jl)* &
2593 pabcu(jl, 9, jc) = pabcu(jl, 9, jcp1) + zably(jl, 9, jc)*zpsc3(jl)* &
2596 pabcu(jl, 1, jc) = pabcu(jl, 1, jcp1) + zably(jl, 6, jc)*zpsh1(jl)* &
2598 pabcu(jl, 2, jc) = pabcu(jl, 2, jcp1) + zably(jl, 6, jc)*zpsh2(jl)* &
2600 pabcu(jl, 3, jc) = pabcu(jl, 3, jcp1) + zably(jl, 6, jc)*zpsh5(jl)* &
2602 pabcu(jl, 4, jc) = pabcu(jl, 4, jcp1) + zably(jl, 6, jc)*zpsh3(jl)* &
2604 pabcu(jl, 5, jc) = pabcu(jl, 5, jcp1) + zably(jl, 6, jc)*zpsh4(jl)* &
2606 pabcu(jl, 6, jc) = pabcu(jl, 6, jcp1) + zably(jl, 6, jc)*zpsh6(jl)* &
2609 pabcu(jl, 14, jc) = pabcu(jl, 14, jcp1) + zuaer(jl, 1)*zduc(jl, jc)* &
2611 pabcu(jl, 15, jc) = pabcu(jl, 15, jcp1) + zuaer(jl, 2)*zduc(jl, jc)* &
2613 pabcu(jl, 16, jc) = pabcu(jl, 16, jcp1) + zuaer(jl, 3)*zduc(jl, jc)* &
2615 pabcu(jl, 17, jc) = pabcu(jl, 17, jcp1) + zuaer(jl, 4)*zduc(jl, jc)* &
2617 pabcu(jl, 18, jc) = pabcu(jl, 18, jcp1) + zuaer(jl, 5)*zduc(jl, jc)* &
2624 IF (ok_rtime2d)
THEN
2625 pabcu(jl, 19, jc) = pabcu(jl, 19, jcp1) + &
2626 zably(jl, 8, jc)*rch42d(jl, jc)/rco2*zphm6(jl)*zdiff
2627 pabcu(jl, 20, jc) = pabcu(jl, 20, jcp1) + &
2628 zably(jl, 9, jc)*rch42d(jl, jc)/rco2*zpsm6(jl)*zdiff
2629 pabcu(jl, 21, jc) = pabcu(jl, 21, jcp1) + &
2630 zably(jl, 8, jc)*rn2o2d(jl, jc)/rco2*zphn6(jl)*zdiff
2631 pabcu(jl, 22, jc) = pabcu(jl, 22, jcp1) + &
2632 zably(jl, 9, jc)*rn2o2d(jl, jc)/rco2*zpsn6(jl)*zdiff
2634 pabcu(jl, 23, jc) = pabcu(jl, 23, jcp1) + &
2635 zably(jl, 8, jc)*rcfc112d(jl, jc)/rco2*zdiff
2636 pabcu(jl, 24, jc) = pabcu(jl, 24, jcp1) + &
2637 zably(jl, 8, jc)*rcfc122d(jl, jc)/rco2*zdiff
2640 pabcu(jl, 19, jc) = pabcu(jl, 19, jcp1) + &
2641 zably(jl, 8, jc)*rch4/rco2*zphm6(jl)*zdiff
2642 pabcu(jl, 20, jc) = pabcu(jl, 20, jcp1) + &
2643 zably(jl, 9, jc)*rch4/rco2*zpsm6(jl)*zdiff
2644 pabcu(jl, 21, jc) = pabcu(jl, 21, jcp1) + &
2645 zably(jl, 8, jc)*rn2o/rco2*zphn6(jl)*zdiff
2646 pabcu(jl, 22, jc) = pabcu(jl, 22, jcp1) + &
2647 zably(jl, 9, jc)*rn2o/rco2*zpsn6(jl)*zdiff
2649 pabcu(jl, 23, jc) = pabcu(jl, 23, jcp1) + &
2650 zably(jl, 8, jc)*rcfc11/rco2*zdiff
2651 pabcu(jl, 24, jc) = pabcu(jl, 24, jcp1) + &
2652 zably(jl, 8, jc)*rcfc12/rco2*zdiff
2656 pabcu(jl, 19, jc) = pabcu(jl, 19, jcp1) + &
2657 zably(jl, 8, jc)*rch4/rco2*zphm6(jl)*zdiff
2658 pabcu(jl, 20, jc) = pabcu(jl, 20, jcp1) + &
2659 zably(jl, 9, jc)*rch4/rco2*zpsm6(jl)*zdiff
2660 pabcu(jl, 21, jc) = pabcu(jl, 21, jcp1) + &
2661 zably(jl, 8, jc)*rn2o/rco2*zphn6(jl)*zdiff
2662 pabcu(jl, 22, jc) = pabcu(jl, 22, jcp1) + &
2663 zably(jl, 9, jc)*rn2o/rco2*zpsn6(jl)*zdiff
2665 pabcu(jl, 23, jc) = pabcu(jl, 23, jcp1) + &
2666 zably(jl, 8, jc)*rcfc11/rco2*zdiff
2667 pabcu(jl, 24, jc) = pabcu(jl, 24, jcp1) + &
2668 zably(jl, 8, jc)*rcfc12/rco2*zdiff
2679 SUBROUTINE lwbv_lmdar4(klim, pdp, pdt0, pemis, ppmb, ptl, ptave, pabcu, &
2680 pfluc, pbint, pbsui, pcts, pcntrb)
2683 include
"raddimlw.h"
2722 REAL (KIND=8) pdt0(
kdlon)
2723 REAL (KIND=8) pemis(
kdlon)
2732 REAL (KIND=8) pbsui(
kdlon)
2740 REAL (KIND=8) zbsur(
kdlon, ninter)
2741 REAL (KIND=8) zbtop(
kdlon, ninter)
2745 REAL (KIND=8) zgasur(
kdlon, 8, 2)
2746 REAL (KIND=8) zgbsur(
kdlon, 8, 2)
2747 REAL (KIND=8) zgatop(
kdlon, 8, 2)
2748 REAL (KIND=8) zgbtop(
kdlon, 8, 2)
2750 INTEGER nuaer, ntraer
2753 CALL lwb_lmdar4(pdt0, ptave, ptl, zb, pbint, pbsui, zbsur, zbtop, zdbsl, &
2754 zga, zgb, zgasur, zgbsur, zgatop, zgbtop)
2759 CALL lwv_lmdar4(nuaer, ntraer, klim, pabcu, zb, pbint, pbsui, zbsur, zbtop, &
2760 zdbsl, pemis, ppmb, ptave, zga, zgb, zgasur, zgbsur, zgatop, zgbtop, &
2761 pcntrb, pcts, pfluc)
2765 SUBROUTINE lwc_lmdar4(klim, pcldld, pcldlu, pemis, pfluc, pbint, pbsuin, &
2766 pcts, pcntrb, pflux)
2820 REAL (KIND=8) pbsuin(
kdlon)
2826 REAL (KIND=8) pemis(
kdlon)
2837 INTEGER jk, jl, imaxc, imx1, imx2, jkj, jkp1, jkm1
2838 INTEGER jk1, jk2, jkc, jkcp1, jcloud
2839 INTEGER imxm1, imxp1
2840 REAL (KIND=8) zcfrac
2864 IF (pcldlu(jl,jk)>zepsc)
THEN
2869 imaxc = max(imxp(jl), imaxc)
2877 DO jk = 1,
kflev + 1
2879 pflux(jl, 1, jk) = pfluc(jl, 1, jk)
2880 pflux(jl, 2, jk) = pfluc(jl, 2, jk)
2898 DO jk1 = 1,
kflev + 1
2899 DO jk2 = 1,
kflev + 1
2901 zupf(jl, jk2, jk1) = pfluc(jl, 1, jk1)
2902 zdnf(jl, jk2, jk1) = pfluc(jl, 2, jk1)
2919 DO jk = jkcp1,
kflev + 1
2925 DO jkj = jkcp1, jkm1
2927 zfu(jl) = zfu(jl) + pcntrb(jl, jk, jkj)
2933 zupf(jl, jkcp1, jk) = pbint(jl, jk) - zfu(jl)
2948 DO jkj = jkp1, jcloud
2950 zfd(jl) = zfd(jl) + pcntrb(jl, jk, jkj)
2955 zdnf(jl, jkcp1, jk) = -pbint(jl, jk) - zfd(jl)
2968 DO jk1 = 1,
kflev + 1
2969 DO jk2 = 1,
kflev + 1
2971 zclm(jl, jk1, jk2) = 0.
2980 DO jk1 = 2,
kflev + 1
2985 DO jk = jk1 - 1, 1, -1
2989 zclear(jl) = zclear(jl)*(1.0-max(pcldlu(jl, &
2990 jk),zcloud(jl)))/(1.0-min(zcloud(jl),1.-zepsec))
2991 zclm(jl, jk1, jk) = 1.0 - zclear(jl)
2992 zcloud(jl) = pcldlu(jl, jk)
2993 ELSE IF (novlp==2)
THEN
2995 zcloud(jl) = max(zcloud(jl), pcldlu(jl,jk))
2996 zclm(jl, jk1, jk) = zcloud(jl)
2997 ELSE IF (novlp==3)
THEN
2999 zclear(jl) = zclear(jl)*(1.0-pcldlu(jl,jk))
3000 zcloud(jl) = 1.0 - zclear(jl)
3001 zclm(jl, jk1, jk) = zcloud(jl)
3020 zclear(jl) = zclear(jl)*(1.0-max(pcldld(jl, &
3021 jk),zcloud(jl)))/(1.0-min(zcloud(jl),1.-zepsec))
3022 zclm(jl, jk1, jk) = 1.0 - zclear(jl)
3023 zcloud(jl) = pcldld(jl, jk)
3024 ELSE IF (novlp==2)
THEN
3026 zcloud(jl) = max(zcloud(jl), pcldld(jl,jk))
3027 zclm(jl, jk1, jk) = zcloud(jl)
3028 ELSE IF (novlp==3)
THEN
3030 zclear(jl) = zclear(jl)*(1.0-pcldld(jl,jk))
3031 zcloud(jl) = 1.0 - zclear(jl)
3032 zclm(jl, jk1, jk) = zcloud(jl)
3047 pflux(jl, 2,
kflev+1) = 0.
3050 DO jk1 =
kflev, 1, -1
3055 zfd(jl) = (1.-zclm(jl,jk1,
kflev))*zdnf(jl, 1, jk1)
3061 zfd(jl) = zfd(jl) + zclm(jl, jk1, jk1)*zdnf(jl, jk1+1, jk1)
3066 DO jk =
kflev - 1, jk1, -1
3068 zcfrac = zclm(jl, jk1, jk+1) - zclm(jl, jk1, jk)
3069 zfd(jl) = zfd(jl) + zcfrac*zdnf(jl, jk+2, jk1)
3074 pflux(jl, 2, jk1) = zfd(jl)
3084 pflux(jl, 1, 1) = pemis(jl)*pbsuin(jl) - (1.-pemis(jl))*pflux(jl, 2, 1)
3091 DO jk1 = 2,
kflev + 1
3096 zfu(jl) = (1.-zclm(jl,jk1,1))*zupf(jl, 1, jk1)
3102 zfu(jl) = zfu(jl) + zclm(jl, jk1, jk1-1)*zupf(jl, jk1, jk1)
3109 zcfrac = zclm(jl, jk1, jk-1) - zclm(jl, jk1, jk)
3110 zfu(jl) = zfu(jl) + zcfrac*zupf(jl, jk, jk1)
3115 pflux(jl, 1, jk1) = zfu(jl)
3126 IF (.NOT. levoigt)
THEN
3128 zfn10(jl) = pflux(jl, 1, klim) + pflux(jl, 2, klim)
3130 DO jk = klim + 1,
kflev + 1
3132 zfn10(jl) = zfn10(jl) + pcts(jl, jk-1)
3133 pflux(jl, 1, jk) = zfn10(jl)
3134 pflux(jl, 2, jk) = 0.0
3141 SUBROUTINE lwb_lmdar4(pdt0, ptave, ptl, pb, pbint, pbsuin, pbsur, pbtop, &
3142 pdbsl, pga, pgb, pgasur, pgbsur, pgatop, pgbtop)
3146 include
"raddimlw.h"
3198 REAL (KIND=8) pdt0(
kdlon)
3204 REAL (KIND=8) pbsuin(
kdlon)
3205 REAL (KIND=8) pbsur(
kdlon, ninter)
3206 REAL (KIND=8) pbtop(
kdlon, ninter)
3210 REAL (KIND=8) pgasur(
kdlon, 8, 2)
3211 REAL (KIND=8) pgbsur(
kdlon, 8, 2)
3212 REAL (KIND=8) pgatop(
kdlon, 8, 2)
3213 REAL (KIND=8) pgbtop(
kdlon, 8, 2)
3221 INTEGER jk, jl, ic, jnu, jf, jg
3223 INTEGER k, j, ixtox, indto, ixtx, indt
3224 INTEGER indsu, indtp
3225 REAL (KIND=8) zdsto1, zdstox, zdst1, zdstx
3228 REAL (KIND=8) tstand
4407 DO jk = 1,
kflev + 1
4424 zti(jl) = (ptl(jl,jk)-tstand)/tstand
4425 zres(jl) =
xp(1, jnu) + zti(jl)*(
xp(2,jnu)+zti(jl)*(
xp(3, &
4426 jnu)+zti(jl)*(
xp(4,jnu)+zti(jl)*(
xp(5,jnu)+zti(jl)*(
xp(6,jnu))))))
4427 pbint(jl, jk) = pbint(jl, jk) + zres(jl)
4428 pb(jl, jnu, jk) = zres(jl)
4429 zblev(jl, jk) = zres(jl)
4430 zti2(jl) = (ptave(jl,jk)-tstand)/tstand
4431 zres2(jl) =
xp(1, jnu) + zti2(jl)*(
xp(2,jnu)+zti2(jl)*(
xp(3, &
4432 jnu)+zti2(jl)*(
xp(4,jnu)+zti2(jl)*(
xp(5,jnu)+zti2(jl)*(
xp(6,jnu)))) &
4434 zblay(jl, jk) = zres2(jl)
4443 zti(jl) = (ptl(jl,
kflev+1)-tstand)/tstand
4444 zti2(jl) = (ptl(jl,1)+pdt0(jl)-tstand)/tstand
4445 zres(jl) =
xp(1, jnu) + zti(jl)*(
xp(2,jnu)+zti(jl)*(
xp(3, &
4446 jnu)+zti(jl)*(
xp(4,jnu)+zti(jl)*(
xp(5,jnu)+zti(jl)*(
xp(6,jnu))))))
4447 zres2(jl) =
xp(1, jnu) + zti2(jl)*(
xp(2,jnu)+zti2(jl)*(
xp(3, &
4448 jnu)+zti2(jl)*(
xp(4,jnu)+zti2(jl)*(
xp(5,jnu)+zti2(jl)*(
xp(6,jnu))))))
4449 pbint(jl,
kflev+1) = pbint(jl,
kflev+1) + zres(jl)
4450 pb(jl, jnu,
kflev+1) = zres(jl)
4451 zblev(jl,
kflev+1) = zres(jl)
4452 pbtop(jl, jnu) = zres(jl)
4453 pbsur(jl, jnu) = zres2(jl)
4454 pbsuin(jl) = pbsuin(jl) + zres2(jl)
4465 pdbsl(jl, jnu, jk1) = zblay(jl, jk) - zblev(jl, jk)
4466 pdbsl(jl, jnu, jk2) = zblev(jl, jk+1) - zblay(jl, jk)
4480 ixtox = max(1, min(mxixt,int(zdsto1+1.)))
4482 IF (zdstox<0.5)
THEN
4488 zdst1 = (ptl(jl,1)-
tintp(1))/tstp
4489 ixtx = max(1, min(mxixt,int(zdst1+1.)))
4490 zdstx = (ptl(jl,1)-
tintp(ixtx))/tstp
4503 pgasur(jl, jg, jf) =
ga(indsu, 2*jg-1, jf)
4504 pgbsur(jl, jg, jf) =
gb(indsu, 2*jg-1, jf)
4506 pgatop(jl, jg, jf) =
ga(indtp, 2*jg-1, jf)
4507 pgbtop(jl, jg, jf) =
gb(indtp, 2*jg-1, jf)
4514 zdst1 = (ptave(jl,jk)-
tintp(1))/tstp
4515 ixtx = max(1, min(mxixt,int(zdst1+1.)))
4516 zdstx = (ptave(jl,jk)-
tintp(ixtx))/tstp
4529 pga(jl, jg, jf, jk) =
ga(indt, 2*jg, jf)
4530 pgb(jl, jg, jf, jk) =
gb(indt, 2*jg, jf)
4540 SUBROUTINE lwv_lmdar4(kuaer, ktraer, klim, pabcu, pb, pbint, pbsuin, pbsur, &
4541 pbtop, pdbsl, pemis, ppmb, ptave, pga, pgb, pgasur, pgbsur, pgatop, &
4542 pgbtop, pcntrb, pcts, pfluc)
4545 include
"raddimlw.h"
4579 INTEGER kuaer, ktraer, klim
4584 REAL (KIND=8) pbsur(
kdlon, ninter)
4585 REAL (KIND=8) pbsuin(
kdlon)
4586 REAL (KIND=8) pbtop(
kdlon, ninter)
4588 REAL (KIND=8) pemis(
kdlon)
4593 REAL (KIND=8) pgasur(
kdlon, 8, 2)
4594 REAL (KIND=8) pgbsur(
kdlon, 8, 2)
4595 REAL (KIND=8) pgatop(
kdlon, 8, 2)
4596 REAL (KIND=8) pgbtop(
kdlon, 8, 2)
4612 DO jk = 1,
kflev + 1
4629 CALL lwvn_lmdar4(kuaer, ktraer, pabcu, pdbsl, pga, pgb, zadjd, zadju, &
4633 CALL lwvd_lmdar4(kuaer, ktraer, pabcu, zdbdt, pga, pgb, pcntrb, zdisd, &
4638 CALL lwvb_lmdar4(kuaer, ktraer, klim, pabcu, zadjd, zadju, pb, pbint, &
4639 pbsuin, pbsur, pbtop, zdisd, zdisu, pemis, ppmb, pga, pgb, pgasur, &
4640 pgbsur, pgatop, pgbtop, pcts, pfluc)
4645 SUBROUTINE lwvb_lmdar4(kuaer, ktraer, klim, pabcu, padjd, padju, pb, pbint, &
4646 pbsui, pbsur, pbtop, pdisd, pdisu, pemis, ppmb, pga, pgb, pgasur, pgbsur, &
4647 pgatop, pgbtop, pcts, pfluc)
4650 include
"raddimlw.h"
4687 INTEGER kuaer, ktraer, klim
4694 REAL (KIND=8) pbsur(
kdlon, ninter)
4695 REAL (KIND=8) pbsui(
kdlon)
4696 REAL (KIND=8) pbtop(
kdlon, ninter)
4699 REAL (KIND=8) pemis(
kdlon)
4703 REAL (KIND=8) pgasur(
kdlon, 8, 2)
4704 REAL (KIND=8) pgbsur(
kdlon, 8, 2)
4705 REAL (KIND=8) pgatop(
kdlon, 8, 2)
4706 REAL (KIND=8) pgbtop(
kdlon, 8, 2)
4713 REAL (KIND=8) zbgnd(
kdlon)
4714 REAL (KIND=8) zfd(
kdlon)
4715 REAL (KIND=8) zfn10(
kdlon)
4716 REAL (KIND=8) zfu(
kdlon)
4717 REAL (KIND=8) ztt(
kdlon, ntra)
4718 REAL (KIND=8) ztt1(
kdlon, ntra)
4719 REAL (KIND=8) ztt2(
kdlon, ntra)
4720 REAL (KIND=8) zuu(
kdlon, nua)
4721 REAL (KIND=8) zcnsol(
kdlon)
4722 REAL (KIND=8) zcntop(
kdlon)
4725 INTEGER jstra, jstru
4726 INTEGER ind1, ind2, ind3, ind4, in, jlim
4727 REAL (KIND=8) zctstr
4770 in = (jk-1)*ng1p1 + 1
4774 zuu(jl, ja) = pabcu(jl, ja, in)
4779 CALL lwtt_lmdar4(pgatop(1,1,1), pgbtop(1,1,1), zuu, ztt)
4782 zcntop(jl) = pbtop(jl, 1)*ztt(jl, 1)*ztt(jl, 10) + &
4783 pbtop(jl, 2)*ztt(jl, 2)*ztt(jl, 7)*ztt(jl, 11) + &
4784 pbtop(jl, 3)*ztt(jl, 4)*ztt(jl, 8)*ztt(jl, 12) + &
4785 pbtop(jl, 4)*ztt(jl, 5)*ztt(jl, 9)*ztt(jl, 13) + &
4786 pbtop(jl, 5)*ztt(jl, 3)*ztt(jl, 14) + pbtop(jl, 6)*ztt(jl, 6)*ztt(jl, &
4788 zfd(jl) = zcntop(jl) - pbint(jl, jk) - pdisd(jl, jk) - padjd(jl, jk)
4789 pfluc(jl, 2, jk) = zfd(jl)
4795 in = (jk-1)*ng1p1 + 1
4798 zcntop(jl) = pbtop(jl, 1) + pbtop(jl, 2) + pbtop(jl, 3) + pbtop(jl, 4) + &
4799 pbtop(jl, 5) + pbtop(jl, 6)
4800 zfd(jl) = zcntop(jl) - pbint(jl, jk) - pdisd(jl, jk) - padjd(jl, jk)
4801 pfluc(jl, 2, jk) = zfd(jl)
4815 IF (.NOT. levoigt)
THEN
4816 DO jk =
kflev, 1, -1
4817 IF (ppmb(1,jk)<10.0)
THEN
4824 IF (.NOT. levoigt)
THEN
4835 DO jstra =
kflev, jlim, -1
4836 jstru = (jstra-1)*ng1p1 + 1
4840 zuu(jl, ja) = pabcu(jl, ja, jstru)
4845 CALL lwtt_lmdar4(pga(1,1,1,jstra), pgb(1,1,1,jstra), zuu, ztt)
4848 zctstr = (pb(jl,1,jstra)+pb(jl,1,jstra+1))* &
4849 (ztt1(jl,1)*ztt1(jl,10)-ztt(jl,1)*ztt(jl,10)) + &
4850 (pb(jl,2,jstra)+pb(jl,2,jstra+1))*(ztt1(jl,2)*ztt1(jl,7)*ztt1(jl,11 &
4851 )-ztt(jl,2)*ztt(jl,7)*ztt(jl,11)) + (pb(jl,3,jstra)+pb(jl,3,jstra+1 &
4852 ))*(ztt1(jl,4)*ztt1(jl,8)*ztt1(jl,12)-ztt(jl,4)*ztt(jl,8)*ztt(jl,12 &
4853 )) + (pb(jl,4,jstra)+pb(jl,4,jstra+1))*(ztt1(jl,5)*ztt1(jl,9)*ztt1( &
4854 jl,13)-ztt(jl,5)*ztt(jl,9)*ztt(jl,13)) + (pb(jl,5,jstra)+pb(jl,5, &
4855 jstra+1))*(ztt1(jl,3)*ztt1(jl,14)-ztt(jl,3)*ztt(jl,14)) + &
4856 (pb(jl,6,jstra)+pb(jl,6,jstra+1))*(ztt1(jl,6)*ztt1(jl,15)-ztt(jl,6) &
4858 pcts(jl, jstra) = zctstr*0.5
4862 ztt1(jl, ja) = ztt(jl, ja)
4871 pcts(jl, jstra) = 0.
4881 zbgnd(jl) = pbsui(jl)*pemis(jl) - (1.-pemis(jl))*pfluc(jl, 2, 1) - &
4886 in = (jk-1)*ng1p1 + 1
4889 zcnsol(jl) = pbsur(jl, 1) + pbsur(jl, 2) + pbsur(jl, 3) + pbsur(jl, 4) + &
4890 pbsur(jl, 5) + pbsur(jl, 6)
4891 zcnsol(jl) = zcnsol(jl)*zbgnd(jl)/pbsui(jl)
4892 zfu(jl) = zcnsol(jl) + pbint(jl, jk) - pdisu(jl, jk) - padju(jl, jk)
4893 pfluc(jl, 1, jk) = zfu(jl)
4896 DO jk = 2,
kflev + 1
4897 in = (jk-1)*ng1p1 + 1
4902 zuu(jl, ja) = pabcu(jl, ja, 1) - pabcu(jl, ja, in)
4907 CALL lwtt_lmdar4(pgasur(1,1,1), pgbsur(1,1,1), zuu, ztt)
4910 zcnsol(jl) = pbsur(jl, 1)*ztt(jl, 1)*ztt(jl, 10) + &
4911 pbsur(jl, 2)*ztt(jl, 2)*ztt(jl, 7)*ztt(jl, 11) + &
4912 pbsur(jl, 3)*ztt(jl, 4)*ztt(jl, 8)*ztt(jl, 12) + &
4913 pbsur(jl, 4)*ztt(jl, 5)*ztt(jl, 9)*ztt(jl, 13) + &
4914 pbsur(jl, 5)*ztt(jl, 3)*ztt(jl, 14) + pbsur(jl, 6)*ztt(jl, 6)*ztt(jl, &
4916 zcnsol(jl) = zcnsol(jl)*zbgnd(jl)/pbsui(jl)
4917 zfu(jl) = zcnsol(jl) + pbint(jl, jk) - pdisu(jl, jk) - padju(jl, jk)
4918 pfluc(jl, 1, jk) = zfu(jl)
4928 IF (.NOT. levoigt)
THEN
4930 zfn10(jl) = pfluc(jl, 1, jlim) + pfluc(jl, 2, jlim)
4932 DO jk = jlim + 1,
kflev + 1
4934 zfn10(jl) = zfn10(jl) + pcts(jl, jk-1)
4935 pfluc(jl, 1, jk) = zfn10(jl)
4936 pfluc(jl, 2, jk) = 0.
4945 SUBROUTINE lwvd_lmdar4(kuaer, ktraer, pabcu, pdbdt, pga, pgb, pcntrb, pdisd, &
4949 include
"raddimlw.h"
4978 INTEGER kuaer, ktraer
4991 REAL (KIND=8) zglayd(
kdlon)
4992 REAL (KIND=8) zglayu(
kdlon)
4993 REAL (KIND=8) ztt(
kdlon, ntra)
4994 REAL (KIND=8) ztt1(
kdlon, ntra)
4995 REAL (KIND=8) ztt2(
kdlon, ntra)
4997 INTEGER jl, jk, ja, ikp1, ikn, ikd1, jkj, ikd2
4998 INTEGER ikjp1, ikm1, ikj, jlk, iku1, ijkl, iku2
4999 INTEGER ind1, ind2, ind3, ind4, itt
5000 REAL (KIND=8) zww, zdzxdg, zdzxmg
5010 DO jk = 1,
kflev + 1
5056 DO jk = 1,
kflev - 1
5058 ikn = (jk-1)*ng1p1 + 1
5061 CALL lwttm_lmdar4(pga(1,1,1,jk), pgb(1,1,1,jk), pabcu(1,1,ikn), &
5062 pabcu(1,1,ikd1), ztt1)
5069 DO jkj = ikp1,
kflev
5076 ikd2 = jkj*ng1p1 + 1
5079 CALL lwttm_lmdar4(pga(1,1,1,jkj), pgb(1,1,1,jkj), pabcu(1,1,ikn), &
5080 pabcu(1,1,ikd2), ztt1)
5082 CALL lwttm_lmdar4(pga(1,1,1,jkj), pgb(1,1,1,jkj), pabcu(1,1,ikn), &
5083 pabcu(1,1,ikd2), ztt2)
5088 ztt(jl, ja) = (ztt1(jl,ja)+ztt2(jl,ja))*0.5
5093 zww = pdbdt(jl, 1, jkj)*ztt(jl, 1)*ztt(jl, 10) + &
5094 pdbdt(jl, 2, jkj)*ztt(jl, 2)*ztt(jl, 7)*ztt(jl, 11) + &
5095 pdbdt(jl, 3, jkj)*ztt(jl, 4)*ztt(jl, 8)*ztt(jl, 12) + &
5096 pdbdt(jl, 4, jkj)*ztt(jl, 5)*ztt(jl, 9)*ztt(jl, 13) + &
5097 pdbdt(jl, 5, jkj)*ztt(jl, 3)*ztt(jl, 14) + &
5098 pdbdt(jl, 6, jkj)*ztt(jl, 6)*ztt(jl, 15)
5101 pdisd(jl, jk) = pdisd(jl, jk) + zdzxdg
5102 pcntrb(jl, jk, ikjp1) = zdzxdg
5119 DO jk = 3,
kflev + 1
5120 ikn = (jk-1)*ng1p1 + 1
5123 iku1 = ikj*ng1p1 + 1
5126 CALL lwttm_lmdar4(pga(1,1,1,ikj), pgb(1,1,1,ikj), pabcu(1,1,iku1), &
5127 pabcu(1,1,ikn), ztt1)
5141 iku2 = (ijkl-1)*ng1p1 + 1
5145 CALL lwttm_lmdar4(pga(1,1,1,ijkl), pgb(1,1,1,ijkl), pabcu(1,1,iku2), &
5146 pabcu(1,1,ikn), ztt1)
5148 CALL lwttm_lmdar4(pga(1,1,1,ijkl), pgb(1,1,1,ijkl), pabcu(1,1,iku2), &
5149 pabcu(1,1,ikn), ztt2)
5154 ztt(jl, ja) = (ztt1(jl,ja)+ztt2(jl,ja))*0.5
5159 zww = pdbdt(jl, 1, ijkl)*ztt(jl, 1)*ztt(jl, 10) + &
5160 pdbdt(jl, 2, ijkl)*ztt(jl, 2)*ztt(jl, 7)*ztt(jl, 11) + &
5161 pdbdt(jl, 3, ijkl)*ztt(jl, 4)*ztt(jl, 8)*ztt(jl, 12) + &
5162 pdbdt(jl, 4, ijkl)*ztt(jl, 5)*ztt(jl, 9)*ztt(jl, 13) + &
5163 pdbdt(jl, 5, ijkl)*ztt(jl, 3)*ztt(jl, 14) + &
5164 pdbdt(jl, 6, ijkl)*ztt(jl, 6)*ztt(jl, 15)
5167 pdisu(jl, jk) = pdisu(jl, jk) + zdzxmg
5168 pcntrb(jl, jk, ijkl) = zdzxmg
5177 SUBROUTINE lwvn_lmdar4(kuaer, ktraer, pabcu, pdbsl, pga, pgb, padjd, padju, &
5182 include
"raddimlw.h"
5213 INTEGER kuaer, ktraer
5227 REAL (KIND=8) zglayd(
kdlon)
5228 REAL (KIND=8) zglayu(
kdlon)
5229 REAL (KIND=8) ztt(
kdlon, ntra)
5230 REAL (KIND=8) ztt1(
kdlon, ntra)
5231 REAL (KIND=8) ztt2(
kdlon, ntra)
5232 REAL (KIND=8) zuu(
kdlon, nua)
5234 INTEGER jk, jl, ja, im12, ind, inu, ixu, jg
5235 INTEGER ixd, ibs, idd, imu, jk1, jk2, jnu
5248 DO jk = 1,
kflev + 1
5290 ind = (jk-1)*ng1p1 + 1
5305 zuu(jl, ja) = pabcu(jl, ja, ind) - pabcu(jl, ja, idd)
5310 CALL lwtt_lmdar4(pga(1,1,1,jk), pgb(1,1,1,jk), zuu, ztt)
5313 zwtr = pdbsl(jl, 1, ibs)*ztt(jl, 1)*ztt(jl, 10) + &
5314 pdbsl(jl, 2, ibs)*ztt(jl, 2)*ztt(jl, 7)*ztt(jl, 11) + &
5315 pdbsl(jl, 3, ibs)*ztt(jl, 4)*ztt(jl, 8)*ztt(jl, 12) + &
5316 pdbsl(jl, 4, ibs)*ztt(jl, 5)*ztt(jl, 9)*ztt(jl, 13) + &
5317 pdbsl(jl, 5, ibs)*ztt(jl, 3)*ztt(jl, 14) + &
5318 pdbsl(jl, 6, ibs)*ztt(jl, 6)*ztt(jl, 15)
5319 zglayd(jl) = zglayd(jl) + zwtr*
wg1(jg)
5329 zuu(jl, ja) = pabcu(jl, ja, imu) - pabcu(jl, ja, inu)
5334 CALL lwtt_lmdar4(pga(1,1,1,jk), pgb(1,1,1,jk), zuu, ztt)
5337 zwtr = pdbsl(jl, 1, ibs)*ztt(jl, 1)*ztt(jl, 10) + &
5338 pdbsl(jl, 2, ibs)*ztt(jl, 2)*ztt(jl, 7)*ztt(jl, 11) + &
5339 pdbsl(jl, 3, ibs)*ztt(jl, 4)*ztt(jl, 8)*ztt(jl, 12) + &
5340 pdbsl(jl, 4, ibs)*ztt(jl, 5)*ztt(jl, 9)*ztt(jl, 13) + &
5341 pdbsl(jl, 5, ibs)*ztt(jl, 3)*ztt(jl, 14) + &
5342 pdbsl(jl, 6, ibs)*ztt(jl, 6)*ztt(jl, 15)
5343 zglayu(jl) = zglayu(jl) + zwtr*
wg1(jg)
5349 padjd(jl, jk) = zglayd(jl)
5350 pcntrb(jl, jk, jk+1) = zglayd(jl)
5351 padju(jl, jk+1) = zglayu(jl)
5352 pcntrb(jl, jk+1, jk) = zglayu(jl)
5353 pcntrb(jl, jk, jk) = 0.0
5363 pdbdt(jl, jnu, jk) = pdbsl(jl, jnu, jk1) + pdbsl(jl, jnu, jk2)
5374 include
"raddimlw.h"
5407 REAL (KIND=8) o1h, o2h
5410 REAL (KIND=8) rpialf0
5415 REAL (KIND=8) puu(
kdlon, nua)
5416 REAL (KIND=8) ptt(
kdlon, ntra)
5417 REAL (KIND=8) pga(
kdlon, 8, 2)
5418 REAL (KIND=8) pgb(
kdlon, 8, 2)
5422 REAL (KIND=8) zz, zxd, zxn
5423 REAL (KIND=8) zpu, zpu10, zpu11, zpu12, zpu13
5424 REAL (KIND=8) zeu, zeu10, zeu11, zeu12, zeu13
5425 REAL (KIND=8) zx, zy, zsq1, zsq2, zvxy, zuxy
5426 REAL (KIND=8) zaercn, zto1, zto2, zxch4, zych4, zxn2o, zyn2o
5427 REAL (KIND=8) zsqn21, zodn21, zsqh42, zodh42
5428 REAL (KIND=8) zsqh41, zodh41, zsqn22, zodn22, zttf11, zttf12
5429 REAL (KIND=8) zuu11, zuu12, za11, za12
5442 zz = sqrt(puu(jl,ja))
5446 zxd = pgb(jl, ja, 1) + zz*(pgb(jl,ja,2)+zz)
5447 zxn = pga(jl, ja, 1) + zz*(pga(jl,ja,2))
5448 ptt(jl, ja) = zxn/zxd
5459 ptt(jl, 9) = ptt(jl, 8)
5463 zpu = 0.002*puu(jl, 10)
5478 zuxy = 4.*zx*zx/(rpialf0*zy)
5479 zsq1 = sqrt(1.+o1h*zuxy) - 1.
5480 zsq2 = sqrt(1.+o2h*zuxy) - 1.
5481 zvxy = rpialf0*zy/(2.*zx)
5482 zaercn = puu(jl, 17) + zeu12 + zpu12
5483 zto1 = exp(-zvxy*zsq1-zaercn)
5484 zto2 = exp(-zvxy*zsq2-zaercn)
5494 zuxy = 4.*zxch4*zxch4/(0.103*zych4)
5495 zsqh41 = sqrt(1.+33.7*zuxy) - 1.
5496 zvxy = 0.103*zych4/(2.*zxch4)
5497 zodh41 = zvxy*zsqh41
5503 zuxy = 4.*zxn2o*zxn2o/(0.416*zyn2o)
5504 zsqn21 = sqrt(1.+21.3*zuxy) - 1.
5505 zvxy = 0.416*zyn2o/(2.*zxn2o)
5506 zodn21 = zvxy*zsqn21
5510 zuxy = 4.*zxch4*zxch4/(0.113*zych4)
5511 zsqh42 = sqrt(1.+400.*zuxy) - 1.
5512 zvxy = 0.113*zych4/(2.*zxch4)
5513 zodh42 = zvxy*zsqh42
5517 zuxy = 4.*zxn2o*zxn2o/(0.197*zyn2o)
5518 zsqn22 = sqrt(1.+2000.*zuxy) - 1.
5519 zvxy = 0.197*zyn2o/(2.*zxn2o)
5520 zodn22 = zvxy*zsqn22
5524 za11 = 2.*puu(jl, 23)*4.404e+05
5525 zttf11 = 1. - za11*0.003225
5529 za12 = 2.*puu(jl, 24)*6.7435e+05
5530 zttf12 = 1. - za12*0.003225
5532 zuu11 = -puu(jl, 15) - zeu10 - zpu10
5533 zuu12 = -puu(jl, 16) - zeu11 - zpu11 - zodh41 - zodn21
5534 ptt(jl, 10) = exp(-puu(jl,14))
5535 ptt(jl, 11) = exp(zuu11)
5536 ptt(jl, 12) = exp(zuu12)*zttf11*zttf12
5537 ptt(jl, 13) = 0.7554*zto1 + 0.2446*zto2
5538 ptt(jl, 14) = ptt(jl, 10)*exp(-zeu13-zpu13)
5539 ptt(jl, 15) = exp(-puu(jl,14)-zodh42-zodn22)
5547 include
"raddimlw.h"
5580 REAL (KIND=8) o1h, o2h
5583 REAL (KIND=8) rpialf0
5588 REAL (KIND=8) pga(
kdlon, 8, 2)
5589 REAL (KIND=8) pgb(
kdlon, 8, 2)
5590 REAL (KIND=8) puu1(
kdlon, nua)
5591 REAL (KIND=8) puu2(
kdlon, nua)
5592 REAL (KIND=8) ptt(
kdlon, ntra)
5597 REAL (KIND=8) zz, zxd, zxn
5598 REAL (KIND=8) zpu, zpu10, zpu11, zpu12, zpu13
5599 REAL (KIND=8) zeu, zeu10, zeu11, zeu12, zeu13
5600 REAL (KIND=8) zx, zy, zuxy, zsq1, zsq2, zvxy, zaercn, zto1, zto2
5601 REAL (KIND=8) zxch4, zych4, zsqh41, zodh41
5602 REAL (KIND=8) zxn2o, zyn2o, zsqn21, zodn21, zsqh42, zodh42
5603 REAL (KIND=8) zsqn22, zodn22, za11, zttf11, za12, zttf12
5604 REAL (KIND=8) zuu11, zuu12
5619 zz = sqrt(puu1(jl,ja)-puu2(jl,ja))
5620 zxd = pgb(jl, ja, 1) + zz*(pgb(jl,ja,2)+zz)
5621 zxn = pga(jl, ja, 1) + zz*(pga(jl,ja,2))
5622 ptt(jl, ja) = zxn/zxd
5633 ptt(jl, 9) = ptt(jl, 8)
5637 zpu = 0.002*(puu1(jl,10)-puu2(jl,10))
5642 zeu = (puu1(jl,11)-puu2(jl,11))
5650 zx = (puu1(jl,12)-puu2(jl,12))
5651 zy = (puu1(jl,13)-puu2(jl,13))
5652 zuxy = 4.*zx*zx/(rpialf0*zy)
5653 zsq1 = sqrt(1.+o1h*zuxy) - 1.
5654 zsq2 = sqrt(1.+o2h*zuxy) - 1.
5655 zvxy = rpialf0*zy/(2.*zx)
5656 zaercn = (puu1(jl,17)-puu2(jl,17)) + zeu12 + zpu12
5657 zto1 = exp(-zvxy*zsq1-zaercn)
5658 zto2 = exp(-zvxy*zsq2-zaercn)
5664 zxch4 = (puu1(jl,19)-puu2(jl,19))
5665 zych4 = (puu1(jl,20)-puu2(jl,20))
5666 zuxy = 4.*zxch4*zxch4/(0.103*zych4)
5667 zsqh41 = sqrt(1.+33.7*zuxy) - 1.
5668 zvxy = 0.103*zych4/(2.*zxch4)
5669 zodh41 = zvxy*zsqh41
5673 zxn2o = (puu1(jl,21)-puu2(jl,21))
5674 zyn2o = (puu1(jl,22)-puu2(jl,22))
5675 zuxy = 4.*zxn2o*zxn2o/(0.416*zyn2o)
5676 zsqn21 = sqrt(1.+21.3*zuxy) - 1.
5677 zvxy = 0.416*zyn2o/(2.*zxn2o)
5678 zodn21 = zvxy*zsqn21
5682 zuxy = 4.*zxch4*zxch4/(0.113*zych4)
5683 zsqh42 = sqrt(1.+400.*zuxy) - 1.
5684 zvxy = 0.113*zych4/(2.*zxch4)
5685 zodh42 = zvxy*zsqh42
5689 zuxy = 4.*zxn2o*zxn2o/(0.197*zyn2o)
5690 zsqn22 = sqrt(1.+2000.*zuxy) - 1.
5691 zvxy = 0.197*zyn2o/(2.*zxn2o)
5692 zodn22 = zvxy*zsqn22
5696 za11 = (puu1(jl,23)-puu2(jl,23))*4.404e+05
5697 zttf11 = 1. - za11*0.003225
5701 za12 = (puu1(jl,24)-puu2(jl,24))*6.7435e+05
5702 zttf12 = 1. - za12*0.003225
5704 zuu11 = -(puu1(jl,15)-puu2(jl,15)) - zeu10 - zpu10
5705 zuu12 = -(puu1(jl,16)-puu2(jl,16)) - zeu11 - zpu11 - zodh41 - zodn21
5706 ptt(jl, 10) = exp(-(puu1(jl,14)-puu2(jl,14)))
5707 ptt(jl, 11) = exp(zuu11)
5708 ptt(jl, 12) = exp(zuu12)*zttf11*zttf12
5709 ptt(jl, 13) = 0.7554*zto1 + 0.2446*zto2
5710 ptt(jl, 14) = ptt(jl, 10)*exp(-zeu13-zpu13)
5711 ptt(jl, 15) = exp(-(puu1(jl,14)-puu2(jl,14))-zodh42-zodn22)
real(kind=8), dimension(5, 5), parameter raer
real(kind=8), dimension(11, 16, 3), parameter gb
real(kind=8), dimension(11), parameter tintp
real(kind=8), parameter rtumg
subroutine lwttm_lmdar4(pga, pgb, puu1, puu2, ptt)
real(kind=8), dimension(11, 16, 3), parameter ga
subroutine lwvb_lmdar4(kuaer, ktraer, klim, pabcu, padjd, padju, pb, pbint, pbsui, pbsur, pbtop, pdisd, pdisu, pemis, ppmb, pga, pgb, pgasur, pgbsur, pgatop, pgbtop, pcts, pfluc)
real(kind=8), parameter zprumg
subroutine swtt1_lmdar4(knu, kabs, kind, pu, ptr)
real(kind=8), dimension(4), parameter oct
real(kind=8), dimension(2, 5), parameter taua
real(kind=8), dimension(2) rsun
subroutine lw_lmdar4(ppmb, pdp, ppsol, pdt0, pemis, ptl, ptave, pwv, pozon,paer, pcldld, pcldlu, pview, pcolr, pcolr0, ptoplw, psollw, ptoplw0,psollw0, psollwdown,
subroutine lwtt_lmdar4(pga, pgb, puu, ptt)
real(kind=8), parameter zpdh2o
real(kind=8), dimension(2, 3, 7), parameter apad
real(kind=8), dimension(2, 6), parameter rray
subroutine swde_lmdar4(pgg, pref, prmuz, pto1, pw, pre1, pre2, ptr1, ptr2)
real(kind=8), dimension(2), parameter rt1
real(kind=8), dimension(2, 5), parameter rcga
real(kind=8), parameter zprh2o
!$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 lwvn_lmdar4(kuaer, ktraer, pabcu, pdbsl, pga, pgb, padjd, padju, pcntrb, pdbdt)
subroutine swr_lmdar4(knu, palbd, pcg, pcld, pdsig, pomega, prayl, psec, ptau, pcgaz, ppizaz, pray1, pray2, prefz, prj, prk, prmue, ptauaz, ptra1, ptra2)
subroutine swtt_lmdar4(knu, ka, pu, ptr)
real(kind=8), dimension(2, 3, 7), parameter bpad
real(kind=8), parameter rtdh2o
subroutine swu_lmdar4(psct, pcldsw, ppmb, ppsol, prmu0, pfrac, ptave, pwv, paki, pcld, pclear, pdsig, pfact, prmu, psec, pud)
subroutine lwc_lmdar4(klim, pcldld, pcldlu, pemis, pfluc, pbint, pbsuin, pcts, pcntrb, pflux)
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
subroutine sw2s_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, paki, palbd, palbp, pcg, pcld, pclear, pcldsw, pdsig, pomega, poz, prmu, psec, ptau, pud, pwv, pqs, pfdown, pfup)
real(kind=8), dimension(2), parameter wg1
!$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 true
real(kind=8), parameter tref
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)
subroutine swclr_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, palbp, pdsig, prayl, psec, pcgaz, ppizaz, pray1, pray2, prefz, prj, prk, prmu0, ptauaz, ptra1, ptra2)
real(kind=8), dimension(6, 6), parameter xp
real(kind=8), dimension(2, 5), parameter rpiza
real(kind=8), parameter rtdumg
subroutine lwv_lmdar4(kuaer, ktraer, klim, pabcu, pb, pbint, pbsuin, pbsur, pbtop, pdbsl, pemis, ppmb, ptave, pga, pgb, pgasur, pgbsur, pgatop, pgbtop, pcntrb, pcts, pfluc)
subroutine lwb_lmdar4(pdt0, ptave, ptl, pb, pbint, pbsuin, pbsur, pbtop, pdbsl, pga, pgb, pgasur, pgbsur, pgatop, pgbtop)
real(kind=8), parameter zpdumg
character(len=4), save type_trac
real(kind=8), parameter rth2o
subroutine lwu_lmdar4(paer, pdp, ppmb, ppsol, poz, ptave, pview, pwv, pabcu)
real(kind=8), dimension(2, 3), parameter d
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
subroutine lwvd_lmdar4(kuaer, ktraer, pabcu, pdbdt, pga, pgb, pcntrb, pdisd, pdisu)
subroutine lwbv_lmdar4(klim, pdp, pdt0, pemis, ppmb, ptl, ptave, pabcu, pfluc, pbint, pbsui, pcts, pcntrb)
real(kind=8), dimension(8, 3), parameter bt
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
subroutine sw1s_lmdar4(knu, paer, flag_aer, tauae, pizae, cgae, palbd, palbp, pcg, pcld, pclear, pcldsw, pdsig, pomega, poz, prmu, psec, ptau, pud, pfd, pfu)