/[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.3 - (show annotations) (download)
Mon Jan 23 22:17:20 2006 UTC (18 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58e_post, checkpoint58f_post, checkpoint58d_post, checkpoint58c_post, checkpoint58a_post, checkpoint58b_post
Changes since 1.2: +3 -1 lines
some compiler complains about outpSummary not beeing assigned. fixed.

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_summary.F,v 1.2 2005/06/29 23:07:34 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 CHARACTER*(MAX_LEN_MBUF) msgBuf, tmpBuf
37 CHARACTER*(MAX_LEN_FNAM) fn
38 CHARACTER*(72) ccLine, ccFlds, ccList
39 LOGICAL outpSummary
40 INTEGER ILNBLNK
41 EXTERNAL ILNBLNK
42
43 _BEGIN_MASTER( myThid )
44 stdUnit = standardMessageUnit
45
46 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
47
48 IF ( debugLevel.GE.debLevA ) THEN
49 IF ( myIter.EQ.nIter0 ) THEN
50 outpSummary = .TRUE.
51 dUnit = standardMessageUnit
52 WRITE(msgBuf,'(A,I6)')
53 & ' write diagnostics summary to file ioUnit: ',dUnit
54 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
55 ELSE
56 outpSummary = ( myXGlobalLo.EQ.1 .AND. myYGlobalLo.EQ.1 )
57 IF ( outpSummary ) THEN
58 WRITE(fn,'(A,I10.10,A)') 'diagnostics_status.',myIter,'.txt'
59 iLen = ILNBLNK(fn)
60 CALL MDSFINDUNIT( dUnit, mythid )
61 OPEN(dUnit,file=fn(1:iLen),status='unknown',form='formatted')
62 WRITE(msgBuf,'(2A)')
63 & ' write diagnostics summary to file: ',fn(1:iLen)
64 CALL PRINT_MESSAGE( msgBuf, stdUnit,SQUEEZE_RIGHT, myThid)
65 ENDIF
66 ENDIF
67 ELSE
68 outpSummary = .FALSE.
69 ENDIF
70
71 IF ( outpSummary .AND. debugLevel.GE.debLevA ) THEN
72 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
73 C write a summary diagnostics state:
74
75 DO l=1,LEN(ccLine)
76 ccLine(l:l) = '-'
77 ENDDO
78 WRITE(ccList,'(2A)')
79 & ' nFlds, nActive, freq & phase , nLev'
80 WRITE(ccFlds,'(2A)')
81 & ' diag#| name | ipt | iMate| kLev| count | mate.C|'
82
83 WRITE(dUnit,'(A,I10,A,1PE21.13)')
84 & 'Iter.Nb:',myIter,' ; Time(s):', myTime
85 WRITE(dUnit,'(A)') ccLine
86 WRITE(dUnit,'(A,I6)')
87 & '2D/3D diagnostics: Number of lists:', nlists
88 WRITE(dUnit,'(A)') ccLine
89
90 DO ld=1,nlists
91 iLen = ILNBLNK(fnames(ld))
92 WRITE(dUnit,'(A,I4,2A)') 'listId=', ld,
93 & ' ; file name: ',fnames(ld)(1:iLen)
94 WRITE(dUnit,'(A)') ccList
95 WRITE(dUnit,'(I4,A,I4,A,2F17.6,A,I4)')
96 & nfields(ld), ' |',nActive(ld), ' |',
97 & freq(ld), phase(ld), ' |', nlevels(ld)
98 DO k1=1,nlevels(ld),50
99 k2 = MIN(nlevels(ld),k1+49)
100 WRITE(dUnit,'(A,50I4)')' levels:',(nint(levs(k,ld)),k=k1,k2)
101 ENDDO
102 WRITE(dUnit,'(A)') ccFlds
103 DO md=1,nActive(ld)
104 WRITE(msgBuf,'(I5,3A,2(I5,A),I4,A)')
105 & jdiag(md,ld),' |', flds(md,ld),'|',idiag(md,ld),' |',
106 & mdiag(md,ld),' |', kdiag(jdiag(md,ld)),' |'
107 ipt = ABS(idiag(md,ld))
108 IF (ipt.NE.0) THEN
109 iLen = ILNBLNK(msgBuf)
110 tmpBuf(1:iLen) = msgBuf(1:iLen)
111 WRITE(msgBuf,'(A,I6,A)') tmpBuf(1:iLen),ndiag(ipt,1,1),' |'
112 ENDIF
113 im = mdiag(md,ld)
114 IF (im.NE.0) THEN
115 iLen = ILNBLNK(msgBuf)
116 tmpBuf(1:iLen) = msgBuf(1:iLen)
117 WRITE(msgBuf,'(A,I6,A)') tmpBuf(1:iLen),ndiag(im,1,1),' |'
118 ENDIF
119 iLen = ILNBLNK(msgBuf)
120 WRITE(dUnit,'(A)') msgBuf(1:iLen)
121 ENDDO
122 c WRITE(dUnit,'(A)') ccFlds
123 WRITE(dUnit,'(A)') ccLine
124
125 ENDDO
126
127 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
128
129 c WRITE(dUnit,'(A)') ccLine
130 WRITE(dUnit,'(A,I6)')
131 & 'Global & Regional Statistics diagnostics: Number of lists:',
132 & diagSt_nbLists
133 WRITE(dUnit,'(A)') ccLine
134
135 WRITE(ccList,'(2A)')
136 & ' nFlds, nActive, freq & phase |'
137 WRITE(ccFlds,'(2A)')
138 & ' diag#| name | ipt | iMate| Volume | mate-Vol. |'
139
140 DO ld=1,diagSt_nbLists
141 iLen = ILNBLNK(diagSt_Fname(ld))
142 WRITE(dUnit,'(A,I4,2A)') 'listId=', ld,
143 & ' ; file name: ',diagSt_Fname(ld)(1:iLen)
144 WRITE(dUnit,'(A)') ccList
145 WRITE(dUnit,'(I4,A,I4,A,2F17.6,A,I4)')
146 & diagSt_nbFlds(ld), ' |',diagSt_nbActv(ld), ' |',
147 & diagSt_freq(ld), diagSt_phase(ld), ' |'
148 WRITE(msgBuf,'(A)') ' Regions: '
149 iLen = 10
150 DO j=0,nRegions
151 IF ( diagSt_region(j,ld).GE.1
152 & .AND. iLen+3.LE.MAX_LEN_MBUF) THEN
153 tmpBuf(1:iLen) = msgBuf(1:iLen)
154 WRITE(msgBuf,'(A,I3)') tmpBuf(1:iLen),j
155 iLen = iLen+3
156 ENDIF
157 ENDDO
158 WRITE(dUnit,'(A)') msgBuf(1:iLen)
159
160 WRITE(dUnit,'(A)') ccFlds
161 DO md=1,diagSt_nbActv(ld)
162 WRITE(msgBuf,'(I5,3A,2(I5,A))')
163 & jSdiag(md,ld),' |', diagSt_Flds(md,ld),'|',iSdiag(md,ld),
164 & ' |', mSdiag(md,ld),' |'
165 ipt = ABS(iSdiag(md,ld))
166 IF (ipt.NE.0) THEN
167 iLen = ILNBLNK(msgBuf)
168 tmpBuf(1:iLen) = msgBuf(1:iLen)
169 WRITE(msgBuf,'(A,1PE12.5,A)') tmpBuf(1:iLen),
170 & qSdiag(0,0,ipt,1,1),' |'
171 ENDIF
172 im = mSdiag(md,ld)
173 IF (im.NE.0) THEN
174 iLen = ILNBLNK(msgBuf)
175 tmpBuf(1:iLen) = msgBuf(1:iLen)
176 WRITE(msgBuf,'(A,1PE12.5,A)') tmpBuf(1:iLen),
177 & qSdiag(0,0,im, 1,1),' |'
178 ENDIF
179 iLen = ILNBLNK(msgBuf)
180 WRITE(dUnit,'(A)') msgBuf(1:iLen)
181 ENDDO
182 c WRITE(dUnit,'(A)') ccFlds
183 WRITE(dUnit,'(A)') ccLine
184
185 ENDDO
186
187 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
188 IF ( dUnit.NE.standardMessageUnit ) CLOSE(dUnit)
189 ENDIF
190
191 _END_MASTER( myThid )
192
193 RETURN
194 END

  ViewVC Help
Powered by ViewVC 1.1.22