GFS Operational Physics Documentation  gsm/branches/DTC/phys-doc-all phys-doc-all R82971
GFS Physics Implementation Layer

Layer that invokes individual GFS physics routines. More...

Detailed Description

Layer that invokes individual GFS physics routines.

Functions/Subroutines

subroutine gbphys (im, ix, levs, lsoil, lsm, ntrac, ncld, ntoz, ntcw, ntke, ntiw, ntlnc, ntinc, nmtvr, nrcm, ko3, lonr, latr, jcap, num_p3d, num_p2d, npdf3d, ncnvcld3d, kdt, lat, me, pl_coeff, nlons, ncw, flgmin, crtrh, cdmbgwd, ccwf, dlqf, ctei_rm, clstp, cgwf, prslrd0, ral_ts, dtp, dtf, fhour, solhr, slag, sdec, cdec, sinlat, coslat, pgr, ugrs, vgrs, tgrs, qgrs, vvel, prsi, prsl, prslk, prsik, phii, phil, rann, prdoz, poz, dpshc, fscav, fswtr, hprime, xlon, xlat, h2o_phys, levh2o, h2opl, h2o_pres, h2o_coeff, isot, ivegsrc, slope, shdmin, shdmax, snoalb, tg3, slmsk, vfrac, vtype, stype, uustar, oro, oro_uf, coszen, sfcdsw, sfcnsw, sfcnirbmd, sfcnirdfd, sfcvisbmd, sfcvisdfd, sfcnirbmu, sfcnirdfu, sfcvisbmu, sfcvisdfu, slimskin_cpl, ulwsfcin_cpl, dusfcin_cpl, dvsfcin_cpl, dtsfcin_cpl, dqsfcin_cpl, sfcdlw, tsflw, sfcemis, sfalb, swh, swhc, hlw, hlwc, hlwd, lsidea, ras, pre_rad, ldiag3d, lgocart, lssav, lssav_cpl, xkzm_m, xkzm_h, xkzm_s, psautco, prautco, evpco, wminco, pdfcld, shcnvcw, sup, redrag, hybedmf, dspheat, flipv, old_monin, cnvgwd, shal_cnv, imfshalcnv, imfdeepcnv, cal_pre, aero_in, mom4ice, mstrat, trans_trac, nstf_name, moist_adj, thermodyn_id, sfcpress_id, gen_coord_hybrid, levr, adjtrc, nnp, cscnv, nctp, do_shoc, shocaftcnv, ntot3d, ntot2d, hice, fice, tisfc, tsea, tprcp, cv, cvb, cvt, srflag, snwdph, weasd, sncovr, zorl, canopy, ffmm, ffhh, f10m, srunoff, evbsa, evcwa, snohfa, transa, sbsnoa, snowca, soilm, tmpmin, tmpmax, dusfc, dvsfc, dtsfc, dqsfc, totprcp, gflux, dlwsfc, ulwsfc, suntim, runoff, ep, cldwrk, dugwd, dvgwd, psmean, cnvprcp, spfhmin, spfhmax, rain, rainc, dt3dt, dq3dt, du3dt, dv3dt, dqdt_v, cnvqc_v, acv, acvb, acvt, slc, smc, stc, upd_mf, dwn_mf, det_mf, phy_f3d, phy_f2d, dusfc_cpl, dvsfc_cpl, dtsfc_cpl, dqsfc_cpl, dlwsfc_cpl, dswsfc_cpl, dnirbm_cpl, dnirdf_cpl, dvisbm_cpl, dvisdf_cpl, rain_cpl, nlwsfc_cpl, nswsfc_cpl, nnirbm_cpl, nnirdf_cpl, nvisbm_cpl, nvisdf_cpl, snow_cpl, xt, xs, xu, xv, xz, zm, xtts, xzts, d_conv, ifd, dt_cool, Qrain, tref, z_c, c_0, c_d, w_0, w_d, phy_fctd, gt0, gq0, gu0, gv0, t2m, q2m, u10m, v10m, zlvl, psurf, hpbl, pwat, t1, q1, u1, v1, chh, cmm, dlwsfci, ulwsfci, dswsfci, uswsfci, dusfci, dvsfci, dtsfci, dqsfci, gfluxi, epi, smcwlt2, smcref2, wet1, sr, rqtk, dtdtr, dusfci_cpl, dvsfci_cpl, dtsfci_cpl, dqsfci_cpl, dlwsfci_cpl, dswsfci_cpl, dnirbmi_cpl, dnirdfi_cpl, dvisbmi_cpl, dvisdfi_cpl, nlwsfci_cpl, nswsfci_cpl, nnirbmi_cpl, nnirdfi_cpl, nvisbmi_cpl, nvisdfi_cpl, t2mi_cpl, q2mi_cpl, u10mi_cpl, v10mi_cpl, tseai_cpl, psurfi_cpl )
 

Function/Subroutine Documentation

