forked from 3rdparty/wrf-python
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
4.0 KiB
100 lines
4.0 KiB
|
|
C *************************************************************** |
|
C * Storm Relative Helicity (SRH) is a measure of the * |
|
C * streamwise vorticity within the inflow environment of a * |
|
C * convective storm. It is calculated by multiplying the * |
|
C * storm-relative inflow velocity vector (Vh-C) by the * |
|
C * streamwise vorticity (Zh) and integrating this quantity * |
|
C * over the inflow depth (lowest 1-3 km layers above ground * |
|
C * level). It describes the extent to which corkscrew-like * |
|
C * motion occurs (similar to the spiraling motion of an * |
|
C * American football). SRH corresponds to the transfer of * |
|
C * vorticity from the environment to an air parcel in * |
|
C * convective motion and is used to predict the potential * |
|
C * for tornadic development (cyclonic updraft rotation) in * |
|
C * right-moving supercells. * |
|
C * * |
|
C * There is no clear threshold value for SRH when forecasting * |
|
C * supercells, since the formation of supercells appears to be * |
|
C * related more strongly to the deeper layer vertical shear. * |
|
C * Larger values of 0-3-km SRH (greater than 250 m**2/s**2) * |
|
C * and 0-1-km SRH (greater than 100 m**2/s**2), suggest an * |
|
C * increased threat of tornadoes with supercells. For SRH, * |
|
C * larger values are generally better, but there are no clear * |
|
C * "boundaries" between non-tornadic and significant tornadic * |
|
C * supercells. * |
|
C * * |
|
C * SRH < 100 (lowest 1 km): cutoff value * |
|
C * SRH = 150-299: supercells possible with weak tornadoes * |
|
C * SRH = 300-499: very favorable to supercell development and * |
|
C * strong tornadoes * |
|
C * SRH > 450 : violent tornadoes * |
|
C *************************************************************** |
|
C NCLFORTSTART |
|
subroutine dcalrelhl(u, v, ght, ter, top, sreh, miy, mjx, mkzh) |
|
implicit none |
|
integer miy, mjx, mkzh |
|
double precision u(miy,mjx,mkzh), v(miy,mjx,mkzh), |
|
& ght(miy,mjx,mkzh),top,ter(miy,mjx), |
|
& sreh(miy,mjx) |
|
C NCLEND |
|
C |
|
C This helicity code was provided by Dr. Craig Mattocks, and |
|
C verified by Cindy Bruyere to produce results equivalent to |
|
C those generated by RIP4. (The code came from RIP4?) |
|
C |
|
double precision pi, dtr, dpr |
|
double precision dh, sdh, su, sv, ua, va, asp, adr, bsp, bdr |
|
double precision cu, cv, x, sum |
|
integer i, j, k, k10, k3, ktop |
|
parameter (pi=3.14159265d0, dtr=pi/180.d0, dpr=180.d0/pi) |
|
|
|
do 15 j = 1, mjx-1 |
|
do 15 i = 1, miy-1 |
|
sdh = 0.d0 |
|
su = 0.d0 |
|
sv = 0.d0 |
|
k3 = 0 |
|
k10 = 0 |
|
ktop = 0 |
|
do 6 k = mkzh, 2, -1 |
|
if (((ght(i,j,k) - ter(i,j)) .gt. 10000.d0) .and. |
|
& (k10 .eq. 0)) then |
|
k10 = k |
|
go to 8 |
|
endif |
|
if (((ght(i,j,k) - ter(i,j)) .gt. top) .and. |
|
& (ktop .eq. 0)) ktop = k |
|
if (((ght(i,j,k) - ter(i,j)) .gt. 3000.d0) .and. |
|
& (k3 .eq. 0)) k3 = k |
|
6 continue |
|
8 continue |
|
if (k10 .eq. 0) k10=2 |
|
do k = k3, k10, -1 |
|
dh = ght(i,j,k-1) - ght(i,j,k) |
|
sdh = sdh + dh |
|
su = su + 0.5d0*dh*(u(i,j,k-1)+u(i,j,k)) |
|
sv = sv + 0.5d0*dh*(v(i,j,k-1)+v(i,j,k)) |
|
enddo |
|
ua = su / sdh |
|
va = sv / sdh |
|
asp = sqrt(ua*ua + va*va) |
|
if (ua .eq. 0.d0 .and. va .eq. 0.d0) then |
|
adr = 0.d0 |
|
else |
|
adr = dpr * (pi + atan2(ua,va)) |
|
endif |
|
bsp = 0.75d0 * asp |
|
bdr = adr + 30.d0 |
|
if (bdr .gt. 360.d0) bdr = bdr-360.d0 |
|
cu = -bsp * sin(bdr*dtr) |
|
cv = -bsp * cos(bdr*dtr) |
|
sum = 0.d0 |
|
do 12 k = mkzh-1, ktop, -1 |
|
x = ((u(i,j,k)-cu) * (v(i,j,k)-v(i,j,k+1))) - |
|
& ((v(i,j,k)-cv) * (u(i,j,k)-u(i,j,k+1))) |
|
sum = sum + x |
|
12 continue |
|
sreh(i,j) = -sum |
|
15 continue |
|
end
|
|
|