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