C $Header: /u/gcmpack/MITgcm/pkg/offline/offline_readparms.F,v 1.13 2017/08/09 15:23:37 mlosch 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"
#include "OFFLINE.h"
#include "OFFLINE_SWITCH.h"
C === Routine arguments ===
INTEGER myThid
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
INTEGER offlineOffsetIter
C-- Bulk Formula parameter
NAMELIST //OFFLINE_PARM01
& UvelFile, VvelFile, WvelFile, ThetFile, SaltFile,
& GMwxFile, GMwyFile, GMwzFile,
& ConvFile, KPP_DiffSFile, KPP_ghatKFile,
& HFluxFile, SFluxFile, IceFile,
& KPP_ghatFile
NAMELIST //OFFLINE_PARM02
& offlineIter0, deltaToffline, offlineTimeOffset,
& offlineForcingPeriod, offlineForcingCycle,
& offlineLoadPrec, offlineOffsetIter
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
IF ( .NOT.useOffLine ) THEN
C- pkg OFFLINE is not used
_BEGIN_MASTER(myThid)
C- Track pkg activation status:
C print a (weak) warning if data.off is found
CALL PACKAGES_UNUSED_MSG( 'useOffLine', ' ', 'off' )
_END_MASTER(myThid)
RETURN
ENDIF
_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 = ' '
GMwxFile = ' '
GMwyFile = ' '
GMwzFile = ' '
ConvFile = ' '
KPP_DiffSFile= ' '
KPP_ghatKFile= ' '
KPP_ghatFile = 'KPP_ghatFile has been replaced by KPP_ghatKFile'
HFluxFile= ' '
SFluxFile= ' '
IceFile = ' '
C-- Read parameters from open data file
READ(UNIT=iUnit,NML=OFFLINE_PARM01)
C-- Default values for params in OFFLINE_PARM02 :
deltaToffline= deltaTclock
offlineIter0 = nIter0 !initial offline field timestep
offlineTimeOffset = 0. !time offset
offlineOffsetIter = UNSET_I
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
#ifdef SINGLE_DISK_IO
CLOSE(iUnit)
#else
CLOSE(iUnit,STATUS='DELETE')
#endif /* SINGLE_DISK_IO */
C-- Check for retired parameters still being used
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
IF ( offlineOffsetIter .NE. UNSET_I ) THEN
WRITE(msgBuf,'(A,A)') 'S/R OFFLINE_READPARMS: ',
& 'offlineOffsetIter is no longer allowed in file "data.off"'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A,A)') 'S/R OFFLINE_READPARMS: ',
& 'instead set "offlineTimeOffset" to OffsetIter*deltaToffline'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R OFFLINE_READPARMS'
ENDIF
C-- derive other parameters:
offlineLoadGMRedi = ( GMwxFile .NE. ' ' )
& .OR.( GMwyFile .NE. ' ' )
& .OR.( GMwzFile .NE. ' ' )
offlineLoadKPP = ( KPP_DiffSFile .NE. ' ' )
& .OR.( KPP_ghatKFile .NE. ' ' )
offlineLoadConvec = ( ConvFile .NE. ' ' )
_END_MASTER(myThid)
C-- Everyone else must wait for the parameters to be loaded
_BARRIER
RETURN
END