302 use physcons
, only : eps => con_eps, &
303 & epsm1 => con_epsm1, &
304 & fvirt => con_fvirt &
308 use module_radiation_astronomy
,only: sol_init, sol_update, coszmn
309 use module_radiation_gases
, only : nf_vgas, getgases, getozn, &
310 & gas_init, gas_update
311 use module_radiation_aerosols
,only : nf_aesw, nf_aelw, setaer, &
312 & aer_init, aer_update, &
314 use module_radiation_surface
, only : nf_albd, sfc_init, setalb, &
316 use module_radiation_clouds
, only : nf_clds, cld_init, &
317 & progcld1, progcld2, progcld3,&
320 use module_radsw_parameters
, only : topfsw_type, sfcfsw_type, &
321 & profsw_type,cmpfsw_type,nbdsw
322 use module_radsw_main
, only : rswinit, swrad
324 use module_radlw_parameters
, only : topflw_type, sfcflw_type, &
326 use module_radlw_main
, only : rlwinit, lwrad
333 character(40),
parameter :: &
334 & VTAGRAD=
'NCEP-Radiation_driver v5.2 Jan 2013 ' 365 integer,
parameter ::
ltp = 0
385 subroutine radinit( si, NLAY, me )
496 integer,
intent(in) :: NLAY, me
498 real (kind=kind_phys),
intent(in) :: si(:)
517 print *,
' NEW RADIATION PROGRAM STRUCTURES BECAME OPER. ', &
520 print *,
' - Selected Control Flag settings: ICTMflg=',
ictmflg, &
529 print *,
' LTP =',
ltp,
', add extra top layer =',
lextop 532 print *,
' Data usage is limited by initial condition!' 533 print *,
' No volcanic aerosols' 537 print *,
' - ISUBCLW=',
isubclw,
' No McICA, use grid ', &
538 &
'averaged cloud in LW radiation' 540 print *,
' - ISUBCLW=',
isubclw,
' Use McICA with fixed ', &
541 &
'permutation seeds for LW random number generator' 543 print *,
' - ISUBCLW=',
isubclw,
' Use McICA with random ', &
544 &
'permutation seeds for LW random number generator' 546 print *,
' - ERROR!!! ISUBCLW=',
isubclw,
' is not a ', &
552 print *,
' - ISUBCSW=',
isubcsw,
' No McICA, use grid ', &
553 &
'averaged cloud in SW radiation' 555 print *,
' - ISUBCSW=',
isubcsw,
' Use McICA with fixed ', &
556 &
'permutation seeds for SW random number generator' 558 print *,
' - ISUBCSW=',
isubcsw,
' Use McICA with random ', &
559 &
'permutation seeds for SW random number generator' 561 print *,
' - ERROR!!! ISUBCSW=',
isubcsw,
' is not a ', &
567 print *,
' - *** Notice *** ISUBCSW /= ISUBCLW !!!', &
591 call aer_init ( nlay, me )
597 call cld_init ( si, nlay, me)
625 subroutine radupdate( idate,jdate,deltsw,deltim,lsswr, me, &
626 & slag,sdec,cdec,solcon)
690 integer,
intent(in) :: idate(:), jdate(:), me
691 logical,
intent(in) :: lsswr
693 real (kind=kind_phys),
intent(in) :: deltsw, deltim
696 real (kind=kind_phys),
intent(out) :: slag, sdec, cdec, solcon
699 integer :: iyear, imon, iday, ihour
700 integer :: kyear, kmon, kday, khour
731 if (
month0 /= imon )
then 744 elseif (
iyear0 /= iyear )
then 747 lsol_chg = (
isolar==4 .and. lmon_chg )
753 & ( jdate,kyear,deltsw,deltim,lsol_chg, me, &
755 & slag,sdec,cdec,solcon &
763 call aer_update ( iyear, imon, me )
768 if (
monthd /= kmon )
then 775 call gas_update ( kyear,kmon,kday,khour,
loz1st,lco2_chg, me )
944 & ( prsi,prsl,prslk,tgrs,qgrs,tracer,vvl,slmsk, &
945 & xlon,xlat,tsfc,snowd,sncovr,snoalb,zorl,hprim, &
946 & alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, &
947 & sinlat,coslat,solhr,jdate,solcon, &
948 & cv,cvt,cvb,fcice,frain,rrime,flgmin, &
949 & icsdsw,icsdlw, ntcw,ncld,ntoz, ntrac,nfxr, &
950 & dtlw,dtsw, lsswr,lslwr,lssav, uni_cld,lmfshal,lmfdeep2, &
951 & ix, im, lm, me, lprnt, ipt, kdt, deltaq,sup,cnvw,cnvc, &
952 & htrsw,topfsw,sfcfsw,dswcmp,uswcmp,sfalb,coszen,coszdg, &
953 & htrlw,topflw,sfcflw,tsflw,semis,cldcov, &
955 &, htrlw0,htrsw0,htrswb,htrlwb &
1245 integer,
intent(in) :: IX,IM, LM, NTRAC, NFXR, me,
1246 & ntoz, ntcw, ncld, ipt, kdt
1247 integer,
intent(in) :: icsdsw(im), icsdlw(im), jdate(8)
1249 logical,
intent(in) :: lsswr, lslwr, lssav, lprnt, uni_cld, &
1252 real (kind=kind_phys),
dimension(IX,LM+1),
intent(in) :: prsi
1254 real (kind=kind_phys),
dimension(IX,LM),
intent(in) :: prsl,
1255 & prslk, tgrs, qgrs, vvl, fcice, frain, rrime, deltaq, cnvw,
1257 real (kind=kind_phys),
dimension(IM),
intent(in) :: flgmin
1258 real(kind=kind_phys),
intent(in) :: sup
1260 real (kind=kind_phys),
dimension(IM),
intent(in) :: slmsk,
1261 & xlon, xlat, tsfc, snowd, zorl, hprim, alvsf, alnsf, alvwf,
1262 & alnwf, facsf, facwf, cv, cvt, cvb, fice, tisfc,
1263 & sncovr, snoalb, sinlat, coslat
1265 real (kind=kind_phys),
intent(in) :: solcon, dtlw, dtsw, solhr,
1266 & tracer(ix,lm,ntrac)
1268 real (kind=kind_phys),
dimension(IX,LM),
intent(inout):: cldcov
1271 real (kind=kind_phys),
dimension(IX,LM),
intent(out):: htrsw,htrlw
1273 real (kind=kind_phys),
dimension(IX,4),
intent(out) :: dswcmp,
1276 real (kind=kind_phys),
dimension(IM),
intent(out):: tsflw,
1277 & sfalb, semis, coszen, coszdg
1279 type(topfsw_type),
dimension(IM),
intent(out) :: topfsw
1280 type(sfcfsw_type),
dimension(IM),
intent(out) :: sfcfsw
1282 type(topflw_type),
dimension(IM),
intent(out) :: topflw
1283 type(sfcflw_type),
dimension(IM),
intent(out) :: sfcflw
1286 real (kind=kind_phys),
intent(inout) :: fluxr(ix,nfxr)
1289 real (kind=kind_phys),
dimension(IX,LM,NBDSW),
optional,
1290 &
intent(out) :: htrswb
1291 real (kind=kind_phys),
dimension(IX,LM,NBDLW),
optional,
1292 &
intent(out) :: htrlwb
1293 real (kind=kind_phys),
dimension(ix,lm),
optional, &
1294 & intent(out) :: htrlw0
1295 real (kind=kind_phys),
dimension(ix,lm),
optional, &
1296 & intent(out) :: htrsw0
1299 real (kind=kind_phys),
dimension(IM,LM+1+LTP):: plvl, tlvl
1301 real (kind=kind_phys),
dimension(IM,LM+LTP) :: plyr, tlyr, qlyr, &
1302 & olyr, rhly, qstl, vvel, clw, prslk1, tem2da, tem2db, tvly
1304 real (kind=kind_phys),
dimension(IM) :: tsfa, cvt1, cvb1, tem1d, &
1305 & sfcemis, tsfg, tskn
1307 real (kind=kind_phys),
dimension(IM,LM+LTP,NF_CLDS) :: clouds
1308 real (kind=kind_phys),
dimension(IM,LM+LTP,NF_VGAS) :: gasvmr
1309 real (kind=kind_phys),
dimension(IM, NF_ALBD) :: sfcalb
1310 real (kind=kind_phys),
dimension(IM, NSPC1) :: aerodp
1311 real (kind=kind_phys),
dimension(IM,LM+LTP,NTRAC) :: tracer1
1313 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDSW,NF_AESW)::faersw
1314 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDLW,NF_AELW)::faerlw
1316 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htswc
1317 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htlwc
1319 real (kind=kind_phys),
dimension(IM,LM+LTP) :: gcice, grain, grime
1323 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htsw0
1325 type(cmpfsw_type),
dimension(IM) :: scmpsw
1326 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDSW) :: htswb
1328 real (kind=kind_phys),
dimension(IM,LM+LTP) :: htlw0
1330 real (kind=kind_phys),
dimension(IM,LM+LTP,NBDLW) :: htlwb
1332 real (kind=kind_phys) :: raddt, es, qs, delt, tem0d, cldsa(im,5)
1334 integer :: i, j, k, k1, lv, icec, itop, ibtc, nday, idxday(im), &
1335 & mbota(IM,3), mtopa(IM,3), LP1, nb, LMK, LMP, kd, lla, llb, &
1382 raddt = min(dtsw, dtlw)
1404 if (
itsfc == 0 )
then 1426 plvl(i,k1) = 0.01 * prsi(i,k)
1427 plyr(i,k1) = 0.01 * prsl(i,k)
1428 tlyr(i,k1) = tgrs(i,k)
1429 prslk1(i,k1) = prslk(i,k)
1433 es = min( prsl(i,k),
fpvs( tgrs(i,k) ) )
1434 qs = max(
qmin, eps * es / (prsl(i,k) + epsm1*es) )
1435 rhly(i,k1) = max( 0.0, min( 1.0, max(
qmin, qgrs(i,k))/qs ) )
1443 tracer1(i,k1,j) = tracer(i,k,j)
1450 plvl(i,lp1+kd) = 0.01 * prsi(i,lp1)
1457 plyr(i,lyb) = 0.5 * plvl(i,lla)
1458 tlyr(i,lyb) = tlyr(i,lya)
1460 prslk1(i,lyb) = (plyr(i,lyb)*0.00001) ** rocp
1462 rhly(i,lyb) = rhly(i,lya)
1463 qstl(i,lyb) = qstl(i,lya)
1469 tracer1(i,lyb,j) = tracer1(i,lya,j)
1481 gcice(i,k1) = fcice(i,k)
1482 grain(i,k1) = frain(i,k)
1483 grime(i,k1) = rrime(i,k)
1489 gcice(i,lyb) = fcice(i,lya)
1490 grain(i,lyb) = frain(i,lya)
1491 grime(i,lyb) = rrime(i,lya)
1502 olyr(i,k) = max(
qmin, tracer1(i,k,ntoz) )
1523 & ( xlon,sinlat,coslat,solhr, im, me, &
1544 & ( plvl, xlon, xlat, &
1554 tem2da(i,k) = log( plyr(i,k) )
1555 tem2db(i,k) = log( plvl(i,k) )
1563 tem2da(i,1) = log( plyr(i,1) )
1565 tsfa(i) = tlyr(i,lmk)
1566 tlvl(i,1) = tlyr(i,1)
1567 tlvl(i,lmp) = tskn(i)
1574 qlyr(i,k1) = max( tem1d(i), qgrs(i,k) )
1575 tem1d(i) = min(
qme5, qlyr(i,k1) )
1576 tvly(i,k1) = tgrs(i,k) * (1.0 + fvirt*qlyr(i,k1))
1582 qlyr(i,lyb) = qlyr(i,lya)
1583 tvly(i,lyb) = tvly(i,lya)
1589 tlvl(i,k) = tlyr(i,k) + (tlyr(i,k-1) - tlyr(i,k)) &
1590 & * (tem2db(i,k) - tem2da(i,k)) &
1591 & / (tem2da(i,k-1) - tem2da(i,k))
1599 tem2da(i,1) = log( plyr(i,1) )
1600 tem2db(i,1) = log( plvl(i,1) )
1603 tlvl(i,lmp) = tlyr(i,lmk)
1608 qlyr(i,k) = max( tem1d(i), qgrs(i,k) )
1609 tem1d(i) = min(
qme5, qlyr(i,k) )
1610 tvly(i,k) = tgrs(i,k) * (1.0 + fvirt*qlyr(i,k))
1616 qlyr(i,lyb) = qlyr(i,lya)
1617 tvly(i,lyb) = tvly(i,lya)
1623 tlvl(i,k+1) = tlyr(i,k) + (tlyr(i,k+1) - tlyr(i,k)) &
1624 & * (tem2db(i,k+1) - tem2da(i,k)) &
1625 & / (tem2da(i,k+1) - tem2da(i,k))
1635 if (coszen(i) >= 0.0001)
then 1654 & ( plvl,plyr,prslk1,tvly,rhly,slmsk,tracer1,xlon,xlat, &
1655 & im,lmk,lmp, lsswr,lslwr, &
1657 & faersw,faerlw,aerodp &
1684 clw(i,k) = clw(i,k) + tracer1(i,k,lv)
1691 if ( clw(i,k) <
epsq ) clw(i,k) = 0.0
1704 clw(i,k) = clw(i,k) + cnvw(i,k)
1714 & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw, &
1715 & xlat,xlon,slmsk, im, lmk, lmp, &
1716 & uni_cld, lmfshal, lmfdeep2, cldcov(1:im,1:lm), &
1718 & clouds,cldsa,mtopa,mbota &
1726 & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw, &
1727 & xlat,xlon,slmsk, gcice,grain,grime,flgmin, &
1728 & im, lmk, lmp, lmfshal, lmfdeep2, &
1730 & clouds,cldsa,mtopa,mbota &
1737 & ( plyr,plvl,tlyr,tvly,qlyr,qstl,rhly,clw,cnvw,cnvc, &
1738 & xlat,xlon,slmsk, &
1740 & deltaq, sup,kdt,me, &
1742 & clouds,cldsa,mtopa,mbota &
1752 cvt1(i) = 0.01 * cvt(i)
1753 cvb1(i) = 0.01 * cvb(i)
1762 vvel(i,k1) = 0.01 * vvl(i,k)
1768 vvel(i,lyb) = vvel(i,lya)
1776 & ( plyr,plvl,tlyr,rhly,vvel,cv,cvt1,cvb1, &
1777 & xlat,xlon,slmsk, &
1780 & clouds,cldsa,mtopa,mbota &
1796 & ( slmsk,snowd,sncovr,snoalb,zorl,coszen,tsfg,tsfa,hprim, &
1797 & alvsf,alnsf,alvwf,alnwf,facsf,facwf,fice,tisfc, &
1806 sfalb(i) = max(0.01, 0.5 * (sfcalb(i,2) + sfcalb(i,4)))
1814 if (
present(htrswb) .and.
present(htrsw0))
then 1818 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1819 & clouds,icsdsw,faersw,sfcalb, &
1820 & coszen,solcon, nday,idxday, &
1821 & im, lmk, lmp, lprnt, &
1823 & htswc,topfsw,sfcfsw &
1826 &, hsw0=htsw0,hswb=htswb,fdncmp=scmpsw &
1834 htrswb(i,k,j) = htswb(i,k1,j)
1839 else if (
present(htrswb) .and. .not.
present(htrsw0) )
then 1843 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1844 & clouds,icsdsw,faersw,sfcalb, &
1845 & coszen,solcon, nday,idxday, &
1846 & im, lmk, lmp, lprnt, &
1848 & htswc,topfsw,sfcfsw &
1851 &, hswb=htswb,fdncmp=scmpsw &
1858 htrswb(i,k,j) = htswb(i,k1,j)
1863 else if (
present(htrsw0) .and. .not.
present(htrswb) )
then 1867 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1868 & clouds,icsdsw,faersw,sfcalb, &
1869 & coszen,solcon, nday,idxday, &
1870 & im, lmk, lmp, lprnt, &
1872 & htswc,topfsw,sfcfsw &
1875 &, hsw0=htsw0,fdncmp=scmpsw &
1882 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1883 & clouds,icsdsw,faersw,sfcalb, &
1884 & coszen,solcon, nday,idxday, &
1885 & im, lmk, lmp, lprnt, &
1887 & htswc,topfsw,sfcfsw &
1899 htrsw(i,k) = htswc(i,k1)
1902 if (
present(htrsw0))
then 1906 htrsw0(i,k) = htsw0(i,k1)
1914 dswcmp(i,1) = scmpsw(i)%nirbm
1915 dswcmp(i,2) = scmpsw(i)%nirdf
1916 dswcmp(i,3) = scmpsw(i)%visbm
1917 dswcmp(i,4) = scmpsw(i)%visdf
1919 uswcmp(i,1) = scmpsw(i)%nirbm * sfcalb(i,1)
1920 uswcmp(i,2) = scmpsw(i)%nirdf * sfcalb(i,2)
1921 uswcmp(i,3) = scmpsw(i)%visbm * sfcalb(i,3)
1922 uswcmp(i,4) = scmpsw(i)%visdf * sfcalb(i,4)
1933 sfcfsw = sfcfsw_type( 0.0, 0.0, 0.0, 0.0 )
1934 topfsw = topfsw_type( 0.0, 0.0, 0.0 )
1935 scmpsw = cmpfsw_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 )
1947 if (
present(htrswb) )
then 1956 if (
present(htrsw0) )
then 1976 & ( xlon,xlat,slmsk,snowd,sncovr,zorl,tsfg,tsfa,hprim, &
1985 if (
present(htrlwb) .and.
present(htrlw0) )
then 1989 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
1990 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
1991 & im, lmk, lmp, lprnt, &
1993 & htlwc,topflw,sfcflw &
2005 htrlwb(i,k,j) = htlwb(i,k1,j)
2010 else if (
present(htrlwb) .and. .not.
present(htrlw0) )
then 2014 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
2015 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
2016 & im, lmk, lmp, lprnt, &
2018 & htlwc,topflw,sfcflw &
2029 htrlwb(i,k,j) = htlwb(i,k1,j)
2033 else if (
present(htrlw0) .and. .not.
present(htrlwb) )
then 2038 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
2039 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
2040 & im, lmk, lmp, lprnt, &
2042 & htlwc,topflw,sfcflw &
2052 & ( plyr,plvl,tlyr,tlvl,qlyr,olyr,gasvmr, &
2053 & clouds,icsdlw,faerlw,sfcemis,tsfg, &
2054 & im, lmk, lmp, lprnt, &
2056 & htlwc,topflw,sfcflw &
2064 semis(i) = sfcemis(i)
2073 htrlw(i,k) = htlwc(i,k1)
2077 if (
present(htrlw0))
then 2081 htrlw0(i,k) = htlw0(i,k1)
2095 fluxr(i,34) = fluxr(i,34) + dtsw*aerodp(i,1)
2096 fluxr(i,35) = fluxr(i,35) + dtsw*aerodp(i,2)
2097 fluxr(i,36) = fluxr(i,36) + dtsw*aerodp(i,3)
2098 fluxr(i,37) = fluxr(i,37) + dtsw*aerodp(i,4)
2099 fluxr(i,38) = fluxr(i,38) + dtsw*aerodp(i,5)
2100 fluxr(i,39) = fluxr(i,39) + dtsw*aerodp(i,6)
2108 fluxr(i,1 ) = fluxr(i,1 ) + dtlw * topflw(i)%upfxc
2109 fluxr(i,19) = fluxr(i,19) + dtlw * sfcflw(i)%dnfxc
2110 fluxr(i,20) = fluxr(i,20) + dtlw * sfcflw(i)%upfxc
2112 fluxr(i,28) = fluxr(i,28) + dtlw * topflw(i)%upfx0
2113 fluxr(i,30) = fluxr(i,30) + dtlw * sfcflw(i)%dnfx0
2114 fluxr(i,33) = fluxr(i,33) + dtlw * sfcflw(i)%upfx0
2123 if (coszen(i) > 0.)
then 2126 tem0d = dtsw * coszdg(i) / coszen(i)
2127 fluxr(i,2 ) = fluxr(i,2) + topfsw(i)%upfxc * tem0d
2128 fluxr(i,3 ) = fluxr(i,3) + sfcfsw(i)%upfxc * tem0d
2129 fluxr(i,4 ) = fluxr(i,4) + sfcfsw(i)%dnfxc * tem0d
2132 fluxr(i,21) = fluxr(i,21) + scmpsw(i)%uvbfc * tem0d
2133 fluxr(i,22) = fluxr(i,22) + scmpsw(i)%uvbf0 * tem0d
2136 fluxr(i,23) = fluxr(i,23) + topfsw(i)%dnfxc * tem0d
2139 fluxr(i,24) = fluxr(i,24) + scmpsw(i)%visbm * tem0d
2140 fluxr(i,25) = fluxr(i,25) + scmpsw(i)%visdf * tem0d
2141 fluxr(i,26) = fluxr(i,26) + scmpsw(i)%nirbm * tem0d
2142 fluxr(i,27) = fluxr(i,27) + scmpsw(i)%nirdf * tem0d
2145 fluxr(i,29) = fluxr(i,29) + topfsw(i)%upfx0 * tem0d
2146 fluxr(i,31) = fluxr(i,31) + sfcfsw(i)%upfx0 * tem0d
2147 fluxr(i,32) = fluxr(i,32) + sfcfsw(i)%dnfx0 * tem0d
2154 if (lsswr .or. lslwr)
then 2156 fluxr(i,17) = fluxr(i,17) + raddt * cldsa(i,4)
2157 fluxr(i,18) = fluxr(i,18) + raddt * cldsa(i,5)
2166 tem0d = raddt * cldsa(i,j)
2167 itop = mtopa(i,j) - kd
2168 ibtc = mbota(i,j) - kd
2169 fluxr(i, 8-j) = fluxr(i, 8-j) + tem0d
2170 fluxr(i,11-j) = fluxr(i,11-j) + tem0d * prsi(i,itop+kt)
2171 fluxr(i,14-j) = fluxr(i,14-j) + tem0d * prsi(i,ibtc+kb)
2172 fluxr(i,17-j) = fluxr(i,17-j) + tem0d * tgrs(i,itop)
2177 if (.not. uni_cld)
then 2181 cldcov(i,k) = clouds(i,k1,1)
2216 end subroutine grrad
integer, save iovrsw
cloud overlapping control flag for SW
integer, save isubcsw
sub-column cloud approx flag in SW radiation
real(kind=kind_phys) epsq
EPSQ=1.0e-12.
integer, save iaerflg
aerosol effect control flag
real(kind=kind_phys) qmin
QMIN=1.0e-10.
logical, save lcnorm
in-cld condensate control flag
logical, save lcrick
eliminating CRICK control flag
real(kind=kind_phys) qme5
QME5=1.0e-7.
real, parameter prsmin
toa pressure minimum value in mb (hPa)
integer, save ialbflg
surface albedo scheme control flag
logical loz1st
first-time climatological ozone data read flag
integer, save ico2flg
co2 data source control flag
integer, save icmphys
cloud micorphysics scheme control flag
integer, save icldflg
cloud optical property scheme control flag
integer, save iemsflg
surface emissivity scheme control flag
elemental real(krealfp) function, public fpvs(t)
character(40), parameter vtagrad
logical, save lnoprec
precip effect on radiation flag (Ferrier microphysics)
integer, parameter ltp
optional extra top layer on top of low ceiling models LTP=0: no extra top layer ...
subroutine, public radinit(si, NLAY, me)
This subroutine is the initialization of radiation calculations.
integer, save ioznflg
ozone data source control flag
integer, save ictmflg
external data time/date control flag
real(kind=kind_phys) qme6
QME6=1.0e-7.
integer, save isolar
solar constant scheme control flag
integer itsfc
control flag for lw sfc air/ground interface temp setting
subroutine, public radupdate(idate, jdate, deltsw, deltim, lsswr, me, slag, sdec, cdec, solcon)
This subroutine calls many update subroutines to check and update radiation required but time varying...
integer, save isubclw
sub-column cloud approx flag in LW radiation
integer, save ivflip
vertical profile indexing flag
logical, parameter lextop
integer, save iovrlw
cloud overlapping control flag for LW
subroutine, public grrad(prsi, prsl, prslk, tgrs, qgrs, tracer, vvl, slmsk, xlon, xlat, tsfc, snowd, sncovr, snoalb, zorl, hprim, alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, sinlat, coslat, solhr, jdate, solcon, cv, cvt, cvb, fcice, frain, rrime, flgmin, icsdsw, icsdlw, ntcw, ncld, ntoz, NTRAC, NFXR, dtlw, dtsw, lsswr, lslwr, lssav, uni_cld, lmfshal, lmfdeep2, IX, IM, LM, me, lprnt, ipt, kdt, deltaq, sup, cnvw, cnvc, htrsw, topfsw, sfcfsw, dswcmp, uswcmp, sfalb, coszen, coszdg, htrlw, topflw, sfcflw, tsflw, semis, cldcov, fluxr , htrlw0, htrsw0, htrswb, htrlwb )
This subroutine is the driver of radiation calculation subroutines. It sets up profile variables for ...