subroutine gbphys ( integer, intent(in)  im,
integer, intent(in)  ix,
integer, intent(in)  levs,
integer, intent(in)  lsoil,
integer, intent(in)  lsm,
integer, intent(in)  ntrac,
integer, intent(in)  ncld,
integer, intent(in)  ntoz,
integer, intent(in)  ntcw,
integer, intent(in)  ntke,
integer, intent(in)  ntiw,
integer, intent(in)  ntlnc,
integer, intent(in)  ntinc,
integer, intent(in)  nmtvr,
integer, intent(in)  nrcm,
integer, intent(in)  ko3,
integer, intent(in)  lonr,
integer, intent(in)  latr,
integer, intent(in)  jcap,
integer, intent(in)  num_p3d,
integer, intent(in)  num_p2d,
integer, intent(in)  npdf3d,
integer, intent(in)  ncnvcld3d,
integer, intent(in)  kdt,
integer, intent(in)  lat,
integer, intent(in)  me,
integer, intent(in)  pl_coeff,
integer, dimension(im), intent(in)  nlons,
integer, dimension(2), intent(in)  ncw,
real(kind=kind_phys), dimension(2), intent(in)  flgmin,
real(kind=kind_phys), dimension(3), intent(in)  crtrh,
real(kind=kind_phys), dimension(2), intent(in)  cdmbgwd,
real(kind=kind_phys), dimension(2), intent(in)  ccwf,
real(kind=kind_phys), dimension(2), intent(in)  dlqf,
real(kind=kind_phys), dimension(2), intent(in)  ctei_rm,
real(kind=kind_phys), intent(in)  clstp,
real(kind=kind_phys), dimension(2), intent(in)  cgwf,
real(kind=kind_phys), intent(in)  prslrd0,
real(kind=kind_phys), intent(in)  ral_ts,
real(kind=kind_phys), intent(in)  dtp,
real(kind=kind_phys), intent(in)  dtf,
real(kind=kind_phys), intent(in)  fhour,
real(kind=kind_phys), intent(in)  solhr,
real(kind=kind_phys), intent(in)  slag,
real(kind=kind_phys), intent(in)  sdec,
real(kind=kind_phys), intent(in)  cdec,
real(kind=kind_phys), dimension(im), intent(in)  sinlat,
real(kind=kind_phys), dimension(im), intent(in)  coslat,
real(kind=kind_phys), dimension(im), intent(in)  pgr,
real(kind=kind_phys), dimension(ix,levs), intent(in)  ugrs,
real(kind=kind_phys), dimension(ix,levs), intent(in)  vgrs,
real(kind=kind_phys), dimension(ix,levs), intent(in)  tgrs,
real(kind=kind_phys), dimension(ix,levs,ntrac), intent(inout)  qgrs,
real(kind=kind_phys), dimension(ix,levs), intent(in)  vvel,
real(kind=kind_phys), dimension(ix,levs+1), intent(in)  prsi,
real(kind=kind_phys), dimension(ix,levs), intent(in)  prsl,
real(kind=kind_phys), dimension(ix,levs), intent(in)  prslk,
real(kind=kind_phys), dimension(ix,levs+1), intent(in)  prsik,
real(kind=kind_phys), dimension(ix,levs+1), intent(in)  phii,
real(kind=kind_phys), dimension(ix,levs), intent(in)  phil,
real(kind=kind_phys), dimension(ix,nrcm), intent(in)  rann,
real(kind=kind_phys), dimension(ix,ko3,pl_coeff), intent(in)  prdoz,
real(kind=kind_phys), dimension(ko3), intent(in)  poz,
real(kind=kind_phys), dimension(im), intent(in)  dpshc,
real(kind=kind_phys), intent(inout)  fscav,
real(kind=kind_phys), intent(inout)  fswtr,
real(kind=kind_phys), dimension(ix,nmtvr), intent(in)  hprime,
real(kind=kind_phys), dimension(im), intent(in)  xlon,
real(kind=kind_phys), dimension(im), intent(in)  xlat,
logical, intent(in)  h2o_phys,
integer, intent(in)  levh2o,
real(kind=kind_phys), dimension(ix,levh2o,h2o_coeff), intent(in)  h2opl,
real(kind=kind_phys), dimension(levh2o), intent(in)  h2o_pres,
integer, intent(in)  h2o_coeff,
integer, intent(in)  isot,
integer, intent(in)  ivegsrc,
real(kind=kind_phys), dimension(im), intent(in)  slope,
real(kind=kind_phys), dimension(im), intent(in)  shdmin,
real(kind=kind_phys), dimension(im), intent(in)  shdmax,
real(kind=kind_phys), dimension(im), intent(in)  snoalb,
real(kind=kind_phys), dimension(im), intent(in)  tg3,
real(kind=kind_phys), dimension(im), intent(in)  slmsk,
real(kind=kind_phys), dimension(im), intent(in)  vfrac,
real(kind=kind_phys), dimension(im), intent(in)  vtype,
real(kind=kind_phys), dimension(im), intent(in)  stype,
real(kind=kind_phys), dimension(im), intent(in)  uustar,
real(kind=kind_phys), dimension(im), intent(in)  oro,
real(kind=kind_phys), dimension(im), intent(in)  oro_uf,
real(kind=kind_phys), dimension(im), intent(in)  coszen,
real(kind=kind_phys), dimension(im), intent(in)  sfcdsw,
real(kind=kind_phys), dimension(im), intent(in)  sfcnsw,
real(kind=kind_phys), dimension(im), intent(in)  sfcnirbmd,
real(kind=kind_phys), dimension(im), intent(in)  sfcnirdfd,
real(kind=kind_phys), dimension(im), intent(in)  sfcvisbmd,
real(kind=kind_phys), dimension(im), intent(in)  sfcvisdfd,
real(kind=kind_phys), dimension(im), intent(in)  sfcnirbmu,
real(kind=kind_phys), dimension(im), intent(in)  sfcnirdfu,
real(kind=kind_phys), dimension(im), intent(in)  sfcvisbmu,
real(kind=kind_phys), dimension(im), intent(in)  sfcvisdfu,
real(kind=kind_phys), dimension(im), intent(in)  slimskin_cpl,
real(kind=kind_phys), dimension(im), intent(in)  ulwsfcin_cpl,
real(kind=kind_phys), dimension(im), intent(in)  dusfcin_cpl,
real(kind=kind_phys), dimension(im), intent(in)  dvsfcin_cpl,
real(kind=kind_phys), dimension(im), intent(in)  dtsfcin_cpl,
real(kind=kind_phys), dimension(im), intent(in)  dqsfcin_cpl,
real(kind=kind_phys), dimension(im), intent(in)  sfcdlw,
real(kind=kind_phys), dimension(im), intent(in)  tsflw,
real(kind=kind_phys), dimension(im), intent(in)  sfcemis,
real(kind=kind_phys), dimension(im), intent(in)  sfalb,
real(kind=kind_phys), dimension(ix,levs), intent(in)  swh,
real(kind=kind_phys), dimension(ix,levs), intent(in)  swhc,
real(kind=kind_phys), dimension(ix,levs), intent(in)  hlw,
real(kind=kind_phys), dimension(ix,levs), intent(in)  hlwc,
real(kind=kind_phys), dimension(ix,levs,6), intent(in)  hlwd,
logical, intent(in)  lsidea,
logical, intent(in)  ras,
logical, intent(in)  pre_rad,
logical, intent(in)  ldiag3d,
logical, intent(in)  lgocart,
logical, intent(in)  lssav,
logical, intent(in)  lssav_cpl,
real(kind=kind_phys), intent(in)  xkzm_m,
real(kind=kind_phys), intent(in)  xkzm_h,
real(kind=kind_phys), intent(in)  xkzm_s,
real(kind=kind_phys), dimension(2), intent(in)  psautco,
real(kind=kind_phys), dimension(2), intent(in)  prautco,
real(kind=kind_phys), intent(in)  evpco,
real(kind=kind_phys), dimension(2), intent(in)  wminco,
logical, intent(in)  pdfcld,
logical, intent(in)  shcnvcw,
real(kind=kind_phys), intent(in)  sup,
logical, intent(in)  redrag,
logical, intent(in)  hybedmf,
logical, intent(in)  dspheat,
logical, intent(in)  flipv,
logical, intent(in)  old_monin,
logical, intent(in)  cnvgwd,
logical, intent(in)  shal_cnv,
integer, intent(in)  imfshalcnv,
integer, intent(in)  imfdeepcnv,
logical, intent(in)  cal_pre,
logical, intent(in)  aero_in,
logical, intent(in)  mom4ice,
logical, intent(in)  mstrat,
logical, intent(in)  trans_trac,
integer, dimension(5), intent(in)  nstf_name,
logical, intent(in)  moist_adj,
integer, intent(in)  thermodyn_id,
integer, intent(in)  sfcpress_id,
logical, intent(in)  gen_coord_hybrid,
integer, intent(in)  levr,
real(kind=kind_phys), dimension(ntrac)  adjtrc,
integer, intent(in)  nnp,
logical, intent(in)  cscnv,
integer, intent(in)  nctp,
logical, intent(in)  do_shoc,
logical, intent(in)  shocaftcnv,
integer, intent(in)  ntot3d,
integer, intent(in)  ntot2d,
real(kind=kind_phys), dimension(im), intent(inout)  hice,
real(kind=kind_phys), dimension(im), intent(inout)  fice,
real(kind=kind_phys), dimension(im), intent(inout)  tisfc,
real(kind=kind_phys), dimension(im), intent(inout)  tsea,
real(kind=kind_phys), dimension(im), intent(inout)  tprcp,
real(kind=kind_phys), dimension(im), intent(inout)  cv,
real(kind=kind_phys), dimension(im), intent(inout)  cvb,
real(kind=kind_phys), dimension(im), intent(inout)  cvt,
real(kind=kind_phys), dimension(im), intent(inout)  srflag,
real(kind=kind_phys), dimension(im), intent(inout)  snwdph,
real(kind=kind_phys), dimension(im), intent(inout)  weasd,
real(kind=kind_phys), dimension(im), intent(inout)  sncovr,
real(kind=kind_phys), dimension(im), intent(inout)  zorl,
real(kind=kind_phys), dimension(im), intent(inout)  canopy,
real(kind=kind_phys), dimension(im), intent(inout)  ffmm,
real(kind=kind_phys), dimension(im), intent(inout)  ffhh,
real(kind=kind_phys), dimension(im), intent(inout)  f10m,
real(kind=kind_phys), dimension(im), intent(inout)  srunoff,
real(kind=kind_phys), dimension(im), intent(inout)  evbsa,
real(kind=kind_phys), dimension(im), intent(inout)  evcwa,
real(kind=kind_phys), dimension(im), intent(inout)  snohfa,
real(kind=kind_phys), dimension(im), intent(inout)  transa,
real(kind=kind_phys), dimension(im), intent(inout)  sbsnoa,
real(kind=kind_phys), dimension(im), intent(inout)  snowca,
real(kind=kind_phys), dimension(im), intent(inout)  soilm,
real(kind=kind_phys), dimension(im), intent(inout)  tmpmin,
real(kind=kind_phys), dimension(im), intent(inout)  tmpmax,
real(kind=kind_phys), dimension(im), intent(inout)  dusfc,
real(kind=kind_phys), dimension(im), intent(inout)  dvsfc,
real(kind=kind_phys), dimension(im), intent(inout)  dtsfc,
real(kind=kind_phys), dimension(im), intent(inout)  dqsfc,
real(kind=kind_phys), dimension(im), intent(inout)  totprcp,
real(kind=kind_phys), dimension(im), intent(inout)  gflux,
real(kind=kind_phys), dimension(im), intent(inout)  dlwsfc,
real(kind=kind_phys), dimension(im), intent(inout)  ulwsfc,
real(kind=kind_phys), dimension(im), intent(inout)  suntim,
real(kind=kind_phys), dimension(im), intent(inout)  runoff,
real(kind=kind_phys), dimension(im), intent(inout)  ep,
real(kind=kind_phys), dimension(im), intent(inout)  cldwrk,
real(kind=kind_phys), dimension(im), intent(inout)  dugwd,
real(kind=kind_phys), dimension(im), intent(inout)  dvgwd,
real(kind=kind_phys), dimension(im), intent(inout)  psmean,
real(kind=kind_phys), dimension(im), intent(inout)  cnvprcp,
real(kind=kind_phys), dimension(im), intent(inout)  spfhmin,
real(kind=kind_phys), dimension(im), intent(inout)  spfhmax,
real(kind=kind_phys), dimension(im), intent(inout)  rain,
real(kind=kind_phys), dimension(im), intent(inout)  rainc,
real(kind=kind_phys), dimension(ix,levs,6), intent(inout)  dt3dt,
real(kind=kind_phys), dimension(ix,levs,5+pl_coeff), intent(inout)  dq3dt,
real(kind=kind_phys), dimension(ix,levs,4), intent(inout)  du3dt,
real(kind=kind_phys), dimension(ix,levs,4), intent(inout)  dv3dt,
real(kind=kind_phys), dimension(ix,levs), intent(inout)  dqdt_v,
real(kind=kind_phys), dimension(ix,levs), intent(inout)  cnvqc_v,
real(kind=kind_phys), dimension(im), intent(inout)  acv,
real(kind=kind_phys), dimension(im), intent(inout)  acvb,
real(kind=kind_phys), dimension(im), intent(inout)  acvt,
real(kind=kind_phys), dimension(ix,lsoil), intent(inout)  slc,
real(kind=kind_phys), dimension(ix,lsoil), intent(inout)  smc,
real(kind=kind_phys), dimension(ix,lsoil), intent(inout)  stc,
real(kind=kind_phys), dimension(ix,levs), intent(inout)  upd_mf,
real(kind=kind_phys), dimension(ix,levs), intent(inout)  dwn_mf,
real(kind=kind_phys), dimension(ix,levs), intent(inout)  det_mf,
real(kind=kind_phys), dimension(ix,levs,ntot3d), intent(inout)  phy_f3d,
real(kind=kind_phys), dimension(ix,ntot2d), intent(inout)  phy_f2d,
real(kind=kind_phys), dimension(im), intent(inout), optional  dusfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dvsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dtsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dqsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dlwsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dswsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dnirbm_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dnirdf_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dvisbm_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  dvisdf_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  rain_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  nlwsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  nswsfc_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  nnirbm_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  nnirdf_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  nvisbm_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  nvisdf_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  snow_cpl,
real(kind=kind_phys), dimension(im), intent(inout), optional  xt,
real(kind=kind_phys), dimension(im), intent(inout), optional  xs,
real(kind=kind_phys), dimension(im), intent(inout), optional  xu,
real(kind=kind_phys), dimension(im), intent(inout), optional  xv,
real(kind=kind_phys), dimension(im), intent(inout), optional  xz,
real(kind=kind_phys), dimension(im), intent(inout), optional  zm,
real(kind=kind_phys), dimension(im), intent(inout), optional  xtts,
real(kind=kind_phys), dimension(im), intent(inout), optional  xzts,
real(kind=kind_phys), dimension(im), intent(inout), optional  d_conv,
real(kind=kind_phys), dimension(im), intent(inout), optional  ifd,
real(kind=kind_phys), dimension(im), intent(inout), optional  dt_cool,
real(kind=kind_phys), dimension(im), intent(inout), optional  Qrain,
real(kind=kind_phys), dimension(im), intent(inout), optional  tref,
real(kind=kind_phys), dimension(im), intent(inout), optional  z_c,
real(kind=kind_phys), dimension(im), intent(inout), optional  c_0,
real(kind=kind_phys), dimension(im), intent(inout), optional  c_d,
real(kind=kind_phys), dimension(im), intent(inout), optional  w_0,
real(kind=kind_phys), dimension(im), intent(inout), optional  w_d,
real(kind=kind_phys), dimension(ix,nctp), intent(inout)  phy_fctd,
real(kind=kind_phys), dimension(ix,levs), intent(out)  gt0,
real(kind=kind_phys), dimension(ix,levs,ntrac), intent(out)  gq0,
real(kind=kind_phys), dimension(ix,levs), intent(out)  gu0,
real(kind=kind_phys), dimension(ix,levs), intent(out)  gv0,
real(kind=kind_phys), dimension(im), intent(out)  t2m,
real(kind=kind_phys), dimension(im), intent(out)  q2m,
real(kind=kind_phys), dimension(im), intent(out)  u10m,
real(kind=kind_phys), dimension(im), intent(out)  v10m,
real(kind=kind_phys), dimension(im), intent(out)  zlvl,
real(kind=kind_phys), dimension(im), intent(out)  psurf,
real(kind=kind_phys), dimension(im), intent(out)  hpbl,
real(kind=kind_phys), dimension(im), intent(out)  pwat,
real(kind=kind_phys), dimension(im), intent(out)  t1,
real(kind=kind_phys), dimension(im), intent(out)  q1,
real(kind=kind_phys), dimension(im), intent(out)  u1,
real(kind=kind_phys), dimension(im), intent(out)  v1,
real(kind=kind_phys), dimension(im), intent(out)  chh,
real(kind=kind_phys), dimension(im), intent(out)  cmm,
real(kind=kind_phys), dimension(im), intent(out)  dlwsfci,
real(kind=kind_phys), dimension(im), intent(out)  ulwsfci,
real(kind=kind_phys), dimension(im), intent(out)  dswsfci,
real(kind=kind_phys), dimension(im), intent(out)  uswsfci,
real(kind=kind_phys), dimension(im), intent(out)  dusfci,
real(kind=kind_phys), dimension(im), intent(out)  dvsfci,
real(kind=kind_phys), dimension(im), intent(out)  dtsfci,
real(kind=kind_phys), dimension(im), intent(out)  dqsfci,
real(kind=kind_phys), dimension(im), intent(out)  gfluxi,
real(kind=kind_phys), dimension(im), intent(out)  epi,
real(kind=kind_phys), dimension(im), intent(out)  smcwlt2,
real(kind=kind_phys), dimension(im), intent(out)  smcref2,
real(kind=kind_phys), dimension(im), intent(out)  wet1,
real(kind=kind_phys), dimension(im), intent(out)  sr,
real(kind=kind_phys), dimension(im), intent(out), optional  rqtk,
real(kind=kind_phys), dimension(ix,levs)  dtdtr,
real(kind=kind_phys), dimension(im), intent(out), optional  dusfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dvsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dtsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dqsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dlwsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dswsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dnirbmi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dnirdfi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dvisbmi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  dvisdfi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  nlwsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  nswsfci_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  nnirbmi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  nnirdfi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  nvisbmi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  nvisdfi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  t2mi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  q2mi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  u10mi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  v10mi_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  tseai_cpl,
real(kind=kind_phys), dimension(im), intent(out), optional  psurfi_cpl 
)

