45 SUBROUTINE calhel2(LLOW,LUPP,DEPTH,UST,VST,HELI,CANGLE)
48 use vrbls3d,
only: zmid, uh, vh, u, v, zint
49 use vrbls2d,
only: fis, u10, v10
51 use params_mod,
only: g
52 use lookup_mod,
only: itb,jtb,itbq,jtbq
53 use ctlblk_mod,
only: jsta, jend, jsta_m, jend_m, jsta_2l, jend_2u, &
54 lm, im, jm, me, spval, &
55 ista, iend, ista_m, iend_m, ista_2l, iend_2u
56 use gridspec_mod,
only: gridtype
60 real,
PARAMETER :: P150=15000.0,p300=30000.0,s15=15.0
61 real,
PARAMETER :: D3000=3000.0,pi6=0.5235987756,pi9=0.34906585
62 real,
PARAMETER :: D5500=5500.0,d6000=6000.0,d7000=7000.0
63 real,
PARAMETER :: D500=500.0
65 real,
PARAMETER :: D1000=1000.0
66 real,
PARAMETER :: D1500=1500.0
68 REAL,
PARAMETER :: pi = 3.1415927
73 integer,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(in) :: LLOW
74 real,
intent(in) :: DEPTH(2)
75 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(out) :: UST
76 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u,2),
intent(out) :: HELI
77 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(out) :: CANGLE
79 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: HTSFC, UST6, VST6
81 ushr6, vshr6, u1, v1, u2, v2
82 hgt1, hgt2, umean, vmean
83 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: USHR05,VSHR05
96 integer,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: COUNT6, COUNT5
102 INTEGER IVE(JM),IVW(JM)
103 integer I,J,IW,IE,JS,JN,JVN,JVS,L,N,lv
104 integer ISTART,ISTOP,JSTART,JSTOP
105 real Z2,DZABV,UMEAN5,VMEAN5,UMEAN1,VMEAN1,UMEAN6,VMEAN6, &
106 denom,z1,z3,dz,dz1,dz2,du1,du2,dv1,dv2
151 IF(gridtype ==
'E')
THEN
162 ELSE IF(gridtype ==
'B')
THEN
196 IF(gridtype /=
'A')
CALL exch(fis(ista_2l:iend_2u,jsta_2l:jend_2u)
198 IF(gridtype /=
'A')
CALL exch(zmid(ista_2l:iend_2u,jsta_2l:jend_2u
208 IF (gridtype==
'B')
THEN
209 htsfc(i,j) = (0.25/g)*(fis(iw,j)+fis(ie,j)+fis(i,jn)+fis(ie
214 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(ie,jn
216 htsfc(i,j) = (0.25/g)*(fis(iw,j)+fis(ie,j)+fis(i,jn)+fis(i
221 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(i,js
223 dzabv = z2-htsfc(i,j)
226 IF (dzabv <= d6000 .AND. l <= lv)
THEN
227 ust6(i,j) = ust6(i,j) + uh(i,j,l)
228 vst6(i,j) = vst6(i,j) + vh(i,j,l)
229 count6(i,j) = count6(i,j) + 1
232 IF (dzabv < d6000 .AND. dzabv >= d5500 .AND. l <= lv)
THEN
233 ust5(i,j) = ust5(i,j) + uh(i,j,l)
234 vst5(i,j) = vst5(i,j) + vh(i,j,l)
235 count5(i,j) = count5(i,j) + 1
238 IF (dzabv < d500 .AND. l <= lv)
THEN
239 ust1(i,j) = ust1(i,j) + uh(i,j,l)
240 vst1(i,j) = vst1(i,j) + vh(i,j,l)
241 count1(i,j) = count1(i,j) + 1
244 IF (dzabv >= d1000 .AND. dzabv <= d1500 .AND. l <= lv)
THEN
251 IF (dzabv >= d500 .AND. dzabv < d1000 .AND. &
252 l <= lv .AND. l1(i,j) <= l2(i,j))
THEN
268 IF (count5(i,j) == 0)
THEN
274 IF (gridtype==
'B')
THEN
275 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(ie
277 z2 = 0.25*(zmid(iw,j,l)+zmid(ie,j,l)+zmid(i,jn,l)+zmid(i
281 IF (dzabv < d7000 .AND. dzabv >= d6000)
THEN
282 ust5(i,j) = ust5(i,j) + uh(i,j,l)
283 vst5(i,j) = vst5(i,j) + vh(i,j,l)
298 IF (count6(i,j) > 0 .AND. count1(i,j) > 0 .AND. count5(i,j) >
THEN
299 umean5 = ust5(i,j) / count5(i,j)
300 vmean5 = vst5(i,j) / count5(i,j)
301 umean1 = ust1(i,j) / count1(i,j)
302 vmean1 = vst1(i,j) / count1(i,j)
303 umean6 = ust6(i,j) / count6(i,j)
304 vmean6 = vst6(i,j) / count6(i,j)
317 ushr6(i,j) = umean5 - umean1
318 vshr6(i,j) = vmean5 - vmean1
320 denom = ushr6(i,j)*ushr6(i,j)+vshr6(i,j)*vshr6(i,j)
321 IF (denom /= 0.0)
THEN
322 ust(i,j) = umean6 + (7.5*vshr6(i,j)/sqrt(denom))
323 vst(i,j) = vmean6 - (7.5*ushr6(i,j)/sqrt(denom))
335 IF(l1(i,j) > 0 .AND. l2(i,j) > 0)
THEN
336 umean(i,j) = u1(i,j) + (d1000 - hgt1(i,j))*(u2(i,j) -
337 u1(i,j))/(hgt2(i,j) - hgt1(i,j))
338 vmean(i,j) = v1(i,j) + (d1000 - hgt1(i,j))*(v2(i,j) -
339 v1(i,j))/(hgt2(i,j) - hgt1(i,j))
340 ELSE IF(l1(i,j) > 0 .AND. l2(i,j) == 0)
THEN
343 ELSE IF(l1(i,j) == 0 .AND. l2(i,j) > 0)
THEN
351 IF(l1(i,j) > 0 .OR. l2(i,j) > 0)
THEN
352 ushr05(i,j) = umean1 - u10(i,j)
353 vshr05(i,j) = vmean1 - v10(i,j)
354 ushr1(i,j) = umean(i,j) - u10(i,j)
355 vshr1(i,j) = vmean(i,j) - v10(i,j)
382 if(gridtype /=
'A')
then
383 call exch(zint(1,jsta_2l,l))
384 call exch(zint(1,jsta_2l,l+1))
392 IF (gridtype==
'B')
THEN
393 z2=0.25*(zmid(iw,j,l)+zmid(ie,j,l)+
394 zmid(i,jn,l)+zmid(ie,jn,l))
396 z2=0.25*(zmid(iw,j,l)+zmid(ie,j,l)+
397 zmid(i,jn,l)+zmid(i,js,l))
401 IF(dzabv < depth(n) .AND. l <= nint(lmv(i,j)))
THEN
402 IF (gridtype==
'B')
THEN
403 z1 = 0.25*(zmid(iw,j,l+1)+zmid(ie,j,l+1)+
404 zmid(i,jn,l+1)+zmid(ie,jn,l+1))
405 z3 = 0.25*(zmid(iw,j,l-1)+zmid(ie,j,l-1)+
406 zmid(i,jn,l-1)+zmid(ie,jn,l-1))
407 dz = 0.25*((zint(iw,j,l)+zint(ie,j,l)+
408 zint(i,jn,l)+zint(ie,jn,l))-
409 (zint(iw,j,l+1)+zint(ie,j,l+1)+
410 zint(i,jn,l+1)+zint(ie,jn,l+1)))
412 z1 = 0.25*(zmid(iw,j,l+1)+zmid(ie,j,l+1)+
413 zmid(i,jn,l+1)+zmid(i,js,l+1))
414 z3 = 0.25*(zmid(iw,j,l-1)+zmid(ie,j,l-1)+
415 zmid(i,jn,l-1)+zmid(i,js,l-1))
416 dz = 0.25*((zint(iw,j,l)+zint(ie,j,l)+
417 zint(i,js,l)+zint(i,jn,l))-
418 (zint(iw,j,l+1)+zint(ie,j,l+1)+
419 zint(i,js,l+1)+zint(i,jn,l+1)))
423 du1 = uh(i,j,l+1)-uh(i,j,l)
424 du2 = uh(i,j,l)-uh(i,j,l-1)
425 dv1 = vh(i,j,l+1)-vh(i,j,l)
426 dv2 = vh(i,j,l)-vh(i,j,l-1)
427 IF( l >= lupp(i,j) .AND. l <= llow(i,j) )
THEN
428 IF( vh(i,j,l) <spval.and.uh(i,j,l) <spval.and.
429 vh(i,j,l+1)<spval.and.uh(i,j,l+1)<spval.and.
430 vh(i,j,l-1)<spval.and.uh(i,j,l-1)<spval.and.
431 vst(i,j) <spval.and.ust(i,j) <spval)
432 heli(i,j,n) = ((vh(i,j,l)-vst(i,j))*
433 (dz2*(du1/dz1)+dz1*(du2/dz2))
434 - (uh(i,j,l)-ust(i,j))*
435 (dz2*(dv1/dz1)+dz1*(dv2/dz2)))
436 *dz/(dz1+dz2)+heli(i,j,n)
438 IF(lupp(i,j) == llow(i,j)) heli(i,j,n) = 0.
455 IF(vshr05(i,j)<spval.and.ushr05(i,j)<spval.and. &
456 vst(i,j)<spval.and.ust(i,j)<spval)
THEN
457 cangle(i,j)=atan2(vshr05(i,j),ushr05(i,j))-atan2(vst(i,j)
458 cangle(i,j)=(cangle(i,j)/pi)*180.
459 IF(cangle(i,j) > 180.) cangle(i,j)=360.-cangle(i,j)
460 IF(cangle(i,j) < 0. .AND. cangle(i,j) >= -180.) cangle(i,j
461 IF(cangle(i,j) < -180.) cangle(i,j)=360.+cangle(i,j)