280 module module_radlw_main
283 use physparam
, only : ilwrate, ilwrgas, ilwcliq, ilwcice, &
284 & isubclw, icldflg, iovrlw, ivflip, &
286 use physcons
, only : con_g, con_cp, con_avgd, con_amd, &
288 use mersenne_twister
, only : random_setseed, random_number, &
301 character(40),
parameter :: &
302 & VTAGLW=
'NCEP LW v5.1 Nov 2012 -RRTMG-LW v4.82 ' 312 real (kind=kind_phys),
parameter :: eps = 1.0e-6
313 real (kind=kind_phys),
parameter :: oneminus= 1.0-eps
314 real (kind=kind_phys),
parameter :: cldmin = 1.0e-80
315 real (kind=kind_phys),
parameter :: bpade = 1.0/0.278
316 real (kind=kind_phys),
parameter :: stpfac = 296.0/1013.0
317 real (kind=kind_phys),
parameter :: wtdiff = 0.5
318 real (kind=kind_phys),
parameter :: tblint =
ntbl 319 real (kind=kind_phys),
parameter :: f_zero = 0.0
320 real (kind=kind_phys),
parameter :: f_one = 1.0
323 real (kind=kind_phys),
parameter :: amdw = con_amd/con_amw
324 real (kind=kind_phys),
parameter :: amdo3 = con_amd/con_amo3
327 integer,
dimension(nbands) :: nspa, nspb
329 data nspa / 1, 1, 9, 9, 9, 1, 9, 1, 9, 1, 1, 9, 9, 1, 9, 9 /
330 data nspb / 1, 1, 5, 5, 5, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0 /
350 real (kind=kind_phys),
dimension(nbands) :: a0, a1, a2
352 data a0 / 1.66, 1.55, 1.58, 1.66, 1.54, 1.454, 1.89, 1.33, &
353 & 1.668, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66, 1.66 /
354 data a1 / 0.00, 0.25, 0.22, 0.00, 0.13, 0.446, -0.10, 0.40, &
355 & -0.006, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 /
356 data a2 / 0.00, -12.0, -11.7, 0.00, -0.72,-0.243, 0.19,-0.062, &
357 & 0.414, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 /
361 logical :: lhlwb = .false.
362 logical :: lhlw0 = .false.
363 logical :: lflxprf= .false.
371 real (kind=kind_phys) :: fluxfac, heatfac, semiss0(
nbands)
372 data semiss0(:) /
nbands*1.0 /
374 real (kind=kind_phys) :: tau_tbl(0:
ntbl)
375 real (kind=kind_phys) :: exp_tbl(0:
ntbl)
376 real (kind=kind_phys) :: tfn_tbl(0:
ntbl)
383 integer,
parameter :: ipsdlw0 =
ngptlw 457 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
458 & clouds,icseed,aerosols,sfemis,sfgtmp, &
459 & npts, nlay, nlp1, lprnt, &
460 & hlwc,topflx,sfcflx, &
636 integer,
intent(in) :: npts, nlay, nlp1
637 integer,
intent(in) :: icseed(npts)
639 logical,
intent(in) :: lprnt
641 real (kind=kind_phys),
dimension(npts,nlp1),
intent(in) :: plvl, &
643 real (kind=kind_phys),
dimension(npts,nlay),
intent(in) :: plyr, &
646 real (kind=kind_phys),
dimension(npts,nlay,9),
intent(in):: gasvmr
647 real (kind=kind_phys),
dimension(npts,nlay,11) :: clouds
649 real (kind=kind_phys),
dimension(npts),
intent(in) :: sfemis, &
652 real (kind=kind_phys),
dimension(npts,nlay,nbands,3),
intent(in):: &
656 real (kind=kind_phys),
dimension(npts,nlay),
intent(out) :: hlwc
658 type(
topflw_type),
dimension(npts),
intent(out) :: topflx
659 type(
sfcflw_type),
dimension(npts),
intent(out) :: sfcflx
662 real (kind=kind_phys),
dimension(npts,nlay,nbands),
optional, &
663 & intent(out) :: hlwb
664 real (kind=kind_phys),
dimension(npts,nlay),
optional, &
665 & intent(out) :: hlw0
666 type (
proflw_type),
dimension(npts,nlp1),
optional, &
667 & intent(out) :: flxprf
670 real (kind=kind_phys),
dimension(0:nlp1) :: cldfrc
672 real (kind=kind_phys),
dimension(0:nlay) :: totuflux, totdflux, &
673 & totuclfl, totdclfl, tz
675 real (kind=kind_phys),
dimension(nlay) :: htr, htrcl
677 real (kind=kind_phys),
dimension(nlay) :: pavel, tavel, delp, &
678 & clwp, ciwp, relw, reiw, cda1, cda2, cda3, cda4, &
679 & coldry, colbrd, h2ovmr, o3vmr, fac00, fac01, fac10, fac11, &
680 & selffac, selffrac, forfac, forfrac, minorfrac, scaleminor, &
681 & scaleminorn2, temcol
683 real (kind=kind_phys),
dimension(nbands,0:nlay) :: pklev, pklay
685 real (kind=kind_phys),
dimension(nlay,nbands) :: htrb
686 real (kind=kind_phys),
dimension(nbands,nlay) :: taucld, tauaer
687 real (kind=kind_phys),
dimension(ngptlw,nlay) :: fracs, tautot, &
690 real (kind=kind_phys),
dimension(nbands) :: semiss, secdiff
694 real (kind=kind_phys) :: colamt(nlay,
maxgas)
698 real (kind=kind_phys) :: wx(nlay,
maxxsec)
702 real (kind=kind_phys) :: rfrate(nlay,
nrates,2)
704 real (kind=kind_phys) :: tem0, tem1, tem2, pwvcm, summol, stemp
706 integer,
dimension(npts) :: ipseed
707 integer,
dimension(nlay) :: jp, jt, jt1, indself, indfor, indminor
708 integer :: laytrop, iplon, i, j, k, k1
717 lhlwb =
present ( hlwb )
718 lhlw0 =
present ( hlw0 )
719 lflxprf=
present ( flxprf )
727 if ( isubclw == 1 )
then 729 ipseed(i) = ipsdlw0 + i
731 elseif ( isubclw == 2 )
then 733 ipseed(i) = icseed(i)
744 lab_do_iplon :
do iplon = 1, npts
747 if (sfemis(iplon) > eps .and. sfemis(iplon) <= 1.0)
then 749 semiss(j) = sfemis(iplon)
753 semiss(j) = semiss0(j)
757 stemp = sfgtmp(iplon)
768 if (ivflip == 0)
then 771 tem2 = 1.0e-20 * 1.0e3 * con_avgd
772 tz(0) = tlvl(iplon,nlp1)
776 pavel(k)= plyr(iplon,k1)
777 delp(k) = plvl(iplon,k1+1) - plvl(iplon,k1)
778 tavel(k)= tlyr(iplon,k1)
779 tz(k) = tlvl(iplon,k1)
788 h2ovmr(k)= max(f_zero,qlyr(iplon,k1) &
789 & *amdw/(f_one-qlyr(iplon,k1)))
790 o3vmr(k)= max(f_zero,olyr(iplon,k1)*amdo3)
793 tem0 = (f_one - h2ovmr(k))*con_amd + h2ovmr(k)*con_amw
794 coldry(k) = tem2*delp(k) / (tem1*tem0*(f_one+h2ovmr(k)))
795 temcol(k) = 1.0e-12 * coldry(k)
797 colamt(k,1) = max(f_zero, coldry(k)*h2ovmr(k))
798 colamt(k,2) = max(temcol(k), coldry(k)*gasvmr(iplon,k1,1))
799 colamt(k,3) = max(temcol(k), coldry(k)*o3vmr(k))
806 if (ilwrgas > 0)
then 809 colamt(k,4)=max(temcol(k), coldry(k)*gasvmr(iplon,k1,2))
810 colamt(k,5)=max(temcol(k), coldry(k)*gasvmr(iplon,k1,3))
811 colamt(k,6)=max(f_zero, coldry(k)*gasvmr(iplon,k1,4))
812 colamt(k,7)=max(f_zero, coldry(k)*gasvmr(iplon,k1,5))
814 wx(k,1) = max( f_zero, coldry(k)*gasvmr(iplon,k1,9) )
815 wx(k,2) = max( f_zero, coldry(k)*gasvmr(iplon,k1,6) )
816 wx(k,3) = max( f_zero, coldry(k)*gasvmr(iplon,k1,7) )
817 wx(k,4) = max( f_zero, coldry(k)*gasvmr(iplon,k1,8) )
838 tauaer(j,k) = aerosols(iplon,k1,j,1) &
839 & * (f_one - aerosols(iplon,k1,j,2))
844 if (ilwcliq > 0)
then 847 cldfrc(k)= clouds(iplon,k1,1)
848 clwp(k) = clouds(iplon,k1,2)
849 relw(k) = clouds(iplon,k1,3)
850 ciwp(k) = clouds(iplon,k1,4)
851 reiw(k) = clouds(iplon,k1,5)
852 cda1(k) = clouds(iplon,k1,6)
853 cda2(k) = clouds(iplon,k1,7)
854 cda3(k) = clouds(iplon,k1,8)
855 cda4(k) = clouds(iplon,k1,9)
860 cldfrc(k)= clouds(iplon,k1,1)
861 cda1(k) = clouds(iplon,k1,2)
866 cldfrc(nlp1) = f_zero
873 tem1 = tem1 + coldry(k) + colamt(k,1)
874 tem2 = tem2 + colamt(k,1)
877 tem0 = 10.0 * tem2 / (amdw * tem1 * con_g)
878 pwvcm = tem0 * plvl(iplon,nlp1)
883 tem2 = 1.0e-20 * 1.0e3 * con_avgd
884 tz(0) = tlvl(iplon,1)
887 pavel(k)= plyr(iplon,k)
888 delp(k) = plvl(iplon,k) - plvl(iplon,k+1)
889 tavel(k)= tlyr(iplon,k)
890 tz(k) = tlvl(iplon,k+1)
898 h2ovmr(k)= max(f_zero,qlyr(iplon,k) &
899 & *amdw/(f_one-qlyr(iplon,k)))
900 o3vmr(k)= max(f_zero,olyr(iplon,k)*amdo3)
903 tem0 = (f_one - h2ovmr(k))*con_amd + h2ovmr(k)*con_amw
904 coldry(k) = tem2*delp(k) / (tem1*tem0*(f_one+h2ovmr(k)))
905 temcol(k) = 1.0e-12 * coldry(k)
907 colamt(k,1) = max(f_zero, coldry(k)*h2ovmr(k))
908 colamt(k,2) = max(temcol(k), coldry(k)*gasvmr(iplon,k,1))
909 colamt(k,3) = max(temcol(k), coldry(k)*o3vmr(k))
915 if (ilwrgas > 0)
then 917 colamt(k,4)=max(temcol(k), coldry(k)*gasvmr(iplon,k,2))
918 colamt(k,5)=max(temcol(k), coldry(k)*gasvmr(iplon,k,3))
919 colamt(k,6)=max(f_zero, coldry(k)*gasvmr(iplon,k,4))
920 colamt(k,7)=max(f_zero, coldry(k)*gasvmr(iplon,k,5))
922 wx(k,1) = max( f_zero, coldry(k)*gasvmr(iplon,k,9) )
923 wx(k,2) = max( f_zero, coldry(k)*gasvmr(iplon,k,6) )
924 wx(k,3) = max( f_zero, coldry(k)*gasvmr(iplon,k,7) )
925 wx(k,4) = max( f_zero, coldry(k)*gasvmr(iplon,k,8) )
945 tauaer(j,k) = aerosols(iplon,k,j,1) &
946 & * (f_one - aerosols(iplon,k,j,2))
950 if (ilwcliq > 0)
then 952 cldfrc(k)= clouds(iplon,k,1)
953 clwp(k) = clouds(iplon,k,2)
954 relw(k) = clouds(iplon,k,3)
955 ciwp(k) = clouds(iplon,k,4)
956 reiw(k) = clouds(iplon,k,5)
957 cda1(k) = clouds(iplon,k,6)
958 cda2(k) = clouds(iplon,k,7)
959 cda3(k) = clouds(iplon,k,8)
960 cda4(k) = clouds(iplon,k,9)
964 cldfrc(k)= clouds(iplon,k,1)
965 cda1(k) = clouds(iplon,k,2)
970 cldfrc(nlp1) = f_zero
977 tem1 = tem1 + coldry(k) + colamt(k,1)
978 tem2 = tem2 + colamt(k,1)
981 tem0 = 10.0 * tem2 / (amdw * tem1 * con_g)
982 pwvcm = tem0 * plvl(iplon,1)
991 summol = summol + colamt(k,i)
993 colbrd(k) = coldry(k) - summol
1001 if (j==1 .or. j==4 .or. j==10)
then 1004 secdiff(j) = min( tem1, max( tem2, &
1005 & a0(j)+a1(j)*exp(a2(j)*pwvcm) ))
1028 lab_do_k0 :
do k = 1, nlay
1029 if ( cldfrc(k) > eps )
then 1039 & ( cldfrc,clwp,relw,ciwp,reiw,cda1,cda2,cda3,cda4, &
1040 & nlay, nlp1, ipseed(iplon), &
1050 clouds(iplon,k,11) = taucld(6,k) &
1051 & + taucld(7,k) + taucld(8,k)
1068 & ( pavel,tavel,tz,stemp,h2ovmr,colamt,coldry,colbrd, &
1071 & laytrop,pklay,pklev,jp,jt,jt1, &
1072 & rfrate,fac00,fac01,fac10,fac11, &
1073 & selffac,selffrac,indself,forfac,forfrac,indfor, &
1074 & minorfrac,scaleminor,scaleminorn2,indminor &
1104 & ( laytrop,pavel,coldry,colamt,colbrd,wx,tauaer, &
1105 & rfrate,fac00,fac01,fac10,fac11,jp,jt,jt1, &
1106 & selffac,selffrac,indself,forfac,forfrac,indfor, &
1107 & minorfrac,scaleminor,scaleminorn2,indminor, &
1136 if (isubclw <= 0)
then 1138 if (iovrlw <= 0)
then 1142 & ( semiss,delp,cldfrc,taucld,tautot,pklay,pklev, &
1143 & fracs,secdiff,nlay,nlp1, &
1145 & totuflux,totdflux,htr, totuclfl,totdclfl,htrcl, htrb &
1152 & ( semiss,delp,cldfrc,taucld,tautot,pklay,pklev, &
1153 & fracs,secdiff,nlay,nlp1, &
1155 & totuflux,totdflux,htr, totuclfl,totdclfl,htrcl, htrb &
1164 & ( semiss,delp,cldfmc,taucld,tautot,pklay,pklev, &
1165 & fracs,secdiff,nlay,nlp1, &
1167 & totuflux,totdflux,htr, totuclfl,totdclfl,htrcl, htrb &
1174 topflx(iplon)%upfxc = totuflux(nlay)
1175 topflx(iplon)%upfx0 = totuclfl(nlay)
1177 sfcflx(iplon)%upfxc = totuflux(0)
1178 sfcflx(iplon)%upfx0 = totuclfl(0)
1179 sfcflx(iplon)%dnfxc = totdflux(0)
1180 sfcflx(iplon)%dnfx0 = totdclfl(0)
1182 if (ivflip == 0)
then 1188 flxprf(iplon,k1)%upfxc = totuflux(k)
1189 flxprf(iplon,k1)%dnfxc = totdflux(k)
1190 flxprf(iplon,k1)%upfx0 = totuclfl(k)
1191 flxprf(iplon,k1)%dnfx0 = totdclfl(k)
1197 hlwc(iplon,k1) = htr(k)
1204 hlw0(iplon,k1) = htrcl(k)
1213 hlwb(iplon,k1,j) = htrb(k,j)
1223 flxprf(iplon,k+1)%upfxc = totuflux(k)
1224 flxprf(iplon,k+1)%dnfxc = totdflux(k)
1225 flxprf(iplon,k+1)%upfx0 = totuclfl(k)
1226 flxprf(iplon,k+1)%dnfx0 = totdclfl(k)
1231 hlwc(iplon,k) = htr(k)
1237 hlw0(iplon,k) = htrcl(k)
1245 hlwb(iplon,k,j) = htrb(k,j)
1255 end subroutine lwrad 1335 integer,
intent(in) :: me
1340 real (kind=kind_phys),
parameter :: expeps = 1.e-20
1342 real (kind=kind_phys) :: tfn, pival, explimit
1349 if ( iovrlw<0 .or. iovrlw>2 )
then 1350 print *,
' *** Error in specification of cloud overlap flag', &
1351 &
' IOVRLW=',iovrlw,
' in RLWINIT !!' 1353 elseif ( iovrlw==2 .and. isubclw==0 )
then 1355 print *,
' *** IOVRLW=2 - maximum cloud overlap, is not yet', &
1356 &
' available for ISUBCLW=0 setting!!' 1357 print *,
' The program uses maximum/random overlap', &
1365 print *,
' - Using AER Longwave Radiation, Version: ', vtaglw
1367 if (ilwrgas > 0)
then 1368 print *,
' --- Include rare gases N2O, CH4, O2, CFCs ', &
1369 &
'absorptions in LW' 1371 print *,
' --- Rare gases effect is NOT included in LW' 1374 if ( isubclw == 0 )
then 1375 print *,
' --- Using standard grid average clouds, no ', &
1376 &
'sub-column clouds approximation applied' 1377 elseif ( isubclw == 1 )
then 1378 print *,
' --- Using MCICA sub-colum clouds approximation ', &
1379 &
'with a prescribed sequence of permutaion seeds' 1380 elseif ( isubclw == 2 )
then 1381 print *,
' --- Using MCICA sub-colum clouds approximation ', &
1382 &
'with provided input array of permutation seeds' 1384 print *,
' *** Error in specification of sub-column cloud ', &
1385 &
' control flag isubclw =',isubclw,
' !!' 1392 if ((icldflg == 0 .and. ilwcliq /= 0) .or. &
1393 & (icldflg == 1 .and. ilwcliq == 0))
then 1394 print *,
' *** Model cloud scheme inconsistent with LW', &
1395 &
' radiation cloud radiative property setup !!' 1406 pival = 2.0 * asin(f_one)
1407 fluxfac = pival * 2.0d4
1410 if (ilwrate == 1)
then 1413 heatfac = con_g * 864.0 / con_cp
1415 heatfac = con_g * 1.0e-2 / con_cp
1433 tau_tbl(
ntbl) = 1.e10
1434 exp_tbl(
ntbl) = expeps
1435 tfn_tbl(
ntbl) = f_one
1437 explimit = aint( -log(tiny(exp_tbl(0))) )
1442 tfn =
real(i, kind_phys) /
real(
ntbl-i, kind_phys)
1443 tau_tbl(i) = bpade * tfn
1444 if (tau_tbl(i) >= explimit)
then 1447 exp_tbl(i) = exp( -tau_tbl(i) )
1450 if (tau_tbl(i) < 0.06)
then 1451 tfn_tbl(i) = tau_tbl(i) / 6.0
1453 tfn_tbl(i) = f_one - 2.0*( (f_one / tau_tbl(i)) &
1454 & - ( exp_tbl(i) / (f_one - exp_tbl(i)) ) )
1493 & ( cfrac,cliqp,reliq,cicep,reice,cdat1,cdat2,cdat3,cdat4, &
1494 & nlay, nlp1, ipseed, &
1592 integer,
intent(in) :: nlay, nlp1, ipseed
1594 real (kind=kind_phys),
dimension(0:nlp1),
intent(in) :: cfrac
1595 real (kind=kind_phys),
dimension(nlay),
intent(in) :: cliqp, &
1596 & reliq, cicep, reice, cdat1, cdat2, cdat3, cdat4
1599 real (kind=kind_phys),
dimension(ngptlw,nlay),
intent(out):: cldfmc
1600 real (kind=kind_phys),
dimension(nbands,nlay),
intent(out):: taucld
1603 real (kind=kind_phys),
dimension(nbands) :: tauliq, tauice
1604 real (kind=kind_phys),
dimension(nlay) :: cldf
1606 real (kind=kind_phys) :: dgeice, factor, fint, tauran, tausnw, &
1607 & cldliq, refliq, cldice, refice
1609 logical :: lcloudy(
ngptlw,nlay)
1610 integer :: ia, ib, ig, k, index
1617 taucld(ib,k) = f_zero
1623 cldfmc(ig,k) = f_zero
1636 lab_if_ilwcliq :
if (ilwcliq > 0)
then 1638 lab_do_k :
do k = 1, nlay
1639 lab_if_cld :
if (cfrac(k) > cldmin)
then 1649 if (cdat3(k)>f_zero .and. cdat4(k)>10.0_kind_phys)
then 1650 tausnw =
abssnow0*1.05756*cdat3(k)/cdat4(k)
1664 if ( cldliq <= f_zero )
then 1669 if ( ilwcliq == 1 )
then 1671 factor = refliq - 1.5
1672 index = max( 1, min( 57, int( factor ) ))
1673 fint = factor - float(index)
1676 tauliq(ib) = max(f_zero, cldliq*(
absliq1(index,ib) &
1684 if ( cldice <= f_zero )
then 1693 if ( ilwcice == 1 )
then 1694 refice = min(130.0, max(13.0,
real(refice) ))
1698 tauice(ib) = max(f_zero, cldice*(
absice1(1,ia) &
1706 elseif ( ilwcice == 2 )
then 1708 factor = (refice - 2.0) / 3.0
1709 index = max( 1, min( 42, int( factor ) ))
1710 fint = factor - float(index)
1713 tauice(ib) = max(f_zero, cldice*(
absice2(index,ib) &
1720 elseif ( ilwcice == 3 )
then 1723 dgeice = max(5.0, 1.0315*refice)
1724 factor = (dgeice - 2.0) / 3.0
1725 index = max( 1, min( 45, int( factor ) ))
1726 fint = factor - float(index)
1729 tauice(ib) = max(f_zero, cldice*(
absice3(index,ib) &
1737 taucld(ib,k) = tauice(ib) + tauliq(ib) + tauran + tausnw
1746 if (cfrac(k) > cldmin)
then 1748 taucld(ib,k) = cdat1(k)
1753 endif lab_if_ilwcliq
1758 if ( isubclw > 0 )
then 1760 if ( cfrac(k) < cldmin )
then 1771 & ( cldf, nlay, ipseed, &
1778 if ( lcloudy(ig,k) )
then 1779 cldfmc(ig,k) = f_one
1781 cldfmc(ig,k) = f_zero
1801 & ( cldf, nlay, ipseed, &
1827 integer,
intent(in) :: nlay, ipseed
1829 real (kind=kind_phys),
dimension(nlay),
intent(in) :: cldf
1832 logical,
dimension(ngptlw,nlay),
intent(out) :: lcloudy
1835 real (kind=kind_phys) :: cdfunc(
ngptlw,nlay), rand1d(
ngptlw), &
1836 & rand2d(nlay*ngptlw), tem1
1838 type(random_stat) :: stat
1846 call random_setseed &
1855 select case ( iovrlw )
1859 call random_number &
1868 cdfunc(n,k) = rand2d(k1)
1874 call random_number &
1883 cdfunc(n,k) = rand2d(k1)
1895 tem1 = f_one - cldf(k1)
1898 if ( cdfunc(n,k1) > tem1 )
then 1899 cdfunc(n,k) = cdfunc(n,k1)
1901 cdfunc(n,k) = cdfunc(n,k) * tem1
1926 call random_number &
1944 tem1 = f_one - cldf(k)
1947 lcloudy(n,k) = cdfunc(n,k) >= tem1
1997 & ( pavel,tavel,tz,stemp,h2ovmr,colamt,coldry,colbrd, &
1999 & laytrop,pklay,pklev,jp,jt,jt1, &
2000 & rfrate,fac00,fac01,fac10,fac11, &
2001 & selffac,selffrac,indself,forfac,forfrac,indfor, &
2002 & minorfrac,scaleminor,scaleminorn2,indminor &
2058 integer,
intent(in) :: nlay, nlp1
2060 real (kind=kind_phys),
dimension(nlay,maxgas),
intent(in):: colamt
2061 real (kind=kind_phys),
dimension(0:nlay),
intent(in):: tz
2063 real (kind=kind_phys),
dimension(nlay),
intent(in) :: pavel, &
2064 & tavel, h2ovmr, coldry, colbrd
2066 real (kind=kind_phys),
intent(in) :: stemp
2069 integer,
dimension(nlay),
intent(out) :: jp, jt, jt1, indself, &
2072 integer,
intent(out) :: laytrop
2074 real (kind=kind_phys),
dimension(nlay,nrates,2),
intent(out) :: &
2076 real (kind=kind_phys),
dimension(nbands,0:nlay),
intent(out) :: &
2079 real (kind=kind_phys),
dimension(nlay),
intent(out) :: &
2080 & fac00, fac01, fac10, fac11, selffac, selffrac, forfac, &
2081 & forfrac, minorfrac, scaleminor, scaleminorn2
2084 real (kind=kind_phys) :: tlvlfr, tlyrfr, plog, fp, ft, ft1, &
2087 integer :: i, k, jp1, indlev, indlay
2096 indlay = min(180, max(1, int(stemp-159.0) ))
2097 indlev = min(180, max(1, int(tz(0)-159.0) ))
2098 tlyrfr = stemp - int(stemp)
2099 tlvlfr = tz(0) - int(tz(0))
2103 pklay(i,0) = delwave(i) * (
totplnk(indlay,i) + tlyrfr*tem1)
2104 pklev(i,0) = delwave(i) * (
totplnk(indlev,i) + tlvlfr*tem2)
2115 indlay = min(180, max(1, int(tavel(k)-159.0) ))
2116 tlyrfr = tavel(k) - int(tavel(k))
2118 indlev = min(180, max(1, int(tz(k)-159.0) ))
2119 tlvlfr = tz(k) - int(tz(k))
2124 pklay(i,k) = delwave(i) * (
totplnk(indlay,i) + tlyrfr &
2126 pklev(i,k) = delwave(i) * (
totplnk(indlev,i) + tlvlfr &
2135 plog = log(pavel(k))
2136 jp(k)= max(1, min(58, int(36.0 - 5.0*(plog+0.04)) ))
2139 fp = max(f_zero, min(f_one, 5.0*(preflog(jp(k))-plog) ))
2150 tem1 = (tavel(k)-tref(jp(k))) / 15.0
2151 tem2 = (tavel(k)-tref(jp1 )) / 15.0
2152 jt(k) = max(1, min(4, int(3.0 + tem1) ))
2153 jt1(k) = max(1, min(4, int(3.0 + tem2) ))
2155 ft = max(-0.5, min(1.5, tem1 - float(jt(k) - 3) ))
2156 ft1 = max(-0.5, min(1.5, tem2 - float(jt1(k) - 3) ))
2168 fac10(k) = tem1 * ft
2169 fac00(k) = tem1 * (f_one - ft)
2171 fac01(k) = fp * (f_one - ft1)
2173 forfac(k) = pavel(k)*stpfac / (tavel(k)*(1.0 + h2ovmr(k)))
2174 selffac(k) = h2ovmr(k) * forfac(k)
2179 scaleminor(k) = pavel(k) / tavel(k)
2180 scaleminorn2(k) = (pavel(k) / tavel(k)) &
2181 & * (colbrd(k)/(coldry(k) + colamt(k,1)))
2182 tem1 = (tavel(k) - 180.8) / 7.2
2183 indminor(k) = min(18, max(1, int(tem1)))
2184 minorfrac(k) = tem1 - float(indminor(k))
2189 if (plog > 4.56)
then 2191 laytrop = laytrop + 1
2193 tem1 = (332.0 - tavel(k)) / 36.0
2194 indfor(k) = min(2, max(1, int(tem1)))
2195 forfrac(k) = tem1 - float(indfor(k))
2200 tem1 = (tavel(k) - 188.0) / 7.2
2201 indself(k) = min(9, max(1, int(tem1)-7))
2202 selffrac(k) = tem1 - float(indself(k) + 7)
2207 rfrate(k,1,1) = chi_mls(1,jp(k)) / chi_mls(2,jp(k))
2208 rfrate(k,1,2) = chi_mls(1,jp(k)+1) / chi_mls(2,jp(k)+1)
2210 rfrate(k,2,1) = chi_mls(1,jp(k)) / chi_mls(3,jp(k))
2211 rfrate(k,2,2) = chi_mls(1,jp(k)+1) / chi_mls(3,jp(k)+1)
2213 rfrate(k,3,1) = chi_mls(1,jp(k)) / chi_mls(4,jp(k))
2214 rfrate(k,3,2) = chi_mls(1,jp(k)+1) / chi_mls(4,jp(k)+1)
2216 rfrate(k,4,1) = chi_mls(1,jp(k)) / chi_mls(6,jp(k))
2217 rfrate(k,4,2) = chi_mls(1,jp(k)+1) / chi_mls(6,jp(k)+1)
2219 rfrate(k,5,1) = chi_mls(4,jp(k)) / chi_mls(2,jp(k))
2220 rfrate(k,5,2) = chi_mls(4,jp(k)+1) / chi_mls(2,jp(k)+1)
2224 tem1 = (tavel(k) - 188.0) / 36.0
2226 forfrac(k) = tem1 - f_one
2229 selffrac(k) = f_zero
2234 rfrate(k,1,1) = chi_mls(1,jp(k)) / chi_mls(2,jp(k))
2235 rfrate(k,1,2) = chi_mls(1,jp(k)+1) / chi_mls(2,jp(k)+1)
2237 rfrate(k,6,1) = chi_mls(3,jp(k)) / chi_mls(2,jp(k))
2238 rfrate(k,6,2) = chi_mls(3,jp(k)+1) / chi_mls(2,jp(k)+1)
2244 selffac(k) = colamt(k,1) * selffac(k)
2245 forfac(k) = colamt(k,1) * forfac(k)
2291 & ( semiss,delp,cldfrc,taucld,tautot,pklay,pklev, &
2292 & fracs,secdif, nlay,nlp1, &
2293 & totuflux,totdflux,htr, totuclfl,totdclfl,htrcl, htrb &
2395 integer,
intent(in) :: nlay, nlp1
2397 real (kind=kind_phys),
dimension(0:nlp1),
intent(in) :: cldfrc
2398 real (kind=kind_phys),
dimension(nbands),
intent(in) :: semiss, &
2400 real (kind=kind_phys),
dimension(nlay),
intent(in) :: delp
2402 real (kind=kind_phys),
dimension(nbands,nlay),
intent(in):: taucld
2403 real (kind=kind_phys),
dimension(ngptlw,nlay),
intent(in):: fracs, &
2406 real (kind=kind_phys),
dimension(nbands,0:nlay),
intent(in) :: &
2410 real (kind=kind_phys),
dimension(nlay),
intent(out) :: htr, htrcl
2412 real (kind=kind_phys),
dimension(nlay,nbands),
intent(out) :: htrb
2414 real (kind=kind_phys),
dimension(0:nlay),
intent(out) :: &
2415 & totuflux, totdflux, totuclfl, totdclfl
2418 real (kind=kind_phys),
parameter :: rec_6 = 0.166667
2420 real (kind=kind_phys),
dimension(0:nlay,nbands) :: clrurad, &
2421 & clrdrad, toturad, totdrad
2423 real (kind=kind_phys),
dimension(nlay) :: gassrcu, totsrcu, &
2424 & trngas, efclrfr, rfdelp
2425 real (kind=kind_phys),
dimension(0:nlay) :: fnet, fnetc
2427 real (kind=kind_phys) :: totsrcd, gassrcd, tblind, odepth, odtot, &
2428 & odcld, atrtot, atrgas, reflct, totfac, gasfac, flxfac, &
2429 & plfrac, blay, bbdgas, bbdtot, bbugas, bbutot, dplnku, &
2430 & dplnkd, radtotu, radclru, radtotd, radclrd, rad0, &
2433 integer :: ittot, itgas, ib, ig, k
2439 toturad(k,ib) = f_zero
2440 totdrad(k,ib) = f_zero
2441 clrurad(k,ib) = f_zero
2442 clrdrad(k,ib) = f_zero
2447 totuflux(k) = f_zero
2448 totdflux(k) = f_zero
2449 totuclfl(k) = f_zero
2450 totdclfl(k) = f_zero
2467 odepth = max( f_zero, secdif(ib)*tautot(ig,k) )
2468 if (odepth <= 0.06)
then 2469 atrgas = odepth - 0.5*odepth*odepth
2470 trng = f_one - atrgas
2471 gasfac = rec_6 * odepth
2473 tblind = odepth / (bpade + odepth)
2474 itgas = tblint*tblind + 0.5
2475 trng = exp_tbl(itgas)
2476 atrgas = f_one - trng
2477 gasfac = tfn_tbl(itgas)
2478 odepth = tau_tbl(itgas)
2481 plfrac = fracs(ig,k)
2484 dplnku = pklev(ib,k ) - blay
2485 dplnkd = pklev(ib,k-1) - blay
2486 bbdgas = plfrac * (blay + dplnkd*gasfac)
2487 bbugas = plfrac * (blay + dplnku*gasfac)
2488 gassrcd= bbdgas * atrgas
2489 gassrcu(k)= bbugas * atrgas
2495 if (clfr >= eps)
then 2498 odcld = secdif(ib) * taucld(ib,k)
2499 efclrfr(k) = f_one-(f_one - exp(-odcld))*clfr
2500 odtot = odepth + odcld
2501 if (odtot < 0.06)
then 2502 totfac = rec_6 * odtot
2503 atrtot = odtot - 0.5*odtot*odtot
2505 tblind = odtot / (bpade + odtot)
2506 ittot = tblint*tblind + 0.5
2507 totfac = tfn_tbl(ittot)
2508 atrtot = f_one - exp_tbl(ittot)
2511 bbdtot = plfrac * (blay + dplnkd*totfac)
2512 bbutot = plfrac * (blay + dplnku*totfac)
2513 totsrcd= bbdtot * atrtot
2514 totsrcu(k)= bbutot * atrtot
2517 radtotd = radtotd*trng*efclrfr(k) + gassrcd &
2518 & + clfr*(totsrcd - gassrcd)
2519 totdrad(k-1,ib) = totdrad(k-1,ib) + radtotd
2522 radclrd = radclrd*trng + gassrcd
2523 clrdrad(k-1,ib) = clrdrad(k-1,ib) + radclrd
2529 radtotd = radtotd*trng + gassrcd
2530 totdrad(k-1,ib) = totdrad(k-1,ib) + radtotd
2533 radclrd = radclrd*trng + gassrcd
2534 clrdrad(k-1,ib) = clrdrad(k-1,ib) + radclrd
2547 reflct = f_one - semiss(ib)
2548 rad0 = semiss(ib) * fracs(ig,1) * pklay(ib,0)
2551 radtotu = rad0 + reflct*radtotd
2552 toturad(0,ib) = toturad(0,ib) + radtotu
2555 radclru = rad0 + reflct*radclrd
2556 clrurad(0,ib) = clrurad(0,ib) + radclru
2565 if (clfr >= eps)
then 2569 radtotu = radtotu*trng*efclrfr(k) + gasu &
2570 & + clfr*(totsrcu(k) - gasu)
2571 toturad(k,ib) = toturad(k,ib) + radtotu
2574 radclru = radclru*trng + gasu
2575 clrurad(k,ib) = clrurad(k,ib) + radclru
2581 radtotu = radtotu*trng + gasu
2582 toturad(k,ib) = toturad(k,ib) + radtotu
2585 radclru = radclru*trng + gasu
2586 clrurad(k,ib) = clrurad(k,ib) + radclru
2597 flxfac = wtdiff * fluxfac
2601 totuflux(k) = totuflux(k) + toturad(k,ib)
2602 totdflux(k) = totdflux(k) + totdrad(k,ib)
2603 totuclfl(k) = totuclfl(k) + clrurad(k,ib)
2604 totdclfl(k) = totdclfl(k) + clrdrad(k,ib)
2607 totuflux(k) = totuflux(k) * flxfac
2608 totdflux(k) = totdflux(k) * flxfac
2609 totuclfl(k) = totuclfl(k) * flxfac
2610 totdclfl(k) = totdclfl(k) * flxfac
2614 fnet(0) = totuflux(0) - totdflux(0)
2617 rfdelp(k) = heatfac / delp(k)
2618 fnet(k) = totuflux(k) - totdflux(k)
2619 htr(k) = (fnet(k-1) - fnet(k)) * rfdelp(k)
2624 fnetc(0) = totuclfl(0) - totdclfl(0)
2627 fnetc(k) = totuclfl(k) - totdclfl(k)
2628 htrcl(k) = (fnetc(k-1) - fnetc(k)) * rfdelp(k)
2635 fnet(0) = (toturad(0,ib) - totdrad(0,ib)) * flxfac
2638 fnet(k) = (toturad(k,ib) - totdrad(k,ib)) * flxfac
2639 htrb(k,ib) = (fnet(k-1) - fnet(k)) * rfdelp(k)
2674 & ( semiss,delp,cldfrc,taucld,tautot,pklay,pklev, &
2675 & fracs,secdif, nlay,nlp1, &
2676 & totuflux,totdflux,htr, totuclfl,totdclfl,htrcl, htrb &
2777 integer,
intent(in) :: nlay, nlp1
2779 real (kind=kind_phys),
dimension(0:nlp1),
intent(in) :: cldfrc
2780 real (kind=kind_phys),
dimension(nbands),
intent(in) :: semiss, &
2782 real (kind=kind_phys),
dimension(nlay),
intent(in) :: delp
2784 real (kind=kind_phys),
dimension(nbands,nlay),
intent(in):: taucld
2785 real (kind=kind_phys),
dimension(ngptlw,nlay),
intent(in):: fracs, &
2788 real (kind=kind_phys),
dimension(nbands,0:nlay),
intent(in) :: &
2792 real (kind=kind_phys),
dimension(nlay),
intent(out) :: htr, htrcl
2794 real (kind=kind_phys),
dimension(nlay,nbands),
intent(out) :: htrb
2796 real (kind=kind_phys),
dimension(0:nlay),
intent(out) :: &
2797 & totuflux, totdflux, totuclfl, totdclfl
2800 real (kind=kind_phys),
parameter :: rec_6 = 0.166667
2802 real (kind=kind_phys),
dimension(0:nlay,nbands) :: clrurad, &
2803 & clrdrad, toturad, totdrad
2805 real (kind=kind_phys),
dimension(nlay) :: gassrcu, totsrcu, &
2806 & trngas, trntot, rfdelp
2807 real (kind=kind_phys),
dimension(0:nlay) :: fnet, fnetc
2809 real (kind=kind_phys) :: totsrcd, gassrcd, tblind, odepth, odtot, &
2810 & odcld, atrtot, atrgas, reflct, totfac, gasfac, flxfac, &
2811 & plfrac, blay, bbdgas, bbdtot, bbugas, bbutot, dplnku, &
2812 & dplnkd, radtotu, radclru, radtotd, radclrd, rad0, rad, &
2813 & totradd, clrradd, totradu, clrradu, fmax, fmin, rat1, rat2,&
2814 & radmod, clfr, trng, trnt, gasu, totu
2816 integer :: ittot, itgas, ib, ig, k
2819 real (kind=kind_phys),
dimension(nlp1) :: faccld1u, faccld2u, &
2820 & facclr1u, facclr2u, faccmb1u, faccmb2u
2821 real (kind=kind_phys),
dimension(0:nlay) :: faccld1d, faccld2d, &
2822 & facclr1d, facclr2d, faccmb1d, faccmb2d
2824 logical :: lstcldu(nlay), lstcldd(nlay)
2829 faccld1u(k) = f_zero
2830 faccld2u(k) = f_zero
2831 facclr1u(k) = f_zero
2832 facclr2u(k) = f_zero
2833 faccmb1u(k) = f_zero
2834 faccmb2u(k) = f_zero
2837 lstcldu(1) = cldfrc(1) > eps
2843 lstcldu(k+1) = cldfrc(k+1)>eps .and. cldfrc(k)<=eps
2845 if (cldfrc(k) > eps)
then 2849 if (cldfrc(k+1) >= cldfrc(k))
then 2850 if (lstcldu(k))
then 2851 if (cldfrc(k) < f_one)
then 2852 facclr2u(k+1) = (cldfrc(k+1) - cldfrc(k)) &
2853 & / (f_one - cldfrc(k))
2855 facclr2u(k) = f_zero
2856 faccld2u(k) = f_zero
2858 fmax = max(cldfrc(k), cldfrc(k-1))
2859 if (cldfrc(k+1) > fmax)
then 2860 facclr1u(k+1) = rat2
2861 facclr2u(k+1) = (cldfrc(k+1) - fmax)/(f_one - fmax)
2862 elseif (cldfrc(k+1) < fmax)
then 2863 facclr1u(k+1) = (cldfrc(k+1) - cldfrc(k)) &
2864 & / (cldfrc(k-1) - cldfrc(k))
2866 facclr1u(k+1) = rat2
2870 if (facclr1u(k+1)>f_zero .or. facclr2u(k+1)>f_zero)
then 2878 if (lstcldu(k))
then 2879 faccld2u(k+1) = (cldfrc(k) - cldfrc(k+1)) / cldfrc(k)
2880 facclr2u(k) = f_zero
2881 faccld2u(k) = f_zero
2883 fmin = min(cldfrc(k), cldfrc(k-1))
2884 if (cldfrc(k+1) <= fmin)
then 2885 faccld1u(k+1) = rat1
2886 faccld2u(k+1) = (fmin - cldfrc(k+1)) / fmin
2888 faccld1u(k+1) = (cldfrc(k) - cldfrc(k+1)) &
2889 & / (cldfrc(k) - fmin)
2893 if (faccld1u(k+1)>f_zero .or. faccld2u(k+1)>f_zero)
then 2902 faccmb1u(k+1) = facclr1u(k+1) * faccld2u(k) * cldfrc(k-1)
2903 faccmb2u(k+1) = faccld1u(k+1) * facclr2u(k) &
2904 & * (f_one - cldfrc(k-1))
2910 faccld1d(k) = f_zero
2911 faccld2d(k) = f_zero
2912 facclr1d(k) = f_zero
2913 facclr2d(k) = f_zero
2914 faccmb1d(k) = f_zero
2915 faccmb2d(k) = f_zero
2918 lstcldd(nlay) = cldfrc(nlay) > eps
2924 lstcldd(k-1) = cldfrc(k-1) > eps .and. cldfrc(k)<=eps
2926 if (cldfrc(k) > eps)
then 2928 if (cldfrc(k-1) >= cldfrc(k))
then 2929 if (lstcldd(k))
then 2930 if (cldfrc(k) < f_one)
then 2931 facclr2d(k-1) = (cldfrc(k-1) - cldfrc(k)) &
2932 & / (f_one - cldfrc(k))
2935 facclr2d(k) = f_zero
2936 faccld2d(k) = f_zero
2938 fmax = max(cldfrc(k), cldfrc(k+1))
2940 if (cldfrc(k-1) > fmax)
then 2941 facclr1d(k-1) = rat2
2942 facclr2d(k-1) = (cldfrc(k-1) - fmax) / (f_one - fmax)
2943 elseif (cldfrc(k-1) < fmax)
then 2944 facclr1d(k-1) = (cldfrc(k-1) - cldfrc(k)) &
2945 & / (cldfrc(k+1) - cldfrc(k))
2947 facclr1d(k-1) = rat2
2951 if (facclr1d(k-1)>f_zero .or. facclr2d(k-1)>f_zero)
then 2959 if (lstcldd(k))
then 2960 faccld2d(k-1) = (cldfrc(k) - cldfrc(k-1)) / cldfrc(k)
2961 facclr2d(k) = f_zero
2962 faccld2d(k) = f_zero
2964 fmin = min(cldfrc(k), cldfrc(k+1))
2966 if (cldfrc(k-1) <= fmin)
then 2967 faccld1d(k-1) = rat1
2968 faccld2d(k-1) = (fmin - cldfrc(k-1)) / fmin
2970 faccld1d(k-1) = (cldfrc(k) - cldfrc(k-1)) &
2971 & / (cldfrc(k) - fmin)
2975 if (faccld1d(k-1)>f_zero .or. faccld2d(k-1)>f_zero)
then 2984 faccmb1d(k-1) = facclr1d(k-1) * faccld2d(k) * cldfrc(k+1)
2985 faccmb2d(k-1) = faccld1d(k-1) * facclr2d(k) &
2986 & * (f_one - cldfrc(k+1))
2995 toturad(k,ib) = f_zero
2996 totdrad(k,ib) = f_zero
2997 clrurad(k,ib) = f_zero
2998 clrdrad(k,ib) = f_zero
3003 totuflux(k) = f_zero
3004 totdflux(k) = f_zero
3005 totuclfl(k) = f_zero
3006 totdclfl(k) = f_zero
3023 odepth = max( f_zero, secdif(ib)*tautot(ig,k) )
3024 if (odepth <= 0.06)
then 3025 atrgas = odepth - 0.5*odepth*odepth
3026 trng = f_one - atrgas
3027 gasfac = rec_6 * odepth
3029 tblind = odepth / (bpade + odepth)
3030 itgas = tblint*tblind + 0.5
3031 trng = exp_tbl(itgas)
3032 atrgas = f_one - trng
3033 gasfac = tfn_tbl(itgas)
3034 odepth = tau_tbl(itgas)
3037 plfrac = fracs(ig,k)
3040 dplnku = pklev(ib,k ) - blay
3041 dplnkd = pklev(ib,k-1) - blay
3042 bbdgas = plfrac * (blay + dplnkd*gasfac)
3043 bbugas = plfrac * (blay + dplnku*gasfac)
3044 gassrcd = bbdgas * atrgas
3045 gassrcu(k)= bbugas * atrgas
3051 if (lstcldd(k))
then 3052 totradd = clfr * radtotd
3053 clrradd = radtotd - totradd
3057 if (clfr >= eps)
then 3060 odcld = secdif(ib) * taucld(ib,k)
3061 odtot = odepth + odcld
3062 if (odtot < 0.06)
then 3063 totfac = rec_6 * odtot
3064 atrtot = odtot - 0.5*odtot*odtot
3065 trnt = f_one - atrtot
3067 tblind = odtot / (bpade + odtot)
3068 ittot = tblint*tblind + 0.5
3069 totfac = tfn_tbl(ittot)
3070 trnt = exp_tbl(ittot)
3071 atrtot = f_one - trnt
3074 bbdtot = plfrac * (blay + dplnkd*totfac)
3075 bbutot = plfrac * (blay + dplnku*totfac)
3076 totsrcd = bbdtot * atrtot
3077 totsrcu(k)= bbutot * atrtot
3080 totradd = totradd*trnt + clfr*totsrcd
3081 clrradd = clrradd*trng + (f_one - clfr)*gassrcd
3084 radtotd = totradd + clrradd
3085 totdrad(k-1,ib) = totdrad(k-1,ib) + radtotd
3088 radclrd = radclrd*trng + gassrcd
3089 clrdrad(k-1,ib) = clrdrad(k-1,ib) + radclrd
3091 radmod = rad*(facclr1d(k-1)*trng + faccld1d(k-1)*trnt) &
3092 & - faccmb1d(k-1)*gassrcd + faccmb2d(k-1)*totsrcd
3094 rad = -radmod + facclr2d(k-1)*(clrradd + radmod) &
3095 & - faccld2d(k-1)*(totradd - radmod)
3096 totradd = totradd + rad
3097 clrradd = clrradd - rad
3103 radtotd = radtotd*trng + gassrcd
3104 totdrad(k-1,ib) = totdrad(k-1,ib) + radtotd
3107 radclrd = radclrd*trng + gassrcd
3108 clrdrad(k-1,ib) = clrdrad(k-1,ib) + radclrd
3121 reflct = f_one - semiss(ib)
3122 rad0 = semiss(ib) * fracs(ig,1) * pklay(ib,0)
3125 radtotu = rad0 + reflct*radtotd
3126 toturad(0,ib) = toturad(0,ib) + radtotu
3129 radclru = rad0 + reflct*radclrd
3130 clrurad(0,ib) = clrurad(0,ib) + radclru
3140 if (lstcldu(k))
then 3141 totradu = clfr * radtotu
3142 clrradu = radtotu - totradu
3146 if (clfr >= eps)
then 3151 totradu = totradu*trnt + clfr*totu
3152 clrradu = clrradu*trng + (f_one - clfr)*gasu
3155 radtotu = totradu + clrradu
3156 toturad(k,ib) = toturad(k,ib) + radtotu
3159 radclru = radclru*trng + gasu
3160 clrurad(k,ib) = clrurad(k,ib) + radclru
3162 radmod = rad*(facclr1u(k+1)*trng + faccld1u(k+1)*trnt) &
3163 & - faccmb1u(k+1)*gasu + faccmb2u(k+1)*totu
3164 rad = -radmod + facclr2u(k+1)*(clrradu + radmod) &
3165 & - faccld2u(k+1)*(totradu - radmod)
3166 totradu = totradu + rad
3167 clrradu = clrradu - rad
3173 radtotu = radtotu*trng + gasu
3174 toturad(k,ib) = toturad(k,ib) + radtotu
3177 radclru = radclru*trng + gasu
3178 clrurad(k,ib) = clrurad(k,ib) + radclru
3189 flxfac = wtdiff * fluxfac
3193 totuflux(k) = totuflux(k) + toturad(k,ib)
3194 totdflux(k) = totdflux(k) + totdrad(k,ib)
3195 totuclfl(k) = totuclfl(k) + clrurad(k,ib)
3196 totdclfl(k) = totdclfl(k) + clrdrad(k,ib)
3199 totuflux(k) = totuflux(k) * flxfac
3200 totdflux(k) = totdflux(k) * flxfac
3201 totuclfl(k) = totuclfl(k) * flxfac
3202 totdclfl(k) = totdclfl(k) * flxfac
3206 fnet(0) = totuflux(0) - totdflux(0)
3209 rfdelp(k) = heatfac / delp(k)
3210 fnet(k) = totuflux(k) - totdflux(k)
3211 htr(k) = (fnet(k-1) - fnet(k)) * rfdelp(k)
3216 fnetc(0) = totuclfl(0) - totdclfl(0)
3219 fnetc(k) = totuclfl(k) - totdclfl(k)
3220 htrcl(k) = (fnetc(k-1) - fnetc(k)) * rfdelp(k)
3227 fnet(0) = (toturad(0,ib) - totdrad(0,ib)) * flxfac
3230 fnet(k) = (toturad(k,ib) - totdrad(k,ib)) * flxfac
3231 htrb(k,ib) = (fnet(k-1) - fnet(k)) * rfdelp(k)
3267 & ( semiss,delp,cldfmc,taucld,tautot,pklay,pklev, &
3268 & fracs,secdif, nlay,nlp1, &
3269 & totuflux,totdflux,htr, totuclfl,totdclfl,htrcl, htrb &
3372 integer,
intent(in) :: nlay, nlp1
3374 real (kind=kind_phys),
dimension(nbands),
intent(in) :: semiss, &
3376 real (kind=kind_phys),
dimension(nlay),
intent(in) :: delp
3378 real (kind=kind_phys),
dimension(nbands,nlay),
intent(in):: taucld
3379 real (kind=kind_phys),
dimension(ngptlw,nlay),
intent(in):: fracs, &
3382 real (kind=kind_phys),
dimension(nbands,0:nlay),
intent(in) :: &
3386 real (kind=kind_phys),
dimension(nlay),
intent(out) :: htr, htrcl
3388 real (kind=kind_phys),
dimension(nlay,nbands),
intent(out) :: htrb
3390 real (kind=kind_phys),
dimension(0:nlay),
intent(out) :: &
3391 & totuflux, totdflux, totuclfl, totdclfl
3394 real (kind=kind_phys),
parameter :: rec_6 = 0.166667
3396 real (kind=kind_phys),
dimension(0:nlay,nbands) :: clrurad, &
3397 & clrdrad, toturad, totdrad
3399 real (kind=kind_phys),
dimension(nlay) :: gassrcu, totsrcu, &
3400 & trngas, efclrfr, rfdelp
3401 real (kind=kind_phys),
dimension(0:nlay) :: fnet, fnetc
3403 real (kind=kind_phys) :: totsrcd, gassrcd, tblind, odepth, odtot, &
3404 & odcld, atrtot, atrgas, reflct, totfac, gasfac, flxfac, &
3405 & plfrac, blay, bbdgas, bbdtot, bbugas, bbutot, dplnku, &
3406 & dplnkd, radtotu, radclru, radtotd, radclrd, rad0, &
3409 integer :: ittot, itgas, ib, ig, k
3415 toturad(k,ib) = f_zero
3416 totdrad(k,ib) = f_zero
3417 clrurad(k,ib) = f_zero
3418 clrdrad(k,ib) = f_zero
3423 totuflux(k) = f_zero
3424 totdflux(k) = f_zero
3425 totuclfl(k) = f_zero
3426 totdclfl(k) = f_zero
3448 odepth = max( f_zero, secdif(ib)*tautot(ig,k) )
3449 if (odepth <= 0.06)
then 3450 atrgas = odepth - 0.5*odepth*odepth
3451 trng = f_one - atrgas
3452 gasfac = rec_6 * odepth
3454 tblind = odepth / (bpade + odepth)
3455 itgas = tblint*tblind + 0.5
3456 trng = exp_tbl(itgas)
3457 atrgas = f_one - trng
3458 gasfac = tfn_tbl(itgas)
3459 odepth = tau_tbl(itgas)
3462 plfrac = fracs(ig,k)
3465 dplnku = pklev(ib,k ) - blay
3466 dplnkd = pklev(ib,k-1) - blay
3467 bbdgas = plfrac * (blay + dplnkd*gasfac)
3468 bbugas = plfrac * (blay + dplnku*gasfac)
3469 gassrcd= bbdgas * atrgas
3470 gassrcu(k)= bbugas * atrgas
3476 if (clfm >= eps)
then 3479 odcld = secdif(ib) * taucld(ib,k)
3480 efclrfr(k) = f_one - (f_one - exp(-odcld))*clfm
3481 odtot = odepth + odcld
3482 if (odtot < 0.06)
then 3483 totfac = rec_6 * odtot
3484 atrtot = odtot - 0.5*odtot*odtot
3486 tblind = odtot / (bpade + odtot)
3487 ittot = tblint*tblind + 0.5
3488 totfac = tfn_tbl(ittot)
3489 atrtot = f_one - exp_tbl(ittot)
3492 bbdtot = plfrac * (blay + dplnkd*totfac)
3493 bbutot = plfrac * (blay + dplnku*totfac)
3494 totsrcd= bbdtot * atrtot
3495 totsrcu(k)= bbutot * atrtot
3498 radtotd = radtotd*trng*efclrfr(k) + gassrcd &
3499 & + clfm*(totsrcd - gassrcd)
3500 totdrad(k-1,ib) = totdrad(k-1,ib) + radtotd
3503 radclrd = radclrd*trng + gassrcd
3504 clrdrad(k-1,ib) = clrdrad(k-1,ib) + radclrd
3510 radtotd = radtotd*trng + gassrcd
3511 totdrad(k-1,ib) = totdrad(k-1,ib) + radtotd
3514 radclrd = radclrd*trng + gassrcd
3515 clrdrad(k-1,ib) = clrdrad(k-1,ib) + radclrd
3528 reflct = f_one - semiss(ib)
3529 rad0 = semiss(ib) * fracs(ig,1) * pklay(ib,0)
3532 radtotu = rad0 + reflct*radtotd
3533 toturad(0,ib) = toturad(0,ib) + radtotu
3536 radclru = rad0 + reflct*radclrd
3537 clrurad(0,ib) = clrurad(0,ib) + radclru
3551 if (clfm > eps)
then 3555 radtotu = radtotu*trng*efclrfr(k) + gasu &
3556 & + clfm*(totsrcu(k) - gasu)
3557 toturad(k,ib) = toturad(k,ib) + radtotu
3560 radclru = radclru*trng + gasu
3561 clrurad(k,ib) = clrurad(k,ib) + radclru
3567 radtotu = radtotu*trng + gasu
3568 toturad(k,ib) = toturad(k,ib) + radtotu
3571 radclru = radclru*trng + gasu
3572 clrurad(k,ib) = clrurad(k,ib) + radclru
3583 flxfac = wtdiff * fluxfac
3587 totuflux(k) = totuflux(k) + toturad(k,ib)
3588 totdflux(k) = totdflux(k) + totdrad(k,ib)
3589 totuclfl(k) = totuclfl(k) + clrurad(k,ib)
3590 totdclfl(k) = totdclfl(k) + clrdrad(k,ib)
3593 totuflux(k) = totuflux(k) * flxfac
3594 totdflux(k) = totdflux(k) * flxfac
3595 totuclfl(k) = totuclfl(k) * flxfac
3596 totdclfl(k) = totdclfl(k) * flxfac
3600 fnet(0) = totuflux(0) - totdflux(0)
3603 rfdelp(k) = heatfac / delp(k)
3604 fnet(k) = totuflux(k) - totdflux(k)
3605 htr(k) = (fnet(k-1) - fnet(k)) * rfdelp(k)
3610 fnetc(0) = totuclfl(0) - totdclfl(0)
3613 fnetc(k) = totuclfl(k) - totdclfl(k)
3614 htrcl(k) = (fnetc(k-1) - fnetc(k)) * rfdelp(k)
3621 fnet(0) = (toturad(0,ib) - totdrad(0,ib)) * flxfac
3624 fnet(k) = (toturad(k,ib) - totdrad(k,ib)) * flxfac
3625 htrb(k,ib) = (fnet(k-1) - fnet(k)) * rfdelp(k)
3681 & ( laytrop,pavel,coldry,colamt,colbrd,wx,tauaer, &
3682 & rfrate,fac00,fac01,fac10,fac11,jp,jt,jt1, &
3683 & selffac,selffrac,indself,forfac,forfrac,indfor, &
3684 & minorfrac,scaleminor,scaleminorn2,indminor, &
3803 integer,
intent(in) :: nlay, laytrop
3805 integer,
dimension(nlay),
intent(in) :: jp, jt, jt1, indself, &
3808 real (kind=kind_phys),
dimension(nlay),
intent(in) :: pavel, &
3809 & coldry, colbrd, fac00, fac01, fac10, fac11, selffac, &
3810 & selffrac, forfac, forfrac, minorfrac, scaleminor, &
3813 real (kind=kind_phys),
dimension(nlay,maxgas),
intent(in):: colamt
3814 real (kind=kind_phys),
dimension(nlay,maxxsec),
intent(in):: wx
3816 real (kind=kind_phys),
dimension(nbands,nlay),
intent(in):: tauaer
3818 real (kind=kind_phys),
dimension(nlay,nrates,2),
intent(in) :: &
3822 real (kind=kind_phys),
dimension(ngptlw,nlay),
intent(out) :: &
3826 real (kind=kind_phys),
dimension(ngptlw,nlay) :: taug
3828 integer :: ib, ig, k
3855 tautot(ig,k) = taug(ig,k) + tauaer(ib,k)
3884 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
3887 real (kind=kind_phys) :: pp, corradj, scalen2, tauself, taufor, &
3899 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(1) + 1
3900 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(1) + 1
3912 scalen2 = colbrd(k) * scaleminorn2(k)
3913 if (pp < 250.0)
then 3914 corradj = f_one - 0.15 * (250.0-pp) / 154.4
3920 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
3922 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
3924 taun2 = scalen2 * (ka_mn2(ig,indm) + minorfrac(k) &
3925 & * (ka_mn2(ig,indmp) - ka_mn2(ig,indm)))
3927 taug(ig,k) = corradj * (colamt(k,1) &
3928 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
3929 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
3930 & + tauself + taufor + taun2)
3938 do k = laytrop+1, nlay
3939 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(1) + 1
3940 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(1) + 1
3949 scalen2 = colbrd(k) * scaleminorn2(k)
3950 corradj = f_one - 0.15 * (pavel(k) / 95.6)
3953 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
3955 taun2 = scalen2 * (kb_mn2(ig,indm) + minorfrac(k) &
3956 & * (kb_mn2(ig,indmp) - kb_mn2(ig,indm)))
3958 taug(ig,k) = corradj * (colamt(k,1) &
3959 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
3960 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
3983 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
3986 real (kind=kind_phys) :: corradj, tauself, taufor
3993 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(2) + 1
3994 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(2) + 1
4003 corradj = f_one - 0.05 * (pavel(k) - 100.0) / 900.0
4006 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
4008 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4011 taug(ns02+ig,k) = corradj * (colamt(k,1) &
4012 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
4013 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
4014 & + tauself + taufor)
4022 do k = laytrop+1, nlay
4023 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(2) + 1
4024 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(2) + 1
4032 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4035 taug(ns02+ig,k) = colamt(k,1) &
4036 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
4037 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
4062 integer :: k, ind0, ind1, inds, indsp, indf, indfp, indm, indmp, &
4063 & id000, id010, id100, id110, id200, id210, jmn2o, jmn2op, &
4064 & id001, id011, id101, id111, id201, id211, jpl, jplp, &
4067 real (kind=kind_phys) :: absn2o, ratn2o, adjfac, adjcoln2o, &
4068 & speccomb, specparm, specmult, fs, &
4069 & speccomb1, specparm1, specmult1, fs1, &
4070 & speccomb_mn2o, specparm_mn2o, specmult_mn2o, fmn2o, &
4071 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
4072 & refrat_planck_a, refrat_planck_b, refrat_m_a, refrat_m_b, &
4073 & fac000, fac100, fac200, fac010, fac110, fac210, &
4074 & fac001, fac101, fac201, fac011, fac111, fac211, &
4075 & tau_major, tau_major1, tauself, taufor, n2om1, n2om2, &
4076 & p, p4, fk0, fk1, fk2
4084 refrat_planck_a = chi_mls(1,9)/chi_mls(2,9)
4085 refrat_planck_b = chi_mls(1,13)/chi_mls(2,13)
4086 refrat_m_a = chi_mls(1,3)/chi_mls(2,3)
4087 refrat_m_b = chi_mls(1,13)/chi_mls(2,13)
4092 speccomb = colamt(k,1) + rfrate(k,1,1)*colamt(k,2)
4093 specparm = colamt(k,1) / speccomb
4094 specmult = 8.0 * min(specparm, oneminus)
4095 js = 1 + int(specmult)
4096 fs = mod(specmult, f_one)
4097 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(3) + js
4099 speccomb1 = colamt(k,1) + rfrate(k,1,2)*colamt(k,2)
4100 specparm1 = colamt(k,1) / speccomb1
4101 specmult1 = 8.0 * min(specparm1, oneminus)
4102 js1 = 1 + int(specmult1)
4103 fs1 = mod(specmult1, f_one)
4104 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(3) + js1
4106 speccomb_mn2o = colamt(k,1) + refrat_m_a*colamt(k,2)
4107 specparm_mn2o = colamt(k,1) / speccomb_mn2o
4108 specmult_mn2o = 8.0 * min(specparm_mn2o, oneminus)
4109 jmn2o = 1 + int(specmult_mn2o)
4110 fmn2o = mod(specmult_mn2o, f_one)
4112 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,2)
4113 specparm_planck = colamt(k,1) / speccomb_planck
4114 specmult_planck = 8.0 * min(specparm_planck, oneminus)
4115 jpl = 1 + int(specmult_planck)
4116 fpl = mod(specmult_planck, f_one)
4131 p = coldry(k) * chi_mls(4,jp(k)+1)
4132 ratn2o = colamt(k,4) / p
4133 if (ratn2o > 1.5)
then 4134 adjfac = 0.5 + (ratn2o - 0.5)**0.65
4135 adjcoln2o = adjfac * p
4137 adjcoln2o = colamt(k,4)
4140 if (specparm < 0.125)
then 4144 fk1 = f_one - p - 2.0*p4
4152 else if (specparm > 0.875)
then 4156 fk1 = f_one - p - 2.0*p4
4176 fac000 = fk0*fac00(k)
4177 fac100 = fk1*fac00(k)
4178 fac200 = fk2*fac00(k)
4179 fac010 = fk0*fac10(k)
4180 fac110 = fk1*fac10(k)
4181 fac210 = fk2*fac10(k)
4183 if (specparm1 < 0.125)
then 4187 fk1 = f_one - p - 2.0*p4
4195 elseif (specparm1 > 0.875)
then 4199 fk1 = f_one - p - 2.0*p4
4219 fac001 = fk0*fac01(k)
4220 fac101 = fk1*fac01(k)
4221 fac201 = fk2*fac01(k)
4222 fac011 = fk0*fac11(k)
4223 fac111 = fk1*fac11(k)
4224 fac211 = fk2*fac11(k)
4227 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
4229 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4231 n2om1 =
ka_mn2o(ig,jmn2o,indm) + fmn2o &
4233 n2om2 =
ka_mn2o(ig,jmn2o,indmp) + fmn2o &
4235 absn2o = n2om1 + minorfrac(k) * (n2om2 - n2om1)
4237 tau_major = speccomb &
4238 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
4239 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
4240 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210))
4242 tau_major1 = speccomb1 &
4243 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
4244 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
4245 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211))
4247 taug(ns03+ig,k) = tau_major + tau_major1 &
4248 & + tauself + taufor + adjcoln2o*absn2o
4250 fracs(ns03+ig,k) =
fracrefa(ig,jpl) + fpl &
4257 do k = laytrop+1, nlay
4258 speccomb = colamt(k,1) + rfrate(k,1,1)*colamt(k,2)
4259 specparm = colamt(k,1) / speccomb
4260 specmult = 4.0 * min(specparm, oneminus)
4261 js = 1 + int(specmult)
4262 fs = mod(specmult, f_one)
4263 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(3) + js
4265 speccomb1 = colamt(k,1) + rfrate(k,1,2)*colamt(k,2)
4266 specparm1 = colamt(k,1) / speccomb1
4267 specmult1 = 4.0 * min(specparm1, oneminus)
4268 js1 = 1 + int(specmult1)
4269 fs1 = mod(specmult1, f_one)
4270 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(3) + js1
4272 speccomb_mn2o = colamt(k,1) + refrat_m_b*colamt(k,2)
4273 specparm_mn2o = colamt(k,1) / speccomb_mn2o
4274 specmult_mn2o = 4.0 * min(specparm_mn2o, oneminus)
4275 jmn2o = 1 + int(specmult_mn2o)
4276 fmn2o = mod(specmult_mn2o, f_one)
4278 speccomb_planck = colamt(k,1) + refrat_planck_b*colamt(k,2)
4279 specparm_planck = colamt(k,1) / speccomb_planck
4280 specmult_planck = 4.0 * min(specparm_planck, oneminus)
4281 jpl = 1 + int(specmult_planck)
4282 fpl = mod(specmult_planck, f_one)
4304 p = coldry(k) * chi_mls(4,jp(k)+1)
4305 ratn2o = colamt(k,4) / p
4306 if (ratn2o > 1.5)
then 4307 adjfac = 0.5 + (ratn2o - 0.5)**0.65
4308 adjcoln2o = adjfac * p
4310 adjcoln2o = colamt(k,4)
4315 fac000 = fk0*fac00(k)
4316 fac010 = fk0*fac10(k)
4317 fac100 = fk1*fac00(k)
4318 fac110 = fk1*fac10(k)
4322 fac001 = fk0*fac01(k)
4323 fac011 = fk0*fac11(k)
4324 fac101 = fk1*fac01(k)
4325 fac111 = fk1*fac11(k)
4328 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4330 n2om1 =
kb_mn2o(ig,jmn2o,indm) + fmn2o &
4332 n2om2 =
kb_mn2o(ig,jmn2o,indmp) + fmn2o &
4334 absn2o = n2om1 + minorfrac(k) * (n2om2 - n2om1)
4336 tau_major = speccomb &
4337 & * (fac000*
absb(ig,id000) + fac010*
absb(ig,id010) &
4338 & + fac100*
absb(ig,id100) + fac110*
absb(ig,id110))
4340 tau_major1 = speccomb1 &
4341 & * (fac001*
absb(ig,id001) + fac011*
absb(ig,id011) &
4342 & + fac101*
absb(ig,id101) + fac111*
absb(ig,id111))
4344 taug(ns03+ig,k) = tau_major + tau_major1 &
4345 & + taufor + adjcoln2o*absn2o
4347 fracs(ns03+ig,k) =
fracrefb(ig,jpl) + fpl &
4368 integer :: k, ind0, ind1, inds, indsp, indf, indfp, jpl, jplp, &
4369 & id000, id010, id100, id110, id200, id210, ig, js, js1, &
4370 & id001, id011, id101, id111, id201, id211
4372 real (kind=kind_phys) :: tauself, taufor, p, p4, fk0, fk1, fk2, &
4373 & speccomb, specparm, specmult, fs, &
4374 & speccomb1, specparm1, specmult1, fs1, &
4375 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
4376 & fac000, fac100, fac200, fac010, fac110, fac210, &
4377 & fac001, fac101, fac201, fac011, fac111, fac211, &
4378 & refrat_planck_a, refrat_planck_b, tau_major, tau_major1
4382 refrat_planck_a = chi_mls(1,11)/chi_mls(2,11)
4383 refrat_planck_b = chi_mls(3,13)/chi_mls(2,13)
4388 speccomb = colamt(k,1) + rfrate(k,1,1)*colamt(k,2)
4389 specparm = colamt(k,1) / speccomb
4390 specmult = 8.0 * min(specparm, oneminus)
4391 js = 1 + int(specmult)
4392 fs = mod(specmult, f_one)
4393 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(4) + js
4395 speccomb1 = colamt(k,1) + rfrate(k,1,2)*colamt(k,2)
4396 specparm1 = colamt(k,1) / speccomb1
4397 specmult1 = 8.0 * min(specparm1, oneminus)
4398 js1 = 1 + int(specmult1)
4399 fs1 = mod(specmult1, f_one)
4400 ind1 = ( jp(k)*5 + (jt1(k)-1)) * nspa(4) + js1
4402 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,2)
4403 specparm_planck = colamt(k,1) / speccomb_planck
4404 specmult_planck = 8.0 * min(specparm_planck, oneminus)
4405 jpl = 1 + int(specmult_planck)
4406 fpl = mod(specmult_planck, 1.0)
4414 if (specparm < 0.125)
then 4418 fk1 = f_one - p - 2.0*p4
4426 elseif (specparm > 0.875)
then 4430 fk1 = f_one - p - 2.0*p4
4450 fac000 = fk0*fac00(k)
4451 fac100 = fk1*fac00(k)
4452 fac200 = fk2*fac00(k)
4453 fac010 = fk0*fac10(k)
4454 fac110 = fk1*fac10(k)
4455 fac210 = fk2*fac10(k)
4457 if (specparm1 < 0.125)
then 4461 fk1 = f_one - p - 2.0*p4
4469 elseif (specparm1 > 0.875)
then 4473 fk1 = f_one - p - 2.0*p4
4493 fac001 = fk0*fac01(k)
4494 fac101 = fk1*fac01(k)
4495 fac201 = fk2*fac01(k)
4496 fac011 = fk0*fac11(k)
4497 fac111 = fk1*fac11(k)
4498 fac211 = fk2*fac11(k)
4501 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
4503 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4506 tau_major = speccomb &
4507 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
4508 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
4509 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210))
4511 tau_major1 = speccomb1 &
4512 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
4513 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
4514 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211))
4516 taug(ns04+ig,k) = tau_major + tau_major1 + tauself + taufor
4518 fracs(ns04+ig,k) =
fracrefa(ig,jpl) + fpl &
4525 do k = laytrop+1, nlay
4526 speccomb = colamt(k,3) + rfrate(k,6,1)*colamt(k,2)
4527 specparm = colamt(k,3) / speccomb
4528 specmult = 4.0 * min(specparm, oneminus)
4529 js = 1 + int(specmult)
4530 fs = mod(specmult, f_one)
4531 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(4) + js
4533 speccomb1 = colamt(k,3) + rfrate(k,6,2)*colamt(k,2)
4534 specparm1 = colamt(k,3) / speccomb1
4535 specmult1 = 4.0 * min(specparm1, oneminus)
4536 js1 = 1 + int(specmult1)
4537 fs1 = mod(specmult1, f_one)
4538 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(4) + js1
4540 speccomb_planck = colamt(k,3) + refrat_planck_b*colamt(k,2)
4541 specparm_planck = colamt(k,3) / speccomb_planck
4542 specmult_planck = 4.0 * min(specparm_planck, oneminus)
4543 jpl = 1 + int(specmult_planck)
4544 fpl = mod(specmult_planck, f_one)
4558 fac000 = fk0*fac00(k)
4559 fac010 = fk0*fac10(k)
4560 fac100 = fk1*fac00(k)
4561 fac110 = fk1*fac10(k)
4565 fac001 = fk0*fac01(k)
4566 fac011 = fk0*fac11(k)
4567 fac101 = fk1*fac01(k)
4568 fac111 = fk1*fac11(k)
4571 tau_major = speccomb &
4572 & * (fac000*
absb(ig,id000) + fac010*
absb(ig,id010) &
4573 & + fac100*
absb(ig,id100) + fac110*
absb(ig,id110))
4574 tau_major1 = speccomb1 &
4575 & * (fac001*
absb(ig,id001) + fac011*
absb(ig,id011) &
4576 & + fac101*
absb(ig,id101) + fac111*
absb(ig,id111))
4578 taug(ns04+ig,k) = tau_major + tau_major1
4580 fracs(ns04+ig,k) =
fracrefb(ig,jpl) + fpl &
4587 taug(ns04+ 8,k) = taug(ns04+ 8,k) * 0.92
4588 taug(ns04+ 9,k) = taug(ns04+ 9,k) * 0.88
4589 taug(ns04+10,k) = taug(ns04+10,k) * 1.07
4590 taug(ns04+11,k) = taug(ns04+11,k) * 1.1
4591 taug(ns04+12,k) = taug(ns04+12,k) * 0.99
4592 taug(ns04+13,k) = taug(ns04+13,k) * 0.88
4593 taug(ns04+14,k) = taug(ns04+14,k) * 0.943
4614 integer :: k, ind0, ind1, inds, indsp, indf, indfp, indm, indmp, &
4615 & id000, id010, id100, id110, id200, id210, jmo3, jmo3p, &
4616 & id001, id011, id101, id111, id201, id211, jpl, jplp, &
4619 real (kind=kind_phys) :: tauself, taufor, o3m1, o3m2, abso3, &
4620 & speccomb, specparm, specmult, fs, &
4621 & speccomb1, specparm1, specmult1, fs1, &
4622 & speccomb_mo3, specparm_mo3, specmult_mo3, fmo3, &
4623 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
4624 & refrat_planck_a, refrat_planck_b, refrat_m_a, &
4625 & fac000, fac100, fac200, fac010, fac110, fac210, &
4626 & fac001, fac101, fac201, fac011, fac111, fac211, &
4627 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21
4638 refrat_planck_a = chi_mls(1,5)/chi_mls(2,5)
4639 refrat_planck_b = chi_mls(3,43)/chi_mls(2,43)
4640 refrat_m_a = chi_mls(1,7)/chi_mls(2,7)
4645 speccomb = colamt(k,1) + rfrate(k,1,1)*colamt(k,2)
4646 specparm = colamt(k,1) / speccomb
4647 specmult = 8.0 * min(specparm, oneminus)
4648 js = 1 + int(specmult)
4649 fs = mod(specmult, f_one)
4650 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(5) + js
4652 speccomb1 = colamt(k,1) + rfrate(k,1,2)*colamt(k,2)
4653 specparm1 = colamt(k,1) / speccomb1
4654 specmult1 = 8.0 * min(specparm1, oneminus)
4655 js1 = 1 + int(specmult1)
4656 fs1 = mod(specmult1, f_one)
4657 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(5) + js1
4659 speccomb_mo3 = colamt(k,1) + refrat_m_a*colamt(k,2)
4660 specparm_mo3 = colamt(k,1) / speccomb_mo3
4661 specmult_mo3 = 8.0 * min(specparm_mo3, oneminus)
4662 jmo3 = 1 + int(specmult_mo3)
4663 fmo3 = mod(specmult_mo3, f_one)
4665 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,2)
4666 specparm_planck = colamt(k,1) / speccomb_planck
4667 specmult_planck = 8.0 * min(specparm_planck, oneminus)
4668 jpl = 1 + int(specmult_planck)
4669 fpl = mod(specmult_planck, f_one)
4680 if (specparm < 0.125)
then 4684 fk10 = f_one - p0 - 2.0*p40
4693 elseif (specparm > 0.875)
then 4697 fk10 = f_one - p0 - 2.0*p40
4719 fac000 = fk00 * fac00(k)
4720 fac100 = fk10 * fac00(k)
4721 fac200 = fk20 * fac00(k)
4722 fac010 = fk00 * fac10(k)
4723 fac110 = fk10 * fac10(k)
4724 fac210 = fk20 * fac10(k)
4726 if (specparm1 < 0.125)
then 4730 fk11 = f_one - p1 - 2.0*p41
4739 elseif (specparm1 > 0.875)
then 4743 fk11 = f_one - p1 - 2.0*p41
4765 fac001 = fk01 * fac01(k)
4766 fac101 = fk11 * fac01(k)
4767 fac201 = fk21 * fac01(k)
4768 fac011 = fk01 * fac11(k)
4769 fac111 = fk11 * fac11(k)
4770 fac211 = fk21 * fac11(k)
4773 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
4775 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4777 o3m1 = ka_mo3(ig,jmo3,indm) + fmo3 &
4778 & * (ka_mo3(ig,jmo3p,indm) - ka_mo3(ig,jmo3,indm))
4779 o3m2 = ka_mo3(ig,jmo3,indmp) + fmo3 &
4780 & * (ka_mo3(ig,jmo3p,indmp) - ka_mo3(ig,jmo3,indmp))
4781 abso3 = o3m1 + minorfrac(k)*(o3m2 - o3m1)
4783 taug(ns05+ig,k) = speccomb &
4784 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
4785 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
4786 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
4788 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
4789 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
4790 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
4791 & + tauself + taufor+abso3*colamt(k,3)+wx(k,1)*
ccl4(ig)
4793 fracs(ns05+ig,k) =
fracrefa(ig,jpl) + fpl &
4800 do k = laytrop+1, nlay
4801 speccomb = colamt(k,3) + rfrate(k,6,1)*colamt(k,2)
4802 specparm = colamt(k,3) / speccomb
4803 specmult = 4.0 * min(specparm, oneminus)
4804 js = 1 + int(specmult)
4805 fs = mod(specmult, f_one)
4806 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(5) + js
4808 speccomb1 = colamt(k,3) + rfrate(k,6,2)*colamt(k,2)
4809 specparm1 = colamt(k,3) / speccomb1
4810 specmult1 = 4.0 * min(specparm1, oneminus)
4811 js1 = 1 + int(specmult1)
4812 fs1 = mod(specmult1, f_one)
4813 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(5) + js1
4815 speccomb_planck = colamt(k,3) + refrat_planck_b*colamt(k,2)
4816 specparm_planck = colamt(k,3) / speccomb_planck
4817 specmult_planck = 4.0 * min(specparm_planck, oneminus)
4818 jpl = 1 + int(specmult_planck)
4819 fpl = mod(specmult_planck, f_one)
4837 fac000 = fk00 * fac00(k)
4838 fac010 = fk00 * fac10(k)
4839 fac100 = fk10 * fac00(k)
4840 fac110 = fk10 * fac10(k)
4842 fac001 = fk01 * fac01(k)
4843 fac011 = fk01 * fac11(k)
4844 fac101 = fk11 * fac01(k)
4845 fac111 = fk11 * fac11(k)
4848 taug(ns05+ig,k) = speccomb &
4849 & * (fac000*
absb(ig,id000) + fac010*
absb(ig,id010) &
4850 & + fac100*
absb(ig,id100) + fac110*
absb(ig,id110)) &
4852 & * (fac001*
absb(ig,id001) + fac011*
absb(ig,id011) &
4853 & + fac101*
absb(ig,id101) + fac111*
absb(ig,id111)) &
4854 & + wx(k,1) *
ccl4(ig)
4856 fracs(ns05+ig,k) =
fracrefb(ig,jpl) + fpl &
4879 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
4882 real (kind=kind_phys) :: ratco2, adjfac, adjcolco2, tauself, &
4883 & taufor, absco2, temp
4894 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(6) + 1
4895 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(6) + 1
4910 temp = coldry(k) * chi_mls(2,jp(k)+1)
4911 ratco2 = colamt(k,2) / temp
4912 if (ratco2 > 3.0)
then 4913 adjfac = 2.0 + (ratco2-2.0)**0.77
4914 adjcolco2 = adjfac * temp
4916 adjcolco2 = colamt(k,2)
4920 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
4922 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
4924 absco2 =
ka_mco2(ig,indm) + minorfrac(k) &
4927 taug(ns06+ig,k) = colamt(k,1) &
4928 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
4929 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
4930 & + tauself + taufor + adjcolco2*absco2 &
4931 & + wx(k,2)*
cfc11adj(ig) + wx(k,3)*cfc12(ig)
4940 do k = laytrop+1, nlay
4942 taug(ns06+ig,k) = wx(k,2)*
cfc11adj(ig) + wx(k,3)*cfc12(ig)
4966 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
4967 & id000, id010, id100, id110, id200, id210, indm, indmp, &
4968 & id001, id011, id101, id111, id201, id211, jmco2, jmco2p, &
4969 & jpl, jplp, ig, js, js1
4971 real (kind=kind_phys) :: tauself, taufor, co2m1, co2m2, absco2, &
4972 & speccomb, specparm, specmult, fs, &
4973 & speccomb1, specparm1, specmult1, fs1, &
4974 & speccomb_mco2, specparm_mco2, specmult_mco2, fmco2, &
4975 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
4976 & refrat_planck_a, refrat_m_a, ratco2, adjfac, adjcolco2, &
4977 & fac000, fac100, fac200, fac010, fac110, fac210, &
4978 & fac001, fac101, fac201, fac011, fac111, fac211, &
4979 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21, temp
4990 refrat_planck_a = chi_mls(1,3)/chi_mls(3,3)
4991 refrat_m_a = chi_mls(1,3)/chi_mls(3,3)
4996 speccomb = colamt(k,1) + rfrate(k,2,1)*colamt(k,3)
4997 specparm = colamt(k,1) / speccomb
4998 specmult = 8.0 * min(specparm, oneminus)
4999 js = 1 + int(specmult)
5000 fs = mod(specmult, f_one)
5001 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(7) + js
5003 speccomb1 = colamt(k,1) + rfrate(k,2,2)*colamt(k,3)
5004 specparm1 = colamt(k,1) / speccomb1
5005 specmult1 = 8.0 * min(specparm1, oneminus)
5006 js1 = 1 + int(specmult1)
5007 fs1 = mod(specmult1, f_one)
5008 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(7) + js1
5010 speccomb_mco2 = colamt(k,1) + refrat_m_a*colamt(k,3)
5011 specparm_mco2 = colamt(k,1) / speccomb_mco2
5012 specmult_mco2 = 8.0 * min(specparm_mco2, oneminus)
5013 jmco2 = 1 + int(specmult_mco2)
5014 fmco2 = mod(specmult_mco2, f_one)
5016 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,3)
5017 specparm_planck = colamt(k,1) / speccomb_planck
5018 specmult_planck = 8.0 * min(specparm_planck, oneminus)
5019 jpl = 1 + int(specmult_planck)
5020 fpl = mod(specmult_planck, f_one)
5037 temp = coldry(k) * chi_mls(2,jp(k)+1)
5038 ratco2 = colamt(k,2) / temp
5039 if (ratco2 > 3.0)
then 5040 adjfac = 3.0 + (ratco2-3.0)**0.79
5041 adjcolco2 = adjfac * temp
5043 adjcolco2 = colamt(k,2)
5046 if (specparm < 0.125)
then 5050 fk10 = f_one - p0 - 2.0*p40
5059 elseif (specparm > 0.875)
then 5063 fk10 = f_one - p0 - 2.0*p40
5085 fac000 = fk00 * fac00(k)
5086 fac100 = fk10 * fac00(k)
5087 fac200 = fk20 * fac00(k)
5088 fac010 = fk00 * fac10(k)
5089 fac110 = fk10 * fac10(k)
5090 fac210 = fk20 * fac10(k)
5092 if (specparm1 < 0.125)
then 5096 fk11 = f_one - p1 - 2.0*p41
5105 elseif (specparm1 > 0.875)
then 5109 fk11 = f_one - p1 - 2.0*p41
5131 fac001 = fk01 * fac01(k)
5132 fac101 = fk11 * fac01(k)
5133 fac201 = fk21 * fac01(k)
5134 fac011 = fk01 * fac11(k)
5135 fac111 = fk11 * fac11(k)
5136 fac211 = fk21 * fac11(k)
5139 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
5141 taufor = forfac(k) * (forref(ig,indf) + forfrac(k) &
5142 & * (forref(ig,indfp) - forref(ig,indf)))
5143 co2m1 =
ka_mco2(ig,jmco2,indm) + fmco2 &
5145 co2m2 =
ka_mco2(ig,jmco2,indmp) + fmco2 &
5147 absco2 = co2m1 + minorfrac(k) * (co2m2 - co2m1)
5149 taug(ns07+ig,k) = speccomb &
5150 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
5151 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
5152 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
5154 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
5155 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
5156 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
5157 & + tauself + taufor + adjcolco2*absco2
5159 fracs(ns07+ig,k) =
fracrefa(ig,jpl) + fpl &
5170 do k = laytrop+1, nlay
5171 temp = coldry(k) * chi_mls(2,jp(k)+1)
5172 ratco2 = colamt(k,2) / temp
5173 if (ratco2 > 3.0)
then 5174 adjfac = 2.0 + (ratco2-2.0)**0.79
5175 adjcolco2 = adjfac * temp
5177 adjcolco2 = colamt(k,2)
5180 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(7) + 1
5181 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(7) + 1
5189 absco2 =
kb_mco2(ig,indm) + minorfrac(k) &
5192 taug(ns07+ig,k) = colamt(k,3) &
5193 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
5194 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
5195 & + adjcolco2 * absco2
5203 taug(ns07+ 6,k) = taug(ns07+ 6,k) * 0.92
5204 taug(ns07+ 7,k) = taug(ns07+ 7,k) * 0.88
5205 taug(ns07+ 8,k) = taug(ns07+ 8,k) * 1.07
5206 taug(ns07+ 9,k) = taug(ns07+ 9,k) * 1.1
5207 taug(ns07+10,k) = taug(ns07+10,k) * 0.99
5208 taug(ns07+11,k) = taug(ns07+11,k) * 0.855
5229 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
5232 real (kind=kind_phys) :: tauself, taufor, absco2, abso3, absn2o, &
5233 & ratco2, adjfac, adjcolco2, temp
5248 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(8) + 1
5249 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(8) + 1
5264 temp = coldry(k) * chi_mls(2,jp(k)+1)
5265 ratco2 = colamt(k,2) / temp
5266 if (ratco2 > 3.0)
then 5267 adjfac = 2.0 + (ratco2-2.0)**0.65
5268 adjcolco2 = adjfac * temp
5270 adjcolco2 = colamt(k,2)
5274 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
5276 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5278 absco2 = (
ka_mco2(ig,indm) + minorfrac(k) &
5280 abso3 = (
ka_mo3(ig,indm) + minorfrac(k) &
5282 absn2o = (
ka_mn2o(ig,indm) + minorfrac(k) &
5285 taug(ns08+ig,k) = colamt(k,1) &
5286 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
5287 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
5288 & + tauself+taufor + adjcolco2*absco2 &
5289 & + colamt(k,3)*abso3 + colamt(k,4)*absn2o &
5298 do k = laytrop+1, nlay
5299 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(8) + 1
5300 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(8) + 1
5311 temp = coldry(k) * chi_mls(2,jp(k)+1)
5312 ratco2 = colamt(k,2) / temp
5313 if (ratco2 > 3.0)
then 5314 adjfac = 2.0 + (ratco2-2.0)**0.65
5315 adjcolco2 = adjfac * temp
5317 adjcolco2 = colamt(k,2)
5321 absco2 = (
kb_mco2(ig,indm) + minorfrac(k) &
5323 absn2o = (
kb_mn2o(ig,indm) + minorfrac(k) &
5326 taug(ns08+ig,k) = colamt(k,3) &
5327 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
5328 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
5329 & + adjcolco2*absco2 + colamt(k,4)*absn2o &
5354 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
5355 & id000, id010, id100, id110, id200, id210, indm, indmp, &
5356 & id001, id011, id101, id111, id201, id211, jmn2o, jmn2op, &
5357 & jpl, jplp, ig, js, js1
5359 real (kind=kind_phys) :: tauself, taufor, n2om1, n2om2, absn2o, &
5360 & speccomb, specparm, specmult, fs, &
5361 & speccomb1, specparm1, specmult1, fs1, &
5362 & speccomb_mn2o, specparm_mn2o, specmult_mn2o, fmn2o, &
5363 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
5364 & refrat_planck_a, refrat_m_a, ratn2o, adjfac, adjcoln2o, &
5365 & fac000, fac100, fac200, fac010, fac110, fac210, &
5366 & fac001, fac101, fac201, fac011, fac111, fac211, &
5367 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21, temp
5378 refrat_planck_a = chi_mls(1,9)/chi_mls(6,9)
5379 refrat_m_a = chi_mls(1,3)/chi_mls(6,3)
5384 speccomb = colamt(k,1) + rfrate(k,4,1)*colamt(k,5)
5385 specparm = colamt(k,1) / speccomb
5386 specmult = 8.0 * min(specparm, oneminus)
5387 js = 1 + int(specmult)
5388 fs = mod(specmult, f_one)
5389 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(9) + js
5391 speccomb1 = colamt(k,1) + rfrate(k,4,2)*colamt(k,5)
5392 specparm1 = colamt(k,1) / speccomb1
5393 specmult1 = 8.0 * min(specparm1, oneminus)
5394 js1 = 1 + int(specmult1)
5395 fs1 = mod(specmult1, f_one)
5396 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(9) + js1
5398 speccomb_mn2o = colamt(k,1) + refrat_m_a*colamt(k,5)
5399 specparm_mn2o = colamt(k,1) / speccomb_mn2o
5400 specmult_mn2o = 8.0 * min(specparm_mn2o, oneminus)
5401 jmn2o = 1 + int(specmult_mn2o)
5402 fmn2o = mod(specmult_mn2o, f_one)
5404 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,5)
5405 specparm_planck = colamt(k,1) / speccomb_planck
5406 specmult_planck = 8.0 * min(specparm_planck, oneminus)
5407 jpl = 1 + int(specmult_planck)
5408 fpl = mod(specmult_planck, f_one)
5423 temp = coldry(k) * chi_mls(4,jp(k)+1)
5424 ratn2o = colamt(k,4) / temp
5425 if (ratn2o > 1.5)
then 5426 adjfac = 0.5 + (ratn2o-0.5)**0.65
5427 adjcoln2o = adjfac * temp
5429 adjcoln2o = colamt(k,4)
5432 if (specparm < 0.125)
then 5436 fk10 = f_one - p0 - 2.0*p40
5445 elseif (specparm > 0.875)
then 5449 fk10 = f_one - p0 - 2.0*p40
5471 fac000 = fk00 * fac00(k)
5472 fac100 = fk10 * fac00(k)
5473 fac200 = fk20 * fac00(k)
5474 fac010 = fk00 * fac10(k)
5475 fac110 = fk10 * fac10(k)
5476 fac210 = fk20 * fac10(k)
5478 if (specparm1 < 0.125)
then 5482 fk11 = f_one - p1 - 2.0*p41
5491 elseif (specparm1 > 0.875)
then 5495 fk11 = f_one - p1 - 2.0*p41
5517 fac001 = fk01 * fac01(k)
5518 fac101 = fk11 * fac01(k)
5519 fac201 = fk21 * fac01(k)
5520 fac011 = fk01 * fac11(k)
5521 fac111 = fk11 * fac11(k)
5522 fac211 = fk21 * fac11(k)
5525 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
5527 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5529 n2om1 =
ka_mn2o(ig,jmn2o,indm) + fmn2o &
5531 n2om2 =
ka_mn2o(ig,jmn2o,indmp) + fmn2o &
5533 absn2o = n2om1 + minorfrac(k) * (n2om2 - n2om1)
5535 taug(ns09+ig,k) = speccomb &
5536 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
5537 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
5538 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
5540 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
5541 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
5542 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
5543 & + tauself + taufor + adjcoln2o*absn2o
5545 fracs(ns09+ig,k) =
fracrefa(ig,jpl) + fpl &
5552 do k = laytrop+1, nlay
5553 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(9) + 1
5554 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(9) + 1
5565 temp = coldry(k) * chi_mls(4,jp(k)+1)
5566 ratn2o = colamt(k,4) / temp
5567 if (ratn2o > 1.5)
then 5568 adjfac = 0.5 + (ratn2o - 0.5)**0.65
5569 adjcoln2o = adjfac * temp
5571 adjcoln2o = colamt(k,4)
5575 absn2o =
kb_mn2o(ig,indm) + minorfrac(k) &
5578 taug(ns09+ig,k) = colamt(k,5) &
5579 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
5580 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
5581 & + adjcoln2o*absn2o
5603 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
5606 real (kind=kind_phys) :: tauself, taufor
5613 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(10) + 1
5614 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(10) + 1
5624 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
5626 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5629 taug(ns10+ig,k) = colamt(k,1) &
5630 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
5631 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
5632 & + tauself + taufor
5640 do k = laytrop+1, nlay
5641 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(10) + 1
5642 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(10) + 1
5650 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5653 taug(ns10+ig,k) = colamt(k,1) &
5654 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
5655 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
5680 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
5683 real (kind=kind_phys) :: scaleo2, tauself, taufor, tauo2
5694 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(11) + 1
5695 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(11) + 1
5706 scaleo2 = colamt(k,6) * scaleminor(k)
5709 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
5711 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5713 tauo2 = scaleo2 * (
ka_mo2(ig,indm) + minorfrac(k) &
5716 taug(ns11+ig,k) = colamt(k,1) &
5717 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
5718 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
5719 & + tauself + taufor + tauo2
5727 do k = laytrop+1, nlay
5728 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(11) + 1
5729 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(11) + 1
5738 scaleo2 = colamt(k,6) * scaleminor(k)
5741 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5743 tauo2 = scaleo2 * (
kb_mo2(ig,indm) + minorfrac(k) &
5746 taug(ns11+ig,k) = colamt(k,1) &
5747 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
5748 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p)) &
5771 integer :: k, ind0, ind1, inds, indsp, indf, indfp, jpl, jplp, &
5772 & id000, id010, id100, id110, id200, id210, ig, js, js1, &
5773 & id001, id011, id101, id111, id201, id211
5775 real (kind=kind_phys) :: tauself, taufor, refrat_planck_a, &
5776 & speccomb, specparm, specmult, fs, &
5777 & speccomb1, specparm1, specmult1, fs1, &
5778 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
5779 & fac000, fac100, fac200, fac010, fac110, fac210, &
5780 & fac001, fac101, fac201, fac011, fac111, fac211, &
5781 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21
5788 refrat_planck_a = chi_mls(1,10)/chi_mls(2,10)
5793 speccomb = colamt(k,1) + rfrate(k,1,1)*colamt(k,2)
5794 specparm = colamt(k,1) / speccomb
5795 specmult = 8.0 * min(specparm, oneminus)
5796 js = 1 + int(specmult)
5797 fs = mod(specmult, f_one)
5798 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(12) + js
5800 speccomb1 = colamt(k,1) + rfrate(k,1,2)*colamt(k,2)
5801 specparm1 = colamt(k,1) / speccomb1
5802 specmult1 = 8.0 * min(specparm1, oneminus)
5803 js1 = 1 + int(specmult1)
5804 fs1 = mod(specmult1, f_one)
5805 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(12) + js1
5807 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,2)
5808 specparm_planck = colamt(k,1) / speccomb_planck
5809 if (specparm_planck >= oneminus) specparm_planck=oneminus
5810 specmult_planck = 8.0 * specparm_planck
5811 jpl = 1 + int(specmult_planck)
5812 fpl = mod(specmult_planck, f_one)
5820 if (specparm < 0.125)
then 5824 fk10 = f_one - p0 - 2.0*p40
5833 elseif (specparm > 0.875)
then 5837 fk10 = f_one - p0 - 2.0*p40
5859 fac000 = fk00 * fac00(k)
5860 fac100 = fk10 * fac00(k)
5861 fac200 = fk20 * fac00(k)
5862 fac010 = fk00 * fac10(k)
5863 fac110 = fk10 * fac10(k)
5864 fac210 = fk20 * fac10(k)
5866 if (specparm1 < 0.125)
then 5870 fk11 = f_one - p1 - 2.0*p41
5879 elseif (specparm1 > 0.875)
then 5883 fk11 = f_one - p1 - 2.0*p41
5905 fac001 = fk01 * fac01(k)
5906 fac101 = fk11 * fac01(k)
5907 fac201 = fk21 * fac01(k)
5908 fac011 = fk01 * fac11(k)
5909 fac111 = fk11 * fac11(k)
5910 fac211 = fk21 * fac11(k)
5913 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
5915 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
5918 taug(ns12+ig,k) = speccomb &
5919 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
5920 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
5921 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
5923 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
5924 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
5925 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
5926 & + tauself + taufor
5928 fracs(ns12+ig,k) =
fracrefa(ig,jpl) + fpl &
5935 do k = laytrop+1, nlay
5937 taug(ns12+ig,k) = f_zero
5938 fracs(ns12+ig,k) = f_zero
5958 integer :: k, ind0, ind1, inds, indsp, indf, indfp, indm, indmp, &
5959 & id000, id010, id100, id110, id200, id210, jmco2, jpl, &
5960 & id001, id011, id101, id111, id201, id211, jmco2p, jplp, &
5961 & jmco, jmcop, ig, js, js1
5963 real (kind=kind_phys) :: tauself, taufor, co2m1, co2m2, absco2, &
5964 & speccomb, specparm, specmult, fs, &
5965 & speccomb1, specparm1, specmult1, fs1, &
5966 & speccomb_mco2, specparm_mco2, specmult_mco2, fmco2, &
5967 & speccomb_mco, specparm_mco, specmult_mco, fmco, &
5968 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
5969 & refrat_planck_a, refrat_m_a, refrat_m_a3, ratco2, &
5970 & adjfac, adjcolco2, com1, com2, absco, abso3, &
5971 & fac000, fac100, fac200, fac010, fac110, fac210, &
5972 & fac001, fac101, fac201, fac011, fac111, fac211, &
5973 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21, temp
5985 refrat_planck_a = chi_mls(1,5)/chi_mls(4,5)
5986 refrat_m_a = chi_mls(1,1)/chi_mls(4,1)
5987 refrat_m_a3 = chi_mls(1,3)/chi_mls(4,3)
5992 speccomb = colamt(k,1) + rfrate(k,3,1)*colamt(k,4)
5993 specparm = colamt(k,1) / speccomb
5994 specmult = 8.0 * min(specparm, oneminus)
5995 js = 1 + int(specmult)
5996 fs = mod(specmult, f_one)
5997 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(13) + js
5999 speccomb1 = colamt(k,1) + rfrate(k,3,2)*colamt(k,4)
6000 specparm1 = colamt(k,1) / speccomb1
6001 specmult1 = 8.0 * min(specparm1, oneminus)
6002 js1 = 1 + int(specmult1)
6003 fs1 = mod(specmult1, f_one)
6004 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(13) + js1
6006 speccomb_mco2 = colamt(k,1) + refrat_m_a*colamt(k,4)
6007 specparm_mco2 = colamt(k,1) / speccomb_mco2
6008 specmult_mco2 = 8.0 * min(specparm_mco2, oneminus)
6009 jmco2 = 1 + int(specmult_mco2)
6010 fmco2 = mod(specmult_mco2, f_one)
6016 speccomb_mco = colamt(k,1) + refrat_m_a3*colamt(k,4)
6017 specparm_mco = colamt(k,1) / speccomb_mco
6018 specmult_mco = 8.0 * min(specparm_mco, oneminus)
6019 jmco = 1 + int(specmult_mco)
6020 fmco = mod(specmult_mco, f_one)
6022 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,4)
6023 specparm_planck = colamt(k,1) / speccomb_planck
6024 specmult_planck = 8.0 * min(specparm_planck, oneminus)
6025 jpl = 1 + int(specmult_planck)
6026 fpl = mod(specmult_planck, f_one)
6042 temp = coldry(k) * 3.55e-4
6043 ratco2 = colamt(k,2) / temp
6044 if (ratco2 > 3.0)
then 6045 adjfac = 2.0 + (ratco2-2.0)**0.68
6046 adjcolco2 = adjfac * temp
6048 adjcolco2 = colamt(k,2)
6051 if (specparm < 0.125)
then 6055 fk10 = f_one - p0 - 2.0*p40
6064 elseif (specparm > 0.875)
then 6068 fk10 = f_one - p0 - 2.0*p40
6090 fac000 = fk00 * fac00(k)
6091 fac100 = fk10 * fac00(k)
6092 fac200 = fk20 * fac00(k)
6093 fac010 = fk00 * fac10(k)
6094 fac110 = fk10 * fac10(k)
6095 fac210 = fk20 * fac10(k)
6097 if (specparm1 < 0.125)
then 6101 fk11 = f_one - p1 - 2.0*p41
6110 elseif (specparm1 > 0.875)
then 6114 fk11 = f_one - p1 - 2.0*p41
6136 fac001 = fk01 * fac01(k)
6137 fac101 = fk11 * fac01(k)
6138 fac201 = fk21 * fac01(k)
6139 fac011 = fk01 * fac11(k)
6140 fac111 = fk11 * fac11(k)
6141 fac211 = fk21 * fac11(k)
6144 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
6146 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
6148 co2m1 =
ka_mco2(ig,jmco2,indm) + fmco2 &
6150 co2m2 =
ka_mco2(ig,jmco2,indmp) + fmco2 &
6152 absco2 = co2m1 + minorfrac(k) * (co2m2 - co2m1)
6153 com1 = ka_mco(ig,jmco,indm) + fmco &
6154 & * (ka_mco(ig,jmcop,indm) - ka_mco(ig,jmco,indm))
6155 com2 = ka_mco(ig,jmco,indmp) + fmco &
6156 & * (ka_mco(ig,jmcop,indmp) - ka_mco(ig,jmco,indmp))
6157 absco = com1 + minorfrac(k) * (com2 - com1)
6159 taug(ns13+ig,k) = speccomb &
6160 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
6161 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
6162 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
6164 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
6165 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
6166 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
6167 & + tauself + taufor + adjcolco2*absco2 &
6168 & + colamt(k,7)*absco
6170 fracs(ns13+ig,k) =
fracrefa(ig,jpl) + fpl &
6177 do k = laytrop+1, nlay
6182 abso3 = kb_mo3(ig,indm) + minorfrac(k) &
6183 & * (kb_mo3(ig,indmp) - kb_mo3(ig,indm))
6185 taug(ns13+ig,k) = colamt(k,3)*abso3
6207 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
6210 real (kind=kind_phys) :: tauself, taufor
6217 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(14) + 1
6218 ind1 = ( jp(k) *5 + (jt1(k)-1)) * nspa(14) + 1
6228 tauself = selffac(k) * (
selfref(ig,inds) + selffrac(k) &
6230 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
6233 taug(ns14+ig,k) = colamt(k,2) &
6234 & * (fac00(k)*
absa(ig,ind0) + fac10(k)*
absa(ig,ind0p) &
6235 & + fac01(k)*
absa(ig,ind1) + fac11(k)*
absa(ig,ind1p)) &
6236 & + tauself + taufor
6244 do k = laytrop+1, nlay
6245 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(14) + 1
6246 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(14) + 1
6252 taug(ns14+ig,k) = colamt(k,2) &
6253 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
6254 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p))
6278 integer :: k, ind0, ind1, inds, indsp, indf, indfp, indm, indmp, &
6279 & id000, id010, id100, id110, id200, id210, jpl, jplp, &
6280 & id001, id011, id101, id111, id201, id211, jmn2, jmn2p, &
6283 real (kind=kind_phys) :: scalen2, tauself, taufor, &
6284 & speccomb, specparm, specmult, fs, &
6285 & speccomb1, specparm1, specmult1, fs1, &
6286 & speccomb_mn2, specparm_mn2, specmult_mn2, fmn2, &
6287 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
6288 & refrat_planck_a, refrat_m_a, n2m1, n2m2, taun2, &
6289 & fac000, fac100, fac200, fac010, fac110, fac210, &
6290 & fac001, fac101, fac201, fac011, fac111, fac211, &
6291 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21
6301 refrat_planck_a = chi_mls(4,1)/chi_mls(2,1)
6302 refrat_m_a = chi_mls(4,1)/chi_mls(2,1)
6307 speccomb = colamt(k,4) + rfrate(k,5,1)*colamt(k,2)
6308 specparm = colamt(k,4) / speccomb
6309 specmult = 8.0 * min(specparm, oneminus)
6310 js = 1 + int(specmult)
6311 fs = mod(specmult, f_one)
6312 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(15) + js
6314 speccomb1 = colamt(k,4) + rfrate(k,5,2)*colamt(k,2)
6315 specparm1 = colamt(k,4) / speccomb1
6316 specmult1 = 8.0 * min(specparm1, oneminus)
6317 js1 = 1 + int(specmult1)
6318 fs1 = mod(specmult1, f_one)
6319 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(15) + js1
6321 speccomb_mn2 = colamt(k,4) + refrat_m_a*colamt(k,2)
6322 specparm_mn2 = colamt(k,4) / speccomb_mn2
6323 specmult_mn2 = 8.0 * min(specparm_mn2, oneminus)
6324 jmn2 = 1 + int(specmult_mn2)
6325 fmn2 = mod(specmult_mn2, f_one)
6327 speccomb_planck = colamt(k,4) + refrat_planck_a*colamt(k,2)
6328 specparm_planck = colamt(k,4) / speccomb_planck
6329 specmult_planck = 8.0 * min(specparm_planck, oneminus)
6330 jpl = 1 + int(specmult_planck)
6331 fpl = mod(specmult_planck, f_one)
6333 scalen2 = colbrd(k) * scaleminor(k)
6344 if (specparm < 0.125)
then 6348 fk10 = f_one - p0 - 2.0*p40
6357 elseif (specparm > 0.875)
then 6361 fk10 = f_one - p0 - 2.0*p40
6383 fac000 = fk00 * fac00(k)
6384 fac100 = fk10 * fac00(k)
6385 fac200 = fk20 * fac00(k)
6386 fac010 = fk00 * fac10(k)
6387 fac110 = fk10 * fac10(k)
6388 fac210 = fk20 * fac10(k)
6390 if (specparm1 < 0.125)
then 6394 fk11 = f_one - p1 - 2.0*p41
6403 elseif (specparm1 > 0.875)
then 6407 fk11 = f_one - p1 - 2.0*p41
6429 fac001 = fk01 * fac01(k)
6430 fac101 = fk11 * fac01(k)
6431 fac201 = fk21 * fac01(k)
6432 fac011 = fk01 * fac11(k)
6433 fac111 = fk11 * fac11(k)
6434 fac211 = fk21 * fac11(k)
6437 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
6439 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
6441 n2m1 =
ka_mn2(ig,jmn2,indm) + fmn2 &
6443 n2m2 =
ka_mn2(ig,jmn2,indmp) + fmn2 &
6445 taun2 = scalen2 * (n2m1 + minorfrac(k) * (n2m2 - n2m1))
6447 taug(ns15+ig,k) = speccomb &
6448 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
6449 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
6450 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
6452 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
6453 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
6454 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
6455 & + tauself + taufor + taun2
6457 fracs(ns15+ig,k) =
fracrefa(ig,jpl) + fpl &
6464 do k = laytrop+1, nlay
6466 taug(ns15+ig,k) = f_zero
6468 fracs(ns15+ig,k) = f_zero
6488 integer :: k, ind0, ind0p, ind1, ind1p, inds, indsp, indf, indfp, &
6489 & id000, id010, id100, id110, id200, id210, jpl, jplp, &
6490 & id001, id011, id101, id111, id201, id211, ig, js, js1
6492 real (kind=kind_phys) :: tauself, taufor, refrat_planck_a, &
6493 & speccomb, specparm, specmult, fs, &
6494 & speccomb1, specparm1, specmult1, fs1, &
6495 & speccomb_planck,specparm_planck,specmult_planck,fpl, &
6496 & fac000, fac100, fac200, fac010, fac110, fac210, &
6497 & fac001, fac101, fac201, fac011, fac111, fac211, &
6498 & p0, p40, fk00, fk10, fk20, p1, p41, fk01, fk11, fk21
6505 refrat_planck_a = chi_mls(1,6)/chi_mls(6,6)
6510 speccomb = colamt(k,1) + rfrate(k,4,1)*colamt(k,5)
6511 specparm = colamt(k,1) / speccomb
6512 specmult = 8.0 * min(specparm, oneminus)
6513 js = 1 + int(specmult)
6514 fs = mod(specmult, f_one)
6515 ind0 = ((jp(k)-1)*5 + (jt(k)-1)) * nspa(16) + js
6517 speccomb1 = colamt(k,1) + rfrate(k,4,2)*colamt(k,5)
6518 specparm1 = colamt(k,1) / speccomb1
6519 specmult1 = 8.0 * min(specparm1, oneminus)
6520 js1 = 1 + int(specmult1)
6521 fs1 = mod(specmult1, f_one)
6522 ind1 = (jp(k)*5 + (jt1(k)-1)) * nspa(16) + js1
6524 speccomb_planck = colamt(k,1) + refrat_planck_a*colamt(k,5)
6525 specparm_planck = colamt(k,1) / speccomb_planck
6526 specmult_planck = 8.0 * min(specparm_planck, oneminus)
6527 jpl = 1 + int(specmult_planck)
6528 fpl = mod(specmult_planck, f_one)
6536 if (specparm < 0.125)
then 6540 fk10 = f_one - p0 - 2.0*p40
6549 elseif (specparm > 0.875)
then 6553 fk10 = f_one - p0 - 2.0*p40
6575 fac000 = fk00 * fac00(k)
6576 fac100 = fk10 * fac00(k)
6577 fac200 = fk20 * fac00(k)
6578 fac010 = fk00 * fac10(k)
6579 fac110 = fk10 * fac10(k)
6580 fac210 = fk20 * fac10(k)
6582 if (specparm1 < 0.125)
then 6586 fk11 = f_one - p1 - 2.0*p41
6595 elseif (specparm1 > 0.875)
then 6599 fk11 = f_one - p1 - 2.0*p41
6621 fac001 = fk01 * fac01(k)
6622 fac101 = fk11 * fac01(k)
6623 fac201 = fk21 * fac01(k)
6624 fac011 = fk01 * fac11(k)
6625 fac111 = fk11 * fac11(k)
6626 fac211 = fk21 * fac11(k)
6629 tauself = selffac(k)* (
selfref(ig,inds) + selffrac(k) &
6631 taufor = forfac(k) * (
forref(ig,indf) + forfrac(k) &
6634 taug(ns16+ig,k) = speccomb &
6635 & * (fac000*
absa(ig,id000) + fac010*
absa(ig,id010) &
6636 & + fac100*
absa(ig,id100) + fac110*
absa(ig,id110) &
6637 & + fac200*
absa(ig,id200) + fac210*
absa(ig,id210)) &
6639 & * (fac001*
absa(ig,id001) + fac011*
absa(ig,id011) &
6640 & + fac101*
absa(ig,id101) + fac111*
absa(ig,id111) &
6641 & + fac201*
absa(ig,id201) + fac211*
absa(ig,id211)) &
6642 & + tauself + taufor
6644 fracs(ns16+ig,k) =
fracrefa(ig,jpl) + fpl &
6651 do k = laytrop+1, nlay
6652 ind0 = ((jp(k)-13)*5 + (jt(k)-1)) * nspb(16) + 1
6653 ind1 = ((jp(k)-12)*5 + (jt1(k)-1)) * nspb(16) + 1
6659 taug(ns16+ig,k) = colamt(k,5) &
6660 & * (fac00(k)*
absb(ig,ind0) + fac10(k)*
absb(ig,ind0p) &
6661 & + fac01(k)*
absb(ig,ind1) + fac11(k)*
absb(ig,ind1p))
6678 end module module_radlw_main
real(kind=kind_phys), dimension(ng09, mmn09), public kb_mn2o
the array kb_mxxx contains the absorption coefficient for a minor species at the NG09=12 chosen g-val...
real(kind=kind_phys), dimension(ng08, mmc08), public ka_mco2
minor gas mapping level:lower - co2, p = 1053.63 mb, t = 294.2 k
This module sets up absorption coefficients for band 12: 1800-2080 cm-1 (low - h2o, co2; high - /)
real(kind=kind_phys), dimension(ng09), public fracrefb
planck fraction mapping level : p 3.20e-2 mb, t = 197.92 k
integer, parameter ngptlw
num of total g-points
Define type construct for radiation fluxes at surface.
real(kind=kind_phys), dimension(ng07, msb07), public absb
the array absb(NG07,235) = kb(NG07,5,13:59) contains absorption coefs at the NG07=12 chosen g-values ...
real(kind=kind_phys), dimension(ng15, msa15), public absa
the array absa(NG15,585) = ka(NG15,9,5,13) contains absorption coefs at the NG15=2 g-intervals for a ...
real(kind=kind_phys), dimension(ng05, mbf05), public fracrefb
planck fraction mapping level : p = 0.2369280 mbar, t = 253.60 k
subroutine taugb10
Band 10: 1390-1480 cm-1 (low key - h2o; high key - h2o)
real(kind=kind_phys), dimension(ng04, msf04), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng15, msf15), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng06, msa06), public absa
the array absa(NG06,65) = ka(NG06,5,13) contains absorption coefs at the NG06=8 g-intervals for a ran...
real(kind=kind_phys), dimension(ng08, mmc08), public ka_mo3
minor gas mapping level:lower - o3, p = 317.348 mb, t = 240.77 k
real(kind=kind_phys), dimension(ng08, msb08), public absb
the array absb(NG08,235) = kb(NG08,5,13:59) contains absorption coefs at the NG08=8 chosen g-values f...
subroutine, public lwrad(plyr, plvl, tlyr, tlvl, qlyr, olyr, gasvmr, clouds, icseed, aerosols, sfemis, sfgtmp, npts, nlay, nlp1, lprnt, hlwc, topflx, sfcflx, HLW0, HLWB, FLXPRF)
This subroutine is the main LW radiation routine.
real(kind=kind_phys), dimension(ng09, maf09), public fracrefa
planck fractions mapping level : p=212.7250 mb, t = 223.06 k
This module sets up absorption coefficients for band 15: 2380-2600 cm-1 (low - n2o, co2; high - /)
real(kind=kind_phys), dimension(ng04, msa04), public absa
the array absa(NG04,585) = ka(NG04,9,5,13) contains absorption coefs at the NG04=14 g-intervals for a...
real(kind=kind_phys), dimension(ng01, msf01), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(58, nbands) absliq1
Hu and Stamnes method . the liquid water absorption coefficients are listed for a range of effective...
real(kind=kind_phys), dimension(ng10, msa10), public absa
the array absa(NG10,65) = ka(NG10,5,13) contains absorption coefs at the NG10=6 chosen g-values for a...
real(kind=kind_phys), dimension(ng03, maf03), public fracrefa
planck fraction mapping level: p=212.7250 mbar, t = 223.06 k
real(kind=kind_phys), dimension(ng11, msa11), public absa
the array absa(NG11,65) = ka(NG11,5,13) contains absorption coefs at the NG11=8 chosen g-values for a...
real(kind=kind_phys), dimension(ng13, msf13), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng09, msa09), public absa
the array absa(NG09,585) = ka(NG09,9,5,13) contains absorption coefs at the NG09=12 g-intervals for a...
This module sets up absorption coefficients for band 06: 820-980 cm-1 (low - h2o; high - /) ...
real(kind=kind_phys), dimension(ng16, maf16), public fracrefa
planck fraction mapping level: p = 387.6100 mbar, t = 250.17 k
real(kind=kind_phys), dimension(ng14), public fracrefa
planck fraction mapping level : p = 142.5940 mb, t = 215.70 k
real(kind=kind_phys), dimension(ng07), public fracrefb
planck data fraction mapping level : p=95.58 mbar, t= 215.70 k
real(kind=kind_phys), dimension(ng10), public fracrefb
planck fraction mapping level : p = 95.58350 mb, t = 215.70 k
real(kind=kind_phys), dimension(ng13), public fracrefb
planck fraction mapping level : p=4.758820 mb, t = 250.85 k
real(kind=kind_phys), dimension(ng09, mfr09), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
subroutine rtrnmc(semiss, delp, cldfmc, taucld, tautot, pklay, pklev, fracs, secdif, nlay, nlp1, totuflux, totdflux, htr, totuclfl, totdclfl, htrcl, htrb)
This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cl...
real(kind=kind_phys), dimension(ng05), public ccl4
minor gas (o3, ccl4) mapping level : p = 317.34 mbar, t = 240.77 k
subroutine taugb15
Band 15: 2380-2600 cm-1 (low - n2o,co2; low minor - n2) (high - nothing)
real(kind=kind_phys), dimension(43, nbands) absice2
for iflagice =2, absice2 are the ice water absorption coefficients used for streamer method...
real(kind=kind_phys), dimension(ng04, msb04), public absb
the array absb(NG04,1175) = kb(NG04,5,5,13:59) contains absorption coefs at the NG04=14 g-intervals f...
real(kind=kind_phys), dimension(ng08, mfr08), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng14, mfr14), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
integer, parameter maxxsec
num of halocarbon gasees
This module sets up absorption coefficients for band 09: 1180-1390 cm-1 (low - h2o, ch4; high - ch4)
real(kind=kind_phys), dimension(ng08), public cfc22adj
original cfc22 is multiplied by 1.485 to account for the 780-850 cm-1 and 1290-1335 cm-1 bands...
subroutine taumol(laytrop, pavel, coldry, colamt, colbrd, wx, tauaer, rfrate, fac00, fac01, fac10, fac11, jp, jt, jt1, selffac, selffrac, indself, forfac, forfrac, indfor, minorfrac, scaleminor, scaleminorn2, indminor, nlay, fracs, tautot)
This subroutine contains optical depths developed for the rapid radiative transfer model...
This module sets up absorption coefficients for band 11: 1480-1800 cm-1 (low - h2o; high - h2o) ...
real(kind=kind_phys), dimension(ng01, msb01), public absb
the array absb(NG01,235) = kb(NG01,5,13:59) contains absorption coefs at the NG01=10 chosen g-values ...
real(kind=kind_phys), dimension(ng05, mfr05), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng09, maf09, mmn09), public ka_mn2o
the array ka_mxxx contains the absorption coefficient for a minor species at the 16 chosen g-values f...
real(kind=kind_phys), dimension(ng01), public fracrefb
planck fraction mapping level: p = 212.7250 mbar, t = 223.06 k these planck fractions were calculated...
real(kind=kind_phys), dimension(ng16, msf16), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng08), public cfc12
minor gas mapping level:lower - cfc12
real(kind=kind_phys), dimension(ng03, mbf03), public fracrefb
planck fraction mapping level: p = 95.8 mbar, t = 215.7 k
real(kind=kind_phys), dimension(ng08, msa08), public absa
the array absa(NG08,65) = ka(NG08,5,13) contains absorption coefs at the NG08=8 g-intervals for a ran...
real(kind=kind_phys), dimension(ng02, msa02), public absa
the array absa(NG02,65) = ka(NG02,5,13) contains absorption coefs at the NG02=12 chosen g-values for ...
This module sets up absorption coefficients for band 02: 250-500 cm-1 (low - h2o; high - h2o) ...
subroutine taugb16
Band 16: 2600-3250 cm-1 (low key- h2o,ch4; high key - ch4)
real(kind=kind_phys), parameter absrain
absrain is the rain drop absorption coefficient .
real(kind=kind_phys), dimension(ng11, mfr11), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
Define type construct for optional radiation flux profiles.
real(kind=kind_phys), dimension(ng14, msa14), public absa
the array absa(NG14,65) = ka(NG14,5,13) contains absorption coefs at the NG14=2 chosen g-values for a...
real(kind=kind_phys), dimension(ng09, msb09), public absb
the array absb(NG09,235) = kb(NG09,5,13:59) contains absorption coefs at the NG09=12 chosen g-values ...
real(kind=kind_phys), dimension(ng06, mmc06), public ka_mco2
the array kao_mxx contains the absorption coefficient for a minor species at the NG06=8 chosen g-valu...
real(kind=kind_phys), dimension(ng11, msb11), public absb
the array absb(NG11,235) = kb(NG11,5,13:59) contains absorption coefs at the NG11=8 chosen g-values f...
integer, dimension(nbands) ipat
ipat is bands index for ebert&curry ice cloud (for iflagice=1)
This module sets up absorption coefficients for band 05: 700-820 cm-1 (low - h2o, co2; high - co2...
subroutine taugb13
Band 13: 2080-2250 cm-1 (low key-h2o,n2o; high minor-o3 minor)
real(kind=kind_phys), dimension(ng14), public fracrefb
planck fraction mapping level : p = 4.758820mb, t = 250.85 k
real(kind=kind_phys), dimension(ng04, mbf04), public fracrefb
planck fraction mapping level : p = 95.58350 mb, t = 215.70 k
real(kind=kind_phys), dimension(ng02), public fracrefa
planck fraction mapping level: p = 1053.630 mbar, t = 294.2 k
real(kind=kind_phys), dimension(ng03, mbf03, mmn03), public kb_mn2o
the array kb_mxxx contains the absorption coefficient for a minor species at the NG03=16 chosen g-val...
real(kind=kind_phys), parameter abssnow0
abssnow0 is the snow flake absorption coefficient (micron), fu coeff
real(kind=kind_phys), dimension(ng08, mmc08), public kb_mco2
minor gas mapping level:upper - co2, p = 35.1632 mb, t = 223.28 k
real(kind=kind_phys), dimension(ng01, msa01), public absa
the array absa(NG01,65) = ka(NG01,5,13) contains absorption coefs at the NG01=10 chosen g-values for ...
real(kind=kind_phys), dimension(ng07, maf07, mmc07), public ka_mco2
the array ka_mxxx contains the absorption coefficient for a minor species at the NG07=12 chosen g-val...
real(kind=kind_phys), dimension(ng12, msf12), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng03, msb03), public absb
the array absb(NG03,1175) = kb(NG03,5,5,13:59) contains absorption coefs at the NG03=16 g-intervals f...
real(kind=kind_phys), dimension(ng08), public fracrefb
planck fraction mapping level : p=95.5835 mb, t= 215.7 k
real(kind=kind_phys), dimension(ng02), public fracrefb
planck fraction mapping level: p = 3.206e-2 mb, t = 197.92 k
real(kind=kind_phys), dimension(ng11, mmo11), public ka_mo2
the array ka_mxx contains the absorption coefficient for a minor species at the NG11=8 chosen g-value...
real(kind=kind_phys), dimension(ng12, mfr12), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
This module contains reference temperature and pressure.
subroutine taugb08
Band 8: 1080-1180 cm-1 (low key - h2o; low minor - co2,o3,n2o) (high key - o3; high minor - co2...
real(kind=kind_phys), dimension(nplnk, nbands), public totplnk
plank flux data
real(kind=kind_phys), dimension(ng15, mfr15), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
This module sets up absorption coefficients for band 14: 2250-2380 cm-1 (low - co2; high - co2) ...
real(kind=kind_phys), dimension(ng06), public fracrefa
planck fraction mapping level : p = 473.4280 mb, t = 259.83 k
subroutine rtrn(semiss, delp, cldfrc, taucld, tautot, pklay, pklev, fracs, secdif, nlay, nlp1, totuflux, totdflux, htr, totuclfl, totdclfl, htrcl, htrb)
This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cl...
real(kind=kind_phys), dimension(ng14, msf14), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng02, msb02), public absb
the array absb(NG02,235) = kb(NG02,5,13:59) contains absorption coefs at the NG02=12 chosen g-values ...
real(kind=kind_phys), dimension(46, nbands) absice3
for iflagice = 3, absice3 are the ice water absorption coefficients used for fu parameterization. particle size 5 - 140 micron in increments of 3 microns. units = m2/g. hexagonal ice particle parameterization absorption units (abs coef/iwc):
real(kind=kind_phys), dimension(ng05, msf05), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng06), public cfc11adj
lower - co2, p = 706.2720 mb, t = 294.2 k upper - cfc11, cfc12 original cfc11 is multiplied by 1...
subroutine taugb12
Band 12: 1800-2080 cm-1 (low - h2o,co2; high - nothing)
real(kind=kind_phys), dimension(ng11), public fracrefb
planck fraction mapping level : p=0.353 mb, t = 262.11 k
This module sets up absorption coefficients for band 01: 10-250 cm-1 (low - h2o; high - h2o) ...
real(kind=kind_phys), dimension(ng05, maf05), public fracrefa
planck fraction mapping level : p = 473.42 mb, t = 259.83 k
real(kind=kind_phys), dimension(ng08, msf08), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng13, msa13), public absa
the array absa(NG13,585) = ka(NG13,9,5,13) contains absorption coefs at the NG13=4 g-intervals for a ...
integer, parameter ntbl
lookup table dimension
real(kind=kind_phys), dimension(ng02, msf02), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng15, maf15, mmn15), public ka_mn2
the array ka_mxx contains the absorption coefficient for a minor species at the NG15=2 chosen g-value...
real(kind=kind_phys), dimension(ng01), public fracrefa
planck fraction mapping level: p = 212.7250 mbar, t = 223.06 k
real(kind=kind_phys), dimension(ng07, mmc07), public kb_mco2
the array kb_mxxx contains absorption coefficient for a minor species at the NG07=12 chosen g-values ...
real(kind=kind_phys), dimension(ng16, mfr16), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
This module sets up absorption coefficients for band 08: 1080-1180 cm-1 (low - h2o; high - o3) ...
real(kind=kind_phys), dimension(ng04, maf04), public fracrefa
planck fraction mapping level: p=212.7250 mbar, t = 223.06 k
real(kind=kind_phys), dimension(ng05, msa05), public absa
the array absa(NG05,585) = ka(NG05,9,5,13) contains absorption coefs at the NG05=16 g-intervals for a...
real(kind=kind_phys), dimension(ng13, mfr13), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
This module sets up absorption coefficients for band 10: 1390-1480 cm-1 (low - h2o; high - h2o) ...
real(kind=kind_phys), dimension(ng09, msf09), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
real(kind=kind_phys), dimension(ng07, maf07), public fracrefa
planck fraction mapping level : p = 706.27 mb, t = 278.94 k
real(kind=kind_phys), dimension(ng08), public fracrefa
planck fraction mapping level : p=473.4280 mb, t = 259.83 k
real(kind=kind_phys), dimension(ng03, msa03), public absa
the array absa(NG03,585) = ka(NG03,9,5,13) contains absorption coefs at the NG03=16 g-intervals for a...
real(kind=kind_phys), dimension(ng10, msf10), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
subroutine taugb04
Band 4: 630-700 cm-1 (low key - h2o,co2; high key - o3,co2)
real(kind=kind_phys), dimension(ng06, mfr06), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng08, mmc08), public kb_mn2o
minor gas mapping level:upper - n2o, p = 8.716e-2 mb, t = 226.03 k
This module contains LW band parameters set up.
Define type construct for radiation fluxes at toa.
real(kind=kind_phys), dimension(ng01, mfr01), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng07, msf07), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
subroutine cldprop(cfrac, cliqp, reliq, cicep, reice, cdat1, cdat2, cdat3, cdat4, nlay, nlp1, ipseed, cldfmc, taucld)
This subroutine computes the cloud optical depth(s) for each cloudy layer and g-point interval...
This module sets up absorption coefficients for band 13: 2080-2250 cm-1 (low - h2o, n2o; high - /)
real(kind=kind_phys), dimension(ng11, msf11), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
subroutine, public rlwinit(me)
This subroutine performs calculations necessary for the initialization of the longwave model...
subroutine taugb07
Band 7: 980-1080 cm-1 (low key - h2o,o3; low minor - co2) (high key - o3; high minor - co2) ...
real(kind=kind_phys), dimension(ng13, maf13, mmo13), public ka_mco2
the array ka_mxxx contains the absorption coefficient for a minor species at the NG13=4 chosen g-valu...
integer, parameter nrates
num of ref rates of binary species
real(kind=kind_phys), dimension(ng16, msa16), public absa
the array absa(NG16,585) = ka(NG16,9,5,13) contains absorption coefs at the NG16=2 g-intervals for a ...
This module sets up absorption coefficients for band 04: 630-700 cm-1 (low - h2o, co2; high - co2...
subroutine mcica_subcol(cldf, nlay, ipseed, lcloudy)
This suroutine computes sub-colum cloud profile flag array.
real(kind=kind_phys), dimension(2, 5) absice1
for iflagice = 1, absice1 are the ice water absorption coefficients used for ebert and curry method ...
subroutine rtrnmr(semiss, delp, cldfrc, taucld, tautot, pklay, pklev, fracs, secdif, nlay, nlp1, totuflux, totdflux, htr, totuclfl, totdclfl, htrcl, htrb)
This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cl...
real(kind=kind_phys), dimension(ng10), public fracrefa
planck fraction mapping level : p = 212.7250, t = 223.06 k
subroutine taugb09
Band 9: 1180-1390 cm-1 (low key - h2o,ch4; low minor - n2o) (high key - ch4; high minor - n2o) ...
real(kind=kind_phys), dimension(ng14, msb14), public absb
the array absb(NG14,235) = kb(NG14,5,13:59) contains absorption coefs at the NG14=2 chosen g-values f...
real(kind=kind_phys), dimension(ng12, msa12), public absa
the array absa(NG12,585) = ka(NG12,9,5,13) contains absorption coefs at the NG12=8 g-intervals for a ...
real(kind=kind_phys), dimension(ng08, mmc08), public ka_mn2o
minor gas mapping level:lower - n2o, p = 706.2720 mb, t= 278.94 k
subroutine taugb11
Band 11: 1480-1800 cm-1 (low - h2o; low minor - o2) (high key - h2o; high minor - o2) ...
real(kind=kind_phys), dimension(ng07, msa07), public absa
the array absa(NG07,585) = ka(NG07,9,5,13) contains absorption coefs at the NG07=12 g-intervals for a...
subroutine taugb02
Band 2: 350-500 cm-1 (low key - h2o; high key - h2o)
This module sets up absorption coefficients for band 07: 980-1080 cm-1 (low - h2o, o3; high - o3)
real(kind=kind_phys), dimension(ng03, msf03), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
subroutine taugb03
Band 3: 500-630 cm-1 (low key - h2o,co2; low minor - n2o); (high key - h2o,co2; high minor - n2o) ...
subroutine taugb14
Band 14: 2250-2380 cm-1 (low - co2; high - co2)
real(kind=kind_phys), dimension(ng16, msb16), public absb
the array absb(NG16,235) = kb(NG16,5,13:59) contains absorption coefs at the NG16=2 chosen g-values f...
subroutine taugb05
Band 5: 700-820 cm-1 (low key - h2o,co2; low minor - o3, ccl4) (high key - o3,co2) ...
real(kind=kind_phys), dimension(ng10, mfr10), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng16), public fracrefb
planck fraction mapping level : p=95.58350 mb, t = 215.70 k
real(kind=kind_phys), dimension(ng05, msb05), public absb
the array absb(NG05,1175) = kb(NG05,5,5,13:59) contains absorption coefs at the NG05=16 g-intervals f...
real(kind=kind_phys), dimension(ng11), public fracrefa
planck fraction mapping level : p=1053.63 mb, t= 294.2 k
This module sets up absorption coefficients for band 16: 2600-3000 cm-1 (low - h2o, ch4; high - /)
real(kind=kind_phys), dimension(ng02, mfr02), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng15, maf15), public fracrefa
planck fraction mapping level : p = 1053. mb, t = 294.2 k
real(kind=kind_phys), dimension(ng06, msf06), public selfref
the array selfref contains the coefficient of the water vapor self-continuum (including the energy te...
subroutine setcoef(pavel, tavel, tz, stemp, h2ovmr, colamt, coldry, colbrd, nlay, nlp1, laytrop, pklay, pklev, jp, jt, jt1, rfrate, fac00, fac01, fac10, fac11, selffac, selffrac, indself, forfac, forfrac, indfor, minorfrac, scaleminor, scaleminorn2, indminor)
This subroutine computes various coefficients needed in radiative transfer calculations.
subroutine taugb06
Band 6: 820-980 cm-1 (low key - h2o; low minor - co2) (high key - none; high minor - cfc11...
This module contains cloud property coefficients.
integer, parameter maxgas
max num of absorbing gases
This module sets up absorption coefficients for band 03: 500-630 cm-1 (low - h2o, co2; high - h2o...
subroutine taugb01
band 1: 10-350 cm-1 (low key - h2o; low minor - n2); (high key - h2o; high minor - n2) ...
real(kind=kind_phys), dimension(ng13, maf13), public fracrefa
planck fraction mapping level : p=473.4280 mb, t = 259.83 k
real(kind=kind_phys), dimension(ng12, maf12), public fracrefa
planck fraction mapping level : p = 174.1640 mbar, t= 215.78 k
This module contains plank flux data.
real(kind=kind_phys), dimension(ng03, mfr03), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng11, mmo11), public kb_mo2
the array kb_mxx contains the absorption coefficient for a minor species at the NG11=8 chosen g-value...
integer, parameter nbands
num of total spectral bands
real(kind=kind_phys), dimension(ng03, maf03, mmn03), public ka_mn2o
the array ka_mxxx(NG03,9,19) contains the absorption coefficient for a minor species at the NG03=16 c...
integer, dimension(ngptlw) ngb
band indices for each g-point
real(kind=kind_phys), dimension(ng04, mfr04), public forref
the array forref contains the coefficient of the water vapor foreign-continuum (including the energy ...
real(kind=kind_phys), dimension(ng10, msb10), public absb
the array absb(NG10,235) = kb(NG10,5,13:59) contains absorption coefs at the NG10=6 chosen g-values f...