/[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.32 - (show annotations) (download)
Mon Aug 1 20:38:39 2011 UTC (12 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64a, checkpoint64c, checkpoint64b, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64
Changes since 1.31: +2 -1 lines
add internal param for printing if first call.

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

  ViewVC Help
Powered by ViewVC 1.1.22