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