This subroutine is the suite driver for the GFS atmospheric physics and surface. It is responsible for calculating and applying tendencies of the atmospheric state variables due to the atmospheric physics and due to the surface layer scheme. In addition, this routine applies radiative heating rates that were calculated during the antecedent call to the radiation scheme. Code within this subroutine is executed on the physics sub-timestep. The sub-timestep loop is executed in the subroutine gloopb.

Parameter descriptions include intent, name, description, and size

Parameters
ix,imhorizontal dimension and num of used pts
levsvertical layer dimension
lsoilnumber of soil layers
lsmflag for land surface model to use =0 for osu lsm; =1 for noah lsm
ntracnumber of tracers
ncldnumber of cloud species
ntozozone location in the tracer array
ntcwcloud condensate location in the tracer array
ntketke location in the tracer array
ntiw
ntlnc
ntinc
nmtvrnumber of topographic variables such as variance etc used in the GWD parameterization
nrcmsecond dimension for the random number array rann
ko3number of layers for ozone data
lonr,latrnumber of lon/lat points
jcapnumber of spectral wave trancation used only by sascnv shalcnv
num_p3dnumber of 3D arrays needed for microphysics
num_p2dnumber of 2D arrays needed for microphysics
npdf3dnumber of 3d arrays associated with pdf based clouds/microphysics
ncnvcld3dnumber of 3d arrays associated with convective cloudiness enhancement
kdtnumber of the current time step
latlatitude index - used for debug prints
mepe number - used for debug prints
pl_coeffnumber coefficients in ozone forcing
nlonsnumber of total grid points in a latitude circle through a point
ncwrange of droplet number concentrations for Ferrier microphysics
flgminrange of minimum large ice fraction for Ferrier microphys
crtrhcritical relative humidity at the surface, PBL top and at the top of the atmosphere
cdmbgwdmultiplication factors for cdmb and gwd
ccwfmultiplication factor for critical cloud workfunction for RAS
dlqffactor for cloud condensate detrainment from cloud edges (RAS)
ctei_rmcritical cloud top entrainment instability criteria (used if mstrat=.true.)
clstpindex used by cnvc90 (for convective clouds) legacy stuff - does not affect forecast
cgwfmultiplication factor for convective GWD
prslrd0pressure level (Pa) from which Rayleigh Damping is applied
ral_tstime scale for Rayleigh damping in days
dtpphysics time step in seconds
dtfdynamics time step in seconds
fhourforecast hour
solhrfcst hour at the end of prev time step
slagequation of time ( radian )
sdec,cdecsin and cos of the solar declination angle
sinlatsin of latitude
coslatcos of latitude
pgrsurface pressure (Pa)
ugrs,vgrsu/v component of layer wind
tgrslayer mean temperature ( k )
qgrslayer mean tracer concentration
vvellayer mean vertical velocity (Pa/s)
prsipressure at layer interfaces
prslmean layer presure
prsikExner function at layer interface
prslkExner function at layer
phiiinterface geopotential ( \(m^2/s^2\))
phillayer geopotential ( \(m^2/s^2\))
rannrandom number array (0-1)
prdoutozone forcing data
pozozone forcing data level pressure (ln(Pa))
dpshcmaximum pressure depth for shallow convection fscav
fswtr
hprimeorographic std dev
xlon,xlatlongitude and latitude ( radian )
h2o_phys
levh2o
h2opl
h2o_pres
h2o_coeff
isot
ivegsrc
slopesfc slope type for lsm
shdminmin fractional coverage of green veg
shdmaxmax fractional coverage of green veg (not used)
snoalbmax snow albedo over land (for deep snow)
tg3deep soil temperature
slmsksea/land/ice mask (=0/1/2)
vfracvegetation fraction
vtypevegetation type
stypesoil type
uustarboundary layer parameter
oroorography
oro_ufunfiltered orography
coszenavg cosz over daytime sw radiation interval
sfcdswtotal sky sfc downward sw flux ( \(w/m^2\) )
sfcnswtotal sky sfc netsw flx into ground( \(w/m^2\))
sfcnirbmdsfc nir-beam sw downward flux ( \(w/m^2\))
sfcnirdfdsfc nir-diff sw downward flux ( \(w/m^2\))
sfcvisbmdsfc uv+vis-beam sw downward flux ( \(w/m^2\))
sfcvisdfdsfc uv+vis-diff sw downward flux ( \(w/m^2\))
sfcnirbmusfc nir-beam sw upward flux ( \(w/m^2\))
sfcnirdfusfc nir-diff sw upward flux ( \(w/m^2\))
sfcvisbmusfc uv+vis-beam sw upward flux ( \(w/m^2\))
sfcvisdfusfc uv+vis-diff sw upward flux ( \(w/m^2\))
slimskin_cpl
ulwsfcin_cpl
dusfcin_cpl
dvsfcin_cpl
dtsfcin_cpl
dqsfcin_cpl
sfcdlwtotal sky sfc downward lw flux ( \(w/m^2\) )
tsflwsfc air (layer 1) temp over lw interval (k)
sfcemissfc lw emissivity ( fraction )
sfalbmean sfc diffused sw albedo
swhtotal sky sw heating rates ( \(k/s\) )
swhcclear sky sw heating rates ( \(k/s\) )
hlwtotal sky lw heating rates ( \(k/s\) )
hlwcclear sky lw heating rates ( \(k/s\) )
hlwdidea sky lw heating rates ( \(k/s\) )
lsidea
rasflag for ras convection scheme
pre_radflag for testing purpose
ldiag3dflag for 3d diagnostic fields
lgocartflag for 3d diagnostic fields for gocart
lssavflag controls data store and output
lssav_cplflag for save data for A/O/I coupling
xkzm_mbackground vertical diffusion for momentum
xkzm_hbackground vertical diffusion for heat, q
xkzm_ssigma threshold for background mom. diffusn
psautcoauto conversion coeff from ice to snow
prautcoauto conversion coeff from cloud to rain
evpcocoeff for evaporation of largescale rain
wmincowater and ice minimum threshold for Zhao
pdfcldflag for pdfcld
shcnvcwflag for shallow convective cloud
supsupsaturation for ho. nucleation of ice
redragflag for reduced drag coeff. over sea
hybedmfflag for hybrid edmf pbl scheme
dspheatflag for tke dissipative heating
flipvflag for vertical direction flip (ras)
old_moninflag for diff monin schemes
cnvgwdflag for conv gravity wave drag
shal_cnvflag for calling shallow convection
imfshalcnvflag for mass-flux shallow conv scheme
     1: July 2010 version of mass-flux shallow conv scheme
         current operational version as of 2016
     2: scale- & aerosol-aware mass-flux shallow conv scheme (2017)
     0: modified Tiedtke's eddy-diffusion shallow conv scheme
    -1: no shallow convection used
