65 & LBi, UBi, LBj, UBj, &
66 & IminS, ImaxS, JminS, JmaxS, &
89 integer,
intent(in) :: ng, tile
90 integer,
intent(in) :: LBi, UBi, LBj, UBj
91 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
92 integer,
intent(in) :: Ninp
95 real(r8),
intent(in) :: pm(LBi:,LBj:)
96 real(r8),
intent(in) :: pn(LBi:,LBj:)
97 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
98 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
99 real(r8),
intent(inout) :: DU_avg1(LBi:,LBj:)
100 real(r8),
intent(inout) :: DV_avg1(LBi:,LBj:)
101 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
102 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
103 real(r8),
intent(in) :: W(LBi:,LBj:,0:)
104# ifdef OMEGA_IMPLICIT
105 real(r8),
intent(in) :: Wi(LBi:,LBj:,0:)
107 real(r8),
intent(out) :: wvel(LBi:,LBj:,0:)
109 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
110 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
111 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
112 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
113 real(r8),
intent(inout) :: DU_avg1(LBi:UBi,LBj:UBj)
114 real(r8),
intent(inout) :: DV_avg1(LBi:UBi,LBj:UBj)
115 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
116 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
117 real(r8),
intent(in) :: W(LBi:UBi,LBj:UBj,0:N(ng))
118# ifdef OMEGA_IMPLICIT
119 real(r8),
intent(in) :: Wi(LBi:UBi,LBj:UBj,0:N(ng))
121 real(r8),
intent(out) :: wvel(LBi:UBi,LBj:UBj,0:N(ng))
128 real(r8) :: cff1, cff2, cff3, cff4, cff5, slope
130 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: vert
132 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: wrk
134# include "set_bounds.h"
156 & lbi, ubi, lbj, ubj, &
159 & lbi, ubi, lbj, ubj, &
165 & lbi, ubi, lbj, ubj, &
177 wrk(i,j)=u(i,j,k,ninp)*(z_r(i,j,k)-z_r(i-1,j,k))* &
178 & (pm(i-1,j)+pm(i,j))
181 vert(i,j,k)=0.25_r8*(wrk(i,j)+wrk(i+1,j))
186 wrk(i,j)=v(i,j,k,ninp)*(z_r(i,j,k)-z_r(i,j-1,k))* &
187 & (pn(i,j-1)+pn(i,j))
192 vert(i,j,k)=vert(i,j,k)+0.25_r8*(wrk(i,j)+wrk(i,j+1))
211 j_loop :
DO j=jstr,jend
213 wrk(i,j)=(du_avg1(i,j)-du_avg1(i+1,j)+ &
214 & dv_avg1(i,j)-dv_avg1(i,j+1))/ &
215 & (z_w(i,j,n(ng))-z_w(i,j,0))
222 slope=(z_r(i,j,1)-z_w(i,j,0))/ &
223 & (z_r(i,j,2)-z_r(i,j,1))
224 wvel(i,j,0)=cff1*(vert(i,j,1)- &
225 & slope*(vert(i,j,2)- &
227 & cff2*vert(i,j,1)- &
229 wvel(i,j,1)=pm(i,j)*pn(i,j)* &
231# ifdef OMEGA_IMPLICIT
234 & wrk(i,j)*(z_w(i,j,1)-z_w(i,j,0)))+ &
235 & cff1*vert(i,j,1)+ &
236 & cff2*vert(i,j,2)- &
241 wvel(i,j,k)=pm(i,j)*pn(i,j)* &
243# ifdef OMEGA_IMPLICIT
246 & wrk(i,j)*(z_w(i,j,k)-z_w(i,j,0)))+ &
247 & cff4*(vert(i,j,k )+vert(i,j,k+1))- &
248 & cff5*(vert(i,j,k-1)+vert(i,j,k+2))
252 slope=(z_w(i,j,n(ng))-z_r(i,j,n(ng) ))/ &
253 & (z_r(i,j,n(ng))-z_r(i,j,n(ng)-1))
254 wvel(i,j,n(ng))=pm(i,j)*pn(i,j)* &
255 & wrk(i,j)*(z_w(i,j,n(ng))-z_w(i,j,0))+ &
256 & cff1*(vert(i,j,n(ng))+ &
257 & slope*(vert(i,j,n(ng) )- &
258 & vert(i,j,n(ng)-1)))+ &
259 & cff2*vert(i,j,n(ng) )- &
260 & cff3*vert(i,j,n(ng)-1)
261 wvel(i,j,n(ng)-1)=pm(i,j)*pn(i,j)* &
263# ifdef OMEGA_IMPLICIT
266 & wrk(i,j)*(z_w(i,j,n(ng)-1)-z_w(i,j,0)))+ &
267 & cff1*vert(i,j,n(ng) )+ &
268 & cff2*vert(i,j,n(ng)-1)- &
269 & cff3*vert(i,j,n(ng)-2)
276 & lbi, ubi, lbj, ubj, 0, n(ng), &
280 & lbi, ubi, lbj, ubj, 0, n(ng), &