27 & LBi, UBi, LBj, UBj, LBij, UBij, &
30 & rmask, umask, vmask, &
37 & s_ubar_obc, s_vbar_obc, &
55#if defined ADJUST_BOUNDARY || defined ADJUST_STFLUX || \
56 defined adjust_wstress
63 integer,
intent(in) :: ng, tile
64 integer,
intent(in) :: lbi, ubi, lbj, ubj, lbij, ubij
65 integer,
intent(in) :: lout
67 real(r8),
intent(in) :: fac
71 real(r8),
intent(in) :: rmask(lbi:,lbj:)
72 real(r8),
intent(in) :: umask(lbi:,lbj:)
73 real(r8),
intent(in) :: vmask(lbi:,lbj:)
75# ifdef ADJUST_BOUNDARY
77 real(r8),
intent(inout) :: s_t_obc(lbij:,:,:,:,:,:)
78 real(r8),
intent(inout) :: s_u_obc(lbij:,:,:,:,:)
79 real(r8),
intent(inout) :: s_v_obc(lbij:,:,:,:,:)
81 real(r8),
intent(inout) :: s_ubar_obc(lbij:,:,:,:)
82 real(r8),
intent(inout) :: s_vbar_obc(lbij:,:,:,:)
83 real(r8),
intent(inout) :: s_zeta_obc(lbij:,:,:,:)
86 real(r8),
intent(inout) :: s_sustr(lbi:,lbj:,:,:)
87 real(r8),
intent(inout) :: s_svstr(lbi:,lbj:,:,:)
91 real(r8),
intent(inout) :: s_tflux(lbi:,lbj:,:,:,:)
93 real(r8),
intent(inout) :: s_t(lbi:,lbj:,:,:,:)
94 real(r8),
intent(inout) :: s_u(lbi:,lbj:,:,:)
95 real(r8),
intent(inout) :: s_v(lbi:,lbj:,:,:)
97 real(r8),
intent(inout) :: s_ubar(lbi:,lbj:,:)
98 real(r8),
intent(inout) :: s_vbar(lbi:,lbj:,:)
100 real(r8),
intent(inout) :: s_zeta(lbi:,lbj:,:)
105 real(r8),
intent(in) :: rmask(lbi:ubi,lbj:ubj)
106 real(r8),
intent(in) :: umask(lbi:ubi,lbj:ubj)
107 real(r8),
intent(in) :: vmask(lbi:ubi,lbj:ubj)
109# ifdef ADJUST_BOUNDARY
111 real(r8),
intent(inout) :: s_t_obc(lbij:ubij,
n(ng),4, &
112 & Nbrec(ng),2,NT(ng))
113 real(r8),
intent(inout) :: s_u_obc(lbij:ubij,
n(ng),4,
nbrec(ng),2)
114 real(r8),
intent(inout) :: s_v_obc(lbij:ubij,
n(ng),4,
nbrec(ng),2)
116 real(r8),
intent(inout) :: s_ubar_obc(lbij:ubij,4,
nbrec(ng),2)
117 real(r8),
intent(inout) :: s_vbar_obc(lbij:ubij,4,
nbrec(ng),2)
118 real(r8),
intent(inout) :: s_zeta_obc(lbij:ubij,4,
nbrec(ng),2)
120# ifdef ADJUST_WSTRESS
121 real(r8),
intent(inout) :: s_sustr(lbi:ubi,lbj:ubj,
nfrec(ng),2)
122 real(r8),
intent(inout) :: s_svstr(lbi:ubi,lbj:ubj,
nfrec(ng),2)
126 real(r8),
intent(inout) :: s_tflux(lbi:ubi,lbj:ubj, &
127 & Nfrec(ng),2,NT(ng))
129 real(r8),
intent(inout) :: s_t(lbi:ubi,lbj:ubj,
n(ng),3,
nt(ng))
130 real(r8),
intent(inout) :: s_u(lbi:ubi,lbj:ubj,
n(ng),2)
131 real(r8),
intent(inout) :: s_v(lbi:ubi,lbj:ubj,
n(ng),2)
133 real(r8),
intent(inout) :: s_ubar(lbi:ubi,lbj:ubj,:)
134 real(r8),
intent(inout) :: s_vbar(lbi:ubi,lbj:ubj,:)
136 real(r8),
intent(inout) :: s_zeta(lbi:ubi,lbj:ubj,:)
142 integer :: ib, ir, it
144#include "set_bounds.h"
158#ifdef ADJUST_BOUNDARY
165 &
domain(ng)%Western_Edge(tile))
THEN
167 s_zeta_obc(j,
iwest,ir,lout)=fac
171 &
domain(ng)%Eastern_Edge(tile))
THEN
173 s_zeta_obc(j,
ieast,ir,lout)=fac
177 &
domain(ng)%Southern_Edge(tile))
THEN
180 s_zeta_obc(i,
isouth,ir,lout)=fac
184 &
domain(ng)%Northern_Edge(tile))
THEN
186 s_zeta_obc(i,
inorth,ir,lout)=fac
204#ifdef ADJUST_BOUNDARY
211 &
domain(ng)%Western_Edge(tile))
THEN
213 s_ubar_obc(j,
iwest,ir,lout)=fac
217 &
domain(ng)%Eastern_Edge(tile))
THEN
219 s_ubar_obc(j,
ieast,ir,lout)=fac
223 &
domain(ng)%Southern_Edge(tile))
THEN
225 s_ubar_obc(i,
isouth,ir,lout)=fac
229 &
domain(ng)%Northern_Edge(tile))
THEN
231 s_ubar_obc(i,
inorth,ir,lout)=fac
249#ifdef ADJUST_BOUNDARY
256 &
domain(ng)%Western_Edge(tile))
THEN
258 s_vbar_obc(j,
iwest,ir,lout)=fac
262 &
domain(ng)%Eastern_Edge(tile))
THEN
264 s_vbar_obc(j,
ieast,ir,lout)=fac
268 &
domain(ng)%Southern_Edge(tile))
THEN
270 s_vbar_obc(i,
isouth,ir,lout)=fac
274 &
domain(ng)%Northern_Edge(tile))
THEN
276 s_vbar_obc(i,
inorth,ir,lout)=fac
290 s_sustr(i,j,ir,lout)=fac
295 s_svstr(i,j,ir,lout)=fac
313# ifdef ADJUST_BOUNDARY
320 &
domain(ng)%Western_Edge(tile))
THEN
323 s_u_obc(j,k,
iwest,ir,lout)=fac
328 &
domain(ng)%Eastern_Edge(tile))
THEN
331 s_u_obc(j,k,
ieast,ir,lout)=fac
336 &
domain(ng)%Southern_Edge(tile))
THEN
339 s_u_obc(i,k,
isouth,ir,lout)=fac
344 &
domain(ng)%Northern_Edge(tile))
THEN
347 s_u_obc(i,k,
inorth,ir,lout)=fac
365# ifdef ADJUST_BOUNDARY
372 &
domain(ng)%Western_Edge(tile))
THEN
375 s_v_obc(j,k,
iwest,ir,lout)=fac
380 &
domain(ng)%Eastern_Edge(tile))
THEN
383 s_v_obc(j,k,
ieast,ir,lout)=fac
388 &
domain(ng)%Southern_Edge(tile))
THEN
391 s_v_obc(i,k,
isouth,ir,lout)=fac
396 &
domain(ng)%Northern_Edge(tile))
THEN
399 s_v_obc(i,k,
inorth,ir,lout)=fac
413 s_t(i,j,k,lout,it)=fac
419# ifdef ADJUST_BOUNDARY
427 &
domain(ng)%Western_Edge(tile))
THEN
430 s_t_obc(j,k,
iwest,ir,lout,it)=fac
435 &
domain(ng)%Eastern_Edge(tile))
THEN
438 s_t_obc(j,k,
ieast,ir,lout,it)=fac
443 &
domain(ng)%Southern_Edge(tile))
THEN
446 s_t_obc(i,k,
isouth,ir,lout,it)=fac
451 &
domain(ng)%Northern_Edge(tile))
THEN
454 s_t_obc(i,k,
inorth,ir,lout,it)=fac
472 s_tflux(i,j,ir,lout,it)=fac
subroutine, public state_initialize(ng, tile, lbi, ubi, lbj, ubj, lbij, ubij, lout, fac, rmask, umask, vmask, s_t_obc, s_u_obc, s_v_obc, s_ubar_obc, s_vbar_obc, s_zeta_obc, s_sustr, s_svstr, s_tflux, s_t, s_u, s_v, s_zeta)