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

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

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


Revision 1.19 - (hide annotations) (download)
Sun Dec 24 20:20:59 2006 UTC (17 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58u_post, checkpoint58w_post, checkpoint58x_post, checkpoint58t_post, checkpoint59e, checkpoint59d, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59, checkpoint58y_post, checkpoint58v_post
Changes since 1.18: +11 -5 lines
minor changes (when vert.interp is used, p-levels magnitude is larger)

1 jmc 1.19 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_readparms.F,v 1.18 2006/06/05 18:15:53 jmc Exp $
2 jmc 1.1 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 jmc 1.3
16 jmc 1.1 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 jmc 1.15 #include "DIAGSTATS_REGIONS.h"
24 jmc 1.1
25     C !INPUT PARAMETERS:
26     INTEGER myThid
27     CEOP
28    
29     C !LOCAL VARIABLES:
30 jmc 1.15 C ldimLoc :: Max Number of Lists (in data.diagnostics)
31     C kdimLoc :: Max Number of Levels (in data.diagnostics)
32     C fdimLoc :: Max Number of Fields (in data.diagnostics)
33 jmc 1.10 C frequency :: Frequency (in s) of Output (ouput every "frequency" second)
34     C timePhase :: phase (in s) within the "frequency" period to write output
35 jmc 1.18 C averagingFreq :: frequency (in s) for periodic averaging interval
36     C averagingPhase :: phase (in s) for periodic averaging interval
37     C repeatCycle :: number of averaging intervals in 1 cycle
38 jmc 1.1 C levels :: List Output Levels
39     C fields :: List Output Fields
40     C filename :: List Output Filename
41 jmc 1.15 C-- for regional-statistics
42 jmc 1.16 C set_regMask(n) :: region-mask set-index that define the region "n"
43 jmc 1.15 C val_regMask(n) :: corresponding mask value of region "n" in the region-mask
44 jmc 1.10 C-- per level statistics output:
45 jmc 1.13 C stat_freq :: Frequency (in s) of statistics output
46 jmc 1.10 C stat_phase :: phase (in s) to write statistics output
47     C stat_region :: List of statistics output Regions
48     C stat_fields :: List of statistics output Fields
49     C stat_fname :: List of statistics output Filename
50     INTEGER ldimLoc, kdimLoc, fdimLoc, rdimLoc
51 jmc 1.1 PARAMETER ( ldimLoc = 2*numlists )
52     PARAMETER ( kdimLoc = 2*numLevels )
53     PARAMETER ( fdimLoc = 2*numperlist )
54 jmc 1.15 PARAMETER ( rdimLoc = nRegions+21 )
55 jmc 1.9 _RL frequency(ldimLoc), timePhase(ldimLoc)
56 jmc 1.18 _RL averagingFreq(ldimLoc), averagingPhase(ldimLoc)
57     INTEGER repeatCycle(ldimLoc)
58 jmc 1.1 _RL levels(kdimLoc,ldimLoc)
59 jmc 1.10 _RL stat_freq(ldimLoc), stat_phase(ldimLoc)
60 jmc 1.1 CHARACTER*8 fields(fdimLoc,ldimLoc)
61 jmc 1.10 CHARACTER*8 stat_fields(fdimLoc,ldimLoc)
62 jmc 1.6 CHARACTER*80 filename(ldimLoc), blkFilName
63 jmc 1.10 CHARACTER*80 stat_fname(ldimLoc)
64 edhill 1.7 CHARACTER*8 fileflags(ldimLoc)
65 jmc 1.1 CHARACTER*8 blk8c
66     CHARACTER*(MAX_LEN_MBUF) msgBuf
67 jmc 1.10 INTEGER stat_region(rdimLoc,ldimLoc)
68 jmc 1.16 INTEGER set_regMask(rdimLoc)
69 jmc 1.15 _RS val_regMask(rdimLoc)
70 jmc 1.1 INTEGER ku, stdUnit
71 molod 1.17 INTEGER j,k,l,n,m,nf
72 jmc 1.13 INTEGER iLen, regionCount
73 jmc 1.6 INTEGER ILNBLNK
74     EXTERNAL ILNBLNK
75 jmc 1.1
76 jmc 1.10 C-- full level output:
77 jmc 1.18 NAMELIST / DIAGNOSTICS_LIST /
78     & frequency, timePhase,
79     & averagingFreq, averagingPhase, repeatCycle,
80     & levels, fields, filename, fileflags,
81     & dumpAtLast, diag_mnc,
82 edhill 1.5 & diag_pickup_read, diag_pickup_write,
83     & diag_pickup_read_mnc, diag_pickup_write_mnc
84 jmc 1.1
85 jmc 1.10 C-- per level statistics output:
86     NAMELIST / DIAG_STATIS_PARMS /
87 jmc 1.13 & stat_freq, stat_phase, stat_region, stat_fields,
88 jmc 1.15 & stat_fname, diagSt_mnc,
89 jmc 1.16 & set_regMask, val_regMask,
90     & diagSt_regMaskFile, nSetRegMskFile
91 jmc 1.10
92 jmc 1.1 C Initialize and Read Diagnostics Namelist
93     _BEGIN_MASTER(myThid)
94    
95     blk8c = ' '
96 jmc 1.6 DO k=1,LEN(blkFilName)
97     blkFilName(k:k) = ' '
98     ENDDO
99 jmc 1.1
100     DO l = 1,ldimLoc
101 jmc 1.18 frequency(l) = 0.
102     timePhase(l) = UNSET_RL
103     averagingFreq(l) = 0.
104     averagingPhase(l)= 0.
105     repeatCycle(l) = 0
106     filename(l) = blkFilName
107 edhill 1.7 C eight spaces: 12345678
108 jmc 1.18 c fileflags(l)(1:8) = ' '
109     fileflags(l) = blk8c
110 jmc 1.1 DO k = 1,kdimLoc
111 jmc 1.18 levels(k,l) = UNSET_RL
112 jmc 1.1 ENDDO
113     DO m = 1,fdimLoc
114 jmc 1.18 fields(m,l) = blk8c
115 jmc 1.1 ENDDO
116     ENDDO
117 jmc 1.18 dumpAtLast = .FALSE.
118 edhill 1.14 diag_mnc = useMNC
119 edhill 1.5 diag_pickup_read = .FALSE.
120     diag_pickup_write = .FALSE.
121     diag_pickup_read_mnc = .FALSE.
122     diag_pickup_write_mnc = .FALSE.
123 jmc 1.1
124 jmc 1.15 diagSt_regMaskFile = ' '
125 jmc 1.16 nSetRegMskFile = 0
126 jmc 1.15 DO k = 1,rdimLoc
127 jmc 1.16 set_regMask(k) = 0
128 jmc 1.15 val_regMask(k) = 0.
129     ENDDO
130 jmc 1.10 DO l = 1,ldimLoc
131     stat_freq(l) = 0.
132     stat_phase(l) = UNSET_RL
133     stat_fname(l) = blkFilName
134     DO k = 1,rdimLoc
135     stat_region(k,l) = UNSET_I
136     ENDDO
137     DO m = 1,fdimLoc
138     stat_fields(m,l) = blk8c
139     ENDDO
140     ENDDO
141    
142     WRITE(msgBuf,'(2A)')
143 jmc 1.1 & ' DIAGNOSTICS_READPARMS: opening data.diagnostics'
144     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)
145 jmc 1.3
146     CALL OPEN_COPY_DATA_FILE('data.diagnostics',
147 jmc 1.1 & 'DIAGNOSTICS_READPARMS', ku, myThid )
148 jmc 1.10
149     WRITE(msgBuf,'(2A)') 'S/R DIAGNOSTICS_READPARMS,',
150     & ' read namelist "diagnostics_list": start'
151     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
152     & SQUEEZE_RIGHT , 1)
153 jmc 1.1 READ (ku,NML=diagnostics_list)
154 jmc 1.10 WRITE(msgBuf,'(2A)') 'S/R DIAGNOSTICS_READPARMS,',
155     & ' read namelist "diagnostics_list": OK'
156     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
157     & SQUEEZE_RIGHT , 1)
158    
159     C- set default for statistics output according to the main flag
160     diag_mnc = diag_mnc .AND. useMNC
161     diagSt_mnc = diag_mnc
162    
163     WRITE(msgBuf,'(2A)') 'S/R DIAGNOSTICS_READPARMS,',
164     & ' read namelist "DIAG_STATIS_PARMS": start'
165     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
166     & SQUEEZE_RIGHT , 1)
167     READ (ku,NML=DIAG_STATIS_PARMS)
168     WRITE(msgBuf,'(2A)') 'S/R DIAGNOSTICS_READPARMS,',
169     & ' read namelist "DIAG_STATIS_PARMS": OK'
170     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
171     & SQUEEZE_RIGHT , 1)
172    
173 jmc 1.1 CLOSE (ku)
174    
175 jmc 1.18 C Initialise DIAG_SELECT common block (except pointers)
176 jmc 1.1 nlists = 0
177     DO n = 1,numlists
178 molod 1.8 freq(n) = 0.
179 jmc 1.9 phase(n) = 0.
180 jmc 1.18 averageFreq(n) = 0.
181     averagePhase(n) = 0.
182     averageCycle(n) = 1
183 jmc 1.1 nlevels(n) = 0
184     nfields(n) = 0
185 jmc 1.6 fnames(n) = blkFilName
186 jmc 1.1 DO k = 1,numLevels
187     levs(k,n) = 0
188     ENDDO
189     DO m = 1,numperlist
190 jmc 1.6 flds(m,n) = blk8c
191 jmc 1.1 ENDDO
192 jmc 1.18 fflags(n) = blk8c
193 jmc 1.1 ENDDO
194    
195 jmc 1.10 C useMNC is confusing (can be T at this point & turned off later, whereas
196     C for all other pkgs, model stops if use${PKG}= T with #undef ALLOW_${PKG})
197     #ifndef ALLOW_MNC
198     C Fix to avoid running without getting any output:
199     diag_mnc = .FALSE.
200     diagSt_mnc = .FALSE.
201     #endif
202    
203 jmc 1.1 C Fill Diagnostics Common Block with Namelist Info
204 jmc 1.10 diagSt_mnc = diagSt_mnc .AND. useMNC
205 jmc 1.4 diag_mdsio = (.NOT. diag_mnc) .OR. outputTypesInclusive
206 edhill 1.5 diag_pickup_read_mnc = diag_pickup_read_mnc .AND. diag_mnc
207     diag_pickup_write_mnc = diag_pickup_write_mnc .AND. diag_mnc
208 jmc 1.10 diag_pickup_read_mdsio =
209 edhill 1.5 & diag_pickup_read .AND. (.NOT. diag_pickup_read_mnc)
210     diag_pickup_write_mdsio = diag_pickup_write .AND.
211     & ((.NOT. diag_pickup_write_mnc) .OR. outputTypesInclusive)
212 jmc 1.10 diagSt_ascii = (.NOT. diagSt_mnc) .OR. outputTypesInclusive
213 jmc 1.3
214 jmc 1.1 DO l = 1,ldimLoc
215 jmc 1.13 iLen = ILNBLNK(filename(l))
216     C- Only lists with non-empty file name (iLen>0) are considered
217     IF ( iLen.GE.1 .AND. nlists.LT.numlists ) THEN
218 jmc 1.1 n = nlists + 1
219     freq(n) = frequency(l)
220 jmc 1.9 IF ( timePhase(l).NE. UNSET_RL ) THEN
221     phase(n) = timePhase(l)
222     ELSEIF ( frequency(l) .LT. 0. ) THEN
223     phase(n) = -0.5 _d 0 * frequency(l)
224     ENDIF
225 jmc 1.18 IF ( averagingFreq(l).GT.0. .AND. repeatCycle(l).GT.1 ) THEN
226     averageFreq(n) = averagingFreq(l)
227     averagePhase(n) = averagingPhase(l)
228     averageCycle(n) = repeatCycle(l)
229     ELSEIF (averagingFreq(l).NE.0. .OR. repeatCycle(l).NE.0) THEN
230     WRITE(msgBuf,'(2A,F17.6,I3)') 'DIAGNOSTICS_READPARMS: ',
231     & 'unvalid Average-Freq & Cycle:',
232     & averagingFreq(l), repeatCycle(l)
233     CALL PRINT_ERROR( msgBuf , myThid )
234     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
235     & ' for list l=', l, ', filename: ', filename(l)
236     CALL PRINT_ERROR( msgBuf , myThid )
237     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
238     ELSEIF ( frequency(l) .EQ. 0. ) THEN
239     averageFreq(n) = nTimeSteps*deltaTClock
240     averagePhase(n) = phase(n)
241     ELSEIF ( frequency(l) .GT. 0. ) THEN
242     averageFreq(n) = frequency(l)
243     averagePhase(n) = phase(n)
244     ENDIF
245 jmc 1.1 fnames(n) = filename (l)
246 edhill 1.7 fflags(n) = fileflags(l)
247 jmc 1.1 nlevels(n) = 0
248 jmc 1.18 IF ( levels(1,l).NE.UNSET_RL ) THEN
249 jmc 1.1 DO k=1,kdimLoc
250 jmc 1.18 IF ( levels(k,l).NE.UNSET_RL .AND.
251 jmc 1.1 & nlevels(n).LT.numLevels ) THEN
252     nlevels(n) = nlevels(n) + 1
253     levs(nlevels(n),n) = levels(k,l)
254 jmc 1.18 ELSEIF ( levels(k,l).NE.UNSET_RL ) THEN
255 jmc 1.1 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
256     & 'Exceed Max.Num. of Levels numLevels=', numLevels
257     CALL PRINT_ERROR( msgBuf , myThid )
258 jmc 1.19 WRITE(msgBuf,'(2A,I3,A,F8.0)') 'DIAGNOSTICS_READPARMS: ',
259 jmc 1.3 & 'when trying to add level(k=', k, ' )=', levels(k,l)
260 jmc 1.1 CALL PRINT_ERROR( msgBuf , myThid )
261     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
262     & ' for list l=', l, ', filename: ', filename(l)
263     CALL PRINT_ERROR( msgBuf , myThid )
264 jmc 1.18 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
265 jmc 1.1 ENDIF
266     ENDDO
267     ELSE
268 jmc 1.3 C- will set levels later, once the Nb of levels of each diag is known
269     nlevels(n) = -1
270 jmc 1.1 ENDIF
271     nfields(n) = 0
272     DO m=1,fdimLoc
273 jmc 1.3 IF ( fields(m,l).NE.blk8c .AND.
274 jmc 1.1 & nfields(n).LT.numperlist ) THEN
275     nfields(n) = nfields(n) + 1
276     flds(nfields(n),n) = fields(m,l)
277 jmc 1.2 ELSEIF ( fields(m,l).NE.blk8c ) THEN
278 jmc 1.1 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
279     & 'Exceed Max.Num. of Fields/list numperlist=', numperlist
280     CALL PRINT_ERROR( msgBuf , myThid )
281     WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
282     & 'when trying to add field (m=', m, ' ): ',fields(m,l)
283     CALL PRINT_ERROR( msgBuf , myThid )
284     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
285     & ' in list l=', l, ', filename: ', filename(l)
286     CALL PRINT_ERROR( msgBuf , myThid )
287     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
288     ENDIF
289     ENDDO
290     nlists = nlists + 1
291 jmc 1.2 c write(6,*) 'list summary:',n,nfields(n),nlevels(n)
292 jmc 1.13 ELSEIF ( iLen.GE.1 ) THEN
293 jmc 1.1 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
294     & 'Exceed Max.Num. of list numlists=', numlists
295     CALL PRINT_ERROR( msgBuf , myThid )
296     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
297     & 'when trying to add list l=', l
298     CALL PRINT_ERROR( msgBuf , myThid )
299 jmc 1.10 WRITE(msgBuf,'(2A,F17.6,2A)') 'DIAGNOSTICS_READPARMS: ',
300 jmc 1.1 & ' Frq=', frequency(l), ', filename: ', filename(l)
301     CALL PRINT_ERROR( msgBuf , myThid )
302     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
303     ENDIF
304     ENDDO
305    
306     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
307 jmc 1.10
308 jmc 1.15 C- Initialise DIAG_STATS_REGMASK common block (except the mask)
309 jmc 1.16 nSetRegMask = 0
310 jmc 1.15 DO j = 0,nRegions
311     diagSt_kRegMsk(j) = 0
312     diagSt_vRegMsk(j) = 0.
313     ENDDO
314     C Global statistics (region # 0)
315     diagSt_kRegMsk(0) = 1
316    
317     C- Initialise DIAG_STATIS common block (except pointers)
318 jmc 1.10 diagSt_nbLists = 0
319     DO n = 1,numlists
320     diagSt_freq(n) = 0.
321     diagSt_phase(n) = 0.
322     diagSt_nbFlds(n) = 0
323     diagSt_ioUnit(n) = 0
324     diagSt_Fname(n) = blkFilName
325     DO j = 0,nRegions
326     diagSt_region(j,n) = 0
327     ENDDO
328     DO m = 1,numperlist
329     diagSt_Flds(m,n) = blk8c
330     ENDDO
331     ENDDO
332    
333     C Fill Diagnostics Common Block with Namelist Info
334     diagSt_ascii = (.NOT. diagSt_mnc) .OR. outputTypesInclusive
335    
336 jmc 1.15 C- Region mask correspondence table:
337     C note: this table should be build when regions are defined ;
338     C for now, simpler just to read it from namelist in data.diagnostics
339     j = 0
340     DO k = 1,rdimLoc
341 jmc 1.16 IF ( set_regMask(k).NE.0 .OR. val_regMask(k).NE.0. ) THEN
342 jmc 1.15 j = j+1
343     IF ( j.LE.nRegions ) THEN
344 jmc 1.16 diagSt_kRegMsk(j) = set_regMask(k)
345 jmc 1.15 diagSt_vRegMsk(j) = val_regMask(k)
346     ENDIF
347     ENDIF
348     ENDDO
349     IF ( j.GT.nRegions ) THEN
350     WRITE(msgBuf,'(2A,I3,A)') 'DIAGNOSTICS_READPARMS: ',
351 jmc 1.16 & 'set_regMask & val_regMask lists assume at least',j,' regions'
352 jmc 1.15 CALL PRINT_ERROR( msgBuf , myThid )
353     WRITE(msgBuf,'(2A)') 'DIAGNOSTICS_READPARMS: ',
354     & 'Need to increase "nRegions" in DIAGNOSTICS_SIZE.h'
355     CALL PRINT_ERROR( msgBuf , myThid )
356     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
357     ENDIF
358    
359 jmc 1.10 DO l = 1,ldimLoc
360 jmc 1.13 iLen = ILNBLNK(stat_fname(l))
361     C- Only lists with non-empty file name (iLen>0) are considered
362     IF ( iLen.GE.1 .AND. diagSt_nbLists.LT.numlists)THEN
363 jmc 1.10 n = diagSt_nbLists + 1
364     diagSt_freq(n) = stat_freq(l)
365     IF ( stat_phase(l).NE. UNSET_RL ) THEN
366     diagSt_phase(n) = stat_phase(l)
367     ELSEIF ( stat_freq(l) .LT. 0. ) THEN
368     diagSt_phase(n) = -0.5 _d 0 * stat_freq(l)
369     ENDIF
370     diagSt_Fname(n) = stat_fname(l)
371     regionCount = 0
372     DO k=1,rdimLoc
373     j = stat_region(k,l)
374     IF ( j.NE.UNSET_I .AND. j.GE.0 .AND. j.LE.nRegions ) THEN
375 jmc 1.15 IF ( diagSt_region(j,n).EQ.0 ) THEN
376 jmc 1.10 diagSt_region(j,n) = 1
377     regionCount = regionCount + 1
378 jmc 1.15 ELSE
379     WRITE(msgBuf,'(2A,I3,2A)')
380     & 'DIAGNOSTICS_READPARMS:',
381     & ' in list l=', l, ', stat_fname: ', stat_fname(l)
382     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
383     & SQUEEZE_RIGHT , myThid )
384     WRITE(msgBuf,'(A,I3,A)')
385     & 'DIAGNOSTICS_READPARMS: region=',j,
386     & ' can only be selected once => ignore 2nd selection'
387     CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
388     & SQUEEZE_RIGHT , myThid )
389     ENDIF
390 jmc 1.10 ELSEIF ( j.NE.UNSET_I ) THEN
391     WRITE(msgBuf,'(A,I3,A,I3,2A)')
392     & 'DIAGNOSTICS_READPARMS: region=',j,
393     & ' in list l=', l, ', stat_fname: ', stat_fname(l)
394     CALL PRINT_ERROR( msgBuf , myThid )
395     WRITE(msgBuf,'(2A,I3,A,I3,2A)')
396     & 'DIAGNOSTICS_READPARMS: ==> exceed Max.Nb of regions',
397     & '(=',nRegions,' )'
398     CALL PRINT_ERROR( msgBuf , myThid )
399     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
400     ENDIF
401     ENDDO
402     IF ( regionCount.EQ.0 ) THEN
403     C- no region selected => default is Global statistics (region Id: 0)
404     diagSt_region(0,n) = 1
405     ENDIF
406     diagSt_nbFlds(n) = 0
407     DO m=1,fdimLoc
408     IF ( stat_fields(m,l).NE.blk8c .AND.
409     & diagSt_nbFlds(n).LT.numperlist ) THEN
410     diagSt_nbFlds(n) = diagSt_nbFlds(n) + 1
411     diagSt_Flds(diagSt_nbFlds(n),n) = stat_fields(m,l)
412     ELSEIF ( stat_fields(m,l).NE.blk8c ) THEN
413     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
414     & 'Exceed Max.Num. of Fields/list numperlist=', numperlist
415     CALL PRINT_ERROR( msgBuf , myThid )
416     WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
417 jmc 1.13 & 'when trying to add stat_field (m=', m,
418 jmc 1.10 & ' ): ',stat_fields(m,l)
419     CALL PRINT_ERROR( msgBuf , myThid )
420     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
421     & ' in list l=', l, ', stat_fname: ', stat_fname(l)
422     CALL PRINT_ERROR( msgBuf , myThid )
423     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
424     ENDIF
425     ENDDO
426     diagSt_nbLists = diagSt_nbLists + 1
427     c write(6,*) 'stat-list summary:',n,diagSt_nbFlds(n),regionCount
428 jmc 1.13 ELSEIF ( iLen.GE.1 ) THEN
429 jmc 1.10 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
430     & 'Exceed Max.Num. of list numlists=', numlists
431     CALL PRINT_ERROR( msgBuf , myThid )
432     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
433     & 'when trying to add stat_list l=', l
434     CALL PRINT_ERROR( msgBuf , myThid )
435     WRITE(msgBuf,'(2A,F17.6,2A)') 'DIAGNOSTICS_READPARMS: ',
436     & ' Frq=', stat_freq(l), ', stat_fname: ', stat_fname(l)
437     CALL PRINT_ERROR( msgBuf , myThid )
438     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
439     ENDIF
440     ENDDO
441    
442     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
443 jmc 1.1 C Echo History List Data Structure
444     stdUnit = standardMessageUnit
445     WRITE(msgBuf,'(A)')
446     & '-----------------------------------------------------'
447     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
448     WRITE(msgBuf,'(A)')
449     & ' DIAGNOSTICS_READPARMS: active diagnostics summary:'
450     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
451     WRITE(msgBuf,'(A)')
452     & '-----------------------------------------------------'
453     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
454     DO n = 1,nlists
455 jmc 1.18 WRITE(msgBuf,'(2a)') 'Creating Output Stream: ', fnames(n)
456 jmc 1.1 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
457 jmc 1.18 WRITE(msgBuf,'(2(A,F17.6))') 'Output Frequency:', freq(n),
458 jmc 1.9 & ' ; Phase: ', phase(n)
459 jmc 1.1 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
460 jmc 1.18 WRITE(msgBuf,'(2(A,F17.6),A,I3)')
461     & ' Averaging Freq.:', averageFreq(n),
462     & ' , Phase: ', averagePhase(n), ' , Cycle:', averageCycle(n)
463     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
464 jmc 1.3 IF ( nlevels(n).EQ.-1 ) THEN
465     WRITE(msgBuf,'(A,A)') ' Levels: ','will be set later'
466     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
467 jmc 1.19 ELSEIF ( fflags(n)(2:2).EQ.'P' ) THEN
468     DO l=1,nlevels(n),10
469     m = MIN(nlevels(n),l+9)
470     WRITE(msgBuf,'(A,1P10E10.3)')' interp: ', (levs(k,n),k=l,m)
471     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
472     ENDDO
473 jmc 1.3 ELSE
474     DO l=1,nlevels(n),20
475 jmc 1.1 m = MIN(nlevels(n),l+19)
476     WRITE(msgBuf,'(A,20F5.0)') ' Levels: ', (levs(k,n),k=l,m)
477     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
478 jmc 1.3 ENDDO
479     ENDIF
480 molod 1.17 DO nf = 1,nfields(n),10
481 jmc 1.19 m = MIN(nfields(n),nf+9)
482     WRITE(msgBuf,'(21A)') 'Fields: ',(' ',flds(l,n),l=nf,m)
483     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
484 molod 1.17 ENDDO
485 jmc 1.1 ENDDO
486     WRITE(msgBuf,'(A)')
487     & '-----------------------------------------------------'
488     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
489     WRITE(msgBuf,'(A)')
490 jmc 1.10 & ' DIAGNOSTICS_READPARMS: statistics diags. summary:'
491     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
492     DO n = 1,diagSt_nbLists
493     WRITE(msgBuf,'(2a)') 'Creating Stats. Output Stream: ',
494     & diagSt_Fname(n)
495     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
496 jmc 1.18 WRITE(msgBuf,'(2(A,F17.6))') 'Output Frequency:',
497     & diagSt_freq(n), ' ; Phase: ', diagSt_phase(n)
498 jmc 1.10 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
499 jmc 1.13 WRITE(msgBuf,'(A)') ' Regions : '
500 jmc 1.10 l = 12
501     DO j=0,nRegions
502     IF ( diagSt_region(j,n).GE.1 ) THEN
503     IF (l+3.LE.MAX_LEN_MBUF) WRITE(msgBuf,'(A,I3)') msgBuf(1:l),j
504     l = l+3
505     ENDIF
506     ENDDO
507     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
508     WRITE(msgBuf,*) 'Fields: ',
509     & (' ',diagSt_Flds(l,n),l=1,diagSt_nbFlds(n))
510     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
511     ENDDO
512     WRITE(msgBuf,'(A)')
513     & '-----------------------------------------------------'
514     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
515     WRITE(msgBuf,'(A)')
516 jmc 1.1 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
517    
518     _END_MASTER(myThid)
519    
520     RETURN
521     END

  ViewVC Help
Powered by ViewVC 1.1.22