subroutine gwdps::gwdps_run | ( | integer, intent(in) | IM, |
integer, intent(in) | KM, | ||
real(kind=kind_phys), dimension(im,km), intent(inout) | A, | ||
real(kind=kind_phys), dimension(im,km), intent(inout) | B, | ||
real(kind=kind_phys), dimension(im,km), intent(inout) | C, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | U1, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | V1, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | T1, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | Q1, | ||
integer, dimension(im), intent(in) | KPBL, | ||
real(kind=kind_phys), dimension(im,km+1), intent(in) | PRSI, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | DEL, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | PRSL, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | PRSLK, | ||
real(kind=kind_phys), dimension(im,km+1), intent(in) | PHII, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | PHIL, | ||
real(kind=kind_phys), intent(in) | DELTIM, | ||
integer, intent(in) | KDT, | ||
real(kind=kind_phys), dimension(im), intent(in) | HPRIME, | ||
real(kind=kind_phys), dimension(im), intent(in) | OC, | ||
real(kind=kind_phys), dimension(im,4), intent(in) | OA4, | ||
real(kind=kind_phys), dimension(im,4), intent(in) | CLX4, | ||
real(kind=kind_phys), dimension(im), intent(in) | THETA, | ||
real(kind=kind_phys), dimension(im), intent(in) | SIGMA, | ||
real(kind=kind_phys), dimension(im), intent(in) | GAMMA, | ||
real(kind=kind_phys), dimension(im), intent(inout) | ELVMAX, | ||
real(kind=kind_phys), dimension(im), intent(out) | DUSFC, | ||
real(kind=kind_phys), dimension(im), intent(out) | DVSFC, | ||
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, | ||
integer, intent(in) | IMX, | ||
integer, intent(in) | nmtvr, | ||
real(kind=kind_phys), dimension(4), intent(in) | cdmbgwd, | ||
integer, intent(in) | me, | ||
logical, intent(in) | lprnt, | ||
integer, intent(in) | ipr, | ||
real(kind=kind_phys), dimension(im), intent(out) | rdxzb, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg | ||
) |
— Subgrid Mountain Blocking Section
UDS=\max(\sqrt{U1^2+V1^2},minwnd)
where minwnd=0.1 , U1 and V1 are zonal and meridional wind components of model layer wind.\frac{U^{2}(h_{d})}{2}=\int_{h_{d}}^{H} N^{2}(z)(H-z)dz
where H is the maximum subgrid scale elevation within the grid box of actual orography, h, obtained from the GTOPO30 dataset from the U.S. Geological Survey.ZLEN=\sqrt{[\frac{h_{d}-z}{z+h'}]}
where z is the height, h' is the orographic standard deviation (HPRIME).R=\frac{\cos^{2}\psi+\gamma\sin^{2}\psi}{\gamma\cos^{2}\psi+\sin^{2}\psi}
where \psi, which is derived from THETA, is the angle between the incident flow direction and the normal ridge direcion. \gamma is the orographic anisotropy (GAMMA).D_{b}(z)=-C_{d}\max(2-\frac{1}{R},0)\rho\frac{\sigma}{2h'}ZLEN\max(\cos\psi,\gamma\sin\psi)\frac{UDS}{2}
where C_{d} is a specified constant, \sigma is the orographic slope.Orographic Gravity Wave Drag Section
E(OA,F_{r_{0}})=(OA+2)^{\delta}
\delta=C_{E}F_{r_{0}}/F_{r_{c}}
m'(OA,CLX)=C_{m}\triangle x(1+CLX)^{OA+1}
G'(OC,F_{r_{0}})=\frac{F_{r_{0}}^2}{F_{r_{0}}^2+a^{2}}
a^{2}=C_{G}OC^{-1}
where F_{r_{c}}(=1) is the critical Froude number, F_{r_{0}} is the Froude number. C_{E}, C_{m}, C_{G} are constants.\tau_0=E\frac{m'}{\triangle x}\frac{\rho_{0}U_0^3}{N_{0}}G'
where E, m', and G' are the enhancement factor, "the number of mountains", and the flux function defined above, respectively.R_{scor}=\min \left[\frac{\tau_i}{\tau_{i+1}},1\right]
\tau=\frac{m'}{\triangle x}\rho NUh_d^2
where h_{d} is the displacement wave amplitude. In the absence of wave breaking, the displacement amplitude for the i^{th} layer can be expressed using the drag for the layer immediately below. Thus, assuming \tau_i=\tau_{i+1}, we can get:h_{d_i}^2=\frac{\triangle x}{m'}\frac{\tau_{i+1}}{\rho_{i}N_{i}U_{i}}
Ri_{m}=\frac{Ri(1-Fr_{d})}{(1+\sqrt{Ri}\cdot Fr_{d})^{2}}
see eq.(4.6) in Kim and Arakawa (1995) [99].h_{c}=\frac{U}{N}\left\{2(2+\frac{1}{\sqrt{Ri}})^{1/2}-(2+\frac{1}{\sqrt{Ri}})\right\}
if Ri_{m}\leq Ri_{c}, obtain \tau from the drag above the reference level by using h_{c} computed above; otherwise \tau is unchanged (note: scaled by the ratio of the Scorer paramter).Referenced by cires_ugwp::cires_ugwp_run().