C $Header: /u/gcmpack/MITgcm/pkg/icefront/icefront_readparms.F,v 1.8 2010/08/24 14:43:45 jmc Exp $
C $Name:  $

#include "ICEFRONT_OPTIONS.h"

CBOP
C !ROUTINE: ICEFRONT_READPARMS

C !INTERFACE: ==========================================================
      SUBROUTINE ICEFRONT_READPARMS( myThid )

C !DESCRIPTION:
C     Initialize ICEFRONT parameters, read in data.icefront

C !USES: ===============================================================
      IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "ICEFRONT.h"
#include "PARAMS.h"
#ifdef ALLOW_SHELFICE
# include "SHELFICE.h"
#endif

C !INPUT PARAMETERS: ===================================================
C  myThid               :: thread number
      INTEGER myThid

C !OUTPUT PARAMETERS: ==================================================
C  none

#ifdef ALLOW_ICEFRONT

C !LOCAL VARIABLES: ====================================================
C  iUnit                :: unit number for I/O
C  msgBuf               :: message buffer
      INTEGER iUnit
      CHARACTER*(MAX_LEN_MBUF) msgBuf
CEOP

      NAMELIST //ICEFRONT_PARM01
     &     ICEFRONTheatTransCoeff,
     &     ICEFRONTsaltTransCoeff,
     &     rhoIcefront, ICEFRONTkappa,
     &     ICEFRONTlatentHeat, ICEFRONTHeatCapacity_Cp,
     &     ICEFRONTthetaSurface,
     &     applyIcefrontTendT,applyIcefrontTendS,
     &     ICEFRONTdepthFile, ICEFRONTlengthFile
#ifdef ALLOW_SUBGLACIAL_RUNOFF
     &   , SGrunoffFile
#endif

      _BEGIN_MASTER(myThid)

C This routine has been called by the main model so we set our
C internal flag to indicate we are in business
      ICEFRONTisON=.TRUE.

C Set defaults values for parameters in ICEFRONT.h
#ifdef ALLOW_SHELFICE
      IF (useShelfice) THEN
C Use the same values as in SHELFICE
       ICEFRONTlatentHeat       = SHELFICElatentHeat
       ICEFRONTHeatCapacity_Cp  = SHELFICEHeatCapacity_Cp
       rhoIcefront              = rhoShelfice
       ICEFRONTheatTransCoeff   = SHELFICEheatTransCoeff
       ICEFRONTkappa            = SHELFICEkappa
       ICEFRONTthetaSurface     = SHELFICEthetaSurface
      ELSE
#else /* ifndef ALLOW_SHELFICE */
      IF (.TRUE.) THEN
#endif /* ALLOW_SHELFICE */
C Default values when SHELFICE is not used
       ICEFRONTlatentHeat       =  334.0 _d 3
       ICEFRONTHeatCapacity_Cp  = 2000.0 _d 0
       rhoIcefront              =  917.0 _d 0
       ICEFRONTheatTransCoeff   =    1.0 _d -04
       ICEFRONTkappa            =   1.54 _d -06
       ICEFRONTthetaSurface     = - 20.0 _d 0
      ENDIF

      recip_ICEFRONTlatentHeat =    0.0 _d 0
      ICEFRONTsaltTransCoeff   = UNSET_RL
      ICEFRONTlengthFile       = ' '
      ICEFRONTdepthFile        = ' '
      applyIcefrontTendS       = .TRUE.
      applyIcefrontTendT       = .TRUE.
#ifdef ALLOW_SUBGLACIAL_RUNOFF
      SGrunoffFile             = ' '
#endif

C Open and read the data.icefront file
      WRITE(msgBuf,'(A)') ' ICEFRONT_READPARMS: opening data.icefront'
      CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
     &                   SQUEEZE_RIGHT, myThid )
      CALL OPEN_COPY_DATA_FILE(
     I                   'data.icefront', 'ICEFRONT_READPARMS',
     O                   iUnit,
     I                   myThid )
      READ(UNIT=iUnit,NML=ICEFRONT_PARM01)
      WRITE(msgBuf,'(A)')
     &  ' ICEFRONT_READPARMS: finished reading data.icefront'
      CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
     &                   SQUEEZE_RIGHT, myThid )

C Close the open data file
      CLOSE(iUnit)

C Now set-up any remaining parameters that result from the input parameters
      IF ( ICEFRONTlatentHeat .NE. 0. _d 0 )
     &     recip_ICEFRONTlatentHeat = 1. _d 0/ICEFRONTlatentHeat
      IF ( ICEFRONTsaltTransCoeff .EQ. UNSET_RL )
     &     ICEFRONTsaltTransCoeff =
     &     5.05 _d -3 *ICEFRONTheatTransCoeff
      _END_MASTER(myThid)
C Everyone else must wait for the parameters to be loaded
      _BARRIER

#endif /* ALLOW_ICEFRONT */

      RETURN
      END