C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_list_check.F,v 1.6 2014/01/19 14:42:58 jmc Exp $ C $Name: $ #include "DIAG_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: DIAGNOSTICS_LIST_CHECK C !INTERFACE: SUBROUTINE DIAGNOSTICS_LIST_CHECK( O ndCount, I ld, md, I nbLists, nbFlds, fldsList, myThid ) C !DESCRIPTION: C Check a list of fields for disable diagnostics, C starting with the current one: C print relevant error message and return the number C of disable diagnostics that this list contains. C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DIAGNOSTICS_SIZE.h" #include "DIAGNOSTICS.h" C !INPUT PARAMETERS: C ld :: current ouput stream number C md :: current field in ouput stream ld C nbLists :: number of output streams C nbFlds(n):: number of diagnostics for output stream # n C fldsList :: list of field names to check C myThid :: my Thread Id. number INTEGER ld, md, nbLists INTEGER nbFlds(numLists) CHARACTER*8 fldsList(numperList,numLists) INTEGER myThid C !OUTPUT PARAMETERS: C ndCount :: number of disable diagnostics in list "fldsList" INTEGER ndCount CEOP C !LOCAL VARIABLES: CHARACTER*(MAX_LEN_MBUF) msgBuf LOGICAL found CHARACTER*8 diagName INTEGER n,m,m1,i ndCount = 0 _BEGIN_MASTER(myThid) C- File names: m1 = md DO n = ld,nbLists DO m = m1,nbFlds(n) diagName = fldsList(m,n) found = .FALSE. IF ( ndCount.GT.0 ) THEN C Search all possible model diagnostics DO i=1,ndiagt IF ( diagName.EQ.cdiag(i) ) found = .TRUE. ENDDO ENDIF IF ( .NOT.found ) THEN C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| IF ( diagName.EQ.'PRESSURE' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "RCENTER "' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'TICE ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "oceFreez"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'TAUX ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "oceTAUX "' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'TAUY ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "oceTAUY "' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'SWFLUX ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "oceQsw "' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName(1:5).EQ.'DIFx_' .OR. & diagName(1:5).EQ.'DIFxT' ) THEN WRITE(msgBuf,'(5A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "DFxE', & diagName(5:8), '"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName(1:5).EQ.'DIFy_' .OR. & diagName(1:5).EQ.'DIFyT' ) THEN WRITE(msgBuf,'(5A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was replaced by "DFyE', & diagName(5:8), '"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'KPPmld ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired in favor of "MXLDEPTH"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'KPPghat ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired in favor of "KPPghatK"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'SIyneg ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired in favor of "SIdHbOCN"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'SIfice ' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired in favor of "SIdHbATC"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'SIsnwice' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired in favor of "SIdHbFLO"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'SIthdgrh' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired in favor of "SIdHb*"' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF IF ( diagName.EQ.'SI_FrcFx' ) THEN WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: diagnostic "', & diagName, '" was retired (identical to "SI_Fract")' CALL PRINT_ERROR( msgBuf , myThid ) WRITE(msgBuf,'(3A)') 'DIAGNOSTICS_LIST_CHECK: ', & '=> need to change "data.diagnostics" accordingly' CALL PRINT_ERROR( msgBuf , myThid ) ndCount = ndCount + 1 ENDIF C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| ENDIF IF ( ndCount.EQ.0 ) RETURN ENDDO m1 = 1 ENDDO _END_MASTER(myThid) RETURN END