/[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.5 - (show annotations) (download)
Sun Feb 20 04:31:54 2005 UTC (19 years, 4 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint57e_post, eckpoint57e_pre
Changes since 1.4: +14 -2 lines
 o diagnostics: add pickup functionality
   - off by default for backwards compatibility
   - current version only uses MDSIO -- MNC will be added

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_readparms.F,v 1.4 2005/02/07 20:49:09 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 & diag_pickup_read, diag_pickup_write,
54 & diag_pickup_read_mnc, diag_pickup_write_mnc
55
56 C Initialize and Read Diagnostics Namelist
57 _BEGIN_MASTER(myThid)
58
59 undef = getcon('UNDEF')
60 blk8c = ' '
61
62 DO l = 1,ldimLoc
63 frequency(l) = 0
64 DO k = 1,kdimLoc
65 levels (k,l) = undef
66 ENDDO
67 DO m = 1,fdimLoc
68 fields (m,l) = blk8c
69 ENDDO
70 ENDDO
71 diag_mnc = useMNC
72 diag_pickup_read = .FALSE.
73 diag_pickup_write = .FALSE.
74 diag_pickup_read_mnc = .FALSE.
75 diag_pickup_write_mnc = .FALSE.
76
77 WRITE(msgBuf,'(A)')
78 & ' DIAGNOSTICS_READPARMS: opening data.diagnostics'
79 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)
80
81 CALL OPEN_COPY_DATA_FILE('data.diagnostics',
82 & 'DIAGNOSTICS_READPARMS', ku, myThid )
83 READ (ku,NML=diagnostics_list)
84 CLOSE (ku)
85
86 C Initialise diag_choices common block
87 nlists = 0
88 DO n = 1,numlists
89 freq(n) = 0
90 nlevels(n) = 0
91 nfields(n) = 0
92 fnames(n) = blk8c
93 DO k = 1,numLevels
94 levs(k,n) = 0
95 ENDDO
96 DO m = 1,numperlist
97 flds(m,n) = ' '
98 jdiag(m,n) = 0
99 ENDDO
100 ENDDO
101
102 C Fill Diagnostics Common Block with Namelist Info
103 diag_mnc = diag_mnc .AND. useMNC
104 diag_mdsio = (.NOT. diag_mnc) .OR. outputTypesInclusive
105 diag_pickup_read_mnc = diag_pickup_read_mnc .AND. diag_mnc
106 diag_pickup_write_mnc = diag_pickup_write_mnc .AND. diag_mnc
107 diag_pickup_read_mdsio =
108 & diag_pickup_read .AND. (.NOT. diag_pickup_read_mnc)
109 diag_pickup_write_mdsio = diag_pickup_write .AND.
110 & ((.NOT. diag_pickup_write_mnc) .OR. outputTypesInclusive)
111
112 DO l = 1,ldimLoc
113 IF ( frequency(l).NE.0 .AND. nlists.LT.numlists ) THEN
114 n = nlists + 1
115 freq(n) = frequency(l)
116 fnames(n) = filename (l)
117 nlevels(n) = 0
118 IF ( levels(1,l).NE.undef ) THEN
119 DO k=1,kdimLoc
120 IF ( levels(k,l).NE.undef .AND.
121 & nlevels(n).LT.numLevels ) THEN
122 nlevels(n) = nlevels(n) + 1
123 levs(nlevels(n),n) = levels(k,l)
124 ELSEIF ( levels(k,l).NE.undef ) THEN
125 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
126 & 'Exceed Max.Num. of Levels numLevels=', numLevels
127 CALL PRINT_ERROR( msgBuf , myThid )
128 WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',
129 & 'when trying to add level(k=', k, ' )=', levels(k,l)
130 CALL PRINT_ERROR( msgBuf , myThid )
131 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
132 & ' for list l=', l, ', filename: ', filename(l)
133 CALL PRINT_ERROR( msgBuf , myThid )
134 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
135 ENDIF
136 ENDDO
137 ELSE
138 C- will set levels later, once the Nb of levels of each diag is known
139 nlevels(n) = -1
140 ENDIF
141 nfields(n) = 0
142 DO m=1,fdimLoc
143 IF ( fields(m,l).NE.blk8c .AND.
144 & nfields(n).LT.numperlist ) THEN
145 nfields(n) = nfields(n) + 1
146 flds(nfields(n),n) = fields(m,l)
147 ELSEIF ( fields(m,l).NE.blk8c ) THEN
148 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
149 & 'Exceed Max.Num. of Fields/list numperlist=', numperlist
150 CALL PRINT_ERROR( msgBuf , myThid )
151 WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
152 & 'when trying to add field (m=', m, ' ): ',fields(m,l)
153 CALL PRINT_ERROR( msgBuf , myThid )
154 WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
155 & ' in list l=', l, ', filename: ', filename(l)
156 CALL PRINT_ERROR( msgBuf , myThid )
157 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
158 ENDIF
159 ENDDO
160 nlists = nlists + 1
161 c write(6,*) 'list summary:',n,nfields(n),nlevels(n)
162 ELSEIF ( frequency(l).NE.0 ) THEN
163 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
164 & 'Exceed Max.Num. of list numlists=', numlists
165 CALL PRINT_ERROR( msgBuf , myThid )
166 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
167 & 'when trying to add list l=', l
168 CALL PRINT_ERROR( msgBuf , myThid )
169 WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_READPARMS: ',
170 & ' Frq=', frequency(l), ', filename: ', filename(l)
171 CALL PRINT_ERROR( msgBuf , myThid )
172 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
173 ENDIF
174 ENDDO
175
176 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
177 C Echo History List Data Structure
178 stdUnit = standardMessageUnit
179 WRITE(msgBuf,'(A)')
180 & '-----------------------------------------------------'
181 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
182 WRITE(msgBuf,'(A)')
183 & ' DIAGNOSTICS_READPARMS: active diagnostics summary:'
184 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
185 WRITE(msgBuf,'(A)')
186 & '-----------------------------------------------------'
187 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
188 DO n = 1,nlists
189 WRITE(msgBuf,'(2a)') 'Creating Output Stream: ',fnames(n)
190 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
191 WRITE(msgBuf,*) 'Frequency: ',freq(n)
192 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
193 IF ( nlevels(n).EQ.-1 ) THEN
194 WRITE(msgBuf,'(A,A)') ' Levels: ','will be set later'
195 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
196 ELSE
197 DO l=1,nlevels(n),20
198 m = MIN(nlevels(n),l+19)
199 WRITE(msgBuf,'(A,20F5.0)') ' Levels: ', (levs(k,n),k=l,m)
200 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
201 ENDDO
202 ENDIF
203 WRITE(msgBuf,*) 'Fields: ',(' ',flds(l,n),l=1,nfields(n))
204 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
205 ENDDO
206 WRITE(msgBuf,'(A)')
207 & '-----------------------------------------------------'
208 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
209 WRITE(msgBuf,'(A)')
210 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
211
212 _END_MASTER(myThid)
213
214 RETURN
215 END

  ViewVC Help
Powered by ViewVC 1.1.22