/[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.1 by jmc, Mon Dec 13 21:43:54 2004 UTC revision 1.5 by edhill, Sun Feb 20 04:31:54 2005 UTC
# Line 12  C     !INTERFACE: Line 12  C     !INTERFACE:
12    
13  C     !DESCRIPTION:  C     !DESCRIPTION:
14  C     Read Diagnostics Namelists to specify output sequence.  C     Read Diagnostics Namelists to specify output sequence.
15          
16  C     !USES:  C     !USES:
17        IMPLICIT NONE        IMPLICIT NONE
18  #include "SIZE.h"  #include "SIZE.h"
# Line 49  C     filename  :: List Output Filename Line 49  C     filename  :: List Output Filename
49    
50        NAMELIST / diagnostics_list /        NAMELIST / diagnostics_list /
51       &     frequency, levels, fields, filename,       &     frequency, levels, fields, filename,
52       &     diag_mnc       &     diag_mnc,
53         &     diag_pickup_read,     diag_pickup_write,
54         &     diag_pickup_read_mnc, diag_pickup_write_mnc
55    
56  C     Initialize and Read Diagnostics Namelist  C     Initialize and Read Diagnostics Namelist
57        _BEGIN_MASTER(myThid)        _BEGIN_MASTER(myThid)
# Line 66  C     Initialize and Read Diagnostics Na Line 68  C     Initialize and Read Diagnostics Na
68            fields (m,l) = blk8c            fields (m,l) = blk8c
69          ENDDO          ENDDO
70        ENDDO        ENDDO
71        diag_mnc   = .FALSE.        diag_mnc = useMNC
72          diag_pickup_read      = .FALSE.
73          diag_pickup_write     = .FALSE.
74          diag_pickup_read_mnc  = .FALSE.
75          diag_pickup_write_mnc = .FALSE.
76    
77        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
78       &     ' DIAGNOSTICS_READPARMS: opening data.diagnostics'       &     ' DIAGNOSTICS_READPARMS: opening data.diagnostics'
79        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)
80          
81        CALL OPEN_COPY_DATA_FILE('data.diagnostics',        CALL OPEN_COPY_DATA_FILE('data.diagnostics',
82       &     'DIAGNOSTICS_READPARMS', ku, myThid )       &     'DIAGNOSTICS_READPARMS', ku, myThid )
83        READ  (ku,NML=diagnostics_list)        READ  (ku,NML=diagnostics_list)
84        CLOSE (ku)        CLOSE (ku)
# Line 92  C     Initialise diag_choices common blo Line 98  C     Initialise diag_choices common blo
98            jdiag(m,n) = 0            jdiag(m,n) = 0
99          ENDDO          ENDDO
100        ENDDO        ENDDO
       diag_mdsio = .TRUE.  
101    
102  C     Fill Diagnostics Common Block with Namelist Info  C     Fill Diagnostics Common Block with Namelist Info
103        IF ( useMNC .AND. diag_mnc        diag_mnc = diag_mnc .AND. useMNC
104       &            .AND. (.NOT. outputTypesInclusive)) THEN        diag_mdsio = (.NOT. diag_mnc) .OR. outputTypesInclusive
105          diag_mdsio = .FALSE.        diag_pickup_read_mnc  = diag_pickup_read_mnc .AND. diag_mnc
106        ENDIF        diag_pickup_write_mnc = diag_pickup_write_mnc .AND. diag_mnc
107                diag_pickup_read_mdsio  =
108         &     diag_pickup_read .AND. (.NOT. diag_pickup_read_mnc)
109          diag_pickup_write_mdsio = diag_pickup_write .AND.
110         &     ((.NOT. diag_pickup_write_mnc) .OR. outputTypesInclusive)
111    
112        DO l = 1,ldimLoc        DO l = 1,ldimLoc
113         IF ( frequency(l).NE.0 .AND. nlists.LT.numlists ) THEN         IF ( frequency(l).NE.0 .AND. nlists.LT.numlists ) THEN
114           n = nlists + 1           n = nlists + 1
# Line 108  C     Fill Diagnostics Common Block with Line 117  C     Fill Diagnostics Common Block with
117           nlevels(n) = 0           nlevels(n) = 0
118           IF ( levels(1,l).NE.undef ) THEN           IF ( levels(1,l).NE.undef ) THEN
119             DO k=1,kdimLoc             DO k=1,kdimLoc
120               IF ( levels(k,l).NE.undef .AND.               IF ( levels(k,l).NE.undef .AND.
121       &            nlevels(n).LT.numLevels ) THEN       &            nlevels(n).LT.numLevels ) THEN
122                 nlevels(n) = nlevels(n) + 1                 nlevels(n) = nlevels(n) + 1
123                 levs(nlevels(n),n) = levels(k,l)                 levs(nlevels(n),n) = levels(k,l)
# Line 117  C     Fill Diagnostics Common Block with Line 126  C     Fill Diagnostics Common Block with
126       &         'Exceed Max.Num. of Levels numLevels=', numLevels       &         'Exceed Max.Num. of Levels numLevels=', numLevels
127                CALL PRINT_ERROR( msgBuf , myThid )                CALL PRINT_ERROR( msgBuf , myThid )
128                WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',                WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',
129       &         'when trying to add level(k=', k, ' )=', levels(k,l)       &         'when trying to add level(k=', k, ' )=', levels(k,l)
130                CALL PRINT_ERROR( msgBuf , myThid )                CALL PRINT_ERROR( msgBuf , myThid )
131                WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',                WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
132       &         ' for list l=', l, ', filename: ', filename(l)       &         ' for list l=', l, ', filename: ', filename(l)
# Line 126  C     Fill Diagnostics Common Block with Line 135  C     Fill Diagnostics Common Block with
135               ENDIF               ENDIF
136             ENDDO             ENDDO
137           ELSE           ELSE
138             nlevels(n) = Nr  C-       will set levels later, once the Nb of levels of each diag is known
139             DO k=1,nlevels(n)             nlevels(n) = -1
              levs(k,n) = k  
            ENDDO  
