98 & LBi, UBi, LBj, UBj, &
99 & IminS, ImaxS, JminS, JmaxS, &
102 & umask_wet, vmask_wet, &
107#ifdef TIDE_GENERATING_FORCES
127 integer,
intent(in) :: ng, tile
128 integer,
intent(in) :: LBi, UBi, LBj, UBj
129 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
130 integer,
intent(in) :: nrhs
133 real(r8),
intent(in) :: om_v(LBi:,LBj:)
134 real(r8),
intent(in) :: on_u(LBi:,LBj:)
135 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
136 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
137 real(r8),
intent(in) :: rho(LBi:,LBj:,:)
138# ifdef TIDE_GENERATING_FORCES
139 real(r8),
intent(in) :: eq_tide(LBi:,LBj:)
142 real(r8),
intent(in) :: zetat(LBi:,LBj:)
145 real(r8),
intent(in) :: Pair(LBi:,LBj:)
147# ifdef DIAGNOSTICS_UV
148 real(r8),
intent(inout) :: DiaRU(LBi:,LBj:,:,:,:)
149 real(r8),
intent(inout) :: DiaRV(LBi:,LBj:,:,:,:)
151 real(r8),
intent(inout) :: ru(LBi:,LBj:,0:,:)
152 real(r8),
intent(inout) :: rv(LBi:,LBj:,0:,:)
154 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
155 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
156 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
157 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
158 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
159# ifdef TIDE_GENERATING_FORCES
160 real(r8),
intent(in) :: eq_tide(LBi:UBi,LBj:UBj)
163 real(r8),
intent(in) :: zetat(LBi:UBi,LBj:UBj)
166 real(r8),
intent(in) :: Pair(LBi:UBi,LBj:UBj)
168# ifdef DIAGNOSTICS_UV
169 real(r8),
intent(inout) :: DiaRU(LBi:UBi,LBj:UBj,N(ng),2,NDrhs)
170 real(r8),
intent(inout) :: DiaRV(LBi:UBi,LBj:UBj,N(ng),2,NDrhs)
172 real(r8),
intent(inout) :: ru(LBi:UBi,LBj:UBj,0:N(ng),2)
173 real(r8),
intent(inout) :: rv(LBi:UBi,LBj:UBj,0:N(ng),2)
180 real(r8) :: cff, cff1, dh
182 real(r8) :: OneAtm, fac
187 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: FC
189 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: FX
191 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: P
193#include "set_bounds.h"
209 j_loop :
DO j=jstrv-1,jend
213 p(i,j,n(ng))=p(i,j,n(ng))+fac1*zetat(i,j)
216 p(i,j,n(ng))=p(i,j,n(ng))+fac*(pair(i,j)-oneatm)
218#ifdef TIDE_GENERATING_FORCES
219 p(i,j,n(ng))=p(i,j,n(ng))-
g*eq_tide(i,j)
224 p(i,j,k-1)=p(i,j,k)+ &
225 & hz(i,j,k)*rho(i,j,k)
226 fx(i,j,k)=0.5_r8*hz(i,j,k)*(p(i,j,k)+p(i,j,k-1))
240 dh=z_w(i,j,k-1)-z_w(i-1,j,k-1)
241 fc(i,k-1)=0.5_r8*dh*(p(i,j,k-1)+p(i-1,j,k-1))
242 ru(i,j,k,nrhs)=(cff*(hz(i-1,j,k)+ &
244 & (z_w(i-1,j,n(ng))- &
245 & z_w(i ,j,n(ng)))+ &
246 & cff1*(fx(i-1,j,k)- &
249 & fc(i,k-1)))*on_u(i,j)
251 ru(i,j,k,nrhs)=ru(i,j,k,nrhs)*umask_wet(i,j)
254 diaru(i,j,k,nrhs,
m3pgrd)=ru(i,j,k,nrhs)
270 dh=z_w(i,j,k-1)-z_w(i,j-1,k-1)
271 fc(i,k-1)=0.5_r8*dh*(p(i,j,k-1)+p(i,j-1,k-1))
272 rv(i,j,k,nrhs)=(cff*(hz(i,j-1,k)+ &
274 & (z_w(i,j-1,n(ng))- &
275 & z_w(i,j ,n(ng)))+ &
276 & cff1*(fx(i,j-1,k)- &
279 & fc(i,k-1)))*om_v(i,j)
281 rv(i,j,k,nrhs)=rv(i,j,k,nrhs)*vmask_wet(i,j)
284 diarv(i,j,k,nrhs,
m3pgrd)=rv(i,j,k,nrhs)
subroutine prsgrd40_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nrhs, umask_wet, vmask_wet, om_v, on_u, hz, z_w, rho, eq_tide, zetat, pair, diaru, diarv, ru, rv)