CCPP SciDoc for UFS-SRW v2.2.0  SRW v2.2.0
Common Community Physics Package Developed at DTC

◆ gfs_rrtmg_pre_run()

subroutine, public gfs_rrtmg_pre::gfs_rrtmg_pre_run ( integer, intent(in)  im,
integer, intent(in)  levs,
integer, intent(in)  lm,
integer, intent(in)  lmk,
integer, intent(in)  lmp,
integer, intent(in)  n_var_lndp,
logical, intent(in)  lextop,
integer, intent(in)  ltp,
integer, intent(in)  imfdeepcnv,
integer, intent(in)  imfdeepcnv_gf,
integer, intent(in)  imfdeepcnv_c3,
integer, intent(in)  me,
integer, intent(in)  ncnd,
integer, intent(in)  ntrac,
integer, intent(in)  num_p3d,
integer, intent(in)  npdf3d,
integer, intent(in)  ncnvcld3d,
integer, intent(in)  ntqv,
integer, intent(in)  ntcw,
integer, intent(in)  ntiw,
integer, intent(in)  ntlnc,
integer, intent(in)  ntinc,
integer, intent(in)  ntrnc,
integer, intent(in)  ntsnc,
integer, intent(in)  ntccn,
logical, intent(in)  top_at_1,
integer, intent(in)  ntrw,
integer, intent(in)  ntsw,
integer, intent(in)  ntgl,
integer, intent(in)  nthl,
integer, intent(in)  ntwa,
integer, intent(in)  ntoz,
integer, intent(in)  ntsmoke,
integer, intent(in)  ntdust,
integer, intent(in)  ntcoarsepm,
integer, intent(in)  ntclamt,
integer, intent(in)  nleffr,
integer, intent(in)  nieffr,
integer, intent(in)  nseffr,
integer, intent(in)  lndp_type,
integer, intent(in)  kdt,
integer, intent(in)  ntdu1,
integer, intent(in)  ntdu2,
integer, intent(in)  ntdu3,
integer, intent(in)  ntdu4,
integer, intent(in)  ntdu5,
integer, intent(in)  ntss1,
integer, intent(in)  ntss2,
integer, intent(in)  ntss3,
integer, intent(in)  ntss4,
integer, intent(in)  ntss5,
integer, intent(in)  ntsu,
integer, intent(in)  ntbcb,
integer, intent(in)  ntbcl,
integer, intent(in)  ntocb,
integer, intent(in)  ntocl,
integer, intent(in)  ntchm,
integer, intent(in)  imp_physics,
integer, intent(in)  imp_physics_nssl,
logical, intent(in)  nssl_ccn_on,
logical, intent(in)  nssl_invertccn,
integer, intent(in)  imp_physics_thompson,
integer, intent(in)  imp_physics_gfdl,
integer, intent(in)  imp_physics_zhao_carr,
integer, intent(in)  imp_physics_zhao_carr_pdf,
integer, intent(in)  imp_physics_mg,
integer, intent(in)  imp_physics_wsm6,
integer, intent(in)  imp_physics_fer_hires,
integer, intent(in)  iovr,
integer, intent(in)  iovr_rand,
integer, intent(in)  iovr_maxrand,
integer, intent(in)  iovr_max,
integer, intent(in)  iovr_dcorr,
integer, intent(in)  iovr_exp,
integer, intent(in)  iovr_exprand,
integer, intent(in)  idcor,
integer, intent(in)  idcor_con,
integer, intent(in)  idcor_hogan,
integer, intent(in)  idcor_oreopoulos,
real(kind=kind_phys), intent(in)  dcorr_con,
real(kind=kind_phys), intent(in)  julian,
integer, intent(in)  yearlen,
character(len=3), dimension(:), intent(in)  lndp_var_list,
logical, intent(in)  lsswr,
logical, intent(in)  lslwr,
logical, intent(in)  ltaerosol,
logical, intent(in)  mraerosol,
logical, intent(in)  lgfdlmprad,
logical, intent(in)  uni_cld,
logical, intent(in)  effr_in,
logical, intent(in)  do_mynnedmf,
logical, intent(in)  lmfshal,
logical, intent(in)  lcnorm,
logical, intent(in)  lmfdeep2,
logical, intent(in)  lcrick,
real(kind=kind_phys), intent(in)  fhswr,
real(kind=kind_phys), intent(in)  fhlwr,
real(kind=kind_phys), intent(in)  solhr,
real(kind=kind_phys), intent(in)  sup,
real(kind=kind_phys), intent(in)  con_eps,
real(kind=kind_phys), intent(in)  epsm1,
real(kind=kind_phys), intent(in)  fvirt,
real(kind=kind_phys), intent(in)  rog,
real(kind=kind_phys), intent(in)  rocp,
real(kind=kind_phys), intent(in)  con_rd,
real(kind=kind_phys), dimension(:), intent(in)  xlat_d,
real(kind=kind_phys), dimension(:), intent(in)  xlat,
real(kind=kind_phys), dimension(:), intent(in)  xlon,
real(kind=kind_phys), dimension(:), intent(in)  coslat,
real(kind=kind_phys), dimension(:), intent(in)  sinlat,
real(kind=kind_phys), dimension(:), intent(in)  tsfc,
real(kind=kind_phys), dimension(:), intent(in)  slmsk,
real(kind=kind_phys), dimension(:,:), intent(in)  prsi,
real(kind=kind_phys), dimension(:,:), intent(in)  prsl,
real(kind=kind_phys), dimension(:,:), intent(in)  prslk,
real(kind=kind_phys), dimension(:,:), intent(in)  tgrs,
real(kind=kind_phys), dimension(:,:), intent(in)  sfc_wts,
real(kind=kind_phys), dimension(:,:), intent(in)  mg_cld,
real(kind=kind_phys), dimension(:,:), intent(in)  effrr_in,
logical, intent(in)  pert_clds,
real(kind=kind_phys), dimension(:,:), intent(in)  sppt_wts,
real(kind=kind_phys), intent(in)  sppt_amp,
real(kind=kind_phys), dimension(:,:), intent(in)  cnvw_in,
real(kind=kind_phys), dimension(:,:), intent(in)  cnvc_in,
real(kind=kind_phys), dimension(:,:,:), intent(in)  qgrs,
real(kind=kind_phys), dimension(:,:,:), intent(inout)  aer_nm,
real(kind=kind_phys), dimension(:), intent(in)  dx,
integer, intent(in)  icloud,
integer, intent(in)  iaermdl,
integer, intent(in)  iaerflg,
real(kind=kind_phys), intent(in)  con_pi,
real(kind=kind_phys), intent(in)  con_g,
real(kind=kind_phys), intent(in)  con_ttp,
real(kind=kind_phys), intent(in)  con_thgni,
real(kind=kind_phys), dimension(:), intent(in)  si,
real(kind=kind_phys), dimension(:), intent(inout)  coszen,
real(kind=kind_phys), dimension(:), intent(inout)  coszdg,
real(kind=kind_phys), dimension(:,:), intent(inout)  effrl_inout,
real(kind=kind_phys), dimension(:,:), intent(inout)  effri_inout,
real(kind=kind_phys), dimension(:,:), intent(inout)  effrs_inout,
real(kind=kind_phys), dimension(:,:), intent(inout)  clouds1,
real(kind=kind_phys), dimension(:,:), intent(inout)  clouds2,
real(kind=kind_phys), dimension(:,:), intent(inout)  clouds3,
real(kind=kind_phys), dimension(:,:), intent(inout)  clouds4,
real(kind=kind_phys), dimension(:,:), intent(inout)  clouds5,
real(kind=kind_phys), dimension(:,:), intent(in)  qci_conv,
integer, intent(out)  kd,
integer, intent(out)  kt,
integer, intent(out)  kb,
integer, dimension(:,:), intent(out)  mtopa,
integer, dimension(:,:), intent(out)  mbota,
real(kind=kind_phys), intent(out)  raddt,
real(kind=kind_phys), dimension(:), intent(out)  tsfg,
real(kind=kind_phys), dimension(:), intent(out)  tsfa,
real(kind=kind_phys), dimension(:), intent(out)  de_lgth,
real(kind=kind_phys), dimension(:), intent(out)  alb1d,
real(kind=kind_phys), dimension(:,:), intent(out)  delp,
real(kind=kind_phys), dimension(:,:), intent(out)  dz,
real(kind=kind_phys), dimension(:,:), intent(out)  plvl,
real(kind=kind_phys), dimension(:,:), intent(out)  plyr,
real(kind=kind_phys), dimension(:,:), intent(out)  tlvl,
real(kind=kind_phys), dimension(:,:), intent(out)  tlyr,
real(kind=kind_phys), dimension(:,:), intent(out)  qlyr,
real(kind=kind_phys), dimension(:,:), intent(out)  olyr,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_co2,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_n2o,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_ch4,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_o2,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_co,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_cfc11,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_cfc12,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_cfc22,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_ccl4,
real(kind=kind_phys), dimension(:,:), intent(out)  gasvmr_cfc113,
real(kind=kind_phys), dimension(:,:), intent(out)  aerodp,
real(kind=kind_phys), dimension(:,:), intent(out)  ext550,
real(kind=kind_phys), dimension(:,:), intent(out)  clouds6,
real(kind=kind_phys), dimension(:,:), intent(out)  clouds7,
real(kind=kind_phys), dimension(:,:), intent(out)  clouds8,
real(kind=kind_phys), dimension(:,:), intent(out)  clouds9,
real(kind=kind_phys), dimension(:,:), intent(out)  cldsa,
real(kind=kind_phys), dimension(:,:), intent(out)  cldfra,
real(kind=kind_phys), dimension(:), intent(out)  cldfra2d,
real(kind=kind_phys), dimension(:), intent(out)  lwp_ex,
real(kind=kind_phys), dimension(:), intent(out)  iwp_ex,
real(kind=kind_phys), dimension(:), intent(out)  lwp_fc,
real(kind=kind_phys), dimension(:), intent(out)  iwp_fc,
real(kind=kind_phys), dimension(:,:,:), intent(out)  faersw1,
real(kind=kind_phys), dimension(:,:,:), intent(out)  faersw2,
real(kind=kind_phys), dimension(:,:,:), intent(out)  faersw3,
real(kind=kind_phys), dimension(:,:,:), intent(out)  faerlw1,
real(kind=kind_phys), dimension(:,:,:), intent(out)  faerlw2,
real(kind=kind_phys), dimension(:,:,:), intent(out)  faerlw3,
real(kind=kind_phys), dimension(:,:), intent(out)  alpha,
logical, intent(in)  rrfs_sd,
logical, intent(in)  aero_dir_fdb,
real(kind=kind_phys), dimension(:), intent(in)  fdb_coef,
real(kind_phys), dimension(:,:), intent(in)  spp_wts_rad,
integer, intent(in)  spp_rad,
integer, intent(in)  ico2,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

Argument Table

General Algorithm

  • Setup surface ground temperature and ground/air skin temperature if required.
  • Prepare atmospheric profiles for radiation input.
  • Compute relative humidity.
  • Recast remaining all tracers (except sphum) forcing them all to be positive.
  • Get layer ozone mass mixing ratio (if use ozone climatology data, call getozn()).
  • Call coszmn(), to compute cosine of zenith angle (only when SW is called)
  • Call getgases(), to set up non-prognostic gas volume mixing ratioes (gasvmr).
  • Get temperature at layer interface, and layer moisture.
  • Initialize mass mixing ratio of aerosols from NASA GOCART or NASA MERRA-2

— add smoke and dust —

  • Call module_radiation_aerosols::setaer() to setup aerosols property profile for radiation.
  • Obtain cloud information for radiation calculations (clouds,cldsa,mtopa,mbota)
  • Call Thompson's subroutine calc_effectRad() to compute effective radii
  • Call radiation_clouds_prop() to calculate cloud properties.
  • Call ppfbet() to perturb cld cover.
  • Call cdfnor() to pert surface albedo.

References module_radiation_clouds::adjust_cloudfinal(), module_radiation_clouds::adjust_cloudh2o(), module_radiation_clouds::adjust_cloudice(), module_radiation_clouds::cal_cldfra3(), module_mp_thompson::calc_effectrad(), surface_perturbation::cdfnor(), module_radiation_astronomy::coszmn(), module_radiation_gases::getgases(), module_radiation_gases::getozn(), module_mp_thompson_make_number_concentrations::make_dropletnumber(), module_mp_thompson_make_number_concentrations::make_icenumber(), module_mp_thompson_make_number_concentrations::make_rainnumber(), module_radiation_clouds::nf_clds, module_radiation_gases::nf_vgas, surface_perturbation::ppfbet(), and module_radiation_clouds::radiation_clouds_prop().

Here is the call graph for this function: