/[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.9 - (hide annotations) (download)
Sat May 14 20:45:28 2005 UTC (19 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57h_done, checkpoint57h_post
Changes since 1.8: +13 -4 lines
output frequency is now defined in seconds => Needs to change data.diagnostics

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

  ViewVC Help
Powered by ViewVC 1.1.22