C $Header: /u/gcmpack/MITgcm/pkg/obcs/OBCS_FIELDS.h,v 1.5 2012/11/15 20:46:52 dimitri Exp $
C $Name:  $

#ifdef ALLOW_OBCS

CBOP
C     !ROUTINE: OBCS_FIELDS.h
C     !INTERFACE:
C     #include "OBCS_FIELDS.h"

C     !DESCRIPTION:
C     *==========================================================*
C     | OBCS_FIELDS.h
C     | o Header file containing OB values of model fields
C     *==========================================================*
CEOP

#ifdef ALLOW_OBCS_PRESCRIBE
C     OBCS_ldRec     :: time-record currently loaded (in temp arrays *[1])
      COMMON /OBCS_LOAD_I/ OBCS_ldRec
      INTEGER OBCS_ldRec(nSx,nSy)
#endif /* ALLOW_OBCS_PRESCRIBE */

C--   COMMON /OBCS_FIELDS/ Open boundary related stuff
C OB[N,S,E,W][u,v,w,t,s,eta,am,ph] :: Fields with boundary conditions,
C                                     the letter combinations mean:
C                     N/S/E/W   :: northern/southern/eastern/western boundary
C                     u/v/w/t/s :: ocean u/v/w velocities, temperature/salinity
C                     eta       :: sea surface height
C                     am/ph     :: tidal amplitude (m/s) / phase (s)
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     etc

#ifdef ALLOW_OBCS_NORTH
      COMMON /OBCS_FIELDS_N/
     &      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 /OBCS_FIELDS_AUX_N/
     &      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_OBCS_STEVENS
      COMMON /OBCS_FIELDS_STEVENS_N/ 
     &     OBNvStevens, OBNtStevens, OBNsStevens 
      _RL OBNvStevens (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNtStevens (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBNsStevens (1-Olx:sNx+Olx,Nr,nSx,nSy)
# endif /* ALLOW_OBCS_STEVENS */
# ifdef ALLOW_OBCS_TIDES
      COMMON /OBCS_FIELDS_TIDES_N/ OBNam, OBNph
      _RL OBNam (1-Olx:sNx+Olx,tidalComponents,nSx,nSy)
      _RL OBNph (1-Olx:sNx+Olx,tidalComponents,nSx,nSy)
# endif /* ALLOW_OBCS_TIDES */
#endif /* ALLOW_OBCS_NORTH */

#ifdef ALLOW_OBCS_SOUTH
      COMMON /OBCS_FIELDS_S/
     &      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 /OBCS_FIELDS_AUX_S/
     &      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_OBCS_STEVENS
      COMMON /OBCS_FIELDS_STEVENS_S/ 
     &     OBSvStevens, OBStStevens, OBSsStevens
      _RL OBSvStevens (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBStStevens (1-Olx:sNx+Olx,Nr,nSx,nSy)
      _RL OBSsStevens (1-Olx:sNx+Olx,Nr,nSx,nSy)
# endif /* ALLOW_OBCS_STEVENS */
# ifdef ALLOW_OBCS_TIDES
      COMMON /OBCS_FIELDS_TIDES_S/ OBSam, OBSph
      _RL OBSam (1-Olx:sNx+Olx,tidalComponents,nSx,nSy)
      _RL OBSph (1-Olx:sNx+Olx,tidalComponents,nSx,nSy)
# endif /* ALLOW_OBCS_TIDES */
#endif /* ALLOW_OBCS_SOUTH */

#ifdef ALLOW_OBCS_EAST
      COMMON /OBCS_FIELDS_E/
     &      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 /OBCS_FIELDS_AUX_E/
     &      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_OBCS_STEVENS
      COMMON /OBCS_FIELDS_STEVENS_E/
     &     OBEuStevens, OBEtStevens, OBEsStevens
      _RL OBEuStevens (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEtStevens (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBEsStevens (1-Oly:sNy+Oly,Nr,nSx,nSy)
# endif /* ALLOW_OBCS_STEVENS */
# ifdef ALLOW_OBCS_TIDES
      COMMON /OBCS_FIELDS_TIDES_E/ OBEam, OBEph
      _RL OBEam (1-Oly:sNy+Oly,tidalComponents,nSx,nSy)
      _RL OBEph (1-Oly:sNy+Oly,tidalComponents,nSx,nSy)
# endif /* ALLOW_OBCS_TIDES */
#endif /* ALLOW_OBCS_EAST */

#ifdef ALLOW_OBCS_WEST
      COMMON /OBCS_FIELDS_W/
     &      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 /OBCS_FIELDS_AUX_W/
     &      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_OBCS_STEVENS
      COMMON /OBCS_FIELDS_STEVENS_W/
     &     OBWuStevens, OBWtStevens, OBWsStevens
      _RL OBWuStevens (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWtStevens (1-Oly:sNy+Oly,Nr,nSx,nSy)
      _RL OBWsStevens (1-Oly:sNy+Oly,Nr,nSx,nSy)
# endif /* ALLOW_OBCS_STEVENS */
# ifdef ALLOW_OBCS_TIDES
      COMMON /OBCS_FIELDS_TIDES_W/ OBWam, OBWph
      _RL OBWam (1-Oly:sNy+Oly,tidalComponents,nSx,nSy)
      _RL OBWph (1-Oly:sNy+Oly,tidalComponents,nSx,nSy)
# endif /* ALLOW_OBCS_TIDES */
#endif /* ALLOW_OBCS_WEST */

#ifdef ALLOW_NONHYDROSTATIC
      COMMON /OBCS_NH_FIELDS/
     &      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 /OBCS_NH_FIELDS_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 /OBCS_NLFS_FIELDS/
     &  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 /OBCS_NLFS_FIELDS_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 */

#endif /* ALLOW_OBCS */