192 use funcphys
, only : fpvs
219 character(40),
parameter :: &
220 & VTAGRAD=
'NCEP-Radiation_driver v5.2 Jan 2013 ' 239 integer,
parameter ::
ltp = 0
371 integer,
intent(in) :: NLAY, me
373 real (kind=kind_phys),
intent(in) :: si(:)
392 print *,
' NEW RADIATION PROGRAM STRUCTURES BECAME OPER. ', &
395 print *,
' - Selected Control Flag settings: ICTMflg=',
ictmflg, &
405 print *,
' LTP =',
ltp,
', add extra top layer =',
lextop 408 print *,
' Data usage is limited by initial condition!' 409 print *,
' No volcanic aerosols' 413 print *,
' - ISUBCLW=',
isubclw,
' No McICA, use grid ', &
414 &
'averaged cloud in LW radiation' 416 print *,
' - ISUBCLW=',
isubclw,
' Use McICA with fixed ', &
417 &
'permutation seeds for LW random number generator' 419 print *,
' - ISUBCLW=',
isubclw,
' Use McICA with random ', &
420 &
'permutation seeds for LW random number generator' 422 print *,
' - ERROR!!! ISUBCLW=',
isubclw,
' is not a ', &
428 print *,
' - ISUBCSW=',
isubcsw,
' No McICA, use grid ', &
429 &
'averaged cloud in SW radiation' 431 print *,
' - ISUBCSW=',
isubcsw,
' Use McICA with fixed ', &
432 &
'permutation seeds for SW random number generator' 434 print *,
' - ISUBCSW=',
isubcsw,
' Use McICA with random ', &
435 &
'permutation seeds for SW random number generator' 437 print *,
' - ERROR!!! ISUBCSW=',
isubcsw,
' is not a ', &
443 print *,
' - *** Notice *** ISUBCSW /= ISUBCLW !!!', &
497 & ( idate,jdate,deltsw,deltim,lsswr, me, &
499 & slag,sdec,cdec,solcon &
563 integer,
intent(in) :: idate(:), jdate(:), me
564 logical,
intent(in) :: lsswr
566 real (kind=kind_phys),
intent(in) :: deltsw, deltim
569 real (kind=kind_phys),
intent(out) :: slag, sdec, cdec, solcon
572 integer :: iyear, imon, iday, ihour
573 integer :: kyear, kmon, kday, khour
603 if (
month0 /= imon )
then 617 elseif (
iyear0 /= iyear )
then 620 lsol_chg = (
isolar==4 .and. lmon_chg )
626 & ( jdate,kyear,deltsw,deltim,lsol_chg, me, &
628 & slag,sdec,cdec,solcon &
644 if (
monthd /= kmon )
then 812 & ( prsi,prsl,prslk,tgrs,qgrs,tracer,vvl,slmsk, &
813 & xlon,xlat,tsfc,snowd,sncovr,snoalb,zorl,hprim, &
814 & alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, &
815 & sinlat,coslat,solhr,jdate,solcon, &
816 & cv,cvt,cvb,fcice,frain,rrime,flgmin, &
817 & icsdsw,icsdlw, ntcw,ncld,ntoz, ntrac,nfxr, &
818 & dtlw,dtsw, lsswr,lslwr,lssav, shoc_cld, &
819 & ix, im, lm, me, lprnt, ipt, kdt, deltaq,sup,cnvw,cnvc, &
821 & htrsw,topfsw,sfcfsw,dswcmp,uswcmp,sfalb,coszen,coszdg, &
822 & htrlw,topflw,sfcflw,tsflw,semis,cldcov, &
826 &, htrlw0,htrsw0,htrswb,htrlwb &
1114 integer,
intent(in) :: IX,IM, LM, NTRAC, NFXR, me, &
1115 & ntoz, ntcw, ncld, ipt, kdt
1116 integer,
intent(in) :: icsdsw(im), icsdlw(im), jdate(8)
1118 logical,
intent(in) :: lsswr, lslwr, lssav, lprnt, shoc_cld
1120 real (kind=kind_phys),
dimension(IX,LM+1),
intent(in) :: prsi
1122 real (kind=kind_phys),
dimension(IX,LM),
intent(in) :: prsl, &
1123 & prslk, tgrs, qgrs, vvl, fcice, frain, rrime, deltaq, cnvw, &
1125 real (kind=kind_phys),
dimension(IM),
intent(in) :: flgmin
1126 real(kind=kind_phys),
intent(in) :: sup
1128 real (kind=kind_phys),
dimension(IM),
intent(in) :: slmsk, &
1129 & xlon, xlat, tsfc, snowd, zorl, hprim, alvsf, alnsf, alvwf, &
1130 & alnwf, facsf, facwf, cv, cvt, cvb, fice, tisfc, &
1131 & sncovr, snoalb, sinlat, coslat
1133 real (kind=kind_phys),
intent(in) :: solcon, dtlw, dtsw, solhr, &
1134 & tracer(IX,LM,NTRAC)
1136 real (kind=kind_phys),
dimension(IX,LM),
intent(inout):: cldcov
1139 real (kind=kind_phys),
dimension(IX,LM),
intent(out):: htrsw,htrlw
1141 real (kind=kind_phys),
dimension(IX,4),
intent(out) :: dswcmp, &
1144 real (kind=kind_phys),
dimension(IM),
intent(out):: tsflw, &
1145 & sfalb, semis, coszen, coszdg
1147 type(
topfsw_type),
dimension(IM),
intent(out) :: topfsw
1148 type(
sfcfsw_type),
dimension(IM),
intent(out) :: sfcfsw
1150 type(
topflw_type),
dimension(IM),
intent(out) :: topflw
1151 type(
sfcflw_type),
dimension(IM),
intent(out) :: sfcflw
1154 real (kind=kind_phys),
intent(inout) :: fluxr(ix,nfxr)
1157 real (kind=kind_phys),
dimension(IX,LM,NBDSW),
optional, &
1158 & intent(out) :: htrswb
1159 real (kind=kind_phys),
dimension(IX,LM,NBDLW),
optional, &
1160 & intent(out) :: htrlwb
1161 real (kind=kind_phys),
dimension(ix,lm),
optional, &
1162 & intent(out) :: htrlw0
1163 real (kind=kind_phys),
dimension(ix,lm),
optional, &
1164 & intent(out) :: htrsw0
1167 real (kind=kind_phys),
dimension(IM,LM+1+LTP):: plvl, tlvl
1169 real (kind=kind_phys),
dimension(IM,LM+LTP) :: plyr, tlyr, qlyr, &
1170 & olyr, rhly, qstl, vvel, clw, prslk1, tem2da, tem2db, tvly
1172 real (kind=kind_phys),
dimension(IM) :: tsfa, cvt1, cvb1, tem1d, &
1173 & sfcemis, tsfg, tskn
1175 real (kind=kind_phys),
dimension(IM,LM+LTP,NF_CLDS) :: clouds
1176 real (kind=kind_phys),
dimension(IM,LM+LTP,NF_VGAS) :: gasvmr
1177 real (kind=kind_phys),
dimension(IM, NF_ALBD) :: sfcalb
1178 real (kind=kind_phys),
dimension(IM, NSPC1) :: aerodp
1179 real (kind=kind_phys),
dimension(IM,LM+LTP,NTRAC) :: tracer1
1181 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDSW,NF_AESW)::faersw
1182 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDLW,NF_AELW)::faerlw
1184 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htswc
1185 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htlwc
1187 real (kind=kind_phys),
dimension(IM,LM+LTP) :: gcice, grain, grime
1191 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htsw0
1194 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDSW) :: htswb
1196 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htlw0
1198 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDLW) :: htlwb
1200 real (kind=kind_phys) :: raddt, es, qs, delt, tem0d, cldsa(im,5)
1202 integer :: i, j, k, k1, lv, icec, itop, ibtc, nday, idxday(im), &
1203 & mbota(IM,3), mtopa(IM,3), LP1, nb, LMK, LMP, kd, lla, llb, &
1250 raddt = min(dtsw, dtlw)
1271 if (
itsfc == 0 )
then 1299 plvl(i,k1) = 0.01 * prsi(i,k)
1300 plyr(i,k1) = 0.01 * prsl(i,k)
1301 tlyr(i,k1) = tgrs(i,k)
1302 prslk1(i,k1) = prslk(i,k)
1307 es = min( prsl(i,k), fpvs( tgrs(i,k) ) )
1308 qs = max(
qmin, eps * es / (prsl(i,k) + epsm1*es) )
1309 rhly(i,k1) = max( 0.0, min( 1.0, max(
qmin, qgrs(i,k))/qs ) )
1317 tracer1(i,k1,j) = tracer(i,k,j)
1324 plvl(i,lp1+kd) = 0.01 * prsi(i,lp1)
1331 plyr(i,lyb) = 0.5 * plvl(i,lla)
1332 tlyr(i,lyb) = tlyr(i,lya)
1334 prslk1(i,lyb) = (plyr(i,lyb)*0.00001) ** rocp
1336 rhly(i,lyb) = rhly(i,lya)
1337 qstl(i,lyb) = qstl(i,lya)
1343 tracer1(i,lyb,j) = tracer1(i,lya,j)
1355 gcice(i,k1) = fcice(i,k)
1356 grain(i,k1) = frain(i,k)
1357 grime(i,k1) = rrime(i,k)
1363 gcice(i,lyb) = fcice(i,lya)
1364 grain(i,lyb) = frain(i,lya)
1365 grime(i,lyb) = rrime(i,lya)
1377 olyr(i,k) = max(
qmin, tracer1(i,k,ntoz) )
1398 & ( xlon,sinlat,coslat,solhr, im, me, &
1417 & ( plvl, xlon, xlat, &
1428 tem2da(i,k) = log( plyr(i,k) )
1429 tem2db(i,k) = log( plvl(i,k) )
1437 tem2da(i,1) = log( plyr(i,1) )
1439 tsfa(i) = tlyr(i,lmk)
1440 tlvl(i,1) = tlyr(i,1)
1441 tlvl(i,lmp) = tskn(i)
1448 qlyr(i,k1) = max( tem1d(i), qgrs(i,k) )
1449 tem1d(i) = min(
qme5, qlyr(i,k1) )
1450 tvly(i,k1) = tgrs(i,k) * (1.0 + fvirt*qlyr(i,k1))
1456 qlyr(i,lyb) = qlyr(i,lya)
1457 tvly(i,lyb) = tvly(i,lya)
1463 tlvl(i,k) = tlyr(i,k) + (tlyr(i,k-1) - tlyr(i,k)) &
1464 & * (tem2db(i,k) - tem2da(i,k)) &
1465 & / (tem2da(i,k-1) - tem2da(i,k))
1473 tem2da(i,1) = log( plyr(i,1) )
1474 tem2db(i,1) = log( plvl(i,1) )
1477 tlvl(i,lmp) = tlyr(i,lmk)
1482 qlyr(i,k) = max( tem1d(i), qgrs(i,k) )
1483 tem1d(i) = min(
qme5, qlyr(i,k) )
1484 tvly(i,k) = tgrs(i,k) * (1.0 + fvirt*qlyr(i,k))
1490 qlyr(i,lyb) = qlyr(i,lya)
1491 tvly(i,lyb) = tvly(i,lya)
1497 tlvl(i,k+1) = tlyr(i,k) + (tlyr(i,k+1) - tlyr(i,k)) &
1498 & * (tem2db(i,k+1) - tem2da(i,k)) &
1499 & / (tem2da(i,k+1) - tem2da(i,k))
1509 if (coszen(i) >= 0.0001)
then 1529 & ( plvl,plyr,prslk1,tvly,rhly,slmsk,tracer1,xlon,xlat, &
1530 & im,lmk,lmp, lsswr,lslwr, &
1532 & faersw,faerlw,aerodp &
1555 clw(i,k) = clw(i,k) + tracer1(i,k,lv)
1562 if ( clw(i,k) <
epsq ) clw(i,k) = 0.0
1570 & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw, &
1571 & xlat,xlon,slmsk, &
1572 & im, lmk, lmp, shoc_cld, cldcov(1:im,1:lm), &
1574 & clouds,cldsa,mtopa,mbota &
1582 & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw, &
1583 & xlat,xlon,slmsk, gcice,grain,grime,flgmin, &
1586 & clouds,cldsa,mtopa,mbota &
1593 & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw,cnvw,cnvc, &
1594 & xlat,xlon,slmsk, &
1596 & deltaq, sup,kdt,me, &
1598 & clouds,cldsa,mtopa,mbota &
1608 cvt1(i) = 0.01 * cvt(i)
1609 cvb1(i) = 0.01 * cvb(i)
1618 vvel(i,k1) = 0.01 * vvl(i,k)
1624 vvel(i,lyb) = vvel(i,lya)
1632 & ( plyr,plvl,tlyr,rhly,vvel,cv,cvt1,cvb1, &
1633 & xlat,xlon,slmsk, &
1636 & clouds,cldsa,mtopa,mbota &
1653 & ( slmsk,snowd,sncovr,snoalb,zorl,coszen,tsfg,tsfa,hprim, &
1654 & alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, &
1665 sfalb(i) = max(0.01, 0.5 * (sfcalb(i,2) + sfcalb(i,4)))
1673 if (
present(htrswb) .and.
present(htrsw0))
then 1677 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1678 & clouds,icsdsw,faersw,sfcalb, &
1679 & coszen,solcon, nday,idxday, &
1680 & im, lmk, lmp, lprnt, &
1682 & htswc,topfsw,sfcfsw &
1685 &, hsw0=htsw0,hswb=htswb,fdncmp=scmpsw &
1693 htrswb(i,k,j) = htswb(i,k1,j)
1698 else if (
present(htrswb) .and. .not.
present(htrsw0) )
then 1702 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1703 & clouds,icsdsw,faersw,sfcalb, &
1704 & coszen,solcon, nday,idxday, &
1705 & im, lmk, lmp, lprnt, &
1707 & htswc,topfsw,sfcfsw &
1710 &, hswb=htswb,fdncmp=scmpsw &
1717 htrswb(i,k,j) = htswb(i,k1,j)
1722 else if (
present(htrsw0) .and. .not.
present(htrswb) )
then 1726 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1727 & clouds,icsdsw,faersw,sfcalb, &
1728 & coszen,solcon, nday,idxday, &
1729 & im, lmk, lmp, lprnt, &
1731 & htswc,topfsw,sfcfsw &
1734 &, hsw0=htsw0,fdncmp=scmpsw &
1741 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1742 & clouds,icsdsw,faersw,sfcalb, &
1743 & coszen,solcon, nday,idxday, &
1744 & im, lmk, lmp, lprnt, &
1746 & htswc,topfsw,sfcfsw &
1758 htrsw(i,k) = htswc(i,k1)
1761 if (
present(htrsw0))
then 1765 htrsw0(i,k) = htsw0(i,k1)
1773 dswcmp(i,1) = scmpsw(i)%nirbm
1774 dswcmp(i,2) = scmpsw(i)%nirdf
1775 dswcmp(i,3) = scmpsw(i)%visbm
1776 dswcmp(i,4) = scmpsw(i)%visdf
1778 uswcmp(i,1) = scmpsw(i)%nirbm * sfcalb(i,1)
1779 uswcmp(i,2) = scmpsw(i)%nirdf * sfcalb(i,2)
1780 uswcmp(i,3) = scmpsw(i)%visbm * sfcalb(i,3)
1781 uswcmp(i,4) = scmpsw(i)%visdf * sfcalb(i,4)
1794 scmpsw =
cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
1806 if (
present(htrswb) )
then 1815 if (
present(htrsw0) )
then 1836 & ( xlon,xlat,slmsk,snowd,sncovr,zorl,tsfg,tsfa,hprim, &
1844 if (
present(htrlwb) .and.
present(htrlw0) )
then 1848 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1849 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
1850 & im, lmk, lmp, lprnt, &
1852 & htlwc,topflw,sfcflw &
1864 htrlwb(i,k,j) = htlwb(i,k1,j)
1869 else if (
present(htrlwb) .and. .not.
present(htrlw0) )
then 1873 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1874 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
1875 & im, lmk, lmp, lprnt, &
1877 & htlwc,topflw,sfcflw &
1888 htrlwb(i,k,j) = htlwb(i,k1,j)
1892 else if (
present(htrlw0) .and. .not.
present(htrlwb) )
then 1897 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1898 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
1899 & im, lmk, lmp, lprnt, &
1901 & htlwc,topflw,sfcflw &
1911 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1912 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
1913 & im, lmk, lmp, lprnt, &
1915 & htlwc,topflw,sfcflw &
1923 semis(i) = sfcemis(i)
1932 htrlw(i,k) = htlwc(i,k1)
1936 if (
present(htrlw0))
then 1940 htrlw0(i,k) = htlw0(i,k1)
1954 fluxr(i,34) = fluxr(i,34) + dtsw*aerodp(i,1)
1955 fluxr(i,35) = fluxr(i,35) + dtsw*aerodp(i,2)
1956 fluxr(i,36) = fluxr(i,36) + dtsw*aerodp(i,3)
1957 fluxr(i,37) = fluxr(i,37) + dtsw*aerodp(i,4)
1958 fluxr(i,38) = fluxr(i,38) + dtsw*aerodp(i,5)
1959 fluxr(i,39) = fluxr(i,39) + dtsw*aerodp(i,6)
1967 fluxr(i,1 ) = fluxr(i,1 ) + dtlw * topflw(i)%upfxc
1968 fluxr(i,19) = fluxr(i,19) + dtlw * sfcflw(i)%dnfxc
1969 fluxr(i,20) = fluxr(i,20) + dtlw * sfcflw(i)%upfxc
1971 fluxr(i,28) = fluxr(i,28) + dtlw * topflw(i)%upfx0
1972 fluxr(i,30) = fluxr(i,30) + dtlw * sfcflw(i)%dnfx0
1973 fluxr(i,33) = fluxr(i,33) + dtlw * sfcflw(i)%upfx0
1982 if (coszen(i) > 0.)
then 1985 tem0d = dtsw * coszdg(i) / coszen(i)
1986 fluxr(i,2 ) = fluxr(i,2) + topfsw(i)%upfxc * tem0d
1987 fluxr(i,3 ) = fluxr(i,3) + sfcfsw(i)%upfxc * tem0d
1988 fluxr(i,4 ) = fluxr(i,4) + sfcfsw(i)%dnfxc * tem0d
1991 fluxr(i,21) = fluxr(i,21) + scmpsw(i)%uvbfc * tem0d
1992 fluxr(i,22) = fluxr(i,22) + scmpsw(i)%uvbf0 * tem0d
1995 fluxr(i,23) = fluxr(i,23) + topfsw(i)%dnfxc * tem0d
1998 fluxr(i,24) = fluxr(i,24) + scmpsw(i)%visbm * tem0d
1999 fluxr(i,25) = fluxr(i,25) + scmpsw(i)%visdf * tem0d
2000 fluxr(i,26) = fluxr(i,26) + scmpsw(i)%nirbm * tem0d
2001 fluxr(i,27) = fluxr(i,27) + scmpsw(i)%nirdf * tem0d
2004 fluxr(i,29) = fluxr(i,29) + topfsw(i)%upfx0 * tem0d
2005 fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d
2006 fluxr(i,32) = fluxr(i,32) + sfcfsw(i)%dnfx0 * tem0d
2013 if (lsswr .or. lslwr)
then 2015 fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4)
2016 fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5)
2025 tem0d = raddt * cldsa(i,j)
2026 itop = mtopa(i,j) - kd
2027 ibtc = mbota(i,j) - kd
2028 fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d
2029 fluxr(i,11-j) = fluxr(i,11-j) + tem0d * prsi(i,itop+kt)
2030 fluxr(i,14-j) = fluxr(i,14-j) + tem0d * prsi(i,ibtc+kb)
2031 fluxr(i,17-j) = fluxr(i,17-j) + tem0d * tgrs(i,itop)
2036 if (.not. shoc_cld)
then 2040 cldcov(i,k) = clouds(i,k1,1)
2075 end subroutine grrad subroutine, public progcld1
This subroutine computes cloud related quantities using zhao/moorthi's prognostic cloud microphysics ...
integer, save ialbflg
surface albedo scheme control flag
real(kind=kind_phys) qmin
subroutine, public gas_init
This subroutine sets up ozone, co2, etc. parameters. if climatology ozone then read in monthly ozone ...
subroutine, public swrad
This subroutine is the main sw radiation routine.
integer, save ioznflg
ozone dta source control flag
integer, save iaerflg
aerosol effect control flag
define type construct for optional component downward fluxes at surface
integer, save isubcsw
sub-column cloud approx flag in sw radiation
integer, save iemsflg
surface emissivity scheme control flag
subroutine, public coszmn
This subroutine computes mean cos solar zenith angle over SW calling interval.
subroutine, public sol_update
This subroutine computes solar parameters at forecast time.
define type construct for optional radiation flux profiles
define type construct for radiation fluxes at toa
integer, parameter, public nf_vgas
number of gas species
This module computes cloud related quantities for radiation computations.
integer, save iovrsw
cloud overlapping control flag for sw
subroutine, public gas_update
This subroutine reads in 2-d monthly co2 data set for a specified year. data are in a 15 degree lat/l...
subroutine, public sfc_init
This subroutine is the initialization program for surface radiation related quantities (albedo...
This module contains some the most frequently used math and physics constants for gcm models...
define type construct for radiation fluxes at surface
subroutine, public radupdate
This subroutine calls many update subroutines to check and update radiation required but time varying...
subroutine, public grrad
This subroutine is the driver of radiation calculation subroutines. It sets up profile variables for ...
integer, parameter, public nf_aelw
num of output fields for lw rad
integer, save iovrlw
cloud overlapping control flag for lw
subroutine, public getgases
This subroutine sets up global distribution of radiation absorbing gases in volume mixing ratio...
This module defines commonly used control variables/parameters in physics related programs...
integer, save isolar
solar constant scheme control flag
This module contains SW band parameters set up.
character(40), parameter vtagrad
integer, save ico2flg
co2 data source control flag
integer, save isubclw
sub-column cloud approx flag in lw radiation
real(kind=kind_phys) qme5
integer, save icmphys
cloud microphysics scheme control flag
logical, save lnoprec
precip effect on radiation flag (ferrier microphysics)
This module contains climatological atmospheric aerosol schemes for radiation computations.
real(kind=kind_phys), parameter con_rocp
logical, save lcrick
eliminating CRICK control flag
integer, save ivflip
vertical profile indexing flag
real(kind=kind_phys) epsq
define type construct for optional radiation flux profiles
define type construct for radiation fluxes at surface
subroutine, public sol_init
This subroutine initializes astronomy process, and set up module constants.
This module sets up astronomy quantities for solar radiation calculations.
subroutine, public setemis
This subroutine computes surface emissivity for LW radiation.
subroutine, public rswinit
This subroutine initializes non-varying module variables, conversion factors, and look-up tables...
subroutine, public aer_init
The initialization program to set up necessary parameters and working arrays.
This module contains LW band parameters set up.
This module includes ncep's modifications of the rrtm-lw radiation ! code from aer inc...
subroutine, public setalb
This subroutine computes four components of surface albedos (i.e., vis-nir, direct-diffused) accordin...
logical, parameter lextop
This module includes ncep's modifications of the rrtm-sw radiation code from aer inc.
integer, parameter, public nf_albd
num of sfc albedo components
subroutine, public lwrad
This subroutine is the main lw radiation routine.
logical, save lsashal
shallow convection flag
define type construct for radiation fluxes at toa
integer, parameter, public nf_clds
number of fields in cloud array
real(kind=kind_phys) qme6
subroutine, public getozn
This subroutine sets up climatological ozone profile for radiation calculation this code is originall...
integer, parameter, public nf_aesw
num of output fields for sw rad
subroutine, public cld_init
This subroutine is an initialization program for cloud-radiation calculations. It sets up boundary la...
This module sets up ozone climatological profiles and other constant gas profiles, such as co2, ch4, n2o, o2, and those of cfc gases. All data are entered as mixing ratio by volume, except ozone which is mass mixing ratio (g/g).
subroutine, public diagcld1
This subroutine computes cloud fractions for radiation calculations.
real(kind=kind_phys), parameter con_fvirt
subroutine, public radinit
This subroutine is the initialization of radiation calculations.
subroutine, public progcld2
This subroutine computes cloud related quantities using ferrier's prognostic cloud microphysics schem...
subroutine, public progcld3
This subroutine computes cloud related quantities using zhao/moorthi's prognostic cloud microphysics ...
subroutine, public rlwinit
This subroutine performs calculations necessary for the initialization of the longwave model...
real(kind=kind_phys), parameter con_epsm1
integer, parameter, public nspc1
total+species
real(kind=kind_phys), parameter con_eps
This module sets up surface albedo for sw radiation and surface emissivity for lw radiation...
logical, save lcnorm
in-cld condensate control flag
integer, save ictmflg
external data time/date control flag
subroutine, public setaer
This subroutine computes aerosols optical properties.
This file is the radiation driver module. it prepares atmospheric profiles and invokes main radiation...
integer, save icldflg
cloud optical property scheme control flag
subroutine, public aer_update
This subroutine checks and updates time varying climatology aerosol data sets.