UPP  11.0.0
 All Data Structures Files Functions Variables Pages
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, public dvdxdudy(uwnd, vwnd)
dvdxdudy() computes dudy, dvdx, uwnd
Definition: UPP_MATH.f:54
subroutine calupdhel(UPDHEL)
Subroutine that computes the updraft helicity.
Definition: CALUPDHEL.f:23
Definition: MASKS_mod.f:1