GFS Operational Physics Documentation  Revision: 81451

This subroutine is the parameterization of convective gravity wave drag based on the theory given by Chun and Baik (1998) [8] modified for implementation into the GFS/CFS by Ake Johansson(Aug 2005). More...

Detailed Description

This subroutine is the parameterization of convective gravity wave drag based on the theory given by Chun and Baik (1998) [8] modified for implementation into the GFS/CFS by Ake Johansson(Aug 2005).

Parameterizing subgrid-scale convection-induced gravity wave momentum flux for use in large-scale models inherently requires some information from subgrid-scale cumulus parameterization. The methodology for parameterizing the zonal momentum flux induced by thermal forcing can be summarized as follows. From the cloud-base to cloud-top height, the effect of the momentum flux induced by subgrid-scale diabatic forcing is not considered because subgrid-scale cumulus convection in large-scale models is only activated in a conditionally unstable atmosphere. Below the cloud base, the momentum flux is also not considered because of the wave momentum cancellation. At the cloud top, the momentum flux is obtained by eq.(18) and (19) in Chun and Baik (1998) [8]. Above the cloud top, there are two ways to construct the momentum flux profile. One way is to specify a vertical structure of the momentum flux normalized by the cloud-top value, similar to what has been done for mountain drag parameterization. The other way is to apply the wave saturation hypothesis in order to find wave breaking levels in terms of the Richardon number criterion using the nonlinearity factor of thermally induced waves.

Collaboration diagram for Convective Gravity Wave Drag:
subroutine gwdc (im, ix, iy, km, lat, u1, v1, t1, q1, pmid1, pint1, dpmid1, qmax, ktop, kbot, kcnv, cldf, grav, cp, rd, fv, dlength, lprnt, ipr, fhour, utgwc, vtgwc, tauctx, taucty)
 

Function/Subroutine Documentation

subroutine gwdc ( integer  im,
integer  ix,
integer  iy,
integer  km,
integer  lat,
real(kind=kind_phys), dimension(ix,km)  u1,
real(kind=kind_phys), dimension(ix,km)  v1,
real(kind=kind_phys), dimension(ix,km)  t1,
real(kind=kind_phys), dimension(ix,km)  q1,
real(kind=kind_phys), dimension(ix,km)  pmid1,
real(kind=kind_phys), dimension(ix,km+1)  pint1,
real(kind=kind_phys), dimension(ix,km)  dpmid1,
real(kind=kind_phys), dimension(ix)  qmax,
integer, dimension(im)  ktop,
integer, dimension(im)  kbot,
integer, dimension(im)  kcnv,
real(kind=kind_phys), dimension(im)  cldf,
real(kind=kind_phys)  grav,
real(kind=kind_phys)  cp,
real(kind=kind_phys)  rd,
real(kind=kind_phys)  fv,
real(kind=kind_phys), dimension(im)  dlength,
logical  lprnt,
integer  ipr,
real(kind=kind_phys)  fhour,
real(kind=kind_phys), dimension(iy,km)  utgwc,
real(kind=kind_phys), dimension(iy,km)  vtgwc,
real(kind=kind_phys), dimension(ix)  tauctx,
real(kind=kind_phys), dimension(ix)  taucty 
)
Parameters
[in]IMhorizontal number of used pts
[in]IXhorizontal dimension
[in]IYhorizontal number of used pts
[in]KMvertical layer dimension
[in]LATlatitude index - used for debug prints
[in]U1u component of layer wind
[in]V1v component of layer wind
[in]T1layer mean temperature (K)
[in]Q1layer mean tracer concentration
[in]PMID1mean layer pressure
[in]PINT1pressure at layer interfaces
[in]DPMID1mean layer delta p
[in]QMAXmaximum convective heating rate (k/s) in a horizontal grid point calculated from cumulus parameterization
[in]KTOPvertical level index for cloud top
[in]KBOTvertical level index for cloud bottom
[in]KCNV(0,1) dependent on whether convection occur or not
[in]CLDFdeep convective cloud fraction at the cloud top
[in]GRAVgravity defined in physcon
[in]CPspecific heat at constant pressure defined in physcon
[in]RDgas constant air defined in physcon
[in]FVcon_fvirt = con_rv/con_rd-1
[in]DLENGTHgrid spacing in the direction of basic wind at the cloud top
[in]LPRNTlogical print flag
[in]IPRcheck print point for debugging
[in]FHOURforecast hour
[out]UTGWCzonal wind tendency
[out]VTGWCmeridional wind tendency
[out]TAUCTXwave stress at the cloud top projected in the east
[out]TAUCTYwave stress at the cloud top projected in the north

