C $Header: /u/gcmpack/MITgcm/pkg/offline/offline_check.F,v 1.2 2015/07/16 21:21:18 jmc Exp $
C $Name: $
#include "OFFLINE_OPTIONS.h"
#ifdef ALLOW_DIC
#include "DIC_OPTIONS.h"
#endif
#ifdef ALLOW_DARWIN
#include "DARWIN_OPTIONS.h"
#endif
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP 0
C !ROUTINE: OFFLINE_CHECK
C !INTERFACE:
SUBROUTINE OFFLINE_CHECK( myThid )
C !DESCRIPTION:
C Check dependances with other packages
C !USES:
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "OFFLINE.h"
#include "OFFLINE_SWITCH.h"
C !INPUT PARAMETERS:
C myThid :: my Thread Id number
INTEGER myThid
CEOP
#ifdef ALLOW_OFFLINE
C !LOCAL VARIABLES:
C msgBuf :: Informational/error message buffer
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER errCount
_BEGIN_MASTER(myThid)
WRITE(msgBuf,'(A)') 'OFFLINE_CHECK: #define OFFLINE'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
C-- Print out some kee parameters :
CALL WRITE_0D_L( offlineLoadGMRedi, INDEX_NONE,
& 'offlineLoadGMRedi=', ' /* load (not compute) GMRedi tensor */')
CALL WRITE_0D_L( offlineLoadKPP, INDEX_NONE,
& 'offlineLoadKPP=', ' /* load (not compute) KPP mixing coeff */')
CALL WRITE_0D_L( offlineLoadConvec, INDEX_NONE,
& 'offlineLoadConvec=', ' /* load (not compute) Convect Mix */')
CALL WRITE_0D_I( offlineIter0, INDEX_NONE,
& 'offlineIter0 =', ' /* initial offline field timestep */')
CALL WRITE_0D_RL( offlineTimeOffset, INDEX_NONE,
& 'offlineTimeOffset =', ' /* time offset [s] */')
CALL WRITE_0D_I( offlineLoadPrec, INDEX_NONE,
& 'offlineLoadPrec =',
& ' /* precision (32,64) of offline files */')
CALL WRITE_0D_RL( deltaToffline, INDEX_NONE,
& 'deltaToffline =', ' /* time-step to load offline files */')
CALL WRITE_0D_RL( offlineForcingPeriod, INDEX_NONE,
& 'offlineForcingPeriod=',
& ' /* time interval between reccords [s] */')
CALL WRITE_0D_RL( offlineForcingCycle, INDEX_NONE,
& 'offlineForcingCycle =', ' /* length of 1 cycle [s] */')
CALL WRITE_0D_C( UvelFile, -1, INDEX_NONE, 'UvelFile =',
& ' /* file name of loaded uVel field */')
C-- Check parameters:
errCount = 0
C- Put stops here if some flags are wrongly chosen.
C- better not to modify temperature that was loaded from file:
C => disable allowFreezing
IF ( allowFreezing ) THEN
WRITE(msgBuf,'(A)') 'allowFreezing=T not allowed if useOffLine'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
C- stop if files are specified but not used.
IF ( HFluxFile.NE.' ' ) THEN
WRITE(msgBuf,'(A)') 'HFluxFile is set but not used'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
#ifndef ALLOW_OLD_VIRTUALFLUX
IF ( SFluxFile.NE.' ' ) THEN
WRITE(msgBuf,'(A)') 'SFluxFile is set but not used'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
#endif /* ndef ALLOW_OLD_VIRTUALFLUX */
IF ( IceFile.NE.' ' ) THEN
WRITE(msgBuf,'(A)') 'IceFile is set but not used'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( offlineLoadGMRedi .AND. .NOT.useGMRedi ) THEN
WRITE(msgBuf,'(A)') 'some GMxxFile are set but not used'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( offlineLoadKPP .AND. .NOT.useKPP ) THEN
WRITE(msgBuf,'(A)') 'some KPP_xxxxxFile are set but not used'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( offlineLoadConvec .AND. ivdc_kappa.EQ.0. ) THEN
WRITE(msgBuf,'(A)') 'ConvFile is set but not used'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( errCount.GE.1 ) THEN
WRITE(msgBuf,'(A,I3,A)')
& 'OFFLINE_CHECK: detected', errCount,' fatal error(s)'
CALL PRINT_ERROR( msgBuf, myThid )
CALL ALL_PROC_DIE( 0 )
STOP 'ABNORMAL END: S/R OFFLINE_CHECK'
ENDIF
WRITE(msgBuf,'(A)') 'OFFLINE_CHECK: done'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
_END_MASTER(myThid)
#endif /* ALLOW_OFFLINE */
RETURN
END