95 & LBi, UBi, LBj, UBj, &
96 & IminS, ImaxS, JminS, JmaxS, &
102#ifdef TIDE_GENERATING_FORCES
103 & eq_tide, tl_eq_tide, &
119 integer,
intent(in) :: ng, tile
120 integer,
intent(in) :: LBi, UBi, LBj, UBj
121 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
122 integer,
intent(in) :: nrhs
125 real(r8),
intent(in) :: om_v(LBi:,LBj:)
126 real(r8),
intent(in) :: on_u(LBi:,LBj:)
127 real(r8),
intent(in) :: Hz(LBi:,LBj:,:)
128 real(r8),
intent(in) :: z_w(LBi:,LBj:,0:)
129 real(r8),
intent(in) :: rho(LBi:,LBj:,:)
131 real(r8),
intent(in) :: tl_Hz(LBi:,LBj:,:)
132 real(r8),
intent(in) :: tl_z_w(LBi:,LBj:,0:)
133 real(r8),
intent(in) :: tl_rho(LBi:,LBj:,:)
134# ifdef TIDE_GENERATING_FORCES
135 real(r8),
intent(in) :: eq_tide(LBi:,LBj:)
136 real(r8),
intent(in) :: tl_eq_tide(LBi:,LBj:)
139 real(r8),
intent(in) :: Pair(LBi:,LBj:)
141# ifdef DIAGNOSTICS_UV
145 real(r8),
intent(inout) :: tl_ru(LBi:,LBj:,0:,:)
146 real(r8),
intent(inout) :: tl_rv(LBi:,LBj:,0:,:)
148 real(r8),
intent(in) :: om_v(LBi:UBi,LBj:UBj)
149 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
150 real(r8),
intent(in) :: Hz(LBi:UBi,LBj:UBj,N(ng))
151 real(r8),
intent(in) :: z_w(LBi:UBi,LBj:UBj,0:N(ng))
152 real(r8),
intent(in) :: rho(LBi:UBi,LBj:UBj,N(ng))
154 real(r8),
intent(in) :: tl_Hz(LBi:UBi,LBj:UBj,N(ng))
155 real(r8),
intent(in) :: tl_z_w(LBi:UBi,LBj:UBj,0:N(ng))
156 real(r8),
intent(in) :: tl_rho(LBi:UBi,LBj:UBj,N(ng))
157# ifdef TIDE_GENERATING_FORCES
158 real(r8),
intent(in) :: eq_tide(LBi:UBi,LBj:UBj)
159 real(r8),
intent(in) :: tl_eq_tide(LBi:UBi,LBj:UBj)
162 real(r8),
intent(in) :: Pair(LBi:UBi,LBj:UBj)
164# ifdef DIAGNOSTICS_UV
168 real(r8),
intent(inout) :: tl_ru(LBi:UBi,LBj:UBj,0:N(ng),2)
169 real(r8),
intent(inout) :: tl_rv(LBi:UBi,LBj:UBj,0:N(ng),2)
176 real(r8) :: cff, cff1, dh
179 real(r8) :: OneAtm, fac
181 real(r8),
dimension(IminS:ImaxS,0:N(ng)) :: tl_FC
183 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,N(ng)) :: tl_FX
185 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: P
186 real(r8),
dimension(IminS:ImaxS,JminS:JmaxS,0:N(ng)) :: tl_P
188#include "set_bounds.h"
201 j_loop :
DO j=jstrv-1,jend
205 p(i,j,n(ng))=p(i,j,n(ng))+fac*(pair(i,j)-oneatm)
207 tl_p(i,j,n(ng))=0.0_r8
208#ifdef TIDE_GENERATING_FORCES
209 p(i,j,n(ng))=p(i,j,n(ng))-
g*eq_tide(i,j)
210 tl_p(i,j,n(ng))=tl_p(i,j,n(ng))--
g*tl_eq_tide(i,j)
215 p(i,j,k-1)=p(i,j,k)+ &
216 & hz(i,j,k)*rho(i,j,k)
217 tl_p(i,j,k-1)=tl_p(i,j,k)+ &
218 & tl_hz(i,j,k)*rho(i,j,k)+ &
219 & hz(i,j,k)*tl_rho(i,j,k)
222 tl_fx(i,j,k)=0.5_r8* &
223 & (tl_hz(i,j,k)*(p(i,j,k)+p(i,j,k-1))+ &
224 & hz(i,j,k)*(tl_p(i,j,k)+tl_p(i,j,k-1)))
234 tl_fc(i,n(ng))=0.0_r8
240 dh=z_w(i,j,k-1)-z_w(i-1,j,k-1)
241 tl_dh=tl_z_w(i,j,k-1)-tl_z_w(i-1,j,k-1)
244 tl_fc(i,k-1)=0.5_r8* &
245 & (tl_dh*(p(i,j,k-1)+p(i-1,j,k-1))+ &
246 & dh*(tl_p(i,j,k-1)+tl_p(i-1,j,k-1)))
256 tl_ru(i,j,k,nrhs)=(cff*((tl_hz(i-1,j,k)+ &
258 & (z_w(i-1,j,n(ng))- &
259 & z_w(i ,j,n(ng)))+ &
262 & (tl_z_w(i-1,j,n(ng))- &
263 & tl_z_w(i ,j,n(ng))))+ &
264 & cff1*(tl_fx(i-1,j,k)- &
267 & tl_fc(i,k-1)))*on_u(i,j)
281 tl_fc(i,n(ng))=0.0_r8
287 dh=z_w(i,j,k-1)-z_w(i,j-1,k-1)
288 tl_dh=tl_z_w(i,j,k-1)-tl_z_w(i,j-1,k-1)
291 tl_fc(i,k-1)=0.5_r8* &
292 & (tl_dh*(p(i,j,k-1)+p(i,j-1,k-1))+ &
293 & dh*(tl_p(i,j,k-1)+tl_p(i,j-1,k-1))
303 tl_rv(i,j,k,nrhs)=(cff*((tl_hz(i,j-1,k)+ &
305 & (z_w(i,j-1,n(ng))- &
306 & z_w(i,j ,n(ng)))+ &
309 & (tl_z_w(i,j-1,n(ng))- &
310 & tl_z_w(i,j ,n(ng))))+ &
311 & cff1*(tl_fx(i,j-1,k)- &
314 & tl_fc(i,k-1)))*om_v(i,j)
subroutine rp_prsgrd40_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, nrhs, om_v, on_u, hz, tl_hz, z_w, tl_z_w, rho, tl_rho, eq_tide, tl_eq_tide, pair, tl_ru, tl_rv)