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

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

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


Revision 1.6 - (hide annotations) (download)
Thu Mar 17 01:22:43 2005 UTC (19 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57g_post, checkpoint57g_pre, checkpoint57f_pre, checkpoint57f_post
Changes since 1.5: +18 -5 lines
extend diagnostics file-name to 80 characters (instead of 8 previously)

1 jmc 1.6 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_readparms.F,v 1.5 2005/02/20 04:31:54 edhill Exp $
2 jmc 1.1 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 jmc 1.3
16 jmc 1.1 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    
24     C !INPUT PARAMETERS:
25     INTEGER myThid
26     CEOP
27    
28     C !LOCAL VARIABLES:
29     C ldimLoc :: Max Number of Lists
30     C kdimLoc :: Max Number of Levels
31     C fdimLoc :: Max Number of Fields
32     C frequency :: Frequency of Output (ouput every "frequency" iteration)
33     C levels :: List Output Levels
34     C fields :: List Output Fields
35     C filename :: List Output Filename
36     INTEGER ldimLoc, kdimLoc, fdimLoc
37     PARAMETER ( ldimLoc = 2*numlists )
38     PARAMETER ( kdimLoc = 2*numLevels )
39     PARAMETER ( fdimLoc = 2*numperlist )
40     INTEGER frequency(ldimLoc)
41     _RL levels(kdimLoc,ldimLoc)
42     CHARACTER*8 fields(fdimLoc,ldimLoc)
43 jmc 1.6 CHARACTER*80 filename(ldimLoc), blkFilName
44 jmc 1.1 CHARACTER*8 blk8c
45     CHARACTER*(MAX_LEN_MBUF) msgBuf
46     INTEGER ku, stdUnit
47 jmc 1.6 INTEGER k,l,n,m,iL
48 jmc 1.1 _RL undef, getcon
49 jmc 1.6 INTEGER ILNBLNK
50     EXTERNAL ILNBLNK
51 jmc 1.1
52     NAMELIST / diagnostics_list /
53     & frequency, levels, fields, filename,
54 edhill 1.5 & diag_mnc,
55     & diag_pickup_read, diag_pickup_write,
56     & diag_pickup_read_mnc, diag_pickup_write_mnc
57 jmc 1.1
58     C Initialize and Read Diagnostics Namelist
59     _BEGIN_MASTER(myThid)
60    
61     undef = getcon('UNDEF')
62     blk8c = ' '
63 jmc 1.6 DO k=1,LEN(blkFilName)
64     blkFilName(k:k) = ' '
65     ENDDO
66 jmc 1.1
67     DO l = 1,ldimLoc
68     frequency(l) = 0
69 jmc 1.6 filename (l) = blkFilName
70 jmc 1.1 DO k = 1,kdimLoc
71     levels (k,l) = undef
72     ENDDO
73     DO m = 1,fdimLoc
74     fields (m,l) = blk8c
75     ENDDO
76     ENDDO
77 jmc 1.4 diag_mnc = useMNC
78 edhill 1.5 diag_pickup_read = .FALSE.
79     diag_pickup_write = .FALSE.
80     diag_pickup_read_mnc = .FALSE.
81     diag_pickup_write_mnc = .FALSE.
82 jmc 1.1
83     WRITE(msgBuf,'(A)')
84     & ' DIAGNOSTICS_READPARMS: opening data.diagnostics'
85     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)
86 jmc 1.3
87     CALL OPEN_COPY_DATA_FILE('data.diagnostics',
88 jmc 1.1 & 'DIAGNOSTICS_READPARMS', ku, myThid )
89     READ (ku,NML=diagnostics_list)
90     CLOSE (ku)
91    
92     C Initialise diag_choices common block
93     nlists = 0
94     DO n = 1,numlists
95     freq(n) = 0
96     nlevels(n) = 0
97     nfields(n) = 0
98 jmc 1.6 fnames(n) = blkFilName
99 jmc 1.1 DO k = 1,numLevels
100     levs(k,n) = 0
101     ENDDO
102     DO m = 1,numperlist
103 jmc 1.6 flds(m,n) = blk8c
104 jmc 1.1 jdiag(m,n) = 0
105     ENDDO
106     ENDDO
107    
108     C Fill Diagnostics Common Block with Namelist Info
109 jmc 1.4 diag_mnc = diag_mnc .AND. useMNC
110     diag_mdsio = (.NOT. diag_mnc) .OR. outputTypesInclusive
111 edhill 1.5 diag_pickup_read_mnc = diag_pickup_read_mnc .AND. diag_mnc
112     diag_pickup_write_mnc = diag_pickup_write_mnc .AND. diag_mnc
113     diag_pickup_read_mdsio =
114     & diag_pickup_read .AND. (.NOT. diag_pickup_read_mnc)
115     diag_pickup_write_mdsio = diag_pickup_write .AND.
116     & ((.NOT. diag_pickup_write_mnc) .OR. outputTypesInclusive)
117 jmc 1.3
118 jmc 1.1 DO l = 1,ldimLoc
119 jmc 1.6 iL = ILNBLNK(filename(l))
120     IF ( frequency(l).NE.0 .AND. iL.EQ.0 ) THEN
121     WRITE(msgBuf,'(2A,I3,A,I6)') 'DIAGNOSTICS_READPARMS: ',
122     & 'Empty File-name ! (list l=', l, ' ), freq:',frequency(l)
123     CALL PRINT_ERROR( msgBuf , myThid )
124     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
125     ENDIF
126 jmc 1.1 IF ( frequency(l).NE.0 .AND. nlists.LT.numlists ) THEN
127     n = nlists + 1
128     freq(n) = frequency(l)
129     fnames(n) = filename (l)
130     nlevels(n) = 0
131     IF ( levels(1,l).NE.undef ) THEN
132     DO k=1,kdimLoc
133 jmc 1.3 IF ( levels(k,l).NE.undef .AND.
134 jmc 1.1 & nlevels(n).LT.numLevels ) THEN
135     nlevels(n) = nlevels(n) + 1
136     levs(nlevels(n),n) = levels(k,l)
137     ELSEIF ( levels(k,l).NE.undef ) THEN
138     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
139     & 'Exceed Max.Num. of Levels numLevels=', numLevels
140     CALL PRINT_ERROR( msgBuf , myThid )
141     WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',
142 jmc 1.3 & 'when trying to add level(k=', k, ' )=', levels(k,l)
143 jmc 1.1 CALL PRINT_ERROR( msgBuf , myThid )
144     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
145     & ' for list l=', l, ', filename: ', filename(l)
146     CALL PRINT_ERROR( msgBuf , myThid )
147     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
148     ENDIF
149     ENDDO
150     ELSE
151 jmc 1.3 C- will set levels later, once the Nb of levels of each diag is known
152     nlevels(n) = -1
153 jmc 1.1 ENDIF
154     nfields(n) = 0
155     DO m=1,fdimLoc
156 jmc 1.3 IF ( fields(m,l).NE.blk8c .AND.
157 jmc 1.1 & nfields(n).LT.numperlist ) THEN
158     nfields(n) = nfields(n) + 1
159     flds(nfields(n),n) = fields(m,l)
160 jmc 1.2 ELSEIF ( fields(m,l).NE.blk8c ) THEN
161 jmc 1.1 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
162     & 'Exceed Max.Num. of Fields/list numperlist=', numperlist
163     CALL PRINT_ERROR( msgBuf , myThid )
164     WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
165     & 'when trying to add field (m=', m, ' ): ',fields(m,l)
166     CALL PRINT_ERROR( msgBuf , myThid )
167     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
168     & ' in list l=', l, ', filename: ', filename(l)
169     CALL PRINT_ERROR( msgBuf , myThid )
170     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
171     ENDIF
172     ENDDO
173     nlists = nlists + 1
174 jmc 1.2 c write(6,*) 'list summary:',n,nfields(n),nlevels(n)
175 jmc 1.1 ELSEIF ( frequency(l).NE.0 ) THEN
176     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
177     & 'Exceed Max.Num. of list numlists=', numlists
178     CALL PRINT_ERROR( msgBuf , myThid )
179     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
180     & 'when trying to add list l=', l
181     CALL PRINT_ERROR( msgBuf , myThid )
182     WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_READPARMS: ',
183     & ' Frq=', frequency(l), ', filename: ', filename(l)
184     CALL PRINT_ERROR( msgBuf , myThid )
185     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
186     ENDIF
187     ENDDO
188    
189     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
190     C Echo History List Data Structure
191     stdUnit = standardMessageUnit
192     WRITE(msgBuf,'(A)')
193     & '-----------------------------------------------------'
194     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
195     WRITE(msgBuf,'(A)')
196     & ' DIAGNOSTICS_READPARMS: active diagnostics summary:'
197     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
198     WRITE(msgBuf,'(A)')
199     & '-----------------------------------------------------'
200     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
201     DO n = 1,nlists
202     WRITE(msgBuf,'(2a)') 'Creating Output Stream: ',fnames(n)
203     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
204     WRITE(msgBuf,*) 'Frequency: ',freq(n)
205     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
206 jmc 1.3 IF ( nlevels(n).EQ.-1 ) THEN
207     WRITE(msgBuf,'(A,A)') ' Levels: ','will be set later'
208     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
209     ELSE
210     DO l=1,nlevels(n),20
211 jmc 1.1 m = MIN(nlevels(n),l+19)
212     WRITE(msgBuf,'(A,20F5.0)') ' Levels: ', (levs(k,n),k=l,m)
213     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
214 jmc 1.3 ENDDO
215     ENDIF
216 jmc 1.1 WRITE(msgBuf,*) 'Fields: ',(' ',flds(l,n),l=1,nfields(n))
217     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
218     ENDDO
219     WRITE(msgBuf,'(A)')
220     & '-----------------------------------------------------'
221     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
222     WRITE(msgBuf,'(A)')
223     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
224    
225     _END_MASTER(myThid)
226    
227     RETURN
228     END

  ViewVC Help
Powered by ViewVC 1.1.22