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

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

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

revision 1.11 by molod, Tue Jun 14 22:30:02 2005 UTC revision 1.26 by jmc, Fri Jan 15 18:57:36 2010 UTC
# Line 20  C     !USES: Line 20  C     !USES:
20  #include "PARAMS.h"  #include "PARAMS.h"
21  #include "DIAGNOSTICS_SIZE.h"  #include "DIAGNOSTICS_SIZE.h"
22  #include "DIAGNOSTICS.h"  #include "DIAGNOSTICS.h"
23    #include "DIAGSTATS_REGIONS.h"
24    
25  C     !INPUT PARAMETERS:  C     !INPUT PARAMETERS:
26        INTEGER myThid        INTEGER myThid
27  CEOP  CEOP
28    
29  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
30  C     ldimLoc :: Max Number of Lists  C     ldimLoc :: Max Number of Lists  (in data.diagnostics)
31  C     kdimLoc :: Max Number of Levels  C     kdimLoc :: Max Number of Levels (in data.diagnostics)
32  C     fdimLoc :: Max Number of Fields  C     fdimLoc :: Max Number of Fields (in data.diagnostics)
33  C     frequency :: Frequency (in s) of Output (ouput every "frequency" second)  C     frequency :: Frequency (in s) of Output (ouput every "frequency" second)
34  C     timePhase :: phase (in s) within the "frequency" period to write output  C     timePhase :: phase (in s) within the "frequency" period to write output
35    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    C     mising_value     :: missing value for floats   in output
39    C     mising_value_int :: missing value for integers in output
40  C     levels    :: List Output Levels  C     levels    :: List Output Levels
41  C     fields    :: List Output Fields  C     fields    :: List Output Fields
42  C     filename  :: List Output Filename  C     filename  :: List Output Filename
43    C--   for regional-statistics
44    C     set_regMask(n) :: region-mask set-index that define the region "n"
45    C     val_regMask(n) :: corresponding mask value of region "n" in the region-mask
46  C--   per level statistics output:  C--   per level statistics output:
47  C     stat_freq   :: Frequency (in s) of statistics output  C     stat_freq   :: Frequency (in s) of statistics output
48  C     stat_phase  :: phase (in s) to write statistics output  C     stat_phase  :: phase (in s) to write statistics output
49  C     stat_region :: List of statistics output Regions  C     stat_region :: List of statistics output Regions
50  C     stat_fields :: List of statistics output Fields  C     stat_fields :: List of statistics output Fields
# Line 44  C     stat_fname  :: List of statistics Line 53  C     stat_fname  :: List of statistics
53        PARAMETER ( ldimLoc = 2*numlists )        PARAMETER ( ldimLoc = 2*numlists )
54        PARAMETER ( kdimLoc = 2*numLevels )        PARAMETER ( kdimLoc = 2*numLevels )
55        PARAMETER ( fdimLoc = 2*numperlist )        PARAMETER ( fdimLoc = 2*numperlist )
56        PARAMETER ( rdimLoc = 2*nRegions+1 )        PARAMETER ( rdimLoc = nRegions+21 )
57        _RL         frequency(ldimLoc), timePhase(ldimLoc)        _RL         frequency(ldimLoc), timePhase(ldimLoc)
58          _RL         averagingFreq(ldimLoc), averagingPhase(ldimLoc)
59          INTEGER     repeatCycle(ldimLoc)
60          _RL         missing_value(ldimLoc)
61          INTEGER     missing_value_int(ldimLoc)
62        _RL         levels(kdimLoc,ldimLoc)        _RL         levels(kdimLoc,ldimLoc)
63        _RL         stat_freq(ldimLoc), stat_phase(ldimLoc)        _RL         stat_freq(ldimLoc), stat_phase(ldimLoc)
64        CHARACTER*8 fields(fdimLoc,ldimLoc)        CHARACTER*8 fields(fdimLoc,ldimLoc)
# Line 55  C     stat_fname  :: List of statistics Line 68  C     stat_fname  :: List of statistics
68        CHARACTER*8 fileflags(ldimLoc)        CHARACTER*8 fileflags(ldimLoc)
69        CHARACTER*8 blk8c        CHARACTER*8 blk8c
70        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
71          CHARACTER*12 suffix
72        INTEGER stat_region(rdimLoc,ldimLoc)        INTEGER stat_region(rdimLoc,ldimLoc)
73          INTEGER set_regMask(rdimLoc)
74          _RS     val_regMask(rdimLoc)
75        INTEGER ku, stdUnit        INTEGER ku, stdUnit
76        INTEGER j,k,l,n,m        INTEGER j,k,l,n,m,nf
77        INTEGER regionCount        INTEGER iLen, regionCount
       _RL undef, getcon  
