subroutine drag_suite::drag_suite_psl | ( | 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) | varss, | ||
real(kind=kind_phys), dimension(:), intent(in) | oc1ss, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | oa4ss, | ||
real(kind=kind_phys), dimension(:,:), intent(in) | 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(out), optional | dtaux2d_ls, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtauy2d_ls, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtaux2d_bl, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtauy2d_bl, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtaux2d_ss, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtauy2d_ss, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtaux2d_fd, | ||
real(kind=kind_phys), dimension(:,:), intent(out), optional | dtauy2d_fd, | ||
real(kind=kind_phys), dimension(:), intent(out) | dusfc, | ||
real(kind=kind_phys), dimension(:), intent(out) | dvsfc, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dusfc_ls, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dvsfc_ls, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dusfc_bl, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dvsfc_bl, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dusfc_ss, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dvsfc_ss, | ||
real(kind=kind_phys), dimension(:), intent(out), optional | dusfc_fd, | ||
real(kind=kind_phys), dimension(:), intent(out), 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, | ||
integer, dimension(:), intent(in) | vtype, | ||
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(out) | 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), intent(in) | psl_gwd_dx_factor, | ||
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.
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 } \)