16 SUBROUTINE calpbl(PBLRI)
19 use vrbls3d, only: pmid, q, t, uh, vh, zmid
22 use params_mod, only: h10e5, capa, d608, h1, g, gi
23 use ctlblk_mod, only: lm, im, jsta, jend, spval, jsta_m, jsta_2l, jend_2u, jend_m, &
24 ista, iend, ista_m, ista_2l, iend_2u, iend_m
25 use gridspec_mod
, only: gridtype
31 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(inout) :: pblri
33 REAL,
ALLOCATABLE :: thv(:,:,:)
34 INTEGER ifrstlev(ista_2l:iend_2u,jsta_2l:jend_2u),icalpbl(ista_2l:iend_2u,jsta_2l:jend_2u) &
35 ,lvlp(ista_2l:iend_2u,jsta_2l:jend_2u)
36 REAL rif(ista_2l:iend_2u,jsta_2l:jend_2u) &
37 ,ribp(ista_2l:iend_2u,jsta_2l:jend_2u),ubot1(ista_2l:iend_2u,jsta_2l:jend_2u) &
38 ,vbot1(ista_2l:iend_2u,jsta_2l:jend_2u),zbot1(ista_2l:iend_2u,jsta_2l:jend_2u) &
39 ,thvbot1(ista_2l:iend_2u,jsta_2l:jend_2u)
41 real ape,betta,ricr,ustarr,wmin,uhkl,ulkl,vhkl,vlkl,wndsl,wndslp, &
42 ubot,vbot,vtop,utop,thvtop,ztop,wdl2,rib
47 ALLOCATE ( thv(ista_2l:iend_2u,jsta_2l:jend_2u,lm) )
64 if( pmid(i,j,l)<spval)
then
65 ape = (h10e5/pmid(i,j,l))**capa
66 thv(i,j,l) = (q(i,j,l)*d608+h1)*t(i,j,l)*ape
106 call exch(vtm(ista_2l,jsta_2l,l))
107 call exch(uh(ista_2l,jsta_2l,l))
108 call exch(vh(ista_2l,jsta_2l,l))
109 call exch(vtm(ista_2l,jsta_2l,l-1))
110 call exch(uh(ista_2l,jsta_2l,l-1))
111 call exch(vh(ista_2l,jsta_2l,l-1))
117 if( pmid(i,j,l)<spval)
then
120 IF(ifrstlev(i,j) == 0)
THEN
124 IF(gridtype ==
'A')
THEN
129 ELSE IF(gridtype ==
'E')
THEN
139 wndsl = vtm(i,j-1,l)+vtm(iw,j,l)+vtm(ie,j,l)+vtm(i,j+1,l)
140 wndslp = vtm(i,j-1,l-1)+vtm(iw,j,l-1)+ &
141 vtm(ie,j,l-1)+vtm(i,j+1,l-1)
142 IF(wndsl == 0. .OR. wndslp == 0.) cycle
143 ubot = (uh(i,j-1,l)+uh(iw,j,l)+uh(ie,j,l)+uh(i,j+1,l))/wndsl
144 utop = (uh(i,j-1,l-1)+uh(iw,j,l-1)+uh(ie,j,l-1)+ &
145 uh(i,j+1,l-1))/wndslp
146 vbot = (vh(i,j-1,l)+vh(iw,j,l)+vh(ie,j,l)+vh(i,j+1,l))/wndsl
147 vtop = (vh(i,j-1,l-1)+vh(iw,j,l-1)+vh(ie,j,l-1)+ &
148 vh(i,j+1,l-1))/wndslp
149 ELSE IF(gridtype ==
'B')
THEN
152 ubot = (uh(iw,j-1,l)+uh(iw,j,l)+uh(ie,j-1,l)+uh(i,j,l))*0.25
153 utop = (uh(iw,j-1,l-1)+uh(iw,j,l-1)+uh(ie,j-1,l-1)+ &
155 vbot = (vh(iw,j-1,l)+vh(iw,j,l)+vh(ie,j-1,l)+vh(i,j,l))*0.25
156 vtop = (vh(iw,j-1,l-1)+vh(iw,j,l-1)+vh(ie,j-1,l-1)+ &
160 IF(ifrstlev(i,j) == 0)
THEN
163 zbot1(i,j) = zmid(i,j,l)
164 thvbot1(i,j) = thv(i,j,l)
168 thvtop = thv(i,j,l-1)
176 wdl2 = (utop-ubot1(i,j))**2 + (vtop-vbot1(i,j))**2 + wmin**2
177 rib = (g/thvbot1(i,j))*(thvtop-thvbot1(i,j))* &
178 (ztop-zbot1(i,j))/(wdl2+betta*(ustarr**2))
188 IF (rib>=ricr.AND.icalpbl(i,j)==0)
THEN
189 pblri(i,j) = zmid(i,j,l)+(zmid(i,j,l-1)-zmid(i,j,l))* &
190 (ricr-ribp(i,j))/(rib-ribp(i,j))
195 pblri(i,j) = pblri(i,j)-fis(i,j)*gi