120
121
124
125
126
127 integer, intent(in) :: ng, tile
128 integer, intent(in) :: LBi, UBi, LBj, UBj
129 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
130 integer, intent(in) :: Kfrc
131 integer, intent(in) :: Nfrc
132
133# ifdef ASSUMED_SHAPE
134# ifdef SOLVE3D
135 real(r8), intent(inout) :: f_t(LBi:,LBj:,:,:)
136 real(r8), intent(inout) :: f_u(LBi:,LBj:,:)
137 real(r8), intent(inout) :: f_v(LBi:,LBj:,:)
138# ifdef FORCING_SV
139 real(r8), intent(inout) :: f_ubar(LBi:,LBj:)
140 real(r8), intent(inout) :: f_vbar(LBi:,LBj:)
141# endif
142# else
143 real(r8), intent(inout) :: f_ubar(LBi:,LBj:)
144 real(r8), intent(inout) :: f_vbar(LBi:,LBj:)
145# endif
146 real(r8), intent(inout) :: f_zeta(LBi:,LBj:)
147# ifdef SOLVE3D
148 real(r8), intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
149 real(r8), intent(inout) :: ad_u(LBi:,LBj:,:,:)
150 real(r8), intent(inout) :: ad_v(LBi:,LBj:,:,:)
151# ifdef FORCING_SV
152 real(r8), intent(inout) :: ad_ubar(LBi:,LBj:,:)
153 real(r8), intent(inout) :: ad_vbar(LBi:,LBj:,:)
154# endif
155# else
156 real(r8), intent(inout) :: ad_ubar(LBi:,LBj:,:)
157 real(r8), intent(inout) :: ad_vbar(LBi:,LBj:,:)
158# endif
159# ifdef SOLVE3D
160 real(r8), intent(inout) :: ad_Zt_avg1(LBi:,LBj:)
161# endif
162 real(r8), intent(inout) :: ad_zeta(LBi:,LBj:,:)
163# ifdef SOLVE3D
164 real(r8), intent(inout) :: ad_t_sol(LBi:,LBj:,:,:)
165 real(r8), intent(inout) :: ad_u_sol(LBi:,LBj:,:)
166 real(r8), intent(inout) :: ad_v_sol(LBi:,LBj:,:)
167# else
168 real(r8), intent(inout) :: ad_ubar_sol(LBi:,LBj:)
169 real(r8), intent(inout) :: ad_vbar_sol(LBi:,LBj:)
170# endif
171 real(r8), intent(inout) :: ad_zeta_sol(LBi:,LBj:)
172# else
173# ifdef SOLVE3D
174 real(r8), intent(inout) :: f_t(LBi:UBi,LBj:UBj,N(ng),NT(ng))
175 real(r8), intent(inout) :: f_u(LBi:UBi,LBj:UBj,N(ng))
176 real(r8), intent(inout) :: f_v(LBi:UBi,LBj:UBj,N(ng))
177# ifdef FORCING_SV
178 real(r8), intent(inout) :: f_ubar(LBi:UBi,LBj:UBj)
179 real(r8), intent(inout) :: f_vbar(LBi:UBi,LBj:UBj)
180# endif
181# else
182 real(r8), intent(inout) :: f_ubar(LBi:UBi,LBj:UBj)
183 real(r8), intent(inout) :: f_vbar(LBi:UBi,LBj:UBj)
184# endif
185 real(r8), intent(inout) :: f_zeta(LBi:UBi,LBj:UBj)
186# ifdef SOLVE3D
187 real(r8), intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
188 real(r8), intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
189 real(r8), intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
190# ifdef FORCING_SV
191 real(r8), intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
192 real(r8), intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
193# endif
194# else
195 real(r8), intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
196 real(r8), intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
197# endif
198# ifdef SOLVE3D
199 real(r8), intent(inout) :: ad_Zt_avg1(LBi:UBi,LBj:UBj)
200# endif
201 real(r8), intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
202# ifdef SOLVE3D
203 real(r8), intent(inout) :: ad_t_sol(LBi:UBi,LBj:UBj,N(ng),NT(ng))
204 real(r8), intent(inout) :: ad_u_sol(LBi:UBi,LBj:UBj,N(ng))
205 real(r8), intent(inout) :: ad_v_sol(LBi:UBi,LBj:UBj,N(ng))
206# else
207 real(r8), intent(inout) :: ad_ubar_sol(LBi:UBi,LBj:UBj)
208 real(r8), intent(inout) :: ad_vbar_sol(LBi:UBi,LBj:UBj)
209# endif
210 real(r8), intent(inout) :: ad_zeta_sol(LBi:UBi,LBj:UBj)
211# endif
212
213
214
215 integer :: i, j
216# ifdef SOLVE3D
217 integer :: itrc, k
218# endif
219
220# include "set_bounds.h"
221
222
223
224
225
226
227
228# ifdef SOLVE3D
229 DO j=jstrr,jendr
230 DO i=istrr,iendr
231 f_zeta(i,j)=f_zeta(i,j)+ad_zt_avg1(i,j)
232 END DO
233 END DO
234# else
235 DO j=jstrr,jendr
236 DO i=istrr,iendr
237 f_zeta(i,j)=f_zeta(i,j)+ad_zeta(i,j,kfrc)
238 END DO
239 END DO
240# endif
241
242# ifndef SOLVE3D
243
244
245
246 DO j=jstrr,jendr
247 DO i=istr,iendr
248 f_ubar(i,j)=f_ubar(i,j)+ad_ubar(i,j,kfrc)
249 END DO
250 END DO
251
252 DO j=jstr,jendr
253 DO i=istrr,iendr
254 f_vbar(i,j)=f_vbar(i,j)+ad_vbar(i,j,kfrc)
255 END DO
256 END DO
257
258# else
259# ifdef FORCING_SV
260
261
262
263 DO j=jstrr,jendr
264 DO i=istr,iendr
265 f_ubar(i,j)=f_ubar(i,j)+ad_ubar(i,j,1)+ad_ubar(i,j,2)
266 END DO
267 END DO
268
269 DO j=jstr,jendr
270 DO i=istrr,iendr
271 f_vbar(i,j)=f_vbar(i,j)+ad_vbar(i,j,1)+ad_vbar(i,j,2)
272 END DO
273 END DO
274# endif
275
276
277
279 DO j=jstrr,jendr
280 DO i=istr,iendr
281 f_u(i,j,k)=f_u(i,j,k)+ad_u(i,j,k,nfrc)
282 END DO
283 END DO
284 DO j=jstr,jendr
285 DO i=istrr,iendr
286 f_v(i,j,k)=f_v(i,j,k)+ad_v(i,j,k,nfrc)
287 END DO
288 END DO
289 END DO
290
291
292
295 DO j=jstrr,jendr
296 DO i=istrr,iendr
297 f_t(i,j,k,itrc)=f_t(i,j,k,itrc)+ &
298 & ad_t(i,j,k,nfrc,itrc)
299 END DO
300 END DO
301 END DO
302 END DO
303# endif
304
305 RETURN
integer, dimension(:), allocatable n
integer, dimension(:), allocatable nt