103
104
108
109
110
111 integer, intent(in) :: ng, tile
112 integer, intent(in) :: LBi, UBi, LBj, UBj
113 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
114 integer, intent(in) :: kout, Linp
115# ifdef SOLVE3D
116 integer, intent(in) :: nout
117# endif
118
119# ifdef ASSUMED_SHAPE
120# ifdef MASKING
121 real(r8), intent(in) :: rmask(LBi:,LBj:)
122 real(r8), intent(in) :: umask(LBi:,LBj:)
123 real(r8), intent(in) :: vmask(LBi:,LBj:)
124# endif
125# ifdef SOLVE3D
126 real(r8), intent(inout) :: tl_u(LBi:,LBj:,:,:)
127 real(r8), intent(inout) :: tl_v(LBi:,LBj:,:,:)
128 real(r8), intent(inout) :: tl_t(LBi:,LBj:,:,:,:)
129# endif
130# ifndef SOLVE3D
131 real(r8), intent(inout) :: tl_ubar(LBi:,LBj:,:)
132 real(r8), intent(inout) :: tl_vbar(LBi:,LBj:,:)
133# endif
134 real(r8), intent(inout) :: tl_zeta(LBi:,LBj:,:)
135# ifdef SOLVE3D
136 real(r8), intent(inout) :: ad_u(LBi:,LBj:,:,:)
137 real(r8), intent(inout) :: ad_v(LBi:,LBj:,:,:)
138 real(r8), intent(inout) :: ad_t(LBi:,LBj:,:,:,:)
139# endif
140# ifndef SOLVE3D
141 real(r8), intent(inout) :: ad_ubar(LBi:,LBj:,:)
142 real(r8), intent(inout) :: ad_vbar(LBi:,LBj:,:)
143# endif
144 real(r8), intent(inout) :: ad_zeta(LBi:,LBj:,:)
145# else
146# ifdef MASKING
147 real(r8), intent(in) :: rmask(LBi:UBi,LBj:UBj)
148 real(r8), intent(in) :: umask(LBi:UBi,LBj:UBj)
149 real(r8), intent(in) :: vmask(LBi:UBi,LBj:UBj)
150# endif
151# ifdef SOLVE3D
152 real(r8), intent(inout) :: tl_u(LBi:UBi,LBj:UBj,N(ng),2)
153 real(r8), intent(inout) :: tl_v(LBi:UBi,LBj:UBj,N(ng),2)
154 real(r8), intent(inout) :: tl_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
155# endif
156# ifndef SOLVE3D
157 real(r8), intent(inout) :: tl_ubar(LBi:UBi,LBj:UBj,:)
158 real(r8), intent(inout) :: tl_vbar(LBi:UBi,LBj:UBj,:)
159# endif
160 real(r8), intent(inout) :: tl_zeta(LBi:UBi,LBj:UBj,:)
161# ifdef SOLVE3D
162 real(r8), intent(inout) :: ad_u(LBi:UBi,LBj:UBj,N(ng),2)
163 real(r8), intent(inout) :: ad_v(LBi:UBi,LBj:UBj,N(ng),2)
164 real(r8), intent(inout) :: ad_t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng))
165# endif
166# ifndef SOLVE3D
167 real(r8), intent(inout) :: ad_ubar(LBi:UBi,LBj:UBj,:)
168 real(r8), intent(inout) :: ad_vbar(LBi:UBi,LBj:UBj,:)
169# endif
170 real(r8), intent(inout) :: ad_zeta(LBi:UBi,LBj:UBj,:)
171# endif
172
173
174
175 integer :: i, itrc, j, k
176
177# include "set_bounds.h"
178
179
180
181
182
183
184
185 DO j=jstrr,jendr
186 DO i=istrr,iendr
187 ad_zeta(i,j,kout)=tl_zeta(i,j,linp)
188#ifdef MASKING
189 ad_zeta(i,j,kout)=ad_zeta(i,j,kout)*rmask(i,j)
190#endif
191 END DO
192 END DO
193#ifndef SOLVE3D
194
195
196
197 DO j=jstrr,jendr
198 DO i=istr,iendr
199 ad_ubar(i,j,kout)=tl_ubar(i,j,linp)
200#ifdef MASKING
201 ad_ubar(i,j,kout)=ad_ubar(i,j,kout)*umask(i,j)
202#endif
203 END DO
204 END DO
205
206 DO j=jstr,jendr
207 DO i=istrr,iendr
208 ad_vbar(i,j,kout)=tl_vbar(i,j,linp)
209#ifdef MASKING
210 ad_vbar(i,j,kout)=ad_vbar(i,j,kout)*vmask(i,j)
211#endif
212 END DO
213 END DO
214#endif
215# ifdef SOLVE3D
216
217
218
220 DO j=jstrr,jendr
221 DO i=istr,iendr
222 ad_u(i,j,k,nout)=tl_u(i,j,k,linp)
223#ifdef MASKING
224 ad_u(i,j,k,nout)=ad_u(i,j,k,nout)*umask(i,j)
225#endif
226 END DO
227 END DO
228 END DO
229
231 DO j=jstr,jendr
232 DO i=istrr,iendr
233 ad_v(i,j,k,nout)=tl_v(i,j,k,linp)
234#ifdef MASKING
235 ad_v(i,j,k,nout)=ad_v(i,j,k,nout)*vmask(i,j)
236#endif
237 END DO
238 END DO
239 END DO
240
241
242
245 DO j=jstrr,jendr
246 DO i=istrr,iendr
247 ad_t(i,j,k,nout,itrc)=tl_t(i,j,k,linp,itrc)
248#ifdef MASKING
249 ad_t(i,j,k,nout,itrc)=ad_t(i,j,k,nout,itrc)*rmask(i,j)
250#endif
251 END DO
252 END DO
253 END DO
254 END DO
255# endif
256
257 RETURN
integer, dimension(:), allocatable n
integer, dimension(:), allocatable nt