subroutine drag_suite::drag_suite_run | ( | integer, intent(in) | im, |
integer, intent(in) | km, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | dvdt, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | dudt, | ||
real(kind=kind_phys), dimension(:,:), intent(inout) | dtdt, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | u1, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | v1, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | t1, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | q1, | ||
integer, dimension(:), intent(in) | kpbl, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prsi, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | del, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prsl, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | prslk, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | phii, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | phil, | ||
real(kind=kind_phys), intent(in) | deltim, | ||
integer, intent(in) | kdt, | ||
real(kind=kind_phys), dimension(:), intent(in) | var, | ||
real(kind=kind_phys), dimension(:), intent(in) | oc1, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | oa4, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | ol4, | ||
real(kind=kind_phys), dimension(:), intent(in), optional | varss, | ||
real(kind=kind_phys), dimension(:), intent(in), optional | oc1ss, | ||
real(kind=kind_phys), dimension(:,:), intent(in), optional | oa4ss, | ||
real(kind=kind_phys), dimension(:,:), intent(in), optional | ol4ss, | ||
real(kind=kind_phys), dimension(:), intent(in) | theta, | ||
real(kind=kind_phys), dimension(:), intent(in) | sigma, | ||
real(kind=kind_phys), dimension(:), intent(in) | gamma, | ||
real(kind=kind_phys), dimension(:), intent(in) | elvmax, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtaux2d_ms, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtauy2d_ms, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtaux2d_bl, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtauy2d_bl, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtaux2d_ss, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtauy2d_ss, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtaux2d_fd, | ||
real(kind=kind_phys), dimension(:,:), intent(inout), optional | dtauy2d_fd, | ||
real(kind=kind_phys), dimension(:), intent(inout) | dusfc, | ||
real(kind=kind_phys), dimension(:), intent(inout) | dvsfc, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dusfc_ms, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dvsfc_ms, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dusfc_bl, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dvsfc_bl, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dusfc_ss, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dvsfc_ss, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dusfc_fd, | ||
real(kind=kind_phys), dimension(:), intent(inout), optional | dvsfc_fd, | ||
real(kind=kind_phys), dimension(:), intent(in) | slmsk, | ||
real(kind=kind_phys), dimension(:), intent(in) | br1, | ||
real(kind=kind_phys), dimension(:), intent(in) | hpbl, | ||
real(kind=kind_phys), intent(in) | g, | ||
real(kind=kind_phys), intent(in) | cp, | ||
real(kind=kind_phys), intent(in) | rd, | ||
real(kind=kind_phys), intent(in) | rv, | ||
real(kind=kind_phys), intent(in) | fv, | ||
real(kind=kind_phys), intent(in) | pi, | ||
integer, intent(in) | imx, | ||
real(kind=kind_phys), dimension(:), intent(in) | cdmbgwd, | ||
real(kind=kind_phys), intent(in) | alpha_fd, | ||
integer, intent(in) | me, | ||
integer, intent(in) | master, | ||
logical, intent(in) | lprnt, | ||
integer, intent(in) | ipr, | ||
real(kind=kind_phys), dimension(:), intent(inout) | rdxzb, | ||
real(kind=kind_phys), dimension(:), intent(in) | dx, | ||
integer, intent(in) | gwd_opt, | ||
logical, intent(in) | do_gsl_drag_ls_bl, | ||
logical, intent(in) | do_gsl_drag_ss, | ||
logical, intent(in) | do_gsl_drag_tofd, | ||
real(kind=kind_phys), dimension(:,:,:), intent(inout), optional | dtend, | ||
integer, dimension(:,:), intent(in) | dtidx, | ||
integer, intent(in) | index_of_process_orographic_gwd, | ||
integer, intent(in) | index_of_temperature, | ||
integer, intent(in) | index_of_x_wind, | ||
integer, intent(in) | index_of_y_wind, | ||
logical, intent(in) | ldiag3d, | ||
logical, intent(in) | ldiag_ugwp, | ||
logical, intent(in) | ugwp_seq_update, | ||
real(kind=kind_phys), dimension(:,:), intent(in), optional | spp_wts_gwd, | ||
integer, intent(in) | spp_gwd, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg ) |
The time tendencies of zonal and meridional wind are altered to include the effect of mountain induced gravity wave drag from subgrid scale orography including convective breaking, shear breaking and the presence of critical levels.
local_name | standard_name | long_name | units | type | dimensions | kind | intent |
---|---|---|---|---|---|---|---|
im | horizontal_loop_extent | horizontal loop extent | count | integer | () | in | |
km | vertical_layer_dimension | number of vertical layers | count | integer | () | in | |
dvdt | process_split_cumulative_tendency_of_y_wind | meridional wind tendency due to model physics | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dudt | process_split_cumulative_tendency_of_x_wind | zonal wind tendency due to model physics | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtdt | process_split_cumulative_tendency_of_air_temperature | air temperature tendency due to model physics | K s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
u1 | x_wind | zonal wind | m s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
v1 | y_wind | meridional wind | m s-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
t1 | air_temperature | mid-layer temperature | K | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
q1 | specific_humidity | mid-layer specific humidity of water vapor | kg kg-1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
kpbl | vertical_index_at_top_of_atmosphere_boundary_layer | vertical index at top atmospheric boundary layer | index | integer | (ccpp_constant_one:horizontal_loop_extent) | in | |
prsi | air_pressure_at_interface | interface pressure | Pa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_interface_dimension) | kind_phys | in |
del | air_pressure_difference_between_midlayers | difference between mid-layer pressures | Pa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
prsl | air_pressure | mid-layer pressure | Pa | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
prslk | dimensionless_exner_function | mid-layer Exner function | none | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
phii | geopotential_at_interface | interface geopotential | m2 s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_interface_dimension) | kind_phys | in |
phil | geopotential | mid-layer geopotential | m2 s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
deltim | timestep_for_physics | physics time step | s | real | () | kind_phys | in |
kdt | index_of_timestep | current time step index | index | integer | () | in | |
var | standard_deviation_of_subgrid_orography | standard deviation of subgrid height_above_mean_sea_level | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
oc1 | convexity_of_subgrid_orography | convexity of subgrid height_above_mean_sea_level | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
oa4 | asymmetry_of_subgrid_orography | asymmetry of subgrid height_above_mean_sea_level | none | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:4) | kind_phys | in |
ol4 | fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height | horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height | frac | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:4) | kind_phys | in |
varss | standard_deviation_of_subgrid_orography_small_scale | standard deviation of subgrid height_above_mean_sea_level small scale | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
oc1ss | convexity_of_subgrid_orography_small_scale | convexity of subgrid height_above_mean_sea_level small scale | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
oa4ss | asymmetry_of_subgrid_orography_small_scale | asymmetry of subgrid height_above_mean_sea_level small scale | none | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:4) | kind_phys | in |
ol4ss | fraction_of_grid_box_with_subgrid_orography_higher_than_critical_height_small_scale | horizontal fraction of grid box covered by subgrid height_above_mean_sea_level higher than critical height small scale | frac | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:4) | kind_phys | in |
theta | angle_from_east_of_maximum_subgrid_orographic_variations | angle with respect to east of maximum subgrid orographic variations | degree | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
sigma | slope_of_subgrid_orography | slope of subgrid height_above_mean_sea_level | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
gamma | anisotropy_of_subgrid_orography | anisotropy of subgrid height_above_mean_sea_level | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
elvmax | maximum_subgrid_orography | maximum of subgrid height_above_mean_sea_level | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
dtaux2d_ms | tendency_of_x_wind_due_to_mesoscale_orographic_gravity_wave_drag | x wind tendency from mesoscale gwd | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtauy2d_ms | tendency_of_y_wind_due_to_mesoscale_orographic_gravity_wave_drag | y wind tendency from mesoscale gwd | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtaux2d_bl | tendency_of_x_wind_due_to_blocking_drag | x wind tendency from blocking drag | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtauy2d_bl | tendency_of_y_wind_due_to_blocking_drag | y wind tendency from blocking drag | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtaux2d_ss | tendency_of_x_wind_due_to_small_scale_gravity_wave_drag | x wind tendency from small scale gwd | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtauy2d_ss | tendency_of_y_wind_due_to_small_scale_gravity_wave_drag | y wind tendency from small scale gwd | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtaux2d_fd | tendency_of_x_wind_due_to_form_drag | x wind tendency from form drag | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dtauy2d_fd | tendency_of_y_wind_due_to_form_drag | y wind tendency from form drag | m s-2 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | inout |
dusfc | instantaneous_x_stress_due_to_gravity_wave_drag | zonal surface stress due to orographic gravity wave drag | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dvsfc | instantaneous_y_stress_due_to_gravity_wave_drag | meridional surface stress due to orographic gravity wave drag | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dusfc_ms | vertically_integrated_x_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag | integrated x momentum flux from mesoscale gwd | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dvsfc_ms | vertically_integrated_y_momentum_flux_due_to_mesoscale_orographic_gravity_wave_drag | integrated y momentum flux from mesoscale gwd | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dusfc_bl | vertically_integrated_x_momentum_flux_due_to_blocking_drag | integrated x momentum flux from blocking drag | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dvsfc_bl | vertically_integrated_y_momentum_flux_due_to_blocking_drag | integrated y momentum flux from blocking drag | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dusfc_ss | vertically_integrated_x_momentum_flux_due_to_small_scale_gravity_wave_drag | integrated x momentum flux from small scale gwd | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dvsfc_ss | vertically_integrated_y_momentum_flux_due_to_small_scale_gravity_wave_drag | integrated y momentum flux from small scale gwd | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dusfc_fd | vertically_integrated_x_momentum_flux_due_to_form_drag | integrated x momentum flux from form drag | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dvsfc_fd | vertically_integrated_y_momentum_flux_due_to_form_drag | integrated y momentum flux from form drag | Pa | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
slmsk | area_type | landmask: sea/land/ice=0/1/2 | flag | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
br1 | bulk_richardson_number_at_lowest_model_level | bulk Richardson number at the surface | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
hpbl | atmosphere_boundary_layer_thickness | PBL thickness | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
g | gravitational_acceleration | gravitational acceleration | m s-2 | real | () | kind_phys | in |
cp | specific_heat_of_dry_air_at_constant_pressure | specific heat of dry air at constant pressure | J kg-1 K-1 | real | () | kind_phys | in |
rd | gas_constant_of_dry_air | ideal gas constant for dry air | J kg-1 K-1 | real | () | kind_phys | in |
rv | gas_constant_water_vapor | ideal gas constant for water vapor | J kg-1 K-1 | real | () | kind_phys | in |
fv | ratio_of_vapor_to_dry_air_gas_constants_minus_one | (rv/rd) - 1 (rv = ideal gas constant for water vapor) | none | real | () | kind_phys | in |
pi | pi | ratio of a circle's circumference to its diameter | none | real | () | kind_phys | in |
imx | number_of_equatorial_longitude_points | number of longitude points along the equator | count | integer | () | in | |
cdmbgwd | multiplicative_tunable_parameters_for_mountain_blocking_and_orographic_gravity_wave_drag | multiplic. factors for (1) mountain blocking drag coeff. and (2) ref. level orographic gravity wave drag | none | real | (ccpp_constant_one:4) | kind_phys | in |
me | mpi_rank | rank of the current MPI task | index | integer | () | in | |
master | mpi_root | master MPI-rank | index | integer | () | in | |
lprnt | flag_print | flag for debugging printouts | flag | logical | () | in | |
ipr | horizontal_index_of_printed_column | horizontal index of column used in debugging printouts | index | integer | () | in | |
rdxzb | level_of_dividing_streamline | level of the dividing streamline | none | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | inout |
dx | characteristic_grid_lengthscale | size of the grid cell | m | real | (ccpp_constant_one:horizontal_loop_extent) | kind_phys | in |
gwd_opt | control_for_drag_suite_gravity_wave_drag | flag to choose gwd scheme | flag | integer | () | in | |
do_gsl_drag_ls_bl | do_gsl_drag_suite_mesoscale_orographic_and_blocking_drag | flag to activate GSL drag suite - mesoscale GWD and blocking | flag | logical | () | in | |
do_gsl_drag_ss | do_gsl_drag_suite_small_scale_orographic_drag | flag to activate GSL drag suite - small-scale GWD | flag | logical | () | in | |
do_gsl_drag_tofd | do_gsl_drag_suite_turbulent_orographic_form_drag | flag to activate GSL drag suite - turb orog form drag | flag | logical | () | in | |
dtend | cumulative_change_of_state_variables | diagnostic tendencies for state variables | mixed | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension, ccpp_constant_one:cumulative_change_of_state_variables_outer_index_max) | kind_phys | inout |
dtidx | cumulative_change_of_state_variables_outer_index | index of state-variable and process in last dimension of diagnostic tendencies array AKA cumulative_change_index | index | integer | (ccpp_constant_one:number_of_tracers_plus_one_hundred, ccpp_constant_one:number_of_cumulative_change_processes) | in | |
index_of_process_orographic_gwd | index_of_orographic_gravity_wave_drag_process_in_cumulative_change_index | index of orographic gravity wave drag process in second dimension of array cumulative change index | index | integer | () | in | |
index_of_temperature | index_of_temperature_in_cumulative_change_index | index of temperature in first dimension of array cumulative change index | index | integer | () | in | |
index_of_x_wind | index_of_x_wind_in_cumulative_change_index | index of x-wind in first dimension of array cumulative change index | index | integer | () | in | |
index_of_y_wind | index_of_y_wind_in_cumulative_change_index | index of x-wind in first dimension of array cumulative change index | index | integer | () | in | |
ldiag3d | flag_for_diagnostics_3d | flag for 3d diagnostic fields | flag | logical | () | in | |
ldiag_ugwp | flag_for_unified_gravity_wave_physics_diagnostics | flag for CIRES UGWP Diagnostics | flag | logical | () | in | |
ugwp_seq_update | do_ugwp_sequential_update | flag for ugwp sequential update | flag | logical | () | in | |
spp_wts_gwd | spp_weights_for_gravity_wave_drag_scheme | spp weights for gravity wave drag scheme | 1 | real | (ccpp_constant_one:horizontal_loop_extent, ccpp_constant_one:vertical_layer_dimension) | kind_phys | in |
spp_gwd | control_for_gravity_wave_drag_spp_perturbations | control for gravity wave drag spp perturbations | count | integer | () | in | |
errmsg | ccpp_error_message | error message for error handling in CCPP | none | character | () | len=* | out |
errflg | ccpp_error_code | error code for error handling in CCPP | 1 | integer | () | out |
The NWP model gravity wave drag (GWD) scheme in the GFS has two main components: how the surface stress is computed, and then how that stress is distributed over a vertical column where it may interact with the models momentum. Each of these depends on the large scale environmental atmospheric state and assumptions about the sub-grid scale processes. In Alpert GWD (1987) based on linear, two-dimensional non-rotating, stably stratified flow over a mountain ridge, sub-grid scale gravity wave motions are assumed which propagate away from the mountain. Described in Alpert (1987), the flux measured over a "low level" vertically averaged layer, in the atmosphere defines a base level flux. "Low level" was taken to be the first 1/3 of the troposphere in the 1987 implementation. This choice was meant to encompass a thick low layer for vertical averages of the environmental (large scale) flow quantities. The vertical momentum flux or gravity wave stress in a grid box due to a single mountain is given as in Pierrehumbert, (1987) (PH):
\( \tau = \frac {\rho \: U^{3}\: G(F_{r})} {\Delta X \ N } \)
Definition at line 205 of file drag_suite.F90.