imfdeepcnvflag for mass-flux deep conv scheme
     1: July 2010 version of SAS conv scheme
           current operational version as of 2016
     2: scale- & aerosol-aware mass-flux deep conv scheme (2017)
     0: old SAS Convection scheme before July 2010
cal_preflag controls precip type algorithm
aero_in
mom4iceflag controls mom4 sea-ice
mstratflag for moorthi approach for stratus
trans_tracflag for convective transport of tracers
nstf_nameNSST related flag parameters
     nstf_name(1) : 0 = NSSTM off
                    1 = NSSTM on but uncoupled
                    2 = NSSTM on and coupled
     nstf_name(2) : 1 = NSSTM spin up on
                    0 = NSSTM spin up off
     nstf_name(3) : 1 = NSST analysis on
                    0 = NSSTM analysis off
     nstf_name(4) : zsea1 in mm
     nstf_name(5) : zsea2 in mm
moist_adjflag for moist convective adjustment
thermodyn_idvalid for GFS only for get_prs/phi
sfcpress_idvalid for GFS only for get_prs/phi
gen_coord_hybridlogical for pk=ak+bk*ps+ck*theta (Henry)
levrthe number of layers GFS Radiative heating calculted at 1
adjtrcdynamics adjustments to tracers
nnpphysics substep number
cscnvflag for Chikira-Sugiyama convection
nctpnumber of cloud types in CS scheme
do_shocflag for SHOC
shocaftcnvflag for SHOC
ntot3dnumber of total 3d fields for phy_f3d
ntot2dnumber of total 2d fields for phy_f2d
hicesea-ice thickness
ficesea-ice concentration
tisfcsea-ice temperature
tseaground surface temperature ( k )
tprcptotal precipitation
the following three variables do not affect the forecast
cvconvective clouds amountt
cvbconvective clouds base pressure (kPa)
cvtconvective clouds top pressure (kPa)
srflagsnow/rain flag for precipitation
snwdphactual snow depth (mm) over land/sea ice
weasdwater equiv of accumulated snow depth ( \(kg/m^2\)) over land and sea ice
sncovrsnow cover over land
zorlsurface roughness
canopycanopy water
ffmmfm parameter from PBL scheme
ffhhfh parameter from PBL scheme
f10mfm at 10m
srunoffsurface water runoff (from lsm)
evbsanoah lsm diagnostics
evcwanoah lsm diagnostics
snohfanoah lsm diagnostics
transanoah lsm diagnostics
sbsnoanoah lsm diagnostics
snowcanoah lsm diagnostics
soilmsoil moisture
tmpminmin temperature at 2m height (k)
tmpmaxmax temperature at 2m height (k)
dusfcu component of surface stress
dvsfcv component of surface stress
dtsfcsensible heat flux ( \(w/m^2\))
dqsfclatent heat flux ( \(w/m^2\))
totprcpaccumulated total precipitation ( \(kg/m^2\))
gfluxground conductive heat flux
dlwsfctime accumulated sfc dn lw flux ( \(w/m^2\) )
ulwsfctime accumulated sfc up lw flux ( \(w/m^2\) )
suntimsunshine duration time (s)
runofftotal water runoff
eppotential evaporation
cldwrkcloud workfunction (valid only with sas)
dugwdvertically integrated u change by OGWD
dvgwdvertically integrated v change by OGWD
psmeansurface pressure (kPa)
cnvprcpaccumulated convective precipitation ( \(kg/m^2\))
spfhminminimum specific humidity
spfhmaxmaximum specific humidity
raintotal rain at this time step
raincconvective rain at this time step
dt3dttemperature change due to physics
dq3dtmoisture change due to physics
du3dtu momentum change due to physics
dv3dtv momentum change due to physics
dqdt_vtotal moisture tendency (kg/kg/s)
cnvqc_vtotal convective conensate (kg/kg)
acvarray containing accumulated convective clouds
acvb,acvtarrays used by cnvc90
slcliquid soil moisture
smctotal soil moisture
stcsoil temperature
upd_mfconvective updraft mass flux
dwn_mfconvective downdraft mass flux
det_mfconvective detrainment mass flux
phy_f3d3d arrays saved for restart
phy_f2d2d arrays save for restart
dusfc_cplsfc u-momentum flux for A/O/I coupling
dvsfc_cplsfc v-momentum flux for A/O/I coupling
dtsfc_cplsfc sensible heat flux for A/O/I coupling
dqsfc_cplsfc latent heat flux for A/O/I coupling
dlwsfc_cplsfc dnwd lw flux ( \(w/m^2\)) for A/O/I coupling
dswsfc_cplsfc dnwd sw flux ( \(w/m^2\)) for A/O/I coupling
dnirbm_cplsfc nir beam dnwd sw rad flux ( \(w/m^2\))
dnirdf_cplsfc nir diff dnwd sw rad flux ( \(w/m^2\))
dvisbm_cplsfc uv+vis beam dnwd sw rad flux ( \(w/m^2\))
dvisdf_cplsfc uv+vis diff dnwd sw rad flux ( \(w/m^2\))
rain_cpltotal precipitation rain for A/O/I coupling
nlwsfc_cplnet dnwd lw flux ( \(w/m^2\)) for A/O/I coupling
nswsfc_cplnet dnwd sw flux ( \(w/m^2\)) for A/O/I coupling
nnirbm_cplnet nir beam dnwd sw rad flux ( \(w/m^2\))
nnirdf_cplnet nir diff dnwd sw rad flux ( \(w/m^2\))
nvisbm_cplnet uv+vis beam dnwd sw rad flux ( \(w/m^2\))
nvisdf_cplnet uv+vis diff dnwd sw rad flux ( \(w/m^2\))
snow_cpltotal precipitation snow for A/O/I coupling
xtheat content in DTL
xssalinity content in DTL
xuu-current content in DTL
xvv-current content in DTL
xzDTL thickness
zmMXL thickness
xttsd(xt)/d(ts)
xztsd(xz)/d(ts)
d_convthickness of Free Convection Layer (FCL)
ifdindex to start DTM run or not
dt_coolSub-layer cooling amount
Qrainsensible heat flux due to rainfall (watts)
trefReference Temperature
z_cSub-layer cooling thickness
c_0coefficient1 to calculate d(Tz)/d(Ts)
c_dcoefficient2 to calculate d(Tz)/d(Ts)
w_0coefficient3 to calculate d(Tz)/d(Ts)
w_dcoefficient4 to calculate d(Tz)/d(Ts)
phy_fctdcloud base mass flux for CScnv
gt0updated temperature
gq0updated tracers
gu0updated zonal wind
gv0update meridional wind
t2m,q2m2 meter temperature and humidity
u10m,v10m10 meater u/v wind speed
zlvllayer 1 height (m)
psurfsurface pressure (Pa)
hpblpbl height (m)
pwatprecipitable water
t1layer 1 temperature (K)
q1layer 1 specific humidity (kg/kg)
u1layer 1 zonal wind (m/s)
v1layer 1 merdional wind (m/s)
chhthermal exchange coefficient
cmmmomentum exchange coefficient
dlwsfciinstantaneous sfc dnwd lw flux ( \(w/m^2\) )
ulwsfciinstantaneous sfc upwd lw flux ( \(w/m^2\) )
dswsfciinstantaneous sfc dnwd sw flux ( \(w/m^2\) )
uswsfciinstantaneous sfc upwd sw flux ( \(w/m^2\) )
dusfciinstantaneous u component of surface stress
dvsfciinstantaneous v component of surface stress
dtsfciinstantaneous sfc sensible heat flux
dqsfciinstantaneous sfc latent heat flux
gfluxiinstantaneous sfc ground heat flux
epiinstantaneous sfc potential evaporation
smcwlt2wilting point (volumetric)
smcref2soil moisture threshold (volumetric)
wet1
sr
rqtkmass change due to moisture variation
dtdtrtemperature change due to radiative heating per time step (K)
dusfci_cplsfc u-momentum flux at time step AOI cpl
dvsfci_cplsfc v-momentum flux at time step AOI cpl
dtsfci_cplsfc sensib heat flux at time step AOI cpl
dqsfci_cplsfc latent heat flux at time step AOI cpl
dlwsfci_cplsfc dnwd lw flux at time step AOI cpl
dswsfci_cplsfc dnwd sw flux at time step AOI cpl
dnirbmi_cplsfc nir beam dnwd sw flx rad at time step
dnirdfi_cplsfc nir diff dnwd sw flx rad at time step
dvisbmi_cplsfc uv+vis beam dnwd sw flx at time step
dvisdfi_cplsfc uv+vis diff dnwd sw flx at time step
nlwsfci_cplnet sfc dnwd lw flux at time step AOI cpl
nswsfci_cplnet sfc dnwd sw flux at time step AOI cpl
nnirbmi_cplnet nir beam dnwd sw flx rad at time step
nnirdfi_cplnet nir diff dnwd sw flx rad at time step
nvisbmi_cplnet uv+vis beam dnwd sw flx at time step
nvisdfi_cplnet uv+vis diff dnwd sw flx at time step
t2mi_cplT2m at time step AOI cpl
q2mi_cplQ2m at time step AOI cpl
u10mi_cplU10m at time step AOI cpl
v10mi_cplV10m at time step AOI cpl
tseai_cplsfc temp at time step AOI cpl
psurfi_cplsfc pressure at time step AOI cpl

