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

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

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


Revision 1.4 - (hide 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 jmc 1.4 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_set_levels.F,v 1.3 2004/12/16 21:46:36 jmc Exp $
2 jmc 1.1 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 jmc 1.2 C myThid :: my Thread Id number
48 jmc 1.1 INTEGER myThid
49     CEOP
50    
51 jmc 1.2 C !LOCAL VARIABLES:
52     INTEGER l, n, nlevs
53     INTEGER dUnit, stdUnit
54     CHARACTER*(MAX_LEN_MBUF) msgBuf
55     CHARACTER*(72) ccHead, ccLine
56 jmc 1.3 CHARACTER*8 blk8c
57 jmc 1.2 INTEGER ILNBLNK
58     EXTERNAL ILNBLNK
59    
60 jmc 1.1 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 jmc 1.2 _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 jmc 1.4 OPEN(dUnit, file='available_diagnostics.log',
103     & status='unknown', form='formatted')
104 jmc 1.2 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 jmc 1.3
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 jmc 1.2 _END_MASTER( myThid )
154    
155 jmc 1.1 RETURN
156     END

  ViewVC Help
Powered by ViewVC 1.1.22