78        INTEGER  ILNBLNK        INTEGER  ILNBLNK
79        EXTERNAL ILNBLNK        EXTERNAL ILNBLNK
80    
81  C--   full level output:  C--   full level output:
82        NAMELIST / diagnostics_list /        NAMELIST / DIAGNOSTICS_LIST /
83       &     frequency, timePhase, levels, fields, filename, fileflags,       &     frequency, timePhase,
84       &     diag_mnc,       &     averagingFreq, averagingPhase, repeatCycle,
85         &     missing_value, missing_value_int,
86         &     levels, fields, filename, fileflags,
87         &     dumpAtLast, diag_mnc,
88       &     diag_pickup_read,     diag_pickup_write,       &     diag_pickup_read,     diag_pickup_write,
89       &     diag_pickup_read_mnc, diag_pickup_write_mnc       &     diag_pickup_read_mnc, diag_pickup_write_mnc
90    
91  C--   per level statistics output:  C--   per level statistics output:
92        NAMELIST / DIAG_STATIS_PARMS /        NAMELIST / DIAG_STATIS_PARMS /
93       &     stat_freq, stat_phase, stat_region, stat_fields,       &     stat_freq, stat_phase, stat_region, stat_fields,
94       &     stat_fname,       &     stat_fname, diagSt_mnc,
95       &     diagSt_mnc       &     set_regMask, val_regMask,
96         &     diagSt_regMaskFile, nSetRegMskFile
97    
98  C     Initialize and Read Diagnostics Namelist  C     Initialize and Read Diagnostics Namelist
99        _BEGIN_MASTER(myThid)        _BEGIN_MASTER(myThid)
100    
       undef = getcon('UNDEF')  
101        blk8c  = '        '        blk8c  = '        '
102        DO k=1,LEN(blkFilName)        DO k=1,LEN(blkFilName)
103          blkFilName(k:k) = ' '          blkFilName(k:k) = ' '
104        ENDDO        ENDDO
105    
106        DO l = 1,ldimLoc        DO l = 1,ldimLoc
107          frequency(l) = 0.          frequency(l)  = 0.
108          timePhase(l) = UNSET_RL          timePhase(l)  = UNSET_RL
109          filename (l) = blkFilName          averagingFreq(l) = 0.
110  C       eight spaces:        12345678          averagingPhase(l)= 0.
111          fileflags(l)(1:8) = '        '          repeatCycle(l)   = 0
112            filename(l)   = blkFilName
113            missing_value(l)     = UNSET_RL
114            missing_value_int(l) = UNSET_I
115            fileflags(l)  = blk8c
116          DO k = 1,kdimLoc          DO k = 1,kdimLoc
117            levels (k,l) = undef            levels(k,l) = UNSET_RL
118          ENDDO          ENDDO
119          DO m = 1,fdimLoc          DO m = 1,fdimLoc
120            fields (m,l) = blk8c            fields(m,l) = blk8c
121          ENDDO          ENDDO
122        ENDDO        ENDDO
123        diag_mnc = useMNC        settingDiags = .FALSE.
124          dumpAtLast   = .FALSE.
125          diag_mnc     = useMNC
126        diag_pickup_read      = .FALSE.        diag_pickup_read      = .FALSE.
127        diag_pickup_write     = .FALSE.        diag_pickup_write     = .FALSE.
128        diag_pickup_read_mnc  = .FALSE.        diag_pickup_read_mnc  = .FALSE.
129        diag_pickup_write_mnc = .FALSE.        diag_pickup_write_mnc = .FALSE.
130    
131          diagSt_regMaskFile = ' '
132          nSetRegMskFile = 0
133          DO k = 1,rdimLoc
134            set_regMask(k) = 0
135            val_regMask(k) = 0.
136          ENDDO
137        DO l = 1,ldimLoc        DO l = 1,ldimLoc
138          stat_freq(l)  = 0.          stat_freq(l)  = 0.
139          stat_phase(l) = UNSET_RL          stat_phase(l) = UNSET_RL
# Line 141  C-    set default for statistics output Line 171  C-    set default for statistics output
171       &     ' read namelist "DIAG_STATIS_PARMS": start'       &     ' read namelist "DIAG_STATIS_PARMS": start'
172        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
173       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
 c     STOP 'before reading namelist: DIAG_STATIS_PARMS'  
