/[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.33 - (show annotations) (download)
Wed Feb 6 21:25:26 2013 UTC (11 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f
Changes since 1.32: +38 -17 lines
change default missing_value from UNSET_RL to -999.

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

  ViewVC Help
Powered by ViewVC 1.1.22