General Algorithm

  1. Prepare input variables for calling individual parameterizations.
  2. Using a two-iteration loop, calculate the state variable tendencies for the surface layer.
  3. Calculate the state variable tendencies due to the PBL (vertical diffusion) scheme.
  4. Calculate the state variable tendencies due to orographic gravity wave drag and Rayleigh damping.
  5. Apply tendencies to the state variables calculated so far:
    • for temperature: radiation, surface, PBL, oro. GWD, Rayleigh damping
    • for momentum: surface, PBL, oro. GWD, Rayleigh damping
    • for water vapor: surface, PBL
  6. Calculate and apply the tendency of ozone.
  7. Prepare input variables for physics routines that update the state variables within their subroutines.
  8. If SHOC is active and is supposed to be called before convection, call it and update the state variables within.
  9. Calculate and apply the state variable tendencies (within the subroutine) due to deep convection.
  10. Calculate the state variable tendencies due to convective gravity wave drag and apply them afterwards.
  11. Calculate and apply the state variable tendencies (within the subroutine) due to shallow convection.
  12. If SHOC is active and is supposed to be called after convection, call it and update the state variables within.
  13. Prepare for microphysics call by calculating preliminary variables.
  14. If necessary, call the moist convective adjustment subroutine and update the state temperature and moisture variable within.
  15. Calculate and apply the state variable tendencies (within the subroutine) due to microphysics.
  16. Determine the precipitation type and update land surface properties if necessary.
  17. Fill the output variables from the local variables as necessary and deallocate allocatable arrays.

