C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_check.F,v 1.7 2014/05/29 21:43:14 jmc Exp $
C $Name: $
#include "THSICE_OPTIONS.h"
CBOP
C !ROUTINE: THSICE_CHECK
C !INTERFACE:
SUBROUTINE THSICE_CHECK( myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | S/R THSICE_CHECK
C | o Check parameters and other package dependences
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "THSICE_SIZE.h"
#include "THSICE_PARAMS.h"
C !INPUT/OUTPUT PARAMETERS:
C myThid :: my Thread Id number
INTEGER myThid
C !LOCAL VARIABLES:
C msgBuf :: Informational/error message buffer
CHARACTER*(MAX_LEN_MBUF) msgBuf
CEOP
_BEGIN_MASTER(myThid)
WRITE(msgBuf,'(A)') 'THSICE_CHECK: #define THSICE'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
C-- Check parameter consistency:
IF ( .NOT.( useBulkForce .OR. useEXF .OR.
& useAIM .OR. useCheapAML .OR. useATM2d ) ) THEN
C- need some form of ATM-surface pkg to provide Air-Ice surf fluxes
WRITE(msgBuf,'(2A)')
& 'THSICE_CHECK: needs some PKG (EXF,Bulk-Force,AIM,CheapAML)'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(2A)')
& 'THSICE_CHECK: to provide Air-Ice surface fluxes for THSICE'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
ENDIF
IF ( thSIceAdvScheme.EQ.0 .AND. thSIce_diffK.NE.0. ) THEN
WRITE(msgBuf,'(2A)')
& 'THSICE_CHECK: to use thSIce_diffK, needs to select',
& ' one advection scheme (thSIceAdvScheme<>0)'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
ENDIF
#ifndef ALLOW_GENERIC_ADVDIFF
IF ( thSIceAdvScheme.NE.0 ) THEN
WRITE(msgBuf,'(2A)') 'THSICE_CHECK: Need to compile ',
& '"generic_advdiff" pkg in order to use thSIceAdvScheme'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
ENDIF
#endif /* ndef ALLOW_GENERIC_ADVDIFF */
IF ( thSIceBalanceAtmFW.NE.0 ) THEN
#ifndef ALLOW_BALANCE_FLUXES
WRITE(msgBuf,'(2A)') 'THSICE_CHECK: to use thSIceBalanceAtmFW',
& 'needs to compile with ALLOW_BALANCE_FLUXES defined'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
#endif
IF ( balanceEmPmR ) THEN
WRITE(msgBuf,'(2A)') 'THSICE_CHECK: cannot use',
& ' both balanceEmPmR and thSIceBalanceAtmFW'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
ENDIF
ENDIF
#ifdef ALLOW_AUTODIFF
IF ( nitMaxTsf .GT. MaxTsf ) THEN
WRITE(msgBuf,'(2A)')
& 'THSICE_CHECK: Need to set MaxTsf >= nitMaxTsf for TAF'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
ENDIF
# ifdef ALLOW_DBUG_THSICE
WRITE(msgBuf,'(2A)')
& 'THSICE_CHECK: cannot compile AD-code with ALLOW_DBUG_THSICE'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R THSICE_CHECK'
# endif
#endif /* ALLOW_AUTODIFF */
#ifdef OLD_THSICE_CALL_SEQUENCE
WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_CHECK: ',
& 'OLD_THSICE_CALL_SEQUENCE code no longer maintained'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(2A)') '** WARNING ** THSICE_CHECK: ',
& 'option and related code will be removed after chkpt-64e'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT, myThid )
#endif /* OLD_THSICE_CALL_SEQUENCE */
_END_MASTER(myThid)
RETURN
END