/[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.23 - (hide annotations) (download)
Fri May 30 01:58:51 2008 UTC (15 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint60, checkpoint61, checkpoint62, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.22: +4 -4 lines
fix unbalanced bracket ; more/less digits for real/integer missing-Val.

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

  ViewVC Help
Powered by ViewVC 1.1.22