C $Header: /u/gcmpack/MITgcm/pkg/obcs/OBCS.h,v 1.8 2004/09/22 20:44:37 heimbach Exp $
C $Name: $
#ifdef ALLOW_OBCS
C-- Private logical flag to record active status of package
LOGICAL OBCSisON
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
COMMON /PARM_IL_OB/
& OB_Jnorth,OB_Jsouth,OB_Ieast,OB_Iwest,
& spongeThickness,
& useOrlanskiNorth,useOrlanskiSouth,
& useOrlanskiEast,useOrlanskiWest,
& useOBCSsponge, useOBCSbalance, useOBCSprescribe
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
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 OBNu is the S 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
#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
#endif
#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
#endif
#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
#endif
COMMON /OB_FILES/
& OBNuFile,OBNvFile,OBNtFile,OBNsFile,
& OBSuFile,OBSvFile,OBStFile,OBSsFile,
& OBEuFile,OBEvFile,OBEtFile,OBEsFile,
& OBWuFile,OBWvFile,OBWtFile,OBWsFile
CHARACTER*(MAX_LEN_FNAM)
& OBNuFile,OBNvFile,OBNtFile,OBNsFile
CHARACTER*(MAX_LEN_FNAM)
& OBSuFile,OBSvFile,OBStFile,OBSsFile
CHARACTER*(MAX_LEN_FNAM)
& OBEuFile,OBEvFile,OBEtFile,OBEsFile
CHARACTER*(MAX_LEN_FNAM)
& OBWuFile,OBWvFile,OBWtFile,OBWsFile
#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)
#endif /* ALLOW_NONHYDROSTATIC */
#ifdef NONLIN_FRSURF
COMMON /GRID_OB_NLFS/
& OBNhfac0,OBShfac0,OBEhfac0,OBWhfac0,
& OBNeta, OBSeta, OBEeta, OBWeta
_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)
_RS OBNeta (1-Olx:sNx+Olx,nSx,nSy)
_RS OBSeta (1-Olx:sNx+Olx,nSx,nSy)
_RS OBEeta (1-Oly:sNy+Oly,nSx,nSy)
_RS OBWeta (1-Oly:sNy+Oly,nSx,nSy)
#endif /* NONLIN_FRSURF */
#ifdef ALLOW_OBCS
common /gg_volflux/ shiftvel
_RL shiftvel(2)
#endif
#endif /* ALLOW_OBCS */