General Algorithm

  1. Create local arrays with reversed vertical indices and Initialize local variables
    • The top interface temperature, density, and Brunt-Vaisala frequencies ( \(N\)) are calculated assuming an isothermal atmosphere above the top mid level.
    • The bottom interface temperature, density, and Brunt-Vaisala frequencies ( \(N\)) are calculated assuming an isothermal atmosphere below the bottom mid level.
    • The interface level temperature, density, and Brunt-Vaisala frequencies ( \(N\)) are calculated based on linear interpolation of temperature in ln(P).
    • The mid-level Brunt-Vaisala frequencies ( \(N\)) are calculated based on interpolated interface temperatures.
  2. Calculate the cloud top wind components and speed. Here, ucltop, vcltop, and windcltop are wind components and wind speed at mid-level cloud top index
  3. Calculate the basic state wind projected in the direction of the cloud top wind at mid level and interface level (U, UI), where:
    U : Basic-wind speed profile. Basic-wind is parallel to the wind vector at the cloud top level. (mid level)
    UI: Basic-wind speed profile. Basic-wind is parallel to the wind vector at the cloud top level. ( interface level )
  4. Calculate the local Richardson number

    \[ Ri=N^2/\eta^2 \]

    where \(\eta\) is the vertical shear ( \(dU/dz\)).
  5. Calculate the gravity wave stress at the interface level cloud top.
    • Wave stress at cloud top is calculated when the atmosphere is dynamically stable at the cloud top
    • The cloud top wave stress and nonlinear parameter are calculated using density, temperature, and wind that are defined at mid level just below the interface level in which cloud top wave stress is defined. The parameter \(\mu\) is the nonlinearity factor of thermally induced internal gravity waves defined by eq.(17) in Chun and Baik, 1998 [8]

      \[ \mu=\frac{gQ_{0}a_{1}}{c_{p}T_{0}NU^{2}} \]

      where \(Q_{0}\) is the maximum deep convective heating rate in a horizontal grid point calculated from cumulus parameterization. \(a_{1}\) is the half-width of the forcing function. \(g\) is gravity. \(c_{p}\) is specific heat at constant pressure. \(T_{0}\) is the layer mean temperature (T1). As eqs.(18) and (19) [8], the zonal momentum flux is given by

      \[ \tau_{x}=-[\rho U^{3}/(N\triangle x)]G(\mu) \]

      where

      \[ G(\mu)=c_{1}c_2^2 \mu^{2} \]

      wher \(\rho\) is the local density. The tunable parameter \(c_1\) is related to the horizontal structure of thermal forcing. The tunable parameter \(c_2\) is related to the basic-state wind and stability and the bottom and top heights of thermal forcing. If the atmosphere is dynamically unstable at the cloud top, the convective GWD calculation is skipped at that grid point.
    • The stress is capped at tauctmax = - 5 \(n/m^2\) in order to prevent numerical instability.
  6. Calculate the minimum Richardson number including both the basic-state condition and wave effects.

    \[ Ri_{min}\approx\frac{Ri(1-\mu|c_{2}|)}{(1+\mu Ri^{1/2}|c_{2}|)^{2}} \]

  7. Calculate the gravity wave stress profile using the wave saturation hypothesis of Lindzen (1981) [36].
    • When \(Ri_{min}\) is set to 1/4 based on Lindzen's (1981) [36] saturation hypothesis, the nonlinearity factor for wave saturation can be derived by

      \[ \mu_{s}=\frac{1}{|c_{2}|}[2\sqrt{2+\frac{1}{\sqrt{Ri}}}-(2+\frac{1}{\sqrt{Ri}})] \]

      Then the saturation zonal momentum flux is given by

      \[ \tau_{s}=-[\rho U^{3}/(N\triangle x)]c_{1}c_2^2\mu_s^2 \]

    • If the minimum \(R_{i}\) at interface cloud top is less than or equal to 1/4, the convective GWD calculation is skipped at that grid point.
    • As an upper boundary condition, upward propagation of gravity wave energy is permitted.
  8. Calculate wind tendency in direction to the wind vector,zonal wind tendency and meridional wind tendency above the cloud top level due to convectively generated gravity waves.
  9. Convert back local convective GWD tendency arrays to GFS model vertical indices.

Definition at line 76 of file gwdc.f.

Referenced by gbphys().

Here is the caller graph for this function: