C $Header: /u/gcmpack/MITgcm/pkg/shelfice/SHELFICE.h,v 1.7 2010/01/29 01:05:27 dimitri Exp $
C $Name:  $

#ifdef ALLOW_SHELFICE

CBOP
C !ROUTINE: SHELFICE.h

C !DESCRIPTION: \bv
C     /==========================================================\
C     | SHELFICE.h                                               |
C     | o Basic header thermodnynamic shelf ice package.         |
C     |   Contains all SHELFICE field declarations.              |
C     \==========================================================/

C-----------------------------------------------------------------------
C
C--   Constants that can be set in data.shelfice
C     SHELFICEtopoFile         - File containing the topography of the 
C                                shelfice draught (unit=m)
C     SHELFICEloadAnomalyFile  - name of shelfice load anomaly file
C     SHELFICEDragLinear       - linear drag at bottom shelfice (1/s)
C     SHELFICEDragQuadratic    - quadratic drag at bottom shelfice (1/m)
C     SHELFICEheatTransCoeff   - heat transfer coefficient that determines
C                                 heat flux into shelfice (m/s)
C     SHELFICEsaltTransCoeff   - salinity transfer coefficient that determines
C                                salt flux into shelfice (m/s)
C     SHELFICElatentHeat       - latent heat of fusion (J/kg)
C     useISOMIPTD              - use simple ISOMIP thermodynamics
C     SHELFICEconserve         - use conservative form of H&O-thermodynamics 
C                                following Jenkins et al. (2001, JPO)
C     SHELFICEboundaryLayer    - turn on vertical merging of cells to for a 
C                                boundary layer of drF thickness
C     no_slip_shelfice         - set slip conditions for shelfice separately,
C                                (by default the same as no_slip_bottom) 
C     SHELFICEwriteState       - enable output
C     SHELFICE_dump_mnc        - use netcdf for snapshot output
C     SHELFICE_tave_mnc        - use netcdf for time-averaged output
C     SHELFICE_dumpFreq        - analoguous to dumpFreq (= default)
C     SHELFICE_taveFreq        - analoguous to taveFreq (= default)
C
C--   Fields
C     ktopC                  - index of the top "wet cell" (2D)
C     R_shelfIce             - shelfice topography [m]
C     shelficeLoadAnomaly    - pressure load anomaly of shelfice [Pa]
C     shelficeHeatFlux       - upward heat flux [W/m^2]
C     shelficeFreshWaterFlux - upward fresh water flux (virt. salt flux) [m/s]
C     shelficeForcingT       - analogue of surfaceForcingT
C                              units are  r_unit.Kelvin/s (=Kelvin.m/s if r=z)
C     shelficeForcingS       - analogue of surfaceForcingS
C                              units are  r_unit.psu/s (=psu.m/s if r=z)
C-----------------------------------------------------------------------
C \ev
CEOP

      COMMON /SHELFICE_PARMS_I/  kTopC
      INTEGER kTopC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)

      COMMON /SHELFICE_PARMS_R/ 
     &     SHELFICE_dumpFreq, SHELFICE_taveFreq,
     &     SHELFICEheatTransCoeff, SHELFICEsaltTransCoeff,
     &     rhoShelfice, SHELFICEkappa,
     &     SHELFICElatentHeat, recip_SHELFICElatentHeat,
     &     SHELFICEheatCapacity_Cp,
     &     SHELFICEthetaSurface,
     &     SHELFICEDragLinear, SHELFICEDragQuadratic
      _RL SHELFICE_dumpFreq, SHELFICE_taveFreq
      _RL SHELFICEheatTransCoeff
      _RL SHELFICEsaltTransCoeff
      _RL SHELFICElatentHeat
      _RL SHELFICEheatCapacity_Cp
      _RL rhoShelfice
      _RL SHELFICEkappa
      _RL recip_SHELFICElatentHeat
      _RL SHELFICEDragLinear
      _RL SHELFICEDragQuadratic
      _RL SHELFICEthetaSurface

      COMMON /SHELFICE_FIELDS_RL/ 
     &     shelficeForcingT,
     &     shelficeForcingS
      _RL shelficeForcingT      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
      _RL shelficeForcingS      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)

      COMMON /SHELFICE_FIELDS_RS/ 
     &     R_shelfIce,
     &     shelficeLoadAnomaly, 
     &     shelficeHeatFlux,
     &     shelfIceFreshWaterFlux
      _RS R_shelfIce            (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
      _RS shelficeLoadAnomaly   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
      _RS shelficeHeatFlux      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
      _RS shelficeFreshWaterFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
      
      LOGICAL SHELFICEisOn
      LOGICAL useISOMIPTD
      LOGICAL SHELFICEconserve
      LOGICAL SHELFICEboundaryLayer
      LOGICAL no_slip_shelfice
      LOGICAL SHELFICEwriteState
      LOGICAL SHELFICE_dump_mdsio
      LOGICAL SHELFICE_tave_mdsio
      LOGICAL SHELFICE_dump_mnc
      LOGICAL SHELFICE_tave_mnc
      COMMON /SHELFICE_PARMS_L/
     &     SHELFICEisOn,
     &     useISOMIPTD,
     &     SHELFICEconserve,
     &     SHELFICEboundaryLayer,
     &     no_slip_shelfice,
     &     SHELFICEwriteState,
     &     SHELFICE_dump_mdsio,
     &     SHELFICE_tave_mdsio,
     &     SHELFICE_dump_mnc,
     &     SHELFICE_tave_mnc

      CHARACTER*(MAX_LEN_FNAM) SHELFICEloadAnomalyFile
      CHARACTER*(MAX_LEN_FNAM) SHELFICEtopoFile
      COMMON /SHELFICE_PARM_C/ 
     &     SHELFICEloadAnomalyFile, 
     &     SHELFICEtopoFile

#endif /* ALLOW_SHELFICE */