/[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.2 - (hide annotations) (download)
Tue Dec 14 03:48:23 2004 UTC (19 years, 6 months ago) by jmc
Branch: MAIN
Changes since 1.1: +3 -2 lines
fix index checking

1 jmc 1.2 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_readparms.F,v 1.1 2004/12/13 21:43:54 jmc 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    
16     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     CHARACTER*8 filename(ldimLoc)
44     CHARACTER*8 blk8c
45     CHARACTER*(MAX_LEN_MBUF) msgBuf
46     INTEGER ku, stdUnit
47     INTEGER k,l,n,m
48     _RL undef, getcon
49    
50     NAMELIST / diagnostics_list /
51     & frequency, levels, fields, filename,
52     & diag_mnc
53    
54     C Initialize and Read Diagnostics Namelist
55     _BEGIN_MASTER(myThid)
56    
57     undef = getcon('UNDEF')
58     blk8c = ' '
59    
60     DO l = 1,ldimLoc
61     frequency(l) = 0
62     DO k = 1,kdimLoc
63     levels (k,l) = undef
64     ENDDO
65     DO m = 1,fdimLoc
66     fields (m,l) = blk8c
67     ENDDO
68     ENDDO
69     diag_mnc = .FALSE.
70    
71     WRITE(msgBuf,'(A)')
72     & ' DIAGNOSTICS_READPARMS: opening data.diagnostics'
73     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1)
74    
75     CALL OPEN_COPY_DATA_FILE('data.diagnostics',
76     & 'DIAGNOSTICS_READPARMS', ku, myThid )
77     READ (ku,NML=diagnostics_list)
78     CLOSE (ku)
79    
80     C Initialise diag_choices common block
81     nlists = 0
82     DO n = 1,numlists
83     freq(n) = 0
84     nlevels(n) = 0
85     nfields(n) = 0
86     fnames(n) = blk8c
87     DO k = 1,numLevels
88     levs(k,n) = 0
89     ENDDO
90     DO m = 1,numperlist
91     flds(m,n) = ' '
92     jdiag(m,n) = 0
93     ENDDO
94     ENDDO
95     diag_mdsio = .TRUE.
96    
97     C Fill Diagnostics Common Block with Namelist Info
98     IF ( useMNC .AND. diag_mnc
99     & .AND. (.NOT. outputTypesInclusive)) THEN
100     diag_mdsio = .FALSE.
101     ENDIF
102    
103     DO l = 1,ldimLoc
104     IF ( frequency(l).NE.0 .AND. nlists.LT.numlists ) THEN
105     n = nlists + 1
106     freq(n) = frequency(l)
107     fnames(n) = filename (l)
108     nlevels(n) = 0
109     IF ( levels(1,l).NE.undef ) THEN
110     DO k=1,kdimLoc
111     IF ( levels(k,l).NE.undef .AND.
112     & nlevels(n).LT.numLevels ) THEN
113     nlevels(n) = nlevels(n) + 1
114     levs(nlevels(n),n) = levels(k,l)
115     ELSEIF ( levels(k,l).NE.undef ) THEN
116     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
117     & 'Exceed Max.Num. of Levels numLevels=', numLevels
118     CALL PRINT_ERROR( msgBuf , myThid )
119     WRITE(msgBuf,'(2A,I3,A,F3.0)') 'DIAGNOSTICS_READPARMS: ',
120     & 'when trying to add level(k=', k, ' )=', levels(k,l)
121     CALL PRINT_ERROR( msgBuf , myThid )
122     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
123     & ' for list l=', l, ', filename: ', filename(l)
124     CALL PRINT_ERROR( msgBuf , myThid )
125     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
126     ENDIF
127     ENDDO
128     ELSE
129     nlevels(n) = Nr
130     DO k=1,nlevels(n)
131     levs(k,n) = k
132     ENDDO
133     ENDIF
134     nfields(n) = 0
135     DO m=1,fdimLoc
136     IF ( fields(m,l).NE.blk8c .AND.
137     & nfields(n).LT.numperlist ) THEN
138     nfields(n) = nfields(n) + 1
139     flds(nfields(n),n) = fields(m,l)
140 jmc 1.2 ELSEIF ( fields(m,l).NE.blk8c ) THEN
141 jmc 1.1 WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
142     & 'Exceed Max.Num. of Fields/list numperlist=', numperlist
143     CALL PRINT_ERROR( msgBuf , myThid )
144     WRITE(msgBuf,'(2A,I3,3A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
145     & 'when trying to add field (m=', m, ' ): ',fields(m,l)
146     CALL PRINT_ERROR( msgBuf , myThid )
147     WRITE(msgBuf,'(2A,I3,2A)') 'DIAGNOSTICS_READPARMS: ',
148     & ' in list l=', l, ', filename: ', filename(l)
149     CALL PRINT_ERROR( msgBuf , myThid )
150     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
151     ENDIF
152     ENDDO
153     nlists = nlists + 1
154 jmc 1.2 c write(6,*) 'list summary:',n,nfields(n),nlevels(n)
155 jmc 1.1 ELSEIF ( frequency(l).NE.0 ) THEN
156     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
157     & 'Exceed Max.Num. of list numlists=', numlists
158     CALL PRINT_ERROR( msgBuf , myThid )
159     WRITE(msgBuf,'(2A,I3)') 'DIAGNOSTICS_READPARMS: ',
160     & 'when trying to add list l=', l
161     CALL PRINT_ERROR( msgBuf , myThid )
162     WRITE(msgBuf,'(2A,I6,2A)') 'DIAGNOSTICS_READPARMS: ',
163     & ' Frq=', frequency(l), ', filename: ', filename(l)
164     CALL PRINT_ERROR( msgBuf , myThid )
165     STOP 'ABNORMAL END: S/R DIAGNOSTICS_READPARMS'
166     ENDIF
167     ENDDO
168    
169     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
170     C Echo History List Data Structure
171     stdUnit = standardMessageUnit
172     WRITE(msgBuf,'(A)')
173     & '-----------------------------------------------------'
174     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
175     WRITE(msgBuf,'(A)')
176     & ' DIAGNOSTICS_READPARMS: active diagnostics summary:'
177     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
178     WRITE(msgBuf,'(A)')
179     & '-----------------------------------------------------'
180     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
181     DO n = 1,nlists
182     WRITE(msgBuf,'(2a)') 'Creating Output Stream: ',fnames(n)
183     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
184     WRITE(msgBuf,*) 'Frequency: ',freq(n)
185     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
186     DO l=1,nlevels(n),20
187     m = MIN(nlevels(n),l+19)
188     WRITE(msgBuf,'(A,20F5.0)') ' Levels: ', (levs(k,n),k=l,m)
189     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
190     ENDDO
191     WRITE(msgBuf,*) 'Fields: ',(' ',flds(l,n),l=1,nfields(n))
192     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
193     ENDDO
194     WRITE(msgBuf,'(A)')
195     & '-----------------------------------------------------'
196     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
197     WRITE(msgBuf,'(A)')
198     CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
199    
200     _END_MASTER(myThid)
201    
202     RETURN
203     END

  ViewVC Help
Powered by ViewVC 1.1.22