174        READ  (ku,NML=DIAG_STATIS_PARMS)        READ  (ku,NML=DIAG_STATIS_PARMS)
175        WRITE(msgBuf,'(2A)') 'S/R DIAGNOSTICS_READPARMS,',        WRITE(msgBuf,'(2A)') 'S/R DIAGNOSTICS_READPARMS,',
176       &     ' read namelist "DIAG_STATIS_PARMS": OK'       &     ' read namelist "DIAG_STATIS_PARMS": OK'
# Line 150  c     STOP 'before reading namelist: DIA Line 179  c     STOP 'before reading namelist: DIA
179    
180        CLOSE (ku)        CLOSE (ku)
181    
182  C     Initialise diag_choices common block  C     Initialise DIAG_SELECT common block (except pointers)
183        nlists = 0        nlists = 0
184        DO n = 1,numlists        DO n = 1,numlists
185          freq(n) = 0.          freq(n) = 0.
186          phase(n) = 0.          phase(n) = 0.
187            averageFreq(n)  = 0.
188            averagePhase(n) = 0.
189            averageCycle(n) = 1
190          nlevels(n) = 0          nlevels(n) = 0
191          nfields(n) = 0          nfields(n) = 0
192          fnames(n) = blkFilName          fnames(n) = blkFilName
193            misvalFlt(n) = UNSET_RL
194            misvalInt(n) = UNSET_I
195          DO k = 1,numLevels          DO k = 1,numLevels
196            levs(k,n) = 0            levs(k,n) = 0
197          ENDDO          ENDDO
198          DO m = 1,numperlist          DO m = 1,numperlist
199            flds(m,n) = blk8c            flds(m,n) = blk8c
           jdiag(m,n) = 0  
