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

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

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


Revision 1.3 - (hide 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 jmc 1.3 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_summary.F,v 1.2 2005/06/29 23:07:34 jmc Exp $
2 jmc 1.1 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 jmc 1.2 CHARACTER*(MAX_LEN_MBUF) msgBuf, tmpBuf
37 jmc 1.1 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 jmc 1.3 ELSE
68     outpSummary = .FALSE.
69 jmc 1.1 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 jmc 1.2 WRITE(msgBuf,'(I5,3A,2(I5,A),I4,A)')
105 jmc 1.1 & 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 jmc 1.2 tmpBuf(1:iLen) = msgBuf(1:iLen)
111     WRITE(msgBuf,'(A,I6,A)') tmpBuf(1:iLen),ndiag(ipt,1,1),' |'
112 jmc 1.1 ENDIF
113     im = mdiag(md,ld)
114     IF (im.NE.0) THEN
115     iLen = ILNBLNK(msgBuf)
116 jmc 1.2 tmpBuf(1:iLen) = msgBuf(1:iLen)
117     WRITE(msgBuf,'(A,I6,A)') tmpBuf(1:iLen),ndiag(im,1,1),' |'
118 jmc 1.1 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 jmc 1.2 tmpBuf(1:iLen) = msgBuf(1:iLen)
154     WRITE(msgBuf,'(A,I3)') tmpBuf(1:iLen),j
155 jmc 1.1 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 jmc 1.2 WRITE(msgBuf,'(I5,3A,2(I5,A))')
163 jmc 1.1 & 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 jmc 1.2 tmpBuf(1:iLen) = msgBuf(1:iLen)
169     WRITE(msgBuf,'(A,1PE12.5,A)') tmpBuf(1:iLen),
170 jmc 1.1 & qSdiag(0,0,ipt,1,1),' |'
171     ENDIF
172     im = mSdiag(md,ld)
173     IF (im.NE.0) THEN
174     iLen = ILNBLNK(msgBuf)
175 jmc 1.2 tmpBuf(1:iLen) = msgBuf(1:iLen)
176     WRITE(msgBuf,'(A,1PE12.5,A)') tmpBuf(1:iLen),
177 jmc 1.1 & 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