C $Header: /u/gcmpack/MITgcm/pkg/obcs/obcs_init_fixed.F,v 1.9 2010/10/25 22:44:09 jmc Exp $
C $Name: $
#include "OBCS_OPTIONS.h"
SUBROUTINE OBCS_INIT_FIXED( myThid )
C *==========================================================*
C | SUBROUTINE OBCS_INIT_FIXED
C | o Initialise OBCs fixed arrays
C *==========================================================*
C *==========================================================*
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "OBCS.h"
#include "GRID.h"
#ifdef NONLIN_FRSURF
#include "SURFACE.h"
#endif
C == Routine arguments ==
C myThid :: my Thread Id. number
INTEGER myThid
#ifdef ALLOW_OBCS
C == Local variables ==
INTEGER bi, bj
INTEGER i, j
#ifdef NONLIN_FRSURF
INTEGER k
#endif
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
tileHasOBN(bi,bj) = .FALSE.
tileHasOBS(bi,bj) = .FALSE.
tileHasOBE(bi,bj) = .FALSE.
tileHasOBW(bi,bj) = .FALSE.
C-- Set Interior mask to zero beyond OB
DO j=1-OLy,sNy+OLy
C- Eastern boundary
IF ( OB_Ie(j,bi,bj).NE.0 ) THEN
tileHasOBE(bi,bj) = .TRUE.
DO i=OB_Ie(j,bi,bj),sNx+OLx
maskInC(i,j,bi,bj) = 0.
maskInW(i,j,bi,bj) = 0.
maskInS(i,j,bi,bj) = 0.
IF (j.LT.sNy+OLy) maskInS(i,j+1,bi,bj) = 0.
ENDDO
ENDIF
C- Western boundary
IF ( OB_Iw(j,bi,bj).NE.0 ) THEN
tileHasOBW(bi,bj) = .TRUE.
DO i=1-OLx,OB_Iw(j,bi,bj)
maskInC(i,j,bi,bj) = 0.
maskInS(i,j,bi,bj) = 0.
IF (j.LT.sNy+OLy) maskInS(i,j+1,bi,bj) = 0.
ENDDO
DO i=1-OLx,OB_Iw(j,bi,bj)+1
maskInW(i,j,bi,bj) = 0.
ENDDO
ENDIF
ENDDO
DO i=1-OLx,sNx+OLx
C- Northern boundary
IF ( OB_Jn(i,bi,bj).NE.0 ) THEN
tileHasOBN(bi,bj) = .TRUE.
DO j=OB_Jn(i,bi,bj),sNy+OLy
maskInC(i,j,bi,bj) = 0.
maskInW(i,j,bi,bj) = 0.
IF (i.LT.sNx+OLx) maskInW(i+1,j,bi,bj) = 0.
maskInS(i,j,bi,bj) = 0.
ENDDO
ENDIF
C- Southern boundary
IF ( OB_Js(i,bi,bj).NE.0 ) THEN
tileHasOBS(bi,bj) = .TRUE.
DO j=1-OLy,OB_Js(i,bi,bj)
maskInC(i,j,bi,bj) = 0.
maskInW(i,j,bi,bj) = 0.
IF (i.LT.sNx+OLx) maskInW(i+1,j,bi,bj) = 0.
ENDDO
DO j=1-OLy,OB_Js(i,bi,bj)+1
maskInS(i,j,bi,bj) = 0.
ENDDO
ENDIF
ENDDO
#ifdef NONLIN_FRSURF
C-- Save the initial hFacS at the N & S boundaries :
DO i=1-OLx,sNx+OLx
OBNhFac0(i,bi,bj)=0.
OBShFac0(i,bi,bj)=0.
C- Northern boundary
IF ( OB_Jn(i,bi,bj).NE.0 ) THEN
j = OB_Jn(i,bi,bj)
k = ksurfS(i,j,bi,bj)
IF (k.LE.Nr) OBNhFac0(i,bi,bj)=hFacS(i,j,k,bi,bj)
ENDIF
C- Southern boundary
IF ( OB_Js(i,bi,bj).NE.0 ) THEN
j = OB_Js(i,bi,bj)+1
k = ksurfS(i,j,bi,bj)
IF (k.LE.Nr) OBShFac0(i,bi,bj)=hFacS(i,j,k,bi,bj)
ENDIF
ENDDO
C-- Save the initial hFacW at the E & W boundaries :
DO j=1-OLy,sNy+OLy
OBEhFac0(j,bi,bj)=0.
OBWhFac0(j,bi,bj)=0.
C- Eastern boundary
IF ( OB_Ie(j,bi,bj).NE.0 ) THEN
i = OB_Ie(j,bi,bj)
k = ksurfW(i,j,bi,bj)
IF (k.LE.Nr) OBEhFac0(j,bi,bj)=hFacW(i,j,k,bi,bj)
ENDIF
C- Western boundary
IF ( OB_Iw(j,bi,bj).NE.0 ) THEN
i = OB_Iw(j,bi,bj)+1
k = ksurfW(i,j,bi,bj)
IF (k.LE.Nr) OBWhFac0(j,bi,bj)=hFacW(i,j,k,bi,bj)
ENDIF
ENDDO
#endif /* NONLIN_FRSURF */
C-- end bi,bj loops
ENDDO
ENDDO
#endif /* ALLOW_OBCS */
RETURN
END