C $Header: /u/gcmpack/MITgcm/pkg/obcs/OBCS_SEAICE.h,v 1.4 2012/11/15 15:55:42 dimitri Exp $
C $Name:  $

#ifdef ALLOW_OBCS

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

C     !DESCRIPTION:
C     *==========================================================*
C     | OBCS_SEAICE.h
C     | o Header file containing
C     |   OBCS seaice parameters and OB values of seaice fields.
C     *==========================================================*
CEOP

C seaiceSpongeThickness  :: number grid points that make up the sponge layer (def=0)
      COMMON /OBC_SEAICE_PARM_I/
     & seaiceSpongeThickness
      INTEGER seaiceSpongeThickness

C useSeaiceSponge :: turns on seaice sponge layer along boundary (def=false)
      COMMON /OBC_SEAICE_PARM_L/
     & useSeaiceSponge
      LOGICAL useSeaiceSponge

C [A,H,SL,SN]relaxobcs[inner,bound] :: relaxation time scale (in seconds) on the
C                            boundary (bound) and at the innermost grid point of the
C                            sponge layer (inner); relaxation time scales in-between
C                            are linearly interpolated from these values
      COMMON /OBC_SEAICE_PARM_R/
     &     Arelaxobcsinner,  Arelaxobcsbound,
     &     Hrelaxobcsinner,  Hrelaxobcsbound,
     &    SLrelaxobcsinner, SLrelaxobcsbound,
     &    SNrelaxobcsinner, SNrelaxobcsbound
      _RS  Arelaxobcsinner,  Arelaxobcsbound
      _RS  Hrelaxobcsinner,  Hrelaxobcsbound
      _RS SLrelaxobcsinner, SLrelaxobcsbound
      _RS SNrelaxobcsinner, SNrelaxobcsbound

C OB[N,S,E,W][a,h,sn,sl,uice,vice]File :: Files with boundary conditions,
C                                         the letter combinations mean:
C                     N/S/E/W   :: northern/southern/eastern/western boundary
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

      COMMON /OBC_SEAICE_FILES/
     &      OBNaFile,   OBSaFile,   OBEaFile,   OBWaFile,
     &      OBNhFile,   OBShFile,   OBEhFile,   OBWhFile,
     &      OBNslFile,  OBSslFile,  OBEslFile,  OBWslFile,
     &      OBNsnFile,  OBSsnFile,  OBEsnFile,  OBWsnFile,
     &      OBNuiceFile,OBSuiceFile,OBEuiceFile,OBWuiceFile,
     &      OBNviceFile,OBSviceFile,OBEviceFile,OBWviceFile
      CHARACTER*(MAX_LEN_FNAM)
     &      OBNaFile,   OBSaFile,   OBEaFile,   OBWaFile,
     &      OBNhFile,   OBShFile,   OBEhFile,   OBWhFile,
     &      OBNslFile,  OBSslFile,  OBEslFile,  OBWslFile,
     &      OBNsnFile,  OBSsnFile,  OBEsnFile,  OBWsnFile,
     &      OBNuiceFile,OBSuiceFile,OBEuiceFile,OBWuiceFile,
     &      OBNviceFile,OBSviceFile,OBEviceFile,OBWviceFile

#ifdef ALLOW_SEAICE
C--   COMMON /OBC_SEAICE_NSEW/ Open boundary values of seaice fields
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

#ifdef ALLOW_OBCS_NORTH
      COMMON /OBC_SEAICE_N/
     &    OBNa , OBNh , OBNsl , OBNsn , OBNuice , OBNvice ,
     &    OBNa0, OBNh0, OBNsl0, OBNsn0, OBNuice0, OBNvice0,
     &    OBNa1, OBNh1, OBNsl1, OBNsn1, OBNuice1, OBNvice1
      _RL OBNa    (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNh    (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsl   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsn   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNuice (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNvice (1-Olx:sNx+Olx,nSx,nSy)
c#ifdef ALLOW_OBCS_PRESCRIBE
      _RL OBNa0   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNh0   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsl0  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsn0  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNuice0(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNvice0(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNa1   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNh1   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsl1  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNsn1  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNuice1(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBNvice1(1-Olx:sNx+Olx,nSx,nSy)
c#endif /* ALLOW_OBCS_PRESCRIBE */
#endif /* ALLOW_OBCS_NORTH */

#ifdef ALLOW_OBCS_SOUTH
      COMMON /OBC_SEAICE_S/
     &    OBSa , OBSh , OBSsl , OBSsn , OBSuice , OBSvice ,
     &    OBSa0, OBSh0, OBSsl0, OBSsn0, OBSuice0, OBSvice0,
     &    OBSa1, OBSh1, OBSsl1, OBSsn1, OBSuice1, OBSvice1
      _RL OBSa    (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSh    (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsl   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsn   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSuice (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSvice (1-Olx:sNx+Olx,nSx,nSy)
c#ifdef ALLOW_OBCS_PRESCRIBE
      _RL OBSa0   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSh0   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsl0  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsn0  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSuice0(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSvice0(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSa1   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSh1   (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsl1  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSsn1  (1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSuice1(1-Olx:sNx+Olx,nSx,nSy)
      _RL OBSvice1(1-Olx:sNx+Olx,nSx,nSy)
c#endif /* ALLOW_OBCS_PRESCRIBE */
#endif /* ALLOW_OBCS_SOUTH */

#ifdef ALLOW_OBCS_EAST
      COMMON /OBC_SEAICE_E/
     &    OBEa , OBEh , OBEsl , OBEsn , OBEuice , OBEvice ,
     &    OBEa0, OBEh0, OBEsl0, OBEsn0, OBEuice0, OBEvice0,
     &    OBEa1, OBEh1, OBEsl1, OBEsn1, OBEuice1, OBEvice1
      _RL OBEa    (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEh    (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsl   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsn   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEuice (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEvice (1-Oly:sNy+Oly,nSx,nSy)
c#ifdef ALLOW_OBCS_PRESCRIBE
      _RL OBEa0   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEh0   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsl0  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsn0  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEuice0(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEvice0(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEa1   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEh1   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsl1  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEsn1  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEuice1(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBEvice1(1-Oly:sNy+Oly,nSx,nSy)
c#endif /* ALLOW_OBCS_PRESCRIBE */
#endif /* ALLOW_OBCS_EAST */

#ifdef ALLOW_OBCS_WEST
      COMMON /OBC_SEAICE_W/
     &    OBWa , OBWh , OBWsl , OBWsn , OBWuice , OBWvice ,
     &    OBWa0, OBWh0, OBWsl0, OBWsn0, OBWuice0, OBWvice0,
     &    OBWa1, OBWh1, OBWsl1, OBWsn1, OBWuice1, OBWvice1
      _RL OBWa    (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWh    (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsl   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsn   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWuice (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWvice (1-Oly:sNy+Oly,nSx,nSy)
c#ifdef ALLOW_OBCS_PRESCRIBE
      _RL OBWa0   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWh0   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsl0  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsn0  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWuice0(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWvice0(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWa1   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWh1   (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsl1  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWsn1  (1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWuice1(1-Oly:sNy+Oly,nSx,nSy)
      _RL OBWvice1(1-Oly:sNy+Oly,nSx,nSy)
c#endif /* ALLOW_OBCS_PRESCRIBE */
#endif /* ALLOW_OBCS_WEST */

#endif /* ALLOW_SEAICE */
#endif /* ALLOW_OBCS */