C $Header: /u/gcmpack/MITgcm/pkg/offline/offline_readparms.F,v 1.9 2010/04/04 14:16:32 jmc Exp $
C $Name:  $

#include "OFFLINE_OPTIONS.h"

      SUBROUTINE OFFLINE_READPARMS( myThid )
C     *==========================================================*
C     | SUBROUTINE OFFLINE_READPARMS
C     | o Routine to initialize OFFLINE variables and constants.
C     *==========================================================*
C     | Initialize OFFLINE    parameters, read in data.off
C     *==========================================================*
      IMPLICIT NONE

C     === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#ifdef ALLOW_OFFLINE
#include "OFFLINE.h"
#endif

C     === Routine arguments ===
      INTEGER myThid

#ifdef ALLOW_OFFLINE
C     === Local variables ===
C     msgBuf     :: Informational/error message buffer
C     iUnit      :: Work variable for IO unit number
      CHARACTER*(MAX_LEN_MBUF) msgBuf
      INTEGER iUnit
C     Retired main data.offline file parameters
      CHARACTER*(MAX_LEN_FNAM) KPP_ghatFile

C--   Bulk Formula parameter
      NAMELIST //OFFLINE_PARM01
     &         UvelFile, VvelFile, WvelFile, ThetFile,
     &         SaltFile, ConvFile, GMwxFile, GMwyFile,
     &         GMwzFile, HfluxFile, SfluxFile,
     &         KPP_DiffSFile, KPP_ghatKFile, ICEFile,
     &         KPP_ghatFile

      NAMELIST //OFFLINE_PARM02
     &         offlineIter0, offlineOffsetIter,
     &         deltaToffline, offlineForcingPeriod,
     &         offlineForcingCycle, offlineLoadPrec

C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

      _BEGIN_MASTER(myThid)

      WRITE(msgBuf,'(A)') ' OFFLINE_READPARMS: opening data.off'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT, myThid )


      CALL OPEN_COPY_DATA_FILE(
     I                          'data.off', 'OFFLINE_READPARMS',
     O                          iUnit,
     I                          myThid )

C--   Default values for params in OFFLINE_PARM01 :
      UvelFile=' '
      VvelFile=' '
      WvelFile=' '
      ThetFile=' '
      SaltFile='  '
      ConvFile=' '
      GMwxFile=' '
      GMwyFile=' '
      GMwzFile=' '
      HFluxFile=' '
      SFluxFile=' '
      KPP_DiffSFile=' '
      KPP_ghatKFile=' '
      KPP_ghatFile='KPP_ghatFile has been replaced by KPP_ghatKFile'
      ICEFile=' '

C--   Read parameters from open data file
      READ(UNIT=iUnit,NML=OFFLINE_PARM01)

      IF ( KPP_ghatFile .NE.
     &    'KPP_ghatFile has been replaced by KPP_ghatKFile' ) THEN
c       nRetired = nRetired+1
        WRITE(msgBuf,'(A,A)') 'S/R OFFLINE_READPARMS: "KPP_ghatFile"',
     &                     ' is no longer allowed in file "data.off"'
        CALL PRINT_ERROR( msgBuf, myThid )
        WRITE(msgBuf,'(A,A)') 'S/R OFFLINE_READPARMS: read instead ',
     &           'the product ghat*diffKz from file "KPP_ghatKFile"'
        CALL PRINT_ERROR( msgBuf, myThid )
        STOP 'ABNORMAL END: S/R OFFLINE_READPARMS'
      ENDIF

C--   Default values for params in OFFLINE_PARM02 :
      deltaToffline=deltaTclock
      offlineIter0=nIter0        !initial offline field timestep
      offlineOffsetIter=0        !offset
      offlineForcingPeriod=2592000.
      offlineForcingCycle=31104000.
      offlineLoadPrec=readBinaryPrec

C--   Read parameters from open data file
      READ(UNIT=iUnit,NML=OFFLINE_PARM02)

      WRITE(msgBuf,'(A)')
     &      ' OFFLINE_READPARMS: finished reading data.off'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT, myThid )

C--   Close the open data file
      CLOSE(iUnit)
      _END_MASTER(myThid)

C--   Everyone else must wait for the parameters to be loaded
      _BARRIER

#endif /* ALLOW_OFFLINE */

      RETURN
      END