Detailed Algorithm

Prepare input variables for calling individual parameterizations.

Before calling any parameterizations, there is a section at the beginning of the subroutine for preparing input arguments to the various schemes based on general input to the driver and initializing variables used throughout the driver.

  • General initialization:
    • set a flag for running in debug mode and the horizontal index of the column to print
    • calculate the pressure at layer centers, the exner function at layer centers and interfaces, geopotential at layer centers and interfaces, and the layer-centered pressure difference
    • calculate the ratio of dynamics time step to physics time step for applying tendencies
    • initialize local tendency arrays to zero
  • Radiation:
    • adjust radiative fluxes and heating rates to the shorter physics time step (from the longer radiation time step), unless idealized physics is true (lsidea) where radiative heating rates are set to 0
    • compute diagnostics from the radiation scheme needed for other schemes (e.g., downward longwave flux absorbed by the surface)
    • accumulate the upward and downward longwave fluxes at the surface
  • Surface:
    • set NOAH and OSU scheme variables from gbphys input arguments and initialize local soil moisture variables
    • set local sea ice variables from gbphys arguments
    • set up A/O/I coupling variables from gbphys arguments
  • PBL:
    • set the number of tracers that are diffused vertically
  • SHOC:
    • determine the index of TKE (ntk) in the convectively transported tracer array (clw)
    • allocate precipitation mixing ratio cloud droplet number concentration arrays
  • Deep Convection:
    • determine which tracers in the tracer input array undergo convective transport (valid only for the RAS and Chikira-Sugiyama schemes) and allocate a local convective transported tracer array (clw)
    • apply an adjustment to the tracers from the dynamics
    • calculate horizontal grid-related parameters needed for some parameterizations
    • calculate the maxiumum cloud base updraft speed for the Chikira-Sugiyama scheme
    • allocate array for cloud water and cloud cover (for non-RAS and non-Chikira-Sugiyama deep convective schemes)
  • Shallow Convection:
    • when using the Tiedtke shallow convection scheme with the stratus modifications, find the lowest model level where a temperature inversion exists in the absence of CTEI
  • Microphysics:
    • for the Morrison (MGB) scheme, calculate 'FRLAND' if the grid point is over land
    • allocate arrays associated with the Morrison scheme
    • assign the local critical relative humidity variables from the gbphys arguments
  • Gravity Wave Drag:
    • calculate the deep convective cloud fraction at cloud top for the convective GWD scheme

