61 SUBROUTINE ana_m2obc_tile (ng, tile, model, &
62 & LBi, UBi, LBj, UBj, &
63 & IminS, ImaxS, JminS, JmaxS, &
65 & angler, h, pm, pn, on_u, &
80 integer,
intent(in) :: ng, tile, model
81 integer,
intent(in) :: LBi, UBi, LBj, UBj
82 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
83 integer,
intent(in) :: knew
86 real(r8),
intent(in) :: angler(LBi:,LBj:)
87 real(r8),
intent(in) :: h(LBi:,LBj:)
88 real(r8),
intent(in) :: pm(LBi:,LBj:)
89 real(r8),
intent(in) :: pn(LBi:,LBj:)
90 real(r8),
intent(in) :: on_u(LBi:,LBj:)
92 real(r8),
intent(in) :: umask(LBi:,LBj:)
94 real(r8),
intent(in) :: zeta(LBi:,LBj:,:)
96 real(r8),
intent(in) :: angler(LBi:UBi,LBj:UBj)
97 real(r8),
intent(in) :: h(LBi:UBi,LBj:UBj)
98 real(r8),
intent(in) :: pm(LBi:UBi,LBj:UBj)
99 real(r8),
intent(in) :: pn(LBi:UBi,LBj:UBj)
100 real(r8),
intent(in) :: on_u(LBi:UBi,LBj:UBj)
102 real(r8),
intent(in) :: umask(LBi:UBi,LBj:UBj)
104 real(r8),
intent(in) :: zeta(LBi:UBi,LBj:UBj,:)
111 real(r8) :: angle, cff, fac, major, minor, omega, phase, val
113#if defined ESTUARY_TEST || defined INLET_TEST
114 real(r8) :: my_area, my_flux, tid_flow, riv_flow, cff1, cff2, &
118 real(r8) :: my_area, my_width
121#include "set_bounds.h"
127#if defined ESTUARY_TEST
130 &
domain(ng)%Western_Edge(tile))
THEN
133 riv_flow=cff2*300.0_r8*5.0_r8
134 tid_flow=cff1*300.0_r8*10.0_r8
138 cff=0.5_r8*(zeta(istr ,j,knew)+h(istr ,j)+ &
139 & zeta(istr-1,j,knew)+h(istr-1,j))/pn(istr,j)
142 my_flux=-tid_flow*sin(2.0_r8*
pi*
time(ng)/ &
143 & (12.0_r8*3600.0_r8))-riv_flow
145 boundary(ng)%ubar_west(j)=my_flux/my_area
152 &
domain(ng)%Eastern_Edge(tile))
THEN
154 riv_flow=cff2*300.0_r8*5.0_r8
158 cff=0.5_r8*(zeta(iend ,j,knew)+h(iend ,j)+ &
159 & zeta(iend+1,j,knew)+h(iend+1,j))/pn(iend,j)
164 boundary(ng)%ubar_east(j)=my_flux/my_area
171 omega=2.0_r8*
pi/(12.42_r8*3600.0_r8)
172 val=fac*sin(omega*
time(ng))
175 &
domain(ng)%Western_Edge(tile))
THEN
177 cff=sqrt(
g*
grid(ng)%h(istr-1,j))
178 boundary(ng)%ubar_west(j)=(val*cff/
grid(ng)%h(istr-1,j))* &
179 & exp(-
grid(ng)%f(istr-1,j)* &
180 &
grid(ng)%yp(istr-1,j)/cff)
189 &
domain(ng)%Eastern_Edge(tile))
THEN
191 cff=sqrt(
g*
grid(ng)%h(iend,j))
192 val=fac*exp(-
grid(ng)%f(iend,j)*
grid(ng)%yp(istr-1,j)/cff)
193 boundary(ng)%ubar_east(j)=(val*cff/
grid(ng)%h(iend,j))* &
194 & sin(omega*
grid(ng)%xp(iend,j)/cff- &
202#elif defined SED_TEST1
205 &
domain(ng)%Western_Edge(tile))
THEN
207 val=0.5_r8*(zeta(istr-1,j,knew)+h(istr-1,j)+ &
208 & zeta(istr ,j,knew)+h(istr ,j))
209 boundary(ng)%ubar_west(j)=-10.0_r8/val
218 &
domain(ng)%Eastern_Edge(tile))
THEN
220 val=0.5_r8*(zeta(iend ,j,knew)+h(iend ,j)+ &
221 & zeta(iend+1,j,knew)+h(iend+1,j))
222 boundary(ng)%ubar_east(j)=-10.0_r8/val
229#elif defined TEST_CHAN
230 ramp=min(
time(ng)/150000.0_r8,1.0_r8)
233 &
domain(ng)%Western_Edge(tile))
THEN
237 my_area=my_area+0.5_r8*(zeta(istr-1,j,knew)+h(istr-1,j)+ &
238 & zeta(istr ,j,knew)+h(istr ,j))* &
240 my_width=my_width+on_u(istr,j)
242 fac=my_width*10.0_r8*1.0_r8*ramp
244 boundary(ng)%ubar_west(j)=fac/my_area
250 &
domain(ng)%Eastern_Edge(tile))
THEN
254 my_area=my_area+0.5_r8*(zeta(iend+1,j,knew)+h(iend+1,j)+ &
255 & zeta(iend ,j,knew)+h(iend ,j))* &
257 my_width=my_width+on_u(iend,j)
259 fac=my_width*10.0_r8*1.0_r8*ramp
261 boundary(ng)%ubar_east(j)=fac/my_area
268 &
domain(ng)%Western_Edge(tile))
THEN
272 my_area=my_area+0.5_r8*(zeta(istr-1,j,knew)+h(istr-1,j)+ &
273 & zeta(istr ,j,knew)+h(istr ,j))* &
275 my_width=my_width+on_u(istr,j)
277 fac=my_width*0.39_r8*0.51_r8
279 boundary(ng)%ubar_west(j)=fac/my_area
285 &
domain(ng)%Eastern_Edge(tile))
THEN
289 my_area=my_area+0.5_r8*(zeta(iend+1,j,knew)+h(iend+1,j)+ &
290 & zeta(iend ,j,knew)+h(iend ,j))* &
292 my_width=my_width+on_u(iend,j)
294 fac=my_width*0.39_r8*0.51_r8
296 boundary(ng)%ubar_east(j)=fac/my_area
303 &
domain(ng)%Western_Edge(tile))
THEN
305 omega=2.0_r8*
pi*
time(ng)/(12.42_r8*3600.0_r8)
306 minor=0.0143_r8+(0.0143_r8+0.010_r8)/real(iend+1,r8)
307 major=0.1144_r8+(0.1144_r8-0.013_r8)/real(iend+1,r8)
308 phase=(318.0_r8+(318.0_r8-355.0_r8)/real(iend+1,r8))*
deg2rad
309 angle=(125.0_r8+(125.0_r8- 25.0_r8)/real(iend+1,r8))*
deg2rad
311 val=0.5_r8*(angler(istr-1,j)+angler(istr,j))
312 boundary(ng)%ubar_west(j)=fac*(major*cos(angle-val)* &
313 & cos(omega-phase)- &
314 & minor*sin(angle-val)* &
318 val=0.5_r8*(angler(istr-1,j-1)+angler(istr-1,j))
319 boundary(ng)%vbar_west(j)=fac*(major*sin(angle-val)* &
320 & cos(omega-phase)- &
321 & minor*sin(angle-val)* &
328 &
domain(ng)%Eastern_Edge(tile))
THEN
330 omega=2.0_r8*
pi*
time(ng)/(12.42_r8*3600.0_r8)
331 minor=0.0143_r8+(0.0143_r8+0.010_r8)
332 major=0.1144_r8+(0.1144_r8-0.013_r8)
333 phase=(318.0_r8+(318.0_r8-355.0_r8))*
deg2rad
334 angle=(125.0_r8+(125.0_r8- 25.0_r8))*
deg2rad
336 val=0.5_r8*(angler(iend,j)+angler(iend+1,j))
337 boundary(ng)%ubar_east(j)=fac*(major*cos(angle-val)* &
338 & cos(omega-phase)- &
339 & minor*sin(angle-val)* &
343 val=0.5_r8*(angler(iend+1,j-1)+angler(iend+1,j))
344 boundary(ng)%vbar_east(j)=fac*(major*sin(angle-val)* &
345 & cos(omega-phase)- &
346 & minor*sin(angle-val)* &
353 &
domain(ng)%Eastern_Edge(tile))
THEN
364 &
domain(ng)%Western_Edge(tile))
THEN
375 &
domain(ng)%Southern_Edge(tile))
THEN
386 &
domain(ng)%Northern_Edge(tile))
THEN