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

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

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


Revision 1.3 - (show annotations) (download)
Mon Dec 20 01:52:58 2004 UTC (19 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57b_post, checkpoint57c_pre, checkpoint57c_post
Changes since 1.2: +18 -15 lines
only write "meaningfull" levels when this entry is omitted in data.diagnostics

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_readparms.F,v 1.2 2004/12/14 03:48:23 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_READPARMS
9
10 C !INTERFACE:
11 SUBROUTINE DIAGNOSTICS_READPARMS(myThid)
12
13 C !DESCRIPTION:
14 C Read Diagnostics Namelists to specify output sequence.
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "DIAGNOSTICS_SIZE.h"
22 #include "DIAGNOSTICS.h"
23
24 C !INPUT PARAMETERS:
25 INTEGER myThid
26 CEOP
27
28 C !LOCAL VARIABLES:
29 C ldimLoc :: Max Number of Lists
30 C kdimLoc :: Max Number of Levels
31 C fdimLoc :: Max Number of Fields
32 C frequency :: Frequency of Output (ouput every "frequency" iteration)
33 C levels :: List Output Levels
34 C fields :: List Output Fields
35 C filename :: List Output Filename
36 INTEGER ldimLoc, kdimLoc, fdimLoc
37 PARAMETER ( ldimLoc = 2*numlists )
38 PARAMETER ( kdimLoc = 2*numLevels )
39 PARAMETER ( fdimLoc = 2*numperlist )
40 INTEGER frequency(ldimLoc)
41 _RL levels(kdimLoc,ldimLoc)
42 CHARACTER*8 fields(fdimLoc,ldimLoc)
43 CHARACTER*8 filename(ldimLoc)
44 CHARACTER*8 blk8c
45 CHARACTER*(MAX_LEN_MBUF) msgBuf
46 INTEGER ku, stdUnit
47 INTEGER k,l,n,m
48 _RL undef, getcon
49
50 NAMELIST / diagnostics_list /
51 & frequency, levels, fields, filename,
52 & diag_mnc
53
54 C Initialize and Read Diagnostics Namelist
55 _BEGIN_MASTER(myThid)
56
57 undef = getcon('UNDEF')
58 blk8c = ' '
59
60 DO l = 1,ldimLoc
61 frequency(l) = 0
62 DO k = 1,kdimLoc
63 levels (k,l) = undef
64 ENDDO
65 DO m = 1,fdimLoc
66 fields (m,l) = blk8c
67 ENDDO
68 ENDDO
69 diag_mnc = .FALSE.
70
71 WRITE(msgBuf,'(A)')
72 & ' DIAGNOSTICS_READPARMS: opening data.diagnostics'
73 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)
74
75 CALL OPEN_COPY_DATA_FILE('data.diagnostics',
76 & 'DIAGNOSTICS_READPARMS', ku, myThid )
77 READ (ku,NML=diagnostics_list)
78 CLOSE (ku)
79
80 C Initialise diag_choices common block
81 nlists = 0
82 DO n = 1,numlists
83 freq(n) = 0
84 nlevels(n) = 0
85 nfields(n) = 0
86 fnames(n) = blk8c
87 DO k = 1,numLevels
88 levs(k,n) = 0
89 ENDDO
90 DO m = 1,numperlist
91 flds(m,n) = ' '
92 jdiag(m,n) = 0
93 ENDDO
94 ENDDO
95 diag_mdsio = .TRUE.
96
97 C Fill Diagnostics Common Block with Namelist Info
98 IF ( useMNC .AND. diag_mnc
99 & .AND. (.NOT. outputTypesInclusive)) THEN
100 diag_mdsio = .FALSE.
101 ENDIF
102
103 DO l = 1,ldimLoc
104 IF ( frequency(l).NE.0 .AND. nlists.LT.numlists ) THEN
105 n = nlists + 1
106 freq(n) = frequency(l)
107 fnames(n) = filename (l)
108 nlevels(n) = 0
109 IF ( levels(1,l).NE.undef ) THEN
110 DO k=1,kdimLoc
111 IF ( levels(k,l).NE.undef .AND.
112 & nlevels(n).LT.numLevels ) THEN
113 nlevels(n) = nlevels(n) + 1
114 levs(nlevels(n),n) = levels(k,l)
115 ELSEIF ( levels(k,l).NE.undef ) THEN
116 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
117 & 'Exceed Max.Num. of Levels numLevels=', numLevels
118 CALL PRINT_ERROR( msgBuf , myThid )
119 WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',
120 & 'when trying to add level(k=', k, ' )=', levels(k,l)
121 CALL PRINT_ERROR( msgBuf , myThid )
122 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
123 & ' for list l=', l, ', filename: ', filename(l)
124 CALL PRINT_ERROR( msgBuf , myThid )
125 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
126 ENDIF
127 ENDDO
128 ELSE
129 C- will set levels later, once the Nb of levels of each diag is known
130 nlevels(n) = -1
131 ENDIF
132 nfields(n) = 0
133 DO m=1,fdimLoc
134 IF ( fields(m,l).NE.blk8c .AND.
135 & nfields(n).LT.numperlist ) THEN
136 nfields(n) = nfields(n) + 1
137 flds(nfields(n),n) = fields(m,l)
138 ELSEIF ( fields(m,l).NE.blk8c ) THEN
139 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
140 & 'Exceed Max.Num. of Fields/list numperlist=', numperlist
141 CALL PRINT_ERROR( msgBuf , myThid )
142 WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
143 & 'when trying to add field (m=', m, ' ): ',fields(m,l)
144 CALL PRINT_ERROR( msgBuf , myThid )
145 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
146 & ' in list l=', l, ', filename: ', filename(l)
147 CALL PRINT_ERROR( msgBuf , myThid )
148 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
149 ENDIF
150 ENDDO
151 nlists = nlists + 1
152 c write(6,*) 'list summary:',n,nfields(n),nlevels(n)
153 ELSEIF ( frequency(l).NE.0 ) THEN
154 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
155 & 'Exceed Max.Num. of list numlists=', numlists
156 CALL PRINT_ERROR( msgBuf , myThid )
157 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
158 & 'when trying to add list l=', l
159 CALL PRINT_ERROR( msgBuf , myThid )
160 WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_READPARMS: ',
161 & ' Frq=', frequency(l), ', filename: ', filename(l)
162 CALL PRINT_ERROR( msgBuf , myThid )
163 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
164 ENDIF
165 ENDDO
166
167 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
168 C Echo History List Data Structure
169 stdUnit = standardMessageUnit
170 WRITE(msgBuf,'(A)')
171 & '-----------------------------------------------------'
172 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
173 WRITE(msgBuf,'(A)')
174 & ' DIAGNOSTICS_READPARMS: active diagnostics summary:'
175 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
176 WRITE(msgBuf,'(A)')
177 & '-----------------------------------------------------'
178 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
179 DO n = 1,nlists
180 WRITE(msgBuf,'(2a)') 'Creating Output Stream: ',fnames(n)
181 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
182 WRITE(msgBuf,*) 'Frequency: ',freq(n)
183 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
184 IF ( nlevels(n).EQ.-1 ) THEN
185 WRITE(msgBuf,'(A,A)') ' Levels: ','will be set later'
186 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
187 ELSE
188 DO l=1,nlevels(n),20
189 m = MIN(nlevels(n),l+19)
190 WRITE(msgBuf,'(A,20F5.0)') ' Levels: ', (levs(k,n),k=l,m)
191 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
192 ENDDO
193 ENDIF
194 WRITE(msgBuf,*) 'Fields: ',(' ',flds(l,n),l=1,nfields(n))
195 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
196 ENDDO
197 WRITE(msgBuf,'(A)')
198 & '-----------------------------------------------------'
199 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
200 WRITE(msgBuf,'(A)')
201 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
202
203 _END_MASTER(myThid)
204
205 RETURN
206 END

  ViewVC Help
Powered by ViewVC 1.1.22