C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/submesoscale/code/obcs_check_grid.F,v 1.1 2010/03/19 19:28:27 jmc Exp $ C $Name: $ #include "OBCS_OPTIONS.h" SUBROUTINE OBCS_CHECK_GRID( myThid ) C *==========================================================* C | SUBROUTINE OBCS_CHECK_GRID | C | o Fix overlap regions to avoid discontinuities | C | in dxc, dyc, etc. | C *==========================================================* C *==========================================================* IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "OBCS.h" C === Routine arguments === C myThid - Number of this instances INTEGER myThid #ifdef ALLOW_OBCS C === Local variables === C msgBuf - Informational/error meesage buffer INTEGER bi, bj, I, J, I_obc, J_obc C-- Modify dxC and dyC in the OBCS overlap regions to avoid C discontinuities in horizontal gradients DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) #ifdef ALLOW_OBCS_NORTH DO I=1-Olx,sNx+Olx J_obc = OB_Jn(I,bi,bj) IF (J_obc.NE.0) THEN DO J = J_obc+1, J_obc+Oly dxC(I,J,bi,bj) = dxC(I,J_obc,bi,bj) dyC(I,J,bi,bj) = dyC(I,J_obc,bi,bj) ENDDO ENDIF ENDDO #endif #ifdef ALLOW_OBCS_SOUTH DO I=1-Olx,sNx+Olx J_obc = OB_Js(I,bi,bj) IF (J_obc.NE.0) THEN DO J = J_obc-Oly, J_obc-1 dxC(I,J,bi,bj) = dxC(I,J_obc,bi,bj) dyC(I,J,bi,bj) = dyC(I,J_obc,bi,bj) ENDDO ENDIF ENDDO #endif #ifdef ALLOW_OBCS_EAST DO J=1-Oly,sNy+Oly I_obc = OB_Ie(J,bi,bj) IF (I_obc.NE.0) THEN DO I = I_obc+1, I_obc+Olx dxC(I,J,bi,bj) = dxC(I_obc,J,bi,bj) dyC(I,J,bi,bj) = dyC(I_obc,J,bi,bj) ENDDO ENDIF ENDDO #endif #ifdef ALLOW_OBCS_WEST DO J=1-Oly,sNy+Oly I_obc=OB_Iw(J,bi,bj) IF (I_obc.NE.0) THEN DO I = I_obc-Olx, I_obc-1 dxC(I,J,bi,bj) = dxC(I_obc,J,bi,bj) dyC(I,J,bi,bj) = dyC(I_obc,J,bi,bj) ENDDO ENDIF ENDDO #endif ENDDO ENDDO #endif /* ALLOW_OBCS */ RETURN END