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

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.19

  ViewVC Help
Powered by ViewVC 1.1.22