57 SUBROUTINE calhel2(LLOW,LUPP,DEPTH,UST,VST,HELI,CANGLE)
60 use vrbls3d, only: zmid, uh, vh, u, v, zint
61 use vrbls2d, only: fis, u10, v10
65 use ctlblk_mod, only: jsta, jend, jsta_m, jend_m, jsta_2l, jend_2u, &
66 lm, im, jm, me, spval, &
67 ista, iend, ista_m, iend_m, ista_2l, iend_2u
68 use gridspec_mod
, only: gridtype
72 real,
PARAMETER :: p150=15000.0,p300=30000.0,s15=15.0
73 real,
PARAMETER :: d3000=3000.0,pi6=0.5235987756,pi9=0.34906585
74 real,
PARAMETER :: d5500=5500.0,d6000=6000.0,d7000=7000.0
75 real,
PARAMETER :: d500=500.0
77 real,
PARAMETER :: d1000=1000.0
78 real,
PARAMETER :: d1500=1500.0
80 REAL,
PARAMETER :: pi = 3.1415927
85 integer,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(in) :: llow, lupp
86 real,
intent(in) :: depth(2)
87 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(out) :: ust,vst
88 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u,2),
intent(out) :: heli
89 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(out) :: cangle
91 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: htsfc, ust6, vst6, ust5, vst5, &
92 ust1, vst1, ushr1, vshr1, &
93 ushr6, vshr6, u1, v1, u2, v2, &
94 hgt1, hgt2, umean, vmean
95 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: ushr05,vshr05
108 integer,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: count6, count5, count1, l1, l2
114 INTEGER ive(jm),ivw(jm)
115 integer i,j,iw,ie,js,jn,jvn,jvs,l,n,lv
116 integer istart,istop,jstart,jstop
117 real z2,dzabv,umean5,vmean5,umean1,vmean1,umean6,vmean6, &
118 denom,z1,z3,dz,dz1,dz2,du1,du2,dv1,dv2
163 IF(gridtype ==
'E')
THEN
174 ELSE IF(gridtype ==
'B')
THEN
208 IF(gridtype /=
'A') CALL exch(fis(ista_2l:iend_2u,jsta_2l:jend_2u))
210 IF(gridtype /=
'A') CALL exch(zmid(ista_2l:iend_2u,jsta_2l:jend_2u,l))
220 IF (gridtype==
'B')
THEN
221 htsfc(i,j) = (0.25/g)*(fis(iw,j)+fis(ie,j)+fis(i,jn)+fis(ie,jn))
226 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(ie,jn,l))
228 htsfc(i,j) = (0.25/g)*(fis(iw,j)+fis(ie,j)+fis(i,jn)+fis(i,js))
233 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(i,js,l))
235 dzabv = z2-htsfc(i,j)
238 IF (dzabv <= d6000 .AND. l <= lv)
THEN
239 ust6(i,j) = ust6(i,j) + uh(i,j,l)
240 vst6(i,j) = vst6(i,j) + vh(i,j,l)
241 count6(i,j) = count6(i,j) + 1
244 IF (dzabv < d6000 .AND. dzabv >= d5500 .AND. l <= lv)
THEN
245 ust5(i,j) = ust5(i,j) + uh(i,j,l)
246 vst5(i,j) = vst5(i,j) + vh(i,j,l)
247 count5(i,j) = count5(i,j) + 1
250 IF (dzabv < d500 .AND. l <= lv)
THEN
251 ust1(i,j) = ust1(i,j) + uh(i,j,l)
252 vst1(i,j) = vst1(i,j) + vh(i,j,l)
253 count1(i,j) = count1(i,j) + 1
256 IF (dzabv >= d1000 .AND. dzabv <= d1500 .AND. l <= lv)
THEN
263 IF (dzabv >= d500 .AND. dzabv < d1000 .AND. &
264 l <= lv .AND. l1(i,j) <= l2(i,j))
THEN
280 IF (count5(i,j) == 0)
THEN
286 IF (gridtype==
'B')
THEN
287 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(ie,jn,l))
289 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(i,js,l))
293 IF (dzabv < d7000 .AND. dzabv >= d6000)
THEN
294 ust5(i,j) = ust5(i,j) + uh(i,j,l)
295 vst5(i,j) = vst5(i,j) + vh(i,j,l)
310 IF (count6(i,j) > 0 .AND. count1(i,j) > 0 .AND. count5(i,j) > 0)
THEN
311 umean5 = ust5(i,j) / count5(i,j)
312 vmean5 = vst5(i,j) / count5(i,j)
313 umean1 = ust1(i,j) / count1(i,j)
314 vmean1 = vst1(i,j) / count1(i,j)
315 umean6 = ust6(i,j) / count6(i,j)
316 vmean6 = vst6(i,j) / count6(i,j)
329 ushr6(i,j) = umean5 - umean1
330 vshr6(i,j) = vmean5 - vmean1
332 denom = ushr6(i,j)*ushr6(i,j)+vshr6(i,j)*vshr6(i,j)
333 IF (denom /= 0.0)
THEN
334 ust(i,j) = umean6 + (7.5*vshr6(i,j)/sqrt(denom))
335 vst(i,j) = vmean6 - (7.5*ushr6(i,j)/sqrt(denom))
347 IF(l1(i,j) > 0 .AND. l2(i,j) > 0)
THEN
348 umean(i,j) = u1(i,j) + (d1000 - hgt1(i,j))*(u2(i,j) - &
349 u1(i,j))/(hgt2(i,j) - hgt1(i,j))
350 vmean(i,j) = v1(i,j) + (d1000 - hgt1(i,j))*(v2(i,j) - &
351 v1(i,j))/(hgt2(i,j) - hgt1(i,j))
352 ELSE IF(l1(i,j) > 0 .AND. l2(i,j) == 0)
THEN
355 ELSE IF(l1(i,j) == 0 .AND. l2(i,j) > 0)
THEN
363 IF(l1(i,j) > 0 .OR. l2(i,j) > 0)
THEN
364 ushr05(i,j) = umean1 - u10(i,j)
365 vshr05(i,j) = vmean1 - v10(i,j)
366 ushr1(i,j) = umean(i,j) - u10(i,j)
367 vshr1(i,j) = vmean(i,j) - v10(i,j)
394 if(gridtype /=
'A')
then
395 call exch(zint(1,jsta_2l,l))
396 call exch(zint(1,jsta_2l,l+1))
404 IF (gridtype==
'B')
THEN
405 z2=0.25*(zmid(iw,j,l)+zmid(ie,j,l)+ &
406 zmid(i,jn,l)+zmid(ie,jn,l))
408 z2=0.25*(zmid(iw,j,l)+zmid(ie,j,l)+ &
409 zmid(i,jn,l)+zmid(i,js,l))
413 IF(dzabv < depth(n) .AND. l <= nint(lmv(i,j)))
THEN
414 IF (gridtype==
'B')
THEN
415 z1 = 0.25*(zmid(iw,j,l+1)+zmid(ie,j,l+1)+ &
416 zmid(i,jn,l+1)+zmid(ie,jn,l+1))
417 z3 = 0.25*(zmid(iw,j,l-1)+zmid(ie,j,l-1)+ &
418 zmid(i,jn,l-1)+zmid(ie,jn,l-1))
419 dz = 0.25*((zint(iw,j,l)+zint(ie,j,l)+ &
420 zint(i,jn,l)+zint(ie,jn,l))- &
421 (zint(iw,j,l+1)+zint(ie,j,l+1)+ &
422 zint(i,jn,l+1)+zint(ie,jn,l+1)))
424 z1 = 0.25*(zmid(iw,j,l+1)+zmid(ie,j,l+1)+ &
425 zmid(i,jn,l+1)+zmid(i,js,l+1))
426 z3 = 0.25*(zmid(iw,j,l-1)+zmid(ie,j,l-1)+ &
427 zmid(i,jn,l-1)+zmid(i,js,l-1))
428 dz = 0.25*((zint(iw,j,l)+zint(ie,j,l)+ &
429 zint(i,js,l)+zint(i,jn,l))- &
430 (zint(iw,j,l+1)+zint(ie,j,l+1)+ &
431 zint(i,js,l+1)+zint(i,jn,l+1)))
435 du1 = uh(i,j,l+1)-uh(i,j,l)
436 du2 = uh(i,j,l)-uh(i,j,l-1)
437 dv1 = vh(i,j,l+1)-vh(i,j,l)
438 dv2 = vh(i,j,l)-vh(i,j,l-1)
439 IF( l >= lupp(i,j) .AND. l <= llow(i,j) )
THEN
440 IF( vh(i,j,l) <spval.and.uh(i,j,l) <spval.and. &
441 vh(i,j,l+1)<spval.and.uh(i,j,l+1)<spval.and. &
442 vh(i,j,l-1)<spval.and.uh(i,j,l-1)<spval.and. &
443 vst(i,j) <spval.and.ust(i,j) <spval) &
444 heli(i,j,n) = ((vh(i,j,l)-vst(i,j))* &
445 (dz2*(du1/dz1)+dz1*(du2/dz2)) &
446 - (uh(i,j,l)-ust(i,j))* &
447 (dz2*(dv1/dz1)+dz1*(dv2/dz2))) &
448 *dz/(dz1+dz2)+heli(i,j,n)
450 IF(lupp(i,j) == llow(i,j)) heli(i,j,n) = 0.
467 IF(vshr05(i,j)<spval.and.ushr05(i,j)<spval.and. &
468 vst(i,j)<spval.and.ust(i,j)<spval)
THEN
469 cangle(i,j)=atan2(vshr05(i,j),ushr05(i,j))-atan2(vst(i,j),ust(i,j))
470 cangle(i,j)=(cangle(i,j)/pi)*180.
471 IF(cangle(i,j) > 180.) cangle(i,j)=360.-cangle(i,j)
472 IF(cangle(i,j) < 0. .AND. cangle(i,j) >= -180.) cangle(i,j)=-cangle(i,j)
473 IF(cangle(i,j) < -180.) cangle(i,j)=360.+cangle(i,j)
subroutine calhel2(LLOW, LUPP, DEPTH, UST, VST, HELI, CANGLE)
Subroutine that computes storm relative helicity.