200          ENDDO          ENDDO
201            fflags(n)   = blk8c
202        ENDDO        ENDDO
203    
204  C     useMNC is confusing (can be T at this point & turned off later, whereas  C     useMNC is confusing (can be T at this point & turned off later, whereas
# Line 187  C     Fill Diagnostics Common Block with Line 221  C     Fill Diagnostics Common Block with
221        diagSt_ascii = (.NOT. diagSt_mnc) .OR. outputTypesInclusive        diagSt_ascii = (.NOT. diagSt_mnc) .OR. outputTypesInclusive
222    
223        DO l = 1,ldimLoc        DO l = 1,ldimLoc
224         IF ( filename(L).NE.blkFilName .and. nlists.LT.numlists ) THEN         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           n = nlists + 1           n = nlists + 1
228           freq(n)    = frequency(l)           freq(n)    = frequency(l)
229           IF ( timePhase(l).NE. UNSET_RL ) THEN           IF ( timePhase(l).NE. UNSET_RL ) THEN
# Line 195  C     Fill Diagnostics Common Block with Line 231  C     Fill Diagnostics Common Block with
231           ELSEIF ( frequency(l) .LT. 0. ) THEN           ELSEIF ( frequency(l) .LT. 0. ) THEN
232             phase(n) = -0.5 _d 0 * frequency(l)             phase(n) = -0.5 _d 0 * frequency(l)
233           ENDIF           ENDIF
234             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               WRITE(msgBuf,'(2A,F18.6,I4)') 'DIAGNOSTICS_READPARMS: ',
240         &       'unvalid Average-Freq & Cycle:',
241         &       averagingFreq(l), repeatCycle(l)
242               CALL PRINT_ERROR( msgBuf , myThid )
243               WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_READPARMS: ',
244         &         ' 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             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           fnames(n)  = filename (l)           fnames(n)  = filename (l)
259           fflags(n)  = fileflags(l)           fflags(n)  = fileflags(l)
260           nlevels(n) = 0           nlevels(n) = 0
261           IF ( levels(1,l).NE.undef ) THEN           IF ( levels(1,l).NE.UNSET_RL ) THEN
262             DO k=1,kdimLoc             DO k=1,kdimLoc
263               IF ( levels(k,l).NE.undef .AND.               IF ( levels(k,l).NE.UNSET_RL .AND.
264       &            nlevels(n).LT.numLevels ) THEN       &            nlevels(n).LT.numLevels ) THEN
265                 nlevels(n) = nlevels(n) + 1                 nlevels(n) = nlevels(n) + 1
266                 levs(nlevels(n),n) = levels(k,l)                 levs(nlevels(n),n) = levels(k,l)
267               ELSEIF ( levels(k,l).NE.undef ) THEN               ELSEIF ( levels(k,l).NE.UNSET_RL ) THEN
268                WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',                WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
269       &         'Exceed Max.Num. of Levels numLevels=', numLevels       &         'Exceed Max.Num. of Levels numLevels=', numLevels
270                CALL PRINT_ERROR( msgBuf , myThid )                CALL PRINT_ERROR( msgBuf , myThid )
271                WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',                WRITE(msgBuf,'(2A,I4,A,F8.0)') 'DIAGNOSTICS_READPARMS: ',
272       &         'when trying to add level(k=', k, ' )=', levels(k,l)       &         'when trying to add level(k=', k, ' )=', levels(k,l)
273                CALL PRINT_ERROR( msgBuf , myThid )                CALL PRINT_ERROR( msgBuf , myThid )
274                WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',                WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_READPARMS: ',
275       &         ' for list l=', l, ', filename: ', filename(l)       &         ' for list l=', l, ', filename: ', filename(l)
276                CALL PRINT_ERROR( msgBuf , myThid )                CALL PRINT_ERROR( msgBuf , myThid )
277                 STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'                STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
278               ENDIF               ENDIF
279             ENDDO             ENDDO
280           ELSE           ELSE
# Line 228  C-       will set levels later, once the Line 288  C-       will set levels later, once the
288               nfields(n) = nfields(n) + 1               nfields(n) = nfields(n) + 1
289               flds(nfields(n),n) = fields(m,l)               flds(nfields(n),n) = fields(m,l)
290             ELSEIF ( fields(m,l).NE.blk8c ) THEN             ELSEIF ( fields(m,l).NE.blk8c ) THEN
291               WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
292       &        'Exceed Max.Num. of Fields/list numperlist=', numperlist       &        'Exceed Max.Num. of Fields/list numperlist=', numperlist
293               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
294               WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I4,3A,I4,2A)') 'DIAGNOSTICS_READPARMS: ',
295       &        'when trying to add field (m=', m, ' ): ',fields(m,l)       &        'when trying to add field (m=', m, ' ): ',fields(m,l)
296               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
297               WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_READPARMS: ',
298       &        ' in list l=', l, ', filename: ', filename(l)       &        ' in list l=', l, ', filename: ', filename(l)
299               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
300               STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'               STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
# Line 242  C-       will set levels later, once the Line 302  C-       will set levels later, once the
302           ENDDO           ENDDO
303           nlists = nlists + 1           nlists = nlists + 1
304  c        write(6,*) 'list summary:',n,nfields(n),nlevels(n)  c        write(6,*) 'list summary:',n,nfields(n),nlevels(n)
305         ELSEIF (filename(L).NE.blkFilName) THEN         ELSEIF ( iLen.GE.1 ) THEN
306           WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
307       &            'Exceed Max.Num. of list numlists=', numlists       &            'Exceed Max.Num. of list numlists=', numlists
308           CALL PRINT_ERROR( msgBuf , myThid )           CALL PRINT_ERROR( msgBuf , myThid )
309           WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
310       &    'when trying to add list l=', l       &    'when trying to add list l=', l
311           CALL PRINT_ERROR( msgBuf , myThid )           CALL PRINT_ERROR( msgBuf , myThid )
312           WRITE(msgBuf,'(2A,F17.6,2A)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,F18.6,2A)') 'DIAGNOSTICS_READPARMS: ',
313       &    ' Frq=', frequency(l), ', filename: ', filename(l)       &    ' Frq=', frequency(l), ', filename: ', filename(l)
314           CALL PRINT_ERROR( msgBuf , myThid )           CALL PRINT_ERROR( msgBuf , myThid )
315           STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'           STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
# Line 258  c        write(6,*) 'list summary:',n,nf Line 318  c        write(6,*) 'list summary:',n,nf
318    
319  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
320    
321  C     Initialise DIAG_STATIS common block  C-    Initialise DIAG_STATS_REGMASK common block (except the mask)
322          nSetRegMask = 0
323          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        diagSt_nbLists = 0        diagSt_nbLists = 0
332        DO n = 1,numlists        DO n = 1,numlists
333          diagSt_freq(n) = 0.          diagSt_freq(n) = 0.
# Line 271  C     Initialise DIAG_STATIS common bloc Line 340  C     Initialise DIAG_STATIS common bloc
340          ENDDO          ENDDO
341          DO m = 1,numperlist          DO m = 1,numperlist
342            diagSt_Flds(m,n) = blk8c            diagSt_Flds(m,n) = blk8c
           jSdiag(m,n) = 0  
343          ENDDO          ENDDO
344        ENDDO        ENDDO
345    
346  C     Fill Diagnostics Common Block with Namelist Info  C     Fill Diagnostics Common Block with Namelist Info
347        diagSt_ascii = (.NOT. diagSt_mnc) .OR. outputTypesInclusive        diagSt_ascii = (.NOT. diagSt_mnc) .OR. outputTypesInclusive
348    
349    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           IF ( set_regMask(k).NE.0 .OR. val_regMask(k).NE.0. ) THEN
355             j = j+1
356             IF ( j.LE.nRegions ) THEN
357               diagSt_kRegMsk(j) = set_regMask(k)
358               diagSt_vRegMsk(j) = val_regMask(k)
359             ENDIF
360           ENDIF
361          ENDDO
362          IF ( j.GT.nRegions ) THEN
363             WRITE(msgBuf,'(2A,I4,A)') 'DIAGNOSTICS_READPARMS: ',
364         &   'set_regMask & val_regMask lists assume at least',j,' regions'
365             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        DO l = 1,ldimLoc        DO l = 1,ldimLoc
373         IF(stat_fname(L).NE.blkFilName.AND.         iLen = ILNBLNK(stat_fname(l))
374       .                            diagSt_nbLists.LT.numlists)THEN  C-     Only lists with non-empty file name (iLen>0) are considered
375           IF ( iLen.GE.1 .AND. diagSt_nbLists.LT.numlists)THEN
376           n = diagSt_nbLists + 1           n = diagSt_nbLists + 1
377           diagSt_freq(n) = stat_freq(l)           diagSt_freq(n) = stat_freq(l)
378           IF ( stat_phase(l).NE. UNSET_RL ) THEN           IF ( stat_phase(l).NE. UNSET_RL ) THEN
# Line 293  C     Fill Diagnostics Common Block with Line 385  C     Fill Diagnostics Common Block with
385           DO k=1,rdimLoc           DO k=1,rdimLoc
386             j = stat_region(k,l)             j = stat_region(k,l)
387             IF ( j.NE.UNSET_I .AND. j.GE.0 .AND. j.LE.nRegions ) THEN             IF ( j.NE.UNSET_I .AND. j.GE.0 .AND. j.LE.nRegions ) THEN
388                IF ( diagSt_region(j,n).EQ.0 ) THEN
389               diagSt_region(j,n) = 1               diagSt_region(j,n) = 1
390               regionCount = regionCount + 1               regionCount = regionCount + 1
391                ELSE
392                 WRITE(msgBuf,'(2A,I4,2A)')
393         &        'DIAGNOSTICS_READPARMS:',
394         &        ' in list l=', l, ', stat_fname: ', stat_fname(l)
395                 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
396         &                           SQUEEZE_RIGHT , myThid )
397                 WRITE(msgBuf,'(A,I4,A)')
398         &        '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             ELSEIF ( j.NE.UNSET_I ) THEN             ELSEIF ( j.NE.UNSET_I ) THEN
404               WRITE(msgBuf,'(A,I3,A,I3,2A)')               WRITE(msgBuf,'(A,I4,A,I4,2A)')
405       &       'DIAGNOSTICS_READPARMS: region=',j,       &       'DIAGNOSTICS_READPARMS: region=',j,
406       &         ' in list l=', l, ', stat_fname: ', stat_fname(l)       &         ' in list l=', l, ', stat_fname: ', stat_fname(l)
407               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
408               WRITE(msgBuf,'(2A,I3,A,I3,2A)')               WRITE(msgBuf,'(2A,I4,A,I4,2A)')
409       &       'DIAGNOSTICS_READPARMS: ==> exceed Max.Nb of regions',       &       'DIAGNOSTICS_READPARMS: ==> exceed Max.Nb of regions',
410       &       '(=',nRegions,' )'       &       '(=',nRegions,' )'
411               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
# Line 318  C-       no region selected => default i Line 423  C-       no region selected => default i
423               diagSt_nbFlds(n) = diagSt_nbFlds(n) + 1               diagSt_nbFlds(n) = diagSt_nbFlds(n) + 1
424               diagSt_Flds(diagSt_nbFlds(n),n) = stat_fields(m,l)               diagSt_Flds(diagSt_nbFlds(n),n) = stat_fields(m,l)
425             ELSEIF ( stat_fields(m,l).NE.blk8c ) THEN             ELSEIF ( stat_fields(m,l).NE.blk8c ) THEN
426               WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
427       &        'Exceed Max.Num. of Fields/list numperlist=', numperlist       &        'Exceed Max.Num. of Fields/list numperlist=', numperlist
428               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
429               WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I4,3A,I4,2A)') 'DIAGNOSTICS_READPARMS: ',
430       &        'when trying to add stat_field (m=', m,       &        'when trying to add stat_field (m=', m,
431       &        ' ): ',stat_fields(m,l)       &        ' ): ',stat_fields(m,l)
432               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
433               WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I4,2A)') 'DIAGNOSTICS_READPARMS: ',
434       &        ' in list l=', l, ', stat_fname: ', stat_fname(l)       &        ' in list l=', l, ', stat_fname: ', stat_fname(l)
435               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
436               STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'               STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
# Line 333  C-       no region selected => default i Line 438  C-       no region selected => default i
438           ENDDO           ENDDO
439           diagSt_nbLists = diagSt_nbLists + 1           diagSt_nbLists = diagSt_nbLists + 1
440  c        write(6,*) 'stat-list summary:',n,diagSt_nbFlds(n),regionCount  c        write(6,*) 'stat-list summary:',n,diagSt_nbFlds(n),regionCount
441         ELSEIF ( stat_fname(L).NE.blkFilName ) THEN         ELSEIF ( iLen.GE.1 ) THEN
442           WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
443       &            'Exceed Max.Num. of list numlists=', numlists       &            'Exceed Max.Num. of list numlists=', numlists
444           CALL PRINT_ERROR( msgBuf , myThid )           CALL PRINT_ERROR( msgBuf , myThid )
445           WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,I4)') 'DIAGNOSTICS_READPARMS: ',
446       &    'when trying to add stat_list l=', l       &    'when trying to add stat_list l=', l
447           CALL PRINT_ERROR( msgBuf , myThid )           CALL PRINT_ERROR( msgBuf , myThid )
448           WRITE(msgBuf,'(2A,F17.6,2A)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,F18.6,2A)') 'DIAGNOSTICS_READPARMS: ',
449       &    ' Frq=', stat_freq(l), ', stat_fname: ', stat_fname(l)       &    ' Frq=', stat_freq(l), ', stat_fname: ', stat_fname(l)
450           CALL PRINT_ERROR( msgBuf , myThid )           CALL PRINT_ERROR( msgBuf , myThid )
451           STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'           STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
# Line 360  C     Echo History List Data Structure Line 465  C     Echo History List Data Structure
465       & '-----------------------------------------------------'       & '-----------------------------------------------------'
466        CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)        CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
467        DO n = 1,nlists        DO n = 1,nlists
468          WRITE(msgBuf,'(2a)') 'Creating Output Stream: ',fnames(n)          WRITE(msgBuf,'(2A)') 'Creating Output Stream: ', fnames(n)
469          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
470          WRITE(msgBuf,'(2(A,F17.6))') 'Frequency : ',freq(n),          WRITE(msgBuf,'(2(A,F18.6))') 'Output Frequency:', freq(n),
471       &                               ' ; Phase: ', phase(n)       &                               ' ; Phase: ', phase(n)
472          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
473          IF ( nlevels(n).EQ.-1 ) THEN          WRITE(msgBuf,'(2(A,F18.6),A,I4)')
474         &    ' Averaging Freq.:', averageFreq(n),
475         &    ' , Phase: ', averagePhase(n), ' , Cycle:', averageCycle(n)
476            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
477            IF ( fflags(n).EQ.blk8c ) THEN
478              WRITE(msgBuf,'(A,1PE20.12,A,I12,3A)')
479         &       ' missing value:',  misvalFlt(n),
480         &       ' ; for integers:', misvalInt(n)
481            ELSE
482              WRITE(msgBuf,'(A,1PE20.12,A,I12,3A)')
483         &       ' missing value:',  misvalFlt(n),
484         &       ' ; for integers:', misvalInt(n),
485         &       ' ; F-Flags="', fflags(n),'"'
486            ENDIF
487            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
488            IF ( nlevels(n).EQ.-1 .AND. fflags(n)(2:2).EQ.'I' ) THEN
489              WRITE(msgBuf,'(A)') ' Cumulate all Levels (to be set later)'
490              CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
491            ELSEIF ( nlevels(n).EQ.-1 ) THEN
492            WRITE(msgBuf,'(A,A)') ' Levels:    ','will be set later'            WRITE(msgBuf,'(A,A)') ' Levels:    ','will be set later'
493            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
494            ELSEIF ( fflags(n)(2:2).EQ.'P' ) THEN
495             DO l=1,nlevels(n),10
496              m = MIN(nlevels(n),l+9)
497              WRITE(msgBuf,'(A,1P10E10.3)')' interp:  ', (levs(k,n),k=l,m)
498              CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
499             ENDDO
500          ELSE          ELSE
501             suffix = ' Levels:    '
502             IF ( fflags(n)(2:2).EQ.'I' ) suffix = ' Sum Levels:'
503           DO l=1,nlevels(n),20           DO l=1,nlevels(n),20
504            m = MIN(nlevels(n),l+19)            m = MIN(nlevels(n),l+19)
505            WRITE(msgBuf,'(A,20F5.0)') ' Levels:    ', (levs(k,n),k=l,m)            WRITE(msgBuf,'(A,20F5.0)') suffix, (levs(k,n),k=l,m)
506            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
507           ENDDO           ENDDO
508          ENDIF          ENDIF
509          WRITE(msgBuf,*) 'Fields:   ',(' ',flds(l,n),l=1,nfields(n))          DO nf = 1,nfields(n),10
510          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)            m = MIN(nfields(n),nf+9)
511              WRITE(msgBuf,'(21A)') ' Fields:   ',(' ',flds(l,n),l=nf,m)
512              CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
513            ENDDO
514        ENDDO        ENDDO
515        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
516       & '-----------------------------------------------------'       & '-----------------------------------------------------'
# Line 385  C     Echo History List Data Structure Line 519  C     Echo History List Data Structure
519       &     ' DIAGNOSTICS_READPARMS: statistics diags. summary:'       &     ' DIAGNOSTICS_READPARMS: statistics diags. summary:'
520        CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)        CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
521        DO n = 1,diagSt_nbLists        DO n = 1,diagSt_nbLists
522          WRITE(msgBuf,'(2a)') 'Creating Stats. Output Stream: ',          WRITE(msgBuf,'(2A)') 'Creating Stats. Output Stream: ',
523       &                       diagSt_Fname(n)       &                       diagSt_Fname(n)
524          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
525          WRITE(msgBuf,'(2(A,F17.6))') 'Frequency : ',diagSt_freq(n),          WRITE(msgBuf,'(2(A,F18.6))') 'Output Frequency:',
526       &                               ' ; Phase: ', diagSt_phase(n)       &               diagSt_freq(n), ' ; Phase: ', diagSt_phase(n)
527          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
528          WRITE(msgBuf,'(A)') ' Regions : '          WRITE(msgBuf,'(A)') ' Regions: '
529          l = 12          l = 10
530          DO j=0,nRegions          DO j=0,nRegions
531           IF ( diagSt_region(j,n).GE.1 ) THEN           IF ( diagSt_region(j,n).GE.1 ) THEN
           IF (l+3.LE.MAX_LEN_MBUF) WRITE(msgBuf,'(A,I3)') msgBuf(1:l),j  
532            l = l+3            l = l+3
533              IF (l.LE.MAX_LEN_MBUF) WRITE(msgBuf(l-2:l),'(I3)') j
534           ENDIF           ENDIF
535          ENDDO          ENDDO
536          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
537          WRITE(msgBuf,*) 'Fields:   ',          DO nf = 1,diagSt_nbFlds(n),10
538       &                 (' ',diagSt_Flds(l,n),l=1,diagSt_nbFlds(n))            m = MIN(diagSt_nbFlds(n),nf+9)
539          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)            WRITE(msgBuf,'(21A)') ' Fields:   ',
540         &                 (' ',diagSt_Flds(l,n),l=nf,m)
541              CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
542            ENDDO
543        ENDDO        ENDDO
544        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
545       & '-----------------------------------------------------'       & '-----------------------------------------------------'
# Line 412  C     Echo History List Data Structure Line 549  C     Echo History List Data Structure
549    
550        _END_MASTER(myThid)        _END_MASTER(myThid)
551    
552    C--   Everyone else must wait for the parameters to be loaded
553          _BARRIER
554    
555        RETURN        RETURN
556        END        END

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.26

  ViewVC Help
Powered by ViewVC 1.1.22