Using a two-iteration loop, calculate the state variable tendencies for the surface layer.

  • Each iteration of the loop calls the following:
    • 'sfc_diff' to calculate surface exchange coefficients and near-surface wind
    • surface energy balances routines are called regardless of surface type; the surface type is checked within each to determine whether the routine is "active"
    • for the surface energy balance over the ocean, call 'sfc_nst' if NSST is on, otherwise, call 'sfc_ocean'
    • for the surface energy balance over the land, call 'sfc_drv' for the NOAH model and 'sfc_land' for the OSU model
    • for the surface energy balance over sea ice, call sfc_sice; if A/O/I coupling, call sfc_cice
  • The initial iteration has flag_guess = F unless wind < 2 m/s; flag_iter = T
  • After the initial iteration, flag_guess = F and flag_iter = F (unless wind < 2 m/s and over a land surface or an ocean surface with NSST on)
  • The following actions are performed after the iteration to calculate surface energy balance:
    • set surface output variables from their local values
    • call 'sfc_diag' to calculate state variable values at 2 and 10 m as appropriate from near-surface model levels and the surface exchange coefficients
    • if A/O/I coupling, set coupling variables from local variables and calculate the open water albedo
    • finally, accumulate surface-related diagnostics and calculate the max/min values of T and q at 2 m height.

Calculate the state variable tendencies due to the PBL (vertical diffusion) scheme.

  • Call the vertical diffusion scheme (PBL) based on the following logical flags: do_shoc, hybedmf, old_monin, mstrat
    • the PBL scheme is expected to return tendencies of the state variables
  • If A/O/I coupling and the surface is sea ice, overwrite some surface-related variables to their states before PBL was called
  • For diagnostics, do the following:
    • accumulate surface state variable tendencies and set the instantaneous values for output
    • accumulate the temperature tendency due to the PBL scheme in dt3dt(:,:,3), subtracting out the radiative heating rate if necessary
    • accumulate the u, v tendencies due to the PBL in du3dt(:,:,1:2) and dv3dt(:,:,1:2)
    • accumulate the water vapor tendency due to the PBL in dq3dt(:,:,1)
    • accumulate the ozone tendency in dq3dt(:,:,5)

Calculate the state variable tendencies due to orographic gravity wave drag and Rayleigh damping.

  • Based on the variable nmtvr, unpack orographic gravity wave varibles from the hprime array
  • Call 'gwdps' to calculate tendencies of u, v, T, and surface stress
  • Accumulate gravity wave drag surface stresses.
  • Accumulate change in u, v, and T due to oro. gravity wave drag in du3dt(:,:,2), dv3dt(:,:,2), and dt3dt(:,:,2)
  • Call 'rayleigh_damp' to calculate tendencies to u, v, and T due to Rayleigh friction

Apply tendencies to the state variables calculated so far.

Calculate and apply the tendency of ozone.

  • Call the convective adjustment scheme for IDEA
  • Call 'ozphys_2015' or 'ozphys' depending on the value of pl_coeff, updating the ozone tracer within and outputing the tendency of ozone in dq3dt(:,:,6)
  • Call 'h20phys' if necessary ("adaptation of NRL H20 phys for stratosphere and mesophere")

Prepare input variables for physics routines that update the state variables within their subroutines.

  • If diagnostics is active, save the updated values of the state variables in 'dudt', 'dvdt', 'dTdt', and 'dqdt(:,:,1)'
  • Call 'get_phi' to calculate geopotential from p, q, T
  • Initialize the cloud water and ice portions of the convectively transported tracer array (clw) and (if the deep convective scheme is not RAS or Chikira-Sugiyama) the convective cloud water and cloud cover.
  • If the dep convective scheme is RAS or Chikira-Sugiyama, fill the 'clw' array with tracers to be transported by convection
  • Initialize 'ktop' and 'kbot' (to be modified by all convective schemes except Chikira-Sugiyama)
  • Prepare for microphysics call (if cloud condensate is in the input tracer array):
    • all schemes: calculate critical relative humidity
    • Morrison et al. scheme (occasionally denoted MGB) (when ncld==2): set clw(:,:,1) to cloud ice and clw(:,:,2) to cloud liquid water
    • Ferrier scheme (num_p3d==3): set the cloud water variable and separate hydrometeors into cloud ice, cloud water, and rain; set clw(:,:,1) to cloud ice and clw(:,:,2) to cloud liquid water
    • Zhao-Carr scheme (num_p3d==4): calculate autoconversion coefficients from input constants and grid info; set set clw(:,:,1) to cloud liquid water
    • otherwise: set autoconversion parameters like in Zhao-Carr and set critical relative humidity to 1

If SHOC is active and is supposed to be called before convection, call it and update the state variables within.

  • Prior to calling SHOC, prepare some microphysics variables:
    • if Morrison et al. scheme: set 'skip_macro', fill clw(:,:,1,2) with cloud ice, liquid from the tracer array, and fill cloud droplet number concentration arrays from the input tracer array
    • if Zhao-Carr scheme: initialize precip. mixing ratios to 0, fill clw(:,:,1,2) with cloud ice, liquid from the tracer array (as a function of temperature)
  • Call 'shoc' (modifies state variables within the subroutine)
  • Afterward, set updated cloud number concentrations in the tracer array from the updated 'ncpl' and 'ncpi'

Calculate and apply the state variable tendencies (within the subroutine) due to deep convection.

  • Call deep convective scheme according to the parameter 'imfdeepcnv', 'ras', and 'cscnv'.
    • if imfdeepcnv == 0, 1, or 2, no special processing is needed
    • if the Chikira-Sugiyama scheme (cscnv), convert rain rate to accumulated rain (rain1)
    • if RAS, initialize 'ccwfac', 'dlqfac', 'lmh', and revap before the call to 'rascnv'
  • Zero out 'cld1d' (cloud work function calculated in non-RAS, non-Chikira-Sugiyama schemes)
  • If 'lgocart', accumulate convective mass fluxes and convective cloud water
  • Update tracers in the tracer array (gq0) due to convective transport (RAS, CS only) from the 'clw' array
  • Calculate accumulated surface convective precip. for this physics time step (rainc)
  • If necessary, accumulate cloud work function, convective precipitation, and convective mass fluxes; accumulate dt3dt(:,:,4), dq3dt(:,:,2), du3dt(:,:,3), dv3dt(:,:,3) as change in state variables due to deep convection
  • If 'lgocart', repeat the accumulation of convective mass fluxes and convective cloud water; save convective tendency for water vapor in 'dqdt_v'
  • If PDF-based clouds are active and Zhao-Carr microphysics, save convective cloud cover and water in 'phy_f3d' array
    • otherwise, if non-PDF-based clouds and the "convective cloudiness enhancement" is active, save convective cloud water in 'phy_f3d' array

