101 & LBi, UBi, LBj, UBj, &
102 & IminS, ImaxS, JminS, JmaxS, &
105 & umask_wet, vmask_wet, &
107 & Hz, om_v, on_u, z_r, z_w, &
109#ifdef TIDE_GENERATING_FORCES
129 integer,
intent(in) :: ng, tile
130 integer,
intent(in) :: LBi, UBi, LBj, UBj
131 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
132 integer,
intent(in) :: nrhs
136 real(r8),
intent(in) :: umask_wet(LBi:,LBj:)
137 real(r8),
intent(in) :: vmask_wet(LBi:,LBj:)
139 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
140 real(r8),
intent(in) :: om_v(LBi:,LBj:)
141 real(r8),
intent(in) :: on_u(LBi:,LBj:)
142 real(r8),
intent(in) :: z_r(LBi:,LBj:,:)
143 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
144 real(r8),
intent(in) :: rho(LBi:,LBj:,:)
145# ifdef TIDE_GENERATING_FORCES
146 real(r8),
intent(in) :: eq_tide(LBi:,LBj:)
149 real(r8),
intent(in) :: zetat(LBi:,LBj:)
152 real(r8),
intent(in) :: Pair(LBi:,LBj:)
154# ifdef DIAGNOSTICS_UV
155 real(r8),
intent(inout) :: DiaRU(LBi:,LBj:,:,:,:)
156 real(r8),
intent(inout) :: DiaRV(LBi:,LBj:,:,:,:)
158 real(r8),
intent(inout) :: ru(LBi:,LBj:,0:,:)
159 real(r8),
intent(inout) :: rv(LBi:,LBj:,0:,:)
162 real(r8),
intent(in) :: umask_wet(LBi:UBi,LBj:UBj)
163 real(r8),
intent(in) :: vmask_wet(LBi:UBi,LBj:UBj)
165 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
166 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
167 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
168 real(r8),
intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng))
169 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
170 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
171# ifdef TIDE_GENERATING_FORCES
172 real(r8),
intent(in) :: eq_tide(LBi:UBi,LBj:UBj)
175 real(r8),
intent(in) :: zetat(LBi:UBi,LBj:UBj)
178 real(r8),
intent(in) :: Pair(LBi:UBi,LBj:UBj)
180# ifdef DIAGNOSTICS_UV
181 real(r8),
intent(inout) :: DiaRU(LBi:UBi,LBj:UBj,N(ng),2,NDrhs)
182 real(r8),
intent(inout) :: DiaRV(LBi:UBi,LBj:UBj,N(ng),2,NDrhs)
184 real(r8),
intent(inout) :: ru(LBi:UBi,LBj:UBj,0:N(ng),2)
185 real(r8),
intent(inout) :: rv(LBi:UBi,LBj:UBj,0:N(ng),2)
191 real(r8) :: fac, fac1, fac2, fac3
192 real(r8) :: cff1, cff2, cff3, cff4
197 real(r8),
dimension(IminS:ImaxS) :: phie
198 real(r8),
dimension(IminS:ImaxS) :: phix
200#include "set_bounds.h"
212 fac2=1000.0_r8*
g/
rho0
217#ifdef TIDE_GENERATING_FORCES
218 cff1=z_w(i ,j,n(ng))-eq_tide(i ,j)-z_r(i ,j,n(ng))+ &
219 & z_w(i-1,j,n(ng))-eq_tide(i-1,j)-z_r(i-1,j,n(ng))
221 cff1=z_w(i ,j,n(ng))-z_r(i ,j,n(ng))+ &
222 & z_w(i-1,j,n(ng))-z_r(i-1,j,n(ng))
224 phix(i)=fac1*(rho(i,j,n(ng))-rho(i-1,j,n(ng)))*cff1
226 phix(i)=phix(i)+zetat(i,j)-zetat(i-1,j)
229 phix(i)=phix(i)+fac*(pair(i,j)-pair(i-1,j))
233 & (fac2+fac1*(rho(i,j,n(ng))+rho(i-1,j,n(ng))))* &
234 & (z_w(i,j,n(ng))-z_w(i-1,j,n(ng)))
236 ru(i,j,n(ng),nrhs)=-0.5_r8*(hz(i,j,n(ng))+hz(i-1,j,n(ng)))* &
239 ru(i,j,n(ng),nrhs)=ru(i,j,n(ng),nrhs)*umask_wet(i,j)
242 diaru(i,j,n(ng),nrhs,
m3pgrd)=ru(i,j,n(ng),nrhs)
252 cff1=1.0_r8/((z_r(i ,j,k+1)-z_r(i ,j,k))* &
253 & (z_r(i-1,j,k+1)-z_r(i-1,j,k)))
254 cff2=z_r(i ,j,k )-z_r(i-1,j,k )+ &
255 & z_r(i ,j,k+1)-z_r(i-1,j,k+1)
256 cff3=z_r(i ,j,k+1)-z_r(i ,j,k )- &
257 & z_r(i-1,j,k+1)+z_r(i-1,j,k )
258 gamma=0.125_r8*cff1*cff2*cff3
260 cff1=(1.0_r8+gamma)*(rho(i,j,k+1)-rho(i-1,j,k+1))+ &
261 & (1.0_r8-gamma)*(rho(i,j,k )-rho(i-1,j,k ))
262 cff2=rho(i,j,k+1)+rho(i-1,j,k+1)- &
263 & rho(i,j,k )-rho(i-1,j,k )
264 cff3=z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
265 & z_r(i,j,k )-z_r(i-1,j,k )
266 cff4=(1.0_r8+gamma)*(z_r(i,j,k+1)-z_r(i-1,j,k+1))+ &
267 & (1.0_r8-gamma)*(z_r(i,j,k )-z_r(i-1,j,k ))
269 & fac3*(cff1*cff3-cff2*cff4)
271 cff1=rho(i,j,k+1)-rho(i-1,j,k+1)+ &
272 & rho(i,j,k )-rho(i-1,j,k )
273 cff2=rho(i,j,k+1)+rho(i-1,j,k+1)- &
274 & rho(i,j,k )-rho(i-1,j,k )
275 cff3=z_r(i,j,k+1)+z_r(i-1,j,k+1)- &
276 & z_r(i,j,k )-z_r(i-1,j,k )
277 cff4=z_r(i,j,k+1)-z_r(i-1,j,k+1)+ &
278 & z_r(i,j,k )-z_r(i-1,j,k )
280 & fac3*(cff1*cff3-cff2*cff4)
282 ru(i,j,k,nrhs)=-0.5_r8*(hz(i,j,k)+hz(i-1,j,k))* &
285 ru(i,j,k,nrhs)=ru(i,j,k,nrhs)*umask_wet(i,j)
288 diaru(i,j,k,nrhs,
m3pgrd)=ru(i,j,k,nrhs)
301#ifdef TIDE_GENERATING_FORCES
302 cff1=z_w(i,j ,n(ng))-eq_tide(i,j )-z_r(i,j ,n(ng))+ &
303 & z_w(i,j-1,n(ng))-eq_tide(i,j-1)-z_r(i,j-1,n(ng))
305 cff1=z_w(i,j ,n(ng))-z_r(i,j ,n(ng))+ &
306 & z_w(i,j-1,n(ng))-z_r(i,j-1,n(ng))
308 phie(i)=fac1*(rho(i,j,n(ng))-rho(i,j-1,n(ng)))*cff1
310 phie(i)=phie(i)+zetat(i,j)-zetat(i,j-1)
313 phie(i)=phie(i)+fac*(pair(i,j)-pair(i,j-1))
317 & (fac2+fac1*(rho(i,j,n(ng))+rho(i,j-1,n(ng))))* &
318 & (z_w(i,j,n(ng))-z_w(i,j-1,n(ng)))
320 rv(i,j,n(ng),nrhs)=-0.5_r8*(hz(i,j,n(ng))+hz(i,j-1,n(ng)))* &
323 rv(i,j,n(ng),nrhs)=rv(i,j,n(ng),nrhs)*vmask_wet(i,j)
326 diarv(i,j,n(ng),nrhs,
m3pgrd)=rv(i,j,n(ng),nrhs)
336 cff1=1.0_r8/((z_r(i,j ,k+1)-z_r(i,j ,k))* &
337 & (z_r(i,j-1,k+1)-z_r(i,j-1,k)))
338 cff2=z_r(i,j ,k )-z_r(i,j-1,k )+ &
339 & z_r(i,j ,k+1)-z_r(i,j-1,k+1)
340 cff3=z_r(i,j ,k+1)-z_r(i,j ,k )- &
341 & z_r(i,j-1,k+1)+z_r(i,j-1,k )
342 gamma=0.125_r8*cff1*cff2*cff3
344 cff1=(1.0_r8+gamma)*(rho(i,j,k+1)-rho(i,j-1,k+1))+ &
345 & (1.0_r8-gamma)*(rho(i,j,k )-rho(i,j-1,k ))
346 cff2=rho(i,j,k+1)+rho(i,j-1,k+1)- &
347 & rho(i,j,k )-rho(i,j-1,k )
348 cff3=z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
349 & z_r(i,j,k )-z_r(i,j-1,k )
350 cff4=(1.0_r8+gamma)*(z_r(i,j,k+1)-z_r(i,j-1,k+1))+ &
351 & (1.0_r8-gamma)*(z_r(i,j,k )-z_r(i,j-1,k ))
353 & fac3*(cff1*cff3-cff2*cff4)
355 cff1=rho(i,j,k+1)-rho(i,j-1,k+1)+ &
356 & rho(i,j,k )-rho(i,j-1,k )
357 cff2=rho(i,j,k+1)+rho(i,j-1,k+1)- &
358 & rho(i,j,k )-rho(i,j-1,k )
359 cff3=z_r(i,j,k+1)+z_r(i,j-1,k+1)- &
360 & z_r(i,j,k )-z_r(i,j-1,k )
361 cff4=z_r(i,j,k+1)-z_r(i,j-1,k+1)+ &
362 & z_r(i,j,k )-z_r(i,j-1,k )
364 & fac3*(cff1*cff3-cff2*cff4)
366 rv(i,j,k,nrhs)=-0.5_r8*(hz(i,j,k)+hz(i,j-1,k))* &
369 rv(i,j,k,nrhs)=rv(i,j,k,nrhs)*vmask_wet(i,j)
372 diarv(i,j,k,nrhs,
m3pgrd)=rv(i,j,k,nrhs)