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

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

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


Revision 1.4 - (show annotations) (download)
Mon Jan 3 19:50:14 2005 UTC (19 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57c_pre, checkpoint57c_post
Changes since 1.3: +3 -3 lines
list of available diagnostics written to file "available_diagnostics.log"
 instead of "available_diagnostics"

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_set_levels.F,v 1.3 2004/12/16 21:46:36 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 CBOP 0
7 C !ROUTINE: DIAGNOSTICS_SET_LEVELS
8
9 C !INTERFACE:
10 SUBROUTINE DIAGNOSTICS_SET_LEVELS( myThid )
11
12 C !DESCRIPTION:
13 C Initialize Diagnostic Levels, according to GDIAG
14 C for all available diagnostics
15 C Notes: needs to be called after all packages set they own available
16 C diagnostics
17
18 C \begin{center}
19 C \begin{tabular}[h]{|c|c|}\hline
20 C \textbf{Positions} & \textbf{Characters}
21 C & \textbf{Meanings} \\\hline
22 C parse(10) & 0 & levels = 0 \\
23 C & 1 & levels = 1 \\
24 C & R & levels = Nr \\
25 C & L & levels = MAX(Nr,NrPhys) \\
26 C & M & levels = MAX(Nr,NrPhys) - 1 \\
27 C \end{tabular}
28 C \end{center}
29
30 C !USES:
31 IMPLICIT NONE
32
33 #include "SIZE.h"
34 #include "EEPARAMS.h"
35 #include "PARAMS.h"
36 #include "DIAGNOSTICS_SIZE.h"
37 #include "DIAGNOSTICS.h"
38
39 #ifdef ALLOW_FIZHI
40 #include "fizhi_SIZE.h"
41 #else
42 INTEGER Nrphys
43 PARAMETER (Nrphys=0)
44 #endif
45
46 C !INPUT PARAMETERS:
47 C myThid :: my Thread Id number
48 INTEGER myThid
49 CEOP
50
51 C !LOCAL VARIABLES:
52 INTEGER l, n, nlevs
53 INTEGER dUnit, stdUnit
54 CHARACTER*(MAX_LEN_MBUF) msgBuf
55 CHARACTER*(72) ccHead, ccLine
56 CHARACTER*8 blk8c
57 INTEGER ILNBLNK
58 EXTERNAL ILNBLNK
59
60 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
61
62 nlevs = MAX(Nr,Nrphys)
63
64 c Diagnostic Levels
65 c -----------------
66 DO n = 1,ndiagt
67 IF (gdiag(n)(10:10) .EQ. '0') kdiag(n) = 0
68 IF (gdiag(n)(10:10) .EQ. '1') kdiag(n) = 1
69 IF (gdiag(n)(10:10) .EQ. 'R') kdiag(n) = Nr
70 IF (gdiag(n)(10:10) .EQ. 'L') kdiag(n) = nlevs
71 IF (gdiag(n)(10:10) .EQ. 'M') kdiag(n) = nlevs - 1
72 ENDDO
73
74 _BEGIN_MASTER( myThid )
75 stdUnit = standardMessageUnit
76 WRITE(msgBuf,'(2A)')
77 & '------------------------------------------------------------'
78 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
79 WRITE(msgBuf,'(A)') 'DIAGNOSTICS_SET_LEVELS: done'
80 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
81 WRITE(msgBuf,'(A,I4)')
82 & ' Total Nb of available Diagnostics: ndiagt=', ndiagt
83 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
84
85 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
86 C write a summary of the (long) list of all available diagnostics:
87 IF ( debugLevel.GE.debLevA ) THEN
88
89 WRITE(msgBuf,'(2A)')
90 & ' write list of available Diagnostics to file: ',
91 & 'available_diagnostics'
92 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
93
94 WRITE(ccHead,'(2A)')
95 & ' Num |<-Name->|Levs|<-parsing code->|<-- Units -->|',
96 & '<- Tile (max=80c)'
97 DO l=1,LEN(ccLine)
98 ccLine(l:l) = '-'
99 ENDDO
100
101 CALL MDSFINDUNIT( dUnit, mythid )
102 OPEN(dUnit, file='available_diagnostics.log',
103 & status='unknown', form='formatted')
104 WRITE(dUnit,'(A,I4)')
105 & ' Total Nb of available Diagnostics: ndiagt=', ndiagt
106 WRITE(dUnit,'(A)') ccLine
107 WRITE(dUnit,'(A)') ccHead
108 WRITE(dUnit,'(A)') ccLine
109 DO n=1,ndiagt
110 IF ( MOD(n,100).EQ.0 ) THEN
111 WRITE(dUnit,'(A)') ccLine
112 WRITE(dUnit,'(A)') ccHead
113 WRITE(dUnit,'(A)') ccLine
114 ENDIF
115 l = ILNBLNK(tdiag(n))
116 IF (l.GE.1) THEN
117 WRITE(dUnit,'(I4,3A,I3,6A)') n,' |',cdiag(n),'|',
118 & kdiag(n),' |',gdiag(n),'|',udiag(n),'|',tdiag(n)(1:l)
119 ELSE
120 WRITE(dUnit,'(I4,3A,I3,6A)') n,' |',cdiag(n),'|',
121 & kdiag(n),' |',gdiag(n),'|',udiag(n),'|'
122 ENDIF
123 ENDDO
124 WRITE(dUnit,'(A)') ccLine
125 WRITE(dUnit,'(A)') ccHead
126 WRITE(dUnit,'(A)') ccLine
127 CLOSE(dUnit)
128
129 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
130 ENDIF
131
132 C-- Check for multiple definition of the same diagnostic name
133 blk8c = ' '
134 DO n = 2,ndiagt
135 IF ( cdiag(n).NE.blk8c ) THEN
136 DO l = 1,n-1
137 IF ( cdiag(l).EQ.cdiag(n) ) THEN
138 WRITE(msgBuf,'(4A)') 'DIAGNOSTICS_SET_LEVELS: ',
139 & 'diag.Name: ',cdiag(n),' registered 2 times :'
140 CALL PRINT_ERROR( msgBuf , myThid )
141 WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_SET_LEVELS: ',
142 & '1rst (l=', l, ' ), title= ',tdiag(l)
143 CALL PRINT_ERROR( msgBuf , myThid )
144 WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_SET_LEVELS: ',
145 & ' 2nd (n=', n, ' ), title= ',tdiag(n)
146 CALL PRINT_ERROR( msgBuf , myThid )
147 STOP 'ABNORMAL END: S/R DIAGNOSTICS_SET_LEVELS'
148 ENDIF
149 ENDDO
150 ENDIF
151 ENDDO
152
153 _END_MASTER( myThid )
154
155 RETURN
156 END

  ViewVC Help
Powered by ViewVC 1.1.22