Common Community Physics Package (CCPP) Scientific Documentation  Version 2.0
subroutine, public rrtmg_sw::rrtmg_sw_run ( real (kind=kind_phys), dimension(npts,nlay), intent(in)  plyr,
real (kind=kind_phys), dimension(npts,nlp1), intent(in)  plvl,
real (kind=kind_phys), dimension(npts,nlay), intent(in)  tlyr,
real (kind=kind_phys), dimension(npts,nlp1), intent(in)  tlvl,
real (kind=kind_phys), dimension(npts,nlay), intent(in)  qlyr,
real (kind=kind_phys), dimension(npts,nlay), intent(in)  olyr,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_co2,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_n2o,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_ch4,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_o2,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_co,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_cfc11,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_cfc12,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_cfc22,
real(kind=kind_phys), dimension(npts,nlay), intent(in)  gasvmr_ccl4,
integer, dimension(:), intent(in)  icseed,
real(kind=kind_phys), dimension(npts,nlay,nbdsw), intent(in)  aeraod,
real(kind=kind_phys), dimension(npts,nlay,nbdsw), intent(in)  aerssa,
real(kind=kind_phys), dimension(npts,nlay,nbdsw), intent(in)  aerasy,
real (kind=kind_phys), dimension(npts), intent(in)  sfcalb_nir_dir,
real (kind=kind_phys), dimension(npts), intent(in)  sfcalb_nir_dif,
real (kind=kind_phys), dimension(npts), intent(in)  sfcalb_uvis_dir,
real (kind=kind_phys), dimension(npts), intent(in)  sfcalb_uvis_dif,
real (kind=kind_phys), dimension(npts), intent(in)  cosz,
real (kind=kind_phys), intent(in)  solcon,
integer, intent(in)  NDAY,
integer, dimension(:), intent(in)  idxday,
integer, intent(in)  npts,
integer, intent(in)  nlay,
integer, intent(in)  nlp1,
logical, intent(in)  lprnt,
real (kind=kind_phys), dimension(npts,nlay), intent(in)  cld_cf,
logical, intent(in)  lsswr,
real (kind=kind_phys), dimension(npts,nlay), intent(inout)  hswc,
type (topfsw_type), dimension(npts), intent(inout)  topflx,
type (sfcfsw_type), dimension(npts), intent(inout)  sfcflx,
real (kind=kind_phys), dimension(npts,nlay), intent(inout), optional  HSW0,
real (kind=kind_phys), dimension(npts,nlay,nbdsw), intent(inout), optional  HSWB,
type (profsw_type), dimension(npts,nlp1), intent(inout), optional  FLXPRF,
type (cmpfsw_type), dimension(npts), intent(inout), optional  FDNCMP,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_lwp,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_ref_liq,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_iwp,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_ref_ice,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_rwp,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_ref_rain,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_swp,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_ref_snow,
real (kind=kind_phys), dimension(npts,nlay), intent(out), optional  cld_od_total,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_od_layer,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_od,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_ssa,
real (kind=kind_phys), dimension(npts,nlay), intent(in), optional  cld_asy,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

Argument Table

local_name standard_name long_name units rank type kind intent optional
plyr air_pressure_at_layer_for_radiation_in_hPa air pressure layer hPa 2 real kind_phys in F
plvl air_pressure_at_interface_for_radiation_in_hPa air pressure level hPa 2 real kind_phys in F
tlyr air_temperature_at_layer_for_radiation air temperature layer K 2 real kind_phys in F
tlvl air_temperature_at_interface_for_radiation air temperature level K 2 real kind_phys in F
qlyr water_vapor_specific_humidity_at_layer_for_radiation specific humidity layer kg kg-1 2 real kind_phys in F
olyr ozone_concentration_at_layer_for_radiation ozone concentration layer kg kg-1 2 real kind_phys in F
gasvmr_co2 volume_mixing_ratio_co2 volume mixing ratio co2 kg kg-1 2 real kind_phys in F
gasvmr_n2o volume_mixing_ratio_n2o volume mixing ratio no2 kg kg-1 2 real kind_phys in F
gasvmr_ch4 volume_mixing_ratio_ch4 volume mixing ratio ch4 kg kg-1 2 real kind_phys in F
gasvmr_o2 volume_mixing_ratio_o2 volume mixing ratio o2 kg kg-1 2 real kind_phys in F
gasvmr_co volume_mixing_ratio_co volume mixing ratio co kg kg-1 2 real kind_phys in F
gasvmr_cfc11 volume_mixing_ratio_cfc11 volume mixing ratio cfc11 kg kg-1 2 real kind_phys in F
gasvmr_cfc12 volume_mixing_ratio_cfc12 volume mixing ratio cfc12 kg kg-1 2 real kind_phys in F
gasvmr_cfc22 volume_mixing_ratio_cfc22 volume mixing ratio cfc22 kg kg-1 2 real kind_phys in F
gasvmr_ccl4 volume_mixing_ratio_ccl4 volume mixing ratio ccl4 kg kg-1 2 real kind_phys in F
icseed seed_random_numbers_sw seed for random number generation for shortwave radiation none 1 integer in F
aeraod aerosol_optical_depth_for_shortwave_bands_01-16 aerosol optical depth for shortwave bands 01-16 none 3 real kind_phys in F
aerssa aerosol_single_scattering_albedo_for_shortwave_bands_01-16 aerosol single scattering albedo for shortwave bands 01-16 frac 3 real kind_phys in F
aerasy aerosol_asymmetry_parameter_for_shortwave_bands_01-16 aerosol asymmetry paramter for shortwave bands 01-16 none 3 real kind_phys in F
sfcalb_nir_dir surface_albedo_due_to_near_IR_direct surface albedo due to near IR direct beam frac 1 real kind_phys in F
sfcalb_nir_dif surface_albedo_due_to_near_IR_diffused surface albedo due to near IR diffused beam frac 1 real kind_phys in F
sfcalb_uvis_dir surface_albedo_due_to_UV_and_VIS_direct surface albedo due to UV+VIS direct beam frac 1 real kind_phys in F
sfcalb_uvis_dif surface_albedo_due_to_UV_and_VIS_diffused surface albedo due to UV+VIS diffused beam frac 1 real kind_phys in F
cosz cosine_of_zenith_angle cosine of the solar zenit angle none 1 real kind_phys in F
solcon solar_constant solar constant W m-2 0 real kind_phys in F
nday daytime_points_dimension daytime points dimension count 0 integer in F
idxday daytime_points daytime points index 1 integer in F
npts horizontal_loop_extent horizontal dimension count 0 integer in F
nlay adjusted_vertical_layer_dimension_for_radiation number of vertical layers for radiation count 0 integer in F
nlp1 adjusted_vertical_level_dimension_for_radiation number of vertical levels for radiation count 0 integer in F
lprnt flag_print flag to print flag 0 logical in F
cld_cf total_cloud_fraction total cloud fraction frac 2 real kind_phys in F
lsswr flag_to_calc_sw flag to calculate SW irradiances flag 0 logical in F
hswc tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step shortwave total sky heating rate K s-1 2 real kind_phys inout F
topflx sw_fluxes_top_atmosphere shortwave total sky fluxes at the top of the atm W m-2 1 topfsw_type inout F
sfcflx sw_fluxes_sfc shortwave total sky fluxes at the Earth surface W m-2 1 sfcfsw_type inout F
hsw0 tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step shortwave clear sky heating rate K s-1 2 real kind_phys inout T
hswb sw_heating_rate_spectral shortwave total sky heating rate (spectral) K s-1 3 real kind_phys inout T
flxprf sw_fluxes sw fluxes total sky / csk and up / down at levels W m-2 2 profsw_type inout T
fdncmp components_of_surface_downward_shortwave_fluxes derived type for special components of surface downward shortwave fluxes W m-2 1 cmpfsw_type inout T
cld_lwp cloud_liquid_water_path cloud liquid water path g m-2 2 real kind_phys in T
cld_ref_liq mean_effective_radius_for_liquid_cloud mean effective radius for liquid cloud micron 2 real kind_phys in T
cld_iwp cloud_ice_water_path cloud ice water path g m-2 2 real kind_phys in T
cld_ref_ice mean_effective_radius_for_ice_cloud mean effective radius for ice cloud micron 2 real kind_phys in T
cld_rwp cloud_rain_water_path cloud rain water path g m-2 2 real kind_phys in T
cld_ref_rain mean_effective_radius_for_rain_drop mean effective radius for rain drop micron 2 real kind_phys in T
cld_swp cloud_snow_water_path cloud snow water path g m-2 2 real kind_phys in T
cld_ref_snow mean_effective_radius_for_snow_flake mean effective radius for snow flake micron 2 real kind_phys in T
cld_od_total cloud_optical_depth_weighted cloud optical depth, weighted none 2 real kind_phys out T
cld_od_layer cloud_optical_depth_layers_678 cloud optical depth, from bands 6,7,8 none 2 real kind_phys in T
cld_od cloud_optical_depth cloud optical depth none 2 real kind_phys in T
cld_ssa cloud_single_scattering_albedo cloud single scattering albedo frac 2 real kind_phys in T
cld_asy cloud_asymmetry_parameter cloud asymmetry parameter none 2 real kind_phys in T
errmsg error_message error message for error handling in CCPP none 0 character len=* out F
errflg error_flag error flag for error handling in CCPP flag 0 integer out F

RRTMG Shortwave Radiation Scheme General Algorithm

  1. Compute solar constant adjustment factor (s0fac) according to solcon.
  2. Initial output arrays (and optional) as zero.
  3. Change random number seed value for each radiation invocation (isubcsw =1 or 2).
  4. Prepare surface albedo: bm,df - dir,dif; 1,2 - nir,uvv.
  5. Prepare atmospheric profile for use in rrtm.
  6. Set absorber and gas column amount, convert from volume mixing ratio to molec/cm2 based on coldry (scaled to 1.0e-20)
    • colamt(nlay,maxgas):column amounts of absorbing gases 1 to maxgas are for h2o,co2,o3,n2o,ch4,o2,co, respectively ( \( mol/cm^2 \))
  7. Read aerosol optical properties from 'aerosols'.
  8. Read cloud optical properties from 'clouds'.
  9. Compute fractions of clear sky view:
    • random overlapping
    • max/ran overlapping
    • maximum overlapping
  10. For cloudy sky column, call cldprop() to compute the cloud optical properties for each cloudy layer.
  11. Call setcoef() to compute various coefficients needed in radiative transfer calculations.
  12. Call taumol() to calculate optical depths for gaseous absorption and rayleigh scattering
  13. Call the 2-stream radiation transfer model:
    • if physparam::isubcsw .le.0, using standard cloud scheme, call spcvrtc().
    • if physparam::isubcsw .gt.0, using mcica cloud scheme, call spcvrtm().
  14. Save outputs.

References cldprop(), setcoef(), spcvrtc(), spcvrtm(), and taumol().

Here is the call graph for this function: