Radiation Scheme in CCPP
|
This module includes ncep's modifications of the rrtm-lw radiation ! code from aer inc.
Functions/Subroutines | |
subroutine, public | rlwinit |
This subroutine performs calculations necessary for the initialization of the longwave model. lookup tables are computed for use in the lw radiative transfer, and input absorption coefficient data for each spectral band are reduced from 256 g-point intervals to 140. More... | |
subroutine | cldprop |
This subroutine computes the cloud optical depth(s) for each cloudy layer and g-point interval. More... | |
subroutine | mcica_subcol |
This suroutine computes sub-colum cloud profile flag array. More... | |
subroutine | setcoef |
This subroutine computes various coefficients needed in radiative transfer calculations. More... | |
subroutine | rtrn |
This subroutine computes the upward/downward radiative fluxes, and heating rates for both clear or cloudy atmosphere. Clouds assumed as randomly overlaping in a vertical column. More... | |
subroutine | rtrnmr |
subroutine | rtrnmc |
subroutine | taumol |
subroutine, public | lwrad |
This subroutine is the main lw radiation routine. More... | |
Variables | |
character(40), parameter | vtaglw ='NCEP LW v5.1 Nov 2012 -RRTMG-LW v4.82 ' |
real(kind=kind_phys), parameter | eps = 1.0e-6 |
real(kind=kind_phys), parameter | oneminus = 1.0-eps |
real(kind=kind_phys), parameter | cldmin = 1.0e-80 |
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 | wtdiff = 0.5 |
real(kind=kind_phys), parameter | tblint = ntbl |
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(nbands) | nspa |
integer, dimension(nbands) | nspb |
real(kind=kind_phys), dimension(nbands) | a0 |
real(kind=kind_phys), dimension(nbands) | a1 |
real(kind=kind_phys), dimension(nbands) | a2 |
logical | lhlwb = .false. |
logical | lhlw0 = .false. |
logical | lflxprf = .false. |
real(kind=kind_phys) | fluxfac |
real(kind=kind_phys) | heatfac |
real(kind=kind_phys), dimension(nbands) | semiss0 |
real(kind=kind_phys), dimension(0:ntbl) | tau_tbl |
real(kind=kind_phys), dimension(0:ntbl) | exp_tbl |
real(kind=kind_phys), dimension(0:ntbl) | tfn_tbl |
integer, parameter | ipsdlw0 = ngptlw |
|
private |
Definition at line 1449 of file radlw_main.f.
References module_radlw_cldprlw::absice1, module_radlw_cldprlw::absice2, module_radlw_cldprlw::absice3, module_radlw_cldprlw::absliq1, module_radlw_cldprlw::absrain, module_radlw_cldprlw::abssnow0, cldmin, f_one, f_zero, physparam::ilwcice, physparam::ilwcliq, module_radlw_cldprlw::ipat, physparam::isubclw, mcica_subcol(), module_radlw_parameters::nbands, and module_radlw_parameters::ngptlw.
Referenced by lwrad().
subroutine, public module_radlw_main::lwrad | ( | ) |
[in] | plyr | (npts,nlay),model layer mean pressure in mb |
[in] | plvl | (npts,nlp1),model interface pressure in mb |
[in] | tlyr | (npts,nlay),model layer mean temperature in K |
[in] | tlvl | (npts,nlp1),model interface temperature in K |
[in] | qlyr | (npts,nlay),layer specific humidity in gm/gm *see inside |
[in] | olyr | (npts,nlay),layer ozone concentration in gm/gm *see inside |
[in] | gasvmr | (npts,nlay,:),atmospheric gases amount:(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 (:,:,6) - cfc11 volume mixing ratio (:,:,7) - cfc12 volume mixing ratio (:,:,8) - cfc22 volume mixing ratio (:,:,9) - ccl4 volume mixing ratio |
[in] | clouds | (npts,nlay,:),layer cloud profile(check module_radiation_clouds for definition) — for ilwcliq > 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 ilwcliq = 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 isubclw=2, it provides permutation seed for each column profile that are used for generating random numbers.when isubclw /=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] | sfemis | (npts),surface emissivity |
[in] | sfgtmp | (npts),surface ground temperature in K |
[in] | npts | total number of horizontal points |
[in] | nlay,nlp1 | total number of vertical layers, levels |
[in] | lprnt | cntl flag for diagnostic print out |
[out] | hlwc | (npts,nlay),total sky heating rate in k/day or k/sec |
[out] | topflx | (npts),radiation fluxes at top, components (check module_radlw_parameters for definition) upfxc - total sky upward flux at top ( \( w/m^2 \)) upfx0 - clear sky upward flux at top ( \( w/m^2 \)) |
[out] | sfcflx | (npts),radiation fluxes at sfc, components (check module_radlw_parameters for definition) upfxc - total sky upward flux at sfc ( \( w/m^2 \)) dnfxc - total sky downward flux at sfc ( \( w/m^2 \)) upfx0 - clear sky upward flux at sfc ( \( w/m^2 \)) dnfx0 - clear sky downward flux at sfc ( \( w/m^2 \)) Optional: |
[out] | hlwb | (npts,nlay,nbands),spectral band total sky heating rates |
[out] | hlw0 | (npts,nlay),clear sky heating rates (k/sec or k/day) |
[out] | flxprf | (npts,nlp1),level radiation fluxes ( \( w/m^2 \)), components (check module_radlw_parameters for definition) dnfxc - total sky downward flux upfxc - total sky upward flux dnfx0 - clear sky downward flux upfx0 - clear sky upward flux |
Definition at line 415 of file radlw_main.f.
References a0, a1, a2, amdo3, amdw, cldprop(), physcons::con_amd, physcons::con_amw, physcons::con_avgd, physcons::con_g, eps, f_one, f_zero, physparam::ilwcliq, physparam::ilwrgas, physparam::iovrlw, ipsdlw0, physparam::isubclw, physparam::ivflip, lflxprf, lhlw0, lhlwb, module_radlw_parameters::maxgas, module_radlw_parameters::nbands, rtrn(), rtrnmc(), rtrnmr(), semiss0, setcoef(), and taumol().
Referenced by module_radiation_driver::grrad().
subroutine module_radlw_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, (ngptlw,nlay),sub-colum cloud profile flag array |
physparam::iovrlw - control flag for cloud overlapping method
=0:random; =1:maximum/random: =2:maximum
Definition at line 1754 of file radlw_main.f.
References f_one, physparam::iovrlw, and module_radlw_parameters::ngptlw.
Referenced by cldprop().
subroutine, public module_radlw_main::rlwinit | ( | ) |
[in] | me | integer, print control for parallel process |
[out] | NONE |
physparam::ilwrate - heating rate unit selections
=1: output in k/day
=2: output in k/second
physparam::ilwrgas - control flag for rare gases (ch4,n2o,o2,cfcs, etc.)
=0: do not include rare gases
>0: include all rare gases
physparam::ilwcliq - liquid cloud optical properties contrl flag
=0: input cloud opt depth from diagnostic scheme
>0: input cwp,rew, and other cloud content parameters
physparam::isubclw - 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::iovrlw - clouds vertical overlapping control flag
=0: random overlapping clouds
=1: maximum/random overlapping clouds
=2: maximum overlap cloud (isubcol>0 only)
Definition at line 1249 of file radlw_main.f.
References bpade, physcons::con_cp, physcons::con_g, exp_tbl, f_one, f_zero, fluxfac, heatfac, physparam::icldflg, physparam::ilwcliq, physparam::ilwrate, physparam::ilwrgas, physparam::iovrlw, physparam::isubclw, module_radlw_parameters::ntbl, semiss0, tau_tbl, tfn_tbl, and vtaglw.
Referenced by module_radiation_driver::radinit().
|
private |
Original Code Description: this program calculates the upward fluxes, downward fluxes, and heating rates for an arbitrary clear or cloudy atmosphere. The input to this program is the atmospheric profile, all Planck function information, and the cloud fraction by layer. A variable diffusivity angle (secdif) is used for the angle integration. Bands 2-3 and 5-9 use a value for secdif that varies from 1.50 to 1.80 as a function of the column water vapor, and other bands use a value of 1.66. The gaussian weight appropriate to this angle (wtdiff =0.5) is applied here. Note that use of the emissivity angle for the flux integration can cause errors of 1 to 4 \(W/m^2\) within cloudy layers. Clouds are treated with a random cloud overlap method.
[in] | semiss | real,(nbands), lw surface emissivity |
[in] | delp | real, (nlay), layer pressure thickness (mb) |
[in] | cldfrc | real, (0:nlp1), layer cloud fraction |
[in] | taucld | real, (nbands,nlay), layer cloud opt depth |
[in] | tautot | real, (ngptlw,nlay), total optical depth (gas+aerosols) |
[in] | pklay | real, (nbands,0:nlay), integrated planck func at lay temp |
[in] | pklev | real, (nbands,0:nlay), integrated planck func at lev temp |
[in] | fracs | real, (ngptlw,nlay), planck fractions |
[in] | secdif | real, (nbands), secant of diffusivity angle |
[in] | nlay | integer, 1, number of vertical layers |
[in] | nlp1 | integer, 1, number of vertical levels (interfaces) |
[out] | totuflux | real, (0:nlay), total sky upward flux \((w/m^2)\) |
[out] | totdflux | real, (0:nlay), total sky downward flux \((w/m^2)\) |
[out] | htr | real, (nlay), total sky heating rate (k/sec or k/day) |
[out] | totuclfl | real, (0:nlay), clear sky upward flux \((w/m^2)\) |
[out] | totdclfl | real, (0:nlay), clear sky downward flux \((w/m^2)\) |
[out] | htrcl | real, (nlay), clear sky heating rate (k/sec or k/day) |
[out] | htrb | real, (nlay,nbands), spectral band lw heating rate (k/day) |
Definition at line 2206 of file radlw_main.f.
References bpade, eps, exp_tbl, f_one, f_zero, fluxfac, heatfac, lhlw0, lhlwb, module_radlw_parameters::nbands, module_radlw_parameters::ngb, module_radlw_parameters::ngptlw, tau_tbl, tblint, tfn_tbl, and wtdiff.
Referenced by lwrad().
|
private |
Definition at line 3138 of file radlw_main.f.
References bpade, eps, exp_tbl, f_one, f_zero, fluxfac, heatfac, lhlw0, lhlwb, module_radlw_parameters::nbands, module_radlw_parameters::ngb, module_radlw_parameters::ngptlw, tau_tbl, tblint, tfn_tbl, and wtdiff.
Referenced by lwrad().
|
private |
Definition at line 2568 of file radlw_main.f.
References bpade, eps, exp_tbl, f_one, f_zero, fluxfac, heatfac, lhlw0, lhlwb, module_radlw_parameters::nbands, module_radlw_parameters::ngb, module_radlw_parameters::ngptlw, tau_tbl, tblint, tfn_tbl, and wtdiff.
Referenced by lwrad().
|
private |
Definition at line 1916 of file radlw_main.f.
References module_radlw_ref::chi_mls, module_radlw_parameters::delwave, f_one, f_zero, module_radlw_parameters::nbands, module_radlw_ref::preflog, stpfac, module_radlw_avplank::totplnk, and module_radlw_ref::tref.
Referenced by lwrad().
|
private |
Definition at line 3502 of file radlw_main.f.
References module_radlw_parameters::ngb, module_radlw_parameters::ngptlw, taugb01(), taugb02(), taugb03(), taugb04(), taugb05(), taugb06(), taugb07(), taugb08(), taugb09(), taugb10(), taugb11(), taugb12(), taugb13(), taugb14(), taugb15(), and taugb16().
Referenced by lwrad().
|
private |
Definition at line 306 of file radlw_main.f.
Referenced by lwrad().
|
private |
Definition at line 306 of file radlw_main.f.
Referenced by lwrad().
|
private |
Definition at line 306 of file radlw_main.f.
Referenced by lwrad().
|
private |
Definition at line 280 of file radlw_main.f.
Referenced by lwrad().
|
private |
Definition at line 279 of file radlw_main.f.
Referenced by lwrad().
|
private |
|
private |
Definition at line 270 of file radlw_main.f.
Referenced by cldprop().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Definition at line 339 of file radlw_main.f.
Referenced by lwrad().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Definition at line 327 of file radlw_main.f.
|
private |
Definition at line 272 of file radlw_main.f.
Referenced by setcoef().
|
private |
|
private |
Definition at line 274 of file radlw_main.f.
|
private |
|
private |
Definition at line 257 of file radlw_main.f.
Referenced by rlwinit().
|
private |
Definition at line 273 of file radlw_main.f.