64 SUBROUTINE ana_smflux_tile (ng, tile, model, &
65 & LBi, UBi, LBj, UBj, &
66 & IminS, ImaxS, JminS, JmaxS, &
74 & tl_sustr, tl_svstr, &
89 integer,
intent(in) :: ng, tile, model
90 integer,
intent(in) :: LBi, UBi, LBj, UBj
91 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
94 real(r8),
intent(in) :: angler(LBi:,LBj:)
96 real(r8),
intent(in) :: lonr(LBi:,LBj:)
97 real(r8),
intent(in) :: latr(LBi:,LBj:)
99 real(r8),
intent(in) :: xr(LBi:,LBj:)
100 real(r8),
intent(in) :: yr(LBi:,LBj:)
102 real(r8),
intent(out) :: sustr(LBi:,LBj:)
103 real(r8),
intent(out) :: svstr(LBi:,LBj:)
105 real(r8),
intent(out) :: tl_sustr(LBi:,LBj:)
106 real(r8),
intent(out) :: tl_svstr(LBi:,LBj:)
109 real(r8),
intent(in) :: angler(LBi:UBi,LBj:UBj)
111 real(r8),
intent(in) :: lonr(LBi:UBi,LBj:UBj)
112 real(r8),
intent(in) :: latr(LBi:UBi,LBj:UBj)
114 real(r8),
intent(in) :: xr(LBi:UBi,LBj:UBj)
115 real(r8),
intent(in) :: yr(LBi:UBi,LBj:UBj)
117 real(r8),
intent(out) :: sustr(LBi:UBi,LBj:UBj)
118 real(r8),
intent(out) :: svstr(LBi:UBi,LBj:UBj)
120 real(r8),
intent(out) :: tl_sustr(LBi:UBi,LBj:UBj)
121 real(r8),
intent(out) :: tl_svstr(LBi:UBi,LBj:UBj)
129 real(r8) :: Ewind, Nwind, cff, val1, val2, windamp, winddir
130#if defined LAKE_SIGNELL
131 real(r8) :: cff1, mxst, ramp_u, ramp_time, ramp_d
134#include "set_bounds.h"
142 val1=5.0e-05_r8*(1.0_r8+tanh((
time(ng)-6.0_r8*86400.0_r8)/ &
143 & (3.0_r8*86400.0_r8)))
144 val2=2.0_r8*
pi/
el(ng)
147 sustr(i,j)=-val1*cos(val2*yr(i,j))
149 tl_sustr(i,j)=-val1*cos(val2*yr(i,j))
167 sustr(i,j)=5.0e-05_r8*sin(2.0_r8*
pi*
tdays(ng)/10.0_r8)* &
168 & (1.0_r8-tanh((yr(i,j)-0.5_r8*
el(ng))/10000.0_r8))
170 tl_sustr(i,j)=5.0e-05_r8*sin(2.0_r8*
pi*
tdays(ng)/10.0_r8)* &
171 & (1.0_r8-tanh((yr(i,j)-0.5_r8*
el(ng))/10000.0_r8))
175#elif defined CHANNEL_NECK
179 windamp=-0.01_r8/
rho0
185 tl_sustr(i,j)=windamp
189#elif defined MIXED_LAYER
194 tl_sustr(i,j)=0.0001_r8
198#elif defined DOUBLE_GYRE
200 windamp=-0.05_r8/
rho0
201 val1=2.0_r8*
pi/
el(ng)
204 sustr(i,j)=windamp*cos(val1*yr(i,j))
206 tl_sustr(i,j)=windamp*cos(val1*yr(i,j))
210#elif defined FLT_TEST
213 sustr(i,j)=1.0e-03_r8
215 tl_sustr(i,j)=1.0e-03_r8
219#elif defined LAKE_SIGNELL
226 cff1=min((0.5_r8*(tanh((
time(ng)/3600.0_r8-ramp_u)/ &
227 & (ramp_time/5.0_r8))+1.0_r8)), &
228 & (1.0_r8-(0.5_r8*(tanh((
time(ng)/3600.0_r8-ramp_d)/ &
229 & (ramp_time/5.0_r8))+1.0_r8))))
230 sustr(i,j)=mxst/
rho0*cff1
232 tl_sustr(i,j)=mxst/
rho0*cff1
236#elif defined LMD_TEST
237 IF (
time(ng).le.57600.0_r8)
THEN
238 windamp=-0.6_r8*sin(
pi*
time(ng)/57600.0_r8)* &
247 tl_sustr(i,j)=windamp
251#elif defined NJ_BIGHT
273 ewind=windamp*cos(
pi*winddir/180.0_r8)/
rho0
274 nwind=windamp*sin(
pi*winddir/180.0_r8)/
rho0
277 val1=0.5_r8*(angler(i-1,j)+angler(i,j))
278 sustr(i,j)=ewind*cos(val1)+nwind*sin(val1)
280 tl_sustr(i,j)=ewind*cos(val1)+nwind*sin(val1)
288 IF (
time(ng).gt.3000.0_r8)
THEN
297#elif defined SHOREFACE
306#elif defined UPWELLING
326 tl_sustr(i,j)=windamp
331#elif defined WINDBASIN
341 tl_sustr(i,j)=windamp
370#elif defined LMD_TEST
371 IF (
time(ng).le.57600.0_r8)
THEN
372 windamp=-0.6_r8*sin(
pi*
time(ng)/57600.0_r8)* &
381 tl_svstr(i,j)=windamp
385#elif defined NJ_BIGHT
388 val1=0.5_r8*(angler(i,j)+angler(i,j-1))
389 svstr(i,j)=-ewind*sin(val1)+nwind*cos(val1)
391 tl_svstr(i,j)=-ewind*sin(val1)+nwind*cos(val1)
404#elif defined SHOREFACE
413#elif defined UPWELLING
424 tl_svstr(i,j)=windamp
453 & lbi, ubi, lbj, ubj, &
457 & lbi, ubi, lbj, ubj, &
461 & lbi, ubi, lbj, ubj, &
465 & lbi, ubi, lbj, ubj, &
472 & lbi, ubi, lbj, ubj, &
478 & lbi, ubi, lbj, ubj, &
481 & tl_sustr, tl_svstr)
subroutine ana_smflux_tile(ng, tile, model, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs, angler, lonr, latr, xr, yr, tl_sustr, tl_svstr, sustr, svstr)
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)