/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_addtolist.F
ViewVC logotype

Contents of /MITgcm/pkg/diagnostics/diagnostics_addtolist.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Tue Jan 12 05:28:47 2010 UTC (14 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.1: +2 -2 lines
fix typo in comments

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_addtolist.F,v 1.1 2008/02/05 15:13:01 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP 0
8 C !ROUTINE: DIAGNOSTICS_ADDTOLIST
9
10 C !INTERFACE:
11 SUBROUTINE DIAGNOSTICS_ADDTOLIST (
12 O diagNum,
13 I diagName, diagCode, diagUnits, diagTitle, diagMate,
14 I myThid )
15
16 C !DESCRIPTION:
17 C routine to add 1 diagnostics to the list of available diagnostics:
18 C set the attributes:
19 C name (=cdiag), parsing code (=gdiag), units (=udiag), title (=tdiag)
20 C and diagnostic mate number (=hdiag) of the new diagnostic and
21 C update the total number of available diagnostics
22 C Note: needs to be called after DIAGNOSTICS_INIT_EARLY
23 C and before DIAGNOSTICS_INIT_FIXED
24
25 C !USES:
26 IMPLICIT NONE
27 #include "SIZE.h"
28 #include "EEPARAMS.h"
29 #include "DIAGNOSTICS_SIZE.h"
30 #include "DIAGNOSTICS.h"
31
32 C !INPUT PARAMETERS:
33 C diagName :: diagnostic name to declare
34 C diagCode :: parser code for this diagnostic
35 C diagUnits :: field units for this diagnostic
36 C diagTitle :: field description for this diagnostic
37 C diagMate :: diagnostic mate number
38 C myThid :: my Thread Id number
39 CHARACTER*8 diagName
40 CHARACTER*16 diagCode
41 CHARACTER*16 diagUnits
42 CHARACTER*(*) diagTitle
43 INTEGER diagMate
44 INTEGER myThid
45
46 C !OUTPUT PARAMETERS:
47 C numDiag :: diagnostic number in the list of available diagnostics
48 INTEGER diagNum
49 CEOP
50
51 C !LOCAL VARIABLES:
52 C msgBuf :: Informational/error message buffer
53 CHARACTER*(MAX_LEN_MBUF) msgBuf
54 INTEGER n
55
56 C-- Initialise
57 diagNum = 0
58
59 _BEGIN_MASTER( myThid)
60
61 C-- Search for "diagName" in the list of available diagnostics:
62 DO n=1,ndiagt
63 IF ( cdiag(n).EQ.diagName ) THEN
64 diagNum = n
65 IF ( gdiag(n).EQ.diagCode .AND. hdiag(n).EQ.diagMate ) THEN
66 C- diagnostics is already defined and has the same characteristics
67 WRITE(msgBuf,'(3A,I6,A)') 'DIAGNOSTICS_ADDTOLIST: diag=',
68 & diagName,' is already defined (# ',n,' )'
69 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
70 & SQUEEZE_RIGHT , myThid)
71 WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_ADDTOLIST:',
72 & ' with same parser => update Title & Units '
73 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
74 & SQUEEZE_RIGHT , myThid)
75 udiag(diagNum) = diagUnits
76 tdiag(diagNum) = diagTitle
77 ELSE
78 C- diagnostics is already defined but with different characteristics
79 WRITE(msgBuf,'(3A,I6,A)') 'DIAGNOSTICS_ADDTOLIST: diag=',
80 & diagName,' is already defined (# ',n,' )'
81 CALL PRINT_ERROR( msgBuf , myThid)
82 WRITE(msgBuf,'(4A,I6)') 'DIAGNOSTICS_ADDTOLIST: cannot ',
83 & 'change parser="',gdiag(n),'" & mate=',hdiag(n)
84 CALL PRINT_ERROR( msgBuf , myThid)
85 WRITE(msgBuf,'(4A,I6,A)') 'DIAGNOSTICS_ADDTOLIST:',
86 & ' to : "',diagCode,'" and mate=',diagMate,' ; => STOP'
87 CALL PRINT_ERROR( msgBuf , myThid)
88 STOP 'ABNORMAL END: S/R DIAGNOSTICS_ADDTOLIST'
89 ENDIF
90 ENDIF
91 ENDDO
92
93 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
94
95 IF ( diagNum.EQ.0 ) THEN
96 C-- Add one diagnostic to the list of available diagnostics:
97 diagNum = ndiagt + 1
98
99 IF ( diagNum .LE. ndiagMax ) THEN
100 cdiag(diagNum) = diagName
101 gdiag(diagNum) = diagCode
102 hdiag(diagNum) = diagMate
103 udiag(diagNum) = diagUnits
104 tdiag(diagNum) = diagTitle
105 ndiagt = diagNum
106 ELSE
107 WRITE(msgBuf,'(2A,I6)') 'DIAGNOSTICS_ADDTOLIST:',
108 & ' Exceed Max.Number of diagnostics ndiagMax=', ndiagMax
109 CALL PRINT_ERROR( msgBuf , myThid)
110 WRITE(msgBuf,'(2A)')
111 & 'DIAGNOSTICS_ADDTOLIST: when setting diagnostic: ',diagName
112 CALL PRINT_ERROR( msgBuf , myThid)
113 STOP 'ABNORMAL END: S/R DIAGNOSTICS_ADDTOLIST'
114 ENDIF
115
116 ENDIF
117
118 _END_MASTER( myThid )
119
120 RETURN
121 END

  ViewVC Help
Powered by ViewVC 1.1.22