Calculate the state variable tendencies due to convective gravity wave drag and apply them afterwards.

  • Calculate the average deep convective heating rate in the column to pass into 'gwdc'
  • Call 'gwdc' to calculate tendencies of u, v due to convective GWD
  • For diagnostics, accumulate the vertically-integrated change in u, v due to conv. GWD; accumulate change in u, v, due to conv. GWD in du3dt(:,:,4) and dv3dt(:,:,4)
  • Calculate updated values of u, v, T using conv. GWD tendencies

Calculate and apply the state variable tendencies (within the subroutine) due to shallow convection.

  • If diagnostics are active, set 'dtdt' and 'dqdt' to updated values of T and q before shallow convection
  • If SHOC is not active, do the following:
    • for the mass-flux shallow convection scheme (imfdeepcnv == 1), call 'shalcnv'
    • for the scale- and aerosol-aware scheme (imfshalcnv == 2), call 'mfshalcnv'
    • for either of the first two schemes, perform the following after the call:
      • if Zhao-Carr microphysics with PDF-based clouds, save convective cloud water an cover in 'phy_f3d'
      • if non-PDF-based clouds and convective cloudiness enhancement is active, save convective cloud water in 'phy_f3d'
      • calculate shallow convective precip. and add it to convective precip; accumulate convective precip.
    • for the Tiedtke scheme (imfshalcnv == 0), find the top level where shallow convection must stratosphere
      • if using Moorthi's approach to stratus, call 'shalcv'
      • otherwise, call 'shalcvt3'
    • for diagnostics, accumulate the change in water vapor due to shallow convection and save in dqdt_v if 'lgocart';
      • save the change in T and q due to shallow convection in dt3dt(:,:,5) and dq3dt(:,:,3); reset dtdt and dqdt to the updated values of T, q after shallow Convection
      • if 'clw' is not partitioned into ice/water, set 'clw(ice)' to zero
  • If SHOC is active (and shocaftcnv)
    • if Morrison et al. scheme: set 'skip_macro' and fill cloud droplet number concentration arrays from the input tracer array
    • initialize precip. mixing ratios to 0
    • call 'shoc' (modifies state variables within the subroutine)
    • afterward, set updated cloud number concentrations in the tracer array from the updated 'ncpl' and 'ncpi'

Prepare for microphysics call by calculating preliminary variables.

  • For Morrison et al. microphysics, set cloud water and ice arrays to the convecitvely transported values
  • For Ferrier microphysics, combine convectively transported cloud water and ice with column rain and save in cloud water array
    • calculate and save ice fraction and rain fraction in phy_f3d(1),(2)
  • For Zhao-Carr, combine convectively transported cloud water and ice into the cloud water array
  • Otherwise, combine convectively transported cloud water and ice into the convectively transported cloud water
  • Call 'cnvc90'; a "legacy routine which determines convective clouds"; outputs 'acv','acvb','acvt','cv','cvb','cvt'

If necessary, call the moist convective adjustment subroutine and update the state temperature and moisture variable within.

  • Updates T, q, 'rain1', cloud water array
  • Accumulate convective precip
  • For diagnostics, accumulate the change in T, q due to moist convective adjustment; reset 'dtdt' and 'dqdt' to updated T, q before call to microphysics

Calculate and apply the state variable tendencies (within the subroutine) due to microphysics.

  • If 'lgocart', calculate instantaneous moisture tendency in dqdt_v
  • If no cloud microphysics (ncld == 0), call 'lrgscl' to update T, q and output large scale precipitation and cloud water
  • Otherwise, a more advanced microphysics scheme is called (which scheme depends on values of 'num_p3d','do_shoc',and 'ncld')
  • Ferrier scheme (num_p3d == 3):
    • calculate droplet number concentration and minimum large ice fraction
    • call 'gsmdrive' (modifies T, q, cloud water, 'f_ice', 'f_rain', 'f_rimef', 'rain1')
  • Zhao-Carr-Sundqvist scheme (num_p3d == 4):
    • if non-PDF-based clouds:
      • if 'do_shoc', call 'precpd_shoc' (precpd modified for SHOC)
      • else, call 'gscond' (grid-scale condensation/evaporation); updates water vapor, cloud water, temperature
        • call 'precpd'; updates water vapor, cloud water, temperature and outputs precip., snow ratio, and rain water path
    • for PDF-based clouds:
      • call 'gscondp' followed by 'precpdp' (similar arguments to gscond, precpd above)
  • Morrison et al. scheme (ncld = 2):
    • if 'do_shoc', set clw(1),(2) from updated values; set phy_f3d(:,:,1) from phy_f3d(:,:,ntot3d-2)
    • else, set clw(1),(2) from updated values; set phy_f3d(:,:,1) to cloud cover from previous time step + convective cloud water from convective scheme
    • call 'm_micro_driver'; updates water vapor, temperature, droplet number concentrations, cloud cover
  • Combine large scale and convective precip.
  • For diagnostics, accumulate total surface precipitation and accumulate change in T and q due to microphysics in dt3dt(:,:,6) and dq3dt(:,:,4)

Determine the precipitation type and update land surface properties if necessary.

  • If 'cal_pre', diagnose the surface precipitation type
    • call 'calpreciptype'; set snow flag to 1 if snow or sleet, 0 otherwise
  • For rain/snow decision, calculate temperature at 850 hPa ( \(T_{850}\))
    • If not 'cal_pre', set snow flag to 1 if \(T_{850}\) is below freezing
  • For coupling, accumulate rain if \(T_{850}\) is above freezing, otherwise accumulate snow
  • If using the OSU land model, accumulate surface snow depth if \(T_{850}\) is below freezing and not over an ocean surface
    • call 'progt2' (canopy and soil moisture?) and set the soil liquid water equal to soil total water
    • if 'lgocart', call 'sfc_diag' to update near-surface state variables (this "allows gocart to use filtered wind fields")
  • If necessary (lssav), update the 2m max/min values of T and q
  • If necessary (lssav), accumulate total runoff and surface runoff.

Fill the output variables from the local variables as necessary and deallocate allocatable arrays.

  • Set global sea ice thickness and concentration as well as the temperature of the sea ice
  • Set global soil moisture variables
  • Calculate precipitable water and water vapor mass change due to all physics for the column
  • Deallocate arrays for SHOC scheme, deep convective scheme, and Morrison et al. microphysics

Definition at line 802 of file gbphys.f.

References physcons::con_cp, physcons::con_g, physcons::con_hfus, physcons::con_hvap, physcons::con_pi, physcons::con_rd, physcons::con_rerth, physcons::con_rv, gscond(), gwdc(), gwdps(), moninedmf(), precpd(), sascnvn(), and shalcnv().

Here is the call graph for this function: