C $Header: /u/gcmpack/MITgcm/pkg/obcs/OBCS.h,v 1.22 2009/12/08 00:21:34 jmc Exp $
C $Name:  $

#ifdef ALLOW_OBCS

C--   Private logical flag to record active status of package
c     LOGICAL OBCSisON
c     COMMON /OBCS_PACKAGE/ OBCSisON

C These are input arrays (of integers) that contain the *absolute*
C computational index of an open-boundary (OB) point.
C A zero (0) element means there is no corresponding OB in that column/row.
C The computational coordinate refers to "tracer" cells.
C For a northern/southern OB, the OB V point is to the south/north.
C For an eastern/western OB, the OB U point is to the west/east.
C eg.
C     OB_Jnorth(3)=34  means that:
C          T( 3 ,34) is a an OB point
C          U(3:4,34) is a an OB point
C          V( 4 ,34) is a an OB point
C while
C     OB_Jsouth(3)=1  means that:
C          T( 3 ,1) is a an OB point
C          U(3:4,1) is a an OB point
C          V( 4 ,2) is a an OB point
C
C For convenience, negative values for Jnorth/Ieast refer to
C points relative to the Northern/Eastern edges of the model
C eg. OB_Jnorth(3)=-1  means that the point (3,Ny) is a northern O-B.
C
C OB_Jnorth(Nx)    :: global index array of northern open-boundary point
C OB_Jsouth(Nx)    :: global index array of southern open-boundary point
C OB_Ieast(Ny)     :: global index array of eastern  open-boundary point
C OB_Iwest(Ny)     :: global index array of western  open-boundary point
C useOrlanskiNorth/South/East/West
C                  :: specify Orlanski boundary conditions for northern/
C                     southern/eastern/Western
C useOBCSsponge    :: turns on sponge layer along boundary (def=false)
C spongeThickness  :: number grid points that make up the sponge layer (def=0)
C U/Vrelaxobcsinner/bound :: relaxation time scale (in seconds) for U/V-points
C                     on the boundary (bound) and at the innermost grid point
C                     of the sponge layer (inner); relaxation time scales
C                     in-between are linearly interpolated from these values
C useOBCSbalance   :: balance the volume flux through boundary
C                     at every time step
C useOBCSprescribe :: read boundary conditions from a file
C                      (overrides Orlanski and other boundary values)
C OBCSprintDiags   :: print boundary values to STDOUT (def=true)
C useOBCSYearlyFields :: when reading boundary values by exf, assume yearly
C                     climatology (def=false)
C OBCSfixTopo      :: check and adjust topography for problematic gradients
C                     across boundaries (def=true)
C OB[N,S,E,W][u,v,t,s,a,h,sn,sl,uice,vice]File :: Files with boundary
C                     conditons, the letter combinations mean:
C                     N/S/E/W   :: northern/southern/eastern/western boundary
C                     u/v/t/s   :: ocean u/v velocities, temperature/salinity
C                     a/h       :: sea ice concentration/effective thickness
C                     sn/sl     :: effective snow thickness/sea ice salinity
C                     uice/vice :: sea ice u/v drift velocities
C

      COMMON /PARM_IL_OB/
     & OB_Jnorth,OB_Jsouth,OB_Ieast,OB_Iwest,
     & spongeThickness,
     & useOrlanskiNorth,useOrlanskiSouth,
     & useOrlanskiEast,useOrlanskiWest,
     & useOBCSsponge, useOBCSbalance, useOBCSprescribe,
     & OBCSprintDiags, useOBCSYearlyFields,
     & OBCSfixTopo
      INTEGER OB_Jnorth(Nx)
      INTEGER OB_Jsouth(Nx)
      INTEGER OB_Ieast(Ny)
      INTEGER OB_Iwest(Ny)
      INTEGER spongeThickness
      LOGICAL useOrlanskiNorth
      LOGICAL useOrlanskiSouth
      LOGICAL useOrlanskiEast
      LOGICAL useOrlanskiWest
      LOGICAL useOBCSsponge
      LOGICAL useOBCSbalance
      LOGICAL useOBCSprescribe
      LOGICAL OBCSprintDiags
      LOGICAL useOBCSYearlyFields
      LOGICAL OBCSfixTopo

      COMMON /PARM_R_OB/
     & Urelaxobcsinner,Urelaxobcsbound,
     & Vrelaxobcsinner,Vrelaxobcsbound
      _RS Urelaxobcsinner
      _RS Urelaxobcsbound
      _RS Vrelaxobcsinner
      _RS Vrelaxobcsbound

C--   COMMON /GRID_OB/ Open boudary related stuff
C     OBNu is the U value imposed at the Northern OB
C     OBNv is the V value imposed at the Northern OB
C     OBNt is the T value imposed at the Northern OB
C     OBNs is the S value imposed at the Northern OB
C     OBNa is the ice AREA value imposed at the Northern OB
C     OBNh is the ice HEFF value imposed at the Northern OB
C     OBNsl is the ice HSALT value imposed at the Northern OB
C     OBNsn is the ice HSNOW value imposed at the Northern OB
C     OBNuice is the uice value imposed at the Northern OB
C     OBNvice is the vice value imposed at the Northern OB
C     etc
C
      COMMON /GRID_IND_OB/
     & OB_Jn,OB_Js,OB_Ie,OB_Iw
      INTEGER OB_Jn(1-Olx:sNx+Olx,nSx,nSy)
      INTEGER OB_Js(1-Olx:sNx+Olx,nSx,nSy)
      INTEGER OB_Ie(1-Oly:sNy+Oly,nSx,nSy)
      INTEGER OB_Iw(1-Oly:sNy+Oly,nSx,nSy)

#ifdef ALLOW_OBCS_NORTH
      COMMON /GRID_N_OB/
     &      OBNu,OBNv,OBNt,OBNs
      _RL OBNu (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNv (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNt (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNs (1-Olx:sNx+Olx,Nr,nSx,nSy)
#ifdef ALLOW_OBCS_PRESCRIBE
      COMMON /GRID_N_OB_AUX/
     &      OBNu0,OBNv0,OBNt0,OBNs0,
     &      OBNu1,OBNv1,OBNt1,OBNs1
      _RL OBNu0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNv0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNt0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNs0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNu1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNv1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNt1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNs1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */
#ifdef ALLOW_SEAICE
      COMMON /SEAICE_N_OB/ OBNa,OBNh,OBNa0,OBNh0,OBNa1,OBNh1,
     &     OBNsl,OBNsn,OBNsl0,OBNsn0,OBNsl1,OBNsn1,
     &     OBNuice,OBNvice,OBNuice0,OBNvice0,OBNuice1,OBNvice1
      _RL OBNa  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNh  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNa0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNh0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNa1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNh1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsl  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsn  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsl0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsn0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsl1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsn1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNuice  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNvice  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNuice0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNvice0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNuice1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNvice1 (1-Olx:sNx+Olx,nSx,nSy)
#endif /* ALLOW_SEAICE */
#endif /* ALLOW_OBCS_NORTH */

#ifdef ALLOW_OBCS_SOUTH
      COMMON /GRID_S_OB/
     &      OBSu,OBSv,OBSt,OBSs
      _RL OBSu (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSv (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSt (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSs (1-Olx:sNx+Olx,Nr,nSx,nSy)
#ifdef ALLOW_OBCS_PRESCRIBE
      COMMON /GRID_S_OB_AUX/
     &      OBSu0,OBSv0,OBSt0,OBSs0,
     &      OBSu1,OBSv1,OBSt1,OBSs1
      _RL OBSu0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSv0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSt0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSs0 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSu1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSv1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSt1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSs1 (1-Olx:sNx+Olx,Nr,nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */
#ifdef ALLOW_SEAICE
      COMMON /SEAICE_S_OB/ OBSa,OBSh,OBSa0,OBSh0,OBSa1,OBSh1,
     &     OBSsl,OBSsn,OBSsl0,OBSsn0,OBSsl1,OBSsn1,
     &     OBSuice,OBSvice,OBSuice0,OBSvice0,OBSuice1,OBSvice1
      _RL OBSa  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSh  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSa0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSh0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSa1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSh1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsl  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsn  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsl0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsn0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsl1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsn1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSuice  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSvice  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSuice0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSvice0 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSuice1 (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSvice1 (1-Olx:sNx+Olx,nSx,nSy)
#endif /* ALLOW_SEAICE */
#endif /* ALLOW_OBCS_SOUTH */

#ifdef ALLOW_OBCS_EAST
      COMMON /GRID_E_OB/
     &      OBEu,OBEv,OBEt,OBEs
      _RL OBEu (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEv (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEt (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEs (1-Oly:sNy+Oly,Nr,nSx,nSy)
#ifdef ALLOW_OBCS_PRESCRIBE
      COMMON /GRID_E_OB_AUX/
     &      OBEu0,OBEv0,OBEt0,OBEs0,
     &      OBEu1,OBEv1,OBEt1,OBEs1
      _RL OBEu0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEv0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEt0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEs0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEu1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEv1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEt1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEs1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */
#ifdef ALLOW_SEAICE
      COMMON /SEAICE_E_OB/ OBEa,OBEh,OBEa0,OBEh0,OBEa1,OBEh1,
     &     OBEsl,OBEsn,OBEsl0,OBEsn0,OBEsl1,OBEsn1,
     &     OBEuice,OBEvice,OBEuice0,OBEvice0,OBEuice1,OBEvice1
      _RL OBEa  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEh  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEa0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEh0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEa1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEh1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsl  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsn  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsl0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsn0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsl1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsn1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEuice  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEvice  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEuice0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEvice0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEuice1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEvice1 (1-Oly:sNy+Oly,nSx,nSy)
#endif /* ALLOW_SEAICE */
#endif /* ALLOW_OBCS_EAST */

#ifdef ALLOW_OBCS_WEST
      COMMON /GRID_W_OB/
     &      OBWu,OBWv,OBWt,OBWs
      _RL OBWu (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWv (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWt (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWs (1-Oly:sNy+Oly,Nr,nSx,nSy)
#ifdef ALLOW_OBCS_PRESCRIBE
      COMMON /GRID_W_OB_AUX/
     &      OBWu0,OBWv0,OBWt0,OBWs0,
     &      OBWu1,OBWv1,OBWt1,OBWs1
      _RL OBWu0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWv0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWt0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWs0 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWu1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWv1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWt1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWs1 (1-Oly:sNy+Oly,Nr,nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */
#ifdef ALLOW_SEAICE
      COMMON /SEAICE_W_OB/ OBWa,OBWh,OBWa0,OBWh0,OBWa1,OBWh1,
     &     OBWsl,OBWsn,OBWsl0,OBWsn0,OBWsl1,OBWsn1,
     &     OBWuice,OBWvice,OBWuice0,OBWvice0,OBWuice1,OBWvice1
      _RL OBWa  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWh  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWa0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWh0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWa1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWh1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsl  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsn  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsl0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsn0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsl1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsn1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWuice  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWvice  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWuice0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWvice0 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWuice1 (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWvice1 (1-Oly:sNy+Oly,nSx,nSy)
#endif /* ALLOW_SEAICE */
#endif /* ALLOW_OBCS_WEST */

      COMMON /OB_FILES/
     &      OBNetaFile,OBSetaFile,OBEetaFile,OBWetaFile,
     &      OBNwFile, OBSwFile, OBEwFile, OBWwFile,
     &      OBNuFile,OBNvFile,OBNtFile,OBNsFile,OBNaFile,OBNhFile,
     &      OBSuFile,OBSvFile,OBStFile,OBSsFile,OBSaFile,OBShFile,
     &      OBEuFile,OBEvFile,OBEtFile,OBEsFile,OBEaFile,OBEhFile,
     &      OBWuFile,OBWvFile,OBWtFile,OBWsFile,OBWaFile,OBWhFile,
     &      OBNslFile,OBSslFile,OBEslFile,OBWslFile,
     &      OBNsnFile,OBSsnFile,OBEsnFile,OBWsnFile,
     &      OBNuiceFile,OBSuiceFile,OBEuiceFile,OBWuiceFile,
     &      OBNviceFile,OBSviceFile,OBEviceFile,OBWviceFile
      CHARACTER*(MAX_LEN_FNAM)
     &      OBNetaFile,OBSetaFile,OBEetaFile,OBWetaFile,
     &      OBNwFile, OBSwFile, OBEwFile, OBWwFile,
     &      OBNuFile,OBNvFile,OBNtFile,OBNsFile,OBNaFile,OBNhFile,
     &      OBSuFile,OBSvFile,OBStFile,OBSsFile,OBSaFile,OBShFile,
     &      OBEuFile,OBEvFile,OBEtFile,OBEsFile,OBEaFile,OBEhFile,
     &      OBWuFile,OBWvFile,OBWtFile,OBWsFile,OBWaFile,OBWhFile,
     &      OBNslFile,OBSslFile,OBEslFile,OBWslFile,
     &      OBNsnFile,OBSsnFile,OBEsnFile,OBWsnFile,
     &      OBNuiceFile,OBSuiceFile,OBEuiceFile,OBWuiceFile,
     &      OBNviceFile,OBSviceFile,OBEviceFile,OBWviceFile

#ifdef ALLOW_NONHYDROSTATIC
      COMMON /GRID_OBNH/
     &      OBNw, OBSw, OBEw, OBWw
      _RL OBNw (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSw (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBEw (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWw (1-Oly:sNy+Oly,Nr,nSx,nSy)
#ifdef ALLOW_OBCS_PRESCRIBE
      COMMON /GRID_OBNH_AUX/
     &      OBNw0, OBSw0, OBEw0, OBWw0,
     &      OBNw1, OBSw1, OBEw1, OBWw1
      _RL OBNw0(1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSw0(1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBEw0(1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWw0(1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBNw1(1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSw1(1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBEw1(1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWw1(1-Oly:sNy+Oly,Nr,nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */
#endif /* ALLOW_NONHYDROSTATIC */

#ifdef NONLIN_FRSURF
      COMMON /GRID_OB_NLFS/
     &  OBNhfac0,OBShfac0,OBEhfac0,OBWhfac0
      _RS OBNhfac0(1-Olx:sNx+Olx,nSx,nSy)
      _RS OBShfac0(1-Olx:sNx+Olx,nSx,nSy)
      _RS OBEhfac0(1-Oly:sNy+Oly,nSx,nSy)
      _RS OBWhfac0(1-Oly:sNy+Oly,nSx,nSy)
      COMMON /OB_NLFS/
     &  OBNeta,  OBSeta,  OBEeta,  OBWeta
      _RL OBNeta (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSeta (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBEeta (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWeta (1-Oly:sNy+Oly,nSx,nSy)
#ifdef ALLOW_OBCS_PRESCRIBE
      COMMON /OB_NLFS_AUX/
     &      OBNeta0,OBSeta0,OBEeta0,OBWeta0,
     &      OBNeta1,OBSeta1,OBEeta1,OBWeta1
      _RL OBNeta0(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSeta0(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBEeta0(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWeta0(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBNeta1(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSeta1(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBEeta1(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWeta1(1-Oly:sNy+Oly,nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */
#endif /* NONLIN_FRSURF */

       COMMON /GG_VOLFLUX/ shiftvel
       _RL shiftvel(2)

#endif /* ALLOW_OBCS */