This module includes NCEP's modifications of the RRTMG-SW radiation code from AER. More...
Modules | |
module | module_radsw_parameters |
This module is for specifying the band structures and program parameters used by the RRTMG-SW scheme. | |
module | module_radsw_ref |
This module contains the reference pressures (in logarithm form) at 59 vertical levels (TOA is omitted), and the mid-latitude summer (MLS) standard temperature profile for the 59 pressure layers that are used to establish pre calculated transmission tables. | |
module | module_radsw_cldprtb |
This module contains cloud radiative property coefficients. | |
module | module_radsw_sflux |
This module contains various indexes and coefficients for SW spectral bands, as well as the spectral distribution of solar flux. The values of spectral solar flux are derived based on a prescribed solar constant ( \(1368.22 W/m^2\)). Scaling will be applied for the actual inputted solar constant value. | |
module | module_radsw_kgb16 |
This module sets up absorption coefficients for band 16: 2600-3250 cm-1 (low - h2o, ch4; high - ch4) | |
module | module_radsw_kgb17 |
This module sets up absorption coeffients for band 17: 3250-4000 cm-1 (low - h2o,co2; high - h2o,co2) | |
module | module_radsw_kgb18 |
This module sets up absorption coeffients for band 18: 4000-4650 cm-1 (low - h2o,ch4; high - ch4) | |
module | module_radsw_kgb19 |
This module sets up absorption coeffients for band 19: 4650-5150 cm-1 (low - h2o,co2; high - co2) | |
module | module_radsw_kgb20 |
This module sets up absorption coeffients for band 20: 5150-6150 cm-1 (low - h2o; high - h2o) | |
module | module_radsw_kgb21 |
This module sets up absorption coeffients for band 21: 6150-7700 cm-1 (low - h2o,co2; high - h2o,co2) | |
module | module_radsw_kgb22 |
This module sets up absorption coeffients for band 22: 7700-8050 cm-1 (low - h2o, o2; high - o2) | |
module | module_radsw_kgb23 |
This module sets up absorption coeffients for band 23: 8050-12850 cm-1 (low - h2o; high - nothing) | |
module | module_radsw_kgb24 |
This module sets up absorption coeffients for band 24: 12850-16000 cm-1 (low - h2o, o2; high - o2) | |
module | module_radsw_kgb25 |
This module sets up absorption coeffients for band 25: 16000-22650 cm-1 (low - h2o; high - nothing) | |
module | module_radsw_kgb26 |
This module sets up absorption coeffients for band 26: 22650-29000 cm-1 (low - nothing; high - nothing) | |
module | module_radsw_kgb27 |
This module sets up absorption coeffients for band 27: 29000-38000 cm-1 (low - o3; high - o3) | |
module | module_radsw_kgb28 |
This module sets up absorption coeffients for band 28: 38000-50000 cm-1 (low - o3,o2; high - o3,o2) | |
module | module_radsw_kgb29 |
This module sets up absorption coeffients for band 29: 820-2600 cm-1 (low - h2o; high - co2) | |
Functions/Subroutines | |
subroutine, public | rrtmg_sw::rrtmg_sw_run (plyr, plvl, tlyr, tlvl, qlyr, olyr, gasvmr_co2, gasvmr_n2o, gasvmr_ch4, gasvmr_o2, gasvmr_co, gasvmr_cfc11, gasvmr_cfc12, gasvmr_cfc22, gasvmr_ccl4, icseed, aeraod, aerssa, aerasy, sfcalb_nir_dir, sfcalb_nir_dif, sfcalb_uvis_dir, sfcalb_uvis_dif, dzlyr, delpin, de_lgth, alpha, cosz, solcon, NDAY, idxday, npts, nlay, nlp1, lprnt, cld_cf, lsswr, hswc, topflx, sfcflx, cldtau, HSW0, HSWB, FLXPRF, FDNCMP, cld_lwp, cld_ref_liq, cld_iwp, cld_ref_ice, cld_rwp, cld_ref_rain, cld_swp, cld_ref_snow, cld_od, cld_ssa, cld_asy, errmsg, errflg) |
subroutine, public | rrtmg_sw::rswinit (me) |
This subroutine initializes non-varying module variables, conversion factors, and look-up tables. More... | |
subroutine | rrtmg_sw::cldprop (cfrac, cliqp, reliq, cicep, reice, cdat1, cdat2, cdat3, cdat4, cf1, nlay, ipseed, dz, delgth, alpha, taucw, ssacw, asycw, cldfrc, cldfmc) |
This subroutine computes the cloud optical properties for each cloudy layer and g-point interval. More... | |
subroutine | rrtmg_sw::mcica_subcol (cldf, nlay, ipseed, dz, de_lgth, alpha, lcloudy) |
This subroutine computes the sub-colum cloud profile flag array. More... | |
subroutine | rrtmg_sw::setcoef (pavel, tavel, h2ovmr, nlay, nlp1, laytrop, jp, jt, jt1, fac00, fac01, fac10, fac11, selffac, selffrac, indself, forfac, forfrac, indfor) |
This subroutine computes various coefficients needed in radiative transfer calculation. More... | |
subroutine | rrtmg_sw::spcvrtc (ssolar, cosz, sntz, albbm, albdf, sfluxzen, cldfrc, cf1, cf0, taug, taur, tauae, ssaae, asyae, taucw, ssacw, asycw, nlay, nlp1, fxupc, fxdnc, fxup0, fxdn0, ftoauc, ftoau0, ftoadc, fsfcuc, fsfcu0, fsfcdc, fsfcd0, sfbmc, sfdfc, sfbm0, sfdf0, suvbfc, suvbf0) |
This subroutine computes the shortwave radiative fluxes using two-stream method. More... | |
subroutine | rrtmg_sw::spcvrtm (ssolar, cosz, sntz, albbm, albdf, sfluxzen, cldfmc, cf1, cf0, taug, taur, tauae, ssaae, asyae, taucw, ssacw, asycw, nlay, nlp1, fxupc, fxdnc, fxup0, fxdn0, ftoauc, ftoau0, ftoadc, fsfcuc, fsfcu0, fsfcdc, fsfcd0, sfbmc, sfdfc, sfbm0, sfdf0, suvbfc, suvbf0) |
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 | rrtmg_sw::vrtqdr (zrefb, zrefd, ztrab, ztrad, zldbt, ztdbt, NLAY, NLP1, zfu, zfd) |
This subroutine is called by spcvrtc() and spcvrtm(), and computes the upward and downward radiation fluxes. More... | |
subroutine | rrtmg_sw::taumol (colamt, colmol, fac00, fac01, fac10, fac11, jp, jt, jt1, laytrop, forfac, forfrac, indfor, selffac, selffrac, indself, nlay, sfluxzen, taug, taur) |
This subroutine calculates optical depths for gaseous absorption and rayleigh scattering subroutine called taumol## (## = 16-29) More... | |
subroutine | taumol16 |
The subroutine computes the optical depth in band 16: 2600-3250 cm-1 (low - h2o,ch4; high - ch4) More... | |
subroutine | taumol17 |
The subroutine computes the optical depth in band 17: 3250-4000 cm-1 (low - h2o,co2; high - h2o,co2) More... | |
subroutine | taumol18 |
The subroutine computes the optical depth in band 18: 4000-4650 cm-1 (low - h2o,ch4; high - ch4) More... | |
subroutine | taumol19 |
The subroutine computes the optical depth in band 19: 4650-5150 cm-1 (low - h2o,co2; high - co2) More... | |
subroutine | taumol20 |
The subroutine computes the optical depth in band 20: 5150-6150 cm-1 (low - h2o; high - h2o) More... | |
subroutine | taumol21 |
The subroutine computes the optical depth in band 21: 6150-7700 cm-1 (low - h2o,co2; high - h2o,co2) More... | |
subroutine | taumol22 |
The subroutine computes the optical depth in band 22: 7700-8050 cm-1 (low - h2o,o2; high - o2) More... | |
subroutine | taumol23 |
The subroutine computes the optical depth in band 23: 8050-12850 cm-1 (low - h2o; high - nothing) More... | |
subroutine | taumol24 |
The subroutine computes the optical depth in band 24: 12850-16000 cm-1 (low - h2o,o2; high - o2) More... | |
subroutine | taumol25 |
The subroutine computes the optical depth in band 25: 16000-22650 cm-1 (low - h2o; high - nothing) More... | |
subroutine | taumol26 |
The subroutine computes the optical depth in band 26: 22650-29000 cm-1 (low - nothing; high - nothing) More... | |
subroutine | taumol27 |
The subroutine computes the optical depth in band 27: 29000-38000 cm-1 (low - o3; high - o3) More... | |
subroutine | taumol28 |
The subroutine computes the optical depth in band 28: 38000-50000 cm-1 (low - o3,o2; high - o3,o2) More... | |
subroutine | taumol29 |
The subroutine computes the optical depth in band 29: 820-2600 cm-1 (low - h2o; high - co2) More... | |
The SW radiation model in the current NOAA Environmental Modeling System (NEMS) was adapted from the RRTM radiation model developed by AER Inc. ([41]; [136]). It contains 14 spectral bands spanning a spectral wavenumber range of \(50000-820 cm^{-1}\) (corresponding to a wavelength range \(0.2-12.2\mu m\)), each spectral band focuses on a specific set of atmospheric absorbing species as shown in Table 1. To achieve great computation efficiency while at the same time to maintain a high degree of accuracy, the RRTM radiation model employs a corrected-k distribution method (i.e. mapping the highly spectral changing absorption coefficient, k, into a monotonic and smooth varying cumulative probability function, g). In the RRTM-SW, there are 16 unevenly distributed g points for each of the 14 bands for a total of 224 g points. The GCM version of the code (RRTMG-SW) uses a reduced number (various between 2 to 16) of g points for each of the bands that totals to 112 instead of the full set of 224. To get high quality for the scheme, many advanced techniques are used in RRTM such as carefully selecting the band structure to handle various major (key-species) and minor absorbers; deriving a binary parameter for a paired key molecular species in the same domain; and using two pressure regions (dividing level is at about 96mb) for optimal treatment of various species, etc.
Table 1. RRTMG-SW spectral bands and the corresponding absorbing species
Band # | Wavenumber Range | Lower Atm (Key) | Lower Atm (Minor) | Mid/Up Atm (Key) | Mid/Up Atm (Minor) |
---|---|---|---|---|---|
16 | 2600-3250 | H2O,CH4 | CH4 | ||
17 | 3250-4000 | H2O,CO2 | H2O,CO2 | ||
18 | 4000-4650 | H2O,CH4 | CH4 | ||
19 | 4650-5150 | H2O,CO2 | CO2 | ||
20 | 5150-6150 | H2O | CH4 | H2O | CH4 |
21 | 6150-7700 | H2O,CO2 | H2O,CO2 | ||
22 | 7700-8050 | H2O,O2 | O2 | ||
23 | 8050-12850 | H2O | — | ||
24 | 12850-16000 | H2O,O2 | O3 | O2 | O3 |
25 | 16000-22650 | H2O | O3 | — | O3 |
26 | 22650-29000 | — | — | ||
27 | 29000-38000 | O3 | O3 | ||
28 | 38000-50000 | O3,O2 | O3,O2 | ||
29 | 820-2600 | H2O | CO2 | CO2 | H2O |
The RRTMG-SW package includes three files:
The authors wish to acknowledge the contributions of the following people: Steven J. Taubman, Karen Cady-Pereira, Patrick D. Brown, Ronald E. Farren, Luke Chen, Robert Bergstrom.
local_name | standard_name | long_name | units | type | dimensions | kind | intent |
---|---|---|---|---|---|---|---|
plyr | air_pressure_at_layer_for_radiation_in_hpa | air pressure layer | hPa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
plvl | air_pressure_at_interface_for_radiation_in_hpa | air pressure level | hPa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_level_dimension_for_radiation) | kind_phys | in |
tlyr | air_temperature_at_layer_for_radiation | air temperature layer | K | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
tlvl | air_temperature_at_interface_for_radiation | air temperature level | K | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_level_dimension_for_radiation) | kind_phys | in |
qlyr | water_vapor_specific_humidity_at_layer_for_radiation | specific humidity layer | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
olyr | ozone_concentration_at_layer_for_radiation | ozone concentration layer | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_co2 | volume_mixing_ratio_of_co2 | volume mixing ratio co2 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_n2o | volume_mixing_ratio_of_n2o | volume mixing ratio no2 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_ch4 | volume_mixing_ratio_of_ch4 | volume mixing ratio ch4 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_o2 | volume_mixing_ratio_of_o2 | volume mixing ratio o2 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_co | volume_mixing_ratio_of_co | volume mixing ratio co | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_cfc11 | volume_mixing_ratio_of_cfc11 | volume mixing ratio cfc11 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_cfc12 | volume_mixing_ratio_of_cfc12 | volume mixing ratio cfc12 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_cfc22 | volume_mixing_ratio_of_cfc22 | volume mixing ratio cfc22 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
gasvmr_ccl4 | volume_mixing_ratio_of_ccl4 | volume mixing ratio ccl4 | m3 m-3 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
icseed | random_number_seed_for_mcica_shortwave | seed for random number generation for shortwave radiation | none | integer | (ccpp_constant_one:horizontal_loop_extent) | in | |
aeraod | aerosol_optical_depth_for_shortwave_bands_01_16 | aerosol optical depth for shortwave bands 01-16 | none | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation, ccpp_constant_one:number_of_aerosol_bands_for_shortwave_radiation) | kind_phys | in |
aerssa | aerosol_single_scattering_albedo_for_shortwave_bands_01_16 | aerosol single scattering albedo for shortwave bands 01-16 | frac | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation, ccpp_constant_one:number_of_aerosol_bands_for_shortwave_radiation) | kind_phys | in |
aerasy | aerosol_asymmetry_parameter_for_shortwave_bands_01_16 | aerosol asymmetry paramter for shortwave bands 01-16 | none | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation, ccpp_constant_one:number_of_aerosol_bands_for_shortwave_radiation) | kind_phys | in |
sfcalb_nir_dir | surface_albedo_due_to_near_ir_direct | surface albedo due to near IR direct beam | frac | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
sfcalb_nir_dif | surface_albedo_due_to_near_ir_diffused | surface albedo due to near IR diffused beam | frac | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
sfcalb_uvis_dir | surface_albedo_due_to_uv_and_vis_direct | surface albedo due to UV+VIS direct beam | frac | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
sfcalb_uvis_dif | surface_albedo_due_to_uv_and_vis_diffused | surface albedo due to UV+VIS diffused beam | frac | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
dzlyr | layer_thickness_for_radiation | layer thickness | km | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
delpin | layer_pressure_thickness_for_radiation | layer pressure thickness | hPa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
de_lgth | cloud_decorrelation_length | cloud decorrelation length | km | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
alpha | cloud_overlap_decorrelation_parameter | cloud overlap decorrelation parameter | frac | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cosz | cosine_of_solar_zenith_angle_for_daytime_points_on_radiation_timestep | cosine of the solar zenit angle | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
solcon | solar_constant | solar constant | W m-2 | real | () | kind_phys | in |
nday | daytime_points_dimension | daytime points dimension | count | integer | () | in | |
idxday | daytime_points | daytime points | index | integer | (ccpp_constant_one:horizontal_loop_extent) | in | |
npts | horizontal_loop_extent | horizontal dimension | count | integer | () | in | |
nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | count | integer | () | in | |
nlp1 | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | count | integer | () | in | |
lprnt | flag_print | flag to print | flag | logical | () | in | |
cld_cf | total_cloud_fraction | total cloud fraction | frac | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
lsswr | flag_for_calling_shortwave_radiation | flag to calculate SW irradiances | flag | logical | () | in | |
hswc | tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step_and_radiation_levels | shortwave total sky heating rate | K s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | inout |
topflx | sw_fluxes_top_atmosphere | shortwave total sky fluxes at the top of the atm | W m-2 | topfsw_type | (ccpp_constant_one:horizontal_loop_extent) | topfsw_type | inout |
sfcflx | surface_sw_fluxes_assuming_total_and_clear_sky_on_radiation_timestep | shortwave total sky fluxes at the Earth surface | W m-2 | sfcfsw_type | (ccpp_constant_one:horizontal_loop_extent) | sfcfsw_type | inout |
cldtau | cloud_optical_depth_layers_at_0p55mu_band | approx .55mu band layer cloud optical depth | none | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | inout |
hsw0 | tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels | shortwave clear sky heating rate | K s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | inout |
fdncmp | components_of_surface_downward_shortwave_fluxes | derived type for special components of surface downward shortwave fluxes | W m-2 | cmpfsw_type | (ccpp_constant_one:horizontal_loop_extent) | cmpfsw_type | inout |
cld_lwp | cloud_liquid_water_path | cloud liquid water path | g m-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_ref_liq | mean_effective_radius_for_liquid_cloud | mean effective radius for liquid cloud | um | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_iwp | cloud_ice_water_path | cloud ice water path | g m-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_ref_ice | mean_effective_radius_for_ice_cloud | mean effective radius for ice cloud | um | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_rwp | cloud_rain_water_path | cloud rain water path | g m-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_ref_rain | mean_effective_radius_for_rain_drop | mean effective radius for rain drop | um | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_swp | cloud_snow_water_path | cloud snow water path | g m-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
cld_ref_snow | mean_effective_radius_for_snow_flake | mean effective radius for snow flake | um | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:adjusted_vertical_layer_dimension_for_radiation) | kind_phys | in |
errmsg | ccpp_error_message | error message for error handling in CCPP | none | character | () | len=* | out |
errflg | ccpp_error_code | error code for error handling in CCPP | 1 | integer | () | out |