24 SUBROUTINE calrch(EL,RICHNO)
27 use vrbls3d, only: pmid, q, t, uh, vh, zmid, q2
29 use params_mod, only: h10e5, capa, d608,h1, epsq2, g, beta
30 use ctlblk_mod
, only: jsta, jend, spval, lm1, jsta_m, jend_m, im, &
31 jsta_2l, jend_2u, lm, &
32 ista, iend, ista_m, iend_m, ista_2l, iend_2u
33 use gridspec_mod
, only: gridtype
39 REAL,
intent(in) :: el(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
40 REAL,
intent(inout) :: richno(ista_2l:iend_2u,jsta_2l:jend_2u,lm)
42 REAL,
ALLOCATABLE :: thv(:,:,:)
44 real ape,uhkl,ulkl,vhkl,vlkl,wndsl,wndslp,rdzkl, &
45 dthvkl,dukl,dvkl,ri,ct,cs
53 ALLOCATE ( thv(ista_2l:iend_2u,jsta_2l:jend_2u,lm) )
71 ape = (h10e5/pmid(i,j,l))**capa
72 thv(i,j,l) = (q(i,j,l)*d608+h1)*t(i,j,l)*ape
85 if(gridtype /=
'A')
THEN
86 call exch(vtm(1,jsta_2l,l))
87 call exch(uh(1,jsta_2l,l))
88 call exch(vh(1,jsta_2l,l))
89 call exch(vtm(1,jsta_2l,l+1))
90 call exch(uh(1,jsta_2l,l+1))
91 call exch(vh(1,jsta_2l,l+1))
97 IF(gridtype ==
'A')
THEN
102 ELSE IF(gridtype ==
'E')
THEN
112 wndsl = vtm(i,j-1,l)+vtm(iw,j,l)+vtm(ie,j,l)+vtm(i,j+1,l)
113 wndslp = vtm(i,j-1,l+1) + vtm(iw,j,l+1)+ &
114 vtm(ie,j,l+1) + vtm(i,j+1,l+1)
115 IF(wndsl == 0. .OR. wndslp == 0.) cycle
116 uhkl = (uh(i,j-1,l)+uh(iw,j,l)+uh(ie,j,l)+uh(i,j+1,l))/wndsl
117 ulkl = (uh(i,j-1,l+1)+uh(iw,j,l+1)+uh(ie,j,l+1)+ &
118 uh(i,j+1,l+1))/wndslp
119 vhkl = (vh(i,j-1,l)+vh(iw,j,l)+vh(ie,j,l)+vh(i,j+1,l))/wndsl
120 vlkl = (vh(i,j-1,l+1)+vh(iw,j,l+1)+vh(ie,j,l+1)+ &
121 vh(i,j+1,l+1))/wndslp
122 ELSE IF(gridtype ==
'B')
THEN
125 uhkl = (uh(iw,j-1,l)+uh(iw,j,l)+uh(ie,j-1,l)+uh(i,j,l))/4.0
126 ulkl = (uh(iw,j-1,l+1)+uh(iw,j,l+1)+uh(ie,j-1,l+1)+ &
128 vhkl = (vh(iw,j-1,l)+vh(iw,j,l)+vh(ie,j-1,l)+vh(i,j,l))/4.0
129 vlkl = (vh(iw,j-1,l+1)+vh(iw,j,l+1)+vh(ie,j-1,l+1)+ &
133 rdzkl = 1.0 / (zmid(i,j,l)-zmid(i,j,l+1))
141 dthvkl = thv(i,j,l)-thv(i,j,l+1)
142 dukl = (uhkl-ulkl) * rdzkl
143 dvkl = (vhkl-vlkl) * rdzkl
144 cs = dukl*dukl + dvkl*dvkl
153 richno(i,j,l) = spval
159 ct = -1.*g*beta*dthvkl*rdzkl