UPP v11.0.0
Loading...
Searching...
No Matches
CALUPDHEL.f
Go to the documentation of this file.
1
17 SUBROUTINE calupdhel(UPDHEL)
18
19!
20!
21! use vrbls2d, only:
22 use vrbls3d, only: wh, uh, vh, zint, zmid
23 use masks, only: lmh, dx, dy
24 use params_mod, only: d00
25 use ctlblk_mod, only: lm, jsta_2l, jend_2u, jsta_m, jend_m, &
26 global, spval, im, jm, &
27 ista_2l, iend_2u, ista_m, iend_m
28 use gridspec_mod, only: gridtype
29 use upp_math, only: dvdxdudy, ddvdx, ddudy
30
31 implicit none
32
33! DECLARE VARIABLES.
34!
35! LOGICAL RUN,FIRST,RESTRT,SIGMA,OLDRD,STRD
36 REAL, PARAMETER:: HLOWER=2000., hupper=5000.
37 REAL ZMIDLOC
38 real :: r2dx, r2dy, dz, dcdx, dudy, dvdx
39 REAL :: HTSFC(ista_2l:iend_2u,jsta_2l:jend_2u),UPDHEL(ista_2l:iend_2u,jsta_2l:jend_2u)
40 integer :: l, j, i
41 INTEGER, dimension(jm) :: IHE,IHW
42! INTEGER DXVAL,DYVAL,CENLAT,CENLON,TRUELAT1,TRUELAT2
43! INTEGER LATSTART,LONSTART,LATLAST,LONLAST
44!
45!***************************************************************************
46! START CALUPDHEL HERE.
47!
48! write(6,*) 'min/max WH(:,:,20):: ', minval(WH(:,:,20)), &
49! maxval(WH(:,:,20))
50
51 DO l=1,lm
52 CALL exch(uh(ista_2l,jsta_2l,l))
53 END DO
54 IF (gridtype == 'B')THEN
55 DO l=1,lm
56 CALL exch(vh(ista_2l,jsta_2l,l))
57 END DO
58 END IF
59!$omp parallel do private(i,j)
60 DO j=jsta_2l,jend_2u
61 DO i=ista_2l,iend_2u
62 updhel(i,j) = d00
63 ENDDO
64 ENDDO
65
66 DO j=jsta_2l,jend_2u
67 ihw(j) = -mod(j,2)
68 ihe(j) = ihw(j)+1
69 ENDDO
70
71! Integrate (w * relative vorticity * dz) over the 2 km to
72! 5 km AGL depth.
73
74! initial try without horizontal averaging
75
76!$omp parallel do private(i,j)
77 DO j=jsta_m,jend_m
78 DO i=ista_m,iend_m
79 htsfc(i,j) = zint(i,j,nint(lmh(i,j))+1)
80 ENDDO
81 ENDDO
82
83 DO j=jsta_m,jend_m
84 DO i=ista_m,iend_m
85
86 IF (htsfc(i,j) < spval) THEN
87
88 r2dx = 1./(2.*dx(i,j))
89 r2dy = 1./(2.*dy(i,j))
90
91 l_loop: DO l=1,lm
92 zmidloc = zmid(i,j,l)
93 IF (global) then ! will put in global algorithm later
94 updhel(i,j) = spval
95 EXIT l_loop
96 END IF
97
98 IF ( (zmidloc - htsfc(i,j)) >= hlower .AND. &
99 (zmidloc - htsfc(i,j)) <= hupper ) THEN
100 dz=(zint(i,j,l)-zint(i,j,l+1))
101
102 IF (wh(i,j,l) < 0) THEN
103
104! ANY DOWNWARD MOTION IN 2-5 km LAYER KILLS COMPUTATION AND
105! SETS RESULTANT UPDRAFT HELICTY TO ZERO
106
107 updhel(i,j) = 0.
108 EXIT l_loop
109
110 ENDIF
111
112 CALL dvdxdudy(uh(:,:,l),vh(:,:,l))
113 dvdx = ddvdx(i,j)
114 dudy = ddudy(i,j)
115
116 updhel(i,j)=updhel(i,j)+(dvdx-dudy)*wh(i,j,l)*dz
117
118 ENDIF
119 ENDDO l_loop
120
121 ELSE
122 updhel(i,j) = spval
123 ENDIF
124
125 ENDDO
126 ENDDO
127
128!
129! print*,'jsta_m, jend_m in calupdhel= ',jsta_m,jend_m
130!
131! END OF ROUTINE.
132!
133 RETURN
134 END
dvdxdudy() computes dudy, dvdx, uwnd
Definition UPP_MATH.f:17