C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_check.F,v 1.10 2004/12/27 20:34:11 dimitri Exp $
C $Name: $
#include "SEAICE_OPTIONS.h"
SUBROUTINE SEAICE_CHECK( myThid )
C /==========================================================\
C | SUBROUTINE SEAICE_CHECK |
C | o Validate basic package setup and inter-package |
C | dependencies. |
C \==========================================================/
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "SEAICE_PARAMS.h"
C === Routine arguments ===
C myThid - Number of this instance of SEAICE_CHECK
INTEGER myThid
C === Local variables ===
C msgBuf - Informational/error meesage buffer
CHARACTER*(MAX_LEN_MBUF) msgBuf
C-- ALLOW_SEAICE
WRITE(msgBuf,'(A)') 'SEAICE_CHECK: #define ALLOW_SEAICE'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
C-- SEAICE needs forcing_In_AB FALSE
IF (forcing_In_AB) THEN
WRITE(msgBuf,'(A)') 'Need forcing_In_AB = .FALSE.'
CALL PRINT_ERROR( msgBuf , 1)
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
ENDIF
C-- For time-being seaice_init.F assumes usingSphericalPolarGrid=.TRUE.
C The only exception is special provision for cube-sphere geometry.
#ifdef ALLOW_EXCH2
IF ( .NOT. usingSphericalPolarGrid .AND.
& .NOT. useCubedSphereExchange ) THEN
#else
IF ( .NOT. usingSphericalPolarGrid ) THEN
#endif /* ALLOW_EXCH2 */
WRITE(msgBuf,'(A)') 'Need usingSphericalPolarGrid=.TRUE.'
CALL PRINT_ERROR( msgBuf , 1)
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
ENDIF
C-- SEAICE_ALLOW_DYNAMICS and SEAICEuseDYNAMICS
#ifndef SEAICE_ALLOW_DYNAMICS
IF (SEAICEuseDYNAMICS) THEN
WRITE(msgBuf,'(A)')
& 'SEAICE_ALLOW_DYNAMICS needed for SEAICEuseDYNAMICS'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
ENDIF
#endif
C-- SEAICE_EXTERNAL_FORCING
C At present this option is hardwired for pkg/exf.
#ifdef SEAICE_EXTERNAL_FORCING
#ifndef ALLOW_EXF
WRITE(msgBuf,'(A)')
& 'need to define ALLOW_EXF'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
#else /* ALLOW_EXF */
#ifndef ALLOW_ATM_TEMP
WRITE(msgBuf,'(A)')
& 'need to define pkg/exf ALLOW_ATM_TEMP'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
#endif
#ifndef ALLOW_ATM_WIND
WRITE(msgBuf,'(A)')
& 'need to define pkg/exf ALLOW_ATM_WIND'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
#endif
#ifndef ALLOW_DOWNWARD_RADIATION
WRITE(msgBuf,'(A)')
& 'need to define pkg/exf ALLOW_DOWNWARD_RADIATION'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
#endif
#if !defined(EXF_READ_EVAP) && !defined(ALLOW_BULKFORMULAE)
WRITE(msgBuf,'(A)')
& 'need to set EXF_READ_EVAP or ALLOW_BULKFORMULAE in pkg/exf '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
#endif
#endif /* ALLOW_EXF */
#endif /* SEAICE_EXTERNAL_FORCING */
C-- SEAICE_EXTERNAL_FLUXES
C At present this option is hardwired for pkg/exf.
#ifdef SEAICE_EXTERNAL_FLUXES
#ifndef ALLOW_EXF
WRITE(msgBuf,'(A)')
& 'need to define ALLOW_EXF'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
STOP 'ABNORMAL END: S/R SEAICE_CHECK'
#endif
#endif /* SEAICE_EXTERNAL_FLUXES */
return
end