C $Header: /u/gcmpack/MITgcm/pkg/cfc/cfc_check.F,v 1.1 2013/06/10 02:59:02 jmc Exp $
C $Name: $
#include "GCHEM_OPTIONS.h"
CBOP
C !ROUTINE: CFC_CHECK
C !INTERFACE:
SUBROUTINE CFC_CHECK( myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | S/R CFC_CHECK
C | o Print CFC parameter summary and
C | o Check for consistent CFC pkg setting
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "CFC.h"
C !INPUT/OUTPUT PARAMETERS:
C myThid :: My Thread Id. number
INTEGER myThid
CEOP
#ifdef ALLOW_CFC
C !LOCAL VARIABLES:
C msgBuf :: Informational/error message buffer
C ioUnit :: Work variable for IO unit number
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER ioUnit
INTEGER errCount
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
_BEGIN_MASTER(myThid)
ioUnit = standardMessageUnit
WRITE(msgBuf,'(A)') 'CFC_CHECK: #define ALLOW_CFC'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
C--- Print summary:
WRITE(msgBuf,'(A)')
&'// ======================================================='
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(A)') '// CFC pkg configuration summary'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(A)')
&'// ======================================================='
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
CALL WRITE_0D_C( atmCFC_inpFile, -1, INDEX_NONE,
& 'atmCFC_inpFile =', ' /* atmos CFC time-series input file */')
CALL WRITE_0D_RL( atmCFC_recSepTime, INDEX_NONE,
& 'atmCFC_recSepTime =', ' /* time record spacing (s) */')
CALL WRITE_0D_RL( atmCFC_timeOffset, INDEX_NONE,
& 'atmCFC_timeOffset =', ' /* time offset for atm CFC (s) */')
CALL WRITE_0D_RL( atmCFC_ySouthBnd, INDEX_NONE,
& 'atmCFC_ySouthBnd =', ' /* S Lat boundary for atm CFC (s) */')
CALL WRITE_0D_RL( atmCFC_yNorthBnd, INDEX_NONE,
& 'atmCFC_yNorthBnd =', ' /* N Lat boundary for atm CFC (s) */')
CALL WRITE_0D_RL( CFC_monFreq, INDEX_NONE,
& 'CFC_monFreq =', ' /* frequency for CFC monitor (s) */')
c CALL WRITE_0D_L( fluidIsAir, INDEX_NONE,
c & 'fluidIsAir =', ' /* fluid major constituent is Air */')
CALL WRITE_0D_C( CFC_windFile, -1, INDEX_NONE,
& 'CFC_windFile =', ' /* wind-speed input file */')
CALL WRITE_0D_C( CFC_atmospFile, -1, INDEX_NONE,
& 'CFC_atmospFile =', ' /* atmos surf pressure input file */')
CALL WRITE_0D_C( CFC_iceFile, -1, INDEX_NONE,
& 'CFC_iceFile =', ' /* seaice fraction input file */')
CALL WRITE_0D_RL( CFC_forcingPeriod, INDEX_NONE,
& 'CFC_forcingPeriod =',
& ' /* forcing period (s) of input file */')
CALL WRITE_0D_RL( CFC_forcingCycle, INDEX_NONE,
& 'CFC_forcingCycle =',
& ' /* period of Cycle for input file (s) */')
WRITE(msgBuf,'(A)')
&'// ======================================================='
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(A)') '// End of CFC pkg config summary'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(A)')
&'// ======================================================='
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
C--- Check CFC pkg settings:
errCount = 0
IF ( CFC_windFile .NE. ' ' .AND. useEXF ) THEN
WRITE(msgBuf,'(A)')
& 'CFC_CHECK: setting CFC_windFile conflicts with using EXF'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( CFC_iceFile .NE. ' ' .AND.
& ( useThSIce .OR. useSEAICE ) ) THEN
WRITE(msgBuf,'(A)')
& 'CFC_CHECK: setting CFC_iceFile conflicts with using seaice'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( CFC_forcingCycle.LE.zeroRL .AND.
& ( CFC_windFile .NE. ' '
& .OR. CFC_atmospFile .NE. ' '
& .OR. CFC_iceFile .NE. ' ' ) ) THEN
WRITE(msgBuf,'(A)')
& 'CFC_CHECK: CFC_forcingCycle=0 but code to load'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A)')
& 'CFC_CHECK: non periodic forcing is missing'
CALL PRINT_ERROR( msgBuf, myThid )
errCount = errCount + 1
ENDIF
IF ( errCount.GE.1 ) THEN
WRITE(msgBuf,'(A,I3,A)')
& 'CFC_CHECK: detected', errCount,' fatal error(s)'
CALL PRINT_ERROR( msgBuf, myThid )
CALL ALL_PROC_DIE( 0 )
STOP 'ABNORMAL END: S/R CFC_CHECK'
ENDIF
WRITE(msgBuf,'(A)') 'CFC_CHECK: done'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
_END_MASTER(myThid)
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
#endif /* ALLOW_CFC */
RETURN
END