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