C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/shelfice/shelfice_check.F,v 1.5 2007/10/10 09:26:39 mlosch Exp $ C $Name: $ #include "SHELFICE_OPTIONS.h" SUBROUTINE SHELFICE_CHECK( myThid ) C /==========================================================\ C | SUBROUTINE SHELFICE_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 "SHELFICE.h" C === Routine arguments === C myThid - Number of this instance of SHELFICE_CHECK INTEGER myThid #ifdef ALLOW_SHELFICE C === Local variables === C msgBuf - Informational/error meesage buffer CHARACTER*(MAX_LEN_MBUF) msgBuf _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A)') 'SHELFICE_CHECK: #define ALLOW_SHELFICE' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT, myThid ) C So far, SHELFICE works only with oceanic z-coordinates IF ( buoyancyRelation .NE. 'OCEANIC' ) THEN WRITE(msgBuf,'(A)') & 'SHELFICE works only with buoyancyRelation = ''OCEANIC''' CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R SHELFICE_CHECK' ENDIF CML#ifdef ALLOW_NONHYDROSTATIC CML IF ( nonHydrostatic ) THEN CML WRITE(msgBuf,'(A)') CML & 'Currently SHELFICE and nonHydrostatic cannot be turned' CML CALL PRINT_ERROR( msgBuf , 1) CML WRITE(msgBuf,'(A)') 'on at the same time' CML CALL PRINT_ERROR( msgBuf , 1) CML STOP 'ABNORMAL END: S/R SHELFICE_CHECK' CML ENDIF CML#endif /* ALLOW_NONHYDROSTATIC */ C SHELFICE may not work with many other packages, C e.g. vertical mixing schemes, in particular KPP will not work properly, C as KPP requires surface fluxes at the surface, whereas shelfice will C provide interfacial fluxes at some depth. Richardson flux number based C schemes such as Packanowski-Philander (PP81) should be no problem. CML#ifdef ALLOW_KPP CML IF ( useKPP ) THEN CML WRITE(msgBuf,'(A)') CML & 'SHELFICE and KPP cannot be turned on at the same time' CML CALL PRINT_ERROR( msgBuf , 1) CML STOP 'ABNORMAL END: S/R SHELFICE_CHECK' CML ENDIF CML#endif ALLOW_KPP #ifndef ALLOW_ISOMIP_TD IF ( useISOMIPTD ) THEN WRITE(msgBuf,'(A,A,A)') & 'Run-time control flag useISOMIPTD was used' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,A,A)') & 'when CPP flag ALLOW_ISOMIP_TD was unset' CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R SHELFICE_CHECK' ENDIF #else IF ( useISOMIPTD ) THEN IF ( SHELFICEconserve ) THEN WRITE(msgBuf,'(A,A,A)') & 'Run-time control flag SHELFICEconserve=.TRUE. was used' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A,A,A)') & 'when useISOMIPTD=.TRUE.; this does not work!' CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R SHELFICE_CHECK' ENDIF ENDIF #endif /* ALLOW_ISOMIP_TD */ _END_MASTER(myThid) #endif /* ALLOW_SHELFICE */ RETURN END