140           ENDIF           ENDIF
141           nfields(n) = 0           nfields(n) = 0
142           DO m=1,fdimLoc           DO m=1,fdimLoc
143             IF ( fields(m,l).NE.blk8c .AND.             IF ( fields(m,l).NE.blk8c .AND.
144       &          nfields(n).LT.numperlist ) THEN       &          nfields(n).LT.numperlist ) THEN
145               nfields(n) = nfields(n) + 1               nfields(n) = nfields(n) + 1
146               flds(nfields(n),n) = fields(m,l)               flds(nfields(n),n) = fields(m,l)
147             ELSEIF ( fields(m,n).NE.blk8c ) THEN             ELSEIF ( fields(m,l).NE.blk8c ) THEN
148               WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',               WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
149       &        'Exceed Max.Num. of Fields/list numperlist=', numperlist       &        'Exceed Max.Num. of Fields/list numperlist=', numperlist
150               CALL PRINT_ERROR( msgBuf , myThid )               CALL PRINT_ERROR( msgBuf , myThid )
# Line 151  C     Fill Diagnostics Common Block with Line 158  C     Fill Diagnostics Common Block with
158             ENDIF             ENDIF
159           ENDDO           ENDDO
160           nlists = nlists + 1           nlists = nlists + 1
161    c        write(6,*) 'list summary:',n,nfields(n),nlevels(n)
162         ELSEIF ( frequency(l).NE.0 ) THEN         ELSEIF ( frequency(l).NE.0 ) THEN
163           WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',           WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
164       &            'Exceed Max.Num. of list numlists=', numlists       &            'Exceed Max.Num. of list numlists=', numlists
# Line 182  C     Echo History List Data Structure Line 190  C     Echo History List Data Structure
190          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
191          WRITE(msgBuf,*) 'Frequency: ',freq(n)          WRITE(msgBuf,*) 'Frequency: ',freq(n)
192          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
193          DO l=1,nlevels(n),20          IF ( nlevels(n).EQ.-1 ) THEN
194              WRITE(msgBuf,'(A,A)') ' Levels:    ','will be set later'
195              CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
196            ELSE
197             DO l=1,nlevels(n),20
198            m = MIN(nlevels(n),l+19)            m = MIN(nlevels(n),l+19)
199            WRITE(msgBuf,'(A,20F5.0)') ' Levels:    ', (levs(k,n),k=l,m)            WRITE(msgBuf,'(A,20F5.0)') ' Levels:    ', (levs(k,n),k=l,m)
200            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)            CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
201          ENDDO           ENDDO
202            ENDIF
203          WRITE(msgBuf,*) 'Fields:   ',(' ',flds(l,n),l=1,nfields(n))          WRITE(msgBuf,*) 'Fields:   ',(' ',flds(l,n),l=1,nfields(n))
204          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)          CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
205        ENDDO        ENDDO

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22