254 |
|
|
255 |
RETURN |
RETURN |
256 |
END |
END |
257 |
|
|
258 |
|
SUBROUTINE OBCS_CHECK_GRID( myThid ) |
259 |
|
C /==========================================================\ |
260 |
|
C | SUBROUTINE OBCS_CHECK_GRID | |
261 |
|
C | o Fix overlap regions to avoid discontinuities | |
262 |
|
C | in dxc, dyc, etc. | |
263 |
|
C |==========================================================| |
264 |
|
C \==========================================================/ |
265 |
|
IMPLICIT NONE |
266 |
|
|
267 |
|
C === Global variables === |
268 |
|
#include "SIZE.h" |
269 |
|
#include "EEPARAMS.h" |
270 |
|
#include "PARAMS.h" |
271 |
|
#include "GRID.h" |
272 |
|
#include "OBCS.h" |
273 |
|
|
274 |
|
C === Routine arguments === |
275 |
|
C myThid - Number of this instances |
276 |
|
INTEGER myThid |
277 |
|
|
278 |
|
#ifdef ALLOW_OBCS |
279 |
|
C === Local variables === |
280 |
|
C msgBuf - Informational/error meesage buffer |
281 |
|
INTEGER bi, bj, I, J, I_obc, J_obc |
282 |
|
|
283 |
|
C-- Modify dxC and dyC in the OBCS overlap regions to avoid |
284 |
|
C discontinuities in horizontal gradients |
285 |
|
DO bj = myByLo(myThid), myByHi(myThid) |
286 |
|
DO bi = myBxLo(myThid), myBxHi(myThid) |
287 |
|
|
288 |
|
#ifdef ALLOW_OBCS_NORTH |
289 |
|
DO I=1-Olx,sNx+Olx |
290 |
|
J_obc = OB_Jn(I,bi,bj) |
291 |
|
IF (J_obc.NE.0) THEN |
292 |
|
DO J = J_obc+1, J_obc+Oly |
293 |
|
dxC(I,J,bi,bj) = dxC(I,J_obc,bi,bj) |
294 |
|
dyC(I,J,bi,bj) = dyC(I,J_obc,bi,bj) |
295 |
|
ENDDO |
296 |
|
ENDIF |
297 |
|
ENDDO |
298 |
|
#endif |
299 |
|
|
300 |
|
#ifdef ALLOW_OBCS_SOUTH |
301 |
|
DO I=1-Olx,sNx+Olx |
302 |
|
J_obc = OB_Js(I,bi,bj) |
303 |
|
IF (J_obc.NE.0) THEN |
304 |
|
DO J = J_obc-Oly, J_obc-1 |
305 |
|
dxC(I,J,bi,bj) = dxC(I,J_obc,bi,bj) |
306 |
|
dyC(I,J,bi,bj) = dyC(I,J_obc,bi,bj) |
307 |
|
ENDDO |
308 |
|
ENDIF |
309 |
|
ENDDO |
310 |
|
#endif |
311 |
|
|
312 |
|
#ifdef ALLOW_OBCS_EAST |
313 |
|
DO J=1-Oly,sNy+Oly |
314 |
|
I_obc = OB_Ie(J,bi,bj) |
315 |
|
IF (I_obc.NE.0) THEN |
316 |
|
DO I = I_obc+1, I_obc+Olx |
317 |
|
dxC(I,J,bi,bj) = dxC(I_obc,J,bi,bj) |
318 |
|
dyC(I,J,bi,bj) = dyC(I_obc,J,bi,bj) |
319 |
|
ENDDO |
320 |
|
ENDIF |
321 |
|
ENDDO |
322 |
|
#endif |
323 |
|
|
324 |
|
#ifdef ALLOW_OBCS_WEST |
325 |
|
DO J=1-Oly,sNy+Oly |
326 |
|
I_obc=OB_Iw(J,bi,bj) |
327 |
|
IF (I_obc.NE.0) THEN |
328 |
|
DO I = I_obc-Olx, I_obc-1 |
329 |
|
dxC(I,J,bi,bj) = dxC(I_obc,J,bi,bj) |
330 |
|
dyC(I,J,bi,bj) = dyC(I_obc,J,bi,bj) |
331 |
|
ENDDO |
332 |
|
ENDIF |
333 |
|
ENDDO |
334 |
|
#endif |
335 |
|
|
336 |
|
ENDDO |
337 |
|
ENDDO |
338 |
|
|
339 |
|
#endif /* ALLOW_OBCS */ |
340 |
|
|
341 |
|
RETURN |
342 |
|
END |