Radiation Scheme in CCPP
|
This module includes ncep's modifications of the rrtm-sw radiation code from aer inc.
Functions/Subroutines | |
subroutine, public | rswinit |
This subroutine initializes non-varying module variables, conversion factors, and look-up tables. More... | |
subroutine | cldprop |
This subroutine computes the cloud optical properties for each cloudy layer and g-point interval. More... | |
subroutine | mcica_subcol |
This subroutine computes the sub-colum cloud profile flag array. More... | |
subroutine | setcoef |
This subroutine computes various coefficients needed in radiative transfer calculation. More... | |
subroutine | spcvrtc |
This subroutine computes the shortwave radiative fluxes using two-stream method. More... | |
subroutine | spcvrtm |
This subroutine computes the shortwave radiative fluxes using two-stream method of h. barder and mcica,the monte-carlo independent column approximation, for the representation of sub-grid cloud variability (i.e. cloud overlap). More... | |
subroutine | swflux |
This subroutine computes the upward and downward radiation fluxes. More... | |
subroutine | taumol |
subroutine, public | swrad |
This subroutine is the main sw radiation routine. More... | |
Variables | |
character(40), parameter | vtagsw ='NCEP SW v5.1 Nov 2012 -RRTMG-SW v3.8 ' |
real(kind=kind_phys), parameter | eps = 1.0e-6 |
real(kind=kind_phys), parameter | oneminus = 1.0 - eps |
real(kind=kind_phys), parameter | bpade = 1.0/0.278 |
real(kind=kind_phys), parameter | stpfac = 296.0/1013.0 |
real(kind=kind_phys), parameter | ftiny = 1.0e-12 |
real(kind=kind_phys), parameter | s0 = 1368.22 |
real(kind=kind_phys), parameter | f_zero = 0.0 |
real(kind=kind_phys), parameter | f_one = 1.0 |
real(kind=kind_phys), parameter | amdw = con_amd/con_amw |
real(kind=kind_phys), parameter | amdo3 = con_amd/con_amo3 |
integer, dimension(nblow:nbhgh) | nspa |
integer, dimension(nblow:nbhgh) | nspb |
integer, dimension(nblow:nbhgh) | idxebc |
integer, dimension(nblow:nbhgh) | idxsfc |
integer, parameter | nuvb = 27 |
logical | lhswb = .false. |
logical | lhsw0 = .false. |
logical | lflxprf = .false. |
logical | lfdncmp = .false. |
real(kind=kind_phys), dimension(0:ntbmx) | exp_tbl |
real(kind=kind_phys) | heatfac |
integer, parameter | ipsdsw0 = 1 |
|
private |
Definition at line 1429 of file radsw_main.f.
References module_radsw_cldprtb::a0r, module_radsw_cldprtb::a0s, module_radsw_cldprtb::a1s, module_radsw_cldprtb::abari, module_radsw_cldprtb::asyice2, module_radsw_cldprtb::asyice3, module_radsw_cldprtb::asyliq1, module_radsw_cldprtb::b0r, module_radsw_cldprtb::b0s, module_radsw_cldprtb::b1s, module_radsw_cldprtb::bbari, module_radsw_cldprtb::c0r, module_radsw_cldprtb::c0s, module_radsw_cldprtb::cbari, module_radsw_cldprtb::dbari, module_radsw_cldprtb::ebari, module_radsw_cldprtb::extice2, module_radsw_cldprtb::extice3, module_radsw_cldprtb::extliq1, f_one, f_zero, module_radsw_cldprtb::fbari, ftiny, idxebc, physparam::isubcsw, physparam::iswcice, physparam::iswcliq, mcica_subcol(), module_radsw_parameters::nbdsw, module_radsw_parameters::nbhgh, module_radsw_parameters::nblow, module_radsw_parameters::ngptsw, module_radsw_cldprtb::ssaice2, module_radsw_cldprtb::ssaice3, and module_radsw_cldprtb::ssaliq1.
Referenced by swrad().
subroutine module_radsw_main::mcica_subcol | ( | ) |
[in] | cldf | real, (nlay), layer cloud fraction |
[in] | nlay | integer, 1, number of model vertical layers |
[in] | ipseed | integer, 1, permute seed for random num generator |
[out] | lcloudy | logical, (nlay,ngptsw), sub-colum cloud profile flag array |
physparam::iovrsw - control flag for cloud overlapping method
=0:random; =1:maximum/random; =2:maximum
Definition at line 1783 of file radsw_main.f.
References f_one, physparam::iovrsw, and module_radsw_parameters::ngptsw.
Referenced by cldprop().
subroutine, public module_radsw_main::rswinit | ( | ) |
[in] | me | integer, print control for parallel process |
[out] | NONE |
physparam::iswrate - heating rate unit selections
=1: output in k/day
=2: output in k/second
physparam::iswrgas - control flag for rare gases (ch4,n2o,o2, etc.)
=0: do not include rare gases
>0: include all rare gases
physparam::iswcliq - liquid cloud optical properties contrl flag
=0: input cloud opt depth from diagnostic scheme
>0: input cwp,rew, and other cloud content parameters
physparam::isubcsw - sub-column cloud approximation control flag
=0: no sub-col cld treatment, use grid-mean cld quantities
=1: mcica sub-col, prescribed seeds to get random numbers
=2: mcica sub-col, providing array icseed for random numbers
physparam::icldflg - cloud scheme control flag
=0: diagnostic scheme gives cloud tau, omiga, and g.
=1: prognostic scheme gives cloud liq/ice path, etc.
physparam::iovrsw - clouds vertical overlapping control flag
=0: random overlapping clouds
=1: maximum/random overlapping clouds
=2: maximum overlap cloud
physparam::iswmode - control flag for 2-stream transfer scheme
=1; delta-eddington (joseph et al., 1976)
=2: pifm (zdunkowski et al., 1980)
=3: discrete ordinates (liou, 1973)
Definition at line 1272 of file radsw_main.f.
References bpade, physcons::con_cp, physcons::con_g, exp_tbl, heatfac, physparam::icldflg, physparam::iovrsw, physparam::isubcsw, physparam::iswcliq, physparam::iswmode, physparam::iswrate, physparam::iswrgas, module_radsw_parameters::ntbmx, and vtagsw.
Referenced by module_radiation_driver::radinit().
|
private |
Definition at line 1945 of file radsw_main.f.
References f_one, f_zero, module_radsw_ref::preflog, stpfac, and module_radsw_ref::tref.
Referenced by swrad().
|
private |
Definition at line 2100 of file radsw_main.f.
References bpade, eps, exp_tbl, f_one, f_zero, ftiny, idxsfc, physparam::iswmode, module_radsw_parameters::nbdsw, module_radsw_parameters::nblow, module_radsw_parameters::ngb, module_radsw_parameters::ngptsw, module_radsw_parameters::ntbmx, nuvb, oneminus, and swflux().
Referenced by swrad().
|
private |
Definition at line 2809 of file radsw_main.f.
References bpade, eps, exp_tbl, f_one, f_zero, ftiny, idxsfc, physparam::iswmode, module_radsw_parameters::nbdsw, module_radsw_parameters::nblow, module_radsw_parameters::ngb, module_radsw_parameters::ngptsw, module_radsw_parameters::ntbmx, nuvb, oneminus, and swflux().
Referenced by swrad().
|
private |
Definition at line 3488 of file radsw_main.f.
Referenced by spcvrtc(), and spcvrtm().
subroutine, public module_radsw_main::swrad | ( | ) |
[in] | plyr | (npts,nlay),model layer mean pressure in mb |
[in] | plvl | (npts,nlp1),model level pressure in mb |
[in] | tlyr | (npts,nlay),model layer mean temperature in K |
[in] | tlvl | (npts,nlp1),model level temperature in K (not in use) |
[in] | qlyr | (npts,nlay),layer specific humidity in gm/gm *see inside |
[in] | olyr | (npts,nlay),layer ozone concentration in gm/gm |
[in] | gasvmr | (npts,nlay,:),atmospheric constent gases:(check module_radiation_gases for definition) (:,:,1) - co2 volume mixing ratio (:,:,2) - n2o volume mixing ratio (:,:,3) - ch4 volume mixing ratio (:,:,4) - o2 volume mixing ratio (:,:,5) - co volume mixing ratio (not used) (:,:,6) - cfc11 volume mixing ratio (not used) (:,:,7) - cfc12 volume mixing ratio (not used) (:,:,8) - cfc22 volume mixing ratio (not used) (:,:,9) - ccl4 volume mixing ratio (not used) |
[in] | clouds | (npts,nlay,:),cloud profile(check module_radiation_clouds for definition) — for iswcliq > 0 — (:,:,1) - layer total cloud fraction (:,:,2) - layer in-cloud liq water path (g/m**2) (:,:,3) - mean eff radius for liq cloud (micron) (:,:,4) - layer in-cloud ice water path (g/m**2) (:,:,5) - mean eff radius for ice cloud (micron) (:,:,6) - layer rain drop water path (g/m**2) (:,:,7) - mean eff radius for rain drop (micron) (:,:,8) - layer snow flake water path (g/m**2) (:,:,9) - mean eff radius for snow flake (micron) — for iswcliq = 0 — (:,:,1) - layer total cloud fraction (:,:,2) - layer cloud optical depth (:,:,3) - layer cloud single scattering albedo (:,:,4) - layer cloud asymmetry factor |
[in] | icseed | (npts),auxiliary special cloud related array.when module variable isubcsw=2, it provides permutation seed for each column profile that are used for generating random numbers.when isubcsw /=2, it will not be used. |
[in] | aerosols | (npts,nlay,nbdsw,:),aerosol optical properties (check module_radiation_aerosols for definition) (:,:,:,1) - optical depth (:,:,:,2) - single scattering albedo (:,:,:,3) - asymmetry parameter |
[in] | sfcalb | (npts, : ),surface albedo in fraction(check module_radiation_surface for definition) (:,1) - near ir direct beam albedo (:,2) - near ir diffused albedo (:,3) - uv+vis direct beam albedo (:,4) - uv+vis diffused albedo |
[in] | cosz | (npts),cosine of solar zenith angle |
[in] | solcon | solar constant(w/m**2) |
[in] | NDAY | num of daytime points |
[in] | idxday | (npts),index array for daytime points |
[in] | npts | number of horizontal points |
[in] | nlay,nlp1 | vertical layer/lavel numbers |
[in] | lprnt | logical check print flag |
[out] | hswc | (npts,nlay),total sky heating rates (k/sec or k/day) |
[out] | topflx | (npts),radiation fluxes at toa (w/m**2), components (check module_radsw_parameters for definition) upfxc - total sky upward flux at toa dnflx - total sky downward flux at toa upfx0 - clear sky upward flux at toa |
[out] | sfcflx | (npts),radiation fluxes at sfc (w/m**2), components (check module_radsw_parameters for definition) upfxc - total sky upward flux at sfc dnfxc - total sky downward flux at sfc upfx0 - clear sky upward flux at sfc dnfx0 - clear sky downward flux at sfc Optional: |
[out] | hswb | (npts,nlay,nbdsw),spectral band total sky heating rates |
[out] | hsw0 | (npts,nlay),clear sky heating rates (k/sec or k/day) |
[out] | flxprf | (npts,nlp1),level radiation fluxes (w/m**2), components (check module_radsw_parameters for definition) dnfxc - total sky downward flux at interface upfxc - total sky upward flux at interface dnfx0 - clear sky downward flux at interface upfx0 - clear sky upward flux at interface |
[out] | fdncmp | (npts),component surface downward fluxes (w/m**2)(check module_radsw_parameters for definition) ! uvbfc - total sky downward uv-b flux at sfc uvbf0 - clear sky downward uv-b flux at sfc nirbm - downward surface nir direct beam flux nirdf - downward surface nir diffused flux visbm - downward surface uv+vis direct beam flux visdf - downward surface uv+vis diffused flux |
Definition at line 440 of file radsw_main.f.
References amdo3, amdw, cldprop(), physcons::con_amd, physcons::con_amw, physcons::con_avgd, physcons::con_g, f_one, f_zero, ftiny, heatfac, physparam::iovrsw, ipsdsw0, physparam::isubcsw, physparam::iswcliq, physparam::iswrgas, physparam::ivflip, lfdncmp, lflxprf, lhsw0, lhswb, module_radsw_parameters::nbdsw, oneminus, s0, setcoef(), spcvrtc(), spcvrtm(), and taumol().
Referenced by module_radiation_driver::grrad().
|
private |
Definition at line 3593 of file radsw_main.f.
References f_one, module_radsw_sflux::ibx, module_radsw_sflux::ix1, module_radsw_sflux::ix2, module_radsw_sflux::layreffr, module_radsw_parameters::nbhgh, module_radsw_parameters::nblow, module_radsw_parameters::ng, module_radsw_parameters::ngs, nspa, nspb, oneminus, module_radsw_sflux::scalekur, module_radsw_sflux::sfluxref01, module_radsw_sflux::sfluxref02, module_radsw_sflux::sfluxref03, module_radsw_sflux::specwt, module_radsw_sflux::strrat, taumol16(), taumol17(), taumol18(), taumol19(), taumol20(), taumol21(), taumol22(), taumol23(), taumol24(), taumol25(), taumol26(), taumol27(), taumol28(), and taumol29().
Referenced by swrad().
|
private |
Definition at line 304 of file radsw_main.f.
Referenced by swrad().
|
private |
Definition at line 303 of file radsw_main.f.
Referenced by swrad().
|
private |
Definition at line 294 of file radsw_main.f.
|
private |
Definition at line 292 of file radsw_main.f.
|
private |
Definition at line 340 of file radsw_main.f.
|
private |
Definition at line 300 of file radsw_main.f.
Referenced by cldprop(), mcica_subcol(), setcoef(), spcvrtc(), spcvrtm(), swflux(), swrad(), taumol(), taumol16(), taumol17(), taumol18(), taumol19(), taumol21(), taumol22(), taumol24(), and taumol28().
|
private |
Definition at line 299 of file radsw_main.f.
Referenced by cldprop(), setcoef(), spcvrtc(), spcvrtm(), swflux(), swrad(), taumol23(), and taumol26().
|
private |
|
private |
Definition at line 345 of file radsw_main.f.
|
private |
Definition at line 307 of file radsw_main.f.
Referenced by cldprop().
|
private |
Definition at line 307 of file radsw_main.f.
|
private |
Definition at line 349 of file radsw_main.f.
Referenced by swrad().
|
private |
|
private |
|
private |
|
private |
|
private |
Definition at line 307 of file radsw_main.f.
Referenced by taumol().
|
private |
Definition at line 307 of file radsw_main.f.
Referenced by taumol().
|
private |
Definition at line 329 of file radsw_main.f.
|
private |
Definition at line 293 of file radsw_main.f.
Referenced by spcvrtc(), spcvrtm(), swrad(), taumol(), taumol16(), taumol17(), taumol18(), taumol19(), taumol21(), taumol22(), taumol24(), and taumol28().
|
private |
Definition at line 297 of file radsw_main.f.
Referenced by swrad().
|
private |
Definition at line 295 of file radsw_main.f.
Referenced by setcoef().
|
private |
Definition at line 280 of file radsw_main.f.
Referenced by rswinit().