UPP  V11.0.0
 All Data Structures Files Functions Pages
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
Definition: MASKS_mod.f:1
dvdxdudy() computes dudy, dvdx, uwnd
Definition: UPP_MATH.f:17