/[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.31 - (show annotations) (download)
Fri Jul 22 19:47:14 2011 UTC (12 years, 10 months ago) by jmc
Branch: MAIN
Changes since 1.30: +10 -2 lines
add specific parameter for velocity-potential solver (diag_cg2d),
 (default = main code CG2D params)

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

  ViewVC Help
Powered by ViewVC 1.1.22