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

Contents of /MITgcm/pkg/diagnostics/diagnostics_summary.F

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


Revision 1.5 - (show annotations) (download)
Sun Dec 24 20:20:59 2006 UTC (17 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58u_post, checkpoint58w_post, checkpoint58x_post, checkpoint58t_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint58y_post, checkpoint58v_post
Changes since 1.4: +12 -5 lines
minor changes (when vert.interp is used, p-levels magnitude is larger)

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_summary.F,v 1.4 2006/06/05 18:17:22 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 CBOP 0
7 C !ROUTINE: DIAGNOSTICS_SUMMARY
8
9 C !INTERFACE:
10 SUBROUTINE DIAGNOSTICS_SUMMARY( myTime, myIter, myThid )
11
12 C !DESCRIPTION:
13 C Write a summary of diagnostics state to ASCII file unit "dUnit"
14 C Notes: Only called after initialisation but could be called
15 C from any place in the code.
16
17 C !USES:
18 IMPLICIT NONE
19
20 #include "SIZE.h"
21 #include "EEPARAMS.h"
22 #include "PARAMS.h"
23 #include "DIAGNOSTICS_SIZE.h"
24 #include "DIAGNOSTICS.h"
25
26 C !INPUT PARAMETERS:
27 C myThid :: my Thread Id number
28 _RL myTime
29 INTEGER myIter, myThid
30 CEOP
31
32 C !LOCAL VARIABLES:
33 INTEGER md, ld, ipt, im
34 INTEGER j, k, k1, k2, l
35 INTEGER dUnit, stdUnit, iLen
36 INTEGER xNew, xOld, ii, nDup
37 CHARACTER*(2) cSep
38 CHARACTER*(MAX_LEN_MBUF) msgBuf, tmpBuf
39 CHARACTER*(MAX_LEN_FNAM) fn
40 CHARACTER*(72) ccLine, ccFlds, ccList
41 LOGICAL outpSummary
42 INTEGER ILNBLNK
43 EXTERNAL ILNBLNK
44
45 _BEGIN_MASTER( myThid )
46 stdUnit = standardMessageUnit
47
48 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
49
50 IF ( debugLevel.GE.debLevA ) THEN
51 IF ( myIter.EQ.nIter0 ) THEN
52 outpSummary = .TRUE.
53 dUnit = standardMessageUnit
54 WRITE(msgBuf,'(A,I6)')
55 & ' write diagnostics summary to file ioUnit: ',dUnit
56 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
57 ELSE
58 outpSummary = ( myXGlobalLo.EQ.1 .AND. myYGlobalLo.EQ.1 )
59 IF ( outpSummary ) THEN
60 WRITE(fn,'(A,I10.10,A)') 'diagnostics_status.',myIter,'.txt'
61 iLen = ILNBLNK(fn)
62 CALL MDSFINDUNIT( dUnit, mythid )
63 OPEN(dUnit,file=fn(1:iLen),status='unknown',form='formatted')
64 WRITE(msgBuf,'(2A)')
65 & ' write diagnostics summary to file: ',fn(1:iLen)
66 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
67 ENDIF
68 ENDIF
69 ELSE
70 outpSummary = .FALSE.
71 ENDIF
72
73 IF ( outpSummary .AND. debugLevel.GE.debLevA ) THEN
74 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
75 C write a summary diagnostics state:
76
77 DO l=1,LEN(ccLine)
78 ccLine(l:l) = '-'
79 ENDDO
80 WRITE(ccList,'(2A)')
81 & ' nFlds, nActive, freq & phase , nLev'
82 WRITE(ccFlds,'(2A)')
83 & ' diag#| name | ipt | iMate| kLev| count | mate.C|'
84
85 WRITE(dUnit,'(A,I10,A,1PE21.13)')
86 & 'Iter.Nb:',myIter,' ; Time(s):', myTime
87 WRITE(dUnit,'(A)') ccLine
88 WRITE(dUnit,'(A,I6)')
89 & '2D/3D diagnostics: Number of lists:', nlists
90 WRITE(dUnit,'(A)') ccLine
91
92 DO ld=1,nlists
93 iLen = ILNBLNK(fnames(ld))
94 WRITE(dUnit,'(A,I4,2A)') 'listId=', ld,
95 & ' ; file name: ',fnames(ld)(1:iLen)
96 WRITE(dUnit,'(A)') ccList
97 WRITE(dUnit,'(I4,A,I4,A,2F17.6,A,I4)')
98 & nfields(ld), ' |',nActive(ld), ' |',
99 & freq(ld), phase(ld), ' |', nlevels(ld)
100 IF ( fflags(ld)(2:2).EQ.'P' ) THEN
101 DO k1=1,nlevels(ld),10
102 k2 = MIN(nlevels(ld),k1+9)
103 WRITE(dUnit,'(A,1P10E10.3)')' interp:', (levs(k,ld),k=k1,k2)
104 ENDDO
105 ELSE
106 DO k1=1,nlevels(ld),25
107 k2 = MIN(nlevels(ld),k1+24)
108 WRITE(dUnit,'(A,25I4)')' levels:',(NINT(levs(k,ld)),k=k1,k2)
109 ENDDO
110 ENDIF
111 WRITE(dUnit,'(A)') ccFlds
112 DO md=1,nActive(ld)
113 WRITE(msgBuf,'(I5,3A,2(I5,A),I4,A)')
114 & jdiag(md,ld),' |', flds(md,ld),'|',idiag(md,ld),' |',
115 & mdiag(md,ld),' |', kdiag(jdiag(md,ld)),' |'
116 ipt = ABS(idiag(md,ld))
117 IF (ipt.NE.0 .AND. averageCycle(ld).GT.1) THEN
118 xOld=ndiag(ipt,1,1)
119 nDup = 1
120 cSep = ', '
121 DO l=1,averageCycle(ld)
122 ii = ipt+l*kdiag(jdiag(md,ld))
123 IF (l.EQ.averageCycle(ld)) THEN
124 cSep = ' |'
125 xNew=xOld+1
126 ELSE
127 xNew=ndiag(ii,1,1)
128 ENDIF
129 IF (xNew.EQ.xOld) THEN
130 nDup = nDup + 1
131 ELSE
132 iLen = ILNBLNK(msgBuf)
133 tmpBuf(1:iLen) = msgBuf(1:iLen)
134 IF (nDup.EQ.1) THEN
135 WRITE(msgBuf,'(A,I5,A)') tmpBuf(1:iLen),xOld,cSep
136 ELSE
137 WRITE(msgBuf,'(A,I5,A,I2,2A)') tmpBuf(1:iLen),xOld,
138 & '(x',nDup,')',cSep
139 ENDIF
140 xOld = xNew
141 nDup = 1
142 ENDIF
143 ENDDO
144 ELSEIF (ipt.NE.0) THEN
145 iLen = ILNBLNK(msgBuf)
146 tmpBuf(1:iLen) = msgBuf(1:iLen)
147 WRITE(msgBuf,'(A,I6,A)') tmpBuf(1:iLen),ndiag(ipt,1,1),' |'
148 im = mdiag(md,ld)
149 IF (im.NE.0) THEN
150 iLen = ILNBLNK(msgBuf)
151 tmpBuf(1:iLen) = msgBuf(1:iLen)
152 WRITE(msgBuf,'(A,I6,A)') tmpBuf(1:iLen),ndiag(im,1,1),' |'
153 ENDIF
154 ENDIF
155 iLen = ILNBLNK(msgBuf)
156 WRITE(dUnit,'(A)') msgBuf(1:iLen)
157 ENDDO
158 c WRITE(dUnit,'(A)') ccFlds
159 WRITE(dUnit,'(A)') ccLine
160
161 ENDDO
162
163 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
164
165 c WRITE(dUnit,'(A)') ccLine
166 WRITE(dUnit,'(A,I6)')
167 & 'Global & Regional Statistics diagnostics: Number of lists:',
168 & diagSt_nbLists
169 WRITE(dUnit,'(A)') ccLine
170
171 WRITE(ccList,'(2A)')
172 & ' nFlds, nActive, freq & phase |'
173 WRITE(ccFlds,'(2A)')
174 & ' diag#| name | ipt | iMate| Volume | mate-Vol. |'
175
176 DO ld=1,diagSt_nbLists
177 iLen = ILNBLNK(diagSt_Fname(ld))
178 WRITE(dUnit,'(A,I4,2A)') 'listId=', ld,
179 & ' ; file name: ',diagSt_Fname(ld)(1:iLen)
180 WRITE(dUnit,'(A)') ccList
181 WRITE(dUnit,'(I4,A,I4,A,2F17.6,A,I4)')
182 & diagSt_nbFlds(ld), ' |',diagSt_nbActv(ld), ' |',
183 & diagSt_freq(ld), diagSt_phase(ld), ' |'
184 WRITE(msgBuf,'(A)') ' Regions: '
185 iLen = 10
186 DO j=0,nRegions
187 IF ( diagSt_region(j,ld).GE.1
188 & .AND. iLen+3.LE.MAX_LEN_MBUF) THEN
189 tmpBuf(1:iLen) = msgBuf(1:iLen)
190 WRITE(msgBuf,'(A,I3)') tmpBuf(1:iLen),j
191 iLen = iLen+3
192 ENDIF
193 ENDDO
194 WRITE(dUnit,'(A)') msgBuf(1:iLen)
195
196 WRITE(dUnit,'(A)') ccFlds
197 DO md=1,diagSt_nbActv(ld)
198 WRITE(msgBuf,'(I5,3A,2(I5,A))')
199 & jSdiag(md,ld),' |', diagSt_Flds(md,ld),'|',iSdiag(md,ld),
200 & ' |', mSdiag(md,ld),' |'
201 ipt = ABS(iSdiag(md,ld))
202 IF (ipt.NE.0) THEN
203 iLen = ILNBLNK(msgBuf)
204 tmpBuf(1:iLen) = msgBuf(1:iLen)
205 WRITE(msgBuf,'(A,1PE12.5,A)') tmpBuf(1:iLen),
206 & qSdiag(0,0,ipt,1,1),' |'
207 ENDIF
208 im = mSdiag(md,ld)
209 IF (im.NE.0) THEN
210 iLen = ILNBLNK(msgBuf)
211 tmpBuf(1:iLen) = msgBuf(1:iLen)
212 WRITE(msgBuf,'(A,1PE12.5,A)') tmpBuf(1:iLen),
213 & qSdiag(0,0,im, 1,1),' |'
214 ENDIF
215 iLen = ILNBLNK(msgBuf)
216 WRITE(dUnit,'(A)') msgBuf(1:iLen)
217 ENDDO
218 c WRITE(dUnit,'(A)') ccFlds
219 WRITE(dUnit,'(A)') ccLine
220
221 ENDDO
222
223 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
224 IF ( dUnit.NE.standardMessageUnit ) CLOSE(dUnit)
225 ENDIF
226
227 _END_MASTER( myThid )
228
229 RETURN
230 END

  ViewVC Help
Powered by ViewVC 1.1.22