79 & LBi, UBi, LBj, UBj, &
80 & IminS, ImaxS, JminS, JmaxS, &
86 & pm, pmon_p, pmon_r, &
87 & pn, pnom_p, pnom_r, &
97 integer,
intent(in) :: ng, tile
98 integer,
intent(in) :: LBi, UBi, LBj, UBj
99 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
100 integer,
intent(in) :: nrhs, nnew
104 real(r8),
intent(in) :: pmask(LBi:,LBj:)
106 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
107 real(r8),
intent(in) :: pm(LBi:,LBj:)
108 real(r8),
intent(in) :: pmon_p(LBi:,LBj:)
109 real(r8),
intent(in) :: pmon_r(LBi:,LBj:)
110 real(r8),
intent(in) :: pn(LBi:,LBj:)
111 real(r8),
intent(in) :: pnom_p(LBi:,LBj:)
112 real(r8),
intent(in) :: pnom_r(LBi:,LBj:)
114 real(r8),
intent(in) :: u(LBi:,LBj:,:,:)
115 real(r8),
intent(in) :: v(LBi:,LBj:,:,:)
117 real(r8),
intent(inout) :: tl_u(LBi:,LBj:,:,:)
118 real(r8),
intent(inout) :: tl_v(LBi:,LBj:,:,:)
121 real(r8),
intent(in) :: pmask(LBi:UBi,LBj:UBj)
123 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
124 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
125 real(r8),
intent(in) :: pmon_p(LBi:UBi,LBj:UBj)
126 real(r8),
intent(in) :: pmon_r(LBi:UBi,LBj:UBj)
127 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
128 real(r8),
intent(in) :: pnom_p(LBi:UBi,LBj:UBj)
129 real(r8),
intent(in) :: pnom_r(LBi:UBi,LBj:UBj)
131 real(r8),
intent(in) :: u(LBi:UBi,LBj:UBj,N(ng),2)
132 real(r8),
intent(in) :: v(LBi:UBi,LBj:UBj,N(ng),2)
134 real(r8),
intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
135 real(r8),
intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
144 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFe
145 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: UFx
146 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFe
147 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS) :: VFx
149# include "set_bounds.h"
159 k_loop :
DO k=1,n(ng)
168 & (tl_u(i+1,j,k,nrhs)-u(i+1,j,k,nrhs)- &
169 & tl_u(i ,j,k,nrhs)+u(i ,j,k,nrhs))
175 & 0.25_r8*(hz(i,j ,k)+hz(i-1,j ,k)+ &
176 & hz(i,j-1,k)+hz(i-1,j-1,k))* &
177 & (tl_u(i,j ,k,nrhs)-u(i,j ,k,nrhs)- &
178 & tl_u(i,j-1,k,nrhs)+u(i,j-1,k,nrhs))
180 ufe(i,j)=ufe(i,j)*pmask(i,j)
187 & 0.25_r8*(hz(i,j ,k)+hz(i-1,j ,k)+ &
188 & hz(i,j-1,k)+hz(i-1,j-1,k))* &
189 & (tl_v(i ,j,k,nrhs)-v(i ,j,k,nrhs)- &
190 & tl_v(i-1,j,k,nrhs)+v(i-1,j,k,nrhs))
192 vfx(i,j)=vfx(i,j)*pmask(i,j)
200 & (tl_v(i,j+1,k,nrhs)-v(i,j+1,k,nrhs)- &
201 & tl_v(i,j ,k,nrhs)+v(i,j ,k,nrhs))
211 tl_u(i,j,k,nnew)=tl_u(i,j,k,nnew)+ &
212 & cff*(pm(i-1,j)+pm(i,j))* &
213 & (pn(i-1,j)+pn(i,j))* &
214 & (ufx(i,j)-ufx(i-1,j)+ &
215 & ufe(i,j+1)-ufe(i,j))
221 tl_v(i,j,k,nnew)=tl_v(i,j,k,nnew)+ &
222 & cff*(pm(i,j)+pm(i,j-1))* &
223 & (pn(i,j)+pn(i,j-1))* &
224 & (vfx(i+1,j)-vfx(i,j)+ &
225 & vfe(i,j)-vfe(i,j-1))
subroutine rp_uv3drelax_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nrhs, nnew, pmask, hz, pm, pmon_p, pmon_r, pn, pnom_p, pnom_r, u, v, tl_u, tl_v)