This subroutine is the parameterization of convective gravity wave drag based on the theory given by [15] modified for implementation into the GFS/CFS by Ake Johansson(Aug 2005). More...
local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
---|---|---|---|---|---|---|---|---|
im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | in | F | |
ix | horizontal_dimension | horizontal dimension | count | 0 | integer | in | F | |
km | vertical_dimension | number of vertical layers | count | 0 | integer | in | F | |
lat | latitude_index_in_debug_printouts | latitude index in debug printouts | index | 0 | integer | in | F | |
u1 | x_wind | zonal wind | m s-1 | 2 | real | kind_phys | in | F |
v1 | y_wind | meridional wind | m s-1 | 2 | real | kind_phys | in | F |
t1 | air_temperature | mid-layer temperature | K | 2 | real | kind_phys | in | F |
q1 | water_vapor_specific_humidity | mid-layer specific humidity of water vapor | kg kg-1 | 2 | real | kind_phys | in | F |
deltim | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F |
pmid1 | air_pressure | mid-layer pressure | Pa | 2 | real | kind_phys | in | F |
pint1 | air_pressure_at_interface | interface pressure | Pa | 2 | real | kind_phys | in | F |
dpmid1 | air_pressure_difference_between_midlayers | difference between mid-layer pressures | Pa | 2 | real | kind_phys | in | F |
qmax | maximum_column_heating_rate | maximum heating rate in column | K s-1 | 1 | real | kind_phys | in | F |
ktop | vertical_index_at_cloud_top | vertical index at cloud top | index | 1 | integer | in | F | |
kbot | vertical_index_at_cloud_base | vertical index at cloud base | index | 1 | integer | in | F | |
kcnv | flag_deep_convection | flag indicating whether convection occurs in column (0 or 1) | flag | 1 | integer | in | F | |
cldf | cloud_area_fraction | fraction of grid box area in which updrafts occur | frac | 1 | real | kind_phys | in | F |
grav | gravitational_acceleration | gravitational acceleration | m s-2 | 0 | real | kind_phys | in | F |
cp | specific_heat_of_dry_air_at_constant_pressure | specific heat of dry air at constant pressure | J kg-1 K-1 | 0 | real | kind_phys | in | F |
rd | gas_constant_dry_air | ideal gas constant for dry air | J kg-1 K-1 | 0 | real | kind_phys | in | F |
fv | ratio_of_vapor_to_dry_air_gas_constants_minus_one | rv/rd - 1 (rv = ideal gas constant for water vapor) | none | 0 | real | kind_phys | in | F |
pi | pi | ratio of a circle's circumference to its diameter | radians | 0 | real | kind_phys | in | F |
dlength | characteristic_grid_length_scale | representative horizontal length scale of grid box | m | 1 | real | kind_phys | in | F |
lprnt | flag_print | flag for debugging printouts | flag | 0 | logical | in | F | |
ipr | horizontal_index_of_printed_column | horizontal index of column used in debugging printouts | index | 0 | integer | in | F | |
fhour | forecast_time | forecast hour | h | 0 | real | kind_phys | in | F |
utgwc | tendency_of_x_wind_due_to_convective_gravity_wave_drag | zonal wind tendency due to convective gravity wave drag | m s-2 | 2 | real | kind_phys | out | F |
vtgwc | tendency_of_y_wind_due_to_convective_gravity_wave_drag | meridional wind tendency due to convective gravity wave drag | m s-2 | 2 | real | kind_phys | out | F |
tauctx | instantaneous_x_stress_due_to_gravity_wave_drag | zonal stress at cloud top due to convective gravity wave drag | Pa | 1 | real | kind_phys | out | F |
taucty | instantaneous_y_stress_due_to_gravity_wave_drag | meridional stress at cloud top due to convective gravity wave drag | Pa | 1 | real | kind_phys | out | F |
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 |
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.
The formulation of the momentum flux at the cloud top that can be broken in the upper atmosphere is similar to that of the surface drag of mountain waves by using the nonlinearity factor of thermally induced waves that is analogous to the inverse Frounde number in mountain waves. A vertical profiles of redistributed momentum flux above the cloud top can be approximated either by specifying a functional form or by using the wave saturation hypothesis in terms of the Richardson number criterion. The formulation of the minimum Richardson number including wave impact is similar to that in the mountain wave case.
Functions/Subroutines | |
subroutine | gwdc::gwdc_run (im, ix, km, lat, u1, v1, t1, q1, deltim, pmid1, pint1, dpmid1, qmax, ktop, kbot, kcnv, cldf, grav, cp, rd, fv, pi, dlength, lprnt, ipr, fhour, utgwc, vtgwc, tauctx, taucty, errmsg, errflg) |
subroutine gwdc::gwdc_run | ( | integer, intent(in) | im, |
integer, intent(in) | ix, | ||
integer, intent(in) | km, | ||
integer, intent(in) | lat, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | u1, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | v1, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | t1, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | q1, | ||
real(kind=kind_phys), intent(in) | deltim, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | pmid1, | ||
real(kind=kind_phys), dimension(ix,km+1), intent(in) | pint1, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | dpmid1, | ||
real(kind=kind_phys), dimension(im), intent(in) | qmax, | ||
integer, dimension(im), intent(in) | ktop, | ||
integer, dimension(im), intent(in) | kbot, | ||
integer, dimension(im), intent(in) | kcnv, | ||
real(kind=kind_phys), dimension(im), intent(in) | cldf, | ||
real(kind=kind_phys), intent(in) | grav, | ||
real(kind=kind_phys), intent(in) | cp, | ||
real(kind=kind_phys), intent(in) | rd, | ||
real(kind=kind_phys), intent(in) | fv, | ||
real(kind=kind_phys), intent(in) | pi, | ||
real(kind=kind_phys), dimension(im), intent(in) | dlength, | ||
logical, intent(in) | lprnt, | ||
integer, intent(in) | ipr, | ||
real(kind=kind_phys), intent(in) | fhour, | ||
real(kind=kind_phys), dimension(ix,km), intent(out) | utgwc, | ||
real(kind=kind_phys), dimension(ix,km), intent(out) | vtgwc, | ||
real(kind=kind_phys), dimension(im), intent(out) | tauctx, | ||
real(kind=kind_phys), dimension(im), intent(out) | taucty, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg | ||
) |
\[ Ri=N^2/\eta^2 \]
where \(\eta\) is the vertical shear ( \(dU/dz\)).\[ \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) [15], 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.\[ Ri_{min}\approx\frac{Ri(1-\mu|c_{2}|)}{(1+\mu Ri^{1/2}|c_{2}|)^{2}} \]
\[ \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 \]