File indexing completed on 2018-03-02 18:38:55 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
931cda44c0 Jean*0001 #include "DIAG_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008 SUBROUTINE DIAGNOSTICS_ADDTOLIST (
0009 O diagNum,
0010 I diagName, diagCode, diagUnits, diagTitle, diagMate,
0011 I myThid )
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 IMPLICIT NONE
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "DIAGNOSTICS_SIZE.h"
0027 #include "DIAGNOSTICS.h"
0028
0029
0030
0031
0032
0033
0034
0035
0036 CHARACTER*8 diagName
0037 CHARACTER*16 diagCode
0038 CHARACTER*16 diagUnits
0039 CHARACTER*(*) diagTitle
0040 INTEGER diagMate
0041 INTEGER myThid
0042
0043
0044
0045 INTEGER diagNum
0046
0047
0048
698bc6a39a Jean*0049
931cda44c0 Jean*0050 CHARACTER*(MAX_LEN_MBUF) msgBuf
0051 INTEGER n
0052
0053
0054 diagNum = 0
0055
0056 _BEGIN_MASTER( myThid)
0057
a0bbeea03c Jean*0058
0059
8a1f6fb317 Jean*0060 IF ( diag_pkgStatus.NE.ready2setDiags ) THEN
0061 CALL DIAGNOSTICS_STATUS_ERROR( 'DIAGNOSTICS_ADDTOLIST',
0062 & ' ', diagName, ready2setDiags, myThid )
a0bbeea03c Jean*0063 ENDIF
0064
931cda44c0 Jean*0065
0066 DO n=1,ndiagt
0067 IF ( cdiag(n).EQ.diagName ) THEN
0068 diagNum = n
0069 IF ( gdiag(n).EQ.diagCode .AND. hdiag(n).EQ.diagMate ) THEN
0070
0071 WRITE(msgBuf,'(3A,I6,A)') 'DIAGNOSTICS_ADDTOLIST: diag=',
0072 & diagName,' is already defined (# ',n,' )'
0073 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0074 & SQUEEZE_RIGHT , myThid)
0075 WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_ADDTOLIST:',
0076 & ' with same parser => update Title & Units '
0077 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0078 & SQUEEZE_RIGHT , myThid)
0079 udiag(diagNum) = diagUnits
0080 tdiag(diagNum) = diagTitle
0081 ELSE
0082
0083 WRITE(msgBuf,'(3A,I6,A)') 'DIAGNOSTICS_ADDTOLIST: diag=',
0084 & diagName,' is already defined (# ',n,' )'
0085 CALL PRINT_ERROR( msgBuf , myThid)
0086 WRITE(msgBuf,'(4A,I6)') 'DIAGNOSTICS_ADDTOLIST: cannot ',
0087 & 'change parser="',gdiag(n),'" & mate=',hdiag(n)
0088 CALL PRINT_ERROR( msgBuf , myThid)
0089 WRITE(msgBuf,'(4A,I6,A)') 'DIAGNOSTICS_ADDTOLIST:',
0090 & ' to : "',diagCode,'" and mate=',diagMate,' ; => STOP'
0091 CALL PRINT_ERROR( msgBuf , myThid)
0092 STOP 'ABNORMAL END: S/R DIAGNOSTICS_ADDTOLIST'
0093 ENDIF
0094 ENDIF
0095 ENDDO
0096
0097
0098
0099 IF ( diagNum.EQ.0 ) THEN
0100
0101 diagNum = ndiagt + 1
0102
0103 IF ( diagNum .LE. ndiagMax ) THEN
0104 cdiag(diagNum) = diagName
0105 gdiag(diagNum) = diagCode
0106 hdiag(diagNum) = diagMate
0107 udiag(diagNum) = diagUnits
0108 tdiag(diagNum) = diagTitle
0109 ndiagt = diagNum
0110 ELSE
0111 WRITE(msgBuf,'(2A,I6)') 'DIAGNOSTICS_ADDTOLIST:',
0112 & ' Exceed Max.Number of diagnostics ndiagMax=', ndiagMax
0113 CALL PRINT_ERROR( msgBuf , myThid)
0114 WRITE(msgBuf,'(2A)')
0115 & 'DIAGNOSTICS_ADDTOLIST: when setting diagnostic: ',diagName
0116 CALL PRINT_ERROR( msgBuf , myThid)
0117 STOP 'ABNORMAL END: S/R DIAGNOSTICS_ADDTOLIST'
0118 ENDIF
0119
0120 ENDIF
0121
0122 _END_MASTER( myThid )
0123
0124 RETURN
0125 END