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().